read-excel-file 9.3.4 → 9.3.5

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 (251) hide show
  1. package/CHANGELOG.md +6 -2
  2. package/README.md +32 -2
  3. package/browser/index.cjs +3 -0
  4. package/browser/index.d.ts +16 -0
  5. package/browser/index.js +4 -1
  6. package/bundle/read-excel-file.min.js +1 -1
  7. package/bundle/read-excel-file.min.js.map +1 -1
  8. package/commonjs/export/convertInputToNodeStream.js +0 -12
  9. package/commonjs/export/convertInputToNodeStream.js.map +1 -1
  10. package/commonjs/export/parseSheet.js +14 -7
  11. package/commonjs/export/parseSheet.js.map +1 -1
  12. package/commonjs/export/readSheetBrowser.js +3 -6
  13. package/commonjs/export/readSheetBrowser.js.map +1 -1
  14. package/commonjs/export/readSheetNode.js +3 -6
  15. package/commonjs/export/readSheetNode.js.map +1 -1
  16. package/commonjs/export/readSheetUniversal.js +2 -2
  17. package/commonjs/export/readSheetUniversal.js.map +1 -1
  18. package/commonjs/export/readSheetWebWorker.js +5 -5
  19. package/commonjs/export/readSheetWebWorker.js.map +1 -1
  20. package/commonjs/export/readXlsxFileBrowser.js +3 -6
  21. package/commonjs/export/readXlsxFileBrowser.js.map +1 -1
  22. package/commonjs/export/readXlsxFileNode.js +3 -6
  23. package/commonjs/export/readXlsxFileNode.js.map +1 -1
  24. package/commonjs/export/readXlsxFileUniversal.js +2 -2
  25. package/commonjs/export/readXlsxFileUniversal.js.map +1 -1
  26. package/commonjs/export/readXlsxFileWebWorker.js +5 -5
  27. package/commonjs/export/readXlsxFileWebWorker.js.map +1 -1
  28. package/commonjs/export/unpackXlsxFileBrowser.js +15 -4
  29. package/commonjs/export/unpackXlsxFileBrowser.js.map +1 -1
  30. package/commonjs/export/unpackXlsxFileBrowser.test.js.map +1 -0
  31. package/commonjs/export/unpackXlsxFileNode.js +32 -5
  32. package/commonjs/export/unpackXlsxFileNode.js.map +1 -1
  33. package/commonjs/export/unpackXlsxFileNode.test.js.map +1 -0
  34. package/commonjs/export/unpackXlsxFileUniversal.js +14 -3
  35. package/commonjs/export/unpackXlsxFileUniversal.js.map +1 -1
  36. package/commonjs/export/unpackXlsxFileUniversal.test.js.map +1 -0
  37. package/commonjs/parseSheetData/parseSheetData.js +9 -6
  38. package/commonjs/parseSheetData/parseSheetData.js.map +1 -1
  39. package/commonjs/utility/convertValuesFromUint8ArraysToStrings.js +100 -0
  40. package/commonjs/utility/convertValuesFromUint8ArraysToStrings.js.map +1 -0
  41. package/commonjs/xlsx/InvalidSpreadsheetError.js +55 -0
  42. package/commonjs/xlsx/InvalidSpreadsheetError.js.map +1 -0
  43. package/commonjs/xlsx/SheetNotFoundError.js +55 -0
  44. package/commonjs/xlsx/SheetNotFoundError.js.map +1 -0
  45. package/commonjs/xlsx/file/InputValidationStream.js +101 -0
  46. package/commonjs/xlsx/file/InputValidationStream.js.map +1 -0
  47. package/commonjs/xlsx/file/InputValidationStream.test.js.map +1 -0
  48. package/commonjs/xlsx/file/InvalidInputError.js +105 -0
  49. package/commonjs/xlsx/file/InvalidInputError.js.map +1 -0
  50. package/commonjs/xlsx/file/createFileTypeDetector.js +70 -0
  51. package/commonjs/xlsx/file/createFileTypeDetector.js.map +1 -0
  52. package/commonjs/xlsx/file/createFileTypeDetector.test.js.map +1 -0
  53. package/commonjs/xlsx/file/validateLeadingBytes.js +47 -0
  54. package/commonjs/xlsx/file/validateLeadingBytes.js.map +1 -0
  55. package/commonjs/xlsx/file/validateLeadingBytes.test.js.map +1 -0
  56. package/commonjs/xlsx/isDateFormat.js +32 -27
  57. package/commonjs/xlsx/isDateFormat.js.map +1 -1
  58. package/commonjs/xlsx/isDateFormatStyle.js +19 -21
  59. package/commonjs/xlsx/isDateFormatStyle.js.map +1 -1
  60. package/commonjs/xlsx/parseCell.js +252 -115
  61. package/commonjs/xlsx/parseCell.js.map +1 -1
  62. package/commonjs/xlsx/parseCellAddress.js +22 -18
  63. package/commonjs/xlsx/parseCellAddress.js.map +1 -1
  64. package/commonjs/xlsx/parseExcelDate.js +4 -124
  65. package/commonjs/xlsx/parseExcelDate.js.map +1 -1
  66. package/commonjs/xlsx/parseExcelDate.test.js.map +1 -1
  67. package/commonjs/xlsx/parseExcelTimestamp.js +139 -0
  68. package/commonjs/xlsx/parseExcelTimestamp.js.map +1 -0
  69. package/commonjs/xlsx/parseFilePaths.js +48 -47
  70. package/commonjs/xlsx/parseFilePaths.js.map +1 -1
  71. package/commonjs/xlsx/parseSharedStrings.js +91 -36
  72. package/commonjs/xlsx/parseSharedStrings.js.map +1 -1
  73. package/commonjs/xlsx/parseSheet.js +527 -69
  74. package/commonjs/xlsx/parseSheet.js.map +1 -1
  75. package/commonjs/xlsx/parseSpreadsheetContents.js +154 -83
  76. package/commonjs/xlsx/parseSpreadsheetContents.js.map +1 -1
  77. package/commonjs/xlsx/parseSpreadsheetInfo.js +60 -59
  78. package/commonjs/xlsx/parseSpreadsheetInfo.js.map +1 -1
  79. package/commonjs/xlsx/parseStyles.js +75 -75
  80. package/commonjs/xlsx/parseStyles.js.map +1 -1
  81. package/commonjs/xml/parseXml.js +112 -0
  82. package/commonjs/xml/parseXml.js.map +1 -0
  83. package/commonjs/xml/parseXml.test.js.map +1 -0
  84. package/commonjs/xml/parseXmlStream.js.map +1 -1
  85. package/commonjs/xml/parseXmlStream.sax.js +69 -28
  86. package/commonjs/xml/parseXmlStream.sax.js.map +1 -1
  87. package/commonjs/xml/parseXmlStream.saxen.js +66 -40
  88. package/commonjs/xml/parseXmlStream.saxen.js.map +1 -1
  89. package/commonjs/zip/UnzipError.js +55 -0
  90. package/commonjs/zip/UnzipError.js.map +1 -0
  91. package/commonjs/zip/unzipFromArrayBuffer.js +21 -1
  92. package/commonjs/zip/unzipFromArrayBuffer.js.map +1 -1
  93. package/commonjs/zip/unzipFromArrayBuffer.test.js.map +1 -0
  94. package/commonjs/zip/unzipFromStream.fflate.js +43 -35
  95. package/commonjs/zip/unzipFromStream.fflate.js.map +1 -1
  96. package/commonjs/zip/unzipFromStream.js +188 -6
  97. package/commonjs/zip/unzipFromStream.js.map +1 -1
  98. package/commonjs/zip/unzipFromStream.unzipper.js +19 -34
  99. package/commonjs/zip/unzipFromStream.unzipper.js.map +1 -1
  100. package/modules/export/convertInputToNodeStream.js +0 -12
  101. package/modules/export/convertInputToNodeStream.js.map +1 -1
  102. package/modules/export/parseSheet.js +13 -6
  103. package/modules/export/parseSheet.js.map +1 -1
  104. package/modules/export/readSheetBrowser.js +3 -5
  105. package/modules/export/readSheetBrowser.js.map +1 -1
  106. package/modules/export/readSheetNode.js +3 -5
  107. package/modules/export/readSheetNode.js.map +1 -1
  108. package/modules/export/readSheetUniversal.js +2 -2
  109. package/modules/export/readSheetUniversal.js.map +1 -1
  110. package/modules/export/readSheetWebWorker.js +7 -8
  111. package/modules/export/readSheetWebWorker.js.map +1 -1
  112. package/modules/export/readXlsxFileBrowser.js +3 -5
  113. package/modules/export/readXlsxFileBrowser.js.map +1 -1
  114. package/modules/export/readXlsxFileNode.js +3 -5
  115. package/modules/export/readXlsxFileNode.js.map +1 -1
  116. package/modules/export/readXlsxFileUniversal.js +2 -2
  117. package/modules/export/readXlsxFileUniversal.js.map +1 -1
  118. package/modules/export/readXlsxFileWebWorker.js +7 -8
  119. package/modules/export/readXlsxFileWebWorker.js.map +1 -1
  120. package/modules/export/unpackXlsxFileBrowser.js +15 -4
  121. package/modules/export/unpackXlsxFileBrowser.js.map +1 -1
  122. package/modules/export/unpackXlsxFileBrowser.test.js.map +1 -0
  123. package/modules/export/unpackXlsxFileNode.js +32 -5
  124. package/modules/export/unpackXlsxFileNode.js.map +1 -1
  125. package/modules/export/unpackXlsxFileNode.test.js.map +1 -0
  126. package/modules/export/unpackXlsxFileUniversal.js +14 -3
  127. package/modules/export/unpackXlsxFileUniversal.js.map +1 -1
  128. package/modules/export/unpackXlsxFileUniversal.test.js.map +1 -0
  129. package/modules/parseSheetData/parseSheetData.js +9 -6
  130. package/modules/parseSheetData/parseSheetData.js.map +1 -1
  131. package/modules/utility/convertValuesFromUint8ArraysToStrings.js +92 -0
  132. package/modules/utility/convertValuesFromUint8ArraysToStrings.js.map +1 -0
  133. package/modules/xlsx/InvalidSpreadsheetError.js +50 -0
  134. package/modules/xlsx/InvalidSpreadsheetError.js.map +1 -0
  135. package/modules/xlsx/SheetNotFoundError.js +50 -0
  136. package/modules/xlsx/SheetNotFoundError.js.map +1 -0
  137. package/modules/xlsx/file/InputValidationStream.js +96 -0
  138. package/modules/xlsx/file/InputValidationStream.js.map +1 -0
  139. package/modules/xlsx/file/InputValidationStream.test.js.map +1 -0
  140. package/modules/xlsx/file/InvalidInputError.js +100 -0
  141. package/modules/xlsx/file/InvalidInputError.js.map +1 -0
  142. package/modules/xlsx/file/createFileTypeDetector.js +63 -0
  143. package/modules/xlsx/file/createFileTypeDetector.js.map +1 -0
  144. package/modules/xlsx/file/createFileTypeDetector.test.js.map +1 -0
  145. package/modules/xlsx/file/validateLeadingBytes.js +37 -0
  146. package/modules/xlsx/file/validateLeadingBytes.js.map +1 -0
  147. package/modules/xlsx/file/validateLeadingBytes.test.js.map +1 -0
  148. package/modules/xlsx/isDateFormat.js +31 -27
  149. package/modules/xlsx/isDateFormat.js.map +1 -1
  150. package/modules/xlsx/isDateFormatStyle.js +18 -21
  151. package/modules/xlsx/isDateFormatStyle.js.map +1 -1
  152. package/modules/xlsx/parseCell.js +251 -111
  153. package/modules/xlsx/parseCell.js.map +1 -1
  154. package/modules/xlsx/parseCellAddress.js +21 -18
  155. package/modules/xlsx/parseCellAddress.js.map +1 -1
  156. package/modules/xlsx/parseExcelDate.js +4 -124
  157. package/modules/xlsx/parseExcelDate.js.map +1 -1
  158. package/modules/xlsx/parseExcelDate.test.js.map +1 -1
  159. package/modules/xlsx/parseExcelTimestamp.js +133 -0
  160. package/modules/xlsx/parseExcelTimestamp.js.map +1 -0
  161. package/modules/xlsx/parseFilePaths.js +48 -47
  162. package/modules/xlsx/parseFilePaths.js.map +1 -1
  163. package/modules/xlsx/parseSharedStrings.js +91 -37
  164. package/modules/xlsx/parseSharedStrings.js.map +1 -1
  165. package/modules/xlsx/parseSheet.js +526 -68
  166. package/modules/xlsx/parseSheet.js.map +1 -1
  167. package/modules/xlsx/parseSpreadsheetContents.js +153 -81
  168. package/modules/xlsx/parseSpreadsheetContents.js.map +1 -1
  169. package/modules/xlsx/parseSpreadsheetInfo.js +60 -59
  170. package/modules/xlsx/parseSpreadsheetInfo.js.map +1 -1
  171. package/modules/xlsx/parseStyles.js +75 -75
  172. package/modules/xlsx/parseStyles.js.map +1 -1
  173. package/modules/xml/parseXml.js +106 -0
  174. package/modules/xml/parseXml.js.map +1 -0
  175. package/modules/xml/parseXml.test.js.map +1 -0
  176. package/modules/xml/parseXmlStream.js +2 -0
  177. package/modules/xml/parseXmlStream.js.map +1 -1
  178. package/modules/xml/parseXmlStream.sax.js +69 -28
  179. package/modules/xml/parseXmlStream.sax.js.map +1 -1
  180. package/modules/xml/parseXmlStream.saxen.js +67 -40
  181. package/modules/xml/parseXmlStream.saxen.js.map +1 -1
  182. package/modules/zip/UnzipError.js +49 -0
  183. package/modules/zip/UnzipError.js.map +1 -0
  184. package/modules/zip/unzipFromArrayBuffer.js +21 -1
  185. package/modules/zip/unzipFromArrayBuffer.js.map +1 -1
  186. package/modules/zip/unzipFromArrayBuffer.test.js.map +1 -0
  187. package/modules/zip/unzipFromStream.fflate.js +41 -35
  188. package/modules/zip/unzipFromStream.fflate.js.map +1 -1
  189. package/modules/zip/unzipFromStream.js +124 -1
  190. package/modules/zip/unzipFromStream.js.map +1 -1
  191. package/modules/zip/unzipFromStream.unzipper.js +19 -35
  192. package/modules/zip/unzipFromStream.unzipper.js.map +1 -1
  193. package/node/index.cjs +3 -0
  194. package/node/index.d.ts +16 -0
  195. package/node/index.js +3 -0
  196. package/package.json +5 -3
  197. package/types/InvalidInputError.d.ts +16 -0
  198. package/types/InvalidSpreadsheetError.d.ts +4 -0
  199. package/types/SheetNotFoundError.d.ts +4 -0
  200. package/universal/index.cjs +3 -0
  201. package/universal/index.d.ts +16 -0
  202. package/universal/index.js +3 -0
  203. package/web-worker/index.cjs +3 -0
  204. package/web-worker/index.d.ts +16 -0
  205. package/web-worker/index.js +3 -0
  206. package/commonjs/export/convertValuesFromUint8ArraysToStrings.js +0 -23
  207. package/commonjs/export/convertValuesFromUint8ArraysToStrings.js.map +0 -1
  208. package/commonjs/xlsx/convertCellsToData2dArray.js +0 -84
  209. package/commonjs/xlsx/convertCellsToData2dArray.js.map +0 -1
  210. package/commonjs/xlsx/dropEmptyColumns.js +0 -40
  211. package/commonjs/xlsx/dropEmptyColumns.js.map +0 -1
  212. package/commonjs/xlsx/dropEmptyColumns.test.js.map +0 -1
  213. package/commonjs/xlsx/dropEmptyRows.js +0 -43
  214. package/commonjs/xlsx/dropEmptyRows.js.map +0 -1
  215. package/commonjs/xlsx/dropEmptyRows.test.js.map +0 -1
  216. package/commonjs/xlsx/parseCellValue.js +0 -189
  217. package/commonjs/xlsx/parseCellValue.js.map +0 -1
  218. package/commonjs/xlsx/parseNumber.js +0 -20
  219. package/commonjs/xlsx/parseNumber.js.map +0 -1
  220. package/commonjs/xlsx/parseSharedString.js +0 -64
  221. package/commonjs/xlsx/parseSharedString.js.map +0 -1
  222. package/commonjs/xlsx/parseSheetData.js +0 -68
  223. package/commonjs/xlsx/parseSheetData.js.map +0 -1
  224. package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js +0 -29
  225. package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +0 -1
  226. package/commonjs/xml/parseXmlStream.saxen.code.js +0 -953
  227. package/commonjs/xml/parseXmlStream.saxen.code.js.map +0 -1
  228. package/commonjs/xml/parseXmlStream.test.js.map +0 -1
  229. package/modules/export/convertValuesFromUint8ArraysToStrings.js +0 -17
  230. package/modules/export/convertValuesFromUint8ArraysToStrings.js.map +0 -1
  231. package/modules/xlsx/convertCellsToData2dArray.js +0 -77
  232. package/modules/xlsx/convertCellsToData2dArray.js.map +0 -1
  233. package/modules/xlsx/dropEmptyColumns.js +0 -34
  234. package/modules/xlsx/dropEmptyColumns.js.map +0 -1
  235. package/modules/xlsx/dropEmptyColumns.test.js.map +0 -1
  236. package/modules/xlsx/dropEmptyRows.js +0 -37
  237. package/modules/xlsx/dropEmptyRows.js.map +0 -1
  238. package/modules/xlsx/dropEmptyRows.test.js.map +0 -1
  239. package/modules/xlsx/parseCellValue.js +0 -183
  240. package/modules/xlsx/parseCellValue.js.map +0 -1
  241. package/modules/xlsx/parseNumber.js +0 -14
  242. package/modules/xlsx/parseNumber.js.map +0 -1
  243. package/modules/xlsx/parseSharedString.js +0 -55
  244. package/modules/xlsx/parseSharedString.js.map +0 -1
  245. package/modules/xlsx/parseSheetData.js +0 -55
  246. package/modules/xlsx/parseSheetData.js.map +0 -1
  247. package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js +0 -23
  248. package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +0 -1
  249. package/modules/xml/parseXmlStream.saxen.code.js +0 -947
  250. package/modules/xml/parseXmlStream.saxen.code.js.map +0 -1
  251. package/modules/xml/parseXmlStream.test.js.map +0 -1
@@ -0,0 +1,16 @@
1
+ // This code was originally submitted by Etienne Prothon.
2
+ // https://gitlab.com/catamphetamine/read-excel-file/-/merge_requests/11
3
+
4
+ // The reason why the input is not a valid `.xlsx` file.
5
+ export type InvalidInputErrorCode =
6
+ 'XLS_FILE_NOT_SUPPORTED' |
7
+ 'FILE_NOT_SUPPORTED' |
8
+ 'INVALID_ZIP' |
9
+ 'NO_DATA';
10
+
11
+ // This error is thrown when the input is not a valid `.xlsx` file.
12
+ export class InvalidInputError extends Error {
13
+ constructor(code: InvalidInputErrorCode);
14
+ code: InvalidInputErrorCode;
15
+ name: 'InvalidInputError';
16
+ }
@@ -0,0 +1,4 @@
1
+ export class InvalidSpreadsheetError extends Error {
2
+ constructor(message: string);
3
+ name: 'InvalidSpreadsheetError';
4
+ }
@@ -0,0 +1,4 @@
1
+ export class SheetNotFoundError extends Error {
2
+ constructor(message: string);
3
+ name: 'SheetNotFoundError';
4
+ }
@@ -2,6 +2,9 @@ exports = module.exports = require('../commonjs/export/readXlsxFileUniversal.js'
2
2
  exports['default'] = require('../commonjs/export/readXlsxFileUniversal.js').default
3
3
 
4
4
  exports.readSheet = require('../commonjs/export/readSheetUniversal.js').default
5
+ exports.InvalidInputError = require('../commonjs/xlsx/file/InvalidInputError.js').default
6
+ exports.InvalidSpreadsheetError = require('../commonjs/xlsx/InvalidSpreadsheetError.js').default
7
+ exports.SheetNotFoundError = require('../commonjs/xlsx/SheetNotFoundError.js').default
5
8
 
6
9
  // `parseSheetData()`
7
10
  exports.parseSheetData = require('../commonjs/parseSheetData/parseSheetData.js').default
@@ -70,6 +70,22 @@ export type {
70
70
  Schema
71
71
  } from '../types/parseSheetData/parseSheetDataSchema.d.js'
72
72
 
73
+ export {
74
+ InvalidInputError
75
+ } from '../types/InvalidInputError.d.js'
76
+
77
+ export type {
78
+ InvalidInputErrorCode
79
+ } from '../types/InvalidInputError.d.js'
80
+
81
+ export {
82
+ InvalidSpreadsheetError
83
+ } from '../types/InvalidSpreadsheetError.d.js'
84
+
85
+ export {
86
+ SheetNotFoundError
87
+ } from '../types/SheetNotFoundError.d.js'
88
+
73
89
  export default function readXlsxFile<ParsedNumber = number>(
74
90
  input: Input,
75
91
  options?: Options<ParsedNumber>
@@ -1,5 +1,8 @@
1
1
  export { default as default } from '../modules/export/readXlsxFileUniversal.js'
2
2
  export { default as readSheet } from '../modules/export/readSheetUniversal.js'
3
+ export { default as InvalidInputError } from '../modules/xlsx/file/InvalidInputError.js'
4
+ export { default as InvalidSpreadsheetError } from '../modules/xlsx/InvalidSpreadsheetError.js'
5
+ export { default as SheetNotFoundError } from '../modules/xlsx/SheetNotFoundError.js'
3
6
 
4
7
  // `parseSheetData()`
5
8
  export { default as parseSheetData } from '../modules/parseSheetData/parseSheetData.js'
@@ -2,6 +2,9 @@ exports = module.exports = require('../commonjs/export/readXlsxFileWebWorker.js'
2
2
  exports['default'] = require('../commonjs/export/readXlsxFileWebWorker.js').default
3
3
 
4
4
  exports.readSheet = require('../commonjs/export/readSheetWebWorker.js').default
5
+ exports.InvalidInputError = require('../commonjs/xlsx/file/InvalidInputError.js').default
6
+ exports.InvalidSpreadsheetError = require('../commonjs/xlsx/InvalidSpreadsheetError.js').default
7
+ exports.SheetNotFoundError = require('../commonjs/xlsx/SheetNotFoundError.js').default
5
8
 
6
9
  // `parseSheetData()`
7
10
  exports.parseSheetData = require('../commonjs/parseSheetData/parseSheetData.js').default
@@ -70,6 +70,22 @@ export type {
70
70
  Schema
71
71
  } from '../types/parseSheetData/parseSheetDataSchema.d.js'
72
72
 
73
+ export {
74
+ InvalidInputError
75
+ } from '../types/InvalidInputError.d.js'
76
+
77
+ export type {
78
+ InvalidInputErrorCode
79
+ } from '../types/InvalidInputError.d.js'
80
+
81
+ export {
82
+ InvalidSpreadsheetError
83
+ } from '../types/InvalidSpreadsheetError.d.js'
84
+
85
+ export {
86
+ SheetNotFoundError
87
+ } from '../types/SheetNotFoundError.d.js'
88
+
73
89
  export default function readXlsxFile<ParsedNumber = number>(
74
90
  input: Input,
75
91
  options?: Options<ParsedNumber>
@@ -1,5 +1,8 @@
1
1
  export { default as default } from '../modules/export/readXlsxFileWebWorker.js'
2
2
  export { default as readSheet } from '../modules/export/readSheetWebWorker.js'
3
+ export { default as InvalidInputError } from '../modules/xlsx/file/InvalidInputError.js'
4
+ export { default as InvalidSpreadsheetError } from '../modules/xlsx/InvalidSpreadsheetError.js'
5
+ export { default as SheetNotFoundError } from '../modules/xlsx/SheetNotFoundError.js'
3
6
 
4
7
  // `parseSheetData()`
5
8
  export { default as parseSheetData } from '../modules/parseSheetData/parseSheetData.js'
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = convertValuesFromUint8ArraysToStrings;
7
- var _fflate = require("fflate");
8
- var _checkpoint = _interopRequireDefault(require("../utility/checkpoint.js"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
- /**
11
- * @param {Record<string,Uint8Array} entries
12
- * @returns {Record<string,string>}
13
- */
14
- function convertValuesFromUint8ArraysToStrings(entries) {
15
- (0, _checkpoint["default"])('convert files to strings');
16
- var convertedEntries = {};
17
- for (var _i = 0, _Object$keys = Object.keys(entries); _i < _Object$keys.length; _i++) {
18
- var key = _Object$keys[_i];
19
- convertedEntries[key] = (0, _fflate.strFromU8)(entries[key]);
20
- }
21
- return convertedEntries;
22
- }
23
- //# sourceMappingURL=convertValuesFromUint8ArraysToStrings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertValuesFromUint8ArraysToStrings.js","names":["_fflate","require","_checkpoint","_interopRequireDefault","obj","__esModule","convertValuesFromUint8ArraysToStrings","entries","checkpoint","convertedEntries","_i","_Object$keys","Object","keys","length","key","strFromU8"],"sources":["../../source/export/convertValuesFromUint8ArraysToStrings.js"],"sourcesContent":["import { strFromU8 } from 'fflate'\r\n\r\nimport checkpoint from '../utility/checkpoint.js'\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\tcheckpoint('convert files to strings')\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,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAiD,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAEjD;AACA;AACA;AACA;AACe,SAASE,qCAAqCA,CAACC,OAAO,EAAE;EACtE,IAAAC,sBAAU,EAAC,0BAA0B,CAAC;EACtC,IAAMC,gBAAgB,GAAG,CAAC,CAAC;EAC3B,SAAAC,EAAA,MAAAC,YAAA,GAAkBC,MAAM,CAACC,IAAI,CAACN,OAAO,CAAC,EAAAG,EAAA,GAAAC,YAAA,CAAAG,MAAA,EAAAJ,EAAA,IAAE;IAAnC,IAAMK,GAAG,GAAAJ,YAAA,CAAAD,EAAA;IACbD,gBAAgB,CAACM,GAAG,CAAC,GAAG,IAAAC,iBAAS,EAACT,OAAO,CAACQ,GAAG,CAAC,CAAC;EAChD;EACA,OAAON,gBAAgB;AACxB"}
@@ -1,84 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = convertCellsToData2dArray;
7
- var _dropEmptyRows = _interopRequireDefault(require("./dropEmptyRows.js"));
8
- var _dropEmptyColumns = _interopRequireDefault(require("./dropEmptyColumns.js"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
- function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
15
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
16
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
- function convertCellsToData2dArray(cells, dimensions) {
18
- // If the sheet is empty.
19
- if (cells.length === 0) {
20
- return [];
21
- }
22
- var _dimensions = _slicedToArray(dimensions, 2),
23
- leftTop = _dimensions[0],
24
- rightBottom = _dimensions[1];
25
-
26
- // Don't discard empty rows or columns at the start of the spreadsheet,
27
- // even when the `*.xlsx` file itself tells that the content starts at an offset.
28
- // https://github.com/catamphetamine/read-excel-file/issues/102
29
- // const colsCount = (rightBottom.column - leftTop.column) + 1
30
- // const rowsCount = (rightBottom.row - leftTop.row) + 1
31
-
32
- var colsCount = rightBottom.column;
33
- var rowsCount = rightBottom.row;
34
-
35
- // Initialize spreadsheet data structure.
36
- var data = new Array(rowsCount);
37
- var i = 0;
38
- while (i < rowsCount) {
39
- data[i] = new Array(colsCount);
40
- var j = 0;
41
- while (j < colsCount) {
42
- data[i][j] = null;
43
- j++;
44
- }
45
- i++;
46
- }
47
-
48
- // Fill in spreadsheet `data`.
49
- for (var _iterator = _createForOfIteratorHelperLoose(cells), _step; !(_step = _iterator()).done;) {
50
- var cell = _step.value;
51
- // Don't discard empty rows or columns at the start of the spreadsheet,
52
- // even when the `*.xlsx` file itself tells that the content starts at an offset.
53
- // https://github.com/catamphetamine/read-excel-file/issues/102
54
- // const rowIndex = cell.row - leftTop.row
55
- // const columnIndex = cell.column - leftTop.column
56
- var rowIndex = cell.row - 1;
57
- var columnIndex = cell.column - 1;
58
- // Ignore the data in the cell if it's outside of the spreadsheet's "dimensions".
59
- if (columnIndex < colsCount && rowIndex < rowsCount) {
60
- data[rowIndex][columnIndex] = cell.value;
61
- }
62
- }
63
-
64
- // // Fill in the row map, if the row map was passed.
65
- // if (options.rowIndexSourceMap) {
66
- // let i = 0
67
- // while (i < data.length) {
68
- // options.rowIndexSourceMap[i] = i
69
- // i++
70
- // }
71
- // }
72
-
73
- // Drop (discard) empty columns at the right side.
74
- // Drop (discard) empty rows at the bottom.
75
- data = (0, _dropEmptyRows["default"])((0, _dropEmptyColumns["default"])(data, {
76
- onlyTrimAtTheEnd: true
77
- }), {
78
- onlyTrimAtTheEnd: true
79
- } // { onlyTrimAtTheEnd: true, rowIndexSourceMap: options.rowIndexSourceMap }
80
- );
81
-
82
- return data;
83
- }
84
- //# sourceMappingURL=convertCellsToData2dArray.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertCellsToData2dArray.js","names":["_dropEmptyRows","_interopRequireDefault","require","_dropEmptyColumns","obj","__esModule","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","len","arr2","r","l","t","e","u","a","f","push","convertCellsToData2dArray","cells","dimensions","_dimensions","leftTop","rightBottom","colsCount","column","rowsCount","row","data","j","_iterator","_step","cell","rowIndex","columnIndex","dropEmptyRows","dropEmptyColumns","onlyTrimAtTheEnd"],"sources":["../../source/xlsx/convertCellsToData2dArray.js"],"sourcesContent":["import dropEmptyRows from './dropEmptyRows.js'\r\nimport dropEmptyColumns from './dropEmptyColumns.js'\r\n\r\nexport default function convertCellsToData2dArray(cells, dimensions) {\r\n // If the sheet is empty.\r\n if (cells.length === 0) {\r\n return []\r\n }\r\n\r\n const [leftTop, rightBottom] = dimensions\r\n\r\n // Don't discard empty rows or columns at the start of the spreadsheet,\r\n // even when the `*.xlsx` file itself tells that the content starts at an offset.\r\n // https://github.com/catamphetamine/read-excel-file/issues/102\r\n // const colsCount = (rightBottom.column - leftTop.column) + 1\r\n // const rowsCount = (rightBottom.row - leftTop.row) + 1\r\n\r\n const colsCount = rightBottom.column\r\n const rowsCount = rightBottom.row\r\n\r\n // Initialize spreadsheet data structure.\r\n let data = new Array(rowsCount)\r\n let i = 0\r\n while (i < rowsCount) {\r\n data[i] = new Array(colsCount)\r\n let j = 0\r\n while (j < colsCount) {\r\n data[i][j] = null\r\n j++\r\n }\r\n i++\r\n }\r\n\r\n // Fill in spreadsheet `data`.\r\n for (const cell of cells) {\r\n // Don't discard empty rows or columns at the start of the spreadsheet,\r\n // even when the `*.xlsx` file itself tells that the content starts at an offset.\r\n // https://github.com/catamphetamine/read-excel-file/issues/102\r\n // const rowIndex = cell.row - leftTop.row\r\n // const columnIndex = cell.column - leftTop.column\r\n const rowIndex = cell.row - 1\r\n const columnIndex = cell.column - 1\r\n // Ignore the data in the cell if it's outside of the spreadsheet's \"dimensions\".\r\n if (columnIndex < colsCount && rowIndex < rowsCount) {\r\n data[rowIndex][columnIndex] = cell.value\r\n }\r\n }\r\n\r\n // // Fill in the row map, if the row map was passed.\r\n // if (options.rowIndexSourceMap) {\r\n // let i = 0\r\n // while (i < data.length) {\r\n // options.rowIndexSourceMap[i] = i\r\n // i++\r\n // }\r\n // }\r\n\r\n // Drop (discard) empty columns at the right side.\r\n // Drop (discard) empty rows at the bottom.\r\n data = dropEmptyRows(\r\n dropEmptyColumns(data, { onlyTrimAtTheEnd: true }),\r\n { onlyTrimAtTheEnd: true } // { onlyTrimAtTheEnd: true, rowIndexSourceMap: options.rowIndexSourceMap }\r\n )\r\n\r\n return data\r\n}"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAoD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAAA,SAAAE,gCAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,oBAAAE,EAAA,UAAAA,EAAA,GAAAA,EAAA,CAAAG,IAAA,CAAAL,CAAA,GAAAM,IAAA,CAAAC,IAAA,CAAAL,EAAA,OAAAM,KAAA,CAAAC,OAAA,CAAAT,CAAA,MAAAE,EAAA,GAAAQ,2BAAA,CAAAV,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAW,MAAA,qBAAAT,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAU,CAAA,+BAAAA,CAAA,IAAAZ,CAAA,CAAAW,MAAA,WAAAE,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAd,CAAA,CAAAY,CAAA,sBAAAG,SAAA;AAAA,SAAAC,eAAAC,GAAA,EAAAL,CAAA,WAAAM,eAAA,CAAAD,GAAA,KAAAE,qBAAA,CAAAF,GAAA,EAAAL,CAAA,KAAAF,2BAAA,CAAAO,GAAA,EAAAL,CAAA,KAAAQ,gBAAA;AAAA,SAAAA,iBAAA,cAAAL,SAAA;AAAA,SAAAL,4BAAAV,CAAA,EAAAqB,MAAA,SAAArB,CAAA,qBAAAA,CAAA,sBAAAsB,iBAAA,CAAAtB,CAAA,EAAAqB,MAAA,OAAAE,CAAA,GAAAC,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAArB,IAAA,CAAAL,CAAA,EAAA2B,KAAA,aAAAJ,CAAA,iBAAAvB,CAAA,CAAA4B,WAAA,EAAAL,CAAA,GAAAvB,CAAA,CAAA4B,WAAA,CAAAC,IAAA,MAAAN,CAAA,cAAAA,CAAA,mBAAAf,KAAA,CAAAsB,IAAA,CAAA9B,CAAA,OAAAuB,CAAA,+DAAAQ,IAAA,CAAAR,CAAA,UAAAD,iBAAA,CAAAtB,CAAA,EAAAqB,MAAA;AAAA,SAAAC,kBAAAL,GAAA,EAAAe,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAf,GAAA,CAAAN,MAAA,EAAAqB,GAAA,GAAAf,GAAA,CAAAN,MAAA,WAAAC,CAAA,MAAAqB,IAAA,OAAAzB,KAAA,CAAAwB,GAAA,GAAApB,CAAA,GAAAoB,GAAA,EAAApB,CAAA,IAAAqB,IAAA,CAAArB,CAAA,IAAAK,GAAA,CAAAL,CAAA,UAAAqB,IAAA;AAAA,SAAAd,sBAAAe,CAAA,EAAAC,CAAA,QAAAC,CAAA,WAAAF,CAAA,gCAAA/B,MAAA,IAAA+B,CAAA,CAAA/B,MAAA,CAAAC,QAAA,KAAA8B,CAAA,4BAAAE,CAAA,QAAAC,CAAA,EAAAd,CAAA,EAAAX,CAAA,EAAA0B,CAAA,EAAAC,CAAA,OAAAC,CAAA,OAAAxC,CAAA,iBAAAY,CAAA,IAAAwB,CAAA,GAAAA,CAAA,CAAA/B,IAAA,CAAA6B,CAAA,GAAA5B,IAAA,QAAA6B,CAAA,QAAAX,MAAA,CAAAY,CAAA,MAAAA,CAAA,UAAAI,CAAA,uBAAAA,CAAA,IAAAH,CAAA,GAAAzB,CAAA,CAAAP,IAAA,CAAA+B,CAAA,GAAAvB,IAAA,MAAA0B,CAAA,CAAAE,IAAA,CAAAJ,CAAA,CAAAvB,KAAA,GAAAyB,CAAA,CAAA5B,MAAA,KAAAwB,CAAA,GAAAK,CAAA,iBAAAN,CAAA,IAAAlC,CAAA,OAAAuB,CAAA,GAAAW,CAAA,yBAAAM,CAAA,YAAAJ,CAAA,eAAAE,CAAA,GAAAF,CAAA,cAAAZ,MAAA,CAAAc,CAAA,MAAAA,CAAA,2BAAAtC,CAAA,QAAAuB,CAAA,aAAAgB,CAAA;AAAA,SAAArB,gBAAAD,GAAA,QAAAT,KAAA,CAAAC,OAAA,CAAAQ,GAAA,UAAAA,GAAA;AAErC,SAASyB,yBAAyBA,CAACC,KAAK,EAAEC,UAAU,EAAE;EACnE;EACA,IAAID,KAAK,CAAChC,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,EAAE;EACX;EAEA,IAAAkC,WAAA,GAAA7B,cAAA,CAA+B4B,UAAU;IAAlCE,OAAO,GAAAD,WAAA;IAAEE,WAAW,GAAAF,WAAA;;EAE3B;EACA;EACA;EACA;EACA;;EAEA,IAAMG,SAAS,GAAGD,WAAW,CAACE,MAAM;EACpC,IAAMC,SAAS,GAAGH,WAAW,CAACI,GAAG;;EAEjC;EACA,IAAIC,IAAI,GAAG,IAAI5C,KAAK,CAAC0C,SAAS,CAAC;EAC/B,IAAItC,CAAC,GAAG,CAAC;EACT,OAAOA,CAAC,GAAGsC,SAAS,EAAE;IACpBE,IAAI,CAACxC,CAAC,CAAC,GAAG,IAAIJ,KAAK,CAACwC,SAAS,CAAC;IAC9B,IAAIK,CAAC,GAAG,CAAC;IACT,OAAOA,CAAC,GAAGL,SAAS,EAAE;MACpBI,IAAI,CAACxC,CAAC,CAAC,CAACyC,CAAC,CAAC,GAAG,IAAI;MACjBA,CAAC,EAAE;IACL;IACAzC,CAAC,EAAE;EACL;;EAEA;EACA,SAAA0C,SAAA,GAAAvD,+BAAA,CAAmB4C,KAAK,GAAAY,KAAA,IAAAA,KAAA,GAAAD,SAAA,IAAAzC,IAAA,GAAE;IAAA,IAAf2C,IAAI,GAAAD,KAAA,CAAAzC,KAAA;IACb;IACA;IACA;IACA;IACA;IACA,IAAM2C,QAAQ,GAAGD,IAAI,CAACL,GAAG,GAAG,CAAC;IAC7B,IAAMO,WAAW,GAAGF,IAAI,CAACP,MAAM,GAAG,CAAC;IACnC;IACA,IAAIS,WAAW,GAAGV,SAAS,IAAIS,QAAQ,GAAGP,SAAS,EAAE;MACnDE,IAAI,CAACK,QAAQ,CAAC,CAACC,WAAW,CAAC,GAAGF,IAAI,CAAC1C,KAAK;IAC1C;EACF;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACAsC,IAAI,GAAG,IAAAO,yBAAa,EAClB,IAAAC,4BAAgB,EAACR,IAAI,EAAE;IAAES,gBAAgB,EAAE;EAAK,CAAC,CAAC,EAClD;IAAEA,gBAAgB,EAAE;EAAK,CAAC,CAAC;EAC7B,CAAC;;EAED,OAAOT,IAAI;AACb"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = dropEmptyColumns;
7
- function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
10
- function dropEmptyColumns(data) {
11
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
12
- _ref$accessor = _ref.accessor,
13
- accessor = _ref$accessor === void 0 ? function (_) {
14
- return _;
15
- } : _ref$accessor,
16
- onlyTrimAtTheEnd = _ref.onlyTrimAtTheEnd;
17
- var i = data[0].length - 1;
18
- while (i >= 0) {
19
- var empty = true;
20
- for (var _iterator = _createForOfIteratorHelperLoose(data), _step; !(_step = _iterator()).done;) {
21
- var row = _step.value;
22
- if (accessor(row[i]) !== null) {
23
- empty = false;
24
- break;
25
- }
26
- }
27
- if (empty) {
28
- var j = 0;
29
- while (j < data.length) {
30
- data[j].splice(i, 1);
31
- j++;
32
- }
33
- } else if (onlyTrimAtTheEnd) {
34
- break;
35
- }
36
- i--;
37
- }
38
- return data;
39
- }
40
- //# sourceMappingURL=dropEmptyColumns.js.map
@@ -1 +0,0 @@
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":";;;;;;;;;AAAe,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 +0,0 @@
1
- {"version":3,"file":"dropEmptyColumns.test.js","names":["_mocha","require","_chai","_dropEmptyColumns","_interopRequireDefault","obj","__esModule","describe","it","expect","dropEmptyColumns","onlyTrimAtTheEnd","to","deep","equal"],"sources":["../../source/xlsx/dropEmptyColumns.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport dropEmptyColumns from './dropEmptyColumns.js'\r\n\r\ndescribe('dropEmptyColumns', () => {\r\n\tit('should drop empty columns (only at the end)', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyColumns([\r\n\t\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t\t[null, null, null, null, null, null],\r\n\t\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t\t], {\r\n\t\t\t\tonlyTrimAtTheEnd: true\r\n\t\t\t})\r\n\t\t).to.deep.equal([\r\n\t\t\t[null, 'A', 'B', 'C', null],\r\n\t\t\t[null, 'D', null, null, null],\r\n\t\t\t[null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty columns', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyColumns([\r\n\t\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t\t[null, null, null, null, null, null],\r\n\t\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t\t])\r\n\t\t).to.deep.equal([\r\n\t\t\t['A', 'B', 'C', null],\r\n\t\t\t['D', null, null, null],\r\n\t\t\t[null, null, null, null],\r\n\t\t\t[null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n})"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoD,SAAAG,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAEpD,IAAAE,eAAQ,EAAC,kBAAkB,EAAE,YAAM;EAClC,IAAAC,SAAE,EAAC,6CAA6C,EAAE,YAAM;IACvD,IAAAC,YAAM,EACL,IAAAC,4BAAgB,EAAC,CAChB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACnC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACpC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CACjC,EAAE;MACFC,gBAAgB,EAAE;IACnB,CAAC,CACF,CAAC,CAACC,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAC3B,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC7B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC9B,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC3B,CAAC;EACH,CAAC,CAAC;EAEF,IAAAN,SAAE,EAAC,2BAA2B,EAAE,YAAM;IACrC,IAAAC,YAAM,EACL,IAAAC,4BAAgB,EAAC,CAChB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACnC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACpC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CACjC,CACF,CAAC,CAACE,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EACrB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACvB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACxB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACrB,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC"}
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = dropEmptyRows;
7
- function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
10
- function dropEmptyRows(data) {
11
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
12
- rowIndexSourceMap = _ref.rowIndexSourceMap,
13
- _ref$accessor = _ref.accessor,
14
- accessor = _ref$accessor === void 0 ? function (_) {
15
- return _;
16
- } : _ref$accessor,
17
- onlyTrimAtTheEnd = _ref.onlyTrimAtTheEnd;
18
- // Drop empty rows.
19
- var i = data.length - 1;
20
- while (i >= 0) {
21
- // Check if the row is empty.
22
- var empty = true;
23
- for (var _iterator = _createForOfIteratorHelperLoose(data[i]), _step; !(_step = _iterator()).done;) {
24
- var cell = _step.value;
25
- if (accessor(cell) !== null) {
26
- empty = false;
27
- break;
28
- }
29
- }
30
- // Remove the empty row.
31
- if (empty) {
32
- data.splice(i, 1);
33
- if (rowIndexSourceMap) {
34
- rowIndexSourceMap.splice(i, 1);
35
- }
36
- } else if (onlyTrimAtTheEnd) {
37
- break;
38
- }
39
- i--;
40
- }
41
- return data;
42
- }
43
- //# sourceMappingURL=dropEmptyRows.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropEmptyRows.js","names":["dropEmptyRows","data","_ref","arguments","length","undefined","rowIndexSourceMap","_ref$accessor","accessor","_","onlyTrimAtTheEnd","i","empty","_iterator","_createForOfIteratorHelperLoose","_step","done","cell","value","splice"],"sources":["../../source/xlsx/dropEmptyRows.js"],"sourcesContent":["export default function dropEmptyRows(data, {\r\n rowIndexSourceMap,\r\n accessor = _ => _,\r\n onlyTrimAtTheEnd\r\n} = {}) {\r\n // Drop empty rows.\r\n let i = data.length - 1\r\n while (i >= 0) {\r\n // Check if the row is empty.\r\n let empty = true\r\n for (const cell of data[i]) {\r\n if (accessor(cell) !== null) {\r\n empty = false\r\n break\r\n }\r\n }\r\n // Remove the empty row.\r\n if (empty) {\r\n data.splice(i, 1)\r\n if (rowIndexSourceMap) {\r\n rowIndexSourceMap.splice(i, 1)\r\n }\r\n } else if (onlyTrimAtTheEnd) {\r\n break\r\n }\r\n i--\r\n }\r\n return data\r\n}"],"mappings":";;;;;;;;;AAAe,SAASA,aAAaA,CAACC,IAAI,EAIlC;EAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAHJG,iBAAiB,GAAAJ,IAAA,CAAjBI,iBAAiB;IAAAC,aAAA,GAAAL,IAAA,CACjBM,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,UAAAE,CAAC;MAAA,OAAIA,CAAC;IAAA,IAAAF,aAAA;IACjBG,gBAAgB,GAAAR,IAAA,CAAhBQ,gBAAgB;EAEhB;EACA,IAAIC,CAAC,GAAGV,IAAI,CAACG,MAAM,GAAG,CAAC;EACvB,OAAOO,CAAC,IAAI,CAAC,EAAE;IACb;IACA,IAAIC,KAAK,GAAG,IAAI;IAChB,SAAAC,SAAA,GAAAC,+BAAA,CAAmBb,IAAI,CAACU,CAAC,CAAC,GAAAI,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;MAAA,IAAjBC,IAAI,GAAAF,KAAA,CAAAG,KAAA;MACb,IAAIV,QAAQ,CAACS,IAAI,CAAC,KAAK,IAAI,EAAE;QAC3BL,KAAK,GAAG,KAAK;QACb;MACF;IACF;IACA;IACA,IAAIA,KAAK,EAAE;MACTX,IAAI,CAACkB,MAAM,CAACR,CAAC,EAAE,CAAC,CAAC;MACjB,IAAIL,iBAAiB,EAAE;QACrBA,iBAAiB,CAACa,MAAM,CAACR,CAAC,EAAE,CAAC,CAAC;MAChC;IACF,CAAC,MAAM,IAAID,gBAAgB,EAAE;MAC3B;IACF;IACAC,CAAC,EAAE;EACL;EACA,OAAOV,IAAI;AACb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropEmptyRows.test.js","names":["_mocha","require","_chai","_dropEmptyRows","_interopRequireDefault","obj","__esModule","describe","it","expect","dropEmptyRows","onlyTrimAtTheEnd","to","deep","equal","rowIndexSourceMap"],"sources":["../../source/xlsx/dropEmptyRows.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport dropEmptyRows from './dropEmptyRows.js'\r\n\r\ndescribe('dropEmptyRows', () => {\r\n\tit('should drop empty rows (only at the end)', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G'],\r\n\t\t\t\t[null, null, null]\r\n\t\t\t], {\r\n\t\t\t\tonlyTrimAtTheEnd: true\r\n\t\t\t})\r\n\t\t).to.deep.equal([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty rows', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G'],\r\n\t\t\t\t[null, null, null]\r\n\t\t\t])\r\n\t\t).to.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should generate row map when dropping empty rows', () => {\r\n\t\tconst rowIndexSourceMap = [0, 1, 2, 3, 4]\r\n\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G']\r\n\t\t\t],\r\n\t\t\t{ rowIndexSourceMap }\r\n\t\t)).to.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\r\n\t\texpect(rowIndexSourceMap).to.deep.equal([1, 2, 4])\r\n\t})\r\n})"],"mappings":"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"}
@@ -1,189 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = parseCellValue;
7
- var _parseExcelDate = _interopRequireDefault(require("./parseExcelDate.js"));
8
- var _parseNumber = _interopRequireDefault(require("./parseNumber.js"));
9
- var _isDateFormatStyle = _interopRequireDefault(require("./isDateFormatStyle.js"));
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
- // Parses a string `value` of a cell.
12
- function parseCellValue(value, type, _ref) {
13
- var inlineString = _ref.inlineString,
14
- styleId = _ref.styleId,
15
- styles = _ref.styles,
16
- sharedStrings = _ref.sharedStrings,
17
- epoch1904 = _ref.epoch1904,
18
- options = _ref.options;
19
- if (!type) {
20
- // Default cell type is "n" (numeric).
21
- // http://www.datypic.com/sc/ooxml/t-ssml_CT_Cell.html
22
- type = 'n';
23
- }
24
-
25
- // Available Excel cell types:
26
- // https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md
27
- //
28
- // Some other document (seems to be old):
29
- // http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/ST_CellType.html
30
- //
31
- switch (type) {
32
- // XLSX tends to store all strings as "shared" (indexed) ones
33
- // using "s" cell type (for saving on strage space).
34
- // "str" cell type is then generally only used for storing
35
- // formula-pre-calculated cell values.
36
- case 'str':
37
- if (value === undefined) {
38
- break;
39
- }
40
- value = parseString(value, options);
41
- break;
42
-
43
- // Sometimes, XLSX stores strings as "inline" strings rather than "shared" (indexed) ones.
44
- // Perhaps the specification doesn't force it to use one or another.
45
- // Example: `<sheetData><row r="1"><c r="A1" s="1" t="inlineStr"><is><t>Test 123</t></is></c></row></sheetData>`.
46
- case 'inlineStr':
47
- value = inlineString;
48
- if (value === undefined) {
49
- throw new Error('Couldn\'t read "inline string" cell value');
50
- }
51
- value = parseString(value, options);
52
- break;
53
-
54
- // XLSX tends to store string values as "shared" (indexed) ones.
55
- // "Shared" strings is a way for an Excel editor to reduce
56
- // the file size by storing "commonly used" strings in a dictionary
57
- // and then referring to such strings by their index in that dictionary.
58
- // Example: `<sheetData><row r="1"><c r="A1" s="1" t="s"><v>0</v></c></row></sheetData>`.
59
- case 's':
60
- // If a cell has no value then there's no `<c/>` element for it.
61
- // If a `<c/>` element exists then it's not empty.
62
- // The `<v/>`alue is a key in the "shared strings" dictionary of the
63
- // XLSX file, so look it up in the `sharedStrings` dictionary by the numeric key.
64
- var sharedStringIndex = Number(value);
65
- if (isNaN(sharedStringIndex)) {
66
- throw new Error("Invalid \"shared\" string index: ".concat(value));
67
- }
68
- if (sharedStringIndex >= sharedStrings.length) {
69
- throw new Error("An out-of-bounds \"shared\" string index: ".concat(value));
70
- }
71
- value = sharedStrings[sharedStringIndex];
72
- value = parseString(value, options);
73
- break;
74
-
75
- // Boolean (TRUE/FALSE) values are stored as either "1" or "0"
76
- // in cells of type "b".
77
- case 'b':
78
- if (value === '1') {
79
- value = true;
80
- } else if (value === '0') {
81
- value = false;
82
- } else {
83
- throw new Error("Unsupported \"boolean\" cell value: ".concat(value));
84
- }
85
- break;
86
-
87
- // XLSX specification seems to support cells of type "z":
88
- // blank "stub" cells that should be ignored by data processing utilities.
89
- case 'z':
90
- value = undefined;
91
- break;
92
-
93
- // XLSX specification also defines cells of type "e" containing a numeric "error" code.
94
- // It's not clear what that means though.
95
- // They also wrote: "and `w` property stores its common name".
96
- // It's unclear what they meant by that.
97
- case 'e':
98
- value = decodeError(value);
99
- break;
100
-
101
- // XLSX supports date cells of type "d", though seems like it (almost?) never
102
- // uses it for storing dates, preferring "n" numeric timestamp cells instead.
103
- // The value of a "d" cell is supposedly a string in "ISO 8601" format.
104
- // I haven't seen an XLSX file having such cells.
105
- // Example: `<sheetData><row r="1"><c r="A1" s="1" t="d"><v>2021-06-10T00:47:45.700Z</v></c></row></sheetData>`.
106
- case 'd':
107
- if (value === undefined) {
108
- break;
109
- }
110
- var parsedDate = new Date(value);
111
- if (isNaN(parsedDate.valueOf())) {
112
- throw new Error("Unsupported \"date\" cell value: ".concat(value));
113
- }
114
- value = parsedDate;
115
- break;
116
-
117
- // Numeric cells have type "n".
118
- case 'n':
119
- if (value === undefined) {
120
- break;
121
- }
122
- // XLSX does have "d" type for dates, but it's not commonly used.
123
- // Instead, it prefers using "n" type for storing dates as timestamps.
124
- if (styleId && (0, _isDateFormatStyle["default"])(styleId, styles, options)) {
125
- // Parse the number from string.
126
- value = (0, _parseNumber["default"])(value);
127
- // Parse the number as a date timestamp.
128
- value = (0, _parseExcelDate["default"])(value, {
129
- epoch1904: epoch1904
130
- });
131
- } else {
132
- // Parse the number from string.
133
- // Supports custom parsing function to work around javascript number encoding precision issues.
134
- // https://gitlab.com/catamphetamine/read-excel-file/-/issues/85
135
- value = (options.parseNumber || _parseNumber["default"])(value);
136
- }
137
- break;
138
- default:
139
- throw new TypeError("Cell type not supported: ".concat(type));
140
- }
141
-
142
- // Convert empty values to `null`.
143
- if (value === undefined) {
144
- value = null;
145
- }
146
- return value;
147
- }
148
-
149
- // Decodes numeric error code to a string code.
150
- // https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md
151
- function decodeError(errorCode) {
152
- // While the error values are determined by the application,
153
- // the following are some example error values that could be used:
154
- switch (errorCode) {
155
- case 0x00:
156
- return '#NULL!';
157
- case 0x07:
158
- return '#DIV/0!';
159
- case 0x0F:
160
- return '#VALUE!';
161
- case 0x17:
162
- return '#REF!';
163
- case 0x1D:
164
- return '#NAME?';
165
- case 0x24:
166
- return '#NUM!';
167
- case 0x2A:
168
- return '#N/A';
169
- case 0x2B:
170
- return '#GETTING_DATA';
171
- default:
172
- // Such error code doesn't exist. I made it up.
173
- return "#ERROR_".concat(errorCode);
174
- }
175
- }
176
- function parseString(value, options) {
177
- // In some weird cases, a developer might want to disable
178
- // the automatic trimming of all strings.
179
- // For example, leading spaces might express a tree-like hierarchy.
180
- // https://github.com/catamphetamine/read-excel-file/pull/106#issuecomment-1136062917
181
- if (options.trim !== false) {
182
- value = value.trim();
183
- }
184
- if (value === '') {
185
- value = undefined;
186
- }
187
- return value;
188
- }
189
- //# sourceMappingURL=parseCellValue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseCellValue.js","names":["_parseExcelDate","_interopRequireDefault","require","_parseNumber","_isDateFormatStyle","obj","__esModule","parseCellValue","value","type","_ref","inlineString","styleId","styles","sharedStrings","epoch1904","options","undefined","parseString","Error","sharedStringIndex","Number","isNaN","concat","length","decodeError","parsedDate","Date","valueOf","isDateFormatStyle","parseNumber","parseExcelDate","TypeError","errorCode","trim"],"sources":["../../source/xlsx/parseCellValue.js"],"sourcesContent":["import parseExcelDate from './parseExcelDate.js'\r\nimport parseNumber from './parseNumber.js'\r\nimport isDateFormatStyle from './isDateFormatStyle.js'\r\n\r\n// Parses a string `value` of a cell.\r\nexport default function parseCellValue(value, type, {\r\n inlineString,\r\n styleId,\r\n styles,\r\n sharedStrings,\r\n epoch1904,\r\n options\r\n}) {\r\n if (!type) {\r\n // Default cell type is \"n\" (numeric).\r\n // http://www.datypic.com/sc/ooxml/t-ssml_CT_Cell.html\r\n type = 'n'\r\n }\r\n\r\n // Available Excel cell types:\r\n // https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md\r\n //\r\n // Some other document (seems to be old):\r\n // http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/ST_CellType.html\r\n //\r\n switch (type) {\r\n // XLSX tends to store all strings as \"shared\" (indexed) ones\r\n // using \"s\" cell type (for saving on strage space).\r\n // \"str\" cell type is then generally only used for storing\r\n // formula-pre-calculated cell values.\r\n case 'str':\r\n if (value === undefined) {\r\n break\r\n }\r\n value = parseString(value, options)\r\n break\r\n\r\n // Sometimes, XLSX stores strings as \"inline\" strings rather than \"shared\" (indexed) ones.\r\n // Perhaps the specification doesn't force it to use one or another.\r\n // Example: `<sheetData><row r=\"1\"><c r=\"A1\" s=\"1\" t=\"inlineStr\"><is><t>Test 123</t></is></c></row></sheetData>`.\r\n case 'inlineStr':\r\n value = inlineString\r\n if (value === undefined) {\r\n throw new Error('Couldn\\'t read \"inline string\" cell value')\r\n }\r\n value = parseString(value, options)\r\n break\r\n\r\n // XLSX tends to store string values as \"shared\" (indexed) ones.\r\n // \"Shared\" strings is a way for an Excel editor to reduce\r\n // the file size by storing \"commonly used\" strings in a dictionary\r\n // and then referring to such strings by their index in that dictionary.\r\n // Example: `<sheetData><row r=\"1\"><c r=\"A1\" s=\"1\" t=\"s\"><v>0</v></c></row></sheetData>`.\r\n case 's':\r\n // If a cell has no value then there's no `<c/>` element for it.\r\n // If a `<c/>` element exists then it's not empty.\r\n // The `<v/>`alue is a key in the \"shared strings\" dictionary of the\r\n // XLSX file, so look it up in the `sharedStrings` dictionary by the numeric key.\r\n const sharedStringIndex = Number(value)\r\n if (isNaN(sharedStringIndex)) {\r\n throw new Error(`Invalid \"shared\" string index: ${value}`)\r\n }\r\n if (sharedStringIndex >= sharedStrings.length) {\r\n throw new Error(`An out-of-bounds \"shared\" string index: ${value}`)\r\n }\r\n value = sharedStrings[sharedStringIndex]\r\n value = parseString(value, options)\r\n break\r\n\r\n // Boolean (TRUE/FALSE) values are stored as either \"1\" or \"0\"\r\n // in cells of type \"b\".\r\n case 'b':\r\n if (value === '1') {\r\n value = true\r\n } else if (value === '0') {\r\n value = false\r\n } else {\r\n throw new Error(`Unsupported \"boolean\" cell value: ${value}`)\r\n }\r\n break\r\n\r\n // XLSX specification seems to support cells of type \"z\":\r\n // blank \"stub\" cells that should be ignored by data processing utilities.\r\n case 'z':\r\n value = undefined\r\n break\r\n\r\n // XLSX specification also defines cells of type \"e\" containing a numeric \"error\" code.\r\n // It's not clear what that means though.\r\n // They also wrote: \"and `w` property stores its common name\".\r\n // It's unclear what they meant by that.\r\n case 'e':\r\n value = decodeError(value)\r\n break\r\n\r\n // XLSX supports date cells of type \"d\", though seems like it (almost?) never\r\n // uses it for storing dates, preferring \"n\" numeric timestamp cells instead.\r\n // The value of a \"d\" cell is supposedly a string in \"ISO 8601\" format.\r\n // I haven't seen an XLSX file having such cells.\r\n // Example: `<sheetData><row r=\"1\"><c r=\"A1\" s=\"1\" t=\"d\"><v>2021-06-10T00:47:45.700Z</v></c></row></sheetData>`.\r\n case 'd':\r\n if (value === undefined) {\r\n break\r\n }\r\n const parsedDate = new Date(value)\r\n if (isNaN(parsedDate.valueOf())) {\r\n throw new Error(`Unsupported \"date\" cell value: ${value}`)\r\n }\r\n value = parsedDate\r\n break\r\n\r\n // Numeric cells have type \"n\".\r\n case 'n':\r\n if (value === undefined) {\r\n break\r\n }\r\n // XLSX does have \"d\" type for dates, but it's not commonly used.\r\n // Instead, it prefers using \"n\" type for storing dates as timestamps.\r\n if (styleId && isDateFormatStyle(styleId, styles, options)) {\r\n // Parse the number from string.\r\n value = parseNumber(value)\r\n // Parse the number as a date timestamp.\r\n value = parseExcelDate(value, { epoch1904 })\r\n } else {\r\n // Parse the number from string.\r\n // Supports custom parsing function to work around javascript number encoding precision issues.\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/85\r\n value = (options.parseNumber || parseNumber)(value)\r\n }\r\n break\r\n\r\n default:\r\n throw new TypeError(`Cell type not supported: ${type}`)\r\n }\r\n\r\n // Convert empty values to `null`.\r\n if (value === undefined) {\r\n value = null\r\n }\r\n\r\n return value\r\n}\r\n\r\n// Decodes numeric error code to a string code.\r\n// https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md\r\nfunction decodeError(errorCode) {\r\n // While the error values are determined by the application,\r\n // the following are some example error values that could be used:\r\n switch (errorCode) {\r\n case 0x00:\r\n return '#NULL!'\r\n case 0x07:\r\n return '#DIV/0!'\r\n case 0x0F:\r\n return '#VALUE!'\r\n case 0x17:\r\n return '#REF!'\r\n case 0x1D:\r\n return '#NAME?'\r\n case 0x24:\r\n return '#NUM!'\r\n case 0x2A:\r\n return '#N/A'\r\n case 0x2B:\r\n return '#GETTING_DATA'\r\n default:\r\n // Such error code doesn't exist. I made it up.\r\n return `#ERROR_${errorCode}`\r\n }\r\n}\r\n\r\nfunction parseString(value, options) {\r\n // In some weird cases, a developer might want to disable\r\n // the automatic trimming of all strings.\r\n // For example, leading spaces might express a tree-like hierarchy.\r\n // https://github.com/catamphetamine/read-excel-file/pull/106#issuecomment-1136062917\r\n if (options.trim !== false) {\r\n value = value.trim()\r\n }\r\n if (value === '') {\r\n value = undefined\r\n }\r\n return value\r\n}"],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = parseNumber;
7
- // Parses a number from string.
8
- // Throws an error if the number couldn't be parsed.
9
- // When parsing floating-point number, is affected by
10
- // the javascript number encoding precision issues:
11
- // https://www.youtube.com/watch?v=2gIxbTn7GSc
12
- // https://www.avioconsulting.com/blog/overcoming-javascript-numeric-precision-issues
13
- function parseNumber(stringifiedNumber) {
14
- var parsedNumber = Number(stringifiedNumber);
15
- if (isNaN(parsedNumber)) {
16
- throw new Error("Couldn't parse number: ".concat(stringifiedNumber));
17
- }
18
- return parsedNumber;
19
- }
20
- //# sourceMappingURL=parseNumber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseNumber.js","names":["parseNumber","stringifiedNumber","parsedNumber","Number","isNaN","Error","concat"],"sources":["../../source/xlsx/parseNumber.js"],"sourcesContent":["// Parses a number from string.\r\n// Throws an error if the number couldn't be parsed.\r\n// When parsing floating-point number, is affected by\r\n// the javascript number encoding precision issues:\r\n// https://www.youtube.com/watch?v=2gIxbTn7GSc\r\n// https://www.avioconsulting.com/blog/overcoming-javascript-numeric-precision-issues\r\nexport default function parseNumber(stringifiedNumber) {\r\n const parsedNumber = Number(stringifiedNumber)\r\n if (isNaN(parsedNumber)) {\r\n throw new Error(`Couldn't parse number: ${stringifiedNumber}`)\r\n }\r\n return parsedNumber\r\n}"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,WAAWA,CAACC,iBAAiB,EAAE;EACrD,IAAMC,YAAY,GAAGC,MAAM,CAACF,iBAAiB,CAAC;EAC9C,IAAIG,KAAK,CAACF,YAAY,CAAC,EAAE;IACvB,MAAM,IAAIG,KAAK,2BAAAC,MAAA,CAA2BL,iBAAiB,CAAE,CAAC;EAChE;EACA,OAAOC,YAAY;AACrB"}