read-excel-file 6.0.2 → 7.0.0

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.
Files changed (214) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +22 -11
  3. package/browser/index.cjs +7 -0
  4. package/{index.d.ts → browser/index.d.ts} +2 -2
  5. package/browser/index.js +6 -0
  6. package/browser/package.json +17 -0
  7. package/bundle/read-excel-file.min.js +1 -1
  8. package/bundle/read-excel-file.min.js.map +1 -1
  9. package/commonjs/export/convertInputToNodeStream.js +45 -0
  10. package/commonjs/export/convertInputToNodeStream.js.map +1 -0
  11. package/commonjs/export/convertValuesFromUint8ArraysToStrings.js +20 -0
  12. package/commonjs/export/convertValuesFromUint8ArraysToStrings.js.map +1 -0
  13. package/commonjs/export/filterZipArchiveEntry.js +18 -0
  14. package/commonjs/export/filterZipArchiveEntry.js.map +1 -0
  15. package/commonjs/{read → export}/readSheetNamesBrowser.js +4 -4
  16. package/commonjs/export/readSheetNamesBrowser.js.map +1 -0
  17. package/commonjs/export/readSheetNamesNode.js.map +1 -0
  18. package/commonjs/export/readSheetNamesUniversal.js +23 -0
  19. package/commonjs/export/readSheetNamesUniversal.js.map +1 -0
  20. package/commonjs/{read → export}/readSheetNamesWebWorker.js +2 -2
  21. package/commonjs/export/readSheetNamesWebWorker.js.map +1 -0
  22. package/commonjs/{read → export}/readXlsxFileBrowser.js +6 -6
  23. package/commonjs/export/readXlsxFileBrowser.js.map +1 -0
  24. package/commonjs/{read → export}/readXlsxFileNode.js +5 -5
  25. package/commonjs/export/readXlsxFileNode.js.map +1 -0
  26. package/commonjs/export/readXlsxFileUniversal.js +24 -0
  27. package/commonjs/export/readXlsxFileUniversal.js.map +1 -0
  28. package/commonjs/{read → export}/readXlsxFileWebWorker.js +5 -5
  29. package/commonjs/export/readXlsxFileWebWorker.js.map +1 -0
  30. package/commonjs/export/unpackXlsxFileBrowser.js +38 -0
  31. package/commonjs/export/unpackXlsxFileBrowser.js.map +1 -0
  32. package/commonjs/export/unpackXlsxFileNode.js +23 -0
  33. package/commonjs/export/unpackXlsxFileNode.js.map +1 -0
  34. package/commonjs/export/unpackXlsxFileUniversal.js +23 -0
  35. package/commonjs/export/unpackXlsxFileUniversal.js.map +1 -0
  36. package/commonjs/types/Date.js +1 -1
  37. package/commonjs/types/Date.js.map +1 -1
  38. package/commonjs/{read → xlsx}/coordinates.js.map +1 -1
  39. package/commonjs/{read → xlsx}/dropEmptyColumns.js.map +1 -1
  40. package/commonjs/{read → xlsx}/dropEmptyColumns.test.js.map +1 -1
  41. package/commonjs/{read → xlsx}/dropEmptyRows.js.map +1 -1
  42. package/commonjs/{read → xlsx}/dropEmptyRows.test.js.map +1 -1
  43. package/commonjs/{read → xlsx}/getData.js.map +1 -1
  44. package/commonjs/{read → xlsx}/isDateTimestamp.js.map +1 -1
  45. package/commonjs/{read → xlsx}/parseCell.js.map +1 -1
  46. package/commonjs/{read → xlsx}/parseCellValue.js.map +1 -1
  47. package/commonjs/{read → xlsx}/parseCells.js.map +1 -1
  48. package/commonjs/{read → xlsx}/parseDate.js.map +1 -1
  49. package/commonjs/{read → xlsx}/parseDate.test.js.map +1 -1
  50. package/commonjs/{read → xlsx}/parseDimensions.js.map +1 -1
  51. package/commonjs/{read → xlsx}/parseFilePaths.js.map +1 -1
  52. package/commonjs/{read → xlsx}/parseProperties.js.map +1 -1
  53. package/commonjs/{read → xlsx}/parseSharedStrings.js.map +1 -1
  54. package/commonjs/{read → xlsx}/parseSheet.js.map +1 -1
  55. package/commonjs/{read → xlsx}/parseStyles.js.map +1 -1
  56. package/commonjs/{read/readXlsx.js → xlsx/parseXlsxFileContents.js} +10 -9
  57. package/commonjs/xlsx/parseXlsxFileContents.js.map +1 -0
  58. package/commonjs/{read/readXlsxFileContents.js → xlsx/parseXlsxFileContentsWithOptionalSchema.js} +13 -6
  59. package/commonjs/xlsx/parseXlsxFileContentsWithOptionalSchema.js.map +1 -0
  60. package/commonjs/{read → xlsx}/schema/mapToObjects.js +0 -4
  61. package/commonjs/xlsx/schema/mapToObjects.js.map +1 -0
  62. package/commonjs/{read → xlsx}/schema/mapToObjects.test.js.map +1 -1
  63. package/commonjs/xml/dom.js +10 -0
  64. package/commonjs/xml/dom.js.map +1 -1
  65. package/commonjs/xml/xlsx.js +10 -2
  66. package/commonjs/xml/xlsx.js.map +1 -1
  67. package/commonjs/zip/unzipFromArrayBuffer.js +74 -0
  68. package/commonjs/zip/unzipFromArrayBuffer.js.map +1 -0
  69. package/commonjs/zip/unzipFromArrayBufferSync.js +33 -0
  70. package/commonjs/zip/unzipFromArrayBufferSync.js.map +1 -0
  71. package/commonjs/zip/unzipFromStream.js +123 -0
  72. package/commonjs/zip/unzipFromStream.js.map +1 -0
  73. package/modules/export/convertInputToNodeStream.js +36 -0
  74. package/modules/export/convertInputToNodeStream.js.map +1 -0
  75. package/modules/export/convertValuesFromUint8ArraysToStrings.js +15 -0
  76. package/modules/export/convertValuesFromUint8ArraysToStrings.js.map +1 -0
  77. package/modules/export/filterZipArchiveEntry.js +12 -0
  78. package/modules/export/filterZipArchiveEntry.js.map +1 -0
  79. package/modules/{read → export}/readSheetNamesBrowser.js +4 -4
  80. package/modules/export/readSheetNamesBrowser.js.map +1 -0
  81. package/modules/export/readSheetNamesNode.js.map +1 -0
  82. package/modules/export/readSheetNamesUniversal.js +17 -0
  83. package/modules/export/readSheetNamesUniversal.js.map +1 -0
  84. package/modules/{read → export}/readSheetNamesWebWorker.js +2 -2
  85. package/modules/export/readSheetNamesWebWorker.js.map +1 -0
  86. package/modules/{read → export}/readXlsxFileBrowser.js +6 -6
  87. package/modules/export/readXlsxFileBrowser.js.map +1 -0
  88. package/modules/{read → export}/readXlsxFileNode.js +5 -5
  89. package/modules/export/readXlsxFileNode.js.map +1 -0
  90. package/modules/export/readXlsxFileUniversal.js +18 -0
  91. package/modules/export/readXlsxFileUniversal.js.map +1 -0
  92. package/modules/{read → export}/readXlsxFileWebWorker.js +5 -5
  93. package/modules/export/readXlsxFileWebWorker.js.map +1 -0
  94. package/modules/export/unpackXlsxFileBrowser.js +30 -0
  95. package/modules/export/unpackXlsxFileBrowser.js.map +1 -0
  96. package/modules/export/unpackXlsxFileNode.js +17 -0
  97. package/modules/export/unpackXlsxFileNode.js.map +1 -0
  98. package/modules/export/unpackXlsxFileUniversal.js +17 -0
  99. package/modules/export/unpackXlsxFileUniversal.js.map +1 -0
  100. package/modules/types/Date.js +1 -1
  101. package/modules/types/Date.js.map +1 -1
  102. package/modules/{read → xlsx}/coordinates.js.map +1 -1
  103. package/modules/{read → xlsx}/dropEmptyColumns.js.map +1 -1
  104. package/modules/{read → xlsx}/dropEmptyColumns.test.js.map +1 -1
  105. package/modules/{read → xlsx}/dropEmptyRows.js.map +1 -1
  106. package/modules/{read → xlsx}/dropEmptyRows.test.js.map +1 -1
  107. package/modules/{read → xlsx}/getData.js.map +1 -1
  108. package/modules/{read → xlsx}/isDateTimestamp.js.map +1 -1
  109. package/modules/{read → xlsx}/parseCell.js.map +1 -1
  110. package/modules/{read → xlsx}/parseCellValue.js.map +1 -1
  111. package/modules/{read → xlsx}/parseCells.js.map +1 -1
  112. package/modules/{read → xlsx}/parseDate.js.map +1 -1
  113. package/modules/{read → xlsx}/parseDate.test.js.map +1 -1
  114. package/modules/{read → xlsx}/parseDimensions.js.map +1 -1
  115. package/modules/{read → xlsx}/parseFilePaths.js.map +1 -1
  116. package/modules/{read → xlsx}/parseProperties.js.map +1 -1
  117. package/modules/{read → xlsx}/parseSharedStrings.js.map +1 -1
  118. package/modules/{read → xlsx}/parseSheet.js.map +1 -1
  119. package/modules/{read → xlsx}/parseStyles.js.map +1 -1
  120. package/modules/{read/readXlsx.js → xlsx/parseXlsxFileContents.js} +9 -8
  121. package/modules/xlsx/parseXlsxFileContents.js.map +1 -0
  122. package/modules/{read/readXlsxFileContents.js → xlsx/parseXlsxFileContentsWithOptionalSchema.js} +13 -5
  123. package/modules/xlsx/parseXlsxFileContentsWithOptionalSchema.js.map +1 -0
  124. package/modules/{read → xlsx}/schema/mapToObjects.js +0 -4
  125. package/modules/xlsx/schema/mapToObjects.js.map +1 -0
  126. package/modules/{read → xlsx}/schema/mapToObjects.test.js.map +1 -1
  127. package/modules/xml/dom.js +9 -0
  128. package/modules/xml/dom.js.map +1 -1
  129. package/modules/xml/xlsx.js +11 -3
  130. package/modules/xml/xlsx.js.map +1 -1
  131. package/modules/zip/unzipFromArrayBuffer.js +67 -0
  132. package/modules/zip/unzipFromArrayBuffer.js.map +1 -0
  133. package/modules/zip/unzipFromArrayBufferSync.js +27 -0
  134. package/modules/zip/unzipFromArrayBufferSync.js.map +1 -0
  135. package/modules/zip/unzipFromStream.js +119 -0
  136. package/modules/zip/unzipFromStream.js.map +1 -0
  137. package/node/index.cjs +4 -4
  138. package/node/index.d.ts +2 -1
  139. package/node/index.js +3 -3
  140. package/package.json +14 -9
  141. package/rollup.config.mjs +1 -1
  142. package/universal/index.cjs +7 -0
  143. package/universal/index.d.ts +28 -0
  144. package/universal/index.js +6 -0
  145. package/universal/package.json +17 -0
  146. package/web-worker/index.cjs +4 -4
  147. package/web-worker/index.js +3 -3
  148. package/commonjs/read/readSheetNamesBrowser.js.map +0 -1
  149. package/commonjs/read/readSheetNamesNode.js.map +0 -1
  150. package/commonjs/read/readSheetNamesNode.test.js.map +0 -1
  151. package/commonjs/read/readSheetNamesWebWorker.js.map +0 -1
  152. package/commonjs/read/readXlsx.js.map +0 -1
  153. package/commonjs/read/readXlsxFileBrowser.js.map +0 -1
  154. package/commonjs/read/readXlsxFileContents.js.map +0 -1
  155. package/commonjs/read/readXlsxFileNode.js.map +0 -1
  156. package/commonjs/read/readXlsxFileNode.test.js.map +0 -1
  157. package/commonjs/read/readXlsxFileWebWorker.js.map +0 -1
  158. package/commonjs/read/schema/mapToObjects.js.map +0 -1
  159. package/commonjs/read/unpackXlsxFileBrowser.js +0 -50
  160. package/commonjs/read/unpackXlsxFileBrowser.js.map +0 -1
  161. package/commonjs/read/unpackXlsxFileNode.js +0 -86
  162. package/commonjs/read/unpackXlsxFileNode.js.map +0 -1
  163. package/index.cjs +0 -7
  164. package/index.cjs.js +0 -12
  165. package/index.js +0 -6
  166. package/modules/read/readSheetNamesBrowser.js.map +0 -1
  167. package/modules/read/readSheetNamesNode.js.map +0 -1
  168. package/modules/read/readSheetNamesNode.test.js.map +0 -1
  169. package/modules/read/readSheetNamesWebWorker.js.map +0 -1
  170. package/modules/read/readXlsx.js.map +0 -1
  171. package/modules/read/readXlsxFileBrowser.js.map +0 -1
  172. package/modules/read/readXlsxFileContents.js.map +0 -1
  173. package/modules/read/readXlsxFileNode.js.map +0 -1
  174. package/modules/read/readXlsxFileNode.test.js.map +0 -1
  175. package/modules/read/readXlsxFileWebWorker.js.map +0 -1
  176. package/modules/read/schema/mapToObjects.js.map +0 -1
  177. package/modules/read/unpackXlsxFileBrowser.js +0 -45
  178. package/modules/read/unpackXlsxFileBrowser.js.map +0 -1
  179. package/modules/read/unpackXlsxFileNode.js +0 -78
  180. package/modules/read/unpackXlsxFileNode.js.map +0 -1
  181. package/node/index.cjs.js +0 -12
  182. package/web-worker/index.cjs.js +0 -12
  183. /package/commonjs/{read → export}/readSheetNamesNode.js +0 -0
  184. /package/commonjs/{read → xlsx}/coordinates.js +0 -0
  185. /package/commonjs/{read → xlsx}/dropEmptyColumns.js +0 -0
  186. /package/commonjs/{read → xlsx}/dropEmptyRows.js +0 -0
  187. /package/commonjs/{read → xlsx}/getData.js +0 -0
  188. /package/commonjs/{read → xlsx}/isDateTimestamp.js +0 -0
  189. /package/commonjs/{read → xlsx}/parseCell.js +0 -0
  190. /package/commonjs/{read → xlsx}/parseCellValue.js +0 -0
  191. /package/commonjs/{read → xlsx}/parseCells.js +0 -0
  192. /package/commonjs/{read → xlsx}/parseDate.js +0 -0
  193. /package/commonjs/{read → xlsx}/parseDimensions.js +0 -0
  194. /package/commonjs/{read → xlsx}/parseFilePaths.js +0 -0
  195. /package/commonjs/{read → xlsx}/parseProperties.js +0 -0
  196. /package/commonjs/{read → xlsx}/parseSharedStrings.js +0 -0
  197. /package/commonjs/{read → xlsx}/parseSheet.js +0 -0
  198. /package/commonjs/{read → xlsx}/parseStyles.js +0 -0
  199. /package/modules/{read → export}/readSheetNamesNode.js +0 -0
  200. /package/modules/{read → xlsx}/coordinates.js +0 -0
  201. /package/modules/{read → xlsx}/dropEmptyColumns.js +0 -0
  202. /package/modules/{read → xlsx}/dropEmptyRows.js +0 -0
  203. /package/modules/{read → xlsx}/getData.js +0 -0
  204. /package/modules/{read → xlsx}/isDateTimestamp.js +0 -0
  205. /package/modules/{read → xlsx}/parseCell.js +0 -0
  206. /package/modules/{read → xlsx}/parseCellValue.js +0 -0
  207. /package/modules/{read → xlsx}/parseCells.js +0 -0
  208. /package/modules/{read → xlsx}/parseDate.js +0 -0
  209. /package/modules/{read → xlsx}/parseDimensions.js +0 -0
  210. /package/modules/{read → xlsx}/parseFilePaths.js +0 -0
  211. /package/modules/{read → xlsx}/parseProperties.js +0 -0
  212. /package/modules/{read → xlsx}/parseSharedStrings.js +0 -0
  213. /package/modules/{read → xlsx}/parseSheet.js +0 -0
  214. /package/modules/{read → xlsx}/parseStyles.js +0 -0
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = unzipFromArrayBufferSync;
7
+ var _fflate = require("fflate");
8
+ var _unzipFromArrayBuffer = require("./unzipFromArrayBuffer.js");
9
+ // `fflate` readme is too complicated:
10
+ // https://github.com/101arrowz/fflate/issues/251
11
+ // I just used whatever approach seemed to work.
12
+ //
13
+ // It was a choice between "syncrhonous" (blocking) unzip via `unzipSync()`
14
+ // and "asynchronous" (non-blocking) unzip via `unzip()`.
15
+ //
16
+ // In the readme they say that using "asynchronous" API will cause the compression or decompression
17
+ // run in a separate thread by using Web (or Node) Workers, so it won't block the main thread.
18
+ // Yet, they also say that there is an initial overhead to using workers of about 50ms for each
19
+ // asynchronous function. For small (under about 50kB) payloads, they say that the "asynchronous" API
20
+ // will be much slower compared to the "synchronous" one. However, when compressing larger files
21
+ // or multiple files at once, the "synchronous" API causes the main thread to hang for too long,
22
+ // and the "asynchronous" API is an order of magnitude better.
23
+ //
24
+
25
+ /**
26
+ * Reads `*.zip` file contents. Ignores anything besides `.xml` or `.xml.rels` files.
27
+ * @param {ArrayBuffer} input
28
+ * @return {Record<string,Uint8Array>} An object holding `*.zip` file entries.
29
+ */
30
+ function unzipFromArrayBufferSync(input, options) {
31
+ return (0, _unzipFromArrayBuffer.unzipFromArrayBufferUsingFunction)(input, options, _fflate.unzipSync, true);
32
+ }
33
+ //# sourceMappingURL=unzipFromArrayBufferSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unzipFromArrayBufferSync.js","names":["_fflate","require","_unzipFromArrayBuffer","unzipFromArrayBufferSync","input","options","unzipFromArrayBufferUsingFunction","unzipSync"],"sources":["../../source/zip/unzipFromArrayBufferSync.js"],"sourcesContent":["// `fflate` readme is too complicated:\r\n// https://github.com/101arrowz/fflate/issues/251\r\n// I just used whatever approach seemed to work.\r\n//\r\n// It was a choice between \"syncrhonous\" (blocking) unzip via `unzipSync()`\r\n// and \"asynchronous\" (non-blocking) unzip via `unzip()`.\r\n//\r\n// In the readme they say that using \"asynchronous\" API will cause the compression or decompression\r\n// run in a separate thread by using Web (or Node) Workers, so it won't block the main thread.\r\n// Yet, they also say that there is an initial overhead to using workers of about 50ms for each\r\n// asynchronous function. For small (under about 50kB) payloads, they say that the \"asynchronous\" API\r\n// will be much slower compared to the \"synchronous\" one. However, when compressing larger files\r\n// or multiple files at once, the \"synchronous\" API causes the main thread to hang for too long,\r\n// and the \"asynchronous\" API is an order of magnitude better.\r\n//\r\nimport { unzipSync } from 'fflate'\r\n\r\nimport { unzipFromArrayBufferUsingFunction } from './unzipFromArrayBuffer.js'\r\n\r\n/**\r\n * Reads `*.zip` file contents. Ignores anything besides `.xml` or `.xml.rels` files.\r\n * @param {ArrayBuffer} input\r\n * @return {Record<string,Uint8Array>} An object holding `*.zip` file entries.\r\n */\r\nexport default function unzipFromArrayBufferSync(input, options) {\r\n\treturn unzipFromArrayBufferUsingFunction(input, options, unzipSync, true)\r\n}"],"mappings":";;;;;;AAeA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,qBAAA,GAAAD,OAAA;AAjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACe,SAASE,wBAAwBA,CAACC,KAAK,EAAEC,OAAO,EAAE;EAChE,OAAO,IAAAC,uDAAiC,EAACF,KAAK,EAAEC,OAAO,EAAEE,iBAAS,EAAE,IAAI,CAAC;AAC1E"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = unzipFromStream;
7
+ var _buffer = require("buffer");
8
+ var _unzipper = _interopRequireDefault(require("unzipper"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
+ // `unzipper` has a bug when it doesn't include "@aws-sdk/client-s3" package in the `dependencies`
11
+ // which causes some "bundlers" throw an error.
12
+ // https://github.com/ZJONSSON/node-unzipper/issues/330
13
+ //
14
+ // One workaround is to install "@aws-sdk/client-s3" package manually, which would still lead to increased bundle size.
15
+ // If the code is bundled for server-side-use only, that is will not be used in a web browser,
16
+ // then the increased bundle size would not be an issue.
17
+ //
18
+ // Another workaround could be to "alias" "@aws-sdk/client-s3" package in a "bundler" configuration file
19
+ // with a path to a `*.js` file containing just "export default null". But that kind of a workaround would also
20
+ // result in errors when using other packages that `import` anything from "@aws-sdk/client-s3" package,
21
+ // so it's not really a workaround but more of a ticking bomb.
22
+ //
23
+ // Althernatively, it could use `fflate` if someone writes an example of handling a Node.js stream.
24
+ // https://github.com/101arrowz/fflate/issues/251
25
+ /**
26
+ * Reads `*.zip` file contents.
27
+ * @param {Stream} stream
28
+ * @return {Promise<Record<string,Buffer>>} Resolves to an object holding `*.zip` file entries. P.S. `Buffer` is a `Uint8Array`.
29
+ */
30
+ function unzipFromStream(stream) {
31
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
32
+ filter = _ref.filter;
33
+ // The `files` object stores the files and their contents.
34
+ var files = {};
35
+ return new Promise(function (resolve, reject) {
36
+ var promises = [];
37
+ var errored = false;
38
+ var onError = function onError(error) {
39
+ if (!errored) {
40
+ errored = true;
41
+ reject(error);
42
+ }
43
+ };
44
+ stream
45
+ // This first "error" listener catches the original stream errors.
46
+ //
47
+ // That's because the .pipe() method does not automatically propagate errors
48
+ // from a source (input) stream to the destination stream or the end of the pipeline.
49
+ // You would need to attach an 'error' event handler to each stream in the chain.
50
+ //
51
+ // A more convenient alternative would be to use `stream.pipeline()` function:
52
+ // `pipeline(stream1, stream2, (error) => { ... })`
53
+ //
54
+ .on('error', onError)
55
+ // Pipe the input stream through the unzipper stream.
56
+ .pipe(_unzipper["default"].Parse())
57
+ // This second "error" listener catches the unzipper stream errors.
58
+ //
59
+ // That's because the .pipe() method does not automatically propagate errors
60
+ // from a source (input) stream to the destination stream or the end of the pipeline.
61
+ // You would need to attach an 'error' event handler to each stream in the chain.
62
+ //
63
+ // A more convenient alternative would be to use `stream.pipeline()` function:
64
+ // `pipeline(stream1, stream2, (error) => { ... })`
65
+ //
66
+ .on('error', onError)
67
+ // The unzipper stream is closed when all `entries` have been reported.
68
+ .on('finish', function () {
69
+ if (!errored) {
70
+ // Wait for all `entries` to be read.
71
+ // The second argument of `.then()` function is not required
72
+ // but I didn't remove it just to potentially prevent any potential silly bugs
73
+ // in case of some potential changes in some potential future.
74
+ Promise.all(promises).then(function () {
75
+ resolve(files);
76
+ }, onError);
77
+ }
78
+ }).on('entry', function (entry) {
79
+ // See if this file should be ignored.
80
+ var ignore = false;
81
+ // `entry.type` could be 'Directory' or 'File'.
82
+ // Ignore anything except files.
83
+ if (entry.type === 'Directory') {
84
+ ignore = true;
85
+ }
86
+ if (errored) {
87
+ ignore = true;
88
+ }
89
+ if (filter) {
90
+ if (!filter({
91
+ path: entry.path
92
+ })) {
93
+ ignore = true;
94
+ }
95
+ }
96
+
97
+ // If this file should be ignored.
98
+ if (ignore) {
99
+ // Call `entry.autodrain()` when you do not intend to process a specific `entry`'s raw data.
100
+ // Otherwise, if an `entry` is not consumed (via .pipe(), .buffer(), or .autodrain()),
101
+ // the stream will halt, preventing further file processing.
102
+ entry.autodrain().on('error', onError);
103
+ return;
104
+ }
105
+ var chunks = [];
106
+ promises.push(new Promise(function (resolve) {
107
+ // `entry` seems to be a generic Node.js stream.
108
+ // `entry.pipe()` pipes the file contents to a stream.
109
+ // `entry.stream()` returns a readable stream.
110
+ // `entry.buffer()` returns a promise that resolves to a `Buffer` with the file contents.
111
+ entry.on('data', function (data) {
112
+ chunks.push(data);
113
+ }).on('error', function (error) {
114
+ onError(error);
115
+ }).on('finish', function () {
116
+ files[entry.path] = _buffer.Buffer.concat(chunks);
117
+ resolve();
118
+ });
119
+ }));
120
+ });
121
+ });
122
+ }
123
+ //# sourceMappingURL=unzipFromStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unzipFromStream.js","names":["_buffer","require","_unzipper","_interopRequireDefault","obj","__esModule","unzipFromStream","stream","_ref","arguments","length","undefined","filter","files","Promise","resolve","reject","promises","errored","onError","error","on","pipe","unzip","Parse","all","then","entry","ignore","type","path","autodrain","chunks","push","data","Buffer","concat"],"sources":["../../source/zip/unzipFromStream.js"],"sourcesContent":["import { Buffer } from 'buffer'\r\n\r\n// `unzipper` has a bug when it doesn't include \"@aws-sdk/client-s3\" package in the `dependencies`\r\n// which causes some \"bundlers\" throw an error.\r\n// https://github.com/ZJONSSON/node-unzipper/issues/330\r\n//\r\n// One workaround is to install \"@aws-sdk/client-s3\" package manually, which would still lead to increased bundle size.\r\n// If the code is bundled for server-side-use only, that is will not be used in a web browser,\r\n// then the increased bundle size would not be an issue.\r\n//\r\n// Another workaround could be to \"alias\" \"@aws-sdk/client-s3\" package in a \"bundler\" configuration file\r\n// with a path to a `*.js` file containing just \"export default null\". But that kind of a workaround would also\r\n// result in errors when using other packages that `import` anything from \"@aws-sdk/client-s3\" package,\r\n// so it's not really a workaround but more of a ticking bomb.\r\n//\r\nimport unzip from 'unzipper'\r\n\r\n// Althernatively, it could use `fflate` if someone writes an example of handling a Node.js stream.\r\n// https://github.com/101arrowz/fflate/issues/251\r\n\r\n/**\r\n * Reads `*.zip` file contents.\r\n * @param {Stream} stream\r\n * @return {Promise<Record<string,Buffer>>} Resolves to an object holding `*.zip` file entries. P.S. `Buffer` is a `Uint8Array`.\r\n */\r\nexport default function unzipFromStream(stream, { filter } = {}) {\r\n\t// The `files` object stores the files and their contents.\r\n\tconst files = {}\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tconst promises = []\r\n\r\n\t\tlet errored = false\r\n\r\n\t\tconst onError = (error) => {\r\n\t\t\tif (!errored) {\r\n\t\t\t\terrored = true\r\n\t\t\t\treject(error)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tstream\r\n\t\t\t// This first \"error\" listener catches the original stream errors.\r\n\t\t\t//\r\n\t\t\t// That's because the .pipe() method does not automatically propagate errors\r\n\t\t\t// from a source (input) stream to the destination stream or the end of the pipeline.\r\n\t\t\t// You would need to attach an 'error' event handler to each stream in the chain.\r\n\t\t\t//\r\n\t\t\t// A more convenient alternative would be to use `stream.pipeline()` function:\r\n\t\t\t// `pipeline(stream1, stream2, (error) => { ... })`\r\n\t\t\t//\r\n\t\t\t.on('error', onError)\r\n\t\t\t// Pipe the input stream through the unzipper stream.\r\n\t\t\t.pipe(unzip.Parse())\r\n\t\t\t// This second \"error\" listener catches the unzipper stream errors.\r\n\t\t\t//\r\n\t\t\t// That's because the .pipe() method does not automatically propagate errors\r\n\t\t\t// from a source (input) stream to the destination stream or the end of the pipeline.\r\n\t\t\t// You would need to attach an 'error' event handler to each stream in the chain.\r\n\t\t\t//\r\n\t\t\t// A more convenient alternative would be to use `stream.pipeline()` function:\r\n\t\t\t// `pipeline(stream1, stream2, (error) => { ... })`\r\n\t\t\t//\r\n\t\t\t.on('error', onError)\r\n\t\t\t// The unzipper stream is closed when all `entries` have been reported.\r\n\t\t\t.on('finish', () => {\r\n\t\t\t\tif (!errored) {\r\n\t\t\t\t\t// Wait for all `entries` to be read.\r\n\t\t\t\t\t// The second argument of `.then()` function is not required\r\n\t\t\t\t\t// but I didn't remove it just to potentially prevent any potential silly bugs\r\n\t\t\t\t\t// in case of some potential changes in some potential future.\r\n\t\t\t\t\tPromise.all(promises).then(() => {\r\n\t\t\t\t\t\tresolve(files)\r\n\t\t\t\t\t}, onError)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on('entry', (entry) => {\r\n\t\t\t\t// See if this file should be ignored.\r\n\t\t\t\tlet ignore = false\r\n\t\t\t\t// `entry.type` could be 'Directory' or 'File'.\r\n\t\t\t\t// Ignore anything except files.\r\n\t\t\t\tif (entry.type === 'Directory') {\r\n\t\t\t\t\tignore = true\r\n\t\t\t\t}\r\n\t\t\t\tif (errored) {\r\n\t\t\t\t\tignore = true\r\n\t\t\t\t}\r\n\t\t\t\tif (filter) {\r\n\t\t\t\t\tif (!filter({ path: entry.path })) {\r\n\t\t\t\t\t\tignore = true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If this file should be ignored.\r\n\t\t\t\tif (ignore) {\r\n\t\t\t\t\t// Call `entry.autodrain()` when you do not intend to process a specific `entry`'s raw data.\r\n\t\t\t\t\t// Otherwise, if an `entry` is not consumed (via .pipe(), .buffer(), or .autodrain()),\r\n\t\t\t\t\t// the stream will halt, preventing further file processing.\r\n\t\t\t\t\tentry.autodrain().on('error', onError)\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst chunks = []\r\n\r\n\t\t\t\tpromises.push(new Promise((resolve) => {\r\n\t\t\t\t\t// `entry` seems to be a generic Node.js stream.\r\n\t\t\t\t\t// `entry.pipe()` pipes the file contents to a stream.\r\n\t\t\t\t\t// `entry.stream()` returns a readable stream.\r\n\t\t\t\t\t// `entry.buffer()` returns a promise that resolves to a `Buffer` with the file contents.\r\n\t\t\t\t\tentry\r\n\t\t\t\t\t\t.on('data', (data) => {\r\n\t\t\t\t\t\t\tchunks.push(data)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.on('error', (error) => {\r\n\t\t\t\t\t\t\tonError(error)\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.on('finish', () => {\r\n\t\t\t\t\t\t\tfiles[entry.path] = Buffer.concat(chunks)\r\n\t\t\t\t\t\t\tresolve()\r\n\t\t\t\t\t\t})\r\n\t\t\t\t}))\r\n\t\t\t})\r\n\t})\r\n}"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAeA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA4B,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAb5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACe,SAASE,eAAeA,CAACC,MAAM,EAAmB;EAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAAbG,MAAM,GAAAJ,IAAA,CAANI,MAAM;EACvD;EACA,IAAMC,KAAK,GAAG,CAAC,CAAC;EAEhB,OAAO,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;IACvC,IAAMC,QAAQ,GAAG,EAAE;IAEnB,IAAIC,OAAO,GAAG,KAAK;IAEnB,IAAMC,OAAO,GAAG,SAAVA,OAAOA,CAAIC,KAAK,EAAK;MAC1B,IAAI,CAACF,OAAO,EAAE;QACbA,OAAO,GAAG,IAAI;QACdF,MAAM,CAACI,KAAK,CAAC;MACd;IACD,CAAC;IAEDb;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAAA,CACCc,EAAE,CAAC,OAAO,EAAEF,OAAO;IACpB;IAAA,CACCG,IAAI,CAACC,oBAAK,CAACC,KAAK,CAAC,CAAC;IACnB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAAA,CACCH,EAAE,CAAC,OAAO,EAAEF,OAAO;IACpB;IAAA,CACCE,EAAE,CAAC,QAAQ,EAAE,YAAM;MACnB,IAAI,CAACH,OAAO,EAAE;QACb;QACA;QACA;QACA;QACAJ,OAAO,CAACW,GAAG,CAACR,QAAQ,CAAC,CAACS,IAAI,CAAC,YAAM;UAChCX,OAAO,CAACF,KAAK,CAAC;QACf,CAAC,EAAEM,OAAO,CAAC;MACZ;IACD,CAAC,CAAC,CACDE,EAAE,CAAC,OAAO,EAAE,UAACM,KAAK,EAAK;MACvB;MACA,IAAIC,MAAM,GAAG,KAAK;MAClB;MACA;MACA,IAAID,KAAK,CAACE,IAAI,KAAK,WAAW,EAAE;QAC/BD,MAAM,GAAG,IAAI;MACd;MACA,IAAIV,OAAO,EAAE;QACZU,MAAM,GAAG,IAAI;MACd;MACA,IAAIhB,MAAM,EAAE;QACX,IAAI,CAACA,MAAM,CAAC;UAAEkB,IAAI,EAAEH,KAAK,CAACG;QAAK,CAAC,CAAC,EAAE;UAClCF,MAAM,GAAG,IAAI;QACd;MACD;;MAEA;MACA,IAAIA,MAAM,EAAE;QACX;QACA;QACA;QACAD,KAAK,CAACI,SAAS,CAAC,CAAC,CAACV,EAAE,CAAC,OAAO,EAAEF,OAAO,CAAC;QACtC;MACD;MAEA,IAAMa,MAAM,GAAG,EAAE;MAEjBf,QAAQ,CAACgB,IAAI,CAAC,IAAInB,OAAO,CAAC,UAACC,OAAO,EAAK;QACtC;QACA;QACA;QACA;QACAY,KAAK,CACHN,EAAE,CAAC,MAAM,EAAE,UAACa,IAAI,EAAK;UACrBF,MAAM,CAACC,IAAI,CAACC,IAAI,CAAC;QAClB,CAAC,CAAC,CACDb,EAAE,CAAC,OAAO,EAAE,UAACD,KAAK,EAAK;UACvBD,OAAO,CAACC,KAAK,CAAC;QACf,CAAC,CAAC,CACDC,EAAE,CAAC,QAAQ,EAAE,YAAM;UACnBR,KAAK,CAACc,KAAK,CAACG,IAAI,CAAC,GAAGK,cAAM,CAACC,MAAM,CAACJ,MAAM,CAAC;UACzCjB,OAAO,CAAC,CAAC;QACV,CAAC,CAAC;MACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACH"}
@@ -0,0 +1,36 @@
1
+ import fs from 'fs';
2
+ import { Blob } from 'buffer';
3
+ import Stream, { Readable } from 'stream';
4
+
5
+ /**
6
+ * Converts Node.js input argument to a stream.
7
+ * @param {(string|Stream|Buffer|Blob)} input - A Node.js readable stream or a `Buffer` or a `Blob` or a path to a file.
8
+ * @returns {Stream}
9
+ */
10
+ export default function convertInputToNodeStream(input) {
11
+ return input instanceof Stream ? input : input instanceof Buffer ? createReadableStreamFromBuffer(input) : input instanceof Blob ? createReadableStreamFromBlob(input) : fs.createReadStream(input);
12
+ }
13
+
14
+ // Creates a readable stream from a `Buffer`.
15
+ function createReadableStreamFromBuffer(buffer) {
16
+ // Node.js seems to have a bug in `Readable.from()` function:
17
+ // it doesn't correctly handle empty buffers, i.e. it doesn't return a correct stream.
18
+ // https://gitlab.com/catamphetamine/read-excel-file/-/issues/106
19
+ if (buffer.length === 0) {
20
+ throw new Error('No data');
21
+ }
22
+ return Readable.from(buffer);
23
+ }
24
+
25
+ // Creates a readable stream from a `Blob`.
26
+ function createReadableStreamFromBlob(blob) {
27
+ // I didn't test but I'd presume that Node.js would throw on an empty `Blob`
28
+ // same way it does on an empty `Buffer`.
29
+ // https://gitlab.com/catamphetamine/read-excel-file/-/issues/106
30
+ if (blob.size === 0) {
31
+ throw new Error('No data');
32
+ }
33
+ // Convert a web `ReadableStream` to a Node.js `Readable` `Stream`.
34
+ return Readable.fromWeb(blob.stream());
35
+ }
36
+ //# sourceMappingURL=convertInputToNodeStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertInputToNodeStream.js","names":["fs","Blob","Stream","Readable","convertInputToNodeStream","input","Buffer","createReadableStreamFromBuffer","createReadableStreamFromBlob","createReadStream","buffer","length","Error","from","blob","size","fromWeb","stream"],"sources":["../../source/export/convertInputToNodeStream.js"],"sourcesContent":["import fs from 'fs'\r\nimport { Blob } from 'buffer'\r\nimport Stream, { Readable } from 'stream'\r\n\r\n/**\r\n * Converts Node.js input argument to a stream.\r\n * @param {(string|Stream|Buffer|Blob)} input - A Node.js readable stream or a `Buffer` or a `Blob` or a path to a file.\r\n * @returns {Stream}\r\n */\r\nexport default function convertInputToNodeStream(input) {\r\n return input instanceof Stream\r\n ? input\r\n : (\r\n input instanceof Buffer\r\n ? createReadableStreamFromBuffer(input)\r\n : (\r\n input instanceof Blob\r\n ? createReadableStreamFromBlob(input)\r\n : fs.createReadStream(input)\r\n )\r\n )\r\n}\r\n\r\n// Creates a readable stream from a `Buffer`.\r\nfunction createReadableStreamFromBuffer(buffer) {\r\n // Node.js seems to have a bug in `Readable.from()` function:\r\n // it doesn't correctly handle empty buffers, i.e. it doesn't return a correct stream.\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/106\r\n if (buffer.length === 0) {\r\n throw new Error('No data')\r\n }\r\n return Readable.from(buffer)\r\n}\r\n\r\n// Creates a readable stream from a `Blob`.\r\nfunction createReadableStreamFromBlob(blob) {\r\n // I didn't test but I'd presume that Node.js would throw on an empty `Blob`\r\n // same way it does on an empty `Buffer`.\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/106\r\n if (blob.size === 0) {\r\n throw new Error('No data')\r\n }\r\n // Convert a web `ReadableStream` to a Node.js `Readable` `Stream`.\r\n return Readable.fromWeb(blob.stream())\r\n}"],"mappings":"AAAA,OAAOA,EAAE,MAAM,IAAI;AACnB,SAASC,IAAI,QAAQ,QAAQ;AAC7B,OAAOC,MAAM,IAAIC,QAAQ,QAAQ,QAAQ;;AAEzC;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,wBAAwBA,CAACC,KAAK,EAAE;EACtD,OAAOA,KAAK,YAAYH,MAAM,GAC1BG,KAAK,GAELA,KAAK,YAAYC,MAAM,GACnBC,8BAA8B,CAACF,KAAK,CAAC,GAErCA,KAAK,YAAYJ,IAAI,GACjBO,4BAA4B,CAACH,KAAK,CAAC,GACnCL,EAAE,CAACS,gBAAgB,CAACJ,KAAK,CAElC;AACL;;AAEA;AACA,SAASE,8BAA8BA,CAACG,MAAM,EAAE;EAC9C;EACA;EACA;EACA,IAAIA,MAAM,CAACC,MAAM,KAAK,CAAC,EAAE;IACvB,MAAM,IAAIC,KAAK,CAAC,SAAS,CAAC;EAC5B;EACA,OAAOT,QAAQ,CAACU,IAAI,CAACH,MAAM,CAAC;AAC9B;;AAEA;AACA,SAASF,4BAA4BA,CAACM,IAAI,EAAE;EAC1C;EACA;EACA;EACA,IAAIA,IAAI,CAACC,IAAI,KAAK,CAAC,EAAE;IACnB,MAAM,IAAIH,KAAK,CAAC,SAAS,CAAC;EAC5B;EACA;EACA,OAAOT,QAAQ,CAACa,OAAO,CAACF,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC;AACxC"}
@@ -0,0 +1,15 @@
1
+ import { strFromU8 } from 'fflate';
2
+
3
+ /**
4
+ * @param {Record<string,Uint8Array} entries
5
+ * @returns {Record<string,string>}
6
+ */
7
+ export default function convertValuesFromUint8ArraysToStrings(entries) {
8
+ var convertedEntries = {};
9
+ for (var _i = 0, _Object$keys = Object.keys(entries); _i < _Object$keys.length; _i++) {
10
+ var key = _Object$keys[_i];
11
+ convertedEntries[key] = strFromU8(entries[key]);
12
+ }
13
+ return convertedEntries;
14
+ }
15
+ //# sourceMappingURL=convertValuesFromUint8ArraysToStrings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertValuesFromUint8ArraysToStrings.js","names":["strFromU8","convertValuesFromUint8ArraysToStrings","entries","convertedEntries","_i","_Object$keys","Object","keys","length","key"],"sources":["../../source/export/convertValuesFromUint8ArraysToStrings.js"],"sourcesContent":["import { strFromU8 } from 'fflate'\r\n\r\n/**\r\n * @param {Record<string,Uint8Array} entries\r\n * @returns {Record<string,string>}\r\n */\r\nexport default function convertValuesFromUint8ArraysToStrings(entries) {\r\n\tconst convertedEntries = {}\r\n\tfor (const key of Object.keys(entries)) {\r\n\t\tconvertedEntries[key] = strFromU8(entries[key])\r\n\t}\r\n\treturn convertedEntries\r\n}"],"mappings":"AAAA,SAASA,SAAS,QAAQ,QAAQ;;AAElC;AACA;AACA;AACA;AACA,eAAe,SAASC,qCAAqCA,CAACC,OAAO,EAAE;EACtE,IAAMC,gBAAgB,GAAG,CAAC,CAAC;EAC3B,SAAAC,EAAA,MAAAC,YAAA,GAAkBC,MAAM,CAACC,IAAI,CAACL,OAAO,CAAC,EAAAE,EAAA,GAAAC,YAAA,CAAAG,MAAA,EAAAJ,EAAA,IAAE;IAAnC,IAAMK,GAAG,GAAAJ,YAAA,CAAAD,EAAA;IACbD,gBAAgB,CAACM,GAAG,CAAC,GAAGT,SAAS,CAACE,OAAO,CAACO,GAAG,CAAC,CAAC;EAChD;EACA,OAAON,gBAAgB;AACxB"}
@@ -0,0 +1,12 @@
1
+ // An `.xlsx` `.zip` archive could contain all kinds of files,
2
+ // such as `.bin` printer settings or `.png` images, etc.
3
+ //
4
+ // Because `read-excel-file` doesn't support returning any of those types of data,
5
+ // there's no need to read those files from the `.xlsx` `.zip` archive,
6
+ // optimizing the unpacking process a little bit.
7
+ //
8
+ export default function filterZipArchiveEntry(_ref) {
9
+ var path = _ref.path;
10
+ return path.endsWith('.xml') || path.endsWith('.xml.rels');
11
+ }
12
+ //# sourceMappingURL=filterZipArchiveEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterZipArchiveEntry.js","names":["filterZipArchiveEntry","_ref","path","endsWith"],"sources":["../../source/export/filterZipArchiveEntry.js"],"sourcesContent":["// An `.xlsx` `.zip` archive could contain all kinds of files,\r\n// such as `.bin` printer settings or `.png` images, etc.\r\n//\r\n// Because `read-excel-file` doesn't support returning any of those types of data,\r\n// there's no need to read those files from the `.xlsx` `.zip` archive,\r\n// optimizing the unpacking process a little bit.\r\n//\r\nexport default function filterZipArchiveEntry({ path }) {\r\n\treturn path.endsWith('.xml') || path.endsWith('.xml.rels')\r\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASA,qBAAqBA,CAAAC,IAAA,EAAW;EAAA,IAARC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EACnD,OAAOA,IAAI,CAACC,QAAQ,CAAC,MAAM,CAAC,IAAID,IAAI,CAACC,QAAQ,CAAC,WAAW,CAAC;AAC3D"}
@@ -1,12 +1,12 @@
1
1
  import readXlsxFile from './readXlsxFileBrowser.js';
2
2
 
3
3
  /**
4
- * Reads the list of sheet names in an XLSX file in a web browser.
5
- * @param {file} file - A file being uploaded in the browser.
4
+ * Reads the list of sheet names in an XLSX file.
5
+ * @param {(File|Blob|ArrayBuffer)} input
6
6
  * @return {Promise} Resolves to an array of objects of shape `{ name: string }`.
7
7
  */
8
- export default function readSheetNames(file) {
9
- return readXlsxFile(file, {
8
+ export default function readSheetNames(input) {
9
+ return readXlsxFile(input, {
10
10
  getSheets: true
11
11
  }).then(function (sheets) {
12
12
  return sheets.map(function (sheet) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readSheetNamesBrowser.js","names":["readXlsxFile","readSheetNames","input","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/export/readSheetNamesBrowser.js"],"sourcesContent":["import readXlsxFile from './readXlsxFileBrowser.js'\r\n\r\n/**\r\n * Reads the list of sheet names in an XLSX file.\r\n * @param {(File|Blob|ArrayBuffer)} input\r\n * @return {Promise} Resolves to an array of objects of shape `{ name: string }`.\r\n */\r\nexport default function readSheetNames(input) {\r\n\treturn readXlsxFile(input, { getSheets: true })\r\n\t\t.then(sheets => sheets.map(sheet => sheet.name))\r\n}"],"mappings":"AAAA,OAAOA,YAAY,MAAM,0BAA0B;;AAEnD;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,cAAcA,CAACC,KAAK,EAAE;EAC7C,OAAOF,YAAY,CAACE,KAAK,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC,CAC7CC,IAAI,CAAC,UAAAC,MAAM;IAAA,OAAIA,MAAM,CAACC,GAAG,CAAC,UAAAC,KAAK;MAAA,OAAIA,KAAK,CAACC,IAAI;IAAA,EAAC;EAAA,EAAC;AAClD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readSheetNamesNode.js","names":["readXlsxFile","readSheetNames","input","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/export/readSheetNamesNode.js"],"sourcesContent":["import readXlsxFile from './readXlsxFileNode.js'\r\n\r\n/**\r\n * Reads the list of sheet names in an XLSX file in Node.js.\r\n * @param {(string|Stream|Buffer)} input - A Node.js readable stream or a `Buffer` or a path to a file.\r\n * @return {Promise} Resolves to an array of objects of shape `{ name: string }`.\r\n */\r\nexport default function readSheetNames(input) {\r\n\treturn readXlsxFile(input, { getSheets: true })\r\n\t\t.then(sheets => sheets.map(sheet => sheet.name))\r\n}"],"mappings":"AAAA,OAAOA,YAAY,MAAM,uBAAuB;;AAEhD;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,cAAcA,CAACC,KAAK,EAAE;EAC7C,OAAOF,YAAY,CAACE,KAAK,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC,CAC7CC,IAAI,CAAC,UAAAC,MAAM;IAAA,OAAIA,MAAM,CAACC,GAAG,CAAC,UAAAC,KAAK;MAAA,OAAIA,KAAK,CAACC,IAAI;IAAA,EAAC;EAAA,EAAC;AAClD"}
@@ -0,0 +1,17 @@
1
+ import readXlsxFile from './readXlsxFileUniversal.js';
2
+
3
+ /**
4
+ * Reads the list of sheet names in an XLSX file.
5
+ * @param {Blob} input
6
+ * @return {Promise} Resolves to an array of objects of shape `{ name: string }`.
7
+ */
8
+ export default function readSheetNames(input) {
9
+ return readXlsxFile(input, {
10
+ getSheets: true
11
+ }).then(function (sheets) {
12
+ return sheets.map(function (sheet) {
13
+ return sheet.name;
14
+ });
15
+ });
16
+ }
17
+ //# sourceMappingURL=readSheetNamesUniversal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readSheetNamesUniversal.js","names":["readXlsxFile","readSheetNames","input","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/export/readSheetNamesUniversal.js"],"sourcesContent":["import readXlsxFile from './readXlsxFileUniversal.js'\r\n\r\n/**\r\n * Reads the list of sheet names in an XLSX file.\r\n * @param {Blob} input\r\n * @return {Promise} Resolves to an array of objects of shape `{ name: string }`.\r\n */\r\nexport default function readSheetNames(input) {\r\n\treturn readXlsxFile(input, { getSheets: true })\r\n\t\t.then(sheets => sheets.map(sheet => sheet.name))\r\n}"],"mappings":"AAAA,OAAOA,YAAY,MAAM,4BAA4B;;AAErD;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,cAAcA,CAACC,KAAK,EAAE;EAC7C,OAAOF,YAAY,CAACE,KAAK,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC,CAC7CC,IAAI,CAAC,UAAAC,MAAM;IAAA,OAAIA,MAAM,CAACC,GAAG,CAAC,UAAAC,KAAK;MAAA,OAAIA,KAAK,CAACC,IAAI;IAAA,EAAC;EAAA,EAAC;AAClD"}
@@ -1,8 +1,8 @@
1
1
  import readXlsxFile from './readXlsxFileWebWorker.js';
2
2
 
3
3
  /**
4
- * Reads the list of sheet names in an XLSX file in a Web Worker.
5
- * @param {file} file - The file.
4
+ * Reads the list of sheet names in an XLSX file.
5
+ * @param {(File|Blob|ArrayBuffer)} input
6
6
  * @return {Promise} Resolves to an array of objects of shape `{ name: string }`.
7
7
  */
8
8
  export default function readSheetNames(file) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readSheetNamesWebWorker.js","names":["readXlsxFile","readSheetNames","file","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/export/readSheetNamesWebWorker.js"],"sourcesContent":["import readXlsxFile from './readXlsxFileWebWorker.js'\r\n\r\n/**\r\n * Reads the list of sheet names in an XLSX file.\r\n * @param {(File|Blob|ArrayBuffer)} input\r\n * @return {Promise} Resolves to an array of objects of shape `{ name: string }`.\r\n */\r\nexport default function readSheetNames(file) {\r\n\treturn readXlsxFile(file, { getSheets: true })\r\n\t\t.then(sheets => sheets.map(sheet => sheet.name))\r\n}"],"mappings":"AAAA,OAAOA,YAAY,MAAM,4BAA4B;;AAErD;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,cAAcA,CAACC,IAAI,EAAE;EAC5C,OAAOF,YAAY,CAACE,IAAI,EAAE;IAAEC,SAAS,EAAE;EAAK,CAAC,CAAC,CAC5CC,IAAI,CAAC,UAAAC,MAAM;IAAA,OAAIA,MAAM,CAACC,GAAG,CAAC,UAAAC,KAAK;MAAA,OAAIA,KAAK,CAACC,IAAI;IAAA,EAAC;EAAA,EAAC;AAClD"}
@@ -1,18 +1,18 @@
1
1
  import xml from '../xml/xmlBrowser.js';
2
2
  import unpackXlsxFile from './unpackXlsxFileBrowser.js';
3
- import readXlsxFileContents from './readXlsxFileContents.js';
3
+ import parseXlsxFileContents from '../xlsx/parseXlsxFileContentsWithOptionalSchema.js';
4
4
 
5
5
  /**
6
- * Reads XLSX file into a 2D array of cells in a browser.
7
- * @param {file} file - A file being uploaded in the browser.
6
+ * Reads XLSX file into a 2D array of cells.
7
+ * @param {(File|Blob|ArrayBuffer)} input
8
8
  * @param {object?} options
9
9
  * @param {(number|string)?} options.sheet - Excel document sheet to read. Defaults to `1`. Will only read this sheet and skip others.
10
10
  * @return {Promise} Resolves to a 2D array of cells: an array of rows, each row being an array of cells.
11
11
  */
12
- export default function readXlsxFile(file) {
12
+ export default function readXlsxFile(input) {
13
13
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
- return unpackXlsxFile(file).then(function (entries) {
15
- return readXlsxFileContents(entries, xml, options);
14
+ return unpackXlsxFile(input).then(function (contents) {
15
+ return parseXlsxFileContents(contents, xml, options);
16
16
  });
17
17
  }
18
18
  //# sourceMappingURL=readXlsxFileBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readXlsxFileBrowser.js","names":["xml","unpackXlsxFile","parseXlsxFileContents","readXlsxFile","input","options","arguments","length","undefined","then","contents"],"sources":["../../source/export/readXlsxFileBrowser.js"],"sourcesContent":["import xml from '../xml/xmlBrowser.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileBrowser.js'\r\nimport parseXlsxFileContents from '../xlsx/parseXlsxFileContentsWithOptionalSchema.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells.\r\n * @param {(File|Blob|ArrayBuffer)} input\r\n * @param {object?} options\r\n * @param {(number|string)?} options.sheet - Excel document sheet to read. Defaults to `1`. Will only read this sheet and skip others.\r\n * @return {Promise} Resolves to a 2D array of cells: an array of rows, each row being an array of cells.\r\n */\r\nexport default function readXlsxFile(input, options = {}) {\r\n\treturn unpackXlsxFile(input)\r\n\t\t.then((contents) => parseXlsxFileContents(contents, xml, options))\r\n}"],"mappings":"AAAA,OAAOA,GAAG,MAAM,sBAAsB;AAEtC,OAAOC,cAAc,MAAM,4BAA4B;AACvD,OAAOC,qBAAqB,MAAM,oDAAoD;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,YAAYA,CAACC,KAAK,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACvD,OAAOL,cAAc,CAACG,KAAK,CAAC,CAC1BK,IAAI,CAAC,UAACC,QAAQ;IAAA,OAAKR,qBAAqB,CAACQ,QAAQ,EAAEV,GAAG,EAAEK,OAAO,CAAC;EAAA,EAAC;AACpE"}
@@ -1,18 +1,18 @@
1
1
  import xml from '../xml/xml.js';
2
2
  import unpackXlsxFile from './unpackXlsxFileNode.js';
3
- import readXlsxFileContents from './readXlsxFileContents.js';
3
+ import parseXlsxFileContents from '../xlsx/parseXlsxFileContentsWithOptionalSchema.js';
4
4
 
5
5
  /**
6
- * Reads XLSX file into a 2D array of cells in a browser.
7
- * @param {(string|Stream|Buffer)} input - A Node.js readable stream or a `Buffer` or a path to a file.
6
+ * Reads XLSX file into a 2D array of cells.
7
+ * @param {(string|Stream|Buffer|Blob)} input - A Node.js readable stream or a `Buffer` or a `Blob` or a path to a file.
8
8
  * @param {object?} options
9
9
  * @param {(number|string)?} options.sheet - Excel document sheet to read. Defaults to `1`. Will only read this sheet and skip others.
10
10
  * @return {Promise} Resolves to a 2D array of cells: an array of rows, each row being an array of cells.
11
11
  */
12
12
  export default function readXlsxFile(input) {
13
13
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
- return unpackXlsxFile(input).then(function (entries) {
15
- return readXlsxFileContents(entries, xml, options);
14
+ return unpackXlsxFile(input).then(function (contents) {
15
+ return parseXlsxFileContents(contents, xml, options);
16
16
  });
17
17
  }
18
18
  //# sourceMappingURL=readXlsxFileNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readXlsxFileNode.js","names":["xml","unpackXlsxFile","parseXlsxFileContents","readXlsxFile","input","options","arguments","length","undefined","then","contents"],"sources":["../../source/export/readXlsxFileNode.js"],"sourcesContent":["import xml from '../xml/xml.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileNode.js'\r\nimport parseXlsxFileContents from '../xlsx/parseXlsxFileContentsWithOptionalSchema.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells.\r\n * @param {(string|Stream|Buffer|Blob)} input - A Node.js readable stream or a `Buffer` or a `Blob` or a path to a file.\r\n * @param {object?} options\r\n * @param {(number|string)?} options.sheet - Excel document sheet to read. Defaults to `1`. Will only read this sheet and skip others.\r\n * @return {Promise} Resolves to a 2D array of cells: an array of rows, each row being an array of cells.\r\n */\r\nexport default function readXlsxFile(input, options = {}) {\r\n\treturn unpackXlsxFile(input)\r\n\t\t.then((contents) => parseXlsxFileContents(contents, xml, options))\r\n}"],"mappings":"AAAA,OAAOA,GAAG,MAAM,eAAe;AAE/B,OAAOC,cAAc,MAAM,yBAAyB;AACpD,OAAOC,qBAAqB,MAAM,oDAAoD;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,YAAYA,CAACC,KAAK,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACvD,OAAOL,cAAc,CAACG,KAAK,CAAC,CAC1BK,IAAI,CAAC,UAACC,QAAQ;IAAA,OAAKR,qBAAqB,CAACQ,QAAQ,EAAEV,GAAG,EAAEK,OAAO,CAAC;EAAA,EAAC;AACpE"}
@@ -0,0 +1,18 @@
1
+ import xml from '../xml/xml.js';
2
+ import unpackXlsxFile from './unpackXlsxFileUniversal.js';
3
+ import parseXlsxFileContents from '../xlsx/parseXlsxFileContentsWithOptionalSchema.js';
4
+
5
+ /**
6
+ * Reads XLSX file into a 2D array of cells.
7
+ * @param {(Blob)} input
8
+ * @param {object?} options
9
+ * @param {(number|string)?} options.sheet - Excel document sheet to read. Defaults to `1`. Will only read this sheet and skip others.
10
+ * @return {Promise} Resolves to a 2D array of cells: an array of rows, each row being an array of cells.
11
+ */
12
+ export default function readXlsxFile(input) {
13
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
+ return unpackXlsxFile(input).then(function (contents) {
15
+ return parseXlsxFileContents(contents, xml, options);
16
+ });
17
+ }
18
+ //# sourceMappingURL=readXlsxFileUniversal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readXlsxFileUniversal.js","names":["xml","unpackXlsxFile","parseXlsxFileContents","readXlsxFile","input","options","arguments","length","undefined","then","contents"],"sources":["../../source/export/readXlsxFileUniversal.js"],"sourcesContent":["import xml from '../xml/xml.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileUniversal.js'\r\nimport parseXlsxFileContents from '../xlsx/parseXlsxFileContentsWithOptionalSchema.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells.\r\n * @param {(Blob)} input\r\n * @param {object?} options\r\n * @param {(number|string)?} options.sheet - Excel document sheet to read. Defaults to `1`. Will only read this sheet and skip others.\r\n * @return {Promise} Resolves to a 2D array of cells: an array of rows, each row being an array of cells.\r\n */\r\nexport default function readXlsxFile(input, options = {}) {\r\n\treturn unpackXlsxFile(input)\r\n\t\t.then((contents) => parseXlsxFileContents(contents, xml, options))\r\n}"],"mappings":"AAAA,OAAOA,GAAG,MAAM,eAAe;AAE/B,OAAOC,cAAc,MAAM,8BAA8B;AACzD,OAAOC,qBAAqB,MAAM,oDAAoD;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,YAAYA,CAACC,KAAK,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACvD,OAAOL,cAAc,CAACG,KAAK,CAAC,CAC1BK,IAAI,CAAC,UAACC,QAAQ;IAAA,OAAKR,qBAAqB,CAACQ,QAAQ,EAAEV,GAAG,EAAEK,OAAO,CAAC;EAAA,EAAC;AACpE"}
@@ -1,18 +1,18 @@
1
1
  import xml from '../xml/xml.js';
2
2
  import unpackXlsxFile from './unpackXlsxFileBrowser.js';
3
- import readXlsxFileContents from './readXlsxFileContents.js';
3
+ import parseXlsxFileContents from '../xlsx/parseXlsxFileContentsWithOptionalSchema.js';
4
4
 
5
5
  /**
6
- * Reads XLSX file into a 2D array of cells in a web worker.
7
- * @param {file} file - The file.
6
+ * Reads XLSX file into a 2D array of cells.
7
+ * @param {(File|Blob|ArrayBuffer)} input
8
8
  * @param {object?} options
9
9
  * @param {(number|string)?} options.sheet - Excel document sheet to read. Defaults to `1`. Will only read this sheet and skip others.
10
10
  * @return {Promise} Resolves to a 2D array of cells: an array of rows, each row being an array of cells.
11
11
  */
12
12
  export default function readXlsxFile(file) {
13
13
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
- return unpackXlsxFile(file).then(function (entries) {
15
- return readXlsxFileContents(entries, xml, options);
14
+ return unpackXlsxFile(file).then(function (contents) {
15
+ return parseXlsxFileContents(contents, xml, options);
16
16
  });
17
17
  }
18
18
  //# sourceMappingURL=readXlsxFileWebWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readXlsxFileWebWorker.js","names":["xml","unpackXlsxFile","parseXlsxFileContents","readXlsxFile","file","options","arguments","length","undefined","then","contents"],"sources":["../../source/export/readXlsxFileWebWorker.js"],"sourcesContent":["import xml from '../xml/xml.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileBrowser.js'\r\nimport parseXlsxFileContents from '../xlsx/parseXlsxFileContentsWithOptionalSchema.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells.\r\n * @param {(File|Blob|ArrayBuffer)} input\r\n * @param {object?} options\r\n * @param {(number|string)?} options.sheet - Excel document sheet to read. Defaults to `1`. Will only read this sheet and skip others.\r\n * @return {Promise} Resolves to a 2D array of cells: an array of rows, each row being an array of cells.\r\n */\r\nexport default function readXlsxFile(file, options = {}) {\r\n\treturn unpackXlsxFile(file)\r\n\t\t.then((contents) => parseXlsxFileContents(contents, xml, options))\r\n}"],"mappings":"AAAA,OAAOA,GAAG,MAAM,eAAe;AAE/B,OAAOC,cAAc,MAAM,4BAA4B;AACvD,OAAOC,qBAAqB,MAAM,oDAAoD;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,YAAYA,CAACC,IAAI,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACtD,OAAOL,cAAc,CAACG,IAAI,CAAC,CACzBK,IAAI,CAAC,UAACC,QAAQ;IAAA,OAAKR,qBAAqB,CAACQ,QAAQ,EAAEV,GAAG,EAAEK,OAAO,CAAC;EAAA,EAAC;AACpE"}
@@ -0,0 +1,30 @@
1
+ // Uses an "async" function of the unzipper function
2
+ // just because it feels more correct to use it over the "sync" one
3
+ // because it isn't supposed to ever freeze the "main thread" (GUI).
4
+ //
5
+ // import unzipFromArrayBufferSync from '../zip/unzipFromArrayBufferSync.js'
6
+ import unzipFromArrayBuffer from '../zip/unzipFromArrayBuffer.js';
7
+ import convertValuesFromUint8ArraysToStrings from './convertValuesFromUint8ArraysToStrings.js';
8
+ import filterZipArchiveEntry from './filterZipArchiveEntry.js';
9
+ /**
10
+ * Unpacks `*.xlsx` file contents, because it's just a `*.zip` archive.
11
+ * @param {(File|Blob|ArrayBuffer)} input
12
+ * @return {Promise<Record<string,string>} Resolves to an object holding `*.xlsx` file entries.
13
+ */
14
+ export default function unpackXlsxFile(input) {
15
+ if (input instanceof File || input instanceof Blob) {
16
+ return input.arrayBuffer().then(getResultFromArrayBuffer);
17
+ }
18
+ return Promise.resolve(input).then(getResultFromArrayBuffer);
19
+ }
20
+ function getResultFromArrayBuffer(arrayBuffer) {
21
+ return unzipFromArrayBuffer(arrayBuffer, {
22
+ filter: filterZipArchiveEntry
23
+ }).then(convertValuesFromUint8ArraysToStrings);
24
+ }
25
+
26
+ // function getResultFromArrayBufferSync(arrayBuffer) {
27
+ // const result = unzipFromArrayBufferSync(arrayBuffer, { filter: filterZipArchiveEntry })
28
+ // return convertValuesFromUint8ArraysToStrings(result)
29
+ // }
30
+ //# sourceMappingURL=unpackXlsxFileBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpackXlsxFileBrowser.js","names":["unzipFromArrayBuffer","convertValuesFromUint8ArraysToStrings","filterZipArchiveEntry","unpackXlsxFile","input","File","Blob","arrayBuffer","then","getResultFromArrayBuffer","Promise","resolve","filter"],"sources":["../../source/export/unpackXlsxFileBrowser.js"],"sourcesContent":["// Uses an \"async\" function of the unzipper function\r\n// just because it feels more correct to use it over the \"sync\" one\r\n// because it isn't supposed to ever freeze the \"main thread\" (GUI).\r\n//\r\n// import unzipFromArrayBufferSync from '../zip/unzipFromArrayBufferSync.js'\r\nimport unzipFromArrayBuffer from '../zip/unzipFromArrayBuffer.js'\r\n\r\nimport convertValuesFromUint8ArraysToStrings from './convertValuesFromUint8ArraysToStrings.js'\r\nimport filterZipArchiveEntry from './filterZipArchiveEntry.js'\r\n/**\r\n * Unpacks `*.xlsx` file contents, because it's just a `*.zip` archive.\r\n * @param {(File|Blob|ArrayBuffer)} input\r\n * @return {Promise<Record<string,string>} Resolves to an object holding `*.xlsx` file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n\tif (input instanceof File || input instanceof Blob) {\r\n\t\treturn input.arrayBuffer().then(getResultFromArrayBuffer)\r\n\t}\r\n\treturn Promise.resolve(input).then(getResultFromArrayBuffer)\r\n}\r\n\r\nfunction getResultFromArrayBuffer(arrayBuffer) {\r\n\treturn unzipFromArrayBuffer(arrayBuffer, { filter: filterZipArchiveEntry }).then(\r\n\t\tconvertValuesFromUint8ArraysToStrings\r\n\t)\r\n}\r\n\r\n// function getResultFromArrayBufferSync(arrayBuffer) {\r\n// const result = unzipFromArrayBufferSync(arrayBuffer, { filter: filterZipArchiveEntry })\r\n// \treturn convertValuesFromUint8ArraysToStrings(result)\r\n// }"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAOA,oBAAoB,MAAM,gCAAgC;AAEjE,OAAOC,qCAAqC,MAAM,4CAA4C;AAC9F,OAAOC,qBAAqB,MAAM,4BAA4B;AAC9D;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,cAAcA,CAACC,KAAK,EAAE;EAC7C,IAAIA,KAAK,YAAYC,IAAI,IAAID,KAAK,YAAYE,IAAI,EAAE;IACnD,OAAOF,KAAK,CAACG,WAAW,CAAC,CAAC,CAACC,IAAI,CAACC,wBAAwB,CAAC;EAC1D;EACA,OAAOC,OAAO,CAACC,OAAO,CAACP,KAAK,CAAC,CAACI,IAAI,CAACC,wBAAwB,CAAC;AAC7D;AAEA,SAASA,wBAAwBA,CAACF,WAAW,EAAE;EAC9C,OAAOP,oBAAoB,CAACO,WAAW,EAAE;IAAEK,MAAM,EAAEV;EAAsB,CAAC,CAAC,CAACM,IAAI,CAC/EP,qCACD,CAAC;AACF;;AAEA;AACA;AACA;AACA"}
@@ -0,0 +1,17 @@
1
+ import unzipFromStream from '../zip/unzipFromStream.js';
2
+ import convertInputToNodeStream from './convertInputToNodeStream.js';
3
+ import convertValuesFromUint8ArraysToStrings from './convertValuesFromUint8ArraysToStrings.js';
4
+ import filterZipArchiveEntry from './filterZipArchiveEntry.js';
5
+
6
+ /**
7
+ * Unpacks XLSX file contents, because it's just a `*.zip` archive.
8
+ * @param {(string|Stream|Buffer|Blob)} input - A Node.js readable stream or a `Buffer` or a `Blob` or a path to a file.
9
+ * @return {Promise} Resolves to an object holding XLSX file entries.
10
+ */
11
+ export default function unpackXlsxFile(input) {
12
+ var stream = convertInputToNodeStream(input);
13
+ return unzipFromStream(stream, {
14
+ filter: filterZipArchiveEntry
15
+ }).then(convertValuesFromUint8ArraysToStrings);
16
+ }
17
+ //# sourceMappingURL=unpackXlsxFileNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpackXlsxFileNode.js","names":["unzipFromStream","convertInputToNodeStream","convertValuesFromUint8ArraysToStrings","filterZipArchiveEntry","unpackXlsxFile","input","stream","filter","then"],"sources":["../../source/export/unpackXlsxFileNode.js"],"sourcesContent":["import unzipFromStream from '../zip/unzipFromStream.js'\r\nimport convertInputToNodeStream from './convertInputToNodeStream.js'\r\nimport convertValuesFromUint8ArraysToStrings from './convertValuesFromUint8ArraysToStrings.js'\r\nimport filterZipArchiveEntry from './filterZipArchiveEntry.js'\r\n\r\n/**\r\n * Unpacks XLSX file contents, because it's just a `*.zip` archive.\r\n * @param {(string|Stream|Buffer|Blob)} input - A Node.js readable stream or a `Buffer` or a `Blob` 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 const stream = convertInputToNodeStream(input)\r\n return unzipFromStream(stream, { filter: filterZipArchiveEntry })\r\n .then(convertValuesFromUint8ArraysToStrings)\r\n}"],"mappings":"AAAA,OAAOA,eAAe,MAAM,2BAA2B;AACvD,OAAOC,wBAAwB,MAAM,+BAA+B;AACpE,OAAOC,qCAAqC,MAAM,4CAA4C;AAC9F,OAAOC,qBAAqB,MAAM,4BAA4B;;AAE9D;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,cAAcA,CAACC,KAAK,EAAE;EAC5C,IAAMC,MAAM,GAAGL,wBAAwB,CAACI,KAAK,CAAC;EAC9C,OAAOL,eAAe,CAACM,MAAM,EAAE;IAAEC,MAAM,EAAEJ;EAAsB,CAAC,CAAC,CAC5DK,IAAI,CAACN,qCAAqC,CAAC;AAClD"}
@@ -0,0 +1,17 @@
1
+ import unzipFromArrayBuffer from '../zip/unzipFromArrayBuffer.js';
2
+ import convertValuesFromUint8ArraysToStrings from './convertValuesFromUint8ArraysToStrings.js';
3
+ import filterZipArchiveEntry from './filterZipArchiveEntry.js';
4
+
5
+ /**
6
+ * Unpacks `*.xlsx` file contents, because it's just a `*.zip` archive.
7
+ * @param {Blob} input
8
+ * @return {Promise<Record<string,string>} Resolves to an object holding `*.xlsx` file entries.
9
+ */
10
+ export default function unpackXlsxFile(input) {
11
+ return input.arrayBuffer().then(function (arrayBuffer) {
12
+ return unzipFromArrayBuffer(arrayBuffer, {
13
+ filter: filterZipArchiveEntry
14
+ });
15
+ }).then(convertValuesFromUint8ArraysToStrings);
16
+ }
17
+ //# sourceMappingURL=unpackXlsxFileUniversal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpackXlsxFileUniversal.js","names":["unzipFromArrayBuffer","convertValuesFromUint8ArraysToStrings","filterZipArchiveEntry","unpackXlsxFile","input","arrayBuffer","then","filter"],"sources":["../../source/export/unpackXlsxFileUniversal.js"],"sourcesContent":["import unzipFromArrayBuffer from '../zip/unzipFromArrayBuffer.js'\r\nimport convertValuesFromUint8ArraysToStrings from './convertValuesFromUint8ArraysToStrings.js'\r\nimport filterZipArchiveEntry from './filterZipArchiveEntry.js'\r\n\r\n/**\r\n * Unpacks `*.xlsx` file contents, because it's just a `*.zip` archive.\r\n * @param {Blob} input\r\n * @return {Promise<Record<string,string>} Resolves to an object holding `*.xlsx` file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n\treturn input.arrayBuffer()\r\n\t\t.then(arrayBuffer => unzipFromArrayBuffer(arrayBuffer, { filter: filterZipArchiveEntry }))\r\n\t\t.then(convertValuesFromUint8ArraysToStrings)\r\n}"],"mappings":"AAAA,OAAOA,oBAAoB,MAAM,gCAAgC;AACjE,OAAOC,qCAAqC,MAAM,4CAA4C;AAC9F,OAAOC,qBAAqB,MAAM,4BAA4B;;AAE9D;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,cAAcA,CAACC,KAAK,EAAE;EAC7C,OAAOA,KAAK,CAACC,WAAW,CAAC,CAAC,CACxBC,IAAI,CAAC,UAAAD,WAAW;IAAA,OAAIL,oBAAoB,CAACK,WAAW,EAAE;MAAEE,MAAM,EAAEL;IAAsB,CAAC,CAAC;EAAA,EAAC,CACzFI,IAAI,CAACL,qCAAqC,CAAC;AAC9C"}
@@ -1,4 +1,4 @@
1
- import parseDate from '../read/parseDate.js';
1
+ import parseDate from '../xlsx/parseDate.js';
2
2
  import InvalidError from './InvalidError.js';
3
3
  export default function DateType(value, _ref) {
4
4
  var properties = _ref.properties;
@@ -1 +1 @@
1
- {"version":3,"file":"Date.js","names":["parseDate","InvalidError","DateType","value","_ref","properties","Date","isNaN","valueOf","isFinite","date"],"sources":["../../source/types/Date.js"],"sourcesContent":["import parseDate from '../read/parseDate.js'\r\nimport InvalidError from './InvalidError.js'\r\n\r\nexport default function DateType(value, { properties }) {\r\n\t// XLSX has no specific format for dates.\r\n // Sometimes a date can be heuristically detected.\r\n // https://github.com/catamphetamine/read-excel-file/issues/3#issuecomment-395770777\r\n if (value instanceof Date) {\r\n if (isNaN(value.valueOf())) {\r\n throw new InvalidError('out_of_bounds')\r\n }\r\n return value\r\n }\r\n if (typeof value === 'number') {\r\n if (isNaN(value)) {\r\n throw new InvalidError('invalid_number')\r\n }\r\n if (!isFinite(value)) {\r\n throw new InvalidError('out_of_bounds')\r\n }\r\n const date = parseDate(value, properties)\r\n if (isNaN(date.valueOf())) {\r\n throw new InvalidError('out_of_bounds')\r\n }\r\n return date\r\n }\r\n throw new InvalidError('not_a_date')\r\n}"],"mappings":"AAAA,OAAOA,SAAS,MAAM,sBAAsB;AAC5C,OAAOC,YAAY,MAAM,mBAAmB;AAE5C,eAAe,SAASC,QAAQA,CAACC,KAAK,EAAAC,IAAA,EAAkB;EAAA,IAAdC,UAAU,GAAAD,IAAA,CAAVC,UAAU;EACnD;EACC;EACA;EACA,IAAIF,KAAK,YAAYG,IAAI,EAAE;IACzB,IAAIC,KAAK,CAACJ,KAAK,CAACK,OAAO,CAAC,CAAC,CAAC,EAAE;MAC1B,MAAM,IAAIP,YAAY,CAAC,eAAe,CAAC;IACzC;IACA,OAAOE,KAAK;EACd;EACA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,IAAII,KAAK,CAACJ,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIF,YAAY,CAAC,gBAAgB,CAAC;IAC1C;IACA,IAAI,CAACQ,QAAQ,CAACN,KAAK,CAAC,EAAE;MACpB,MAAM,IAAIF,YAAY,CAAC,eAAe,CAAC;IACzC;IACA,IAAMS,IAAI,GAAGV,SAAS,CAACG,KAAK,EAAEE,UAAU,CAAC;IACzC,IAAIE,KAAK,CAACG,IAAI,CAACF,OAAO,CAAC,CAAC,CAAC,EAAE;MACzB,MAAM,IAAIP,YAAY,CAAC,eAAe,CAAC;IACzC;IACA,OAAOS,IAAI;EACb;EACA,MAAM,IAAIT,YAAY,CAAC,YAAY,CAAC;AACtC"}
1
+ {"version":3,"file":"Date.js","names":["parseDate","InvalidError","DateType","value","_ref","properties","Date","isNaN","valueOf","isFinite","date"],"sources":["../../source/types/Date.js"],"sourcesContent":["import parseDate from '../xlsx/parseDate.js'\r\nimport InvalidError from './InvalidError.js'\r\n\r\nexport default function DateType(value, { properties }) {\r\n\t// XLSX has no specific format for dates.\r\n // Sometimes a date can be heuristically detected.\r\n // https://github.com/catamphetamine/read-excel-file/issues/3#issuecomment-395770777\r\n if (value instanceof Date) {\r\n if (isNaN(value.valueOf())) {\r\n throw new InvalidError('out_of_bounds')\r\n }\r\n return value\r\n }\r\n if (typeof value === 'number') {\r\n if (isNaN(value)) {\r\n throw new InvalidError('invalid_number')\r\n }\r\n if (!isFinite(value)) {\r\n throw new InvalidError('out_of_bounds')\r\n }\r\n const date = parseDate(value, properties)\r\n if (isNaN(date.valueOf())) {\r\n throw new InvalidError('out_of_bounds')\r\n }\r\n return date\r\n }\r\n throw new InvalidError('not_a_date')\r\n}"],"mappings":"AAAA,OAAOA,SAAS,MAAM,sBAAsB;AAC5C,OAAOC,YAAY,MAAM,mBAAmB;AAE5C,eAAe,SAASC,QAAQA,CAACC,KAAK,EAAAC,IAAA,EAAkB;EAAA,IAAdC,UAAU,GAAAD,IAAA,CAAVC,UAAU;EACnD;EACC;EACA;EACA,IAAIF,KAAK,YAAYG,IAAI,EAAE;IACzB,IAAIC,KAAK,CAACJ,KAAK,CAACK,OAAO,CAAC,CAAC,CAAC,EAAE;MAC1B,MAAM,IAAIP,YAAY,CAAC,eAAe,CAAC;IACzC;IACA,OAAOE,KAAK;EACd;EACA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,IAAII,KAAK,CAACJ,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIF,YAAY,CAAC,gBAAgB,CAAC;IAC1C;IACA,IAAI,CAACQ,QAAQ,CAACN,KAAK,CAAC,EAAE;MACpB,MAAM,IAAIF,YAAY,CAAC,eAAe,CAAC;IACzC;IACA,IAAMS,IAAI,GAAGV,SAAS,CAACG,KAAK,EAAEE,UAAU,CAAC;IACzC,IAAIE,KAAK,CAACG,IAAI,CAACF,OAAO,CAAC,CAAC,CAAC,EAAE;MACzB,MAAM,IAAIP,YAAY,CAAC,eAAe,CAAC;IACzC;IACA,OAAOS,IAAI;EACb;EACA,MAAM,IAAIT,YAAY,CAAC,YAAY,CAAC;AACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"coordinates.js","names":["LETTERS","calculateDimensions","cells","comparator","a","b","allRows","map","cell","row","sort","allCols","column","minRow","maxRow","length","minCol","maxCol","columnLettersToNumber","columnLetters","n","i","indexOf","parseCellCoordinates","coords","split","parseInt","trim"],"sources":["../../source/read/coordinates.js"],"sourcesContent":["// Maps \"A1\"-like coordinates to `{ row, column }` numeric coordinates.\r\nconst LETTERS = [\"\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\"]\r\n\r\nexport function calculateDimensions (cells) {\r\n const comparator = (a, b) => a - b\r\n const allRows = cells.map(cell => cell.row).sort(comparator)\r\n const allCols = cells.map(cell => cell.column).sort(comparator)\r\n const minRow = allRows[0]\r\n const maxRow = allRows[allRows.length - 1]\r\n const minCol = allCols[0]\r\n const maxCol = allCols[allCols.length - 1]\r\n\r\n return [\r\n { row: minRow, column: minCol },\r\n { row: maxRow, column: maxCol }\r\n ]\r\n}\r\n\r\n// Converts a letter coordinate to a digit coordinate.\r\n// Examples: \"A\" -> 1, \"B\" -> 2, \"Z\" -> 26, \"AA\" -> 27, etc.\r\nfunction columnLettersToNumber(columnLetters) {\r\n // `for ... of ...` would require Babel polyfill for iterating a string.\r\n let n = 0\r\n let i = 0\r\n while (i < columnLetters.length) {\r\n n *= 26\r\n n += LETTERS.indexOf(columnLetters[i])\r\n i++\r\n }\r\n return n\r\n}\r\n\r\nexport function parseCellCoordinates(coords) {\r\n // Coordinate examples: \"AA2091\", \"R988\", \"B1\".\r\n coords = coords.split(/(\\d+)/)\r\n return [\r\n // Row.\r\n parseInt(coords[1]),\r\n // Column.\r\n columnLettersToNumber(coords[0].trim())\r\n ]\r\n}"],"mappings":"AAAA;AACA,IAAMA,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAEtJ,OAAO,SAASC,mBAAmBA,CAAEC,KAAK,EAAE;EAC1C,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,CAAC,EAAEC,CAAC;IAAA,OAAKD,CAAC,GAAGC,CAAC;EAAA;EAClC,IAAMC,OAAO,GAAGJ,KAAK,CAACK,GAAG,CAAC,UAAAC,IAAI;IAAA,OAAIA,IAAI,CAACC,GAAG;EAAA,EAAC,CAACC,IAAI,CAACP,UAAU,CAAC;EAC5D,IAAMQ,OAAO,GAAGT,KAAK,CAACK,GAAG,CAAC,UAAAC,IAAI;IAAA,OAAIA,IAAI,CAACI,MAAM;EAAA,EAAC,CAACF,IAAI,CAACP,UAAU,CAAC;EAC/D,IAAMU,MAAM,GAAGP,OAAO,CAAC,CAAC,CAAC;EACzB,IAAMQ,MAAM,GAAGR,OAAO,CAACA,OAAO,CAACS,MAAM,GAAG,CAAC,CAAC;EAC1C,IAAMC,MAAM,GAAGL,OAAO,CAAC,CAAC,CAAC;EACzB,IAAMM,MAAM,GAAGN,OAAO,CAACA,OAAO,CAACI,MAAM,GAAG,CAAC,CAAC;EAE1C,OAAO,CACL;IAAEN,GAAG,EAAEI,MAAM;IAAED,MAAM,EAAEI;EAAO,CAAC,EAC/B;IAAEP,GAAG,EAAEK,MAAM;IAAEF,MAAM,EAAEK;EAAO,CAAC,CAChC;AACH;;AAEA;AACA;AACA,SAASC,qBAAqBA,CAACC,aAAa,EAAE;EAC5C;EACA,IAAIC,CAAC,GAAG,CAAC;EACT,IAAIC,CAAC,GAAG,CAAC;EACT,OAAOA,CAAC,GAAGF,aAAa,CAACJ,MAAM,EAAE;IAC/BK,CAAC,IAAI,EAAE;IACPA,CAAC,IAAIpB,OAAO,CAACsB,OAAO,CAACH,aAAa,CAACE,CAAC,CAAC,CAAC;IACtCA,CAAC,EAAE;EACL;EACA,OAAOD,CAAC;AACV;AAEA,OAAO,SAASG,oBAAoBA,CAACC,MAAM,EAAE;EAC3C;EACAA,MAAM,GAAGA,MAAM,CAACC,KAAK,CAAC,OAAO,CAAC;EAC9B,OAAO;EACL;EACAC,QAAQ,CAACF,MAAM,CAAC,CAAC,CAAC,CAAC;EACnB;EACAN,qBAAqB,CAACM,MAAM,CAAC,CAAC,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC,CACxC;AACH"}
1
+ {"version":3,"file":"coordinates.js","names":["LETTERS","calculateDimensions","cells","comparator","a","b","allRows","map","cell","row","sort","allCols","column","minRow","maxRow","length","minCol","maxCol","columnLettersToNumber","columnLetters","n","i","indexOf","parseCellCoordinates","coords","split","parseInt","trim"],"sources":["../../source/xlsx/coordinates.js"],"sourcesContent":["// Maps \"A1\"-like coordinates to `{ row, column }` numeric coordinates.\r\nconst LETTERS = [\"\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\"]\r\n\r\nexport function calculateDimensions (cells) {\r\n const comparator = (a, b) => a - b\r\n const allRows = cells.map(cell => cell.row).sort(comparator)\r\n const allCols = cells.map(cell => cell.column).sort(comparator)\r\n const minRow = allRows[0]\r\n const maxRow = allRows[allRows.length - 1]\r\n const minCol = allCols[0]\r\n const maxCol = allCols[allCols.length - 1]\r\n\r\n return [\r\n { row: minRow, column: minCol },\r\n { row: maxRow, column: maxCol }\r\n ]\r\n}\r\n\r\n// Converts a letter coordinate to a digit coordinate.\r\n// Examples: \"A\" -> 1, \"B\" -> 2, \"Z\" -> 26, \"AA\" -> 27, etc.\r\nfunction columnLettersToNumber(columnLetters) {\r\n // `for ... of ...` would require Babel polyfill for iterating a string.\r\n let n = 0\r\n let i = 0\r\n while (i < columnLetters.length) {\r\n n *= 26\r\n n += LETTERS.indexOf(columnLetters[i])\r\n i++\r\n }\r\n return n\r\n}\r\n\r\nexport function parseCellCoordinates(coords) {\r\n // Coordinate examples: \"AA2091\", \"R988\", \"B1\".\r\n coords = coords.split(/(\\d+)/)\r\n return [\r\n // Row.\r\n parseInt(coords[1]),\r\n // Column.\r\n columnLettersToNumber(coords[0].trim())\r\n ]\r\n}"],"mappings":"AAAA;AACA,IAAMA,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAEtJ,OAAO,SAASC,mBAAmBA,CAAEC,KAAK,EAAE;EAC1C,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,CAAC,EAAEC,CAAC;IAAA,OAAKD,CAAC,GAAGC,CAAC;EAAA;EAClC,IAAMC,OAAO,GAAGJ,KAAK,CAACK,GAAG,CAAC,UAAAC,IAAI;IAAA,OAAIA,IAAI,CAACC,GAAG;EAAA,EAAC,CAACC,IAAI,CAACP,UAAU,CAAC;EAC5D,IAAMQ,OAAO,GAAGT,KAAK,CAACK,GAAG,CAAC,UAAAC,IAAI;IAAA,OAAIA,IAAI,CAACI,MAAM;EAAA,EAAC,CAACF,IAAI,CAACP,UAAU,CAAC;EAC/D,IAAMU,MAAM,GAAGP,OAAO,CAAC,CAAC,CAAC;EACzB,IAAMQ,MAAM,GAAGR,OAAO,CAACA,OAAO,CAACS,MAAM,GAAG,CAAC,CAAC;EAC1C,IAAMC,MAAM,GAAGL,OAAO,CAAC,CAAC,CAAC;EACzB,IAAMM,MAAM,GAAGN,OAAO,CAACA,OAAO,CAACI,MAAM,GAAG,CAAC,CAAC;EAE1C,OAAO,CACL;IAAEN,GAAG,EAAEI,MAAM;IAAED,MAAM,EAAEI;EAAO,CAAC,EAC/B;IAAEP,GAAG,EAAEK,MAAM;IAAEF,MAAM,EAAEK;EAAO,CAAC,CAChC;AACH;;AAEA;AACA;AACA,SAASC,qBAAqBA,CAACC,aAAa,EAAE;EAC5C;EACA,IAAIC,CAAC,GAAG,CAAC;EACT,IAAIC,CAAC,GAAG,CAAC;EACT,OAAOA,CAAC,GAAGF,aAAa,CAACJ,MAAM,EAAE;IAC/BK,CAAC,IAAI,EAAE;IACPA,CAAC,IAAIpB,OAAO,CAACsB,OAAO,CAACH,aAAa,CAACE,CAAC,CAAC,CAAC;IACtCA,CAAC,EAAE;EACL;EACA,OAAOD,CAAC;AACV;AAEA,OAAO,SAASG,oBAAoBA,CAACC,MAAM,EAAE;EAC3C;EACAA,MAAM,GAAGA,MAAM,CAACC,KAAK,CAAC,OAAO,CAAC;EAC9B,OAAO;EACL;EACAC,QAAQ,CAACF,MAAM,CAAC,CAAC,CAAC,CAAC;EACnB;EACAN,qBAAqB,CAACM,MAAM,CAAC,CAAC,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC,CACxC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"dropEmptyColumns.js","names":["dropEmptyColumns","data","_ref","arguments","length","undefined","_ref$accessor","accessor","_","onlyTrimAtTheEnd","i","empty","_iterator","_createForOfIteratorHelperLoose","_step","done","row","value","j","splice"],"sources":["../../source/read/dropEmptyColumns.js"],"sourcesContent":["export default function dropEmptyColumns(data, {\r\n accessor = _ => _,\r\n onlyTrimAtTheEnd\r\n} = {}) {\r\n let i = data[0].length - 1\r\n while (i >= 0) {\r\n let empty = true\r\n for (const row of data) {\r\n if (accessor(row[i]) !== null) {\r\n empty = false\r\n break\r\n }\r\n }\r\n if (empty) {\r\n let j = 0;\r\n while (j < data.length) {\r\n data[j].splice(i, 1)\r\n j++\r\n }\r\n } else if (onlyTrimAtTheEnd) {\r\n break\r\n }\r\n i--\r\n }\r\n return data\r\n}"],"mappings":";;;AAAA,eAAe,SAASA,gBAAgBA,CAACC,IAAI,EAGrC;EAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAAAG,aAAA,GAAAJ,IAAA,CAFJK,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,UAAAE,CAAC;MAAA,OAAIA,CAAC;IAAA,IAAAF,aAAA;IACjBG,gBAAgB,GAAAP,IAAA,CAAhBO,gBAAgB;EAEhB,IAAIC,CAAC,GAAGT,IAAI,CAAC,CAAC,CAAC,CAACG,MAAM,GAAG,CAAC;EAC1B,OAAOM,CAAC,IAAI,CAAC,EAAE;IACb,IAAIC,KAAK,GAAG,IAAI;IAChB,SAAAC,SAAA,GAAAC,+BAAA,CAAkBZ,IAAI,GAAAa,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;MAAA,IAAbC,GAAG,GAAAF,KAAA,CAAAG,KAAA;MACZ,IAAIV,QAAQ,CAACS,GAAG,CAACN,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;QAC7BC,KAAK,GAAG,KAAK;QACb;MACF;IACF;IACA,IAAIA,KAAK,EAAE;MACT,IAAIO,CAAC,GAAG,CAAC;MACT,OAAOA,CAAC,GAAGjB,IAAI,CAACG,MAAM,EAAE;QACtBH,IAAI,CAACiB,CAAC,CAAC,CAACC,MAAM,CAACT,CAAC,EAAE,CAAC,CAAC;QACpBQ,CAAC,EAAE;MACL;IACF,CAAC,MAAM,IAAIT,gBAAgB,EAAE;MAC3B;IACF;IACAC,CAAC,EAAE;EACL;EACA,OAAOT,IAAI;AACb"}
1
+ {"version":3,"file":"dropEmptyColumns.js","names":["dropEmptyColumns","data","_ref","arguments","length","undefined","_ref$accessor","accessor","_","onlyTrimAtTheEnd","i","empty","_iterator","_createForOfIteratorHelperLoose","_step","done","row","value","j","splice"],"sources":["../../source/xlsx/dropEmptyColumns.js"],"sourcesContent":["export default function dropEmptyColumns(data, {\r\n accessor = _ => _,\r\n onlyTrimAtTheEnd\r\n} = {}) {\r\n let i = data[0].length - 1\r\n while (i >= 0) {\r\n let empty = true\r\n for (const row of data) {\r\n if (accessor(row[i]) !== null) {\r\n empty = false\r\n break\r\n }\r\n }\r\n if (empty) {\r\n let j = 0;\r\n while (j < data.length) {\r\n data[j].splice(i, 1)\r\n j++\r\n }\r\n } else if (onlyTrimAtTheEnd) {\r\n break\r\n }\r\n i--\r\n }\r\n return data\r\n}"],"mappings":";;;AAAA,eAAe,SAASA,gBAAgBA,CAACC,IAAI,EAGrC;EAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAAAG,aAAA,GAAAJ,IAAA,CAFJK,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,UAAAE,CAAC;MAAA,OAAIA,CAAC;IAAA,IAAAF,aAAA;IACjBG,gBAAgB,GAAAP,IAAA,CAAhBO,gBAAgB;EAEhB,IAAIC,CAAC,GAAGT,IAAI,CAAC,CAAC,CAAC,CAACG,MAAM,GAAG,CAAC;EAC1B,OAAOM,CAAC,IAAI,CAAC,EAAE;IACb,IAAIC,KAAK,GAAG,IAAI;IAChB,SAAAC,SAAA,GAAAC,+BAAA,CAAkBZ,IAAI,GAAAa,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;MAAA,IAAbC,GAAG,GAAAF,KAAA,CAAAG,KAAA;MACZ,IAAIV,QAAQ,CAACS,GAAG,CAACN,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;QAC7BC,KAAK,GAAG,KAAK;QACb;MACF;IACF;IACA,IAAIA,KAAK,EAAE;MACT,IAAIO,CAAC,GAAG,CAAC;MACT,OAAOA,CAAC,GAAGjB,IAAI,CAACG,MAAM,EAAE;QACtBH,IAAI,CAACiB,CAAC,CAAC,CAACC,MAAM,CAACT,CAAC,EAAE,CAAC,CAAC;QACpBQ,CAAC,EAAE;MACL;IACF,CAAC,MAAM,IAAIT,gBAAgB,EAAE;MAC3B;IACF;IACAC,CAAC,EAAE;EACL;EACA,OAAOT,IAAI;AACb"}