read-excel-file 6.0.3 → 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 (206) 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/zip/unzipFromArrayBuffer.js +74 -0
  64. package/commonjs/zip/unzipFromArrayBuffer.js.map +1 -0
  65. package/commonjs/zip/unzipFromArrayBufferSync.js +33 -0
  66. package/commonjs/zip/unzipFromArrayBufferSync.js.map +1 -0
  67. package/commonjs/zip/unzipFromStream.js +123 -0
  68. package/commonjs/zip/unzipFromStream.js.map +1 -0
  69. package/modules/export/convertInputToNodeStream.js +36 -0
  70. package/modules/export/convertInputToNodeStream.js.map +1 -0
  71. package/modules/export/convertValuesFromUint8ArraysToStrings.js +15 -0
  72. package/modules/export/convertValuesFromUint8ArraysToStrings.js.map +1 -0
  73. package/modules/export/filterZipArchiveEntry.js +12 -0
  74. package/modules/export/filterZipArchiveEntry.js.map +1 -0
  75. package/modules/{read → export}/readSheetNamesBrowser.js +4 -4
  76. package/modules/export/readSheetNamesBrowser.js.map +1 -0
  77. package/modules/export/readSheetNamesNode.js.map +1 -0
  78. package/modules/export/readSheetNamesUniversal.js +17 -0
  79. package/modules/export/readSheetNamesUniversal.js.map +1 -0
  80. package/modules/{read → export}/readSheetNamesWebWorker.js +2 -2
  81. package/modules/export/readSheetNamesWebWorker.js.map +1 -0
  82. package/modules/{read → export}/readXlsxFileBrowser.js +6 -6
  83. package/modules/export/readXlsxFileBrowser.js.map +1 -0
  84. package/modules/{read → export}/readXlsxFileNode.js +5 -5
  85. package/modules/export/readXlsxFileNode.js.map +1 -0
  86. package/modules/export/readXlsxFileUniversal.js +18 -0
  87. package/modules/export/readXlsxFileUniversal.js.map +1 -0
  88. package/modules/{read → export}/readXlsxFileWebWorker.js +5 -5
  89. package/modules/export/readXlsxFileWebWorker.js.map +1 -0
  90. package/modules/export/unpackXlsxFileBrowser.js +30 -0
  91. package/modules/export/unpackXlsxFileBrowser.js.map +1 -0
  92. package/modules/export/unpackXlsxFileNode.js +17 -0
  93. package/modules/export/unpackXlsxFileNode.js.map +1 -0
  94. package/modules/export/unpackXlsxFileUniversal.js +17 -0
  95. package/modules/export/unpackXlsxFileUniversal.js.map +1 -0
  96. package/modules/types/Date.js +1 -1
  97. package/modules/types/Date.js.map +1 -1
  98. package/modules/{read → xlsx}/coordinates.js.map +1 -1
  99. package/modules/{read → xlsx}/dropEmptyColumns.js.map +1 -1
  100. package/modules/{read → xlsx}/dropEmptyColumns.test.js.map +1 -1
  101. package/modules/{read → xlsx}/dropEmptyRows.js.map +1 -1
  102. package/modules/{read → xlsx}/dropEmptyRows.test.js.map +1 -1
  103. package/modules/{read → xlsx}/getData.js.map +1 -1
  104. package/modules/{read → xlsx}/isDateTimestamp.js.map +1 -1
  105. package/modules/{read → xlsx}/parseCell.js.map +1 -1
  106. package/modules/{read → xlsx}/parseCellValue.js.map +1 -1
  107. package/modules/{read → xlsx}/parseCells.js.map +1 -1
  108. package/modules/{read → xlsx}/parseDate.js.map +1 -1
  109. package/modules/{read → xlsx}/parseDate.test.js.map +1 -1
  110. package/modules/{read → xlsx}/parseDimensions.js.map +1 -1
  111. package/modules/{read → xlsx}/parseFilePaths.js.map +1 -1
  112. package/modules/{read → xlsx}/parseProperties.js.map +1 -1
  113. package/modules/{read → xlsx}/parseSharedStrings.js.map +1 -1
  114. package/modules/{read → xlsx}/parseSheet.js.map +1 -1
  115. package/modules/{read → xlsx}/parseStyles.js.map +1 -1
  116. package/modules/{read/readXlsx.js → xlsx/parseXlsxFileContents.js} +9 -8
  117. package/modules/xlsx/parseXlsxFileContents.js.map +1 -0
  118. package/modules/{read/readXlsxFileContents.js → xlsx/parseXlsxFileContentsWithOptionalSchema.js} +13 -5
  119. package/modules/xlsx/parseXlsxFileContentsWithOptionalSchema.js.map +1 -0
  120. package/modules/{read → xlsx}/schema/mapToObjects.js +0 -4
  121. package/modules/xlsx/schema/mapToObjects.js.map +1 -0
  122. package/modules/{read → xlsx}/schema/mapToObjects.test.js.map +1 -1
  123. package/modules/zip/unzipFromArrayBuffer.js +67 -0
  124. package/modules/zip/unzipFromArrayBuffer.js.map +1 -0
  125. package/modules/zip/unzipFromArrayBufferSync.js +27 -0
  126. package/modules/zip/unzipFromArrayBufferSync.js.map +1 -0
  127. package/modules/zip/unzipFromStream.js +119 -0
  128. package/modules/zip/unzipFromStream.js.map +1 -0
  129. package/node/index.cjs +4 -4
  130. package/node/index.d.ts +2 -1
  131. package/node/index.js +3 -3
  132. package/package.json +14 -9
  133. package/rollup.config.mjs +1 -1
  134. package/universal/index.cjs +7 -0
  135. package/universal/index.d.ts +28 -0
  136. package/universal/index.js +6 -0
  137. package/universal/package.json +17 -0
  138. package/web-worker/index.cjs +4 -4
  139. package/web-worker/index.js +3 -3
  140. package/commonjs/read/readSheetNamesBrowser.js.map +0 -1
  141. package/commonjs/read/readSheetNamesNode.js.map +0 -1
  142. package/commonjs/read/readSheetNamesNode.test.js.map +0 -1
  143. package/commonjs/read/readSheetNamesWebWorker.js.map +0 -1
  144. package/commonjs/read/readXlsx.js.map +0 -1
  145. package/commonjs/read/readXlsxFileBrowser.js.map +0 -1
  146. package/commonjs/read/readXlsxFileContents.js.map +0 -1
  147. package/commonjs/read/readXlsxFileNode.js.map +0 -1
  148. package/commonjs/read/readXlsxFileNode.test.js.map +0 -1
  149. package/commonjs/read/readXlsxFileWebWorker.js.map +0 -1
  150. package/commonjs/read/schema/mapToObjects.js.map +0 -1
  151. package/commonjs/read/unpackXlsxFileBrowser.js +0 -50
  152. package/commonjs/read/unpackXlsxFileBrowser.js.map +0 -1
  153. package/commonjs/read/unpackXlsxFileNode.js +0 -86
  154. package/commonjs/read/unpackXlsxFileNode.js.map +0 -1
  155. package/index.cjs +0 -7
  156. package/index.cjs.js +0 -12
  157. package/index.js +0 -6
  158. package/modules/read/readSheetNamesBrowser.js.map +0 -1
  159. package/modules/read/readSheetNamesNode.js.map +0 -1
  160. package/modules/read/readSheetNamesNode.test.js.map +0 -1
  161. package/modules/read/readSheetNamesWebWorker.js.map +0 -1
  162. package/modules/read/readXlsx.js.map +0 -1
  163. package/modules/read/readXlsxFileBrowser.js.map +0 -1
  164. package/modules/read/readXlsxFileContents.js.map +0 -1
  165. package/modules/read/readXlsxFileNode.js.map +0 -1
  166. package/modules/read/readXlsxFileNode.test.js.map +0 -1
  167. package/modules/read/readXlsxFileWebWorker.js.map +0 -1
  168. package/modules/read/schema/mapToObjects.js.map +0 -1
  169. package/modules/read/unpackXlsxFileBrowser.js +0 -45
  170. package/modules/read/unpackXlsxFileBrowser.js.map +0 -1
  171. package/modules/read/unpackXlsxFileNode.js +0 -78
  172. package/modules/read/unpackXlsxFileNode.js.map +0 -1
  173. package/node/index.cjs.js +0 -12
  174. package/web-worker/index.cjs.js +0 -12
  175. /package/commonjs/{read → export}/readSheetNamesNode.js +0 -0
  176. /package/commonjs/{read → xlsx}/coordinates.js +0 -0
  177. /package/commonjs/{read → xlsx}/dropEmptyColumns.js +0 -0
  178. /package/commonjs/{read → xlsx}/dropEmptyRows.js +0 -0
  179. /package/commonjs/{read → xlsx}/getData.js +0 -0
  180. /package/commonjs/{read → xlsx}/isDateTimestamp.js +0 -0
  181. /package/commonjs/{read → xlsx}/parseCell.js +0 -0
  182. /package/commonjs/{read → xlsx}/parseCellValue.js +0 -0
  183. /package/commonjs/{read → xlsx}/parseCells.js +0 -0
  184. /package/commonjs/{read → xlsx}/parseDate.js +0 -0
  185. /package/commonjs/{read → xlsx}/parseDimensions.js +0 -0
  186. /package/commonjs/{read → xlsx}/parseFilePaths.js +0 -0
  187. /package/commonjs/{read → xlsx}/parseProperties.js +0 -0
  188. /package/commonjs/{read → xlsx}/parseSharedStrings.js +0 -0
  189. /package/commonjs/{read → xlsx}/parseSheet.js +0 -0
  190. /package/commonjs/{read → xlsx}/parseStyles.js +0 -0
  191. /package/modules/{read → export}/readSheetNamesNode.js +0 -0
  192. /package/modules/{read → xlsx}/coordinates.js +0 -0
  193. /package/modules/{read → xlsx}/dropEmptyColumns.js +0 -0
  194. /package/modules/{read → xlsx}/dropEmptyRows.js +0 -0
  195. /package/modules/{read → xlsx}/getData.js +0 -0
  196. /package/modules/{read → xlsx}/isDateTimestamp.js +0 -0
  197. /package/modules/{read → xlsx}/parseCell.js +0 -0
  198. /package/modules/{read → xlsx}/parseCellValue.js +0 -0
  199. /package/modules/{read → xlsx}/parseCells.js +0 -0
  200. /package/modules/{read → xlsx}/parseDate.js +0 -0
  201. /package/modules/{read → xlsx}/parseDimensions.js +0 -0
  202. /package/modules/{read → xlsx}/parseFilePaths.js +0 -0
  203. /package/modules/{read → xlsx}/parseProperties.js +0 -0
  204. /package/modules/{read → xlsx}/parseSharedStrings.js +0 -0
  205. /package/modules/{read → xlsx}/parseSheet.js +0 -0
  206. /package/modules/{read → xlsx}/parseStyles.js +0 -0
package/rollup.config.mjs CHANGED
@@ -7,7 +7,7 @@ export default [
7
7
  {
8
8
  // `index.js` didn't work because it "mixes named and default exports".
9
9
  // input: './index',
10
- input: './modules/read/readXlsxFileBrowser',
10
+ input: './modules/export/readXlsxFileBrowser',
11
11
  plugins: [
12
12
  json(),
13
13
  terser(),
@@ -0,0 +1,7 @@
1
+ exports = module.exports = require('../commonjs/export/readXlsxFileUniversal.js').default
2
+ exports['default'] = require('../commonjs/export/readXlsxFileUniversal.js').default
3
+ exports.readSheetNames = require('../commonjs/export/readSheetNamesUniversal.js').default
4
+ exports.parseExcelDate = require('../commonjs/xlsx/parseDate.js').default
5
+ exports.Integer = require('../commonjs/types/Integer.js').default
6
+ exports.Email = require('../commonjs/types/Email.js').default
7
+ exports.URL = require('../commonjs/types/URL.js').default
@@ -0,0 +1,28 @@
1
+ import {
2
+ ParseWithSchemaOptions,
3
+ ParseWithoutSchemaOptions,
4
+ ParsedObjectsResult,
5
+ Row
6
+ } from '../types.d.js';
7
+
8
+ export {
9
+ Schema,
10
+ ParsedObjectsResult,
11
+ Error,
12
+ CellValue,
13
+ Row,
14
+ Integer,
15
+ Email,
16
+ URL
17
+ } from '../types.d.js';
18
+
19
+ export function parseExcelDate(excelSerialDate: number) : typeof Date;
20
+
21
+ type Input = Blob;
22
+
23
+ export function readXlsxFile<T extends object>(input: Input, options: ParseWithSchemaOptions<T>) : Promise<ParsedObjectsResult<T>>;
24
+ export function readXlsxFile(input: Input, options?: ParseWithoutSchemaOptions) : Promise<Row[]>;
25
+
26
+ export function readSheetNames(input: Input) : Promise<string[]>;
27
+
28
+ export default readXlsxFile;
@@ -0,0 +1,6 @@
1
+ export { default as default } from '../modules/export/readXlsxFileUniversal.js'
2
+ export { default as readSheetNames } from '../modules/export/readSheetNamesUniversal.js'
3
+ export { default as parseExcelDate } from '../modules/xlsx/parseDate.js'
4
+ export { default as Integer } from '../modules/types/Integer.js'
5
+ export { default as Email } from '../modules/types/Email.js'
6
+ export { default as URL } from '../modules/types/URL.js'
@@ -0,0 +1,17 @@
1
+ {
2
+ "private": true,
3
+ "name": "read-excel-file/universal",
4
+ "version": "1.0.0",
5
+ "main": "index.cjs",
6
+ "module": "index.js",
7
+ "types": "./index.d.ts",
8
+ "type": "module",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./index.d.ts",
12
+ "import": "./index.js",
13
+ "require": "./index.cjs"
14
+ }
15
+ },
16
+ "sideEffects": false
17
+ }
@@ -1,7 +1,7 @@
1
- exports = module.exports = require('../commonjs/read/readXlsxFileWebWorker.js').default
2
- exports['default'] = require('../commonjs/read/readXlsxFileWebWorker.js').default
3
- exports.readSheetNames = require('../commonjs/read/readSheetNamesWebWorker.js').default
4
- exports.parseExcelDate = require('../commonjs/read/parseDate.js').default
1
+ exports = module.exports = require('../commonjs/export/readXlsxFileWebWorker.js').default
2
+ exports['default'] = require('../commonjs/export/readXlsxFileWebWorker.js').default
3
+ exports.readSheetNames = require('../commonjs/export/readSheetNamesWebWorker.js').default
4
+ exports.parseExcelDate = require('../commonjs/xlsx/parseDate.js').default
5
5
  exports.Integer = require('../commonjs/types/Integer.js').default
6
6
  exports.Email = require('../commonjs/types/Email.js').default
7
7
  exports.URL = require('../commonjs/types/URL.js').default
@@ -1,6 +1,6 @@
1
- export { default as default } from '../modules/read/readXlsxFileWebWorker.js'
2
- export { default as readSheetNames } from '../modules/read/readSheetNamesWebWorker.js'
3
- export { default as parseExcelDate } from '../modules/read/parseDate.js'
1
+ export { default as default } from '../modules/export/readXlsxFileWebWorker.js'
2
+ export { default as readSheetNames } from '../modules/export/readSheetNamesWebWorker.js'
3
+ export { default as parseExcelDate } from '../modules/xlsx/parseDate.js'
4
4
  export { default as Integer } from '../modules/types/Integer.js'
5
5
  export { default as Email } from '../modules/types/Email.js'
6
6
  export { default as URL } from '../modules/types/URL.js'
@@ -1 +0,0 @@
1
- {"version":3,"file":"readSheetNamesBrowser.js","names":["_readXlsxFileBrowser","_interopRequireDefault","require","obj","__esModule","readSheetNames","file","readXlsxFile","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/read/readSheetNamesBrowser.js"],"sourcesContent":["import readXlsxFile from './readXlsxFileBrowser.js'\r\n\r\n/**\r\n * Reads the list of sheet names in an XLSX file in a web browser.\r\n * @param {file} file - A file being uploaded in the browser.\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,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAmD,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAEnD;AACA;AACA;AACA;AACA;AACe,SAASE,cAAcA,CAACC,IAAI,EAAE;EAC5C,OAAO,IAAAC,+BAAY,EAACD,IAAI,EAAE;IAAEE,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 +0,0 @@
1
- {"version":3,"file":"readSheetNamesNode.js","names":["_readXlsxFileNode","_interopRequireDefault","require","obj","__esModule","readSheetNames","input","readXlsxFile","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/read/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,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAgD,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAEhD;AACA;AACA;AACA;AACA;AACe,SAASE,cAAcA,CAACC,KAAK,EAAE;EAC7C,OAAO,IAAAC,4BAAY,EAACD,KAAK,EAAE;IAAEE,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 +0,0 @@
1
- {"version":3,"file":"readSheetNamesNode.test.js","names":["_path","_interopRequireDefault","require","_readSheetNamesNode","obj","__esModule","describe","it","readSheetNamesNode","path","resolve","then","sheetNames","should","deep","equal"],"sources":["../../source/read/readSheetNamesNode.test.js"],"sourcesContent":["import path from 'path'\r\n\r\nimport readSheetNamesNode from './readSheetNamesNode.js'\r\n\r\ndescribe('readSheetNamesNode', () => {\r\n\tit('should read the list of sheet names in an *.xlsx file in Node.js', () => {\r\n\t\treturn readSheetNamesNode(path.resolve('./test/spreadsheets/multiple-sheets.xlsx')).then((sheetNames) => {\r\n\t\t\tsheetNames.should.deep.equal(['sheet 1', 'sheet 2'])\r\n\t\t})\r\n\t})\r\n})"],"mappings":";;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAwD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAExDE,QAAQ,CAAC,oBAAoB,EAAE,YAAM;EACpCC,EAAE,CAAC,kEAAkE,EAAE,YAAM;IAC5E,OAAO,IAAAC,8BAAkB,EAACC,gBAAI,CAACC,OAAO,CAAC,0CAA0C,CAAC,CAAC,CAACC,IAAI,CAAC,UAACC,UAAU,EAAK;MACxGA,UAAU,CAACC,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readSheetNamesWebWorker.js","names":["_readXlsxFileWebWorker","_interopRequireDefault","require","obj","__esModule","readSheetNames","file","readXlsxFile","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/read/readSheetNamesWebWorker.js"],"sourcesContent":["import readXlsxFile from './readXlsxFileWebWorker.js'\r\n\r\n/**\r\n * Reads the list of sheet names in an XLSX file in a Web Worker.\r\n * @param {file} file - The file.\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,IAAAA,sBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqD,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAErD;AACA;AACA;AACA;AACA;AACe,SAASE,cAAcA,CAACC,IAAI,EAAE;EAC5C,OAAO,IAAAC,iCAAY,EAACD,IAAI,EAAE;IAAEE,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 +0,0 @@
1
- {"version":3,"file":"readXlsx.js","names":["_parseProperties","_interopRequireDefault","require","_parseFilePaths","_parseStyles","_parseSharedStrings","_parseSheet","_getData","obj","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","_createForOfIteratorHelperLoose","allowArrayLike","it","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","toString","slice","name","from","test","arr","len","arr2","ownKeys","e","r","t","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","Number","readXlsx","contents","xml","options","sheet","getXmlFileContent","filePath","Error","concat","filePaths","parseFilePaths","values","sharedStrings","parseSharedStrings","styles","parseStyles","properties","parseProperties","getSheets","sheets","map","_ref","sheetId","getSheetId","createSheetNotFoundError","parseSheet","rowIndexSourceMap","data","getData","_sheet","relationId","_iterator","_step","sheetsList","join"],"sources":["../../source/read/readXlsx.js"],"sourcesContent":["import parseProperties from './parseProperties.js'\r\nimport parseFilePaths from './parseFilePaths.js'\r\nimport parseStyles from './parseStyles.js'\r\nimport parseSharedStrings from './parseSharedStrings.js'\r\nimport parseSheet from './parseSheet.js'\r\nimport getData from './getData.js'\r\n\r\n// For an introduction in reading `*.xlsx` files see \"The minimum viable XLSX reader\":\r\n// https://www.brendanlong.com/the-minimum-viable-xlsx-reader.html\r\n\r\n/**\r\n * Reads an (unzipped) XLSX file structure into a 2D array of cells.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @param {number?} options.sheet - Workbook sheet id (`1` by default).\r\n * @param {string?} options.dateFormat - Date format, e.g. \"mm/dd/yyyy\". Values having this format template set will be parsed as dates.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @return {object} An object of shape `{ data, cells, properties }`. `data: string[][]` is an array of rows, each row being an array of cell values. `cells: string[][]` is an array of rows, each row being an array of cells. `properties: object` is the spreadsheet properties (e.g. whether date epoch is 1904 instead of 1900).\r\n */\r\nexport default function readXlsx(contents, xml, options = {}) {\r\n if (!options.sheet) {\r\n options = {\r\n sheet: 1,\r\n ...options\r\n }\r\n }\r\n\r\n const getXmlFileContent = (filePath) => {\r\n if (!contents[filePath]) {\r\n throw new Error(`\"${filePath}\" file not found inside the *.xlsx file zip archive`)\r\n }\r\n return contents[filePath]\r\n }\r\n\r\n // Some Excel editors don't want to use standard naming scheme for sheet files.\r\n // https://github.com/tidyverse/readxl/issues/104\r\n const filePaths = parseFilePaths(getXmlFileContent('xl/_rels/workbook.xml.rels'), xml)\r\n\r\n // Default file path for \"shared strings\": \"xl/sharedStrings.xml\".\r\n const values = filePaths.sharedStrings\r\n ? parseSharedStrings(getXmlFileContent(filePaths.sharedStrings), xml)\r\n : []\r\n\r\n // Default file path for \"styles\": \"xl/styles.xml\".\r\n const styles = filePaths.styles\r\n ? parseStyles(getXmlFileContent(filePaths.styles), xml)\r\n : {}\r\n\r\n const properties = parseProperties(getXmlFileContent('xl/workbook.xml'), xml)\r\n\r\n // A feature for getting the list of sheets in an Excel file.\r\n // https://github.com/catamphetamine/read-excel-file/issues/14\r\n if (options.getSheets) {\r\n return properties.sheets.map(({ name }) => ({\r\n name\r\n }))\r\n }\r\n\r\n // Find the sheet by name, or take the first one.\r\n const sheetId = getSheetId(options.sheet, properties.sheets)\r\n\r\n // If the sheet wasn't found then throw an error.\r\n // Example: \"xl/worksheets/sheet1.xml\".\r\n if (!sheetId || !filePaths.sheets[sheetId]) {\r\n throw createSheetNotFoundError(options.sheet, properties.sheets)\r\n }\r\n\r\n // Parse sheet data.\r\n const sheet = parseSheet(\r\n getXmlFileContent(filePaths.sheets[sheetId]),\r\n xml,\r\n values,\r\n styles,\r\n properties,\r\n options\r\n )\r\n\r\n options = {\r\n // Create a `rowIndexSourceMap` for the original dataset, if not passed,\r\n // because \"empty\" rows will be dropped from the input data.\r\n rowIndexSourceMap: [],\r\n ...options\r\n }\r\n\r\n // Get spreadsheet data.\r\n const data = getData(sheet, options)\r\n\r\n // Can return properties, if required.\r\n if (options.properties) {\r\n return {\r\n data,\r\n properties\r\n }\r\n }\r\n\r\n // Return spreadsheet data.\r\n return data\r\n}\r\n\r\nfunction getSheetId(sheet, sheets) {\r\n if (typeof sheet === 'number') {\r\n const _sheet = sheets[sheet - 1]\r\n return _sheet && _sheet.relationId\r\n }\r\n for (const _sheet of sheets) {\r\n if (_sheet.name === sheet) {\r\n return _sheet.relationId\r\n }\r\n }\r\n}\r\n\r\nfunction createSheetNotFoundError(sheet, sheets) {\r\n const sheetsList = sheets && sheets.map((sheet, i) => `\"${sheet.name}\" (#${i + 1})`).join(', ')\r\n return new Error(`Sheet ${typeof sheet === 'number' ? '#' + sheet : '\"' + sheet + '\"'} not found in the *.xlsx file.${sheets ? ' Available sheets: ' + sheetsList + '.' : ''}`)\r\n}"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileBrowser.js","names":["_xmlBrowser","_interopRequireDefault","require","_unpackXlsxFileBrowser","_readXlsxFileContents","obj","__esModule","readXlsxFile","file","options","arguments","length","undefined","unpackXlsxFile","then","entries","readXlsxFileContents","xml"],"sources":["../../source/read/readXlsxFileBrowser.js"],"sourcesContent":["import xml from '../xml/xmlBrowser.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileBrowser.js'\r\nimport readXlsxFileContents from './readXlsxFileContents.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells in a browser.\r\n * @param {file} file - A file being uploaded in the browser.\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((entries) => readXlsxFileContents(entries, xml, options))\r\n}"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,qBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA4D,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASE,YAAYA,CAACC,IAAI,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACtD,OAAO,IAAAG,iCAAc,EAACL,IAAI,CAAC,CACzBM,IAAI,CAAC,UAACC,OAAO;IAAA,OAAK,IAAAC,gCAAoB,EAACD,OAAO,EAAEE,sBAAG,EAAER,OAAO,CAAC;EAAA,EAAC;AACjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileContents.js","names":["_readXlsx","_interopRequireDefault","require","_mapToObjects","_excluded","obj","__esModule","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","_typeof","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","_objectWithoutProperties","source","excluded","target","_objectWithoutPropertiesLoose","i","sourceSymbolKeys","indexOf","prototype","propertyIsEnumerable","sourceKeys","readXlsxFileContents","entries","xml","_ref","schema","options","map","Error","result","readXlsx","properties","mapToObjects","data"],"sources":["../../source/read/readXlsxFileContents.js"],"sourcesContent":["import readXlsx from './readXlsx.js'\r\n\r\nimport mapToObjects from './schema/mapToObjects.js'\r\n\r\nexport default function readXlsxFileContents(entries, xml, { schema, ...options}) {\r\n\tif (options.map) {\r\n\t\tthrow new Error('`map` option was removed. Pass a `schema` option instead.')\r\n\t}\r\n\t// `readXlsx()` function creates `options.rowIndexSourceMap` property.\r\n\t// It maps parsed data row indexes to spreadsheet row indexes.\r\n\t// That's because empty rows are ignored (discarded) when parsing using `schema`.\r\n\tconst result = readXlsx(entries, xml, { ...options, properties: schema || options.properties })\r\n\tif (schema) {\r\n\t\treturn mapToObjects(result.data, schema, {\r\n\t\t\t...options,\r\n\t\t\tproperties: result.properties\r\n\t\t})\r\n\t}\r\n\treturn result\r\n}"],"mappings":";;;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAmD,IAAAE,SAAA;AAAA,SAAAH,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAAA,SAAAE,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAgB,gBAAAnB,GAAA,EAAAuB,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAvB,GAAA,IAAAM,MAAA,CAAAgB,cAAA,CAAAtB,GAAA,EAAAuB,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAZ,UAAA,QAAAc,YAAA,QAAAC,QAAA,oBAAA3B,GAAA,CAAAuB,GAAA,IAAAC,KAAA,WAAAxB,GAAA;AAAA,SAAAyB,eAAAG,GAAA,QAAAL,GAAA,GAAAM,YAAA,CAAAD,GAAA,oBAAAE,OAAA,CAAAP,GAAA,iBAAAA,GAAA,GAAAQ,MAAA,CAAAR,GAAA;AAAA,SAAAM,aAAAG,KAAA,EAAAC,IAAA,QAAAH,OAAA,CAAAE,KAAA,kBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,oBAAAH,OAAA,CAAAQ,GAAA,uBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AAAA,SAAAU,yBAAAC,MAAA,EAAAC,QAAA,QAAAD,MAAA,yBAAAE,MAAA,GAAAC,6BAAA,CAAAH,MAAA,EAAAC,QAAA,OAAArB,GAAA,EAAAwB,CAAA,MAAAzC,MAAA,CAAAE,qBAAA,QAAAwC,gBAAA,GAAA1C,MAAA,CAAAE,qBAAA,CAAAmC,MAAA,QAAAI,CAAA,MAAAA,CAAA,GAAAC,gBAAA,CAAA/B,MAAA,EAAA8B,CAAA,MAAAxB,GAAA,GAAAyB,gBAAA,CAAAD,CAAA,OAAAH,QAAA,CAAAK,OAAA,CAAA1B,GAAA,uBAAAjB,MAAA,CAAA4C,SAAA,CAAAC,oBAAA,CAAAZ,IAAA,CAAAI,MAAA,EAAApB,GAAA,aAAAsB,MAAA,CAAAtB,GAAA,IAAAoB,MAAA,CAAApB,GAAA,cAAAsB,MAAA;AAAA,SAAAC,8BAAAH,MAAA,EAAAC,QAAA,QAAAD,MAAA,yBAAAE,MAAA,WAAAO,UAAA,GAAA9C,MAAA,CAAAC,IAAA,CAAAoC,MAAA,OAAApB,GAAA,EAAAwB,CAAA,OAAAA,CAAA,MAAAA,CAAA,GAAAK,UAAA,CAAAnC,MAAA,EAAA8B,CAAA,MAAAxB,GAAA,GAAA6B,UAAA,CAAAL,CAAA,OAAAH,QAAA,CAAAK,OAAA,CAAA1B,GAAA,kBAAAsB,MAAA,CAAAtB,GAAA,IAAAoB,MAAA,CAAApB,GAAA,YAAAsB,MAAA;AAEpC,SAASQ,oBAAoBA,CAACC,OAAO,EAAEC,GAAG,EAAAC,IAAA,EAAyB;EAAA,IAArBC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAKC,OAAO,GAAAhB,wBAAA,CAAAc,IAAA,EAAAzD,SAAA;EAC9E,IAAI2D,OAAO,CAACC,GAAG,EAAE;IAChB,MAAM,IAAIC,KAAK,CAAC,2DAA2D,CAAC;EAC7E;EACA;EACA;EACA;EACA,IAAMC,MAAM,GAAG,IAAAC,oBAAQ,EAACR,OAAO,EAAEC,GAAG,EAAAxC,aAAA,CAAAA,aAAA,KAAO2C,OAAO;IAAEK,UAAU,EAAEN,MAAM,IAAIC,OAAO,CAACK;EAAU,EAAE,CAAC;EAC/F,IAAIN,MAAM,EAAE;IACX,OAAO,IAAAO,wBAAY,EAACH,MAAM,CAACI,IAAI,EAAER,MAAM,EAAA1C,aAAA,CAAAA,aAAA,KACnC2C,OAAO;MACVK,UAAU,EAAEF,MAAM,CAACE;IAAU,EAC7B,CAAC;EACH;EACA,OAAOF,MAAM;AACd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileNode.js","names":["_xml","_interopRequireDefault","require","_unpackXlsxFileNode","_readXlsxFileContents","obj","__esModule","readXlsxFile","input","options","arguments","length","undefined","unpackXlsxFile","then","entries","readXlsxFileContents","xml"],"sources":["../../source/read/readXlsxFileNode.js"],"sourcesContent":["import xml from '../xml/xml.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileNode.js'\r\nimport readXlsxFileContents from './readXlsxFileContents.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells in a browser.\r\n * @param {(string|Stream|Buffer)} input - A Node.js readable stream or a `Buffer` 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((entries) => readXlsxFileContents(entries, xml, options))\r\n}"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,qBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA4D,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASE,YAAYA,CAACC,KAAK,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACvD,OAAO,IAAAG,8BAAc,EAACL,KAAK,CAAC,CAC1BM,IAAI,CAAC,UAACC,OAAO;IAAA,OAAK,IAAAC,gCAAoB,EAACD,OAAO,EAAEE,eAAG,EAAER,OAAO,CAAC;EAAA,EAAC;AACjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileNode.test.js","names":["_path","_interopRequireDefault","require","_readXlsxFileNode","obj","__esModule","describe","it","schema","date","column","type","Date","numberOfStudents","Number","required","course","isFree","Boolean","cost","title","String","contact","value","rowIndexSourceMap","readXlsxFileNode","path","resolve","then","_ref","rows","getTime","should","deep","equal","convertToUTCTimezone","getTimezoneOffset"],"sources":["../../source/read/readXlsxFileNode.test.js"],"sourcesContent":["import path from 'path'\r\n\r\nimport readXlsxFileNode from './readXlsxFileNode.js'\r\n\r\ndescribe('readXlsxFileNode', () => {\r\n\tit('should read *.xlsx file on Node.js and parse it to JSON', () => {\r\n\t\tconst schema = {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'START DATE',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\tnumberOfStudents: {\r\n\t\t\t\tcolumn: 'NUMBER OF STUDENTS',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tcourse: {\r\n\t\t\t\tschema: {\r\n\t\t\t\t\tisFree: {\r\n\t\t\t\t\t\tcolumn: 'IS FREE',\r\n\t\t\t\t\t\ttype: Boolean\r\n\t\t\t\t\t\t// Excel stores booleans as numbers:\r\n\t\t\t\t\t\t// `1` is `true` and `0` is `false`.\r\n\t\t\t\t\t\t// Such numbers are parsed into booleans.\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcost: {\r\n\t\t\t\t\t\tcolumn: 'COST',\r\n\t\t\t\t\t\ttype: Number\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\tcolumn: 'COURSE TITLE',\r\n\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcontact: {\r\n\t\t\t\tcolumn: 'CONTACT',\r\n\t\t\t\trequired: true,\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst rowIndexSourceMap = []\r\n\r\n\t\treturn readXlsxFileNode(path.resolve('./test/spreadsheets/course.xlsx'), { schema, rowIndexSourceMap }).then(({ rows }) => {\r\n\t\t\trows[0].date = rows[0].date.getTime()\r\n\t\t\trows.should.deep.equal([{\r\n\t\t\t\tdate: convertToUTCTimezone(new Date(2018, 2, 24)).getTime(),\r\n\t\t\t\tnumberOfStudents: 123,\r\n\t\t\t\tcourse: {\r\n\t\t\t\t\tisFree: false,\r\n\t\t\t\t\tcost: 210.45,\r\n\t\t\t\t\ttitle: 'Chemistry'\r\n\t\t\t\t},\r\n\t\t\t\tcontact: '+11234567890'\r\n\t\t\t}])\r\n\t\t\trowIndexSourceMap.should.deep.equal([0, 1])\r\n\t\t})\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":";;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAoD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAEpDE,QAAQ,CAAC,kBAAkB,EAAE,YAAM;EAClCC,EAAE,CAAC,yDAAyD,EAAE,YAAM;IACnE,IAAMC,MAAM,GAAG;MACdC,IAAI,EAAE;QACLC,MAAM,EAAE,YAAY;QACpBC,IAAI,EAAEC;MACP,CAAC;MACDC,gBAAgB,EAAE;QACjBH,MAAM,EAAE,oBAAoB;QAC5BC,IAAI,EAAEG,MAAM;QACZC,QAAQ,EAAE;MACX,CAAC;MACDC,MAAM,EAAE;QACPR,MAAM,EAAE;UACPS,MAAM,EAAE;YACPP,MAAM,EAAE,SAAS;YACjBC,IAAI,EAAEO;YACN;YACA;YACA;UACD,CAAC;;UACDC,IAAI,EAAE;YACLT,MAAM,EAAE,MAAM;YACdC,IAAI,EAAEG;UACP,CAAC;UACDM,KAAK,EAAE;YACNV,MAAM,EAAE,cAAc;YACtBC,IAAI,EAAEU;UACP;QACD;MACD,CAAC;MACDC,OAAO,EAAE;QACRZ,MAAM,EAAE,SAAS;QACjBK,QAAQ,EAAE,IAAI;QACdJ,IAAI,WAAAA,KAACY,KAAK,EAAE;UACX,OAAO,cAAc;QACtB;MACD;IACD,CAAC;IAED,IAAMC,iBAAiB,GAAG,EAAE;IAE5B,OAAO,IAAAC,4BAAgB,EAACC,gBAAI,CAACC,OAAO,CAAC,iCAAiC,CAAC,EAAE;MAAEnB,MAAM,EAANA,MAAM;MAAEgB,iBAAiB,EAAjBA;IAAkB,CAAC,CAAC,CAACI,IAAI,CAAC,UAAAC,IAAA,EAAc;MAAA,IAAXC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MACnHA,IAAI,CAAC,CAAC,CAAC,CAACrB,IAAI,GAAGqB,IAAI,CAAC,CAAC,CAAC,CAACrB,IAAI,CAACsB,OAAO,CAAC,CAAC;MACrCD,IAAI,CAACE,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;QACvBzB,IAAI,EAAE0B,oBAAoB,CAAC,IAAIvB,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAACmB,OAAO,CAAC,CAAC;QAC3DlB,gBAAgB,EAAE,GAAG;QACrBG,MAAM,EAAE;UACPC,MAAM,EAAE,KAAK;UACbE,IAAI,EAAE,MAAM;UACZC,KAAK,EAAE;QACR,CAAC;QACDE,OAAO,EAAE;MACV,CAAC,CAAC,CAAC;MACHE,iBAAiB,CAACQ,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,SAASC,oBAAoBA,CAAC1B,IAAI,EAAE;EACnC;EACA;EACA;EACA;EACA;EACA;EACA,OAAO,IAAIG,IAAI,CAACH,IAAI,CAACsB,OAAO,CAAC,CAAC,GAAGtB,IAAI,CAAC2B,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileWebWorker.js","names":["_xml","_interopRequireDefault","require","_unpackXlsxFileBrowser","_readXlsxFileContents","obj","__esModule","readXlsxFile","file","options","arguments","length","undefined","unpackXlsxFile","then","entries","readXlsxFileContents","xml"],"sources":["../../source/read/readXlsxFileWebWorker.js"],"sourcesContent":["import xml from '../xml/xml.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileBrowser.js'\r\nimport readXlsxFileContents from './readXlsxFileContents.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells in a web worker.\r\n * @param {file} file - The 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(file, options = {}) {\r\n\treturn unpackXlsxFile(file)\r\n\t\t.then((entries) => readXlsxFileContents(entries, xml, options))\r\n}"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,qBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA4D,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASE,YAAYA,CAACC,IAAI,EAAgB;EAAA,IAAdC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACtD,OAAO,IAAAG,iCAAc,EAACL,IAAI,CAAC,CACzBM,IAAI,CAAC,UAACC,OAAO;IAAA,OAAK,IAAAC,gCAAoB,EAACD,OAAO,EAAEE,eAAG,EAAER,OAAO,CAAC;EAAA,EAAC;AACjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mapToObjects.js","names":["_Number","_interopRequireDefault","require","_String","_Boolean","_Date","_excluded","obj","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","r","l","t","e","n","u","a","f","call","next","Object","done","push","value","length","Array","isArray","_createForOfIteratorHelperLoose","allowArrayLike","it","bind","minLen","_arrayLikeToArray","toString","slice","name","from","test","len","arr2","_objectWithoutProperties","source","excluded","target","_objectWithoutPropertiesLoose","key","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","ownKeys","filter","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","Number","DEFAULT_OPTIONS","schemaPropertyValueForMissingColumn","schemaPropertyValueForMissingValue","schemaPropertyShouldSkipRequiredValidationForMissingColumn","getEmptyObjectValue","getEmptyArrayValue","isColumnOriented","ignoreEmptyRows","arrayValueSeparator","mapToObjects","data","schema","options","_options","rowIndexSourceMapOriginal","rowIndexSourceMap","schemaTransformOptions","validateSchema","transpose","row","isEmptyRow","every","cell","splice","columns","results","errors","result","read","_iterator","_step","error","rows","rowIndex","path","object","isEmptyObject","createError","_ref","schemaEntry","errorMessage","reason","column","type","pendingRequiredChecks","_loop","_Object$keys","_i","propertyName","columnTitle","propertyPath","concat","cellValue","columnIndex","isMissingColumn","array","parseArray","map","_value","parseValue","isEmpty","isEmptyValue","required","_i2","_pendingRequiredCheck","_pendingRequiredCheck2","skipRequiredValidation","isRequired","parse","Error","parseValueOfType","oneOf","validate","message","parseCustomValue","parsedValue","StringType","NumberType","Date","DateType","properties","Boolean","BooleanType","getBlock","string","endCharacter","startIndex","substring","character","block","blocks","index","_getBlock","_getBlock2","trim","_","_i3","_Object$keys2"],"sources":["../../../source/read/schema/mapToObjects.js"],"sourcesContent":["import NumberType from '../../types/Number.js'\r\nimport StringType from '../../types/String.js'\r\nimport BooleanType from '../../types/Boolean.js'\r\nimport DateType from '../../types/Date.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n schemaPropertyValueForMissingColumn: undefined,\r\n schemaPropertyValueForMissingValue: null,\r\n schemaPropertyShouldSkipRequiredValidationForMissingColumn: () => false,\r\n // `getEmptyObjectValue(object, { path })` applies to both the top-level object\r\n // and any of its sub-objects.\r\n getEmptyObjectValue: () => null,\r\n getEmptyArrayValue: () => null,\r\n isColumnOriented: false,\r\n ignoreEmptyRows: true,\r\n arrayValueSeparator: ','\r\n}\r\n\r\n/**\r\n * Converts spreadsheet-alike data structure into an array of objects.\r\n *\r\n * Parameters:\r\n *\r\n * * `data` — An array of rows, each row being an array of cells. The first row should be the list of column headers and the rest of the rows should be the data.\r\n * * `schema` — A \"to JSON\" convertion schema (see above).\r\n * * `options` — (optional) Schema conversion parameters of `read-excel-file`:\r\n * * `schemaPropertyValueForMissingColumn` — By default, when some of the `schema` columns are missing in the input `data`, those properties are set to `undefined` in the output objects. Pass `schemaPropertyValueForMissingColumn: null` to set such \"missing column\" properties to `null` in the output objects.\r\n * * `schemaPropertyValueForNullCellValue` — By default, when it encounters a `null` value in a cell in input `data`, it sets it to `undefined` in the output object. Pass `schemaPropertyValueForNullCellValue: null` to make it set such values as `null`s in output objects.\r\n * * `schemaPropertyValueForUndefinedCellValue` — By default, when it encounters an `undefined` value in a cell in input `data`, it it sets it to `undefined` in the output object. Pass `schemaPropertyValueForUndefinedCellValue: null` to make it set such values as `null`s in output objects.\r\n * * `schemaPropertyShouldSkipRequiredValidationForMissingColumn: (column: string, { object }) => boolean` — By default, it does apply `required` validation to `schema` properties for which columns are missing in the input `data`. One could pass a custom `schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })` to disable `required` validation for missing columns in some or all cases.\r\n * * `getEmptyObjectValue(object, { path? })` — By default, it returns `null` for \"empty\" objects. One could override that value using `getEmptyObjectValue(object, { path })` parameter. The value applies to both top-level object and any nested sub-objects in case of a nested schema, hence the additional (optional) `path?: string` parameter.\r\n * * `getEmptyArrayValue(array, { path })` — By default, it returns `null` for an \"empty\" array value. One could override that value using `getEmptyArrayValue(array, { path })` parameter.\r\n *\r\n * When parsing a property value, in case of an error, the value of that property is gonna be `undefined`.\r\n *\r\n * @param {any[][]} data - An array of rows, each row being an array of cells.\r\n * @param {object} schema\r\n * @param {object} [options]\r\n * @param {null} [options.schemaPropertyValueForMissingColumn] — By default, when some of the `schema` columns are missing in the input `data`, those properties are set to `undefined` in the output objects. Pass `schemaPropertyValueForMissingColumn: null` to set such \"missing column\" properties to `null` in the output objects.\r\n * @param {null} [options.schemaPropertyValueForMissingValue] — By default, when it encounters a `null` value in a cell in input `data`, it leaves the value as is. Pass a custom `schemaPropertyValueForMissingValue` to make it set such values to that value.\r\n * @param {object} [options.properties] — An optional object with optional property `epoch1904: true/false`. It is used when parsing dates.\r\n * @param {boolean} [options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(column: string, { object })] — By default, it does apply `required` validation to `schema` properties for which columns are missing in the input `data`. One could pass a custom `schemaPropertyShouldSkipRequiredValidationForMissingColumn(column, { object })` to disable `required` validation for missing columns in some or all cases.\r\n * @param {function} [options.getEmptyObjectValue(object, { path })] — By default, it returns `null` for an \"empty\" resulting object. One could override that value using `getEmptyObjectValue(object, { path })` parameter. The value applies to both top-level object and any nested sub-objects in case of a nested schema, hence the additional `path?: string` parameter.\r\n * @param {function} [getEmptyArrayValue(array, { path })] — By default, it returns `null` for an \"empty\" array value. One could override that value using `getEmptyArrayValue(array, { path })` parameter.\r\n * @param {boolean} [options.isColumnOriented] — By default, the headers are assumed to be the first row in the `data`. Pass `isColumnOriented: true` if the headers are the first column in the `data`. i.e. if `data` is \"transposed\".\r\n * @param {string} [options.arrayValueSeparator] — When specified, string values will be split by this separator to get the array.\r\n * @param {object} [options.rowIndexSourceMap] — Custom row indexes of `data` rows. If present, will overwrite the indexes of `data` rows with the indexes from this `rowIndexSourceMap`.\r\n * @return {object[]}\r\n */\r\nexport default function mapToObjects(data, schema, options) {\r\n if (options) {\r\n options = {\r\n ...DEFAULT_OPTIONS,\r\n ...options\r\n }\r\n } else {\r\n options = DEFAULT_OPTIONS\r\n }\r\n\r\n const {\r\n isColumnOriented,\r\n ignoreEmptyRows,\r\n rowIndexSourceMap: rowIndexSourceMapOriginal,\r\n ...schemaTransformOptions\r\n } = options\r\n\r\n // `rowIndexSourceMap` could be mutated by `ignoreEmptyRows: true` option.\r\n // Create a copy of it so that the original `rowIndexSourceMap` is not affected by those changes.\r\n let rowIndexSourceMap = rowIndexSourceMapOriginal && rowIndexSourceMapOriginal.slice()\r\n\r\n validateSchema(schema)\r\n\r\n if (isColumnOriented) {\r\n data = transpose(data)\r\n }\r\n\r\n\tif (ignoreEmptyRows) {\r\n\t\tdata = data.filter((row, i) => {\r\n const isEmptyRow = row.every(cell => cell === null)\r\n if (isEmptyRow) {\r\n // Adjust `rowIndexSourceMap` now that the row has been removed.\r\n if (rowIndexSourceMap) {\r\n // Remove the `rowIndexSourceMap` entry that corresponds to the removed row.\r\n rowIndexSourceMap.splice(i, 1)\r\n }\r\n return false;\r\n }\r\n return true;\r\n })\r\n\t}\r\n\r\n const columns = data[0]\r\n\r\n const results = []\r\n const errors = []\r\n\r\n for (let i = 1; i < data.length; i++) {\r\n const result = read(schema, data[i], i, undefined, columns, errors, schemaTransformOptions)\r\n results.push(result)\r\n }\r\n\r\n // Set the correct `row` number in `errors` if a custom `rowIndexSourceMap` is supplied.\r\n if (rowIndexSourceMap) {\r\n for (const error of errors) {\r\n // Convert the `row` index in `data` to the\r\n // actual `row` index in the spreadsheet.\r\n // `- 1` converts row number to row index.\r\n // `+ 1` converts row index to row number.\r\n error.row = rowIndexSourceMap[error.row - 1] + 1\r\n }\r\n }\r\n\r\n return {\r\n rows: results,\r\n errors\r\n }\r\n}\r\n\r\nfunction read(schema, row, rowIndex, path, columns, errors, options) {\r\n const object = {}\r\n let isEmptyObject = true\r\n\r\n const createError = ({\r\n schemaEntry,\r\n value,\r\n error: errorMessage,\r\n reason\r\n }) => {\r\n const error = {\r\n error: errorMessage,\r\n row: rowIndex + 1,\r\n column: schemaEntry.column,\r\n value\r\n }\r\n if (reason) {\r\n error.reason = reason\r\n }\r\n // * Regular values specify a `type?` property, which is included in the `error` object.\r\n // * Nested objects specify a `schema` property, which is not included in the `error` object.\r\n if (schemaEntry.type) {\r\n error.type = schemaEntry.type\r\n }\r\n return error\r\n }\r\n\r\n const pendingRequiredChecks = []\r\n\r\n // For each schema entry.\r\n for (const key of Object.keys(schema)) {\r\n const schemaEntry = schema[key]\r\n\r\n // `schemaEntry.prop` property is now deprecated and shouldn't be used.\r\n // Instead, it now uses `key` as the key in the `object`.\r\n // And column name is now read not from `key` but from `schemaEntry.column` property.\r\n const propertyName = key\r\n const columnTitle = schemaEntry.column\r\n\r\n // The path of this property inside the resulting object.\r\n const propertyPath = `${path || ''}.${propertyName}`\r\n\r\n // Read the cell value for the schema entry.\r\n let cellValue\r\n const columnIndex = columns.indexOf(columnTitle)\r\n const isMissingColumn = columnIndex < 0\r\n if (!isMissingColumn) {\r\n cellValue = row[columnIndex]\r\n }\r\n\r\n let value\r\n let error\r\n let reason\r\n\r\n // Get property `value` from cell value.\r\n if (schemaEntry.schema) {\r\n value = read(schemaEntry.schema, row, rowIndex, propertyPath, columns, errors, options)\r\n } else {\r\n if (isMissingColumn) {\r\n if ('schemaPropertyValueForMissingColumn' in options) {\r\n value = options.schemaPropertyValueForMissingColumn\r\n }\r\n }\r\n else if (cellValue === undefined) {\r\n // This isn't supposed to be possible. Cell values are always `null` when cells are empty.\r\n // Employ some sensible fallback behavior here.\r\n if ('schemaPropertyValueForMissingValue' in options) {\r\n value = options.schemaPropertyValueForMissingValue\r\n }\r\n }\r\n else if (cellValue === null) {\r\n if ('schemaPropertyValueForMissingValue' in options) {\r\n value = options.schemaPropertyValueForMissingValue\r\n }\r\n }\r\n else if (Array.isArray(schemaEntry.type)) {\r\n const array = parseArray(cellValue, options.arrayValueSeparator).map((_value) => {\r\n if (error) {\r\n return\r\n }\r\n const result = parseValue(_value, schemaEntry, options)\r\n if (result.error) {\r\n // In case of an error, `value` won't be returned and will just be reported\r\n // as part of an `error` object, so it's fine assigning just an element of the array.\r\n value = _value\r\n error = result.error\r\n reason = result.reason\r\n }\r\n return result.value\r\n })\r\n if (!error) {\r\n const isEmpty = array.every(isEmptyValue)\r\n value = isEmpty ? options.getEmptyArrayValue(array, { path: propertyPath }) : array\r\n }\r\n } else {\r\n const result = parseValue(cellValue, schemaEntry, options)\r\n error = result.error\r\n reason = result.reason\r\n value = error ? cellValue : result.value\r\n }\r\n }\r\n\r\n // Apply `required` validation if the value is \"empty\".\r\n if (!error && isEmptyValue(value)) {\r\n if (schemaEntry.required) {\r\n // Will perform this `required()` validation in the end,\r\n // when all properties of the mapped object have been mapped.\r\n pendingRequiredChecks.push({ schemaEntry, value, isMissingColumn })\r\n }\r\n }\r\n\r\n if (error) {\r\n // If there was an error then the property value in the `object` will be `undefined`,\r\n // i.e it won't add the property value to the mapped object.\r\n errors.push(createError({\r\n schemaEntry,\r\n value,\r\n error,\r\n reason\r\n }))\r\n } else {\r\n // Possibly unmark the mapped object as \"empty\".\r\n if (isEmptyObject && !isEmptyValue(value)) {\r\n isEmptyObject = false\r\n }\r\n // Set the value in the mapped object.\r\n // Skip setting `undefined` values because they're already `undefined`\r\n // due to not having previously been set.\r\n if (value !== undefined) {\r\n object[propertyName] = value\r\n }\r\n }\r\n }\r\n\r\n // Return `null` for an \"empty\" mapped object.\r\n if (isEmptyObject) {\r\n return options.getEmptyObjectValue(object, { path })\r\n }\r\n\r\n // Perform any `required` validations.\r\n for (const { schemaEntry, value, isMissingColumn } of pendingRequiredChecks) {\r\n // Can optionally skip `required` validation for missing columns.\r\n const skipRequiredValidation = isMissingColumn && options.schemaPropertyShouldSkipRequiredValidationForMissingColumn(schemaEntry.column, { object })\r\n if (!skipRequiredValidation) {\r\n const { required } = schemaEntry\r\n const isRequired = typeof required === 'boolean' ? required : required(object)\r\n if (isRequired) {\r\n errors.push(createError({\r\n schemaEntry,\r\n value,\r\n error: 'required'\r\n }))\r\n }\r\n }\r\n }\r\n\r\n // Return the mapped object.\r\n return object\r\n}\r\n\r\n/**\r\n * Converts textual value to a javascript typed value.\r\n * @param {any} value\r\n * @param {object} schemaEntry\r\n * @return {{ value: any, error: string }}\r\n */\r\nexport function parseValue(value, schemaEntry, options) {\r\n if (value === null) {\r\n return { value: null }\r\n }\r\n let result\r\n if (schemaEntry.parse) {\r\n throw new Error('`schemaEntry.parse` property was renamed to `schemaEntry.type`')\r\n } else if (schemaEntry.type) {\r\n result = parseValueOfType(\r\n value,\r\n // Supports parsing array types.\r\n // See `parseArray()` function for more details.\r\n // Example `type`: String[]\r\n // Input: 'Barack Obama, \"String, with, colons\", Donald Trump'\r\n // Output: ['Barack Obama', 'String, with, colons', 'Donald Trump']\r\n Array.isArray(schemaEntry.type) ? schemaEntry.type[0] : schemaEntry.type,\r\n options\r\n )\r\n } else {\r\n result = { value: value }\r\n // throw new Error('Invalid schema entry: no `type` specified:\\n\\n' + JSON.stringify(schemaEntry, null, 2))\r\n }\r\n // If errored then return the error.\r\n if (result.error) {\r\n return result\r\n }\r\n if (result.value !== null) {\r\n if (schemaEntry.oneOf && schemaEntry.oneOf.indexOf(result.value) < 0) {\r\n return { error: 'invalid', reason: 'unknown' }\r\n }\r\n if (schemaEntry.validate) {\r\n try {\r\n schemaEntry.validate(result.value)\r\n } catch (error) {\r\n return { error: error.message }\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * Converts textual value to a custom value using supplied `.parse()`.\r\n * @param {any} value\r\n * @param {function} parse\r\n * @return {{ value: any, error: string }}\r\n */\r\nfunction parseCustomValue(value, parse) {\r\n try {\r\n const parsedValue = parse(value)\r\n if (parsedValue === undefined) {\r\n return { value: null }\r\n }\r\n return { value: parsedValue }\r\n } catch (error) {\r\n const result = { error: error.message }\r\n if (error.reason) {\r\n result.reason = error.reason;\r\n }\r\n return result\r\n }\r\n}\r\n\r\n/**\r\n * Converts textual value to a javascript typed value.\r\n * @param {any} value\r\n * @param {} type\r\n * @return {{ value: (string|number|Date|boolean), error: string, reason?: string }}\r\n */\r\nfunction parseValueOfType(value, type, options) {\r\n switch (type) {\r\n case String:\r\n return parseCustomValue(value, StringType)\r\n\r\n case Number:\r\n return parseCustomValue(value, NumberType)\r\n\r\n case Date:\r\n return parseCustomValue(value, (value) => DateType(value, { properties: options.properties }))\r\n\r\n case Boolean:\r\n return parseCustomValue(value, BooleanType)\r\n\r\n default:\r\n if (typeof type === 'function') {\r\n return parseCustomValue(value, type)\r\n }\r\n throw new Error(`Unsupported schema type: ${type && type.name || type}`)\r\n }\r\n}\r\n\r\nexport function getBlock(string, endCharacter, startIndex) {\r\n let i = 0\r\n let substring = ''\r\n let character\r\n while (startIndex + i < string.length) {\r\n const character = string[startIndex + i]\r\n if (character === endCharacter) {\r\n return [substring, i]\r\n }\r\n else if (character === '\"') {\r\n const block = getBlock(string, '\"', startIndex + i + 1)\r\n substring += block[0]\r\n i += '\"'.length + block[1] + '\"'.length\r\n }\r\n else {\r\n substring += character\r\n i++\r\n }\r\n }\r\n return [substring, i]\r\n}\r\n\r\n/**\r\n * Parses a string of comma-separated substrings into an array of substrings.\r\n * (the `export` is just for tests)\r\n * @param {string} string — A string of comma-separated substrings.\r\n * @return {string[]} An array of substrings.\r\n */\r\nexport function parseArray(string, arrayValueSeparator) {\r\n const blocks = []\r\n let index = 0\r\n while (index < string.length) {\r\n const [substring, length] = getBlock(string, arrayValueSeparator, index)\r\n index += length + arrayValueSeparator.length\r\n blocks.push(substring.trim())\r\n }\r\n return blocks\r\n}\r\n\r\n// Transpose a 2D array.\r\n// https://stackoverflow.com/questions/17428587/transposing-a-2d-array-in-javascript\r\nconst transpose = array => array[0].map((_, i) => array.map(row => row[i]))\r\n\r\nfunction validateSchema(schema) {\r\n for (const key of Object.keys(schema)) {\r\n const schemaEntry = schema[key]\r\n // Validate that the `schema` is not using a deprecated `type: nestedSchema` format.\r\n if (typeof schemaEntry.type === 'object' && !Array.isArray(schemaEntry.type)) {\r\n throw new Error('When defining a nested schema, use a `schema` property instead of a `type` property')\r\n }\r\n // Validate that every property has a source `column` title specified for it.\r\n if (!schemaEntry.schema) {\r\n if (!schemaEntry.column) {\r\n throw new Error(`\"column\" not defined for schema entry \"${key}\".`)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction isEmptyValue(value) {\r\n return value === undefined || value === null\r\n}"],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = unpackXlsxFile;
7
- var _fflate = require("fflate");
8
- /**
9
- * Reads XLSX file in a browser.
10
- * @param {(File|Blob|ArrayBuffer)} input - A `File` or an `ArrayBuffer`.
11
- * @return {Promise} Resolves to an object holding XLSX file entries.
12
- */
13
- function unpackXlsxFile(input) {
14
- if (input instanceof File) {
15
- return input.arrayBuffer().then(unpackXlsxArrayBuffer);
16
- }
17
- if (input instanceof Blob) {
18
- return input.arrayBuffer().then(unpackXlsxArrayBuffer);
19
- }
20
- return unpackXlsxArrayBuffer(input);
21
- }
22
-
23
- /**
24
- * Reads XLSX file in a browser from an `ArrayBuffer`.
25
- * @param {ArrayBuffer} input
26
- * @return {Promise} Resolves to an object holding XLSX file entries.
27
- */
28
- function unpackXlsxArrayBuffer(arrayBuffer) {
29
- var archive = new Uint8Array(arrayBuffer);
30
- var contents = (0, _fflate.unzipSync)(archive);
31
- return Promise.resolve(getContents(contents));
32
- // return new Promise((resolve, reject) => {
33
- // unzip(archive, (error, contents) => {
34
- // if (error) {
35
- // return reject(error)
36
- // }
37
- // return resolve(getContents(contents))
38
- // })
39
- // })
40
- }
41
-
42
- function getContents(contents) {
43
- var unzippedFiles = [];
44
- for (var _i = 0, _Object$keys = Object.keys(contents); _i < _Object$keys.length; _i++) {
45
- var key = _Object$keys[_i];
46
- unzippedFiles[key] = (0, _fflate.strFromU8)(contents[key]);
47
- }
48
- return unzippedFiles;
49
- }
50
- //# sourceMappingURL=unpackXlsxFileBrowser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unpackXlsxFileBrowser.js","names":["_fflate","require","unpackXlsxFile","input","File","arrayBuffer","then","unpackXlsxArrayBuffer","Blob","archive","Uint8Array","contents","unzipSync","Promise","resolve","getContents","unzippedFiles","_i","_Object$keys","Object","keys","length","key","strFromU8"],"sources":["../../source/read/unpackXlsxFileBrowser.js"],"sourcesContent":["import { unzipSync, strFromU8 } from 'fflate'\r\n\r\n/**\r\n * Reads XLSX file in a browser.\r\n * @param {(File|Blob|ArrayBuffer)} input - A `File` or an `ArrayBuffer`.\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n\tif (input instanceof File) {\r\n\t\treturn input.arrayBuffer().then(unpackXlsxArrayBuffer)\r\n\t}\r\n\tif (input instanceof Blob) {\r\n\t\treturn input.arrayBuffer().then(unpackXlsxArrayBuffer)\r\n\t}\r\n\treturn unpackXlsxArrayBuffer(input)\r\n}\r\n\r\n/**\r\n * Reads XLSX file in a browser from an `ArrayBuffer`.\r\n * @param {ArrayBuffer} input\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nfunction unpackXlsxArrayBuffer(arrayBuffer) {\r\n\tconst archive = new Uint8Array(arrayBuffer)\r\n\tconst contents = unzipSync(archive)\r\n\treturn Promise.resolve(getContents(contents))\r\n\t// return new Promise((resolve, reject) => {\r\n\t// \tunzip(archive, (error, contents) => {\r\n\t// \t\tif (error) {\r\n\t// \t\t\treturn reject(error)\r\n\t// \t\t}\r\n\t// \t\treturn resolve(getContents(contents))\r\n\t// \t})\r\n\t// })\r\n}\r\n\r\nfunction getContents(contents) {\r\n\tconst unzippedFiles = []\r\n\tfor (const key of Object.keys(contents)) {\r\n\t\tunzippedFiles[key] = strFromU8(contents[key])\r\n\t}\r\n\treturn unzippedFiles\r\n}"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACe,SAASC,cAAcA,CAACC,KAAK,EAAE;EAC7C,IAAIA,KAAK,YAAYC,IAAI,EAAE;IAC1B,OAAOD,KAAK,CAACE,WAAW,CAAC,CAAC,CAACC,IAAI,CAACC,qBAAqB,CAAC;EACvD;EACA,IAAIJ,KAAK,YAAYK,IAAI,EAAE;IAC1B,OAAOL,KAAK,CAACE,WAAW,CAAC,CAAC,CAACC,IAAI,CAACC,qBAAqB,CAAC;EACvD;EACA,OAAOA,qBAAqB,CAACJ,KAAK,CAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASI,qBAAqBA,CAACF,WAAW,EAAE;EAC3C,IAAMI,OAAO,GAAG,IAAIC,UAAU,CAACL,WAAW,CAAC;EAC3C,IAAMM,QAAQ,GAAG,IAAAC,iBAAS,EAACH,OAAO,CAAC;EACnC,OAAOI,OAAO,CAACC,OAAO,CAACC,WAAW,CAACJ,QAAQ,CAAC,CAAC;EAC7C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACD;;AAEA,SAASI,WAAWA,CAACJ,QAAQ,EAAE;EAC9B,IAAMK,aAAa,GAAG,EAAE;EACxB,SAAAC,EAAA,MAAAC,YAAA,GAAkBC,MAAM,CAACC,IAAI,CAACT,QAAQ,CAAC,EAAAM,EAAA,GAAAC,YAAA,CAAAG,MAAA,EAAAJ,EAAA,IAAE;IAApC,IAAMK,GAAG,GAAAJ,YAAA,CAAAD,EAAA;IACbD,aAAa,CAACM,GAAG,CAAC,GAAG,IAAAC,iBAAS,EAACZ,QAAQ,CAACW,GAAG,CAAC,CAAC;EAC9C;EACA,OAAON,aAAa;AACrB"}
@@ -1,86 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = unpackXlsxFile;
8
- var _fs = _interopRequireDefault(require("fs"));
9
- var _stream = _interopRequireWildcard(require("stream"));
10
- var _unzipper = _interopRequireDefault(require("unzipper"));
11
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
14
- // `unzipper` has a bug when it doesn't include "@aws-sdk/client-s3" package in the `dependencies`
15
- // which causes some "bundlers" throw an error.
16
- // https://github.com/ZJONSSON/node-unzipper/issues/330
17
- //
18
- // One workaround is to install "@aws-sdk/client-s3" package manually, which would still lead to increased bundle size.
19
- // If the code is bundled for server-side-use only, that is will not be used in a web browser,
20
- // then the increased bundle size would not be an issue.
21
- //
22
- // Another workaround could be to "alias" "@aws-sdk/client-s3" package in a "bundler" configuration file
23
- // with a path to a `*.js` file containing just "export default null". But that kind of a workaround would also
24
- // result in errors when using other packages that `import` anything from "@aws-sdk/client-s3" package,
25
- // so it's not really a workaround but more of a ticking bomb.
26
- //
27
- /**
28
- * Reads XLSX file in Node.js.
29
- * @param {(string|Stream)} input - A Node.js readable stream or a path to a file.
30
- * @return {Promise} Resolves to an object holding XLSX file entries.
31
- */
32
- function unpackXlsxFile(input) {
33
- // XLSX file is a zip archive.
34
- // The `entries` object stores the files
35
- // and their contents from this XLSX zip archive.
36
- var entries = {};
37
- var stream = input instanceof _stream["default"] ? input : input instanceof Buffer ? createReadableStreamFromBuffer(input) : _fs["default"].createReadStream(input);
38
- return new Promise(function (resolve, reject) {
39
- var entryPromises = [];
40
- stream
41
- // This first "error" listener is for the original stream errors.
42
- .on('error', reject).pipe(_unzipper["default"].Parse())
43
- // This second "error" listener is for the unzip stream errors.
44
- .on('error', reject).on('finish', function () {}).on('close', function () {
45
- Promise.all(entryPromises).then(function () {
46
- return resolve(entries);
47
- });
48
- }).on('entry', function (entry) {
49
- var contents = '';
50
- // To ignore an entry: `entry.autodrain()`.
51
- entryPromises.push(new Promise(function (resolve) {
52
- // It's not clear what encoding are the files inside XLSX in.
53
- // https://stackoverflow.com/questions/45194771/are-xlsx-files-utf-8-encoded-by-definition
54
- // For example, for XML files, encoding is specified at the top node:
55
- // `<?xml version="1.0" encoding="UTF-8"/>`.
56
- //
57
- // `unzipper` supports setting encoding when reading an `entry`.
58
- // https://github.com/ZJONSSON/node-unzipper/issues/35
59
- // https://gitlab.com/catamphetamine/read-excel-file/-/issues/54
60
- //
61
- // If the `entry.setEncoding('utf8')` line would be commented out,
62
- // there's a `nonAsciiCharacterEncoding` test that wouldn't pass.
63
- //
64
- entry.setEncoding('utf8');
65
- //
66
- entry.on('data', function (data) {
67
- return contents += data.toString();
68
- }).on('end', function () {
69
- return resolve(entries[entry.path] = contents);
70
- });
71
- }));
72
- });
73
- });
74
- }
75
-
76
- // Creates a readable stream from a `Buffer`.
77
- function createReadableStreamFromBuffer(buffer) {
78
- // Node.js seems to have a bug in `Readable.from()` function:
79
- // it doesn't correctly handle empty buffers, i.e. it doesn't return a correct stream.
80
- // https://gitlab.com/catamphetamine/read-excel-file/-/issues/106
81
- if (buffer.length === 0) {
82
- throw new Error('No data');
83
- }
84
- return _stream.Readable.from(buffer);
85
- }
86
- //# sourceMappingURL=unpackXlsxFileNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unpackXlsxFileNode.js","names":["_fs","_interopRequireDefault","require","_stream","_interopRequireWildcard","_unzipper","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","unpackXlsxFile","input","entries","stream","Stream","Buffer","createReadableStreamFromBuffer","fs","createReadStream","Promise","resolve","reject","entryPromises","on","pipe","unzip","Parse","all","then","entry","contents","push","setEncoding","data","toString","path","buffer","length","Error","Readable","from"],"sources":["../../source/read/unpackXlsxFileNode.js"],"sourcesContent":["import fs from 'fs'\r\nimport Stream, { Readable } from 'stream'\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/**\r\n * Reads XLSX file in Node.js.\r\n * @param {(string|Stream)} input - A Node.js readable stream or a path to a file.\r\n * @return {Promise} Resolves to an object holding XLSX file entries.\r\n */\r\nexport default function unpackXlsxFile(input) {\r\n // XLSX file is a zip archive.\r\n // The `entries` object stores the files\r\n // and their contents from this XLSX zip archive.\r\n const entries = {}\r\n\r\n const stream = input instanceof Stream\r\n ? input\r\n : (\r\n input instanceof Buffer\r\n ? createReadableStreamFromBuffer(input)\r\n : fs.createReadStream(input)\r\n )\r\n\r\n return new Promise((resolve, reject) => {\r\n const entryPromises = []\r\n\r\n stream\r\n // This first \"error\" listener is for the original stream errors.\r\n .on('error', reject)\r\n .pipe(unzip.Parse())\r\n // This second \"error\" listener is for the unzip stream errors.\r\n .on('error', reject)\r\n .on('finish', () => {\r\n })\r\n .on('close', () => {\r\n Promise.all(entryPromises).then(() => resolve(entries))\r\n })\r\n .on('entry', (entry) => {\r\n let contents = ''\r\n // To ignore an entry: `entry.autodrain()`.\r\n entryPromises.push(new Promise((resolve) => {\r\n // It's not clear what encoding are the files inside XLSX in.\r\n // https://stackoverflow.com/questions/45194771/are-xlsx-files-utf-8-encoded-by-definition\r\n // For example, for XML files, encoding is specified at the top node:\r\n // `<?xml version=\"1.0\" encoding=\"UTF-8\"/>`.\r\n //\r\n // `unzipper` supports setting encoding when reading an `entry`.\r\n // https://github.com/ZJONSSON/node-unzipper/issues/35\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/54\r\n //\r\n // If the `entry.setEncoding('utf8')` line would be commented out,\r\n // there's a `nonAsciiCharacterEncoding` test that wouldn't pass.\r\n //\r\n entry.setEncoding('utf8')\r\n //\r\n entry\r\n .on('data', data => contents += data.toString())\r\n .on('end', () => resolve(entries[entry.path] = contents))\r\n }))\r\n })\r\n })\r\n}\r\n\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}"],"mappings":"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"}
package/index.cjs DELETED
@@ -1,7 +0,0 @@
1
- exports = module.exports = require('./commonjs/read/readXlsxFileBrowser.js').default
2
- exports['default'] = require('./commonjs/read/readXlsxFileBrowser.js').default
3
- exports.readSheetNames = require('./commonjs/read/readSheetNamesBrowser.js').default
4
- exports.parseExcelDate = require('./commonjs/read/parseDate.js').default
5
- exports.Integer = require('./commonjs/types/Integer.js').default
6
- exports.Email = require('./commonjs/types/Email.js').default
7
- exports.URL = require('./commonjs/types/URL.js').default
package/index.cjs.js DELETED
@@ -1,12 +0,0 @@
1
- // This file is deprecated.
2
- // It's the same as `index.cjs`, just with an added `*.js` extension.
3
- // It fixes the issue when some software doesn't see files with `*.cjs` file extensions
4
- // when used as the `main` property value in `package.json`.
5
-
6
- exports = module.exports = require('./commonjs/read/readXlsxFileBrowser.js').default
7
- exports['default'] = require('./commonjs/read/readXlsxFileBrowser.js').default
8
- exports.readSheetNames = require('./commonjs/read/readSheetNamesBrowser.js').default
9
- exports.parseExcelDate = require('./commonjs/read/parseDate.js').default
10
- exports.Integer = require('./commonjs/types/Integer.js').default
11
- exports.Email = require('./commonjs/types/Email.js').default
12
- exports.URL = require('./commonjs/types/URL.js').default
package/index.js DELETED
@@ -1,6 +0,0 @@
1
- export { default as default } from './modules/read/readXlsxFileBrowser.js'
2
- export { default as readSheetNames } from './modules/read/readSheetNamesBrowser.js'
3
- export { default as parseExcelDate } from './modules/read/parseDate.js'
4
- export { default as Integer } from './modules/types/Integer.js'
5
- export { default as Email } from './modules/types/Email.js'
6
- export { default as URL } from './modules/types/URL.js'
@@ -1 +0,0 @@
1
- {"version":3,"file":"readSheetNamesBrowser.js","names":["readXlsxFile","readSheetNames","file","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/read/readSheetNamesBrowser.js"],"sourcesContent":["import readXlsxFile from './readXlsxFileBrowser.js'\r\n\r\n/**\r\n * Reads the list of sheet names in an XLSX file in a web browser.\r\n * @param {file} file - A file being uploaded in the browser.\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,0BAA0B;;AAEnD;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 +0,0 @@
1
- {"version":3,"file":"readSheetNamesNode.js","names":["readXlsxFile","readSheetNames","input","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/read/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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readSheetNamesNode.test.js","names":["path","readSheetNamesNode","describe","it","resolve","then","sheetNames","should","deep","equal"],"sources":["../../source/read/readSheetNamesNode.test.js"],"sourcesContent":["import path from 'path'\r\n\r\nimport readSheetNamesNode from './readSheetNamesNode.js'\r\n\r\ndescribe('readSheetNamesNode', () => {\r\n\tit('should read the list of sheet names in an *.xlsx file in Node.js', () => {\r\n\t\treturn readSheetNamesNode(path.resolve('./test/spreadsheets/multiple-sheets.xlsx')).then((sheetNames) => {\r\n\t\t\tsheetNames.should.deep.equal(['sheet 1', 'sheet 2'])\r\n\t\t})\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,OAAOC,kBAAkB,MAAM,yBAAyB;AAExDC,QAAQ,CAAC,oBAAoB,EAAE,YAAM;EACpCC,EAAE,CAAC,kEAAkE,EAAE,YAAM;IAC5E,OAAOF,kBAAkB,CAACD,IAAI,CAACI,OAAO,CAAC,0CAA0C,CAAC,CAAC,CAACC,IAAI,CAAC,UAACC,UAAU,EAAK;MACxGA,UAAU,CAACC,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readSheetNamesWebWorker.js","names":["readXlsxFile","readSheetNames","file","getSheets","then","sheets","map","sheet","name"],"sources":["../../source/read/readSheetNamesWebWorker.js"],"sourcesContent":["import readXlsxFile from './readXlsxFileWebWorker.js'\r\n\r\n/**\r\n * Reads the list of sheet names in an XLSX file in a Web Worker.\r\n * @param {file} file - The file.\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 +0,0 @@
1
- {"version":3,"file":"readXlsx.js","names":["parseProperties","parseFilePaths","parseStyles","parseSharedStrings","parseSheet","getData","readXlsx","contents","xml","options","arguments","length","undefined","sheet","_objectSpread","getXmlFileContent","filePath","Error","concat","filePaths","values","sharedStrings","styles","properties","getSheets","sheets","map","_ref","name","sheetId","getSheetId","createSheetNotFoundError","rowIndexSourceMap","data","_sheet","relationId","_iterator","_createForOfIteratorHelperLoose","_step","done","value","sheetsList","i","join"],"sources":["../../source/read/readXlsx.js"],"sourcesContent":["import parseProperties from './parseProperties.js'\r\nimport parseFilePaths from './parseFilePaths.js'\r\nimport parseStyles from './parseStyles.js'\r\nimport parseSharedStrings from './parseSharedStrings.js'\r\nimport parseSheet from './parseSheet.js'\r\nimport getData from './getData.js'\r\n\r\n// For an introduction in reading `*.xlsx` files see \"The minimum viable XLSX reader\":\r\n// https://www.brendanlong.com/the-minimum-viable-xlsx-reader.html\r\n\r\n/**\r\n * Reads an (unzipped) XLSX file structure into a 2D array of cells.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @param {number?} options.sheet - Workbook sheet id (`1` by default).\r\n * @param {string?} options.dateFormat - Date format, e.g. \"mm/dd/yyyy\". Values having this format template set will be parsed as dates.\r\n * @param {object} contents - A list of XML files inside XLSX file (which is a zipped directory).\r\n * @return {object} An object of shape `{ data, cells, properties }`. `data: string[][]` is an array of rows, each row being an array of cell values. `cells: string[][]` is an array of rows, each row being an array of cells. `properties: object` is the spreadsheet properties (e.g. whether date epoch is 1904 instead of 1900).\r\n */\r\nexport default function readXlsx(contents, xml, options = {}) {\r\n if (!options.sheet) {\r\n options = {\r\n sheet: 1,\r\n ...options\r\n }\r\n }\r\n\r\n const getXmlFileContent = (filePath) => {\r\n if (!contents[filePath]) {\r\n throw new Error(`\"${filePath}\" file not found inside the *.xlsx file zip archive`)\r\n }\r\n return contents[filePath]\r\n }\r\n\r\n // Some Excel editors don't want to use standard naming scheme for sheet files.\r\n // https://github.com/tidyverse/readxl/issues/104\r\n const filePaths = parseFilePaths(getXmlFileContent('xl/_rels/workbook.xml.rels'), xml)\r\n\r\n // Default file path for \"shared strings\": \"xl/sharedStrings.xml\".\r\n const values = filePaths.sharedStrings\r\n ? parseSharedStrings(getXmlFileContent(filePaths.sharedStrings), xml)\r\n : []\r\n\r\n // Default file path for \"styles\": \"xl/styles.xml\".\r\n const styles = filePaths.styles\r\n ? parseStyles(getXmlFileContent(filePaths.styles), xml)\r\n : {}\r\n\r\n const properties = parseProperties(getXmlFileContent('xl/workbook.xml'), xml)\r\n\r\n // A feature for getting the list of sheets in an Excel file.\r\n // https://github.com/catamphetamine/read-excel-file/issues/14\r\n if (options.getSheets) {\r\n return properties.sheets.map(({ name }) => ({\r\n name\r\n }))\r\n }\r\n\r\n // Find the sheet by name, or take the first one.\r\n const sheetId = getSheetId(options.sheet, properties.sheets)\r\n\r\n // If the sheet wasn't found then throw an error.\r\n // Example: \"xl/worksheets/sheet1.xml\".\r\n if (!sheetId || !filePaths.sheets[sheetId]) {\r\n throw createSheetNotFoundError(options.sheet, properties.sheets)\r\n }\r\n\r\n // Parse sheet data.\r\n const sheet = parseSheet(\r\n getXmlFileContent(filePaths.sheets[sheetId]),\r\n xml,\r\n values,\r\n styles,\r\n properties,\r\n options\r\n )\r\n\r\n options = {\r\n // Create a `rowIndexSourceMap` for the original dataset, if not passed,\r\n // because \"empty\" rows will be dropped from the input data.\r\n rowIndexSourceMap: [],\r\n ...options\r\n }\r\n\r\n // Get spreadsheet data.\r\n const data = getData(sheet, options)\r\n\r\n // Can return properties, if required.\r\n if (options.properties) {\r\n return {\r\n data,\r\n properties\r\n }\r\n }\r\n\r\n // Return spreadsheet data.\r\n return data\r\n}\r\n\r\nfunction getSheetId(sheet, sheets) {\r\n if (typeof sheet === 'number') {\r\n const _sheet = sheets[sheet - 1]\r\n return _sheet && _sheet.relationId\r\n }\r\n for (const _sheet of sheets) {\r\n if (_sheet.name === sheet) {\r\n return _sheet.relationId\r\n }\r\n }\r\n}\r\n\r\nfunction createSheetNotFoundError(sheet, sheets) {\r\n const sheetsList = sheets && sheets.map((sheet, i) => `\"${sheet.name}\" (#${i + 1})`).join(', ')\r\n return new Error(`Sheet ${typeof sheet === 'number' ? '#' + sheet : '\"' + sheet + '\"'} not found in the *.xlsx file.${sheets ? ' Available sheets: ' + sheetsList + '.' : ''}`)\r\n}"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileBrowser.js","names":["xml","unpackXlsxFile","readXlsxFileContents","readXlsxFile","file","options","arguments","length","undefined","then","entries"],"sources":["../../source/read/readXlsxFileBrowser.js"],"sourcesContent":["import xml from '../xml/xmlBrowser.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileBrowser.js'\r\nimport readXlsxFileContents from './readXlsxFileContents.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells in a browser.\r\n * @param {file} file - A file being uploaded in the browser.\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((entries) => readXlsxFileContents(entries, xml, options))\r\n}"],"mappings":"AAAA,OAAOA,GAAG,MAAM,sBAAsB;AAEtC,OAAOC,cAAc,MAAM,4BAA4B;AACvD,OAAOC,oBAAoB,MAAM,2BAA2B;;AAE5D;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,OAAO;IAAA,OAAKR,oBAAoB,CAACQ,OAAO,EAAEV,GAAG,EAAEK,OAAO,CAAC;EAAA,EAAC;AACjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileContents.js","names":["readXlsx","mapToObjects","readXlsxFileContents","entries","xml","_ref","schema","options","_objectWithoutProperties","_excluded","map","Error","result","_objectSpread","properties","data"],"sources":["../../source/read/readXlsxFileContents.js"],"sourcesContent":["import readXlsx from './readXlsx.js'\r\n\r\nimport mapToObjects from './schema/mapToObjects.js'\r\n\r\nexport default function readXlsxFileContents(entries, xml, { schema, ...options}) {\r\n\tif (options.map) {\r\n\t\tthrow new Error('`map` option was removed. Pass a `schema` option instead.')\r\n\t}\r\n\t// `readXlsx()` function creates `options.rowIndexSourceMap` property.\r\n\t// It maps parsed data row indexes to spreadsheet row indexes.\r\n\t// That's because empty rows are ignored (discarded) when parsing using `schema`.\r\n\tconst result = readXlsx(entries, xml, { ...options, properties: schema || options.properties })\r\n\tif (schema) {\r\n\t\treturn mapToObjects(result.data, schema, {\r\n\t\t\t...options,\r\n\t\t\tproperties: result.properties\r\n\t\t})\r\n\t}\r\n\treturn result\r\n}"],"mappings":";;;;;;;;;AAAA,OAAOA,QAAQ,MAAM,eAAe;AAEpC,OAAOC,YAAY,MAAM,0BAA0B;AAEnD,eAAe,SAASC,oBAAoBA,CAACC,OAAO,EAAEC,GAAG,EAAAC,IAAA,EAAyB;EAAA,IAArBC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAKC,OAAO,GAAAC,wBAAA,CAAAH,IAAA,EAAAI,SAAA;EAC9E,IAAIF,OAAO,CAACG,GAAG,EAAE;IAChB,MAAM,IAAIC,KAAK,CAAC,2DAA2D,CAAC;EAC7E;EACA;EACA;EACA;EACA,IAAMC,MAAM,GAAGZ,QAAQ,CAACG,OAAO,EAAEC,GAAG,EAAAS,aAAA,CAAAA,aAAA,KAAON,OAAO;IAAEO,UAAU,EAAER,MAAM,IAAIC,OAAO,CAACO;EAAU,EAAE,CAAC;EAC/F,IAAIR,MAAM,EAAE;IACX,OAAOL,YAAY,CAACW,MAAM,CAACG,IAAI,EAAET,MAAM,EAAAO,aAAA,CAAAA,aAAA,KACnCN,OAAO;MACVO,UAAU,EAAEF,MAAM,CAACE;IAAU,EAC7B,CAAC;EACH;EACA,OAAOF,MAAM;AACd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileNode.js","names":["xml","unpackXlsxFile","readXlsxFileContents","readXlsxFile","input","options","arguments","length","undefined","then","entries"],"sources":["../../source/read/readXlsxFileNode.js"],"sourcesContent":["import xml from '../xml/xml.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileNode.js'\r\nimport readXlsxFileContents from './readXlsxFileContents.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells in a browser.\r\n * @param {(string|Stream|Buffer)} input - A Node.js readable stream or a `Buffer` 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((entries) => readXlsxFileContents(entries, xml, options))\r\n}"],"mappings":"AAAA,OAAOA,GAAG,MAAM,eAAe;AAE/B,OAAOC,cAAc,MAAM,yBAAyB;AACpD,OAAOC,oBAAoB,MAAM,2BAA2B;;AAE5D;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,OAAO;IAAA,OAAKR,oBAAoB,CAACQ,OAAO,EAAEV,GAAG,EAAEK,OAAO,CAAC;EAAA,EAAC;AACjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileNode.test.js","names":["path","readXlsxFileNode","describe","it","schema","date","column","type","Date","numberOfStudents","Number","required","course","isFree","Boolean","cost","title","String","contact","value","rowIndexSourceMap","resolve","then","_ref","rows","getTime","should","deep","equal","convertToUTCTimezone","getTimezoneOffset"],"sources":["../../source/read/readXlsxFileNode.test.js"],"sourcesContent":["import path from 'path'\r\n\r\nimport readXlsxFileNode from './readXlsxFileNode.js'\r\n\r\ndescribe('readXlsxFileNode', () => {\r\n\tit('should read *.xlsx file on Node.js and parse it to JSON', () => {\r\n\t\tconst schema = {\r\n\t\t\tdate: {\r\n\t\t\t\tcolumn: 'START DATE',\r\n\t\t\t\ttype: Date\r\n\t\t\t},\r\n\t\t\tnumberOfStudents: {\r\n\t\t\t\tcolumn: 'NUMBER OF STUDENTS',\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tcourse: {\r\n\t\t\t\tschema: {\r\n\t\t\t\t\tisFree: {\r\n\t\t\t\t\t\tcolumn: 'IS FREE',\r\n\t\t\t\t\t\ttype: Boolean\r\n\t\t\t\t\t\t// Excel stores booleans as numbers:\r\n\t\t\t\t\t\t// `1` is `true` and `0` is `false`.\r\n\t\t\t\t\t\t// Such numbers are parsed into booleans.\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcost: {\r\n\t\t\t\t\t\tcolumn: 'COST',\r\n\t\t\t\t\t\ttype: Number\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\tcolumn: 'COURSE TITLE',\r\n\t\t\t\t\t\ttype: String\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcontact: {\r\n\t\t\t\tcolumn: 'CONTACT',\r\n\t\t\t\trequired: true,\r\n\t\t\t\ttype(value) {\r\n\t\t\t\t\treturn '+11234567890'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst rowIndexSourceMap = []\r\n\r\n\t\treturn readXlsxFileNode(path.resolve('./test/spreadsheets/course.xlsx'), { schema, rowIndexSourceMap }).then(({ rows }) => {\r\n\t\t\trows[0].date = rows[0].date.getTime()\r\n\t\t\trows.should.deep.equal([{\r\n\t\t\t\tdate: convertToUTCTimezone(new Date(2018, 2, 24)).getTime(),\r\n\t\t\t\tnumberOfStudents: 123,\r\n\t\t\t\tcourse: {\r\n\t\t\t\t\tisFree: false,\r\n\t\t\t\t\tcost: 210.45,\r\n\t\t\t\t\ttitle: 'Chemistry'\r\n\t\t\t\t},\r\n\t\t\t\tcontact: '+11234567890'\r\n\t\t\t}])\r\n\t\t\trowIndexSourceMap.should.deep.equal([0, 1])\r\n\t\t})\r\n\t})\r\n})\r\n\r\n// Converts timezone to UTC while preserving the same time\r\nfunction convertToUTCTimezone(date) {\r\n\t// Doesn't account for leap seconds but I guess that's ok\r\n\t// given that javascript's own `Date()` does not either.\r\n\t// https://www.timeanddate.com/time/leap-seconds-background.html\r\n\t//\r\n\t// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\r\n\t//\r\n\treturn new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\r\n}\r\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,OAAOC,gBAAgB,MAAM,uBAAuB;AAEpDC,QAAQ,CAAC,kBAAkB,EAAE,YAAM;EAClCC,EAAE,CAAC,yDAAyD,EAAE,YAAM;IACnE,IAAMC,MAAM,GAAG;MACdC,IAAI,EAAE;QACLC,MAAM,EAAE,YAAY;QACpBC,IAAI,EAAEC;MACP,CAAC;MACDC,gBAAgB,EAAE;QACjBH,MAAM,EAAE,oBAAoB;QAC5BC,IAAI,EAAEG,MAAM;QACZC,QAAQ,EAAE;MACX,CAAC;MACDC,MAAM,EAAE;QACPR,MAAM,EAAE;UACPS,MAAM,EAAE;YACPP,MAAM,EAAE,SAAS;YACjBC,IAAI,EAAEO;YACN;YACA;YACA;UACD,CAAC;;UACDC,IAAI,EAAE;YACLT,MAAM,EAAE,MAAM;YACdC,IAAI,EAAEG;UACP,CAAC;UACDM,KAAK,EAAE;YACNV,MAAM,EAAE,cAAc;YACtBC,IAAI,EAAEU;UACP;QACD;MACD,CAAC;MACDC,OAAO,EAAE;QACRZ,MAAM,EAAE,SAAS;QACjBK,QAAQ,EAAE,IAAI;QACdJ,IAAI,WAAAA,KAACY,KAAK,EAAE;UACX,OAAO,cAAc;QACtB;MACD;IACD,CAAC;IAED,IAAMC,iBAAiB,GAAG,EAAE;IAE5B,OAAOnB,gBAAgB,CAACD,IAAI,CAACqB,OAAO,CAAC,iCAAiC,CAAC,EAAE;MAAEjB,MAAM,EAANA,MAAM;MAAEgB,iBAAiB,EAAjBA;IAAkB,CAAC,CAAC,CAACE,IAAI,CAAC,UAAAC,IAAA,EAAc;MAAA,IAAXC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MACnHA,IAAI,CAAC,CAAC,CAAC,CAACnB,IAAI,GAAGmB,IAAI,CAAC,CAAC,CAAC,CAACnB,IAAI,CAACoB,OAAO,CAAC,CAAC;MACrCD,IAAI,CAACE,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;QACvBvB,IAAI,EAAEwB,oBAAoB,CAAC,IAAIrB,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAACiB,OAAO,CAAC,CAAC;QAC3DhB,gBAAgB,EAAE,GAAG;QACrBG,MAAM,EAAE;UACPC,MAAM,EAAE,KAAK;UACbE,IAAI,EAAE,MAAM;UACZC,KAAK,EAAE;QACR,CAAC;QACDE,OAAO,EAAE;MACV,CAAC,CAAC,CAAC;MACHE,iBAAiB,CAACM,MAAM,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC;;AAEF;AACA,SAASC,oBAAoBA,CAACxB,IAAI,EAAE;EACnC;EACA;EACA;EACA;EACA;EACA;EACA,OAAO,IAAIG,IAAI,CAACH,IAAI,CAACoB,OAAO,CAAC,CAAC,GAAGpB,IAAI,CAACyB,iBAAiB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readXlsxFileWebWorker.js","names":["xml","unpackXlsxFile","readXlsxFileContents","readXlsxFile","file","options","arguments","length","undefined","then","entries"],"sources":["../../source/read/readXlsxFileWebWorker.js"],"sourcesContent":["import xml from '../xml/xml.js'\r\n\r\nimport unpackXlsxFile from './unpackXlsxFileBrowser.js'\r\nimport readXlsxFileContents from './readXlsxFileContents.js'\r\n\r\n/**\r\n * Reads XLSX file into a 2D array of cells in a web worker.\r\n * @param {file} file - The 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(file, options = {}) {\r\n\treturn unpackXlsxFile(file)\r\n\t\t.then((entries) => readXlsxFileContents(entries, xml, options))\r\n}"],"mappings":"AAAA,OAAOA,GAAG,MAAM,eAAe;AAE/B,OAAOC,cAAc,MAAM,4BAA4B;AACvD,OAAOC,oBAAoB,MAAM,2BAA2B;;AAE5D;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,OAAO;IAAA,OAAKR,oBAAoB,CAACQ,OAAO,EAAEV,GAAG,EAAEK,OAAO,CAAC;EAAA,EAAC;AACjE"}