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":";AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO,SAASA,MAAMA,CAACC,OAAO,EAAE;EAC9B;;EAEA,IAAIC,YAAY,GAAGC,MAAM,CAACD,YAAY;EAEtC,IAAIE,cAAc,GAAGC,MAAM,CAACC,SAAS,CAACF,cAAc;EAEpD,IAAIG,cAAc,GAAG,oCAAoC;EAEzD,IAAIC,cAAc,GAAG;IACnB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM,EAAE;EACV,CAAC;;EAED;EACAH,MAAM,CAACI,IAAI,CAACD,cAAc,CAAC,CAACE,OAAO,CAAC,UAASC,CAAC,EAAE;IAC9CH,cAAc,CAACG,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC,GAAGJ,cAAc,CAACG,CAAC,CAAC;EACrD,CAAC,CAAC;EAGF,SAASE,eAAeA,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAE;IAEnC;IACA,IAAIA,CAAC,EAAE;MACL,IAAIb,cAAc,CAACc,IAAI,CAACV,cAAc,EAAES,CAAC,CAAC,EAAE;QAC1C,OAAOT,cAAc,CAACS,CAAC,CAAC;MAC1B,CAAC,MAAM;QAEL;QACA,OAAO,GAAG,GAAGA,CAAC,GAAG,GAAG;MACtB;IACF;;IAEA;IACA,IAAIF,CAAC,EAAE;MACL,OAAOb,YAAY,CAACa,CAAC,CAAC;IACxB;;IAEA;IACA,OAAOb,YAAY,CAACiB,QAAQ,CAACH,CAAC,EAAE,EAAE,CAAC,CAAC;EACtC;;EAGA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAASI,cAAcA,CAACC,CAAC,EAAE;IACzB,IAAIA,CAAC,CAACC,MAAM,GAAG,CAAC,IAAID,CAAC,CAACE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;MACzC,OAAOF,CAAC,CAACG,OAAO,CAACjB,cAAc,EAAEM,eAAe,CAAC;IACnD;IAEA,OAAOQ,CAAC;EACV;;EAEA;;EAEA,IAAII,gCAAgC,GAAG,qCAAqC;EAE5E,SAASC,KAAKA,CAACC,GAAG,EAAE;IAClB,OAAO,IAAIC,KAAK,CAACD,GAAG,CAAC;EACvB;EAEA,SAASE,yBAAyBA,CAACC,MAAM,EAAE;IACzC,OAAO,gCAAgC,GAAGA,MAAM,GAAG,GAAG;EACxD;EAEA,SAASC,MAAMA,CAACC,KAAK,EAAE;IACrB,OAAO;MACL,KAAK,EAAEA,KAAK;MACZ,YAAY,EAAE;IAChB,CAAC;EACH;EAEA,SAASC,aAAaA,CAACC,QAAQ,EAAE;IAC/B,IAAIC,KAAK,GAAG,CAAC,CAAC;MAAEC,GAAG;IACnB,KAAKA,GAAG,IAAIF,QAAQ,EAAE;MACpBC,KAAK,CAACC,GAAG,CAAC,GAAGF,QAAQ,CAACE,GAAG,CAAC;IAC5B;IACA,OAAOD,KAAK;EACd;EAEA,SAASE,SAASA,CAACP,MAAM,EAAE;IACzB,OAAOA,MAAM,GAAG,MAAM;EACxB;EAEA,SAASQ,aAAaA,CAACC,aAAa,EAAE;IACpC,IAAIL,QAAQ,GAAG,CAAC,CAAC;MACbM,GAAG;MACHV,MAAM;IAEV,KAAKU,GAAG,IAAID,aAAa,EAAE;MACzBT,MAAM,GAAGS,aAAa,CAACC,GAAG,CAAC;MAC3BN,QAAQ,CAACJ,MAAM,CAAC,GAAGA,MAAM;MACzBI,QAAQ,CAACG,SAAS,CAACP,MAAM,CAAC,CAAC,GAAGU,GAAG;IACnC;IAEA,OAAON,QAAQ;EACjB;EAEA,SAASO,cAAcA,CAAA,EAAG;IACxB,OAAO;MAAEC,IAAI,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;EAC/B;EAEA,SAASC,SAASA,CAACC,GAAG,EAAE;IACtB,MAAMA,GAAG;EACX;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAAS7C,MAAMA,CAACC,OAAO,EAAE;IAEvB,IAAI,CAAC,IAAI,EAAE;MACT,OAAO,IAAID,MAAM,CAACC,OAAO,CAAC;IAC5B;IAEA,IAAI6C,KAAK,GAAG7C,OAAO,IAAIA,OAAO,CAAC,OAAO,CAAC;IAEvC,IAAI8C,MAAM;MACNC,SAAS;MACTC,UAAU;MACVC,OAAO;MACPC,OAAO,GAAGP,SAAS;MACnBQ,SAAS;MACTC,SAAS;MACTC,UAAU;MACVC,WAAW;IAEf,IAAIC,UAAU,GAAGf,cAAc;;IAE/B;AACJ;AACA;AACA;AACA;IACI,IAAIgB,OAAO,GAAG,KAAK;;IAEnB;AACJ;AACA;AACA;AACA;IACI,IAAIC,WAAW,GAAG,KAAK;;IAEvB;AACJ;AACA;AACA;AACA;IACI,IAAIC,WAAW,GAAG,IAAI;;IAEtB;AACJ;AACA;AACA;AACA;IACI,IAAIC,SAAS,GAAG,KAAK;;IAErB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAIrB,aAAa;;IAEjB;AACJ;AACA;AACA;AACA;IACI,SAASsB,WAAWA,CAAChB,GAAG,EAAE;MACxB,IAAI,EAAEA,GAAG,YAAYjB,KAAK,CAAC,EAAE;QAC3BiB,GAAG,GAAGnB,KAAK,CAACmB,GAAG,CAAC;MAClB;MAEAc,WAAW,GAAGd,GAAG;MAEjBM,OAAO,CAACN,GAAG,EAAEW,UAAU,CAAC;IAC1B;;IAEA;AACJ;AACA;AACA;AACA;IACI,SAASM,aAAaA,CAACjB,GAAG,EAAE;MAE1B,IAAI,CAACO,SAAS,EAAE;QACd;MACF;MAEA,IAAI,EAAEP,GAAG,YAAYjB,KAAK,CAAC,EAAE;QAC3BiB,GAAG,GAAGnB,KAAK,CAACmB,GAAG,CAAC;MAClB;MAEAO,SAAS,CAACP,GAAG,EAAEW,UAAU,CAAC;IAC5B;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAAC,IAAI,CAAC,GAAG,UAASO,IAAI,EAAEC,EAAE,EAAE;MAE9B,IAAI,OAAOA,EAAE,KAAK,UAAU,EAAE;QAC5B,MAAMtC,KAAK,CAAC,0BAA0B,CAAC;MACzC;MAEA,QAAQqC,IAAI;QACZ,KAAK,SAAS;UAAEf,SAAS,GAAGgB,EAAE;UAAE;QAChC,KAAK,MAAM;UAAEjB,MAAM,GAAGiB,EAAE;UAAE;QAC1B,KAAK,UAAU;UAAEf,UAAU,GAAGe,EAAE;UAAE;QAClC,KAAK,OAAO;UAAEb,OAAO,GAAGa,EAAE;UAAE;QAC5B,KAAK,MAAM;UAAEZ,SAAS,GAAGY,EAAE;UAAE;QAC7B,KAAK,OAAO;UAAEd,OAAO,GAAGc,EAAE;UAAE;QAC5B,KAAK,WAAW;UAAET,WAAW,GAAGS,EAAE;UAAE;QAAO;QAC3C,KAAK,UAAU;UAAEV,UAAU,GAAGU,EAAE;UAAE;QAAO;QACzC,KAAK,SAAS;UAAEX,SAAS,GAAGW,EAAE;UAAE;QAChC;UACE,MAAMtC,KAAK,CAAC,qBAAqB,GAAGqC,IAAI,CAAC;MAC3C;MAEA,OAAO,IAAI;IACb,CAAC;;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAAC,IAAI,CAAC,GAAG,UAASE,KAAK,EAAE;MAE3B,IAAI,OAAOA,KAAK,KAAK,WAAW,EAAE;QAChCA,KAAK,GAAG,CAAC,CAAC;MACZ;MAEA,IAAIC,OAAA,CAAOD,KAAK,MAAK,QAAQ,EAAE;QAC7B,MAAMvC,KAAK,CAAC,0BAA0B,CAAC;MACzC;MAEA,IAAIyC,cAAc,GAAG,CAAC,CAAC;QAAExD,CAAC;MAE1B,KAAKA,CAAC,IAAIsD,KAAK,EAAE;QACfE,cAAc,CAACxD,CAAC,CAAC,GAAGsD,KAAK,CAACtD,CAAC,CAAC;MAC9B;MAEA+C,WAAW,GAAG,IAAI;MAClBnB,aAAa,GAAG4B,cAAc;MAE9B,OAAO,IAAI;IACb,CAAC;;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAAC,OAAO,CAAC,GAAG,UAASC,GAAG,EAAE;MAC5B,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;QAC3B,MAAM1C,KAAK,CAAC,4BAA4B,CAAC;MAC3C;MAEAiC,WAAW,GAAG,IAAI;MAElBU,KAAK,CAACD,GAAG,CAAC;MAEVZ,UAAU,GAAGf,cAAc;MAC3BmB,SAAS,GAAG,KAAK;MAEjB,OAAOD,WAAW;IACpB,CAAC;;IAED;AACJ;AACA;IACI,IAAI,CAAC,MAAM,CAAC,GAAG,YAAW;MACxBC,SAAS,GAAG,IAAI;IAClB,CAAC;;IAED;AACJ;AACA;AACA;AACA;IACI,SAASS,KAAKA,CAACD,GAAG,EAAE;MAClB,IAAIE,aAAa,GAAGZ,WAAW,GAAG,EAAE,GAAG,IAAI;QACvCxB,QAAQ,GAAGwB,WAAW,GAAGpB,aAAa,CAACC,aAAa,CAAC,GAAG,IAAI;QAC5DgC,SAAS;QACTC,SAAS,GAAG,EAAE;QACdC,gBAAgB,GAAG,CAAC;QACpBC,QAAQ,GAAG,KAAK;QAChBC,MAAM,GAAG,KAAK;QACdC,CAAC,GAAG,CAAC;QAAEC,CAAC,GAAG,CAAC;QACZ7D,CAAC;QAAE8D,CAAC;QAAEC,CAAC;QAAEC,CAAC;QAAEC,CAAC;QACbC,KAAK;QACLC,WAAW;QACXC,YAAY;QACZC,YAAY;MAGhB,IAAIC,WAAW,GAAG,EAAE;QAChBC,UAAU,GAAG,CAAC;QACdC,WAAW,CAAC;MAAA;;MAGhB;AACN;AACA;AACA;AACA;AACA;AACA;AACA;MACM,SAASC,QAAQA,CAAA,EAAG;QAClB,IAAID,WAAW,KAAK,IAAI,EAAE;UACxB,OAAOA,WAAW;QACpB;QAEA,IAAIE,KAAK;UACLC,WAAW;UACXC,MAAM;UACNC,YAAY,GAAGnC,WAAW,IAAIxB,QAAQ,CAAC,OAAO,CAAC;UAC/C4D,QAAQ,GAAGpC,WAAW,IAAID,OAAO,GAAG,EAAE,GAAG,IAAI;UAC7CmB,CAAC,GAAGW,UAAU;UACdlE,CAAC,GAAGiE,WAAW;UACfS,CAAC,GAAG1E,CAAC,CAACC,MAAM;UACZ0E,YAAY;UACZC,QAAQ;UACRC,KAAK;UACLC,KAAK;UACLpC,IAAI;UACJqC,KAAK,GAAG,CAAC,CAAC;UACVC,SAAS,GAAG,CAAC,CAAC;UACdC,QAAQ;UACRtB,CAAC;UACDH,CAAC;QAEL0B,SAAS,EACT,OAAO3B,CAAC,GAAGmB,CAAC,EAAEnB,CAAC,EAAE,EAAE;UACjB0B,QAAQ,GAAG,KAAK;UAChBtB,CAAC,GAAG3D,CAAC,CAACmF,UAAU,CAAC5B,CAAC,CAAC;UAEnB,IAAII,CAAC,KAAK,EAAE,IAAKA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,CAAE,EAAE;YAAE;YACnC;UACF;;UAEA;UACA,IAAIA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,GAAG,IAAKA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,EAAG,EAAE;YAC3C,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,EAAE;cAAE;cAC1BlB,aAAa,CAAC,mCAAmC,CAAC;cAClDwC,QAAQ,GAAG,IAAI;YACjB;UACF;;UAEA;UACA,KAAKzB,CAAC,GAAGD,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAGkB,CAAC,EAAElB,CAAC,EAAE,EAAE;YAC1BG,CAAC,GAAG3D,CAAC,CAACmF,UAAU,CAAC3B,CAAC,CAAC;YAEnB,IACEG,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,GAAG,IACjBA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,EAAE,IAChBA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,EAAE,IAChBA,CAAC,KAAK,EAAE;YAAI;YACZA,CAAC,KAAK,EAAE;YAAI;YACZA,CAAC,KAAK,EAAE,CAAC;YAAA,EACT;cACA;YACF;;YAEA;YACA,IAAIA,CAAC,KAAK,EAAE,IAAKA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,CAAE,EAAE;cAAE;cACnClB,aAAa,CAAC,yBAAyB,CAAC;cACxCc,CAAC,GAAGC,CAAC;cAEL,SAAS0B,SAAS;YACpB;;YAEA;YACA,IAAIvB,CAAC,KAAK,EAAE,EAAE;cAAE;cACd;YACF;YAEAlB,aAAa,CAAC,6BAA6B,CAAC;YAC5CwC,QAAQ,GAAG,IAAI;UACjB;UAEAvC,IAAI,GAAG1C,CAAC,CAACoF,SAAS,CAAC7B,CAAC,EAAEC,CAAC,CAAC;UAExB,IAAId,IAAI,KAAK,aAAa,EAAE;YAC1BD,aAAa,CAAC,8BAA8B,CAAC;YAC7CwC,QAAQ,GAAG,IAAI;UACjB;UAEAtB,CAAC,GAAG3D,CAAC,CAACmF,UAAU,CAAC3B,CAAC,GAAG,CAAC,CAAC;UAEvB,IAAIG,CAAC,KAAK,EAAE,EAAE;YAAE;YACdH,CAAC,GAAGxD,CAAC,CAACE,OAAO,CAAC,GAAG,EAAEqD,CAAC,GAAGC,CAAC,GAAG,CAAC,CAAC;YAE7B,IAAIA,CAAC,KAAK,CAAC,CAAC,EAAE;cACZA,CAAC,GAAGxD,CAAC,CAACE,OAAO,CAAC,IAAI,EAAEqD,CAAC,CAAC;cAEtB,IAAIC,CAAC,KAAK,CAAC,CAAC,EAAE;gBACZf,aAAa,CAAC,iCAAiC,CAAC;gBAChDwC,QAAQ,GAAG,IAAI;cACjB;YACF;UAEF,CAAC,MAAM,IAAItB,CAAC,KAAK,EAAE,EAAE;YAAE;YACrBH,CAAC,GAAGxD,CAAC,CAACE,OAAO,CAAC,IAAI,EAAEqD,CAAC,GAAGC,CAAC,GAAG,CAAC,CAAC;YAE9B,IAAIA,CAAC,KAAK,CAAC,CAAC,EAAE;cACZA,CAAC,GAAGxD,CAAC,CAACE,OAAO,CAAC,GAAG,EAAEqD,CAAC,CAAC;cAErB,IAAIC,CAAC,KAAK,CAAC,CAAC,EAAE;gBACZf,aAAa,CAAC,iCAAiC,CAAC;gBAChDwC,QAAQ,GAAG,IAAI;cACjB;YACF;UAEF,CAAC,MAAM;YACLxC,aAAa,CAAC,gCAAgC,CAAC;YAC/CwC,QAAQ,GAAG,IAAI;;YAEf;YACA,KAAKzB,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkB,CAAC,EAAElB,CAAC,EAAE,EAAE;cAC1BG,CAAC,GAAG3D,CAAC,CAACmF,UAAU,CAAC3B,CAAC,GAAG,CAAC,CAAC;cAEvB,IAAIG,CAAC,KAAK,EAAE,IAAKA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,CAAE,EAAE;gBAAE;gBACnC;cACF;YACF;UAEF;UAEA,IAAIH,CAAC,KAAK,CAAC,CAAC,EAAE;YACZf,aAAa,CAAC,wBAAwB,CAAC;YAEvCe,CAAC,GAAGkB,CAAC;YACLO,QAAQ,GAAG,IAAI;UACjB;UAEA,IAAI,CAACA,QAAQ,EAAE;YACbJ,KAAK,GAAG7E,CAAC,CAACoF,SAAS,CAAC7B,CAAC,EAAEC,CAAC,CAAC;UAC3B;UAEAD,CAAC,GAAGC,CAAC;;UAEL;UACA;UACA;UACA,OAAOA,CAAC,GAAG,CAAC,GAAGkB,CAAC,EAAElB,CAAC,EAAE,EAAE;YACrBG,CAAC,GAAG3D,CAAC,CAACmF,UAAU,CAAC3B,CAAC,GAAG,CAAC,CAAC;YAEvB,IAAIG,CAAC,KAAK,EAAE,IAAKA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,CAAE,EAAE;cAAE;cACnC;YACF;;YAEA;YACA,IAAIJ,CAAC,KAAKC,CAAC,EAAE;cACXf,aAAa,CAAC,uCAAuC,CAAC;cACtDwC,QAAQ,GAAG,IAAI;YACjB;UACF;;UAEA;UACA1B,CAAC,GAAGC,CAAC,GAAG,CAAC;UAET,IAAIyB,QAAQ,EAAE;YACZ,SAASC,SAAS;UACpB;;UAEA;UACA,IAAIxC,IAAI,IAAIsC,SAAS,EAAE;YACrBvC,aAAa,CAAC,aAAa,GAAGC,IAAI,GAAG,mBAAmB,CAAC;YACzD;UACF;UAEAsC,SAAS,CAACtC,IAAI,CAAC,GAAG,IAAI;UAEtB,IAAI,CAACL,WAAW,EAAE;YAChB0C,KAAK,CAACrC,IAAI,CAAC,GAAGmC,KAAK;YACnB;UACF;;UAEA;UACA,IAAIzC,OAAO,EAAE;YACXwC,QAAQ,GACNlC,IAAI,KAAK,OAAO,GACZ,OAAO,GACNA,IAAI,CAACyC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIzC,IAAI,CAAC2C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,GAC3D3C,IAAI,CAAC2C,MAAM,CAAC,CAAC,CAAC,GACd,IACP;;YAED;YACA,IAAIT,QAAQ,KAAK,IAAI,EAAE;cACrBP,KAAK,GAAGtE,cAAc,CAAC8E,KAAK,CAAC;cAC7BP,WAAW,GAAGtD,SAAS,CAAC4D,QAAQ,CAAC;cAEjCE,KAAK,GAAG5D,aAAa,CAACmD,KAAK,CAAC;cAE5B,IAAI,CAACS,KAAK,EAAE;gBAEV;gBACA,IACGF,QAAQ,KAAK,OAAO,IACpBN,WAAW,IAAIzD,QAAQ,IAAIA,QAAQ,CAACyD,WAAW,CAAC,KAAKD,KAAM,EAC5D;kBAEA;kBACA,GAAG;oBACDS,KAAK,GAAG,IAAI,GAAI1B,gBAAgB,EAAG;kBACrC,CAAC,QAAQ,OAAOvC,QAAQ,CAACiE,KAAK,CAAC,KAAK,WAAW;gBACjD,CAAC,MAAM;kBACLA,KAAK,GAAGF,QAAQ;gBAClB;gBAEA1D,aAAa,CAACmD,KAAK,CAAC,GAAGS,KAAK;cAC9B;cAEA,IAAIjE,QAAQ,CAAC+D,QAAQ,CAAC,KAAKE,KAAK,EAAE;gBAChC,IAAI,CAACH,YAAY,EAAE;kBACjB9D,QAAQ,GAAGD,aAAa,CAACC,QAAQ,CAAC;kBAClC8D,YAAY,GAAG,IAAI;gBACrB;gBAEA9D,QAAQ,CAAC+D,QAAQ,CAAC,GAAGE,KAAK;gBAC1B,IAAIF,QAAQ,KAAK,OAAO,EAAE;kBACxB/D,QAAQ,CAACG,SAAS,CAAC8D,KAAK,CAAC,CAAC,GAAGT,KAAK;kBAClCG,YAAY,GAAGM,KAAK;gBACtB;gBAEAjE,QAAQ,CAACyD,WAAW,CAAC,GAAGD,KAAK;cAC/B;;cAEA;cACAU,KAAK,CAACrC,IAAI,CAAC,GAAGmC,KAAK;cACnB;YACF;;YAEA;YACA;YACAJ,QAAQ,CAACa,IAAI,CAAC5C,IAAI,EAAEmC,KAAK,CAAC;YAC1B;UAEF,CAAC,CAAC;;UAEF;UACA;UACAlB,CAAC,GAAGjB,IAAI,CAACxC,OAAO,CAAC,GAAG,CAAC;UACrB,IAAIyD,CAAC,KAAK,CAAC,CAAC,EAAE;YACZoB,KAAK,CAACrC,IAAI,CAAC,GAAGmC,KAAK;YACnB;UACF;;UAEA;UACA,IAAI,EAAEN,MAAM,GAAG1D,QAAQ,CAAC6B,IAAI,CAAC0C,SAAS,CAAC,CAAC,EAAEzB,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9ClB,aAAa,CAACjC,yBAAyB,CAACkC,IAAI,CAAC0C,SAAS,CAAC,CAAC,EAAEzB,CAAC,CAAC,CAAC,CAAC;YAC9D;UACF;UAEAjB,IAAI,GAAG8B,YAAY,KAAKD,MAAM,GAC1B7B,IAAI,CAAC2C,MAAM,CAAC1B,CAAC,GAAG,CAAC,CAAC,GAClBY,MAAM,GAAG7B,IAAI,CAAC2C,MAAM,CAAC1B,CAAC,CAAC;;UAE3B;;UAEAoB,KAAK,CAACrC,IAAI,CAAC,GAAGmC,KAAK;QACrB;;QAGA;QACA,IAAIzC,OAAO,EAAE;UAEX;UACA,KAAKmB,CAAC,GAAG,CAAC,EAAEmB,CAAC,GAAGD,QAAQ,CAACxE,MAAM,EAAEsD,CAAC,GAAGmB,CAAC,EAAEnB,CAAC,EAAE,EAAE;YAE3Cb,IAAI,GAAG+B,QAAQ,CAAClB,CAAC,EAAE,CAAC;YACpBsB,KAAK,GAAGJ,QAAQ,CAAClB,CAAC,CAAC;YAEnBI,CAAC,GAAGjB,IAAI,CAACxC,OAAO,CAAC,GAAG,CAAC;YAErB,IAAIyD,CAAC,KAAK,CAAC,CAAC,EAAE;cAEZ;cACA,IAAI,EAAEY,MAAM,GAAG1D,QAAQ,CAAC6B,IAAI,CAAC0C,SAAS,CAAC,CAAC,EAAEzB,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9ClB,aAAa,CAACjC,yBAAyB,CAACkC,IAAI,CAAC0C,SAAS,CAAC,CAAC,EAAEzB,CAAC,CAAC,CAAC,CAAC;gBAC9D;cACF;cAEAjB,IAAI,GAAG8B,YAAY,KAAKD,MAAM,GAC1B7B,IAAI,CAAC2C,MAAM,CAAC1B,CAAC,GAAG,CAAC,CAAC,GAClBY,MAAM,GAAG7B,IAAI,CAAC2C,MAAM,CAAC1B,CAAC,CAAC;;cAE3B;YACF;;YAEAoB,KAAK,CAACrC,IAAI,CAAC,GAAGmC,KAAK;UACrB;;UAEA;QACF;;QAEA,OAAOV,WAAW,GAAGY,KAAK;MAC5B;;MAEA;AACN;AACA;AACA;AACA;AACA;MACM,SAASQ,eAAeA,CAAA,EAAG;QACzB,IAAIC,QAAQ,GAAG,eAAe;QAE9B,IAAInE,IAAI,GAAG,CAAC;QACZ,IAAIC,MAAM,GAAG,CAAC;QACd,IAAImE,WAAW,GAAG,CAAC;QACnB,IAAIC,SAAS,GAAGlC,CAAC;QACjB,IAAImC,KAAK;QACT,IAAIC,IAAI;QAER,OAAOrC,CAAC,IAAIkC,WAAW,EAAE;UAEvBE,KAAK,GAAGH,QAAQ,CAACK,IAAI,CAAC9C,GAAG,CAAC;UAE1B,IAAI,CAAC4C,KAAK,EAAE;YACV;UACF;;UAEA;UACAD,SAAS,GAAGC,KAAK,CAAC,CAAC,CAAC,CAAC1F,MAAM,GAAG0F,KAAK,CAACG,KAAK;UAEzC,IAAIJ,SAAS,GAAGnC,CAAC,EAAE;YACjB;UACF;;UAEA;UACAlC,IAAI,IAAI,CAAC;UAEToE,WAAW,GAAGC,SAAS;QACzB;;QAEA;QACA,IAAInC,CAAC,IAAI,CAAC,CAAC,EAAE;UACXjC,MAAM,GAAGoE,SAAS;UAClBE,IAAI,GAAG7C,GAAG,CAACqC,SAAS,CAAC5B,CAAC,CAAC;QACzB,CAAC;UAEC;UACA,IAAIA,CAAC,KAAK,CAAC,EAAE;YACXoC,IAAI,GAAG7C,GAAG,CAACqC,SAAS,CAAC5B,CAAC,EAAED,CAAC,CAAC;UAC5B;;UAEA;UAAA,KACK;YACHjC,MAAM,GAAGiC,CAAC,GAAGkC,WAAW;YACxBG,IAAI,GAAIpC,CAAC,IAAI,CAAC,CAAC,GAAGT,GAAG,CAACqC,SAAS,CAAC7B,CAAC,CAAC,GAAGR,GAAG,CAACqC,SAAS,CAAC7B,CAAC,EAAEC,CAAC,GAAG,CAAC,CAAE;UAC/D;QAEF,OAAO;UACL,MAAM,EAAEoC,IAAI;UACZ,MAAM,EAAEvE,IAAI;UACZ,QAAQ,EAAEC;QACZ,CAAC;MACH;MAEAa,UAAU,GAAGoD,eAAe;MAG5B,IAAI9D,KAAK,EAAE;QACTuC,YAAY,GAAGhF,MAAM,CAAC+G,MAAM,CAAC,CAAC,CAAC,EAAE;UAC/B,MAAM,EAAErF,MAAM,CAAC,YAAW;YACxB,OAAOoD,WAAW;UACpB,CAAC,CAAC;UACF,cAAc,EAAEpD,MAAM,CAAC,YAAW;YAChC,OAAOqD,YAAY;UACrB,CAAC,CAAC;UACF,OAAO,EAAErD,MAAM,CAAC0D,QAAQ,CAAC;UACzB,IAAI,EAAE1D,MAAM,CAAC,YAAW;YACtB,OAAOG,QAAQ;UACjB,CAAC;QACH,CAAC,CAAC;MACJ;;MAEA;MACA,OAAO2C,CAAC,KAAK,CAAC,CAAC,EAAE;QAEf,IAAIT,GAAG,CAACoC,UAAU,CAAC3B,CAAC,CAAC,KAAK,EAAE,EAAE;UAAE;UAC9BD,CAAC,GAAGC,CAAC;QACP,CAAC,MAAM;UACLD,CAAC,GAAGR,GAAG,CAAC7C,OAAO,CAAC,GAAG,EAAEsD,CAAC,CAAC;QACzB;;QAEA;QACA,IAAID,CAAC,KAAK,CAAC,CAAC,EAAE;UACZ,IAAIJ,SAAS,CAAClD,MAAM,EAAE;YACpB,OAAOuC,WAAW,CAAC,wBAAwB,CAAC;UAC9C;UAEA,IAAIgB,CAAC,KAAK,CAAC,EAAE;YACX,OAAOhB,WAAW,CAAC,mBAAmB,CAAC;UACzC;UAEA,IAAIgB,CAAC,GAAGT,GAAG,CAAC9C,MAAM,EAAE;YAClB,IAAI8C,GAAG,CAACqC,SAAS,CAAC5B,CAAC,CAAC,CAACwC,IAAI,CAAC,CAAC,EAAE;cAC3BvD,aAAa,CAACrC,gCAAgC,CAAC;YACjD;UACF;UAEA;QACF;;QAEA;QACA,IAAIoD,CAAC,KAAKD,CAAC,EAAE;UAEX,IAAIJ,SAAS,CAAClD,MAAM,EAAE;YACpB,IAAIyB,MAAM,EAAE;cACVA,MAAM,CAACqB,GAAG,CAACqC,SAAS,CAAC5B,CAAC,EAAED,CAAC,CAAC,EAAExD,cAAc,EAAEoC,UAAU,CAAC;cAEvD,IAAII,SAAS,EAAE;gBACb;cACF;YACF;UACF,CAAC,MAAM;YACL,IAAIQ,GAAG,CAACqC,SAAS,CAAC5B,CAAC,EAAED,CAAC,CAAC,CAACyC,IAAI,CAAC,CAAC,EAAE;cAC9BvD,aAAa,CAACrC,gCAAgC,CAAC;cAE/C,IAAImC,SAAS,EAAE;gBACb;cACF;YACF;UACF;QACF;QAEAoB,CAAC,GAAGZ,GAAG,CAACoC,UAAU,CAAC5B,CAAC,GAAG,CAAC,CAAC;;QAEzB;QACA,IAAII,CAAC,KAAK,EAAE,EAAE;UAAE;UACdD,CAAC,GAAGX,GAAG,CAACoC,UAAU,CAAC5B,CAAC,GAAG,CAAC,CAAC;;UAEzB;UACA,IAAIG,CAAC,KAAK,EAAE,IAAIX,GAAG,CAACsC,MAAM,CAAC9B,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,EAAE;YAAE;YACnDC,CAAC,GAAGT,GAAG,CAAC7C,OAAO,CAAC,KAAK,EAAEqD,CAAC,CAAC;YACzB,IAAIC,CAAC,KAAK,CAAC,CAAC,EAAE;cACZ,OAAOhB,WAAW,CAAC,gBAAgB,CAAC;YACtC;YAEA,IAAIX,OAAO,EAAE;cACXA,OAAO,CAACkB,GAAG,CAACqC,SAAS,CAAC7B,CAAC,GAAG,CAAC,EAAEC,CAAC,CAAC,EAAErB,UAAU,CAAC;cAC5C,IAAII,SAAS,EAAE;gBACb;cACF;YACF;YAEAiB,CAAC,IAAI,CAAC;YACN;UACF;;UAEA;UACA,IAAIE,CAAC,KAAK,EAAE,IAAIX,GAAG,CAACoC,UAAU,CAAC5B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAAE;YAC9CC,CAAC,GAAGT,GAAG,CAAC7C,OAAO,CAAC,KAAK,EAAEqD,CAAC,CAAC;YACzB,IAAIC,CAAC,KAAK,CAAC,CAAC,EAAE;cACZ,OAAOhB,WAAW,CAAC,kBAAkB,CAAC;YACxC;YAGA,IAAIR,SAAS,EAAE;cACbA,SAAS,CAACe,GAAG,CAACqC,SAAS,CAAC7B,CAAC,GAAG,CAAC,EAAEC,CAAC,CAAC,EAAEzD,cAAc,EAAEoC,UAAU,CAAC;cAC9D,IAAII,SAAS,EAAE;gBACb;cACF;YACF;YAEAiB,CAAC,IAAI,CAAC;YACN;UACF;QACF;;QAEA;QACA,IAAIG,CAAC,KAAK,EAAE,EAAE;UAAE;UACdH,CAAC,GAAGT,GAAG,CAAC7C,OAAO,CAAC,IAAI,EAAEqD,CAAC,CAAC;UACxB,IAAIC,CAAC,KAAK,CAAC,CAAC,EAAE;YACZ,OAAOhB,WAAW,CAAC,mBAAmB,CAAC;UACzC;UAEA,IAAIP,UAAU,EAAE;YACdA,UAAU,CAACc,GAAG,CAACqC,SAAS,CAAC7B,CAAC,EAAEC,CAAC,GAAG,CAAC,CAAC,EAAErB,UAAU,CAAC;YAC/C,IAAII,SAAS,EAAE;cACb;YACF;UACF;UAEAiB,CAAC,IAAI,CAAC;UACN;QACF;;QAEA;QACA;QACA;QACA,KAAK7D,CAAC,GAAG4D,CAAC,GAAG,CAAC,GAAI5D,CAAC,EAAE,EAAE;UACrBiE,CAAC,GAAGb,GAAG,CAACoC,UAAU,CAACxF,CAAC,CAAC;UACrB,IAAIsG,KAAK,CAACrC,CAAC,CAAC,EAAE;YACZJ,CAAC,GAAG,CAAC,CAAC;YACN,OAAOhB,WAAW,CAAC,cAAc,CAAC;UACpC;;UAEA;UACA;UACA;UACA;UACA,IAAIoB,CAAC,KAAK,EAAE,EAAE;YAAE;YACdF,CAAC,GAAGX,GAAG,CAAC7C,OAAO,CAAC,GAAG,EAAEP,CAAC,GAAG,CAAC,CAAC;YAC3BA,CAAC,GAAG+D,CAAC,KAAK,CAAC,CAAC,GAAGA,CAAC,GAAG/D,CAAC;UACtB,CAAC,MAAM,IAAIiE,CAAC,KAAK,EAAE,EAAE;YAAE;YACrBF,CAAC,GAAGX,GAAG,CAAC7C,OAAO,CAAC,GAAG,EAAEP,CAAC,GAAG,CAAC,CAAC;YAC3BA,CAAC,GAAG+D,CAAC,KAAK,CAAC,CAAC,GAAGA,CAAC,GAAG/D,CAAC;UACtB,CAAC,MAAM,IAAIiE,CAAC,KAAK,EAAE,EAAE;YAAE;YACrBJ,CAAC,GAAG7D,CAAC;YACL;UACF;QACF;;QAGA;QACA;QACA,IAAIgE,CAAC,KAAK,EAAE,EAAE;UAAE;;UAEd,IAAIzB,WAAW,EAAE;YACfA,WAAW,CAACa,GAAG,CAACqC,SAAS,CAAC7B,CAAC,EAAEC,CAAC,GAAG,CAAC,CAAC,EAAEzD,cAAc,EAAEoC,UAAU,CAAC;YAChE,IAAII,SAAS,EAAE;cACb;YACF;UACF;UAEAiB,CAAC,IAAI,CAAC;UACN;QACF;;QAEA;QACA;QACAW,WAAW,GAAG,CAAC,CAAC;;QAEhB;QACA,IAAIR,CAAC,KAAK,EAAE,EAAE;UAAE;UACdN,QAAQ,GAAG,KAAK;UAChBC,MAAM,GAAG,IAAI;UAEb,IAAI,CAACH,SAAS,CAAClD,MAAM,EAAE;YACrB,OAAOuC,WAAW,CAAC,kBAAkB,CAAC;UACxC;;UAEA;UACA7C,CAAC,GAAGmE,WAAW,GAAGX,SAAS,CAAC+C,GAAG,CAAC,CAAC;UACjCxC,CAAC,GAAGH,CAAC,GAAG,CAAC,GAAG5D,CAAC,CAACM,MAAM;UAEpB,IAAI8C,GAAG,CAACqC,SAAS,CAAC7B,CAAC,GAAG,CAAC,EAAEG,CAAC,CAAC,KAAK/D,CAAC,EAAE;YACjC,OAAO6C,WAAW,CAAC,sBAAsB,CAAC;UAC5C;;UAEA;UACA,OAAOkB,CAAC,GAAGF,CAAC,EAAEE,CAAC,EAAE,EAAE;YACjBC,CAAC,GAAGZ,GAAG,CAACoC,UAAU,CAACzB,CAAC,CAAC;YAErB,IAAIC,CAAC,KAAK,EAAE,IAAKA,CAAC,GAAG,CAAC,IAAIA,CAAC,GAAG,EAAG,EAAE;cAAE;cACnC;YACF;YAEA,OAAOnB,WAAW,CAAC,WAAW,CAAC;UACjC;QAEF,CAAC,MAAM;UACL,IAAIO,GAAG,CAACoC,UAAU,CAAC3B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAAE;YAClC7D,CAAC,GAAGmE,WAAW,GAAGf,GAAG,CAACqC,SAAS,CAAC7B,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAG,CAAC,CAAC;YAE7CH,QAAQ,GAAG,IAAI;YACfC,MAAM,GAAG,IAAI;UAEf,CAAC,MAAM;YACL3D,CAAC,GAAGmE,WAAW,GAAGf,GAAG,CAACqC,SAAS,CAAC7B,CAAC,GAAG,CAAC,EAAEC,CAAC,CAAC;YAEzCH,QAAQ,GAAG,IAAI;YACfC,MAAM,GAAG,KAAK;UAChB;UAEA,IAAI,EAAEK,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,GAAG,IAAIA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,EAAE,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,CAAC,EAAE;YAAE;YACtE,OAAOnB,WAAW,CAAC,6BAA6B,CAAC;UACnD;UAEA,KAAKkB,CAAC,GAAG,CAAC,EAAED,CAAC,GAAG9D,CAAC,CAACM,MAAM,EAAEyD,CAAC,GAAGD,CAAC,EAAEC,CAAC,EAAE,EAAE;YACpCC,CAAC,GAAGhE,CAAC,CAACwF,UAAU,CAACzB,CAAC,CAAC;YAEnB,IAAIC,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,GAAG,IAAIA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,EAAE,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,IAAI,EAAE,EAAE;cAChG;YACF;YAEA,IAAIA,CAAC,KAAK,EAAE,IAAKA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG,CAAE,EAAE;cAAE;cACnCG,WAAW,GAAGnE,CAAC,CAACyF,SAAS,CAAC,CAAC,EAAE1B,CAAC,CAAC;;cAE/B;cACAS,WAAW,GAAG,IAAI;cAClB;YACF;YAEA,OAAO3B,WAAW,CAAC,kBAAkB,CAAC;UACxC;UAEA,IAAI,CAACc,MAAM,EAAE;YACXH,SAAS,CAACmC,IAAI,CAACxB,WAAW,CAAC;UAC7B;QACF;QAEA,IAAIzB,WAAW,EAAE;UAEfa,SAAS,GAAGrC,QAAQ;UAEpB,IAAIwC,QAAQ,EAAE;YAEZ;YACA;YACA,IAAI,CAACC,MAAM,EAAE;cACXL,aAAa,CAACqC,IAAI,CAACpC,SAAS,CAAC;YAC/B;YAEA,IAAIiB,WAAW,KAAK,IAAI,EAAE;cAExB;cACA;cACA;cACA,IAAK/B,OAAO,GAAGzC,CAAC,CAACO,OAAO,CAAC,OAAO,EAAEwD,CAAC,CAAC,KAAK,CAAC,CAAC,EAAG;gBAC5CQ,UAAU,GAAGR,CAAC;gBACdO,WAAW,GAAGtE,CAAC;gBAEfyE,QAAQ,CAAC,CAAC;gBAEVhC,OAAO,GAAG,KAAK;cACjB;YACF;UACF;UAEA2B,YAAY,GAAGD,WAAW;UAE1BH,CAAC,GAAGG,WAAW,CAAC5D,OAAO,CAAC,GAAG,CAAC;UAC5B,IAAIyD,CAAC,KAAK,CAAC,CAAC,EAAE;YACZE,KAAK,GAAGhD,QAAQ,CAACiD,WAAW,CAACsB,SAAS,CAAC,CAAC,EAAEzB,CAAC,CAAC,CAAC;;YAE7C;YACA,IAAI,CAACE,KAAK,EAAE;cACV,OAAOrB,WAAW,CAAC,wBAAwB,GAAGuB,YAAY,GAAG,GAAG,CAAC;YACnE;YAEAD,WAAW,GAAGA,WAAW,CAACuB,MAAM,CAAC1B,CAAC,GAAG,CAAC,CAAC;UACzC,CAAC,MAAM;YACLE,KAAK,GAAGhD,QAAQ,CAAC,OAAO,CAAC;;YAEzB;YACA;YACA;YACA;YACA;YACA;UACF;;UAEA;UACA,IAAIgD,KAAK,EAAE;YACTC,WAAW,GAAGD,KAAK,GAAG,GAAG,GAAGC,WAAW;UACzC;QAEF;QAEA,IAAIT,QAAQ,EAAE;UACZa,UAAU,GAAGR,CAAC;UACdO,WAAW,GAAGtE,CAAC;UAEf,IAAIgC,SAAS,EAAE;YACb,IAAIF,KAAK,EAAE;cACTE,SAAS,CAACqC,YAAY,EAAEjE,cAAc,EAAEuD,MAAM,EAAEnB,UAAU,CAAC;YAC7D,CAAC,MAAM;cACLR,SAAS,CAACmC,WAAW,EAAEM,QAAQ,EAAErE,cAAc,EAAEuD,MAAM,EAAEnB,UAAU,CAAC;YACtE;YAEA,IAAII,SAAS,EAAE;cACb;YACF;UACF;QAEF;QAEA,IAAIe,MAAM,EAAE;UAEV,IAAI1B,UAAU,EAAE;YACdA,UAAU,CAACH,KAAK,GAAGuC,YAAY,GAAGF,WAAW,EAAE/D,cAAc,EAAEsD,QAAQ,EAAElB,UAAU,CAAC;YAEpF,IAAII,SAAS,EAAE;cACb;YACF;UACF;;UAEA;UACA,IAAIF,WAAW,EAAE;YACf,IAAI,CAACgB,QAAQ,EAAE;cACbxC,QAAQ,GAAGoC,aAAa,CAACiD,GAAG,CAAC,CAAC;YAChC,CAAC,MAAM;cACLrF,QAAQ,GAAGqC,SAAS;YACtB;UACF;QACF;QAEAM,CAAC,IAAI,CAAC;MACR;IACF,CAAC,CAAC;EAEJ;;EAEA;;EAEA,OAAO7E,MAAM,CAACC,OAAO,CAAC;AACxB"}
@@ -0,0 +1,79 @@
1
+ import { Parser } from 'saxen';
2
+ export default function parseXmlStream(xml, _ref) {
3
+ var createInitialState = _ref.createInitialState,
4
+ onOpenTag = _ref.onOpenTag,
5
+ onCloseTag = _ref.onCloseTag,
6
+ onText = _ref.onText;
7
+ // This function was put inside the `parseXmlStream()` function body
8
+ // in order to prevent it from becoming an "external dependency"
9
+ // when using `worker-f` package to run this code in a worker.
10
+ var TAG_NAME_PREFIX = /.+:/;
11
+ function trimXmlnsPrefix(tagName) {
12
+ return tagName.replace(TAG_NAME_PREFIX, '');
13
+ }
14
+ return new Promise(function (resolve, reject) {
15
+ var errored = false;
16
+ var xmlns = true;
17
+ var state = createInitialState();
18
+
19
+ // an error happened.
20
+ var onerror = function onerror(error) {
21
+ if (errored) {
22
+ return;
23
+ }
24
+ errored = true;
25
+ reject(error);
26
+ };
27
+
28
+ // got some text. `text` is the string of text.
29
+ var ontext = function ontext(text) {
30
+ if (onText) {
31
+ onText(text, state);
32
+ }
33
+ };
34
+
35
+ // opened a tag. `node` has "name" and "attributes"
36
+ var onopentag = function onopentag(element, decodeEntities, selfClosing, getContext) {
37
+ if (onOpenTag) {
38
+ // * `element.originalName` — The tag name as written in the XML string, retaining the original prefix regardless of the list of pre-configured namespace mappings.
39
+ // * `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.
40
+ onOpenTag(xmlns ? trimXmlnsPrefix(element.originalName) : element.name, element.attrs, state);
41
+ }
42
+ };
43
+
44
+ // closed a tag.
45
+ var onclosetag = function onclosetag(element) {
46
+ if (onCloseTag) {
47
+ // * `element.originalName` — The tag name as written in the XML string, retaining the original prefix regardless of the list of pre-configured namespace mappings.
48
+ // * `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.
49
+ var tagName = xmlns ? trimXmlnsPrefix(element.originalName) : element.name;
50
+ onCloseTag(tagName, state);
51
+ }
52
+ };
53
+
54
+ // `proxy: true` option enables "proxy" mode.
55
+ //
56
+ // In "proxy" mode, `onopentag` and `onclosetag` receive slightly different arguments:
57
+ // * element name is replaced with element object
58
+ // * getAttribute() function is not passed
59
+ //
60
+ var parser = new Parser({
61
+ proxy: true
62
+ });
63
+
64
+ // Parse XML "namespaces" (`xmlns` stuff).
65
+ if (xmlns) {
66
+ parser.ns();
67
+ }
68
+ parser.on('error', onerror);
69
+ parser.on('text', ontext);
70
+ parser.on('openTag', onopentag);
71
+ parser.on('closeTag', onclosetag);
72
+ parser.parse(xml);
73
+ if (errored) {
74
+ return;
75
+ }
76
+ resolve(state);
77
+ });
78
+ }
79
+ //# sourceMappingURL=parseXmlStream.saxen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseXmlStream.saxen.js","names":["Parser","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","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,SAASA,MAAM,QAAQ,OAAO;AAE9B,eAAe,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,IAAI/B,MAAM,CAAC;MAAEgC,KAAK,EAAE;IAAK,CAAC,CAAC;;IAE1C;IACA,IAAIhB,KAAK,EAAE;MACVe,MAAM,CAACE,EAAE,CAAC,CAAC;IACZ;IAEAF,MAAM,CAACG,EAAE,CAAC,OAAO,EAAEhB,OAAO,CAAC;IAC3Ba,MAAM,CAACG,EAAE,CAAC,MAAM,EAAEd,MAAM,CAAC;IACzBW,MAAM,CAACG,EAAE,CAAC,SAAS,EAAEZ,SAAS,CAAC;IAC/BS,MAAM,CAACG,EAAE,CAAC,UAAU,EAAEJ,UAAU,CAAC;IAEjCC,MAAM,CAACI,KAAK,CAACjC,GAAG,CAAC;IAEjB,IAAIa,OAAO,EAAE;MACZ;IACD;IACAF,OAAO,CAACI,KAAK,CAAC;EACf,CAAC,CAAC;AACH"}
@@ -1,17 +1,65 @@
1
1
  import { findChild, findChildren, forEach, map, getFirstElementChild, getTagName } from './dom.js';
2
-
3
- // Returns an array of cells,
4
- // each element being an XML DOM element representing a cell.
5
- export function getCellElements(document) {
2
+ export function readSharedStrings(document, onOpenTag, onCloseTag, onText, state) {
3
+ var sst = document.documentElement;
4
+ onOpenTag('sst', null, state);
5
+ // An `<si/>` element can contain a `<t/>` (simplest case) or a set of `<r/>` ("rich formatting") elements having `<t/>`.
6
+ // https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem?redirectedfrom=MSDN&view=openxml-2.8.1
7
+ // http://www.datypic.com/sc/ooxml/e-ssml_si-1.html
8
+ map(sst, 'si', function (si) {
9
+ onOpenTag('si', null, state);
10
+ var t = findChild(si, 't');
11
+ if (t) {
12
+ onOpenTag('t', null, state);
13
+ onText(t.textContent, state);
14
+ onCloseTag('t', state);
15
+ } else {
16
+ forEach(si, 'r', function (r) {
17
+ onOpenTag('r', null, state);
18
+ onOpenTag('t', null, state);
19
+ onText(findChild(r, 't').textContent, state);
20
+ onCloseTag('t', state);
21
+ onCloseTag('r', state);
22
+ });
23
+ }
24
+ onCloseTag('si', state);
25
+ });
26
+ onCloseTag('sst', state);
27
+ }
28
+ export function readSheetDimensions(document, onOpenTag, onCloseTag, onText, state) {
6
29
  var worksheet = document.documentElement;
30
+ onOpenTag('worksheet', null, state);
31
+ var dimensions = findChild(worksheet, 'dimension');
32
+ if (dimensions) {
33
+ onOpenTag('dimension', {
34
+ ref: dimensions.getAttribute('ref')
35
+ }, state);
36
+ onCloseTag('dimension', state);
37
+ }
38
+ onCloseTag('worksheet', state);
39
+ }
40
+ export function readCells(document, onOpenTag, onCloseTag, onText, state) {
41
+ var worksheet = document.documentElement;
42
+ onOpenTag('worksheet', null, state);
7
43
  var sheetData = findChild(worksheet, 'sheetData');
8
- var cells = [];
9
44
  forEach(sheetData, 'row', function (row) {
45
+ onOpenTag('row', null, state);
10
46
  forEach(row, 'c', function (cell) {
11
- cells.push(cell);
47
+ var attributes = {
48
+ r: cell.getAttribute('r'),
49
+ t: cell.getAttribute('t'),
50
+ s: cell.getAttribute('s')
51
+ };
52
+ onOpenTag('c', attributes, state);
53
+ // A cell could have either a value or an insline string value.
54
+ // * Cell value is stored as text content of a `<v>...</v>` element.
55
+ // * Inline string value is stored as text content of an `<is><t>...</t></is>` element.
56
+ readCellValueElement(document, cell, onOpenTag, onCloseTag, onText, state);
57
+ readCellInlineStringValue(document, cell, onOpenTag, onCloseTag, onText, state);
58
+ onCloseTag('c', state);
12
59
  });
60
+ onCloseTag('row', state);
13
61
  });
14
- return cells;
62
+ onCloseTag('worksheet', state);
15
63
  }
16
64
  export function getMergedCellCoordinates(document) {
17
65
  var worksheet = document.documentElement;
@@ -24,27 +72,33 @@ export function getMergedCellCoordinates(document) {
24
72
  }
25
73
  return mergedCellsInfo;
26
74
  }
27
- export function getCellValueElement(document, element) {
28
- return findChild(element, 'v');
75
+ function readCellValueElement(document, element, onOpenTag, onCloseTag, onText, state) {
76
+ var v = findChild(element, 'v');
77
+ if (v) {
78
+ onOpenTag('v', null, state);
79
+ if (typeof v.textContent === 'string') {
80
+ onText(v.textContent, state);
81
+ }
82
+ onCloseTag('v', state);
83
+ }
29
84
  }
30
- export function getCellInlineStringValue(document, element) {
85
+ function readCellInlineStringValue(document, element, onOpenTag, onCloseTag, onText, state) {
31
86
  // It seems as if in some weirdly-output "*.xlsx" files
32
87
  // there're non-element nodes of some weird nature.
33
88
  // https://gitlab.com/catamphetamine/read-excel-file/-/issues/109
34
89
  // This code filters out such weird non-element nodes.
35
90
  var firstElementChild = getFirstElementChild(element);
36
91
  if (firstElementChild && getTagName(firstElementChild) === 'is') {
92
+ onOpenTag('is', null, state);
37
93
  var firstElementChildFirstElementChild = getFirstElementChild(firstElementChild);
38
94
  if (firstElementChildFirstElementChild && getTagName(firstElementChildFirstElementChild) === 't') {
39
- return firstElementChildFirstElementChild.textContent;
95
+ onOpenTag('t', null, state);
96
+ if (typeof firstElementChildFirstElementChild.textContent === 'string') {
97
+ onText(firstElementChildFirstElementChild.textContent, state);
98
+ }
99
+ onCloseTag('t', state);
40
100
  }
41
- }
42
- }
43
- export function getDimensions(document) {
44
- var worksheet = document.documentElement;
45
- var dimensions = findChild(worksheet, 'dimension');
46
- if (dimensions) {
47
- return dimensions.getAttribute('ref');
101
+ onCloseTag('is', state);
48
102
  }
49
103
  }
50
104
  export function getBaseStyles(document) {
@@ -72,24 +126,6 @@ export function getNumberFormats(document) {
72
126
  }
73
127
  return [];
74
128
  }
75
- export function getSharedStrings(document) {
76
- // An `<si/>` element can contain a `<t/>` (simplest case) or a set of `<r/>` ("rich formatting") elements having `<t/>`.
77
- // https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem?redirectedfrom=MSDN&view=openxml-2.8.1
78
- // http://www.datypic.com/sc/ooxml/e-ssml_si-1.html
79
-
80
- var sst = document.documentElement;
81
- return map(sst, 'si', function (string) {
82
- var t = findChild(string, 't');
83
- if (t) {
84
- return t.textContent;
85
- }
86
- var value = '';
87
- forEach(string, 'r', function (r) {
88
- value += findChild(r, 't').textContent;
89
- });
90
- return value;
91
- });
92
- }
93
129
  export function getWorkbookProperties(document) {
94
130
  var workbook = document.documentElement;
95
131
  return findChild(workbook, 'workbookPr');
@@ -1 +1 @@
1
- {"version":3,"file":"xlsx.js","names":["findChild","findChildren","forEach","map","getFirstElementChild","getTagName","getCellElements","document","worksheet","documentElement","sheetData","cells","row","cell","push","getMergedCellCoordinates","mergedCells","mergedCellsInfo","mergedCell","getAttribute","getCellValueElement","element","getCellInlineStringValue","firstElementChild","firstElementChildFirstElementChild","textContent","getDimensions","dimensions","getBaseStyles","styleSheet","cellStyleXfs","getCellStyles","cellXfs","getNumberFormats","numberFormats","numFmts","getSharedStrings","sst","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":["findChild","findChildren","forEach","map","getFirstElementChild","getTagName","readSharedStrings","document","onOpenTag","onCloseTag","onText","state","sst","documentElement","si","t","textContent","r","readSheetDimensions","worksheet","dimensions","ref","getAttribute","readCells","sheetData","row","cell","attributes","s","readCellValueElement","readCellInlineStringValue","getMergedCellCoordinates","mergedCells","mergedCellsInfo","mergedCell","push","element","v","firstElementChild","firstElementChildFirstElementChild","getBaseStyles","styleSheet","cellStyleXfs","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":"AAAA,SAASA,SAAS,EAAEC,YAAY,EAAEC,OAAO,EAAEC,GAAG,EAAEC,oBAAoB,EAAEC,UAAU,QAAQ,UAAU;AAElG,OAAO,SAASC,iBAAiBA,CAACC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,KAAK,EAAE;EAChF,IAAMC,GAAG,GAAGL,QAAQ,CAACM,eAAe;EACpCL,SAAS,CAAC,KAAK,EAAE,IAAI,EAAEG,KAAK,CAAC;EAC9B;EACA;EACA;EACCR,GAAG,CAACS,GAAG,EAAE,IAAI,EAAE,UAACE,EAAE,EAAK;IACrBN,SAAS,CAAC,IAAI,EAAE,IAAI,EAAEG,KAAK,CAAC;IAC5B,IAAMI,CAAC,GAAGf,SAAS,CAACc,EAAE,EAAE,GAAG,CAAC;IAC5B,IAAIC,CAAC,EAAE;MACLP,SAAS,CAAC,GAAG,EAAE,IAAI,EAAEG,KAAK,CAAC;MAC3BD,MAAM,CAACK,CAAC,CAACC,WAAW,EAAEL,KAAK,CAAC;MAC5BF,UAAU,CAAC,GAAG,EAAEE,KAAK,CAAC;IACxB,CAAC,MAAM;MACLT,OAAO,CAACY,EAAE,EAAE,GAAG,EAAE,UAACG,CAAC,EAAK;QACtBT,SAAS,CAAC,GAAG,EAAE,IAAI,EAAEG,KAAK,CAAC;QAC3BH,SAAS,CAAC,GAAG,EAAE,IAAI,EAAEG,KAAK,CAAC;QAC3BD,MAAM,CAACV,SAAS,CAACiB,CAAC,EAAE,GAAG,CAAC,CAACD,WAAW,EAAEL,KAAK,CAAC;QAC5CF,UAAU,CAAC,GAAG,EAAEE,KAAK,CAAC;QACtBF,UAAU,CAAC,GAAG,EAAEE,KAAK,CAAC;MACxB,CAAC,CAAC;IACJ;IACAF,UAAU,CAAC,IAAI,EAAEE,KAAK,CAAC;EACzB,CAAC,CAAC;EACFF,UAAU,CAAC,KAAK,EAAEE,KAAK,CAAC;AAC1B;AAEA,OAAO,SAASO,mBAAmBA,CAACX,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,KAAK,EAAE;EAClF,IAAMQ,SAAS,GAAGZ,QAAQ,CAACM,eAAe;EAC1CL,SAAS,CAAC,WAAW,EAAE,IAAI,EAAEG,KAAK,CAAC;EACnC,IAAMS,UAAU,GAAGpB,SAAS,CAACmB,SAAS,EAAE,WAAW,CAAC;EACpD,IAAIC,UAAU,EAAE;IACdZ,SAAS,CAAC,WAAW,EAAE;MAAEa,GAAG,EAAED,UAAU,CAACE,YAAY,CAAC,KAAK;IAAE,CAAC,EAAEX,KAAK,CAAC;IACtEF,UAAU,CAAC,WAAW,EAAEE,KAAK,CAAC;EAChC;EACAF,UAAU,CAAC,WAAW,EAAEE,KAAK,CAAC;AAChC;AAEA,OAAO,SAASY,SAASA,CAAChB,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,KAAK,EAAE;EACxE,IAAMQ,SAAS,GAAGZ,QAAQ,CAACM,eAAe;EAC1CL,SAAS,CAAC,WAAW,EAAE,IAAI,EAAEG,KAAK,CAAC;EAEnC,IAAMa,SAAS,GAAGxB,SAAS,CAACmB,SAAS,EAAE,WAAW,CAAC;EAEnDjB,OAAO,CAACsB,SAAS,EAAE,KAAK,EAAE,UAACC,GAAG,EAAK;IACjCjB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAEG,KAAK,CAAC;IAC7BT,OAAO,CAACuB,GAAG,EAAE,GAAG,EAAE,UAACC,IAAI,EAAK;MAC1B,IAAMC,UAAU,GAAG;QACjBV,CAAC,EAAES,IAAI,CAACJ,YAAY,CAAC,GAAG,CAAC;QACzBP,CAAC,EAAEW,IAAI,CAACJ,YAAY,CAAC,GAAG,CAAC;QACzBM,CAAC,EAAEF,IAAI,CAACJ,YAAY,CAAC,GAAG;MAC1B,CAAC;MACDd,SAAS,CAAC,GAAG,EAAEmB,UAAU,EAAEhB,KAAK,CAAC;MACjC;MACA;MACA;MACAkB,oBAAoB,CAACtB,QAAQ,EAAEmB,IAAI,EAAElB,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,KAAK,CAAC;MAC1EmB,yBAAyB,CAACvB,QAAQ,EAAEmB,IAAI,EAAElB,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,KAAK,CAAC;MAC/EF,UAAU,CAAC,GAAG,EAAEE,KAAK,CAAC;IACxB,CAAC,CAAC;IACFF,UAAU,CAAC,KAAK,EAAEE,KAAK,CAAC;EAC1B,CAAC,CAAC;EAEFF,UAAU,CAAC,WAAW,EAAEE,KAAK,CAAC;AAChC;AAEA,OAAO,SAASoB,wBAAwBA,CAACxB,QAAQ,EAAE;EACjD,IAAMY,SAAS,GAAGZ,QAAQ,CAACM,eAAe;EAC1C,IAAMmB,WAAW,GAAGhC,SAAS,CAACmB,SAAS,EAAE,YAAY,CAAC;EACtD,IAAMc,eAAe,GAAG,EAAE;EAC1B,IAAID,WAAW,EAAE;IACf9B,OAAO,CAAC8B,WAAW,EAAE,WAAW,EAAE,UAACE,UAAU,EAAK;MAChDD,eAAe,CAACE,IAAI,CAACD,UAAU,CAACZ,YAAY,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC;EACJ;EACA,OAAOW,eAAe;AACxB;AAEA,SAASJ,oBAAoBA,CAACtB,QAAQ,EAAE6B,OAAO,EAAE5B,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,KAAK,EAAE;EACrF,IAAM0B,CAAC,GAAGrC,SAAS,CAACoC,OAAO,EAAE,GAAG,CAAC;EACjC,IAAIC,CAAC,EAAE;IACL7B,SAAS,CAAC,GAAG,EAAE,IAAI,EAAEG,KAAK,CAAC;IAC3B,IAAI,OAAO0B,CAAC,CAACrB,WAAW,KAAK,QAAQ,EAAE;MACrCN,MAAM,CAAC2B,CAAC,CAACrB,WAAW,EAAEL,KAAK,CAAC;IAC9B;IACAF,UAAU,CAAC,GAAG,EAAEE,KAAK,CAAC;EACxB;AACF;AAEA,SAASmB,yBAAyBA,CAACvB,QAAQ,EAAE6B,OAAO,EAAE5B,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,KAAK,EAAE;EAC1F;EACA;EACA;EACA;EACA,IAAM2B,iBAAiB,GAAGlC,oBAAoB,CAACgC,OAAO,CAAC;EACvD,IAAIE,iBAAiB,IAAIjC,UAAU,CAACiC,iBAAiB,CAAC,KAAK,IAAI,EAAE;IAC/D9B,SAAS,CAAC,IAAI,EAAE,IAAI,EAAEG,KAAK,CAAC;IAC5B,IAAM4B,kCAAkC,GAAGnC,oBAAoB,CAACkC,iBAAiB,CAAC;IAClF,IAAIC,kCAAkC,IAAIlC,UAAU,CAACkC,kCAAkC,CAAC,KAAK,GAAG,EAAE;MAChG/B,SAAS,CAAC,GAAG,EAAE,IAAI,EAAEG,KAAK,CAAC;MAC3B,IAAI,OAAO4B,kCAAkC,CAACvB,WAAW,KAAK,QAAQ,EAAE;QACtEN,MAAM,CAAC6B,kCAAkC,CAACvB,WAAW,EAAEL,KAAK,CAAC;MAC/D;MACAF,UAAU,CAAC,GAAG,EAAEE,KAAK,CAAC;IACxB;IACAF,UAAU,CAAC,IAAI,EAAEE,KAAK,CAAC;EACzB;AACF;AAEA,OAAO,SAAS6B,aAAaA,CAACjC,QAAQ,EAAE;EACtC,IAAMkC,UAAU,GAAGlC,QAAQ,CAACM,eAAe;EAC3C,IAAM6B,YAAY,GAAG1C,SAAS,CAACyC,UAAU,EAAE,cAAc,CAAC;EAC1D,IAAIC,YAAY,EAAE;IAChB,OAAOzC,YAAY,CAACyC,YAAY,EAAE,IAAI,CAAC;EACzC;EACA,OAAO,EAAE;AACX;AAEA,OAAO,SAASC,aAAaA,CAACpC,QAAQ,EAAE;EACtC,IAAMkC,UAAU,GAAGlC,QAAQ,CAACM,eAAe;EAC3C,IAAM+B,OAAO,GAAG5C,SAAS,CAACyC,UAAU,EAAE,SAAS,CAAC;EAChD,IAAI,CAACG,OAAO,EAAE;IACZ,OAAO,EAAE;EACX;EACA,OAAO3C,YAAY,CAAC2C,OAAO,EAAE,IAAI,CAAC;AACpC;AAEA,OAAO,SAASC,gBAAgBA,CAACtC,QAAQ,EAAE;EACzC,IAAMkC,UAAU,GAAGlC,QAAQ,CAACM,eAAe;EAC3C,IAAIiC,aAAa,GAAG,EAAE;EACtB,IAAMC,OAAO,GAAG/C,SAAS,CAACyC,UAAU,EAAE,SAAS,CAAC;EAChD,IAAIM,OAAO,EAAE;IACX,OAAO9C,YAAY,CAAC8C,OAAO,EAAE,QAAQ,CAAC;EACxC;EACA,OAAO,EAAE;AACX;AAEA,OAAO,SAASC,qBAAqBA,CAACzC,QAAQ,EAAE;EAC9C,IAAM0C,QAAQ,GAAG1C,QAAQ,CAACM,eAAe;EACzC,OAAOb,SAAS,CAACiD,QAAQ,EAAE,YAAY,CAAC;AAC1C;AAEA,OAAO,SAASC,gBAAgBA,CAAC3C,QAAQ,EAAE;EACzC,IAAM4C,aAAa,GAAG5C,QAAQ,CAACM,eAAe;EAC9C,OAAOZ,YAAY,CAACkD,aAAa,EAAE,cAAc,CAAC;AACpD;AAEA,OAAO,SAASC,SAASA,CAAC7C,QAAQ,EAAE;EAClC,IAAM0C,QAAQ,GAAG1C,QAAQ,CAACM,eAAe;EACzC,IAAMwC,MAAM,GAAGrD,SAAS,CAACiD,QAAQ,EAAE,QAAQ,CAAC;EAC5C,OAAOhD,YAAY,CAACoD,MAAM,EAAE,OAAO,CAAC;AACtC"}
@@ -1,17 +1,8 @@
1
- // `fflate` readme is too complicated:
2
- // https://github.com/101arrowz/fflate/issues/251
3
- // I just used whatever approach seemed to work.
4
- //
5
- // It was a choice between "syncrhonous" (blocking) unzip via `unzipSync()`
6
- // and "asynchronous" (non-blocking) unzip via `unzip()`.
7
- //
8
- // In the readme they say that using "asynchronous" API will cause the compression or decompression
9
- // run in a separate thread by using Web (or Node) Workers, so it won't block the main thread.
10
- // Yet, they also say that there is an initial overhead to using workers of about 50ms for each
11
- // asynchronous function. For small (under about 50kB) payloads, they say that the "asynchronous" API
12
- // will be much slower compared to the "synchronous" one. However, when compressing larger files
13
- // or multiple files at once, the "synchronous" API causes the main thread to hang for too long,
14
- // and the "asynchronous" API is an order of magnitude better.
1
+ // `fflate` uses "synchronous" decompressor on `.zip` files that're under `512KB`
2
+ // (or when the compression level is too low), and an "asynchronous" (web worker)
3
+ // decompressor otherwise, as it can be seen from the source code of the `unzip()` function.
4
+ // This is because using web workers comes with an overhead of
5
+ // both creating a new worker and sending data back and forth.
15
6
  //
16
7
  import { unzip } from 'fflate';
17
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"unzipFromArrayBuffer.js","names":["unzip","unzipFromArrayBuffer","input","options","unzipFromArrayBufferUsingFunction","unzipAsync","_ref","arguments","length","undefined","filter","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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,QAAQ;;AAE9B;AACA;AACA;AACA;AACA;AACA,eAAe,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;AACA,OAAO,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,IAASV,KAAK,GAAAO,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAAA,IAAEE,OAAO,GAAAJ,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EACvF;EACA;EACA,OAAOT,KAAK,CAAC,IAAIY,UAAU,CAACV,KAAK,CAAC,EAAE;IACnC;IACAQ,MAAM,EAAE,SAAAA,OAACG,IAAI,EAAK;MACjB,IAAIH,OAAM,EAAE;QACX,OAAOA,OAAM,CAAC;UACbI,IAAI,EAAED,IAAI,CAACE;QACZ,CAAC,CAAC;MACH;MACA,OAAO,IAAI;IACZ;EACD,CAAC,CAAC;AACH;AAEA,SAASV,UAAUA,CAACW,OAAO,EAAE;EAC3B,OAAO,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;IACxC;IACE;IACA;IACAnB,KAAK,CAACgB,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":["unzip","unzipFromArrayBuffer","input","options","unzipFromArrayBufferUsingFunction","unzipAsync","_ref","arguments","length","undefined","filter","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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,QAAQ;;AAE9B;AACA;AACA;AACA;AACA;AACA,eAAe,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;AACA,OAAO,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,IAASV,KAAK,GAAAO,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAAA,IAAEE,OAAO,GAAAJ,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EACvF;EACA;EACA,OAAOT,KAAK,CAAC,IAAIY,UAAU,CAACV,KAAK,CAAC,EAAE;IACnC;IACAQ,MAAM,EAAE,SAAAA,OAACG,IAAI,EAAK;MACjB,IAAIH,OAAM,EAAE;QACX,OAAOA,OAAM,CAAC;UACbI,IAAI,EAAED,IAAI,CAACE;QACZ,CAAC,CAAC;MACH;MACA,OAAO,IAAI;IACZ;EACD,CAAC,CAAC;AACH;AAEA,SAASV,UAAUA,CAACW,OAAO,EAAE;EAC3B,OAAO,IAAIC,OAAO,CAAC,UAACC,OAAO,EAAEC,MAAM,EAAK;IACxC;IACE;IACA;IACAnB,KAAK,CAACgB,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"}