read-excel-file 9.2.0 → 9.3.1

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 (205) hide show
  1. package/.gitlab-ci.yml +1 -1
  2. package/CHANGELOG.md +5 -0
  3. package/README.md +153 -50
  4. package/bundle/read-excel-file.min.js +1 -1
  5. package/bundle/read-excel-file.min.js.map +1 -1
  6. package/bundle/read-excel-file.min.old.js +2 -0
  7. package/bundle/read-excel-file.min.old.js.map +1 -0
  8. package/commonjs/export/convertValuesFromUint8ArraysToStrings.js +3 -0
  9. package/commonjs/export/convertValuesFromUint8ArraysToStrings.js.map +1 -1
  10. package/commonjs/export/parseSheet.js +12 -9
  11. package/commonjs/export/parseSheet.js.map +1 -1
  12. package/commonjs/export/readSheetBrowser.js +6 -2
  13. package/commonjs/export/readSheetBrowser.js.map +1 -1
  14. package/commonjs/export/readSheetNode.js +6 -2
  15. package/commonjs/export/readSheetNode.js.map +1 -1
  16. package/commonjs/export/readSheetUniversal.js +14 -2
  17. package/commonjs/export/readSheetUniversal.js.map +1 -1
  18. package/commonjs/export/readSheetWebWorker.js +12 -2
  19. package/commonjs/export/readSheetWebWorker.js.map +1 -1
  20. package/commonjs/export/readXlsxFileBrowser.js +6 -2
  21. package/commonjs/export/readXlsxFileBrowser.js.map +1 -1
  22. package/commonjs/export/readXlsxFileNode.js +6 -2
  23. package/commonjs/export/readXlsxFileNode.js.map +1 -1
  24. package/commonjs/export/readXlsxFileUniversal.js +14 -2
  25. package/commonjs/export/readXlsxFileUniversal.js.map +1 -1
  26. package/commonjs/export/readXlsxFileWebWorker.js +12 -2
  27. package/commonjs/export/readXlsxFileWebWorker.js.map +1 -1
  28. package/commonjs/export/unpackXlsxFileBrowser.js +29 -6
  29. package/commonjs/export/unpackXlsxFileBrowser.js.map +1 -1
  30. package/commonjs/export/unpackXlsxFileNode.js +6 -0
  31. package/commonjs/export/unpackXlsxFileNode.js.map +1 -1
  32. package/commonjs/export/unpackXlsxFileUniversal.js +6 -0
  33. package/commonjs/export/unpackXlsxFileUniversal.js.map +1 -1
  34. package/commonjs/export/unpackXlsxFileWebWorker.js +14 -0
  35. package/commonjs/export/unpackXlsxFileWebWorker.js.map +1 -0
  36. package/commonjs/parseSheetData/parseSheetData.js +6 -6
  37. package/commonjs/parseSheetData/parseSheetData.js.map +1 -1
  38. package/commonjs/utility/checkpoint.js +33 -0
  39. package/commonjs/utility/checkpoint.js.map +1 -0
  40. package/commonjs/utility/isObject.js +15 -0
  41. package/commonjs/utility/isObject.js.map +1 -0
  42. package/commonjs/utility/isPromise.js +18 -0
  43. package/commonjs/utility/isPromise.js.map +1 -0
  44. package/commonjs/xlsx/convertCellsToData2dArray.js +0 -3
  45. package/commonjs/xlsx/convertCellsToData2dArray.js.map +1 -1
  46. package/commonjs/xlsx/isDateFormatStyle.js +2 -2
  47. package/commonjs/xlsx/isDateFormatStyle.js.map +1 -1
  48. package/commonjs/xlsx/parseCell.js +89 -24
  49. package/commonjs/xlsx/parseCell.js.map +1 -1
  50. package/{modules/xlsx/parseCellCoordinates.js → commonjs/xlsx/parseCellAddress.js} +18 -7
  51. package/commonjs/xlsx/parseCellAddress.js.map +1 -0
  52. package/commonjs/xlsx/parseCellValue.js +7 -23
  53. package/commonjs/xlsx/parseCellValue.js.map +1 -1
  54. package/commonjs/xlsx/parseFilePaths.js +31 -32
  55. package/commonjs/xlsx/parseFilePaths.js.map +1 -1
  56. package/commonjs/xlsx/parseNumber.js +20 -0
  57. package/commonjs/xlsx/parseNumber.js.map +1 -0
  58. package/commonjs/xlsx/parseSharedString.js +64 -0
  59. package/commonjs/xlsx/parseSharedString.js.map +1 -0
  60. package/commonjs/xlsx/parseSharedStrings.js +45 -5
  61. package/commonjs/xlsx/parseSharedStrings.js.map +1 -1
  62. package/commonjs/xlsx/parseSheet.js +93 -9
  63. package/commonjs/xlsx/parseSheet.js.map +1 -1
  64. package/commonjs/xlsx/parseSheetData.js +68 -0
  65. package/commonjs/xlsx/parseSheetData.js.map +1 -0
  66. package/commonjs/xlsx/parseSpreadsheetContents.js +244 -43
  67. package/commonjs/xlsx/parseSpreadsheetContents.js.map +1 -1
  68. package/commonjs/xlsx/parseSpreadsheetInfo.js +67 -36
  69. package/commonjs/xlsx/parseSpreadsheetInfo.js.map +1 -1
  70. package/commonjs/xlsx/parseStyles.js +89 -36
  71. package/commonjs/xlsx/parseStyles.js.map +1 -1
  72. package/commonjs/xml/dom.js +2 -1
  73. package/commonjs/xml/dom.js.map +1 -1
  74. package/commonjs/xml/parseXmlStream.js +14 -0
  75. package/commonjs/xml/parseXmlStream.js.map +1 -0
  76. package/commonjs/xml/parseXmlStream.sax.js +109 -0
  77. package/commonjs/xml/parseXmlStream.sax.js.map +1 -0
  78. package/commonjs/xml/parseXmlStream.saxen.code.js +953 -0
  79. package/commonjs/xml/parseXmlStream.saxen.code.js.map +1 -0
  80. package/commonjs/xml/parseXmlStream.saxen.js +85 -0
  81. package/commonjs/xml/parseXmlStream.saxen.js.map +1 -0
  82. package/commonjs/xml/xlsx.js +75 -40
  83. package/commonjs/xml/xlsx.js.map +1 -1
  84. package/commonjs/zip/unzipFromArrayBuffer.js +5 -14
  85. package/commonjs/zip/unzipFromArrayBuffer.js.map +1 -1
  86. package/commonjs/zip/unzipFromStream.fflate.js +154 -25
  87. package/commonjs/zip/unzipFromStream.fflate.js.map +1 -1
  88. package/commonjs/zip/unzipFromStream.js.map +1 -1
  89. package/commonjs/zip/unzipFromStream.unzipper.js +37 -26
  90. package/commonjs/zip/unzipFromStream.unzipper.js.map +1 -1
  91. package/modules/export/convertValuesFromUint8ArraysToStrings.js +2 -0
  92. package/modules/export/convertValuesFromUint8ArraysToStrings.js.map +1 -1
  93. package/modules/export/parseSheet.js +12 -9
  94. package/modules/export/parseSheet.js.map +1 -1
  95. package/modules/export/readSheetBrowser.js +5 -2
  96. package/modules/export/readSheetBrowser.js.map +1 -1
  97. package/modules/export/readSheetNode.js +5 -2
  98. package/modules/export/readSheetNode.js.map +1 -1
  99. package/modules/export/readSheetUniversal.js +14 -2
  100. package/modules/export/readSheetUniversal.js.map +1 -1
  101. package/modules/export/readSheetWebWorker.js +12 -2
  102. package/modules/export/readSheetWebWorker.js.map +1 -1
  103. package/modules/export/readXlsxFileBrowser.js +5 -2
  104. package/modules/export/readXlsxFileBrowser.js.map +1 -1
  105. package/modules/export/readXlsxFileNode.js +5 -2
  106. package/modules/export/readXlsxFileNode.js.map +1 -1
  107. package/modules/export/readXlsxFileUniversal.js +14 -2
  108. package/modules/export/readXlsxFileUniversal.js.map +1 -1
  109. package/modules/export/readXlsxFileWebWorker.js +12 -2
  110. package/modules/export/readXlsxFileWebWorker.js.map +1 -1
  111. package/modules/export/unpackXlsxFileBrowser.js +26 -6
  112. package/modules/export/unpackXlsxFileBrowser.js.map +1 -1
  113. package/modules/export/unpackXlsxFileNode.js +3 -0
  114. package/modules/export/unpackXlsxFileNode.js.map +1 -1
  115. package/modules/export/unpackXlsxFileUniversal.js +3 -0
  116. package/modules/export/unpackXlsxFileUniversal.js.map +1 -1
  117. package/modules/export/unpackXlsxFileWebWorker.js +6 -0
  118. package/modules/export/unpackXlsxFileWebWorker.js.map +1 -0
  119. package/modules/parseSheetData/parseSheetData.js +4 -4
  120. package/modules/parseSheetData/parseSheetData.js.map +1 -1
  121. package/modules/utility/checkpoint.js +25 -0
  122. package/modules/utility/checkpoint.js.map +1 -0
  123. package/modules/utility/isObject.js +9 -0
  124. package/modules/utility/isObject.js.map +1 -0
  125. package/modules/utility/isPromise.js +12 -0
  126. package/modules/utility/isPromise.js.map +1 -0
  127. package/modules/xlsx/convertCellsToData2dArray.js +0 -3
  128. package/modules/xlsx/convertCellsToData2dArray.js.map +1 -1
  129. package/modules/xlsx/isDateFormatStyle.js +2 -2
  130. package/modules/xlsx/isDateFormatStyle.js.map +1 -1
  131. package/modules/xlsx/parseCell.js +85 -24
  132. package/modules/xlsx/parseCell.js.map +1 -1
  133. package/{commonjs/xlsx/parseCellCoordinates.js → modules/xlsx/parseCellAddress.js} +12 -13
  134. package/modules/xlsx/parseCellAddress.js.map +1 -0
  135. package/modules/xlsx/parseCellValue.js +7 -23
  136. package/modules/xlsx/parseCellValue.js.map +1 -1
  137. package/modules/xlsx/parseFilePaths.js +31 -33
  138. package/modules/xlsx/parseFilePaths.js.map +1 -1
  139. package/modules/xlsx/parseNumber.js +14 -0
  140. package/modules/xlsx/parseNumber.js.map +1 -0
  141. package/modules/xlsx/parseSharedString.js +55 -0
  142. package/modules/xlsx/parseSharedString.js.map +1 -0
  143. package/modules/xlsx/parseSharedStrings.js +46 -5
  144. package/modules/xlsx/parseSharedStrings.js.map +1 -1
  145. package/modules/xlsx/parseSheet.js +91 -9
  146. package/modules/xlsx/parseSheet.js.map +1 -1
  147. package/modules/xlsx/parseSheetData.js +55 -0
  148. package/modules/xlsx/parseSheetData.js.map +1 -0
  149. package/modules/xlsx/parseSpreadsheetContents.js +242 -43
  150. package/modules/xlsx/parseSpreadsheetContents.js.map +1 -1
  151. package/modules/xlsx/parseSpreadsheetInfo.js +67 -37
  152. package/modules/xlsx/parseSpreadsheetInfo.js.map +1 -1
  153. package/modules/xlsx/parseStyles.js +88 -36
  154. package/modules/xlsx/parseStyles.js.map +1 -1
  155. package/modules/xml/dom.js +2 -1
  156. package/modules/xml/dom.js.map +1 -1
  157. package/modules/xml/parseXmlStream.js +18 -0
  158. package/modules/xml/parseXmlStream.js.map +1 -0
  159. package/modules/xml/parseXmlStream.sax.js +103 -0
  160. package/modules/xml/parseXmlStream.sax.js.map +1 -0
  161. package/modules/xml/parseXmlStream.saxen.code.js +947 -0
  162. package/modules/xml/parseXmlStream.saxen.code.js.map +1 -0
  163. package/modules/xml/parseXmlStream.saxen.js +79 -0
  164. package/modules/xml/parseXmlStream.saxen.js.map +1 -0
  165. package/modules/xml/xlsx.js +72 -36
  166. package/modules/xml/xlsx.js.map +1 -1
  167. package/modules/zip/unzipFromArrayBuffer.js +5 -14
  168. package/modules/zip/unzipFromArrayBuffer.js.map +1 -1
  169. package/modules/zip/unzipFromStream.fflate.js +157 -24
  170. package/modules/zip/unzipFromStream.fflate.js.map +1 -1
  171. package/modules/zip/unzipFromStream.js +56 -2
  172. package/modules/zip/unzipFromStream.js.map +1 -1
  173. package/modules/zip/unzipFromStream.unzipper.js +38 -26
  174. package/modules/zip/unzipFromStream.unzipper.js.map +1 -1
  175. package/package.json +4 -6
  176. package/commonjs/xlsx/parseCellCoordinates.js.map +0 -1
  177. package/commonjs/xlsx/parseCells.js +0 -34
  178. package/commonjs/xlsx/parseCells.js.map +0 -1
  179. package/commonjs/xlsx/parseSheetDimensions.js +0 -43
  180. package/commonjs/xlsx/parseSheetDimensions.js.map +0 -1
  181. package/commonjs/xml/xml.js +0 -13
  182. package/commonjs/xml/xml.js.map +0 -1
  183. package/commonjs/xml/xmlBrowser.js +0 -17
  184. package/commonjs/xml/xmlBrowser.js.map +0 -1
  185. package/commonjs/xml/xpath/xlsx-xpath.js +0 -92
  186. package/commonjs/xml/xpath/xlsx-xpath.js.map +0 -1
  187. package/commonjs/xml/xpath/xpathBrowser.js +0 -33
  188. package/commonjs/xml/xpath/xpathBrowser.js.map +0 -1
  189. package/commonjs/xml/xpath/xpathNode.js +0 -16
  190. package/commonjs/xml/xpath/xpathNode.js.map +0 -1
  191. package/modules/xlsx/parseCellCoordinates.js.map +0 -1
  192. package/modules/xlsx/parseCells.js +0 -27
  193. package/modules/xlsx/parseCells.js.map +0 -1
  194. package/modules/xlsx/parseSheetDimensions.js +0 -37
  195. package/modules/xlsx/parseSheetDimensions.js.map +0 -1
  196. package/modules/xml/xml.js +0 -7
  197. package/modules/xml/xml.js.map +0 -1
  198. package/modules/xml/xmlBrowser.js +0 -11
  199. package/modules/xml/xmlBrowser.js.map +0 -1
  200. package/modules/xml/xpath/xlsx-xpath.js +0 -73
  201. package/modules/xml/xpath/xlsx-xpath.js.map +0 -1
  202. package/modules/xml/xpath/xpathBrowser.js +0 -27
  203. package/modules/xml/xpath/xpathBrowser.js.map +0 -1
  204. package/modules/xml/xpath/xpathNode.js +0 -9
  205. package/modules/xml/xpath/xpathNode.js.map +0 -1
@@ -0,0 +1 @@
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. &nbsp;\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 (&amp;) as well as\r\n * hex (&#xaaf;) and decimal (&#1231;) 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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"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = parseXmlStream;
7
+ var _saxen = require("saxen");
8
+ function parseXmlStream(xml, _ref) {
9
+ var createInitialState = _ref.createInitialState,
10
+ onOpenTag = _ref.onOpenTag,
11
+ onCloseTag = _ref.onCloseTag,
12
+ onText = _ref.onText;
13
+ // This function was put inside the `parseXmlStream()` function body
14
+ // in order to prevent it from becoming an "external dependency"
15
+ // when using `worker-f` package to run this code in a worker.
16
+ var TAG_NAME_PREFIX = /.+:/;
17
+ function trimXmlnsPrefix(tagName) {
18
+ return tagName.replace(TAG_NAME_PREFIX, '');
19
+ }
20
+ return new Promise(function (resolve, reject) {
21
+ var errored = false;
22
+ var xmlns = true;
23
+ var state = createInitialState();
24
+
25
+ // an error happened.
26
+ var onerror = function onerror(error) {
27
+ if (errored) {
28
+ return;
29
+ }
30
+ errored = true;
31
+ reject(error);
32
+ };
33
+
34
+ // got some text. `text` is the string of text.
35
+ var ontext = function ontext(text) {
36
+ if (onText) {
37
+ onText(text, state);
38
+ }
39
+ };
40
+
41
+ // opened a tag. `node` has "name" and "attributes"
42
+ var onopentag = function onopentag(element, decodeEntities, selfClosing, getContext) {
43
+ if (onOpenTag) {
44
+ // * `element.originalName` — The tag name as written in the XML string, retaining the original prefix regardless of the list of pre-configured namespace mappings.
45
+ // * `element.name` — The tag name with the namespace prefix resolved against the list of pre-configured namespace mappings. I.e. the namespace prefix will potentially be replaced with one from the pre-configured namespace map.
46
+ onOpenTag(xmlns ? trimXmlnsPrefix(element.originalName) : element.name, element.attrs, state);
47
+ }
48
+ };
49
+
50
+ // closed a tag.
51
+ var onclosetag = function onclosetag(element) {
52
+ if (onCloseTag) {
53
+ // * `element.originalName` — The tag name as written in the XML string, retaining the original prefix regardless of the list of pre-configured namespace mappings.
54
+ // * `element.name` — The tag name with the namespace prefix resolved against the list of pre-configured namespace mappings. I.e. the namespace prefix will potentially be replaced with one from the pre-configured namespace map.
55
+ var tagName = xmlns ? trimXmlnsPrefix(element.originalName) : element.name;
56
+ onCloseTag(tagName, state);
57
+ }
58
+ };
59
+
60
+ // `proxy: true` option enables "proxy" mode.
61
+ //
62
+ // In "proxy" mode, `onopentag` and `onclosetag` receive slightly different arguments:
63
+ // * element name is replaced with element object
64
+ // * getAttribute() function is not passed
65
+ //
66
+ var parser = new _saxen.Parser({
67
+ proxy: true
68
+ });
69
+
70
+ // Parse XML "namespaces" (`xmlns` stuff).
71
+ if (xmlns) {
72
+ parser.ns();
73
+ }
74
+ parser.on('error', onerror);
75
+ parser.on('text', ontext);
76
+ parser.on('openTag', onopentag);
77
+ parser.on('closeTag', onclosetag);
78
+ parser.parse(xml);
79
+ if (errored) {
80
+ return;
81
+ }
82
+ resolve(state);
83
+ });
84
+ }
85
+ //# sourceMappingURL=parseXmlStream.saxen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseXmlStream.saxen.js","names":["_saxen","require","parseXmlStream","xml","_ref","createInitialState","onOpenTag","onCloseTag","onText","TAG_NAME_PREFIX","trimXmlnsPrefix","tagName","replace","Promise","resolve","reject","errored","xmlns","state","onerror","error","ontext","text","onopentag","element","decodeEntities","selfClosing","getContext","originalName","name","attrs","onclosetag","parser","Parser","proxy","ns","on","parse"],"sources":["../../source/xml/parseXmlStream.saxen.js"],"sourcesContent":["import { Parser } from 'saxen'\r\n\r\nexport default function parseXmlStream(xml, {\r\n\tcreateInitialState,\r\n\tonOpenTag,\r\n\tonCloseTag,\r\n\tonText\r\n}) {\r\n\t// This function was put inside the `parseXmlStream()` function body\r\n\t// in order to prevent it from becoming an \"external dependency\"\r\n\t// when using `worker-f` package to run this code in a worker.\r\n\tconst TAG_NAME_PREFIX = /.+:/\r\n\tfunction trimXmlnsPrefix(tagName) {\r\n\t\treturn tagName.replace(TAG_NAME_PREFIX, '')\r\n\t}\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tlet errored = false\r\n\r\n\t\tconst xmlns = true\r\n\r\n\t\tconst state = createInitialState()\r\n\r\n\t\t// an error happened.\r\n\t\tconst onerror = (error) => {\r\n\t\t\tif (errored) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\terrored = true\r\n\t\t\treject(error)\r\n\t\t}\r\n\r\n\t\t// got some text. `text` is the string of text.\r\n\t\tconst ontext = (text) => {\r\n\t\t\tif (onText) {\r\n\t\t\t\tonText(text, state)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// opened a tag. `node` has \"name\" and \"attributes\"\r\n\t\tconst onopentag = (element, decodeEntities, selfClosing, getContext) => {\r\n\t\t\tif (onOpenTag) {\r\n\t\t\t\t// * `element.originalName` — The tag name as written in the XML string, retaining the original prefix regardless of the list of pre-configured namespace mappings.\r\n\t\t\t\t// * `element.name` — The tag name with the namespace prefix resolved against the list of pre-configured namespace mappings. I.e. the namespace prefix will potentially be replaced with one from the pre-configured namespace map.\r\n\t\t\t\tonOpenTag(\r\n\t\t\t\t\txmlns ? trimXmlnsPrefix(element.originalName) : element.name,\r\n\t\t\t\t\telement.attrs,\r\n\t\t\t\t\tstate\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// closed a tag.\r\n\t\tconst onclosetag = (element) => {\r\n\t\t\tif (onCloseTag) {\r\n\t\t\t\t// * `element.originalName` — The tag name as written in the XML string, retaining the original prefix regardless of the list of pre-configured namespace mappings.\r\n\t\t\t\t// * `element.name` — The tag name with the namespace prefix resolved against the list of pre-configured namespace mappings. I.e. the namespace prefix will potentially be replaced with one from the pre-configured namespace map.\r\n\t\t\t\tconst tagName = xmlns ? trimXmlnsPrefix(element.originalName) : element.name\r\n\t\t\t\tonCloseTag(tagName, state)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// `proxy: true` option enables \"proxy\" mode.\r\n\t\t//\r\n\t\t// In \"proxy\" mode, `onopentag` and `onclosetag` receive slightly different arguments:\r\n\t\t// * element name is replaced with element object\r\n\t\t// * getAttribute() function is not passed\r\n\t\t//\r\n\t\tconst parser = new Parser({ proxy: true })\r\n\r\n\t\t// Parse XML \"namespaces\" (`xmlns` stuff).\r\n\t\tif (xmlns) {\r\n\t\t\tparser.ns()\r\n\t\t}\r\n\r\n\t\tparser.on('error', onerror)\r\n\t\tparser.on('text', ontext)\r\n\t\tparser.on('openTag', onopentag)\r\n\t\tparser.on('closeTag', onclosetag)\r\n\r\n\t\tparser.parse(xml)\r\n\r\n\t\tif (errored) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tresolve(state)\r\n\t})\r\n}"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEe,SAASC,cAAcA,CAACC,GAAG,EAAAC,IAAA,EAKvC;EAAA,IAJFC,kBAAkB,GAAAD,IAAA,CAAlBC,kBAAkB;IAClBC,SAAS,GAAAF,IAAA,CAATE,SAAS;IACTC,UAAU,GAAAH,IAAA,CAAVG,UAAU;IACVC,MAAM,GAAAJ,IAAA,CAANI,MAAM;EAEN;EACA;EACA;EACA,IAAMC,eAAe,GAAG,KAAK;EAC7B,SAASC,eAAeA,CAACC,OAAO,EAAE;IACjC,OAAOA,OAAO,CAACC,OAAO,CAACH,eAAe,EAAE,EAAE,CAAC;EAC5C;EAEA,OAAO,IAAII,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;IACvC,IAAIC,OAAO,GAAG,KAAK;IAEnB,IAAMC,KAAK,GAAG,IAAI;IAElB,IAAMC,KAAK,GAAGb,kBAAkB,CAAC,CAAC;;IAElC;IACA,IAAMc,OAAO,GAAG,SAAVA,OAAOA,CAAIC,KAAK,EAAK;MAC1B,IAAIJ,OAAO,EAAE;QACZ;MACD;MACAA,OAAO,GAAG,IAAI;MACdD,MAAM,CAACK,KAAK,CAAC;IACd,CAAC;;IAED;IACA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAIC,IAAI,EAAK;MACxB,IAAId,MAAM,EAAE;QACXA,MAAM,CAACc,IAAI,EAAEJ,KAAK,CAAC;MACpB;IACD,CAAC;;IAED;IACA,IAAMK,SAAS,GAAG,SAAZA,SAASA,CAAIC,OAAO,EAAEC,cAAc,EAAEC,WAAW,EAAEC,UAAU,EAAK;MACvE,IAAIrB,SAAS,EAAE;QACd;QACA;QACAA,SAAS,CACRW,KAAK,GAAGP,eAAe,CAACc,OAAO,CAACI,YAAY,CAAC,GAAGJ,OAAO,CAACK,IAAI,EAC5DL,OAAO,CAACM,KAAK,EACbZ,KACD,CAAC;MACF;IACD,CAAC;;IAED;IACA,IAAMa,UAAU,GAAG,SAAbA,UAAUA,CAAIP,OAAO,EAAK;MAC/B,IAAIjB,UAAU,EAAE;QACf;QACA;QACA,IAAMI,OAAO,GAAGM,KAAK,GAAGP,eAAe,CAACc,OAAO,CAACI,YAAY,CAAC,GAAGJ,OAAO,CAACK,IAAI;QAC5EtB,UAAU,CAACI,OAAO,EAAEO,KAAK,CAAC;MAC3B;IACD,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA,IAAMc,MAAM,GAAG,IAAIC,aAAM,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;;IAE1C;IACA,IAAIjB,KAAK,EAAE;MACVe,MAAM,CAACG,EAAE,CAAC,CAAC;IACZ;IAEAH,MAAM,CAACI,EAAE,CAAC,OAAO,EAAEjB,OAAO,CAAC;IAC3Ba,MAAM,CAACI,EAAE,CAAC,MAAM,EAAEf,MAAM,CAAC;IACzBW,MAAM,CAACI,EAAE,CAAC,SAAS,EAAEb,SAAS,CAAC;IAC/BS,MAAM,CAACI,EAAE,CAAC,UAAU,EAAEL,UAAU,CAAC;IAEjCC,MAAM,CAACK,KAAK,CAAClC,GAAG,CAAC;IAEjB,IAAIa,OAAO,EAAE;MACZ;IACD;IACAF,OAAO,CAACI,KAAK,CAAC;EACf,CAAC,CAAC;AACH"}
@@ -4,30 +4,77 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getBaseStyles = getBaseStyles;
7
- exports.getCellElements = getCellElements;
8
- exports.getCellInlineStringValue = getCellInlineStringValue;
9
7
  exports.getCellStyles = getCellStyles;
10
- exports.getCellValueElement = getCellValueElement;
11
- exports.getDimensions = getDimensions;
12
8
  exports.getMergedCellCoordinates = getMergedCellCoordinates;
13
9
  exports.getNumberFormats = getNumberFormats;
14
10
  exports.getRelationships = getRelationships;
15
- exports.getSharedStrings = getSharedStrings;
16
11
  exports.getSheets = getSheets;
17
12
  exports.getWorkbookProperties = getWorkbookProperties;
13
+ exports.readCells = readCells;
14
+ exports.readSharedStrings = readSharedStrings;
15
+ exports.readSheetDimensions = readSheetDimensions;
18
16
  var _dom = require("./dom.js");
19
- // Returns an array of cells,
20
- // each element being an XML DOM element representing a cell.
21
- function getCellElements(document) {
17
+ function readSharedStrings(document, onOpenTag, onCloseTag, onText, state) {
18
+ var sst = document.documentElement;
19
+ onOpenTag('sst', null, state);
20
+ // An `<si/>` element can contain a `<t/>` (simplest case) or a set of `<r/>` ("rich formatting") elements having `<t/>`.
21
+ // https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem?redirectedfrom=MSDN&view=openxml-2.8.1
22
+ // http://www.datypic.com/sc/ooxml/e-ssml_si-1.html
23
+ (0, _dom.map)(sst, 'si', function (si) {
24
+ onOpenTag('si', null, state);
25
+ var t = (0, _dom.findChild)(si, 't');
26
+ if (t) {
27
+ onOpenTag('t', null, state);
28
+ onText(t.textContent, state);
29
+ onCloseTag('t', state);
30
+ } else {
31
+ (0, _dom.forEach)(si, 'r', function (r) {
32
+ onOpenTag('r', null, state);
33
+ onOpenTag('t', null, state);
34
+ onText((0, _dom.findChild)(r, 't').textContent, state);
35
+ onCloseTag('t', state);
36
+ onCloseTag('r', state);
37
+ });
38
+ }
39
+ onCloseTag('si', state);
40
+ });
41
+ onCloseTag('sst', state);
42
+ }
43
+ function readSheetDimensions(document, onOpenTag, onCloseTag, onText, state) {
22
44
  var worksheet = document.documentElement;
45
+ onOpenTag('worksheet', null, state);
46
+ var dimensions = (0, _dom.findChild)(worksheet, 'dimension');
47
+ if (dimensions) {
48
+ onOpenTag('dimension', {
49
+ ref: dimensions.getAttribute('ref')
50
+ }, state);
51
+ onCloseTag('dimension', state);
52
+ }
53
+ onCloseTag('worksheet', state);
54
+ }
55
+ function readCells(document, onOpenTag, onCloseTag, onText, state) {
56
+ var worksheet = document.documentElement;
57
+ onOpenTag('worksheet', null, state);
23
58
  var sheetData = (0, _dom.findChild)(worksheet, 'sheetData');
24
- var cells = [];
25
59
  (0, _dom.forEach)(sheetData, 'row', function (row) {
60
+ onOpenTag('row', null, state);
26
61
  (0, _dom.forEach)(row, 'c', function (cell) {
27
- cells.push(cell);
62
+ var attributes = {
63
+ r: cell.getAttribute('r'),
64
+ t: cell.getAttribute('t'),
65
+ s: cell.getAttribute('s')
66
+ };
67
+ onOpenTag('c', attributes, state);
68
+ // A cell could have either a value or an insline string value.
69
+ // * Cell value is stored as text content of a `<v>...</v>` element.
70
+ // * Inline string value is stored as text content of an `<is><t>...</t></is>` element.
71
+ readCellValueElement(document, cell, onOpenTag, onCloseTag, onText, state);
72
+ readCellInlineStringValue(document, cell, onOpenTag, onCloseTag, onText, state);
73
+ onCloseTag('c', state);
28
74
  });
75
+ onCloseTag('row', state);
29
76
  });
30
- return cells;
77
+ onCloseTag('worksheet', state);
31
78
  }
32
79
  function getMergedCellCoordinates(document) {
33
80
  var worksheet = document.documentElement;
@@ -40,27 +87,33 @@ function getMergedCellCoordinates(document) {
40
87
  }
41
88
  return mergedCellsInfo;
42
89
  }
43
- function getCellValueElement(document, element) {
44
- return (0, _dom.findChild)(element, 'v');
90
+ function readCellValueElement(document, element, onOpenTag, onCloseTag, onText, state) {
91
+ var v = (0, _dom.findChild)(element, 'v');
92
+ if (v) {
93
+ onOpenTag('v', null, state);
94
+ if (typeof v.textContent === 'string') {
95
+ onText(v.textContent, state);
96
+ }
97
+ onCloseTag('v', state);
98
+ }
45
99
  }
46
- function getCellInlineStringValue(document, element) {
100
+ function readCellInlineStringValue(document, element, onOpenTag, onCloseTag, onText, state) {
47
101
  // It seems as if in some weirdly-output "*.xlsx" files
48
102
  // there're non-element nodes of some weird nature.
49
103
  // https://gitlab.com/catamphetamine/read-excel-file/-/issues/109
50
104
  // This code filters out such weird non-element nodes.
51
105
  var firstElementChild = (0, _dom.getFirstElementChild)(element);
52
106
  if (firstElementChild && (0, _dom.getTagName)(firstElementChild) === 'is') {
107
+ onOpenTag('is', null, state);
53
108
  var firstElementChildFirstElementChild = (0, _dom.getFirstElementChild)(firstElementChild);
54
109
  if (firstElementChildFirstElementChild && (0, _dom.getTagName)(firstElementChildFirstElementChild) === 't') {
55
- return firstElementChildFirstElementChild.textContent;
110
+ onOpenTag('t', null, state);
111
+ if (typeof firstElementChildFirstElementChild.textContent === 'string') {
112
+ onText(firstElementChildFirstElementChild.textContent, state);
113
+ }
114
+ onCloseTag('t', state);
56
115
  }
57
- }
58
- }
59
- function getDimensions(document) {
60
- var worksheet = document.documentElement;
61
- var dimensions = (0, _dom.findChild)(worksheet, 'dimension');
62
- if (dimensions) {
63
- return dimensions.getAttribute('ref');
116
+ onCloseTag('is', state);
64
117
  }
65
118
  }
66
119
  function getBaseStyles(document) {
@@ -88,24 +141,6 @@ function getNumberFormats(document) {
88
141
  }
89
142
  return [];
90
143
  }
91
- function getSharedStrings(document) {
92
- // An `<si/>` element can contain a `<t/>` (simplest case) or a set of `<r/>` ("rich formatting") elements having `<t/>`.
93
- // https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem?redirectedfrom=MSDN&view=openxml-2.8.1
94
- // http://www.datypic.com/sc/ooxml/e-ssml_si-1.html
95
-
96
- var sst = document.documentElement;
97
- return (0, _dom.map)(sst, 'si', function (string) {
98
- var t = (0, _dom.findChild)(string, 't');
99
- if (t) {
100
- return t.textContent;
101
- }
102
- var value = '';
103
- (0, _dom.forEach)(string, 'r', function (r) {
104
- value += (0, _dom.findChild)(r, 't').textContent;
105
- });
106
- return value;
107
- });
108
- }
109
144
  function getWorkbookProperties(document) {
110
145
  var workbook = document.documentElement;
111
146
  return (0, _dom.findChild)(workbook, 'workbookPr');
@@ -1 +1 @@
1
- {"version":3,"file":"xlsx.js","names":["_dom","require","getCellElements","document","worksheet","documentElement","sheetData","findChild","cells","forEach","row","cell","push","getMergedCellCoordinates","mergedCells","mergedCellsInfo","mergedCell","getAttribute","getCellValueElement","element","getCellInlineStringValue","firstElementChild","getFirstElementChild","getTagName","firstElementChildFirstElementChild","textContent","getDimensions","dimensions","getBaseStyles","styleSheet","cellStyleXfs","findChildren","getCellStyles","cellXfs","getNumberFormats","numberFormats","numFmts","getSharedStrings","sst","map","string","t","value","r","getWorkbookProperties","workbook","getRelationships","relationships","getSheets","sheets"],"sources":["../../source/xml/xlsx.js"],"sourcesContent":["import { findChild, findChildren, forEach, map, getFirstElementChild, getTagName } from './dom.js'\r\n\r\n// Returns an array of cells,\r\n// each element being an XML DOM element representing a cell.\r\nexport function getCellElements(document) {\r\n const worksheet = document.documentElement\r\n const sheetData = findChild(worksheet, 'sheetData')\r\n\r\n const cells = []\r\n forEach(sheetData, 'row', (row) => {\r\n forEach(row, 'c', (cell) => {\r\n cells.push(cell)\r\n })\r\n })\r\n return cells\r\n}\r\n\r\nexport function getMergedCellCoordinates(document) {\r\n const worksheet = document.documentElement\r\n const mergedCells = findChild(worksheet, 'mergeCells')\r\n const mergedCellsInfo = []\r\n if (mergedCells) {\r\n forEach(mergedCells, 'mergeCell', (mergedCell) => {\r\n mergedCellsInfo.push(mergedCell.getAttribute('ref'))\r\n })\r\n }\r\n return mergedCellsInfo\r\n}\r\n\r\nexport function getCellValueElement(document, element) {\r\n return findChild(element, 'v')\r\n}\r\n\r\nexport function getCellInlineStringValue(document, element) {\r\n // It seems as if in some weirdly-output \"*.xlsx\" files\r\n // there're non-element nodes of some weird nature.\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/109\r\n // This code filters out such weird non-element nodes.\r\n const firstElementChild = getFirstElementChild(element)\r\n if (firstElementChild && getTagName(firstElementChild) === 'is') {\r\n const firstElementChildFirstElementChild = getFirstElementChild(firstElementChild)\r\n if (firstElementChildFirstElementChild && getTagName(firstElementChildFirstElementChild) === 't') {\r\n return firstElementChildFirstElementChild.textContent\r\n }\r\n }\r\n}\r\n\r\nexport function getDimensions(document) {\r\n const worksheet = document.documentElement\r\n const dimensions = findChild(worksheet, 'dimension')\r\n if (dimensions) {\r\n return dimensions.getAttribute('ref')\r\n }\r\n}\r\n\r\nexport function getBaseStyles(document) {\r\n const styleSheet = document.documentElement\r\n const cellStyleXfs = findChild(styleSheet, 'cellStyleXfs')\r\n if (cellStyleXfs) {\r\n return findChildren(cellStyleXfs, 'xf')\r\n }\r\n return []\r\n}\r\n\r\nexport function getCellStyles(document) {\r\n const styleSheet = document.documentElement\r\n const cellXfs = findChild(styleSheet, 'cellXfs')\r\n if (!cellXfs) {\r\n return []\r\n }\r\n return findChildren(cellXfs, 'xf')\r\n}\r\n\r\nexport function getNumberFormats(document) {\r\n const styleSheet = document.documentElement\r\n let numberFormats = []\r\n const numFmts = findChild(styleSheet, 'numFmts')\r\n if (numFmts) {\r\n return findChildren(numFmts, 'numFmt')\r\n }\r\n return []\r\n}\r\n\r\nexport function getSharedStrings(document) {\r\n\t// An `<si/>` element can contain a `<t/>` (simplest case) or a set of `<r/>` (\"rich formatting\") elements having `<t/>`.\r\n\t// https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem?redirectedfrom=MSDN&view=openxml-2.8.1\r\n\t// http://www.datypic.com/sc/ooxml/e-ssml_si-1.html\r\n\r\n const sst = document.documentElement\r\n return map(sst, 'si', string => {\r\n const t = findChild(string, 't')\r\n if (t) {\r\n return t.textContent\r\n }\r\n let value = ''\r\n forEach(string, 'r', (r) => {\r\n value += findChild(r, 't').textContent\r\n })\r\n return value\r\n })\r\n}\r\n\r\nexport function getWorkbookProperties(document) {\r\n const workbook = document.documentElement\r\n return findChild(workbook, 'workbookPr')\r\n}\r\n\r\nexport function getRelationships(document) {\r\n const relationships = document.documentElement\r\n return findChildren(relationships, 'Relationship')\r\n}\r\n\r\nexport function getSheets(document) {\r\n const workbook = document.documentElement\r\n const sheets = findChild(workbook, 'sheets')\r\n return findChildren(sheets, 'sheet')\r\n}"],"mappings":"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"}
1
+ {"version":3,"file":"xlsx.js","names":["_dom","require","readSharedStrings","document","onOpenTag","onCloseTag","onText","state","sst","documentElement","map","si","t","findChild","textContent","forEach","r","readSheetDimensions","worksheet","dimensions","ref","getAttribute","readCells","sheetData","row","cell","attributes","s","readCellValueElement","readCellInlineStringValue","getMergedCellCoordinates","mergedCells","mergedCellsInfo","mergedCell","push","element","v","firstElementChild","getFirstElementChild","getTagName","firstElementChildFirstElementChild","getBaseStyles","styleSheet","cellStyleXfs","findChildren","getCellStyles","cellXfs","getNumberFormats","numberFormats","numFmts","getWorkbookProperties","workbook","getRelationships","relationships","getSheets","sheets"],"sources":["../../source/xml/xlsx.js"],"sourcesContent":["import { findChild, findChildren, forEach, map, getFirstElementChild, getTagName } from './dom.js'\r\n\r\nexport function readSharedStrings(document, onOpenTag, onCloseTag, onText, state) {\r\n const sst = document.documentElement\r\n onOpenTag('sst', null, state)\r\n\t// An `<si/>` element can contain a `<t/>` (simplest case) or a set of `<r/>` (\"rich formatting\") elements having `<t/>`.\r\n\t// https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem?redirectedfrom=MSDN&view=openxml-2.8.1\r\n\t// http://www.datypic.com/sc/ooxml/e-ssml_si-1.html\r\n map(sst, 'si', (si) => {\r\n onOpenTag('si', null, state)\r\n const t = findChild(si, 't')\r\n if (t) {\r\n onOpenTag('t', null, state)\r\n onText(t.textContent, state)\r\n onCloseTag('t', state)\r\n } else {\r\n forEach(si, 'r', (r) => {\r\n onOpenTag('r', null, state)\r\n onOpenTag('t', null, state)\r\n onText(findChild(r, 't').textContent, state)\r\n onCloseTag('t', state)\r\n onCloseTag('r', state)\r\n })\r\n }\r\n onCloseTag('si', state)\r\n })\r\n onCloseTag('sst', state)\r\n}\r\n\r\nexport function readSheetDimensions(document, onOpenTag, onCloseTag, onText, state) {\r\n const worksheet = document.documentElement\r\n onOpenTag('worksheet', null, state)\r\n const dimensions = findChild(worksheet, 'dimension')\r\n if (dimensions) {\r\n onOpenTag('dimension', { ref: dimensions.getAttribute('ref') }, state)\r\n onCloseTag('dimension', state)\r\n }\r\n onCloseTag('worksheet', state)\r\n}\r\n\r\nexport function readCells(document, onOpenTag, onCloseTag, onText, state) {\r\n const worksheet = document.documentElement\r\n onOpenTag('worksheet', null, state)\r\n\r\n const sheetData = findChild(worksheet, 'sheetData')\r\n\r\n forEach(sheetData, 'row', (row) => {\r\n onOpenTag('row', null, state)\r\n forEach(row, 'c', (cell) => {\r\n const attributes = {\r\n r: cell.getAttribute('r'),\r\n t: cell.getAttribute('t'),\r\n s: cell.getAttribute('s')\r\n }\r\n onOpenTag('c', attributes, state)\r\n // A cell could have either a value or an insline string value.\r\n // * Cell value is stored as text content of a `<v>...</v>` element.\r\n // * Inline string value is stored as text content of an `<is><t>...</t></is>` element.\r\n readCellValueElement(document, cell, onOpenTag, onCloseTag, onText, state)\r\n readCellInlineStringValue(document, cell, onOpenTag, onCloseTag, onText, state)\r\n onCloseTag('c', state)\r\n })\r\n onCloseTag('row', state)\r\n })\r\n\r\n onCloseTag('worksheet', state)\r\n}\r\n\r\nexport function getMergedCellCoordinates(document) {\r\n const worksheet = document.documentElement\r\n const mergedCells = findChild(worksheet, 'mergeCells')\r\n const mergedCellsInfo = []\r\n if (mergedCells) {\r\n forEach(mergedCells, 'mergeCell', (mergedCell) => {\r\n mergedCellsInfo.push(mergedCell.getAttribute('ref'))\r\n })\r\n }\r\n return mergedCellsInfo\r\n}\r\n\r\nfunction readCellValueElement(document, element, onOpenTag, onCloseTag, onText, state) {\r\n const v = findChild(element, 'v')\r\n if (v) {\r\n onOpenTag('v', null, state)\r\n if (typeof v.textContent === 'string') {\r\n onText(v.textContent, state)\r\n }\r\n onCloseTag('v', state)\r\n }\r\n}\r\n\r\nfunction readCellInlineStringValue(document, element, onOpenTag, onCloseTag, onText, state) {\r\n // It seems as if in some weirdly-output \"*.xlsx\" files\r\n // there're non-element nodes of some weird nature.\r\n // https://gitlab.com/catamphetamine/read-excel-file/-/issues/109\r\n // This code filters out such weird non-element nodes.\r\n const firstElementChild = getFirstElementChild(element)\r\n if (firstElementChild && getTagName(firstElementChild) === 'is') {\r\n onOpenTag('is', null, state)\r\n const firstElementChildFirstElementChild = getFirstElementChild(firstElementChild)\r\n if (firstElementChildFirstElementChild && getTagName(firstElementChildFirstElementChild) === 't') {\r\n onOpenTag('t', null, state)\r\n if (typeof firstElementChildFirstElementChild.textContent === 'string') {\r\n onText(firstElementChildFirstElementChild.textContent, state)\r\n }\r\n onCloseTag('t', state)\r\n }\r\n onCloseTag('is', state)\r\n }\r\n}\r\n\r\nexport function getBaseStyles(document) {\r\n const styleSheet = document.documentElement\r\n const cellStyleXfs = findChild(styleSheet, 'cellStyleXfs')\r\n if (cellStyleXfs) {\r\n return findChildren(cellStyleXfs, 'xf')\r\n }\r\n return []\r\n}\r\n\r\nexport function getCellStyles(document) {\r\n const styleSheet = document.documentElement\r\n const cellXfs = findChild(styleSheet, 'cellXfs')\r\n if (!cellXfs) {\r\n return []\r\n }\r\n return findChildren(cellXfs, 'xf')\r\n}\r\n\r\nexport function getNumberFormats(document) {\r\n const styleSheet = document.documentElement\r\n let numberFormats = []\r\n const numFmts = findChild(styleSheet, 'numFmts')\r\n if (numFmts) {\r\n return findChildren(numFmts, 'numFmt')\r\n }\r\n return []\r\n}\r\n\r\nexport function getWorkbookProperties(document) {\r\n const workbook = document.documentElement\r\n return findChild(workbook, 'workbookPr')\r\n}\r\n\r\nexport function getRelationships(document) {\r\n const relationships = document.documentElement\r\n return findChildren(relationships, 'Relationship')\r\n}\r\n\r\nexport function getSheets(document) {\r\n const workbook = document.documentElement\r\n const sheets = findChild(workbook, 'sheets')\r\n return findChildren(sheets, 'sheet')\r\n}"],"mappings":"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"}
@@ -6,20 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports["default"] = unzipFromArrayBuffer;
7
7
  exports.unzipFromArrayBufferUsingFunction = unzipFromArrayBufferUsingFunction;
8
8
  var _fflate = require("fflate");
9
- // `fflate` readme is too complicated:
10
- // https://github.com/101arrowz/fflate/issues/251
11
- // I just used whatever approach seemed to work.
12
- //
13
- // It was a choice between "syncrhonous" (blocking) unzip via `unzipSync()`
14
- // and "asynchronous" (non-blocking) unzip via `unzip()`.
15
- //
16
- // In the readme they say that using "asynchronous" API will cause the compression or decompression
17
- // run in a separate thread by using Web (or Node) Workers, so it won't block the main thread.
18
- // Yet, they also say that there is an initial overhead to using workers of about 50ms for each
19
- // asynchronous function. For small (under about 50kB) payloads, they say that the "asynchronous" API
20
- // will be much slower compared to the "synchronous" one. However, when compressing larger files
21
- // or multiple files at once, the "synchronous" API causes the main thread to hang for too long,
22
- // and the "asynchronous" API is an order of magnitude better.
9
+ // `fflate` uses "synchronous" decompressor on `.zip` files that're under `512KB`
10
+ // (or when the compression level is too low), and an "asynchronous" (web worker)
11
+ // decompressor otherwise, as it can be seen from the source code of the `unzip()` function.
12
+ // This is because using web workers comes with an overhead of
13
+ // both creating a new worker and sending data back and forth.
23
14
  //
24
15
 
25
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"unzipFromArrayBuffer.js","names":["_fflate","require","unzipFromArrayBuffer","input","options","unzipFromArrayBufferUsingFunction","unzipAsync","_ref","arguments","length","undefined","filter","unzip","isAsync","Uint8Array","file","path","name","archive","Promise","resolve","reject","error","files"],"sources":["../../source/zip/unzipFromArrayBuffer.js"],"sourcesContent":["// `fflate` readme is too complicated:\r\n// https://github.com/101arrowz/fflate/issues/251\r\n// I just used whatever approach seemed to work.\r\n//\r\n// It was a choice between \"syncrhonous\" (blocking) unzip via `unzipSync()`\r\n// and \"asynchronous\" (non-blocking) unzip via `unzip()`.\r\n//\r\n// In the readme they say that using \"asynchronous\" API will cause the compression or decompression\r\n// run in a separate thread by using Web (or Node) Workers, so it won't block the main thread.\r\n// Yet, they also say that there is an initial overhead to using workers of about 50ms for each\r\n// asynchronous function. For small (under about 50kB) payloads, they say that the \"asynchronous\" API\r\n// will be much slower compared to the \"synchronous\" one. However, when compressing larger files\r\n// or multiple files at once, the \"synchronous\" API causes the main thread to hang for too long,\r\n// and the \"asynchronous\" API is an order of magnitude better.\r\n//\r\nimport { unzip } from 'fflate'\r\n\r\n/**\r\n * Reads `*.zip` file contents. Ignores anything besides `.xml` or `.xml.rels` files.\r\n * @param {ArrayBuffer} input\r\n * @return {Promise<Record<string,Uint8Array>>} Resolves to an object holding `*.zip` file entries.\r\n */\r\nexport default function unzipFromArrayBuffer(input, options) {\r\n\treturn unzipFromArrayBufferUsingFunction(input, options, unzipAsync, true)\r\n}\r\n\r\n/**\r\n * Reads `*.zip` file contents. Ignores anything besides `.xml` or `.xml.rels` files.\r\n * @param {ArrayBuffer} input\r\n * @param {(ArrayBuffer) => Record<string, Uint8Array> | Promise<Record<string, Uint8Array>>} unzip\r\n * @param {boolean} isAsync — Should be `true` when `unzip()` returns a `Promise`, `false` otherwise.\r\n * @return {Promise<Record<string,Uint8Array>>|Record<string,Uint8Array>} Resolves to an object holding `*.zip` file entries.\r\n */\r\nexport function unzipFromArrayBufferUsingFunction(input, { filter } = {}, unzip, isAsync) {\r\n\t// Read the `.zip` archive.\r\n\t// `result` is either `object` or `Promise<object>`\r\n\treturn unzip(new Uint8Array(input), {\r\n\t\t// Ignore certain types of files.\r\n\t\tfilter: (file) => {\r\n\t\t\tif (filter) {\r\n\t\t\t\treturn filter({\r\n\t\t\t\t\tpath: file.name\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\treturn true\r\n\t\t}\r\n\t})\r\n}\r\n\r\nfunction unzipAsync(archive) {\r\n return new Promise((resolve, reject) => {\r\n\t\t// `unzip()` will resort to \"synchronous\" decompression in two edge cases:\r\n // * When the archive size is less than `512KB`.\r\n // * When the data is barely compressed, i.e. the compression ratio is less than 20% reduction in size.\r\n unzip(archive, (error, files) => {\r\n if (error) {\r\n reject(error)\r\n } else {\r\n resolve(files)\r\n }\r\n })\r\n })\r\n}"],"mappings":";;;;;;;AAeA,IAAAA,OAAA,GAAAC,OAAA;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACe,SAASC,oBAAoBA,CAACC,KAAK,EAAEC,OAAO,EAAE;EAC5D,OAAOC,iCAAiC,CAACF,KAAK,EAAEC,OAAO,EAAEE,UAAU,EAAE,IAAI,CAAC;AAC3E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASD,iCAAiCA,CAACF,KAAK,EAAmC;EAAA,IAAAI,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAApB,CAAC,CAAC;IAAbG,OAAM,GAAAJ,IAAA,CAANI,MAAM;EAAA,IAASC,KAAK,GAAAJ,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAAA,IAAEG,OAAO,GAAAL,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EACvF;EACA;EACA,OAAOE,KAAK,CAAC,IAAIE,UAAU,CAACX,KAAK,CAAC,EAAE;IACnC;IACAQ,MAAM,EAAE,SAAAA,OAACI,IAAI,EAAK;MACjB,IAAIJ,OAAM,EAAE;QACX,OAAOA,OAAM,CAAC;UACbK,IAAI,EAAED,IAAI,CAACE;QACZ,CAAC,CAAC;MACH;MACA,OAAO,IAAI;IACZ;EACD,CAAC,CAAC;AACH;AAEA,SAASX,UAAUA,CAACY,OAAO,EAAE;EAC3B,OAAO,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;IACxC;IACE;IACA;IACA,IAAAT,aAAK,EAACM,OAAO,EAAE,UAACI,KAAK,EAAEC,KAAK,EAAK;MAC/B,IAAID,KAAK,EAAE;QACTD,MAAM,CAACC,KAAK,CAAC;MACf,CAAC,MAAM;QACLF,OAAO,CAACG,KAAK,CAAC;MAChB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"unzipFromArrayBuffer.js","names":["_fflate","require","unzipFromArrayBuffer","input","options","unzipFromArrayBufferUsingFunction","unzipAsync","_ref","arguments","length","undefined","filter","unzip","isAsync","Uint8Array","file","path","name","archive","Promise","resolve","reject","error","files"],"sources":["../../source/zip/unzipFromArrayBuffer.js"],"sourcesContent":["// `fflate` uses \"synchronous\" decompressor on `.zip` files that're under `512KB`\r\n// (or when the compression level is too low), and an \"asynchronous\" (web worker)\r\n// decompressor otherwise, as it can be seen from the source code of the `unzip()` function.\r\n// This is because using web workers comes with an overhead of\r\n// both creating a new worker and sending data back and forth.\r\n//\r\nimport { unzip } from 'fflate'\r\n\r\n/**\r\n * Reads `*.zip` file contents. Ignores anything besides `.xml` or `.xml.rels` files.\r\n * @param {ArrayBuffer} input\r\n * @return {Promise<Record<string,Uint8Array>>} Resolves to an object holding `*.zip` file entries.\r\n */\r\nexport default function unzipFromArrayBuffer(input, options) {\r\n\treturn unzipFromArrayBufferUsingFunction(input, options, unzipAsync, true)\r\n}\r\n\r\n/**\r\n * Reads `*.zip` file contents. Ignores anything besides `.xml` or `.xml.rels` files.\r\n * @param {ArrayBuffer} input\r\n * @param {(ArrayBuffer) => Record<string, Uint8Array> | Promise<Record<string, Uint8Array>>} unzip\r\n * @param {boolean} isAsync — Should be `true` when `unzip()` returns a `Promise`, `false` otherwise.\r\n * @return {Promise<Record<string,Uint8Array>>|Record<string,Uint8Array>} Resolves to an object holding `*.zip` file entries.\r\n */\r\nexport function unzipFromArrayBufferUsingFunction(input, { filter } = {}, unzip, isAsync) {\r\n\t// Read the `.zip` archive.\r\n\t// `result` is either `object` or `Promise<object>`\r\n\treturn unzip(new Uint8Array(input), {\r\n\t\t// Ignore certain types of files.\r\n\t\tfilter: (file) => {\r\n\t\t\tif (filter) {\r\n\t\t\t\treturn filter({\r\n\t\t\t\t\tpath: file.name\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\treturn true\r\n\t\t}\r\n\t})\r\n}\r\n\r\nfunction unzipAsync(archive) {\r\n return new Promise((resolve, reject) => {\r\n\t\t// `unzip()` will resort to \"synchronous\" decompression in two edge cases:\r\n // * When the archive size is less than `512KB`.\r\n // * When the data is barely compressed, i.e. the compression ratio is less than 20% reduction in size.\r\n unzip(archive, (error, files) => {\r\n if (error) {\r\n reject(error)\r\n } else {\r\n resolve(files)\r\n }\r\n })\r\n })\r\n}"],"mappings":";;;;;;;AAMA,IAAAA,OAAA,GAAAC,OAAA;AANA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACe,SAASC,oBAAoBA,CAACC,KAAK,EAAEC,OAAO,EAAE;EAC5D,OAAOC,iCAAiC,CAACF,KAAK,EAAEC,OAAO,EAAEE,UAAU,EAAE,IAAI,CAAC;AAC3E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASD,iCAAiCA,CAACF,KAAK,EAAmC;EAAA,IAAAI,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAApB,CAAC,CAAC;IAAbG,OAAM,GAAAJ,IAAA,CAANI,MAAM;EAAA,IAASC,KAAK,GAAAJ,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAAA,IAAEG,OAAO,GAAAL,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EACvF;EACA;EACA,OAAOE,KAAK,CAAC,IAAIE,UAAU,CAACX,KAAK,CAAC,EAAE;IACnC;IACAQ,MAAM,EAAE,SAAAA,OAACI,IAAI,EAAK;MACjB,IAAIJ,OAAM,EAAE;QACX,OAAOA,OAAM,CAAC;UACbK,IAAI,EAAED,IAAI,CAACE;QACZ,CAAC,CAAC;MACH;MACA,OAAO,IAAI;IACZ;EACD,CAAC,CAAC;AACH;AAEA,SAASX,UAAUA,CAACY,OAAO,EAAE;EAC3B,OAAO,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;IACxC;IACE;IACA;IACA,IAAAT,aAAK,EAACM,OAAO,EAAE,UAACI,KAAK,EAAEC,KAAK,EAAK;MAC/B,IAAID,KAAK,EAAE;QACTD,MAAM,CAACC,KAAK,CAAC;MACf,CAAC,MAAM;QACLF,OAAO,CAACG,KAAK,CAAC;MAChB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ"}