read-excel-file 9.3.3 → 9.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +32 -2
- package/browser/index.cjs +3 -0
- package/browser/index.d.ts +16 -0
- package/browser/index.js +4 -1
- package/bundle/read-excel-file.min.js +1 -1
- package/bundle/read-excel-file.min.js.map +1 -1
- package/commonjs/export/convertInputToNodeStream.js +0 -12
- package/commonjs/export/convertInputToNodeStream.js.map +1 -1
- package/commonjs/export/parseSheet.js +14 -7
- package/commonjs/export/parseSheet.js.map +1 -1
- package/commonjs/export/readSheetBrowser.js +3 -6
- package/commonjs/export/readSheetBrowser.js.map +1 -1
- package/commonjs/export/readSheetNode.js +3 -6
- package/commonjs/export/readSheetNode.js.map +1 -1
- package/commonjs/export/readSheetUniversal.js +2 -2
- package/commonjs/export/readSheetUniversal.js.map +1 -1
- package/commonjs/export/readSheetWebWorker.js +5 -5
- package/commonjs/export/readSheetWebWorker.js.map +1 -1
- package/commonjs/export/readXlsxFileBrowser.js +3 -6
- package/commonjs/export/readXlsxFileBrowser.js.map +1 -1
- package/commonjs/export/readXlsxFileNode.js +3 -6
- package/commonjs/export/readXlsxFileNode.js.map +1 -1
- package/commonjs/export/readXlsxFileUniversal.js +2 -2
- package/commonjs/export/readXlsxFileUniversal.js.map +1 -1
- package/commonjs/export/readXlsxFileWebWorker.js +5 -5
- package/commonjs/export/readXlsxFileWebWorker.js.map +1 -1
- package/commonjs/export/unpackXlsxFileBrowser.js +15 -4
- package/commonjs/export/unpackXlsxFileBrowser.js.map +1 -1
- package/commonjs/export/unpackXlsxFileBrowser.test.js.map +1 -0
- package/commonjs/export/unpackXlsxFileNode.js +32 -5
- package/commonjs/export/unpackXlsxFileNode.js.map +1 -1
- package/commonjs/export/unpackXlsxFileNode.test.js.map +1 -0
- package/commonjs/export/unpackXlsxFileUniversal.js +14 -3
- package/commonjs/export/unpackXlsxFileUniversal.js.map +1 -1
- package/commonjs/export/unpackXlsxFileUniversal.test.js.map +1 -0
- package/commonjs/parseSheetData/parseSheetData.js +9 -6
- package/commonjs/parseSheetData/parseSheetData.js.map +1 -1
- package/commonjs/saxen/parser.js +1 -1
- package/commonjs/saxen/parser.js.map +1 -1
- package/commonjs/utility/convertValuesFromUint8ArraysToStrings.js +100 -0
- package/commonjs/utility/convertValuesFromUint8ArraysToStrings.js.map +1 -0
- package/commonjs/xlsx/InvalidSpreadsheetError.js +55 -0
- package/commonjs/xlsx/InvalidSpreadsheetError.js.map +1 -0
- package/commonjs/xlsx/SheetNotFoundError.js +55 -0
- package/commonjs/xlsx/SheetNotFoundError.js.map +1 -0
- package/commonjs/xlsx/file/InputValidationStream.js +101 -0
- package/commonjs/xlsx/file/InputValidationStream.js.map +1 -0
- package/commonjs/xlsx/file/InputValidationStream.test.js.map +1 -0
- package/commonjs/xlsx/file/InvalidInputError.js +105 -0
- package/commonjs/xlsx/file/InvalidInputError.js.map +1 -0
- package/commonjs/xlsx/file/createFileTypeDetector.js +70 -0
- package/commonjs/xlsx/file/createFileTypeDetector.js.map +1 -0
- package/commonjs/xlsx/file/createFileTypeDetector.test.js.map +1 -0
- package/commonjs/xlsx/file/validateLeadingBytes.js +47 -0
- package/commonjs/xlsx/file/validateLeadingBytes.js.map +1 -0
- package/commonjs/xlsx/file/validateLeadingBytes.test.js.map +1 -0
- package/commonjs/xlsx/isDateFormat.js +32 -27
- package/commonjs/xlsx/isDateFormat.js.map +1 -1
- package/commonjs/xlsx/isDateFormatStyle.js +19 -21
- package/commonjs/xlsx/isDateFormatStyle.js.map +1 -1
- package/commonjs/xlsx/parseCell.js +252 -115
- package/commonjs/xlsx/parseCell.js.map +1 -1
- package/commonjs/xlsx/parseCellAddress.js +22 -18
- package/commonjs/xlsx/parseCellAddress.js.map +1 -1
- package/commonjs/xlsx/parseExcelDate.js +4 -124
- package/commonjs/xlsx/parseExcelDate.js.map +1 -1
- package/commonjs/xlsx/parseExcelDate.test.js.map +1 -1
- package/commonjs/xlsx/parseExcelTimestamp.js +139 -0
- package/commonjs/xlsx/parseExcelTimestamp.js.map +1 -0
- package/commonjs/xlsx/parseFilePaths.js +48 -47
- package/commonjs/xlsx/parseFilePaths.js.map +1 -1
- package/commonjs/xlsx/parseSharedStrings.js +91 -36
- package/commonjs/xlsx/parseSharedStrings.js.map +1 -1
- package/commonjs/xlsx/parseSheet.js +527 -69
- package/commonjs/xlsx/parseSheet.js.map +1 -1
- package/commonjs/xlsx/parseSpreadsheetContents.js +154 -83
- package/commonjs/xlsx/parseSpreadsheetContents.js.map +1 -1
- package/commonjs/xlsx/parseSpreadsheetInfo.js +60 -59
- package/commonjs/xlsx/parseSpreadsheetInfo.js.map +1 -1
- package/commonjs/xlsx/parseStyles.js +75 -75
- package/commonjs/xlsx/parseStyles.js.map +1 -1
- package/commonjs/xml/parseXml.js +112 -0
- package/commonjs/xml/parseXml.js.map +1 -0
- package/commonjs/xml/parseXml.test.js.map +1 -0
- package/commonjs/xml/parseXmlStream.js.map +1 -1
- package/commonjs/xml/parseXmlStream.sax.js +69 -28
- package/commonjs/xml/parseXmlStream.sax.js.map +1 -1
- package/commonjs/xml/parseXmlStream.saxen.js +66 -40
- package/commonjs/xml/parseXmlStream.saxen.js.map +1 -1
- package/commonjs/zip/UnzipError.js +55 -0
- package/commonjs/zip/UnzipError.js.map +1 -0
- package/commonjs/zip/unzipFromArrayBuffer.js +21 -1
- package/commonjs/zip/unzipFromArrayBuffer.js.map +1 -1
- package/commonjs/zip/unzipFromArrayBuffer.test.js.map +1 -0
- package/commonjs/zip/unzipFromStream.fflate.js +43 -35
- package/commonjs/zip/unzipFromStream.fflate.js.map +1 -1
- package/commonjs/zip/unzipFromStream.js +188 -6
- package/commonjs/zip/unzipFromStream.js.map +1 -1
- package/commonjs/zip/unzipFromStream.unzipper.js +19 -34
- package/commonjs/zip/unzipFromStream.unzipper.js.map +1 -1
- package/modules/export/convertInputToNodeStream.js +0 -12
- package/modules/export/convertInputToNodeStream.js.map +1 -1
- package/modules/export/parseSheet.js +13 -6
- package/modules/export/parseSheet.js.map +1 -1
- package/modules/export/readSheetBrowser.js +3 -5
- package/modules/export/readSheetBrowser.js.map +1 -1
- package/modules/export/readSheetNode.js +3 -5
- package/modules/export/readSheetNode.js.map +1 -1
- package/modules/export/readSheetUniversal.js +2 -2
- package/modules/export/readSheetUniversal.js.map +1 -1
- package/modules/export/readSheetWebWorker.js +7 -8
- package/modules/export/readSheetWebWorker.js.map +1 -1
- package/modules/export/readXlsxFileBrowser.js +3 -5
- package/modules/export/readXlsxFileBrowser.js.map +1 -1
- package/modules/export/readXlsxFileNode.js +3 -5
- package/modules/export/readXlsxFileNode.js.map +1 -1
- package/modules/export/readXlsxFileUniversal.js +2 -2
- package/modules/export/readXlsxFileUniversal.js.map +1 -1
- package/modules/export/readXlsxFileWebWorker.js +7 -8
- package/modules/export/readXlsxFileWebWorker.js.map +1 -1
- package/modules/export/unpackXlsxFileBrowser.js +15 -4
- package/modules/export/unpackXlsxFileBrowser.js.map +1 -1
- package/modules/export/unpackXlsxFileBrowser.test.js.map +1 -0
- package/modules/export/unpackXlsxFileNode.js +32 -5
- package/modules/export/unpackXlsxFileNode.js.map +1 -1
- package/modules/export/unpackXlsxFileNode.test.js.map +1 -0
- package/modules/export/unpackXlsxFileUniversal.js +14 -3
- package/modules/export/unpackXlsxFileUniversal.js.map +1 -1
- package/modules/export/unpackXlsxFileUniversal.test.js.map +1 -0
- package/modules/parseSheetData/parseSheetData.js +9 -6
- package/modules/parseSheetData/parseSheetData.js.map +1 -1
- package/modules/saxen/parser.js +1 -1
- package/modules/saxen/parser.js.map +1 -1
- package/modules/utility/convertValuesFromUint8ArraysToStrings.js +92 -0
- package/modules/utility/convertValuesFromUint8ArraysToStrings.js.map +1 -0
- package/modules/xlsx/InvalidSpreadsheetError.js +50 -0
- package/modules/xlsx/InvalidSpreadsheetError.js.map +1 -0
- package/modules/xlsx/SheetNotFoundError.js +50 -0
- package/modules/xlsx/SheetNotFoundError.js.map +1 -0
- package/modules/xlsx/file/InputValidationStream.js +96 -0
- package/modules/xlsx/file/InputValidationStream.js.map +1 -0
- package/modules/xlsx/file/InputValidationStream.test.js.map +1 -0
- package/modules/xlsx/file/InvalidInputError.js +100 -0
- package/modules/xlsx/file/InvalidInputError.js.map +1 -0
- package/modules/xlsx/file/createFileTypeDetector.js +63 -0
- package/modules/xlsx/file/createFileTypeDetector.js.map +1 -0
- package/modules/xlsx/file/createFileTypeDetector.test.js.map +1 -0
- package/modules/xlsx/file/validateLeadingBytes.js +37 -0
- package/modules/xlsx/file/validateLeadingBytes.js.map +1 -0
- package/modules/xlsx/file/validateLeadingBytes.test.js.map +1 -0
- package/modules/xlsx/isDateFormat.js +31 -27
- package/modules/xlsx/isDateFormat.js.map +1 -1
- package/modules/xlsx/isDateFormatStyle.js +18 -21
- package/modules/xlsx/isDateFormatStyle.js.map +1 -1
- package/modules/xlsx/parseCell.js +251 -111
- package/modules/xlsx/parseCell.js.map +1 -1
- package/modules/xlsx/parseCellAddress.js +21 -18
- package/modules/xlsx/parseCellAddress.js.map +1 -1
- package/modules/xlsx/parseExcelDate.js +4 -124
- package/modules/xlsx/parseExcelDate.js.map +1 -1
- package/modules/xlsx/parseExcelDate.test.js.map +1 -1
- package/modules/xlsx/parseExcelTimestamp.js +133 -0
- package/modules/xlsx/parseExcelTimestamp.js.map +1 -0
- package/modules/xlsx/parseFilePaths.js +48 -47
- package/modules/xlsx/parseFilePaths.js.map +1 -1
- package/modules/xlsx/parseSharedStrings.js +91 -37
- package/modules/xlsx/parseSharedStrings.js.map +1 -1
- package/modules/xlsx/parseSheet.js +526 -68
- package/modules/xlsx/parseSheet.js.map +1 -1
- package/modules/xlsx/parseSpreadsheetContents.js +153 -81
- package/modules/xlsx/parseSpreadsheetContents.js.map +1 -1
- package/modules/xlsx/parseSpreadsheetInfo.js +60 -59
- package/modules/xlsx/parseSpreadsheetInfo.js.map +1 -1
- package/modules/xlsx/parseStyles.js +75 -75
- package/modules/xlsx/parseStyles.js.map +1 -1
- package/modules/xml/parseXml.js +106 -0
- package/modules/xml/parseXml.js.map +1 -0
- package/modules/xml/parseXml.test.js.map +1 -0
- package/modules/xml/parseXmlStream.js +2 -0
- package/modules/xml/parseXmlStream.js.map +1 -1
- package/modules/xml/parseXmlStream.sax.js +69 -28
- package/modules/xml/parseXmlStream.sax.js.map +1 -1
- package/modules/xml/parseXmlStream.saxen.js +67 -40
- package/modules/xml/parseXmlStream.saxen.js.map +1 -1
- package/modules/zip/UnzipError.js +49 -0
- package/modules/zip/UnzipError.js.map +1 -0
- package/modules/zip/unzipFromArrayBuffer.js +21 -1
- package/modules/zip/unzipFromArrayBuffer.js.map +1 -1
- package/modules/zip/unzipFromArrayBuffer.test.js.map +1 -0
- package/modules/zip/unzipFromStream.fflate.js +41 -35
- package/modules/zip/unzipFromStream.fflate.js.map +1 -1
- package/modules/zip/unzipFromStream.js +124 -1
- package/modules/zip/unzipFromStream.js.map +1 -1
- package/modules/zip/unzipFromStream.unzipper.js +19 -35
- package/modules/zip/unzipFromStream.unzipper.js.map +1 -1
- package/node/index.cjs +3 -0
- package/node/index.d.ts +16 -0
- package/node/index.js +3 -0
- package/package.json +5 -3
- package/types/InvalidInputError.d.ts +16 -0
- package/types/InvalidSpreadsheetError.d.ts +4 -0
- package/types/SheetNotFoundError.d.ts +4 -0
- package/universal/index.cjs +3 -0
- package/universal/index.d.ts +16 -0
- package/universal/index.js +3 -0
- package/web-worker/index.cjs +3 -0
- package/web-worker/index.d.ts +16 -0
- package/web-worker/index.js +3 -0
- package/commonjs/export/convertValuesFromUint8ArraysToStrings.js +0 -23
- package/commonjs/export/convertValuesFromUint8ArraysToStrings.js.map +0 -1
- package/commonjs/xlsx/convertCellsToData2dArray.js +0 -84
- package/commonjs/xlsx/convertCellsToData2dArray.js.map +0 -1
- package/commonjs/xlsx/dropEmptyColumns.js +0 -40
- package/commonjs/xlsx/dropEmptyColumns.js.map +0 -1
- package/commonjs/xlsx/dropEmptyColumns.test.js.map +0 -1
- package/commonjs/xlsx/dropEmptyRows.js +0 -43
- package/commonjs/xlsx/dropEmptyRows.js.map +0 -1
- package/commonjs/xlsx/dropEmptyRows.test.js.map +0 -1
- package/commonjs/xlsx/parseCellValue.js +0 -186
- package/commonjs/xlsx/parseCellValue.js.map +0 -1
- package/commonjs/xlsx/parseNumber.js +0 -20
- package/commonjs/xlsx/parseNumber.js.map +0 -1
- package/commonjs/xlsx/parseSharedString.js +0 -64
- package/commonjs/xlsx/parseSharedString.js.map +0 -1
- package/commonjs/xlsx/parseSheetData.js +0 -68
- package/commonjs/xlsx/parseSheetData.js.map +0 -1
- package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js +0 -29
- package/commonjs/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +0 -1
- package/commonjs/xml/parseXmlStream.saxen.code.js +0 -953
- package/commonjs/xml/parseXmlStream.saxen.code.js.map +0 -1
- package/commonjs/xml/parseXmlStream.test.js.map +0 -1
- package/modules/export/convertValuesFromUint8ArraysToStrings.js +0 -17
- package/modules/export/convertValuesFromUint8ArraysToStrings.js.map +0 -1
- package/modules/xlsx/convertCellsToData2dArray.js +0 -77
- package/modules/xlsx/convertCellsToData2dArray.js.map +0 -1
- package/modules/xlsx/dropEmptyColumns.js +0 -34
- package/modules/xlsx/dropEmptyColumns.js.map +0 -1
- package/modules/xlsx/dropEmptyColumns.test.js.map +0 -1
- package/modules/xlsx/dropEmptyRows.js +0 -37
- package/modules/xlsx/dropEmptyRows.js.map +0 -1
- package/modules/xlsx/dropEmptyRows.test.js.map +0 -1
- package/modules/xlsx/parseCellValue.js +0 -180
- package/modules/xlsx/parseCellValue.js.map +0 -1
- package/modules/xlsx/parseNumber.js +0 -14
- package/modules/xlsx/parseNumber.js.map +0 -1
- package/modules/xlsx/parseSharedString.js +0 -55
- package/modules/xlsx/parseSharedString.js.map +0 -1
- package/modules/xlsx/parseSheetData.js +0 -55
- package/modules/xlsx/parseSheetData.js.map +0 -1
- package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js +0 -23
- package/modules/xlsx/reconstructSheetDimensionsFromSheetCells.js.map +0 -1
- package/modules/xml/parseXmlStream.saxen.code.js +0 -947
- package/modules/xml/parseXmlStream.saxen.code.js.map +0 -1
- package/modules/xml/parseXmlStream.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseXmlStream.saxen.code.js","names":["Parser","options","fromCharCode","String","hasOwnProperty","Object","prototype","ENTITY_PATTERN","ENTITY_MAPPING","keys","forEach","k","toUpperCase","replaceEntities","_","d","x","z","call","parseInt","decodeEntities","s","length","indexOf","replace","NON_WHITESPACE_OUTSIDE_ROOT_NODE","error","msg","Error","missingNamespaceForPrefix","prefix","getter","getFn","cloneNsMatrix","nsMatrix","clone","key","uriPrefix","buildNsMatrix","nsUriToPrefix","uri","noopGetContext","line","column","throwFunc","err","proxy","onText","onOpenTag","onCloseTag","onCDATA","onError","onWarning","onComment","onQuestion","onAttention","getContext","maybeNS","isNamespace","returnError","parseStop","handleError","handleWarning","name","cb","nsMap","_typeof","_nsUriToPrefix","xml","parse","nsMatrixStack","_nsMatrix","nodeStack","anonymousNsCount","tagStart","tagEnd","i","j","y","q","w","v","xmlns","elementName","_elementName","elementProxy","attrsString","attrsStart","cachedAttrs","getAttrs","nsUri","nsUriPrefix","nsName","defaultAlias","attrList","l","hasNewMatrix","newalias","value","alias","attrs","seenAttrs","skipAttr","parseAttr","charCodeAt","substring","substr","push","getParseContext","splitsRe","startOfLine","endOfLine","match","data","exec","index","create","trim","isNaN","pop"],"sources":["../../source/xml/parseXmlStream.saxen.code.js"],"sourcesContent":["// Here it uses a copy-paste of `saxen` source code instead of importing the `saxen` package itself.\r\n// The reason is that `worker-f` package is used to run this XML parser in a separate thread,\r\n// and doing that requires the entire code to reside in a single \"self-contained\" function.\r\n// import { Parser } from 'saxen'\r\n\r\n// This code was copy-pasted from `saxen` repository on Jun 23rd, 2026.\r\n// The reason is that `worker-f` package is used to run `saxen` XML parser in a separate thread,\r\n// and doing that requires the entire `saxen` code to reside in a single \"self-contained\" function.\r\n\r\nexport function Parser(options) {\r\n // Copy-pasted from file: decode.js\r\n\r\n var fromCharCode = String.fromCharCode;\r\n\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var ENTITY_PATTERN = /&#(\\d+);|&#x([0-9a-f]+);|&(\\w+);/ig;\r\n\r\n var ENTITY_MAPPING = {\r\n 'amp': '&',\r\n 'apos': '\\'',\r\n 'gt': '>',\r\n 'lt': '<',\r\n 'quot': '\"'\r\n };\r\n\r\n // map UPPERCASE variants of supported special chars\r\n Object.keys(ENTITY_MAPPING).forEach(function(k) {\r\n ENTITY_MAPPING[k.toUpperCase()] = ENTITY_MAPPING[k];\r\n });\r\n\r\n\r\n function replaceEntities(_, d, x, z) {\r\n\r\n // reserved names, i.e. \r\n if (z) {\r\n if (hasOwnProperty.call(ENTITY_MAPPING, z)) {\r\n return ENTITY_MAPPING[z];\r\n } else {\r\n\r\n // fall back to original value\r\n return '&' + z + ';';\r\n }\r\n }\r\n\r\n // decimal encoded char\r\n if (d) {\r\n return fromCharCode(d);\r\n }\r\n\r\n // hex encoded char\r\n return fromCharCode(parseInt(x, 16));\r\n }\r\n\r\n\r\n /**\r\n * A basic entity decoder that can decode a minimal\r\n * sub-set of reserved names (&) as well as\r\n * hex (ય) and decimal (ӏ) encoded characters.\r\n *\r\n * @param {string} s\r\n *\r\n * @return {string} decoded string\r\n */\r\n function decodeEntities(s) {\r\n if (s.length > 3 && s.indexOf('&') !== -1) {\r\n return s.replace(ENTITY_PATTERN, replaceEntities);\r\n }\r\n\r\n return s;\r\n }\r\n\r\n // Copy-pasted from file: parser.js\r\n\r\n var NON_WHITESPACE_OUTSIDE_ROOT_NODE = 'non-whitespace outside of root node';\r\n\r\n function error(msg) {\r\n return new Error(msg);\r\n }\r\n\r\n function missingNamespaceForPrefix(prefix) {\r\n return 'missing namespace for prefix <' + prefix + '>';\r\n }\r\n\r\n function getter(getFn) {\r\n return {\r\n 'get': getFn,\r\n 'enumerable': true\r\n };\r\n }\r\n\r\n function cloneNsMatrix(nsMatrix) {\r\n var clone = {}, key;\r\n for (key in nsMatrix) {\r\n clone[key] = nsMatrix[key];\r\n }\r\n return clone;\r\n }\r\n\r\n function uriPrefix(prefix) {\r\n return prefix + '$uri';\r\n }\r\n\r\n function buildNsMatrix(nsUriToPrefix) {\r\n var nsMatrix = {},\r\n uri,\r\n prefix;\r\n\r\n for (uri in nsUriToPrefix) {\r\n prefix = nsUriToPrefix[uri];\r\n nsMatrix[prefix] = prefix;\r\n nsMatrix[uriPrefix(prefix)] = uri;\r\n }\r\n\r\n return nsMatrix;\r\n }\r\n\r\n function noopGetContext() {\r\n return { line: 0, column: 0 };\r\n }\r\n\r\n function throwFunc(err) {\r\n throw err;\r\n }\r\n\r\n /**\r\n * Creates a new parser with the given options.\r\n *\r\n * @constructor\r\n *\r\n * @param {!Object<string, ?>=} options\r\n */\r\n function Parser(options) {\r\n\r\n if (!this) {\r\n return new Parser(options);\r\n }\r\n\r\n var proxy = options && options['proxy'];\r\n\r\n var onText,\r\n onOpenTag,\r\n onCloseTag,\r\n onCDATA,\r\n onError = throwFunc,\r\n onWarning,\r\n onComment,\r\n onQuestion,\r\n onAttention;\r\n\r\n var getContext = noopGetContext;\r\n\r\n /**\r\n * Do we need to parse the current elements attributes for namespaces?\r\n *\r\n * @type {boolean}\r\n */\r\n var maybeNS = false;\r\n\r\n /**\r\n * Do we process namespaces at all?\r\n *\r\n * @type {boolean}\r\n */\r\n var isNamespace = false;\r\n\r\n /**\r\n * The caught error returned on parse end\r\n *\r\n * @type {Error}\r\n */\r\n var returnError = null;\r\n\r\n /**\r\n * Should we stop parsing?\r\n *\r\n * @type {boolean}\r\n */\r\n var parseStop = false;\r\n\r\n /**\r\n * A map of { uri: prefix } used by the parser.\r\n *\r\n * This map will ensure we can normalize prefixes during processing;\r\n * for each uri, only one prefix will be exposed to the handlers.\r\n *\r\n * @type {!Object<string, string>}}\r\n */\r\n var nsUriToPrefix;\r\n\r\n /**\r\n * Handle parse error.\r\n *\r\n * @param {string|Error} err\r\n */\r\n function handleError(err) {\r\n if (!(err instanceof Error)) {\r\n err = error(err);\r\n }\r\n\r\n returnError = err;\r\n\r\n onError(err, getContext);\r\n }\r\n\r\n /**\r\n * Handle parse error.\r\n *\r\n * @param {string|Error} err\r\n */\r\n function handleWarning(err) {\r\n\r\n if (!onWarning) {\r\n return;\r\n }\r\n\r\n if (!(err instanceof Error)) {\r\n err = error(err);\r\n }\r\n\r\n onWarning(err, getContext);\r\n }\r\n\r\n /**\r\n * Register parse listener.\r\n *\r\n * @param {string} name\r\n * @param {Function} cb\r\n *\r\n * @return {Parser}\r\n */\r\n this['on'] = function(name, cb) {\r\n\r\n if (typeof cb !== 'function') {\r\n throw error('required args <name, cb>');\r\n }\r\n\r\n switch (name) {\r\n case 'openTag': onOpenTag = cb; break;\r\n case 'text': onText = cb; break;\r\n case 'closeTag': onCloseTag = cb; break;\r\n case 'error': onError = cb; break;\r\n case 'warn': onWarning = cb; break;\r\n case 'cdata': onCDATA = cb; break;\r\n case 'attention': onAttention = cb; break; // <!XXXXX zzzz=\"eeee\">\r\n case 'question': onQuestion = cb; break; // <? .... ?>\r\n case 'comment': onComment = cb; break;\r\n default:\r\n throw error('unsupported event: ' + name);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Set the namespace to prefix mapping.\r\n *\r\n * @example\r\n *\r\n * parser.ns({\r\n * 'http://foo': 'foo',\r\n * 'http://bar': 'bar'\r\n * });\r\n *\r\n * @param {!Object<string, string>} nsMap\r\n *\r\n * @return {Parser}\r\n */\r\n this['ns'] = function(nsMap) {\r\n\r\n if (typeof nsMap === 'undefined') {\r\n nsMap = {};\r\n }\r\n\r\n if (typeof nsMap !== 'object') {\r\n throw error('required args <nsMap={}>');\r\n }\r\n\r\n var _nsUriToPrefix = {}, k;\r\n\r\n for (k in nsMap) {\r\n _nsUriToPrefix[k] = nsMap[k];\r\n }\r\n\r\n isNamespace = true;\r\n nsUriToPrefix = _nsUriToPrefix;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Parse xml string.\r\n *\r\n * @param {string} xml\r\n *\r\n * @return {Error} returnError, if not thrown\r\n */\r\n this['parse'] = function(xml) {\r\n if (typeof xml !== 'string') {\r\n throw error('required args <xml=string>');\r\n }\r\n\r\n returnError = null;\r\n\r\n parse(xml);\r\n\r\n getContext = noopGetContext;\r\n parseStop = false;\r\n\r\n return returnError;\r\n };\r\n\r\n /**\r\n * Stop parsing.\r\n */\r\n this['stop'] = function() {\r\n parseStop = true;\r\n };\r\n\r\n /**\r\n * Parse string, invoking configured listeners on element.\r\n *\r\n * @param {string} xml\r\n */\r\n function parse(xml) {\r\n var nsMatrixStack = isNamespace ? [] : null,\r\n nsMatrix = isNamespace ? buildNsMatrix(nsUriToPrefix) : null,\r\n _nsMatrix,\r\n nodeStack = [],\r\n anonymousNsCount = 0,\r\n tagStart = false,\r\n tagEnd = false,\r\n i = 0, j = 0,\r\n x, y, q, w, v,\r\n xmlns,\r\n elementName,\r\n _elementName,\r\n elementProxy\r\n ;\r\n\r\n var attrsString = '',\r\n attrsStart = 0,\r\n cachedAttrs // false = parsed with errors, null = needs parsing\r\n ;\r\n\r\n /**\r\n * Parse attributes on demand and returns the parsed attributes.\r\n *\r\n * Return semantics: (1) `false` on attribute parse error,\r\n * (2) object hash on extracted attrs.\r\n *\r\n * @return {boolean|Object}\r\n */\r\n function getAttrs() {\r\n if (cachedAttrs !== null) {\r\n return cachedAttrs;\r\n }\r\n\r\n var nsUri,\r\n nsUriPrefix,\r\n nsName,\r\n defaultAlias = isNamespace && nsMatrix['xmlns'],\r\n attrList = isNamespace && maybeNS ? [] : null,\r\n i = attrsStart,\r\n s = attrsString,\r\n l = s.length,\r\n hasNewMatrix,\r\n newalias,\r\n value,\r\n alias,\r\n name,\r\n attrs = {},\r\n seenAttrs = {},\r\n skipAttr,\r\n w,\r\n j;\r\n\r\n parseAttr:\r\n for (; i < l; i++) {\r\n skipAttr = false;\r\n w = s.charCodeAt(i);\r\n\r\n if (w === 32 || (w < 14 && w > 8)) { // WHITESPACE={ \\f\\n\\r\\t\\v}\r\n continue;\r\n }\r\n\r\n // wait for non whitespace character\r\n if (w < 65 || w > 122 || (w > 90 && w < 97)) {\r\n if (w !== 95 && w !== 58) { // char 95\"_\" 58\":\"\r\n handleWarning('illegal first char attribute name');\r\n skipAttr = true;\r\n }\r\n }\r\n\r\n // parse attribute name\r\n for (j = i + 1; j < l; j++) {\r\n w = s.charCodeAt(j);\r\n\r\n if (\r\n w > 96 && w < 123 ||\r\n w > 64 && w < 91 ||\r\n w > 47 && w < 59 ||\r\n w === 46 || // '.'\r\n w === 45 || // '-'\r\n w === 95 // '_'\r\n ) {\r\n continue;\r\n }\r\n\r\n // unexpected whitespace\r\n if (w === 32 || (w < 14 && w > 8)) { // WHITESPACE\r\n handleWarning('missing attribute value');\r\n i = j;\r\n\r\n continue parseAttr;\r\n }\r\n\r\n // expected \"=\"\r\n if (w === 61) { // \"=\" == 61\r\n break;\r\n }\r\n\r\n handleWarning('illegal attribute name char');\r\n skipAttr = true;\r\n }\r\n\r\n name = s.substring(i, j);\r\n\r\n if (name === 'xmlns:xmlns') {\r\n handleWarning('illegal declaration of xmlns');\r\n skipAttr = true;\r\n }\r\n\r\n w = s.charCodeAt(j + 1);\r\n\r\n if (w === 34) { // '\"'\r\n j = s.indexOf('\"', i = j + 2);\r\n\r\n if (j === -1) {\r\n j = s.indexOf('\\'', i);\r\n\r\n if (j !== -1) {\r\n handleWarning('attribute value quote missmatch');\r\n skipAttr = true;\r\n }\r\n }\r\n\r\n } else if (w === 39) { // \"'\"\r\n j = s.indexOf('\\'', i = j + 2);\r\n\r\n if (j === -1) {\r\n j = s.indexOf('\"', i);\r\n\r\n if (j !== -1) {\r\n handleWarning('attribute value quote missmatch');\r\n skipAttr = true;\r\n }\r\n }\r\n\r\n } else {\r\n handleWarning('missing attribute value quotes');\r\n skipAttr = true;\r\n\r\n // skip to next space\r\n for (j = j + 1; j < l; j++) {\r\n w = s.charCodeAt(j + 1);\r\n\r\n if (w === 32 || (w < 14 && w > 8)) { // WHITESPACE\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n if (j === -1) {\r\n handleWarning('missing closing quotes');\r\n\r\n j = l;\r\n skipAttr = true;\r\n }\r\n\r\n if (!skipAttr) {\r\n value = s.substring(i, j);\r\n }\r\n\r\n i = j;\r\n\r\n // ensure SPACE follows attribute\r\n // skip illegal content otherwise\r\n // example a=\"b\"c\r\n for (; j + 1 < l; j++) {\r\n w = s.charCodeAt(j + 1);\r\n\r\n if (w === 32 || (w < 14 && w > 8)) { // WHITESPACE\r\n break;\r\n }\r\n\r\n // FIRST ILLEGAL CHAR\r\n if (i === j) {\r\n handleWarning('illegal character after attribute end');\r\n skipAttr = true;\r\n }\r\n }\r\n\r\n // advance cursor to next attribute\r\n i = j + 1;\r\n\r\n if (skipAttr) {\r\n continue parseAttr;\r\n }\r\n\r\n // check attribute re-declaration\r\n if (name in seenAttrs) {\r\n handleWarning('attribute <' + name + '> already defined');\r\n continue;\r\n }\r\n\r\n seenAttrs[name] = true;\r\n\r\n if (!isNamespace) {\r\n attrs[name] = value;\r\n continue;\r\n }\r\n\r\n // try to extract namespace information\r\n if (maybeNS) {\r\n newalias = (\r\n name === 'xmlns'\r\n ? 'xmlns'\r\n : (name.charCodeAt(0) === 120 && name.substr(0, 6) === 'xmlns:')\r\n ? name.substr(6)\r\n : null\r\n );\r\n\r\n // handle xmlns(:alias) assignment\r\n if (newalias !== null) {\r\n nsUri = decodeEntities(value);\r\n nsUriPrefix = uriPrefix(newalias);\r\n\r\n alias = nsUriToPrefix[nsUri];\r\n\r\n if (!alias) {\r\n\r\n // no prefix defined or prefix collision\r\n if (\r\n (newalias === 'xmlns') ||\r\n (nsUriPrefix in nsMatrix && nsMatrix[nsUriPrefix] !== nsUri)\r\n ) {\r\n\r\n // alocate free ns prefix\r\n do {\r\n alias = 'ns' + (anonymousNsCount++);\r\n } while (typeof nsMatrix[alias] !== 'undefined');\r\n } else {\r\n alias = newalias;\r\n }\r\n\r\n nsUriToPrefix[nsUri] = alias;\r\n }\r\n\r\n if (nsMatrix[newalias] !== alias) {\r\n if (!hasNewMatrix) {\r\n nsMatrix = cloneNsMatrix(nsMatrix);\r\n hasNewMatrix = true;\r\n }\r\n\r\n nsMatrix[newalias] = alias;\r\n if (newalias === 'xmlns') {\r\n nsMatrix[uriPrefix(alias)] = nsUri;\r\n defaultAlias = alias;\r\n }\r\n\r\n nsMatrix[nsUriPrefix] = nsUri;\r\n }\r\n\r\n // expose xmlns(:asd)=\"...\" in attributes\r\n attrs[name] = value;\r\n continue;\r\n }\r\n\r\n // collect attributes until all namespace\r\n // declarations are processed\r\n attrList.push(name, value);\r\n continue;\r\n\r\n } /** end if (maybeNs) */\r\n\r\n // handle attributes on element without\r\n // namespace declarations\r\n w = name.indexOf(':');\r\n if (w === -1) {\r\n attrs[name] = value;\r\n continue;\r\n }\r\n\r\n // normalize ns attribute name\r\n if (!(nsName = nsMatrix[name.substring(0, w)])) {\r\n handleWarning(missingNamespaceForPrefix(name.substring(0, w)));\r\n continue;\r\n }\r\n\r\n name = defaultAlias === nsName\r\n ? name.substr(w + 1)\r\n : nsName + name.substr(w);\r\n\r\n // end: normalize ns attribute name\r\n\r\n attrs[name] = value;\r\n }\r\n\r\n\r\n // handle deferred, possibly namespaced attributes\r\n if (maybeNS) {\r\n\r\n // normalize captured attributes\r\n for (i = 0, l = attrList.length; i < l; i++) {\r\n\r\n name = attrList[i++];\r\n value = attrList[i];\r\n\r\n w = name.indexOf(':');\r\n\r\n if (w !== -1) {\r\n\r\n // normalize ns attribute name\r\n if (!(nsName = nsMatrix[name.substring(0, w)])) {\r\n handleWarning(missingNamespaceForPrefix(name.substring(0, w)));\r\n continue;\r\n }\r\n\r\n name = defaultAlias === nsName\r\n ? name.substr(w + 1)\r\n : nsName + name.substr(w);\r\n\r\n // end: normalize ns attribute name\r\n }\r\n\r\n attrs[name] = value;\r\n }\r\n\r\n // end: normalize captured attributes\r\n }\r\n\r\n return cachedAttrs = attrs;\r\n }\r\n\r\n /**\r\n * Extract the parse context { line, column, part }\r\n * from the current parser position.\r\n *\r\n * @return {Object} parse context\r\n */\r\n function getParseContext() {\r\n var splitsRe = /(\\r\\n|\\r|\\n)/g;\r\n\r\n var line = 0;\r\n var column = 0;\r\n var startOfLine = 0;\r\n var endOfLine = j;\r\n var match;\r\n var data;\r\n\r\n while (i >= startOfLine) {\r\n\r\n match = splitsRe.exec(xml);\r\n\r\n if (!match) {\r\n break;\r\n }\r\n\r\n // end of line = (break idx + break chars)\r\n endOfLine = match[0].length + match.index;\r\n\r\n if (endOfLine > i) {\r\n break;\r\n }\r\n\r\n // advance to next line\r\n line += 1;\r\n\r\n startOfLine = endOfLine;\r\n }\r\n\r\n // EOF errors\r\n if (i == -1) {\r\n column = endOfLine;\r\n data = xml.substring(j);\r\n } else\r\n\r\n // start errors\r\n if (j === 0) {\r\n data = xml.substring(j, i);\r\n }\r\n\r\n // other errors\r\n else {\r\n column = i - startOfLine;\r\n data = (j == -1 ? xml.substring(i) : xml.substring(i, j + 1));\r\n }\r\n\r\n return {\r\n 'data': data,\r\n 'line': line,\r\n 'column': column\r\n };\r\n }\r\n\r\n getContext = getParseContext;\r\n\r\n\r\n if (proxy) {\r\n elementProxy = Object.create({}, {\r\n 'name': getter(function() {\r\n return elementName;\r\n }),\r\n 'originalName': getter(function() {\r\n return _elementName;\r\n }),\r\n 'attrs': getter(getAttrs),\r\n 'ns': getter(function() {\r\n return nsMatrix;\r\n })\r\n });\r\n }\r\n\r\n // actual parse logic\r\n while (j !== -1) {\r\n\r\n if (xml.charCodeAt(j) === 60) { // \"<\"\r\n i = j;\r\n } else {\r\n i = xml.indexOf('<', j);\r\n }\r\n\r\n // parse end\r\n if (i === -1) {\r\n if (nodeStack.length) {\r\n return handleError('unexpected end of file');\r\n }\r\n\r\n if (j === 0) {\r\n return handleError('missing start tag');\r\n }\r\n\r\n if (j < xml.length) {\r\n if (xml.substring(j).trim()) {\r\n handleWarning(NON_WHITESPACE_OUTSIDE_ROOT_NODE);\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n // parse text\r\n if (j !== i) {\r\n\r\n if (nodeStack.length) {\r\n if (onText) {\r\n onText(xml.substring(j, i), decodeEntities, getContext);\r\n\r\n if (parseStop) {\r\n return;\r\n }\r\n }\r\n } else {\r\n if (xml.substring(j, i).trim()) {\r\n handleWarning(NON_WHITESPACE_OUTSIDE_ROOT_NODE);\r\n\r\n if (parseStop) {\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n w = xml.charCodeAt(i + 1);\r\n\r\n // parse comments + CDATA\r\n if (w === 33) { // \"!\"\r\n q = xml.charCodeAt(i + 2);\r\n\r\n // CDATA section\r\n if (q === 91 && xml.substr(i + 3, 6) === 'CDATA[') { // 91 == \"[\"\r\n j = xml.indexOf(']]>', i);\r\n if (j === -1) {\r\n return handleError('unclosed cdata');\r\n }\r\n\r\n if (onCDATA) {\r\n onCDATA(xml.substring(i + 9, j), getContext);\r\n if (parseStop) {\r\n return;\r\n }\r\n }\r\n\r\n j += 3;\r\n continue;\r\n }\r\n\r\n // comment\r\n if (q === 45 && xml.charCodeAt(i + 3) === 45) { // 45 == \"-\"\r\n j = xml.indexOf('-->', i);\r\n if (j === -1) {\r\n return handleError('unclosed comment');\r\n }\r\n\r\n\r\n if (onComment) {\r\n onComment(xml.substring(i + 4, j), decodeEntities, getContext);\r\n if (parseStop) {\r\n return;\r\n }\r\n }\r\n\r\n j += 3;\r\n continue;\r\n }\r\n }\r\n\r\n // parse question <? ... ?>\r\n if (w === 63) { // \"?\"\r\n j = xml.indexOf('?>', i);\r\n if (j === -1) {\r\n return handleError('unclosed question');\r\n }\r\n\r\n if (onQuestion) {\r\n onQuestion(xml.substring(i, j + 2), getContext);\r\n if (parseStop) {\r\n return;\r\n }\r\n }\r\n\r\n j += 2;\r\n continue;\r\n }\r\n\r\n // find matching closing tag for attention or standard tags\r\n // for that we must skip through attribute values\r\n // (enclosed in single or double quotes)\r\n for (x = i + 1; ; x++) {\r\n v = xml.charCodeAt(x);\r\n if (isNaN(v)) {\r\n j = -1;\r\n return handleError('unclosed tag');\r\n }\r\n\r\n // [10] AttValue ::= '\"' ([^<&\"] | Reference)* '\"' | \"'\" ([^<&'] | Reference)* \"'\"\r\n // skips the quoted string\r\n // (double quotes) does not appear in a literal enclosed by (double quotes)\r\n // (single quote) does not appear in a literal enclosed by (single quote)\r\n if (v === 34) { // '\"'\r\n q = xml.indexOf('\"', x + 1);\r\n x = q !== -1 ? q : x;\r\n } else if (v === 39) { // \"'\"\r\n q = xml.indexOf(\"'\", x + 1);\r\n x = q !== -1 ? q : x;\r\n } else if (v === 62) { // '>'\r\n j = x;\r\n break;\r\n }\r\n }\r\n\r\n\r\n // parse attention <! ...>\r\n // previously comment and CDATA have already been parsed\r\n if (w === 33) { // \"!\"\r\n\r\n if (onAttention) {\r\n onAttention(xml.substring(i, j + 1), decodeEntities, getContext);\r\n if (parseStop) {\r\n return;\r\n }\r\n }\r\n\r\n j += 1;\r\n continue;\r\n }\r\n\r\n // don't process attributes;\r\n // there are none\r\n cachedAttrs = {};\r\n\r\n // if (xml.charCodeAt(i+1) === 47) { // </...\r\n if (w === 47) { // </...\r\n tagStart = false;\r\n tagEnd = true;\r\n\r\n if (!nodeStack.length) {\r\n return handleError('missing open tag');\r\n }\r\n\r\n // verify open <-> close tag match\r\n x = elementName = nodeStack.pop();\r\n q = i + 2 + x.length;\r\n\r\n if (xml.substring(i + 2, q) !== x) {\r\n return handleError('closing tag mismatch');\r\n }\r\n\r\n // verify chars in close tag\r\n for (; q < j; q++) {\r\n w = xml.charCodeAt(q);\r\n\r\n if (w === 32 || (w > 8 && w < 14)) { // \\f\\n\\r\\t\\v space\r\n continue;\r\n }\r\n\r\n return handleError('close tag');\r\n }\r\n\r\n } else {\r\n if (xml.charCodeAt(j - 1) === 47) { // .../>\r\n x = elementName = xml.substring(i + 1, j - 1);\r\n\r\n tagStart = true;\r\n tagEnd = true;\r\n\r\n } else {\r\n x = elementName = xml.substring(i + 1, j);\r\n\r\n tagStart = true;\r\n tagEnd = false;\r\n }\r\n\r\n if (!(w > 96 && w < 123 || w > 64 && w < 91 || w === 95 || w === 58)) { // char 95\"_\" 58\":\"\r\n return handleError('illegal first char nodeName');\r\n }\r\n\r\n for (q = 1, y = x.length; q < y; q++) {\r\n w = x.charCodeAt(q);\r\n\r\n if (w > 96 && w < 123 || w > 64 && w < 91 || w > 47 && w < 59 || w === 45 || w === 95 || w == 46) {\r\n continue;\r\n }\r\n\r\n if (w === 32 || (w < 14 && w > 8)) { // \\f\\n\\r\\t\\v space\r\n elementName = x.substring(0, q);\r\n\r\n // maybe there are attributes\r\n cachedAttrs = null;\r\n break;\r\n }\r\n\r\n return handleError('invalid nodeName');\r\n }\r\n\r\n if (!tagEnd) {\r\n nodeStack.push(elementName);\r\n }\r\n }\r\n\r\n if (isNamespace) {\r\n\r\n _nsMatrix = nsMatrix;\r\n\r\n if (tagStart) {\r\n\r\n // remember old namespace\r\n // unless we're self-closing\r\n if (!tagEnd) {\r\n nsMatrixStack.push(_nsMatrix);\r\n }\r\n\r\n if (cachedAttrs === null) {\r\n\r\n // quick check, whether there may be namespace\r\n // declarations on the node; if that is the case\r\n // we need to eagerly parse the node attributes\r\n if ((maybeNS = x.indexOf('xmlns', q) !== -1)) {\r\n attrsStart = q;\r\n attrsString = x;\r\n\r\n getAttrs();\r\n\r\n maybeNS = false;\r\n }\r\n }\r\n }\r\n\r\n _elementName = elementName;\r\n\r\n w = elementName.indexOf(':');\r\n if (w !== -1) {\r\n xmlns = nsMatrix[elementName.substring(0, w)];\r\n\r\n // prefix given; namespace must exist\r\n if (!xmlns) {\r\n return handleError('missing namespace on <' + _elementName + '>');\r\n }\r\n\r\n elementName = elementName.substr(w + 1);\r\n } else {\r\n xmlns = nsMatrix['xmlns'];\r\n\r\n // if no default namespace is defined,\r\n // we'll import the element as anonymous.\r\n //\r\n // it is up to users to correct that to the document defined\r\n // targetNamespace, or whatever their undersanding of the\r\n // XML spec mandates.\r\n }\r\n\r\n // adjust namespace prefixs as configured\r\n if (xmlns) {\r\n elementName = xmlns + ':' + elementName;\r\n }\r\n\r\n }\r\n\r\n if (tagStart) {\r\n attrsStart = q;\r\n attrsString = x;\r\n\r\n if (onOpenTag) {\r\n if (proxy) {\r\n onOpenTag(elementProxy, decodeEntities, tagEnd, getContext);\r\n } else {\r\n onOpenTag(elementName, getAttrs, decodeEntities, tagEnd, getContext);\r\n }\r\n\r\n if (parseStop) {\r\n return;\r\n }\r\n }\r\n\r\n }\r\n\r\n if (tagEnd) {\r\n\r\n if (onCloseTag) {\r\n onCloseTag(proxy ? elementProxy : elementName, decodeEntities, tagStart, getContext);\r\n\r\n if (parseStop) {\r\n return;\r\n }\r\n }\r\n\r\n // restore old namespace\r\n if (isNamespace) {\r\n if (!tagStart) {\r\n nsMatrix = nsMatrixStack.pop();\r\n } else {\r\n nsMatrix = _nsMatrix;\r\n }\r\n }\r\n }\r\n\r\n j += 1;\r\n }\r\n } /** end parse */\r\n\r\n }\r\n\r\n // Returns:\r\n\r\n return Parser(options);\r\n}"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseXmlStream.test.js","names":["_mocha","require","_chai","_parseXmlStream","_interopRequireDefault","obj","__esModule","_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","collectText","xml","parseXmlStream","createInitialState","text","onText","state","describe","it","_callee","_callee$","_context","t0","expect","t1","to","equal","_callee2","_callee2$","_context2","_callee3","_callee3$","_context3","_callee4","_callee4$","_context4","names","onOpenTag","tagName","attributes","deep"],"sources":["../../source/xml/parseXmlStream.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport parseXmlStream from './parseXmlStream.js'\r\n\r\nfunction collectText(xml) {\r\n\treturn parseXmlStream(xml, {\r\n\t\tcreateInitialState: () => ({ text: '' }),\r\n\t\tonText: (text, state) => {\r\n\t\t\tstate.text += text\r\n\t\t}\r\n\t}).then(state => state.text)\r\n}\r\n\r\ndescribe('parseXmlStream', () => {\r\n\tit('should decode numeric character references in text', async () => {\r\n\t\t// Some tools (e.g. `openpyxl`) escape non-ASCII characters\r\n\t\t// as numeric character references when writing XML.\r\n\t\texpect(await collectText('<r><t>Café été</t></r>')).to.equal('Café été')\r\n\t})\r\n\r\n\tit('should decode predefined XML entities in text', async () => {\r\n\t\texpect(await collectText('<r><t><a> & "b" 'c'</t></r>')).to.equal('<a> & \"b\" \\'c\\'')\r\n\t})\r\n\r\n\tit('should pass text without character references through unchanged', async () => {\r\n\t\texpect(await collectText('<r><t>abc</t></r>')).to.equal('abc')\r\n\t})\r\n\r\n\tit('should decode character references in attribute values', async () => {\r\n\t\t// Sheet names, for example, are read from the `name` attribute\r\n\t\t// in `xl/workbook.xml`: `<sheet name=\"P&L\"/>`.\r\n\t\tconst state = await parseXmlStream('<sheets><sheet name=\"P&L été\"/></sheets>', {\r\n\t\t\tcreateInitialState: () => ({ names: [] }),\r\n\t\t\tonOpenTag: (tagName, attributes, state) => {\r\n\t\t\t\tif (tagName === 'sheet') {\r\n\t\t\t\t\tstate.names.push(attributes.name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\texpect(state.names).to.deep.equal(['P&L été'])\r\n\t})\r\n})\r\n"],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { strFromU8 } from 'fflate';
|
|
2
|
-
import checkpoint from '../utility/checkpoint.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @param {Record<string,Uint8Array} entries
|
|
6
|
-
* @returns {Record<string,string>}
|
|
7
|
-
*/
|
|
8
|
-
export default function convertValuesFromUint8ArraysToStrings(entries) {
|
|
9
|
-
checkpoint('convert files to strings');
|
|
10
|
-
var convertedEntries = {};
|
|
11
|
-
for (var _i = 0, _Object$keys = Object.keys(entries); _i < _Object$keys.length; _i++) {
|
|
12
|
-
var key = _Object$keys[_i];
|
|
13
|
-
convertedEntries[key] = strFromU8(entries[key]);
|
|
14
|
-
}
|
|
15
|
-
return convertedEntries;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=convertValuesFromUint8ArraysToStrings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertValuesFromUint8ArraysToStrings.js","names":["strFromU8","checkpoint","convertValuesFromUint8ArraysToStrings","entries","convertedEntries","_i","_Object$keys","Object","keys","length","key"],"sources":["../../source/export/convertValuesFromUint8ArraysToStrings.js"],"sourcesContent":["import { strFromU8 } from 'fflate'\r\n\r\nimport checkpoint from '../utility/checkpoint.js'\r\n\r\n/**\r\n * @param {Record<string,Uint8Array} entries\r\n * @returns {Record<string,string>}\r\n */\r\nexport default function convertValuesFromUint8ArraysToStrings(entries) {\r\n\tcheckpoint('convert files to strings')\r\n\tconst convertedEntries = {}\r\n\tfor (const key of Object.keys(entries)) {\r\n\t\tconvertedEntries[key] = strFromU8(entries[key])\r\n\t}\r\n\treturn convertedEntries\r\n}"],"mappings":"AAAA,SAASA,SAAS,QAAQ,QAAQ;AAElC,OAAOC,UAAU,MAAM,0BAA0B;;AAEjD;AACA;AACA;AACA;AACA,eAAe,SAASC,qCAAqCA,CAACC,OAAO,EAAE;EACtEF,UAAU,CAAC,0BAA0B,CAAC;EACtC,IAAMG,gBAAgB,GAAG,CAAC,CAAC;EAC3B,SAAAC,EAAA,MAAAC,YAAA,GAAkBC,MAAM,CAACC,IAAI,CAACL,OAAO,CAAC,EAAAE,EAAA,GAAAC,YAAA,CAAAG,MAAA,EAAAJ,EAAA,IAAE;IAAnC,IAAMK,GAAG,GAAAJ,YAAA,CAAAD,EAAA;IACbD,gBAAgB,CAACM,GAAG,CAAC,GAAGV,SAAS,CAACG,OAAO,CAACO,GAAG,CAAC,CAAC;EAChD;EACA,OAAON,gBAAgB;AACxB"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
2
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
3
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
5
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
6
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
7
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
8
|
-
import dropEmptyRows from './dropEmptyRows.js';
|
|
9
|
-
import dropEmptyColumns from './dropEmptyColumns.js';
|
|
10
|
-
export default function convertCellsToData2dArray(cells, dimensions) {
|
|
11
|
-
// If the sheet is empty.
|
|
12
|
-
if (cells.length === 0) {
|
|
13
|
-
return [];
|
|
14
|
-
}
|
|
15
|
-
var _dimensions = _slicedToArray(dimensions, 2),
|
|
16
|
-
leftTop = _dimensions[0],
|
|
17
|
-
rightBottom = _dimensions[1];
|
|
18
|
-
|
|
19
|
-
// Don't discard empty rows or columns at the start of the spreadsheet,
|
|
20
|
-
// even when the `*.xlsx` file itself tells that the content starts at an offset.
|
|
21
|
-
// https://github.com/catamphetamine/read-excel-file/issues/102
|
|
22
|
-
// const colsCount = (rightBottom.column - leftTop.column) + 1
|
|
23
|
-
// const rowsCount = (rightBottom.row - leftTop.row) + 1
|
|
24
|
-
|
|
25
|
-
var colsCount = rightBottom.column;
|
|
26
|
-
var rowsCount = rightBottom.row;
|
|
27
|
-
|
|
28
|
-
// Initialize spreadsheet data structure.
|
|
29
|
-
var data = new Array(rowsCount);
|
|
30
|
-
var i = 0;
|
|
31
|
-
while (i < rowsCount) {
|
|
32
|
-
data[i] = new Array(colsCount);
|
|
33
|
-
var j = 0;
|
|
34
|
-
while (j < colsCount) {
|
|
35
|
-
data[i][j] = null;
|
|
36
|
-
j++;
|
|
37
|
-
}
|
|
38
|
-
i++;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Fill in spreadsheet `data`.
|
|
42
|
-
for (var _iterator = _createForOfIteratorHelperLoose(cells), _step; !(_step = _iterator()).done;) {
|
|
43
|
-
var cell = _step.value;
|
|
44
|
-
// Don't discard empty rows or columns at the start of the spreadsheet,
|
|
45
|
-
// even when the `*.xlsx` file itself tells that the content starts at an offset.
|
|
46
|
-
// https://github.com/catamphetamine/read-excel-file/issues/102
|
|
47
|
-
// const rowIndex = cell.row - leftTop.row
|
|
48
|
-
// const columnIndex = cell.column - leftTop.column
|
|
49
|
-
var rowIndex = cell.row - 1;
|
|
50
|
-
var columnIndex = cell.column - 1;
|
|
51
|
-
// Ignore the data in the cell if it's outside of the spreadsheet's "dimensions".
|
|
52
|
-
if (columnIndex < colsCount && rowIndex < rowsCount) {
|
|
53
|
-
data[rowIndex][columnIndex] = cell.value;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// // Fill in the row map, if the row map was passed.
|
|
58
|
-
// if (options.rowIndexSourceMap) {
|
|
59
|
-
// let i = 0
|
|
60
|
-
// while (i < data.length) {
|
|
61
|
-
// options.rowIndexSourceMap[i] = i
|
|
62
|
-
// i++
|
|
63
|
-
// }
|
|
64
|
-
// }
|
|
65
|
-
|
|
66
|
-
// Drop (discard) empty columns at the right side.
|
|
67
|
-
// Drop (discard) empty rows at the bottom.
|
|
68
|
-
data = dropEmptyRows(dropEmptyColumns(data, {
|
|
69
|
-
onlyTrimAtTheEnd: true
|
|
70
|
-
}), {
|
|
71
|
-
onlyTrimAtTheEnd: true
|
|
72
|
-
} // { onlyTrimAtTheEnd: true, rowIndexSourceMap: options.rowIndexSourceMap }
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
return data;
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=convertCellsToData2dArray.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertCellsToData2dArray.js","names":["dropEmptyRows","dropEmptyColumns","convertCellsToData2dArray","cells","dimensions","length","_dimensions","_slicedToArray","leftTop","rightBottom","colsCount","column","rowsCount","row","data","Array","i","j","_iterator","_createForOfIteratorHelperLoose","_step","done","cell","value","rowIndex","columnIndex","onlyTrimAtTheEnd"],"sources":["../../source/xlsx/convertCellsToData2dArray.js"],"sourcesContent":["import dropEmptyRows from './dropEmptyRows.js'\r\nimport dropEmptyColumns from './dropEmptyColumns.js'\r\n\r\nexport default function convertCellsToData2dArray(cells, dimensions) {\r\n // If the sheet is empty.\r\n if (cells.length === 0) {\r\n return []\r\n }\r\n\r\n const [leftTop, rightBottom] = dimensions\r\n\r\n // Don't discard empty rows or columns at the start of the spreadsheet,\r\n // even when the `*.xlsx` file itself tells that the content starts at an offset.\r\n // https://github.com/catamphetamine/read-excel-file/issues/102\r\n // const colsCount = (rightBottom.column - leftTop.column) + 1\r\n // const rowsCount = (rightBottom.row - leftTop.row) + 1\r\n\r\n const colsCount = rightBottom.column\r\n const rowsCount = rightBottom.row\r\n\r\n // Initialize spreadsheet data structure.\r\n let data = new Array(rowsCount)\r\n let i = 0\r\n while (i < rowsCount) {\r\n data[i] = new Array(colsCount)\r\n let j = 0\r\n while (j < colsCount) {\r\n data[i][j] = null\r\n j++\r\n }\r\n i++\r\n }\r\n\r\n // Fill in spreadsheet `data`.\r\n for (const cell of cells) {\r\n // Don't discard empty rows or columns at the start of the spreadsheet,\r\n // even when the `*.xlsx` file itself tells that the content starts at an offset.\r\n // https://github.com/catamphetamine/read-excel-file/issues/102\r\n // const rowIndex = cell.row - leftTop.row\r\n // const columnIndex = cell.column - leftTop.column\r\n const rowIndex = cell.row - 1\r\n const columnIndex = cell.column - 1\r\n // Ignore the data in the cell if it's outside of the spreadsheet's \"dimensions\".\r\n if (columnIndex < colsCount && rowIndex < rowsCount) {\r\n data[rowIndex][columnIndex] = cell.value\r\n }\r\n }\r\n\r\n // // Fill in the row map, if the row map was passed.\r\n // if (options.rowIndexSourceMap) {\r\n // let i = 0\r\n // while (i < data.length) {\r\n // options.rowIndexSourceMap[i] = i\r\n // i++\r\n // }\r\n // }\r\n\r\n // Drop (discard) empty columns at the right side.\r\n // Drop (discard) empty rows at the bottom.\r\n data = dropEmptyRows(\r\n dropEmptyColumns(data, { onlyTrimAtTheEnd: true }),\r\n { onlyTrimAtTheEnd: true } // { onlyTrimAtTheEnd: true, rowIndexSourceMap: options.rowIndexSourceMap }\r\n )\r\n\r\n return data\r\n}"],"mappings":";;;;;;;AAAA,OAAOA,aAAa,MAAM,oBAAoB;AAC9C,OAAOC,gBAAgB,MAAM,uBAAuB;AAEpD,eAAe,SAASC,yBAAyBA,CAACC,KAAK,EAAEC,UAAU,EAAE;EACnE;EACA,IAAID,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,EAAE;EACX;EAEA,IAAAC,WAAA,GAAAC,cAAA,CAA+BH,UAAU;IAAlCI,OAAO,GAAAF,WAAA;IAAEG,WAAW,GAAAH,WAAA;;EAE3B;EACA;EACA;EACA;EACA;;EAEA,IAAMI,SAAS,GAAGD,WAAW,CAACE,MAAM;EACpC,IAAMC,SAAS,GAAGH,WAAW,CAACI,GAAG;;EAEjC;EACA,IAAIC,IAAI,GAAG,IAAIC,KAAK,CAACH,SAAS,CAAC;EAC/B,IAAII,CAAC,GAAG,CAAC;EACT,OAAOA,CAAC,GAAGJ,SAAS,EAAE;IACpBE,IAAI,CAACE,CAAC,CAAC,GAAG,IAAID,KAAK,CAACL,SAAS,CAAC;IAC9B,IAAIO,CAAC,GAAG,CAAC;IACT,OAAOA,CAAC,GAAGP,SAAS,EAAE;MACpBI,IAAI,CAACE,CAAC,CAAC,CAACC,CAAC,CAAC,GAAG,IAAI;MACjBA,CAAC,EAAE;IACL;IACAD,CAAC,EAAE;EACL;;EAEA;EACA,SAAAE,SAAA,GAAAC,+BAAA,CAAmBhB,KAAK,GAAAiB,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;IAAA,IAAfC,IAAI,GAAAF,KAAA,CAAAG,KAAA;IACb;IACA;IACA;IACA;IACA;IACA,IAAMC,QAAQ,GAAGF,IAAI,CAACT,GAAG,GAAG,CAAC;IAC7B,IAAMY,WAAW,GAAGH,IAAI,CAACX,MAAM,GAAG,CAAC;IACnC;IACA,IAAIc,WAAW,GAAGf,SAAS,IAAIc,QAAQ,GAAGZ,SAAS,EAAE;MACnDE,IAAI,CAACU,QAAQ,CAAC,CAACC,WAAW,CAAC,GAAGH,IAAI,CAACC,KAAK;IAC1C;EACF;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACAT,IAAI,GAAGd,aAAa,CAClBC,gBAAgB,CAACa,IAAI,EAAE;IAAEY,gBAAgB,EAAE;EAAK,CAAC,CAAC,EAClD;IAAEA,gBAAgB,EAAE;EAAK,CAAC,CAAC;EAC7B,CAAC;;EAED,OAAOZ,IAAI;AACb"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
2
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
3
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4
|
-
export default function dropEmptyColumns(data) {
|
|
5
|
-
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
6
|
-
_ref$accessor = _ref.accessor,
|
|
7
|
-
accessor = _ref$accessor === void 0 ? function (_) {
|
|
8
|
-
return _;
|
|
9
|
-
} : _ref$accessor,
|
|
10
|
-
onlyTrimAtTheEnd = _ref.onlyTrimAtTheEnd;
|
|
11
|
-
var i = data[0].length - 1;
|
|
12
|
-
while (i >= 0) {
|
|
13
|
-
var empty = true;
|
|
14
|
-
for (var _iterator = _createForOfIteratorHelperLoose(data), _step; !(_step = _iterator()).done;) {
|
|
15
|
-
var row = _step.value;
|
|
16
|
-
if (accessor(row[i]) !== null) {
|
|
17
|
-
empty = false;
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
if (empty) {
|
|
22
|
-
var j = 0;
|
|
23
|
-
while (j < data.length) {
|
|
24
|
-
data[j].splice(i, 1);
|
|
25
|
-
j++;
|
|
26
|
-
}
|
|
27
|
-
} else if (onlyTrimAtTheEnd) {
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
i--;
|
|
31
|
-
}
|
|
32
|
-
return data;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=dropEmptyColumns.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropEmptyColumns.js","names":["dropEmptyColumns","data","_ref","arguments","length","undefined","_ref$accessor","accessor","_","onlyTrimAtTheEnd","i","empty","_iterator","_createForOfIteratorHelperLoose","_step","done","row","value","j","splice"],"sources":["../../source/xlsx/dropEmptyColumns.js"],"sourcesContent":["export default function dropEmptyColumns(data, {\r\n accessor = _ => _,\r\n onlyTrimAtTheEnd\r\n} = {}) {\r\n let i = data[0].length - 1\r\n while (i >= 0) {\r\n let empty = true\r\n for (const row of data) {\r\n if (accessor(row[i]) !== null) {\r\n empty = false\r\n break\r\n }\r\n }\r\n if (empty) {\r\n let j = 0;\r\n while (j < data.length) {\r\n data[j].splice(i, 1)\r\n j++\r\n }\r\n } else if (onlyTrimAtTheEnd) {\r\n break\r\n }\r\n i--\r\n }\r\n return data\r\n}"],"mappings":";;;AAAA,eAAe,SAASA,gBAAgBA,CAACC,IAAI,EAGrC;EAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAAAG,aAAA,GAAAJ,IAAA,CAFJK,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,UAAAE,CAAC;MAAA,OAAIA,CAAC;IAAA,IAAAF,aAAA;IACjBG,gBAAgB,GAAAP,IAAA,CAAhBO,gBAAgB;EAEhB,IAAIC,CAAC,GAAGT,IAAI,CAAC,CAAC,CAAC,CAACG,MAAM,GAAG,CAAC;EAC1B,OAAOM,CAAC,IAAI,CAAC,EAAE;IACb,IAAIC,KAAK,GAAG,IAAI;IAChB,SAAAC,SAAA,GAAAC,+BAAA,CAAkBZ,IAAI,GAAAa,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;MAAA,IAAbC,GAAG,GAAAF,KAAA,CAAAG,KAAA;MACZ,IAAIV,QAAQ,CAACS,GAAG,CAACN,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;QAC7BC,KAAK,GAAG,KAAK;QACb;MACF;IACF;IACA,IAAIA,KAAK,EAAE;MACT,IAAIO,CAAC,GAAG,CAAC;MACT,OAAOA,CAAC,GAAGjB,IAAI,CAACG,MAAM,EAAE;QACtBH,IAAI,CAACiB,CAAC,CAAC,CAACC,MAAM,CAACT,CAAC,EAAE,CAAC,CAAC;QACpBQ,CAAC,EAAE;MACL;IACF,CAAC,MAAM,IAAIT,gBAAgB,EAAE;MAC3B;IACF;IACAC,CAAC,EAAE;EACL;EACA,OAAOT,IAAI;AACb"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropEmptyColumns.test.js","names":["describe","it","expect","dropEmptyColumns","onlyTrimAtTheEnd","to","deep","equal"],"sources":["../../source/xlsx/dropEmptyColumns.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport dropEmptyColumns from './dropEmptyColumns.js'\r\n\r\ndescribe('dropEmptyColumns', () => {\r\n\tit('should drop empty columns (only at the end)', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyColumns([\r\n\t\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t\t[null, null, null, null, null, null],\r\n\t\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t\t], {\r\n\t\t\t\tonlyTrimAtTheEnd: true\r\n\t\t\t})\r\n\t\t).to.deep.equal([\r\n\t\t\t[null, 'A', 'B', 'C', null],\r\n\t\t\t[null, 'D', null, null, null],\r\n\t\t\t[null, null, null, null, null],\r\n\t\t\t[null, null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty columns', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyColumns([\r\n\t\t\t\t[null, 'A', 'B', 'C', null, null],\r\n\t\t\t\t[null, 'D', null, null, null, null],\r\n\t\t\t\t[null, null, null, null, null, null],\r\n\t\t\t\t[null, null, 'E', 'F', 'G', null]\r\n\t\t\t])\r\n\t\t).to.deep.equal([\r\n\t\t\t['A', 'B', 'C', null],\r\n\t\t\t['D', null, null, null],\r\n\t\t\t[null, null, null, null],\r\n\t\t\t[null, 'E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n})"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,OAAO;AACpC,SAASC,MAAM,QAAQ,MAAM;AAE7B,OAAOC,gBAAgB,MAAM,uBAAuB;AAEpDH,QAAQ,CAAC,kBAAkB,EAAE,YAAM;EAClCC,EAAE,CAAC,6CAA6C,EAAE,YAAM;IACvDC,MAAM,CACLC,gBAAgB,CAAC,CAChB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACnC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACpC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CACjC,EAAE;MACFC,gBAAgB,EAAE;IACnB,CAAC,CACF,CAAC,CAACC,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAC3B,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC7B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC9B,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC3B,CAAC;EACH,CAAC,CAAC;EAEFN,EAAE,CAAC,2BAA2B,EAAE,YAAM;IACrCC,MAAM,CACLC,gBAAgB,CAAC,CAChB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACjC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACnC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACpC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CACjC,CACF,CAAC,CAACE,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EACrB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACvB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACxB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACrB,CAAC;EACH,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
2
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
3
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
4
|
-
export default function dropEmptyRows(data) {
|
|
5
|
-
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
6
|
-
rowIndexSourceMap = _ref.rowIndexSourceMap,
|
|
7
|
-
_ref$accessor = _ref.accessor,
|
|
8
|
-
accessor = _ref$accessor === void 0 ? function (_) {
|
|
9
|
-
return _;
|
|
10
|
-
} : _ref$accessor,
|
|
11
|
-
onlyTrimAtTheEnd = _ref.onlyTrimAtTheEnd;
|
|
12
|
-
// Drop empty rows.
|
|
13
|
-
var i = data.length - 1;
|
|
14
|
-
while (i >= 0) {
|
|
15
|
-
// Check if the row is empty.
|
|
16
|
-
var empty = true;
|
|
17
|
-
for (var _iterator = _createForOfIteratorHelperLoose(data[i]), _step; !(_step = _iterator()).done;) {
|
|
18
|
-
var cell = _step.value;
|
|
19
|
-
if (accessor(cell) !== null) {
|
|
20
|
-
empty = false;
|
|
21
|
-
break;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
// Remove the empty row.
|
|
25
|
-
if (empty) {
|
|
26
|
-
data.splice(i, 1);
|
|
27
|
-
if (rowIndexSourceMap) {
|
|
28
|
-
rowIndexSourceMap.splice(i, 1);
|
|
29
|
-
}
|
|
30
|
-
} else if (onlyTrimAtTheEnd) {
|
|
31
|
-
break;
|
|
32
|
-
}
|
|
33
|
-
i--;
|
|
34
|
-
}
|
|
35
|
-
return data;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=dropEmptyRows.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropEmptyRows.js","names":["dropEmptyRows","data","_ref","arguments","length","undefined","rowIndexSourceMap","_ref$accessor","accessor","_","onlyTrimAtTheEnd","i","empty","_iterator","_createForOfIteratorHelperLoose","_step","done","cell","value","splice"],"sources":["../../source/xlsx/dropEmptyRows.js"],"sourcesContent":["export default function dropEmptyRows(data, {\r\n rowIndexSourceMap,\r\n accessor = _ => _,\r\n onlyTrimAtTheEnd\r\n} = {}) {\r\n // Drop empty rows.\r\n let i = data.length - 1\r\n while (i >= 0) {\r\n // Check if the row is empty.\r\n let empty = true\r\n for (const cell of data[i]) {\r\n if (accessor(cell) !== null) {\r\n empty = false\r\n break\r\n }\r\n }\r\n // Remove the empty row.\r\n if (empty) {\r\n data.splice(i, 1)\r\n if (rowIndexSourceMap) {\r\n rowIndexSourceMap.splice(i, 1)\r\n }\r\n } else if (onlyTrimAtTheEnd) {\r\n break\r\n }\r\n i--\r\n }\r\n return data\r\n}"],"mappings":";;;AAAA,eAAe,SAASA,aAAaA,CAACC,IAAI,EAIlC;EAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAHJG,iBAAiB,GAAAJ,IAAA,CAAjBI,iBAAiB;IAAAC,aAAA,GAAAL,IAAA,CACjBM,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,UAAAE,CAAC;MAAA,OAAIA,CAAC;IAAA,IAAAF,aAAA;IACjBG,gBAAgB,GAAAR,IAAA,CAAhBQ,gBAAgB;EAEhB;EACA,IAAIC,CAAC,GAAGV,IAAI,CAACG,MAAM,GAAG,CAAC;EACvB,OAAOO,CAAC,IAAI,CAAC,EAAE;IACb;IACA,IAAIC,KAAK,GAAG,IAAI;IAChB,SAAAC,SAAA,GAAAC,+BAAA,CAAmBb,IAAI,CAACU,CAAC,CAAC,GAAAI,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;MAAA,IAAjBC,IAAI,GAAAF,KAAA,CAAAG,KAAA;MACb,IAAIV,QAAQ,CAACS,IAAI,CAAC,KAAK,IAAI,EAAE;QAC3BL,KAAK,GAAG,KAAK;QACb;MACF;IACF;IACA;IACA,IAAIA,KAAK,EAAE;MACTX,IAAI,CAACkB,MAAM,CAACR,CAAC,EAAE,CAAC,CAAC;MACjB,IAAIL,iBAAiB,EAAE;QACrBA,iBAAiB,CAACa,MAAM,CAACR,CAAC,EAAE,CAAC,CAAC;MAChC;IACF,CAAC,MAAM,IAAID,gBAAgB,EAAE;MAC3B;IACF;IACAC,CAAC,EAAE;EACL;EACA,OAAOV,IAAI;AACb"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropEmptyRows.test.js","names":["describe","it","expect","dropEmptyRows","onlyTrimAtTheEnd","to","deep","equal","rowIndexSourceMap"],"sources":["../../source/xlsx/dropEmptyRows.test.js"],"sourcesContent":["import { describe, it } from 'mocha'\r\nimport { expect } from 'chai'\r\n\r\nimport dropEmptyRows from './dropEmptyRows.js'\r\n\r\ndescribe('dropEmptyRows', () => {\r\n\tit('should drop empty rows (only at the end)', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G'],\r\n\t\t\t\t[null, null, null]\r\n\t\t\t], {\r\n\t\t\t\tonlyTrimAtTheEnd: true\r\n\t\t\t})\r\n\t\t).to.deep.equal([\r\n\t\t\t[null, null, null],\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t[null, null, null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should drop empty rows', () => {\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G'],\r\n\t\t\t\t[null, null, null]\r\n\t\t\t])\r\n\t\t).to.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\t})\r\n\r\n\tit('should generate row map when dropping empty rows', () => {\r\n\t\tconst rowIndexSourceMap = [0, 1, 2, 3, 4]\r\n\r\n\t\texpect(\r\n\t\t\tdropEmptyRows([\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['A', 'B', 'C'],\r\n\t\t\t\t[null, 'D', null],\r\n\t\t\t\t[null, null, null],\r\n\t\t\t\t['E', 'F', 'G']\r\n\t\t\t],\r\n\t\t\t{ rowIndexSourceMap }\r\n\t\t)).to.deep.equal([\r\n\t\t\t['A', 'B', 'C'],\r\n\t\t\t[null, 'D', null],\r\n\t\t\t['E', 'F', 'G']\r\n\t\t])\r\n\r\n\t\texpect(rowIndexSourceMap).to.deep.equal([1, 2, 4])\r\n\t})\r\n})"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,QAAQ,OAAO;AACpC,SAASC,MAAM,QAAQ,MAAM;AAE7B,OAAOC,aAAa,MAAM,oBAAoB;AAE9CH,QAAQ,CAAC,eAAe,EAAE,YAAM;EAC/BC,EAAE,CAAC,0CAA0C,EAAE,YAAM;IACpDC,MAAM,CACLC,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClB,EAAE;MACFC,gBAAgB,EAAE;IACnB,CAAC,CACF,CAAC,CAACC,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;EACH,CAAC,CAAC;EAEFN,EAAE,CAAC,wBAAwB,EAAE,YAAM;IAClCC,MAAM,CACLC,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAClB,CACF,CAAC,CAACE,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CACf,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;EACH,CAAC,CAAC;EAEFN,EAAE,CAAC,kDAAkD,EAAE,YAAM;IAC5D,IAAMO,iBAAiB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzCN,MAAM,CACLC,aAAa,CAAC,CACb,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,EACD;MAAEK,iBAAiB,EAAjBA;IAAkB,CACrB,CAAC,CAAC,CAACH,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CAChB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACf,CAAC;IAEFL,MAAM,CAACM,iBAAiB,CAAC,CAACH,EAAE,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACnD,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import parseExcelDate from './parseExcelDate.js';
|
|
2
|
-
import parseNumber from './parseNumber.js';
|
|
3
|
-
import isDateFormatStyle from './isDateFormatStyle.js';
|
|
4
|
-
|
|
5
|
-
// Parses a string `value` of a cell.
|
|
6
|
-
export default function parseCellValue(value, type, _ref) {
|
|
7
|
-
var inlineString = _ref.inlineString,
|
|
8
|
-
styleId = _ref.styleId,
|
|
9
|
-
styles = _ref.styles,
|
|
10
|
-
sharedStrings = _ref.sharedStrings,
|
|
11
|
-
epoch1904 = _ref.epoch1904,
|
|
12
|
-
options = _ref.options;
|
|
13
|
-
if (!type) {
|
|
14
|
-
// Default cell type is "n" (numeric).
|
|
15
|
-
// http://www.datypic.com/sc/ooxml/t-ssml_CT_Cell.html
|
|
16
|
-
type = 'n';
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// Available Excel cell types:
|
|
20
|
-
// https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md
|
|
21
|
-
//
|
|
22
|
-
// Some other document (seems to be old):
|
|
23
|
-
// http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/ST_CellType.html
|
|
24
|
-
//
|
|
25
|
-
switch (type) {
|
|
26
|
-
// XLSX tends to store all strings as "shared" (indexed) ones
|
|
27
|
-
// using "s" cell type (for saving on strage space).
|
|
28
|
-
// "str" cell type is then generally only used for storing
|
|
29
|
-
// formula-pre-calculated cell values.
|
|
30
|
-
case 'str':
|
|
31
|
-
value = parseString(value, options);
|
|
32
|
-
break;
|
|
33
|
-
|
|
34
|
-
// Sometimes, XLSX stores strings as "inline" strings rather than "shared" (indexed) ones.
|
|
35
|
-
// Perhaps the specification doesn't force it to use one or another.
|
|
36
|
-
// Example: `<sheetData><row r="1"><c r="A1" s="1" t="inlineStr"><is><t>Test 123</t></is></c></row></sheetData>`.
|
|
37
|
-
case 'inlineStr':
|
|
38
|
-
value = inlineString;
|
|
39
|
-
if (value === undefined) {
|
|
40
|
-
throw new Error('Couldn\'t read "inline string" cell value');
|
|
41
|
-
}
|
|
42
|
-
value = parseString(value, options);
|
|
43
|
-
break;
|
|
44
|
-
|
|
45
|
-
// XLSX tends to store string values as "shared" (indexed) ones.
|
|
46
|
-
// "Shared" strings is a way for an Excel editor to reduce
|
|
47
|
-
// the file size by storing "commonly used" strings in a dictionary
|
|
48
|
-
// and then referring to such strings by their index in that dictionary.
|
|
49
|
-
// Example: `<sheetData><row r="1"><c r="A1" s="1" t="s"><v>0</v></c></row></sheetData>`.
|
|
50
|
-
case 's':
|
|
51
|
-
// If a cell has no value then there's no `<c/>` element for it.
|
|
52
|
-
// If a `<c/>` element exists then it's not empty.
|
|
53
|
-
// The `<v/>`alue is a key in the "shared strings" dictionary of the
|
|
54
|
-
// XLSX file, so look it up in the `sharedStrings` dictionary by the numeric key.
|
|
55
|
-
var sharedStringIndex = Number(value);
|
|
56
|
-
if (isNaN(sharedStringIndex)) {
|
|
57
|
-
throw new Error("Invalid \"shared\" string index: ".concat(value));
|
|
58
|
-
}
|
|
59
|
-
if (sharedStringIndex >= sharedStrings.length) {
|
|
60
|
-
throw new Error("An out-of-bounds \"shared\" string index: ".concat(value));
|
|
61
|
-
}
|
|
62
|
-
value = sharedStrings[sharedStringIndex];
|
|
63
|
-
value = parseString(value, options);
|
|
64
|
-
break;
|
|
65
|
-
|
|
66
|
-
// Boolean (TRUE/FALSE) values are stored as either "1" or "0"
|
|
67
|
-
// in cells of type "b".
|
|
68
|
-
case 'b':
|
|
69
|
-
if (value === '1') {
|
|
70
|
-
value = true;
|
|
71
|
-
} else if (value === '0') {
|
|
72
|
-
value = false;
|
|
73
|
-
} else {
|
|
74
|
-
throw new Error("Unsupported \"boolean\" cell value: ".concat(value));
|
|
75
|
-
}
|
|
76
|
-
break;
|
|
77
|
-
|
|
78
|
-
// XLSX specification seems to support cells of type "z":
|
|
79
|
-
// blank "stub" cells that should be ignored by data processing utilities.
|
|
80
|
-
case 'z':
|
|
81
|
-
value = undefined;
|
|
82
|
-
break;
|
|
83
|
-
|
|
84
|
-
// XLSX specification also defines cells of type "e" containing a numeric "error" code.
|
|
85
|
-
// It's not clear what that means though.
|
|
86
|
-
// They also wrote: "and `w` property stores its common name".
|
|
87
|
-
// It's unclear what they meant by that.
|
|
88
|
-
case 'e':
|
|
89
|
-
value = decodeError(value);
|
|
90
|
-
break;
|
|
91
|
-
|
|
92
|
-
// XLSX supports date cells of type "d", though seems like it (almost?) never
|
|
93
|
-
// uses it for storing dates, preferring "n" numeric timestamp cells instead.
|
|
94
|
-
// The value of a "d" cell is supposedly a string in "ISO 8601" format.
|
|
95
|
-
// I haven't seen an XLSX file having such cells.
|
|
96
|
-
// Example: `<sheetData><row r="1"><c r="A1" s="1" t="d"><v>2021-06-10T00:47:45.700Z</v></c></row></sheetData>`.
|
|
97
|
-
case 'd':
|
|
98
|
-
if (value === undefined) {
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
var parsedDate = new Date(value);
|
|
102
|
-
if (isNaN(parsedDate.valueOf())) {
|
|
103
|
-
throw new Error("Unsupported \"date\" cell value: ".concat(value));
|
|
104
|
-
}
|
|
105
|
-
value = parsedDate;
|
|
106
|
-
break;
|
|
107
|
-
|
|
108
|
-
// Numeric cells have type "n".
|
|
109
|
-
case 'n':
|
|
110
|
-
if (value === undefined) {
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
// XLSX does have "d" type for dates, but it's not commonly used.
|
|
114
|
-
// Instead, it prefers using "n" type for storing dates as timestamps.
|
|
115
|
-
if (styleId && isDateFormatStyle(styleId, styles, options)) {
|
|
116
|
-
// Parse the number from string.
|
|
117
|
-
value = parseNumber(value);
|
|
118
|
-
// Parse the number as a date timestamp.
|
|
119
|
-
value = parseExcelDate(value, {
|
|
120
|
-
epoch1904: epoch1904
|
|
121
|
-
});
|
|
122
|
-
} else {
|
|
123
|
-
// Parse the number from string.
|
|
124
|
-
// Supports custom parsing function to work around javascript number encoding precision issues.
|
|
125
|
-
// https://gitlab.com/catamphetamine/read-excel-file/-/issues/85
|
|
126
|
-
value = (options.parseNumber || parseNumber)(value);
|
|
127
|
-
}
|
|
128
|
-
break;
|
|
129
|
-
default:
|
|
130
|
-
throw new TypeError("Cell type not supported: ".concat(type));
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Convert empty values to `null`.
|
|
134
|
-
if (value === undefined) {
|
|
135
|
-
value = null;
|
|
136
|
-
}
|
|
137
|
-
return value;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Decodes numeric error code to a string code.
|
|
141
|
-
// https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md
|
|
142
|
-
function decodeError(errorCode) {
|
|
143
|
-
// While the error values are determined by the application,
|
|
144
|
-
// the following are some example error values that could be used:
|
|
145
|
-
switch (errorCode) {
|
|
146
|
-
case 0x00:
|
|
147
|
-
return '#NULL!';
|
|
148
|
-
case 0x07:
|
|
149
|
-
return '#DIV/0!';
|
|
150
|
-
case 0x0F:
|
|
151
|
-
return '#VALUE!';
|
|
152
|
-
case 0x17:
|
|
153
|
-
return '#REF!';
|
|
154
|
-
case 0x1D:
|
|
155
|
-
return '#NAME?';
|
|
156
|
-
case 0x24:
|
|
157
|
-
return '#NUM!';
|
|
158
|
-
case 0x2A:
|
|
159
|
-
return '#N/A';
|
|
160
|
-
case 0x2B:
|
|
161
|
-
return '#GETTING_DATA';
|
|
162
|
-
default:
|
|
163
|
-
// Such error code doesn't exist. I made it up.
|
|
164
|
-
return "#ERROR_".concat(errorCode);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
function parseString(value, options) {
|
|
168
|
-
// In some weird cases, a developer might want to disable
|
|
169
|
-
// the automatic trimming of all strings.
|
|
170
|
-
// For example, leading spaces might express a tree-like hierarchy.
|
|
171
|
-
// https://github.com/catamphetamine/read-excel-file/pull/106#issuecomment-1136062917
|
|
172
|
-
if (options.trim !== false) {
|
|
173
|
-
value = value.trim();
|
|
174
|
-
}
|
|
175
|
-
if (value === '') {
|
|
176
|
-
value = undefined;
|
|
177
|
-
}
|
|
178
|
-
return value;
|
|
179
|
-
}
|
|
180
|
-
//# sourceMappingURL=parseCellValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseCellValue.js","names":["parseExcelDate","parseNumber","isDateFormatStyle","parseCellValue","value","type","_ref","inlineString","styleId","styles","sharedStrings","epoch1904","options","parseString","undefined","Error","sharedStringIndex","Number","isNaN","concat","length","decodeError","parsedDate","Date","valueOf","TypeError","errorCode","trim"],"sources":["../../source/xlsx/parseCellValue.js"],"sourcesContent":["import parseExcelDate from './parseExcelDate.js'\r\nimport parseNumber from './parseNumber.js'\r\nimport isDateFormatStyle from './isDateFormatStyle.js'\r\n\r\n// Parses a string `value` of a cell.\r\nexport default function parseCellValue(value, type, {\r\n inlineString,\r\n styleId,\r\n styles,\r\n sharedStrings,\r\n epoch1904,\r\n options\r\n}) {\r\n if (!type) {\r\n // Default cell type is \"n\" (numeric).\r\n // http://www.datypic.com/sc/ooxml/t-ssml_CT_Cell.html\r\n type = 'n'\r\n }\r\n\r\n // Available Excel cell types:\r\n // https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md\r\n //\r\n // Some other document (seems to be old):\r\n // http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/ST_CellType.html\r\n //\r\n switch (type) {\r\n // XLSX tends to store all strings as \"shared\" (indexed) ones\r\n // using \"s\" cell type (for saving on strage space).\r\n // \"str\" cell type is then generally only used for storing\r\n // formula-pre-calculated cell values.\r\n case 'str':\r\n value = parseString(value, options)\r\n break\r\n\r\n // Sometimes, XLSX stores strings as \"inline\" strings rather than \"shared\" (indexed) ones.\r\n // Perhaps the specification doesn't force it to use one or another.\r\n // Example: `<sheetData><row r=\"1\"><c r=\"A1\" s=\"1\" t=\"inlineStr\"><is><t>Test 123</t></is></c></row></sheetData>`.\r\n case 'inlineStr':\r\n value = inlineString\r\n if (value === undefined) {\r\n throw new Error('Couldn\\'t read \"inline string\" cell value')\r\n }\r\n value = parseString(value, options)\r\n break\r\n\r\n // XLSX tends to store string values as \"shared\" (indexed) ones.\r\n // \"Shared\" strings is a way for an Excel editor to reduce\r\n // the file size by storing \"commonly used\" strings in a dictionary\r\n // and then referring to such strings by their index in that dictionary.\r\n // Example: `<sheetData><row r=\"1\"><c r=\"A1\" s=\"1\" t=\"s\"><v>0</v></c></row></sheetData>`.\r\n case 's':\r\n // If a cell has no value then there's no `<c/>` element for it.\r\n // If a `<c/>` element exists then it's not empty.\r\n // The `<v/>`alue is a key in the \"shared strings\" dictionary of the\r\n // XLSX file, so look it up in the `sharedStrings` dictionary by the numeric key.\r\n const sharedStringIndex = Number(value)\r\n if (isNaN(sharedStringIndex)) {\r\n throw new Error(`Invalid \"shared\" string index: ${value}`)\r\n }\r\n if (sharedStringIndex >= sharedStrings.length) {\r\n throw new Error(`An out-of-bounds \"shared\" string index: ${value}`)\r\n }\r\n value = sharedStrings[sharedStringIndex]\r\n value = parseString(value, options)\r\n break\r\n\r\n // Boolean (TRUE/FALSE) values are stored as either \"1\" or \"0\"\r\n // in cells of type \"b\".\r\n case 'b':\r\n if (value === '1') {\r\n value = true\r\n } else if (value === '0') {\r\n value = false\r\n } else {\r\n throw new Error(`Unsupported \"boolean\" cell value: ${value}`)\r\n }\r\n break\r\n\r\n // XLSX specification seems to support cells of type \"z\":\r\n // blank \"stub\" cells that should be ignored by data processing utilities.\r\n case 'z':\r\n value = undefined\r\n break\r\n\r\n // XLSX specification also defines cells of type \"e\" containing a numeric \"error\" code.\r\n // It's not clear what that means though.\r\n // They also wrote: \"and `w` property stores its common name\".\r\n // It's unclear what they meant by that.\r\n case 'e':\r\n value = decodeError(value)\r\n break\r\n\r\n // XLSX supports date cells of type \"d\", though seems like it (almost?) never\r\n // uses it for storing dates, preferring \"n\" numeric timestamp cells instead.\r\n // The value of a \"d\" cell is supposedly a string in \"ISO 8601\" format.\r\n // I haven't seen an XLSX file having such cells.\r\n // Example: `<sheetData><row r=\"1\"><c r=\"A1\" s=\"1\" t=\"d\"><v>2021-06-10T00:47:45.700Z</v></c></row></sheetData>`.\r\n case 'd':\r\n if (value === undefined) {\r\n break\r\n }\r\n const parsedDate = new Date(value)\r\n if (isNaN(parsedDate.valueOf())) {\r\n throw new Error(`Unsupported \"date\" cell value: ${value}`)\r\n }\r\n value = parsedDate\r\n break\r\n\r\n // Numeric cells have type \"n\".\r\n case 'n':\r\n if (value === undefined) {\r\n break\r\n }\r\n // XLSX does have \"d\" type for dates, but it's not commonly used.\r\n // Instead, it prefers using \"n\" type for storing dates as timestamps.\r\n if (styleId && isDateFormatStyle(styleId, styles, options)) {\r\n // Parse the number from string.\r\n value = parseNumber(value)\r\n // Parse the number as a date timestamp.\r\n value = parseExcelDate(value, { epoch1904 })\r\n } else {\r\n // Parse the number from string.\r\n // Supports custom parsing function to work around javascript number encoding precision issues.\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/85\r\n value = (options.parseNumber || parseNumber)(value)\r\n }\r\n break\r\n\r\n default:\r\n throw new TypeError(`Cell type not supported: ${type}`)\r\n }\r\n\r\n // Convert empty values to `null`.\r\n if (value === undefined) {\r\n value = null\r\n }\r\n\r\n return value\r\n}\r\n\r\n// Decodes numeric error code to a string code.\r\n// https://github.com/SheetJS/sheetjs/blob/19620da30be2a7d7b9801938a0b9b1fd3c4c4b00/docbits/52_datatype.md\r\nfunction decodeError(errorCode) {\r\n // While the error values are determined by the application,\r\n // the following are some example error values that could be used:\r\n switch (errorCode) {\r\n case 0x00:\r\n return '#NULL!'\r\n case 0x07:\r\n return '#DIV/0!'\r\n case 0x0F:\r\n return '#VALUE!'\r\n case 0x17:\r\n return '#REF!'\r\n case 0x1D:\r\n return '#NAME?'\r\n case 0x24:\r\n return '#NUM!'\r\n case 0x2A:\r\n return '#N/A'\r\n case 0x2B:\r\n return '#GETTING_DATA'\r\n default:\r\n // Such error code doesn't exist. I made it up.\r\n return `#ERROR_${errorCode}`\r\n }\r\n}\r\n\r\nfunction parseString(value, options) {\r\n // In some weird cases, a developer might want to disable\r\n // the automatic trimming of all strings.\r\n // For example, leading spaces might express a tree-like hierarchy.\r\n // https://github.com/catamphetamine/read-excel-file/pull/106#issuecomment-1136062917\r\n if (options.trim !== false) {\r\n value = value.trim()\r\n }\r\n if (value === '') {\r\n value = undefined\r\n }\r\n return value\r\n}"],"mappings":"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"}
|