All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.1255d548-64.6c9be24a5a5126c4ce0e.js.map Maven / Gradle / Ivy

There is a newer version: 6.1.4
Show newest version
{"version":3,"file":"1255d548-64.6c9be24a5a5126c4ce0e.js","mappings":"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","sources":["webpack://graylog-web-interface/./node_modules/@mantine/utils/esm/create-use-external-events/create-use-external-events.js","webpack://graylog-web-interface/./node_modules/@mantine/notifications/esm/events.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/fxp.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/util.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/validator.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack://graylog-web-interface/./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack://graylog-web-interface/./node_modules/lodash/lowerCase.js","webpack://graylog-web-interface/./node_modules/strnum/strnum.js","webpack://graylog-web-interface/./node_modules/@tanstack/query-sync-storage-persister/build/lib/index.mjs","webpack://graylog-web-interface/./node_modules/@tanstack/react-query-persist-client/build/lib/_virtual/_rollupPluginBabelHelpers.mjs","webpack://graylog-web-interface/./node_modules/@tanstack/query-core/build/lib/hydration.mjs","webpack://graylog-web-interface/./node_modules/@tanstack/query-persist-client-core/build/lib/persist.mjs","webpack://graylog-web-interface/./node_modules/@tanstack/react-query-persist-client/build/lib/PersistQueryClientProvider.mjs"],"sourcesContent":["import { useLayoutEffect, useEffect } from 'react';\n\nfunction dispatchEvent(type, detail) {\n  window.dispatchEvent(new CustomEvent(type, { detail }));\n}\nconst useIsomorphicEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\nfunction createUseExternalEvents(prefix) {\n  function _useExternalEvents(events) {\n    const handlers = Object.keys(events).reduce((acc, eventKey) => {\n      acc[`${prefix}:${eventKey}`] = (event) => events[eventKey](event.detail);\n      return acc;\n    }, {});\n    useIsomorphicEffect(() => {\n      Object.keys(handlers).forEach((eventKey) => {\n        window.removeEventListener(eventKey, handlers[eventKey]);\n        window.addEventListener(eventKey, handlers[eventKey]);\n      });\n      return () => Object.keys(handlers).forEach((eventKey) => {\n        window.removeEventListener(eventKey, handlers[eventKey]);\n      });\n    }, [handlers]);\n  }\n  function createEvent(event) {\n    return (...payload) => dispatchEvent(`${prefix}:${String(event)}`, payload[0]);\n  }\n  return [_useExternalEvents, createEvent];\n}\n\nexport { createUseExternalEvents };\n//# sourceMappingURL=create-use-external-events.js.map\n","import { createUseExternalEvents } from '@mantine/utils';\n\nconst [useNotificationsEvents, createEvent] = createUseExternalEvents(\"mantine-notifications\");\nconst showNotification = createEvent(\"show\");\nconst hideNotification = createEvent(\"hide\");\nconst cleanNotifications = createEvent(\"clean\");\nconst cleanNotificationsQueue = createEvent(\"cleanQueue\");\nconst updateNotification = createEvent(\"update\");\nconst notifications = {\n  show: showNotification,\n  hide: hideNotification,\n  clean: cleanNotifications,\n  cleanQueue: cleanNotificationsQueue,\n  update: updateNotification\n};\n\nexport { cleanNotifications, cleanNotificationsQueue, createEvent, hideNotification, notifications, showNotification, updateNotification, useNotificationsEvents };\n//# sourceMappingURL=events.js.map\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n  XMLParser: XMLParser,\n  XMLValidator: validator,\n  XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n};\n\nconst isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n  return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n  return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n};\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nfunction Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n  let attrStr = '';\n  let val = '';\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      }else {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup ){\n            listTagVal += this.j2x(item, level + 1).val;\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level)\n          }\n        } else {\n          listTagVal += this.buildTextValNode(item, key, '', level);\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, '', level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n  const result = this.j2x(object, level + 1);\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        ' 0 && this.options.processEntities){\n    for (let i=0; i 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\nmodule.exports = toXml;\n","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n    \n    const entities = {};\n    if( xmlData[i + 3] === 'O' &&\n         xmlData[i + 4] === 'C' &&\n         xmlData[i + 5] === 'T' &&\n         xmlData[i + 6] === 'Y' &&\n         xmlData[i + 7] === 'P' &&\n         xmlData[i + 8] === 'E')\n    {    \n        i = i+9;\n        let angleBracketsCount = 1;\n        let hasBody = false, comment = false;\n        let exp = \"\";\n        for(;i') { //Read tag content\n                if(comment){\n                    if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n                        comment = false;\n                        angleBracketsCount--;\n                    }\n                }else{\n                    angleBracketsCount--;\n                }\n                if (angleBracketsCount === 0) {\n                  break;\n                }\n            }else if( xmlData[i] === '['){\n                hasBody = true;\n            }else{\n                exp += xmlData[i];\n            }\n        }\n        if(angleBracketsCount !== 0){\n            throw new Error(`Unclosed DOCTYPE`);\n        }\n    }else{\n        throw new Error(`Invalid Tag instead of DOCTYPE`);\n    }\n    return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n    //External entities are not supported\n    //    \n\n    //Parameter entities are not supported\n    //    \n\n    //Internal entities are supported\n    //    \n    \n    //read EntityName\n    let entityName = \"\";\n    for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n        // if(xmlData[i] === \" \") continue;\n        // else \n        entityName += xmlData[i];\n    }\n    entityName = entityName.trim();\n    if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n    //read Entity Value\n    const startChar = xmlData[i++];\n    let val = \"\"\n    for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n        val += xmlData[i];\n    }\n    return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === '-' &&\n    xmlData[i+3] === '-') return true\n    return false\n}\nfunction isEntity(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'E' &&\n    xmlData[i+3] === 'N' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'I' &&\n    xmlData[i+6] === 'T' &&\n    xmlData[i+7] === 'Y') return true\n    return false\n}\nfunction isElement(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'E' &&\n    xmlData[i+3] === 'L' &&\n    xmlData[i+4] === 'E' &&\n    xmlData[i+5] === 'M' &&\n    xmlData[i+6] === 'E' &&\n    xmlData[i+7] === 'N' &&\n    xmlData[i+8] === 'T') return true\n    return false\n}\n\nfunction isAttlist(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'A' &&\n    xmlData[i+3] === 'T' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'L' &&\n    xmlData[i+6] === 'I' &&\n    xmlData[i+7] === 'S' &&\n    xmlData[i+8] === 'T') return true\n    return false\n}\nfunction isNotation(xmlData, i){\n    if(xmlData[i+1] === '!' &&\n    xmlData[i+2] === 'N' &&\n    xmlData[i+3] === 'O' &&\n    xmlData[i+4] === 'T' &&\n    xmlData[i+5] === 'A' &&\n    xmlData[i+6] === 'T' &&\n    xmlData[i+7] === 'I' &&\n    xmlData[i+8] === 'O' &&\n    xmlData[i+9] === 'N') return true\n    return false\n}\n\nfunction validateEntityName(name){\n    if (util.isName(name))\n\treturn name;\n    else\n        throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","\nconst defaultOptions = {\n    preserveOrder: false,\n    attributeNamePrefix: '@_',\n    attributesGroupName: false,\n    textNodeName: '#text',\n    ignoreAttributes: true,\n    removeNSPrefix: false, // remove NS from tag name or attribute name if true\n    allowBooleanAttributes: false, //a tag can have attributes without any value\n    //ignoreRootElement : false,\n    parseTagValue: true,\n    parseAttributeValue: false,\n    trimValues: true, //Trim string values of tag and attributes\n    cdataPropName: false,\n    numberParseOptions: {\n      hex: true,\n      leadingZeros: true,\n      eNotation: true\n    },\n    tagValueProcessor: function(tagName, val) {\n      return val;\n    },\n    attributeValueProcessor: function(attrName, val) {\n      return val;\n    },\n    stopNodes: [], //nested tags will not be parsed even for errors\n    alwaysCreateTextNode: false,\n    isArray: () => false,\n    commentPropName: false,\n    unpairedTags: [],\n    processEntities: true,\n    htmlEntities: false,\n    ignoreDeclaration: false,\n    ignorePiTags: false,\n    transformTagName: false,\n    transformAttributeName: false,\n    updateTag: function(tagName, jPath, attrs){\n      return tagName\n    },\n    // skipEmptyListItem: false\n};\n   \nconst buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\nconst regx =\n  '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n  .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n  constructor(options){\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n      \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n      \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n      \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n  }\n\n}\n\nfunction addExternalEntities(externalEntities){\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    this.lastEntities[ent] = {\n       regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n       val : externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if(val.length > 0){\n      if(!escapeEntities) val = this.replaceEntitiesValue(val);\n      \n      const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n      if(newval === null || newval === undefined){\n        //don't parse\n        return val;\n      }else if(typeof newval !== typeof val || newval !== val){\n        //overwrite\n        return newval;\n      }else if(this.options.trimValues){\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      }else{\n        const trimmedVal = val.trim();\n        if(trimmedVal === val){\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        }else{\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n  if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = util.getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        if(aName === \"__proto__\") aName  = \"#__proto__\";\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal);\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n          if(newVal === null || newVal === undefined){\n            //don't parse\n            attrs[aName] = oldVal;\n          }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n            //overwrite\n            attrs[aName] = newVal;\n          }else{\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function(xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n  let jPath = \"\";\n  for(let i=0; i< xmlData.length; i++){//for each char in XML data\n    const ch = xmlData[i];\n    if(ch === '<'){\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(this.options.removeNSPrefix){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        if(this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n\n        if(currentNode){\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n        if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        let propIndex = 0\n        if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n          propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n          this.tagsNodeStack.pop();\n        }else{\n          propIndex = jPath.lastIndexOf(\".\");\n        }\n        jPath = jPath.substring(0, propIndex);\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n\n        let tagData = readTagExp(xmlData,i, false, \"?>\");\n        if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n        }else{\n  \n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n          \n          if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n          }\n          this.addChild(currentNode, childNode, jPath)\n\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n        if(this.options.commentPropName){\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n          currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n        }\n        i = endIndex;\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const result = readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + \".\" + this.options.cdataPropName, true, false, true);\n          // if(!val) val = \"\";\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\n          let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true);\n          if(val == undefined) val = \"\";\n          currentNode.add(this.options.textNodeName, val);\n        }\n        \n        i = closeIndex + 2;\n      }else {//Opening tag\n        let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n        let tagName= result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        if (this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n        \n        //save text as child node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n          currentNode = this.tagsNodeStack.pop();\n          jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n        }\n        if(tagName !== xmlObj.tagname){\n          jPath += jPath ? \".\" + tagName : tagName;\n        }\n        if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n          let tagContent = \"\";\n          //self-closing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            i = result.closeIndex;\n          }\n          //normal tag\n          else{\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n          if(tagName !== tagExp && attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n          }\n          if(tagContent) {\n            tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n          }\n          \n          jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          childNode.add(this.options.textNodeName, tagContent);\n          \n          this.addChild(currentNode, childNode, jPath)\n        }else{\n  //selfClosing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            \n            if(this.options.transformTagName) {\n              tagName = this.options.transformTagName(tagName);\n            }\n\n            const childNode = new xmlNode(tagName);\n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n            }\n            this.addChild(currentNode, childNode, jPath)\n            jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          }\n    //opening tag\n          else{\n            const childNode = new xmlNode( tagName);\n            this.tagsNodeStack.push(currentNode);\n            \n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n            }\n            this.addChild(currentNode, childNode, jPath)\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n  const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n  if(result === false){\n  }else if(typeof result === \"string\"){\n    childNode.tagname = result\n    currentNode.addChild(childNode);\n  }else{\n    currentNode.addChild(childNode);\n  }\n}\n\nconst replaceEntitiesValue = function(val){\n\n  if(this.options.processEntities){\n    for(let entityName in this.docTypeEntities){\n      const entity = this.docTypeEntities[entityName];\n      val = val.replace( entity.regx, entity.val);\n    }\n    for(let entityName in this.lastEntities){\n      const entity = this.lastEntities[entityName];\n      val = val.replace( entity.regex, entity.val);\n    }\n    if(this.options.htmlEntities){\n      for(let entityName in this.htmlEntities){\n        const entity = this.htmlEntities[entityName];\n        val = val.replace( entity.regex, entity.val);\n      }\n    }\n    val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n  }\n  return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n    \n    textData = this.parseTextData(textData,\n      currentNode.tagname,\n      jPath,\n      false,\n      currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      currentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n  const allNodesExp = \"*.\" + currentTagName;\n  for (const stopNodePath in stopNodes) {\n    const stopNodeExp = stopNodes[stopNodePath];\n    if( allNodesExp === stopNodeExp || jPath === stopNodeExp  ) return true;\n  }\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if(closingChar[1]){\n        if(xmlData[index + 1] === closingChar[1]){\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      }else{\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n  const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n  if(!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if(separatorIndex !== -1){//separate tag name and attributes expression\n    tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n    tagExp = tagExp.substr(separatorIndex + 1);\n  }\n\n  const rawTagName = tagName;\n  if(removeNSPrefix){\n    const colonIndex = tagName.indexOf(\":\");\n    if(colonIndex !== -1){\n      tagName = tagName.substr(colonIndex+1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if( xmlData[i] === \"<\"){ \n      if (xmlData[i+1] === \"/\") {//close tag\n          const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n          let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n          if(closeTagName === tagName){\n            openTagCount--;\n            if (openTagCount === 0) {\n              return {\n                tagContent: xmlData.substring(startIndex, i),\n                i : closeIndex\n              }\n            }\n          }\n          i=closeIndex;\n        } else if(xmlData[i+1] === '?') { \n          const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 3) === '!--') { \n          const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 2) === '![') { \n          const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n          i=closeIndex;\n        } else {\n          const tagData = readTagExp(xmlData, i, '>')\n\n          if (tagData) {\n            const openTagName = tagData && tagData.tagName;\n            if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n              openTagCount++;\n            }\n            i=tagData.closeIndex;\n          }\n        }\n      }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if(newval === 'true' ) return true;\n    else if(newval === 'false' ) return false;\n    else return toNumber(val, options);\n  } else {\n    if (util.isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n    \n    constructor(options){\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n        \n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Buffer} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData === \"string\"){\n        }else if( xmlData.toString){\n            xmlData = xmlData.toString();\n        }else{\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = validator.validate(xmlData, validationOption);\n            if (result !== true) {\n              throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n            }\n          }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value){\n        if(value.indexOf(\"&\") !== -1){\n            throw new Error(\"Entity value can't have '&'\")\n        }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        }else if(value === \"&\"){\n            throw new Error(\"An entity with value '&' is not permitted\");\n        }else{\n            this.externalEntities[key] = value;\n        }\n    }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n  return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n  let text;\n  const compressedObj = {};\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n    let newJpath = \"\";\n    if(jPath === undefined) newJpath = property;\n    else newJpath = jPath + \".\" + property;\n\n    if(property === options.textNodeName){\n      if(text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    }else if(property === undefined){\n      continue;\n    }else if(tagObj[property]){\n      \n      let val = compress(tagObj[property], options, newJpath);\n      const isLeaf = isLeafTag(val, options);\n\n      if(tagObj[\":@\"]){\n        assignAttributes( val, tagObj[\":@\"], newJpath, options);\n      }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n        val = val[options.textNodeName];\n      }else if(Object.keys(val).length === 0){\n        if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n        if(!Array.isArray(compressedObj[property])) {\n            compressedObj[property] = [ compressedObj[property] ];\n        }\n        compressedObj[property].push(val);\n      }else{\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n        if (options.isArray(property, newJpath, isLeaf )) {\n          compressedObj[property] = [val];\n        }else{\n          compressedObj[property] = val;\n        }\n      }\n    }\n    \n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if(typeof text === \"string\"){\n    if(text.length > 0) compressedObj[options.textNodeName] = text;\n  }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n  return compressedObj;\n}\n\nfunction propName(obj){\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if(key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];\n      if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n        obj[atrrName] = [ attrMap[atrrName] ];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options){\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n  \n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = {}; //attributes map\n  }\n  add(key,val){\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if(key === \"__proto__\") key = \"#__proto__\";\n    this.child.push( {[key]: val });\n  }\n  addChild(node) {\n    if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n      this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    }else{\n      this.child.push( { [node.tagname]: node.child });\n    }\n  };\n};\n\n\nmodule.exports = XmlNode;","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\nvar lowerCase = createCompounder(function(result, word, index) {\n  return result + (index ? ' ' : '') + word.toLowerCase();\n});\n\nmodule.exports = lowerCase;\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n    Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n    Number.parseFloat = window.parseFloat;\n}\n\n  \nconst consider = {\n    hex :  true,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true\n    //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n    // const options = Object.assign({}, consider);\n    // if(opt.leadingZeros === false){\n    //     options.leadingZeros = false;\n    // }else if(opt.hex === false){\n    //     options.hex = false;\n    // }\n\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    // if(trimmedStr === \"0.0\") return 0;\n    // else if(trimmedStr === \"+0.0\") return 0;\n    // else if(trimmedStr === \"-0.0\") return -0;\n\n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return Number.parseInt(trimmedStr, 16);\n    // } else if (options.parseOct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    // }else if (options.parseBin && binRegex.test(str)) {\n    //     return Number.parseInt(val, 2);\n    }else{\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        if(match){\n            const sign = match[1];\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            //trim ending zeros for floating number\n            \n            const eNotation = match[4] || match[6];\n            if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n            else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const numStr = \"\" + num;\n                if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(eNotation){ //given number has enotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    // const decimalPart = match[5].substr(1);\n                    // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n                    \n                    // const p = numStr.indexOf(\".\");\n                    // const givenIntPart = numStr.substr(0,p);\n                    // const givenDecPart = numStr.substr(p+1);\n                    if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n                    else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n                    else return str;\n                }\n                \n                if(leadingZeros){\n                    // if(numTrimmedByZeros === numStr){\n                    //     if(options.leadingZeros) return num;\n                    //     else return str;\n                    // }else return str;\n                    if(numTrimmedByZeros === numStr) return num;\n                    else if(sign+numTrimmedByZeros === numStr) return num;\n                    else return str;\n                }\n\n                if(trimmedStr === numStr) return num;\n                else if(trimmedStr === sign+numStr) return num;\n                // else{\n                //     //number with +/- sign\n                //     trimmedStr.test(/[-+][0-9]);\n\n                // }\n                return str;\n            }\n            // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n            \n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substr(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\nmodule.exports = toNumber\n","function createSyncStoragePersister({\n  storage,\n  key = \"REACT_QUERY_OFFLINE_CACHE\",\n  throttleTime = 1000,\n  serialize = JSON.stringify,\n  deserialize = JSON.parse,\n  retry\n}) {\n  if (storage) {\n    const trySave = persistedClient => {\n      try {\n        storage.setItem(key, serialize(persistedClient));\n        return;\n      } catch (error) {\n        return error;\n      }\n    };\n\n    return {\n      persistClient: throttle(persistedClient => {\n        let client = persistedClient;\n        let error = trySave(client);\n        let errorCount = 0;\n\n        while (error && client) {\n          errorCount++;\n          client = retry == null ? void 0 : retry({\n            persistedClient: client,\n            error,\n            errorCount\n          });\n\n          if (client) {\n            error = trySave(client);\n          }\n        }\n      }, throttleTime),\n      restoreClient: () => {\n        const cacheString = storage.getItem(key);\n\n        if (!cacheString) {\n          return;\n        }\n\n        return deserialize(cacheString);\n      },\n      removeClient: () => {\n        storage.removeItem(key);\n      }\n    };\n  }\n\n  return {\n    persistClient: noop,\n    restoreClient: () => undefined,\n    removeClient: noop\n  };\n}\n\nfunction throttle(func, wait = 100) {\n  let timer = null;\n  let params;\n  return function (...args) {\n    params = args;\n\n    if (timer === null) {\n      timer = setTimeout(() => {\n        func(...params);\n        timer = null;\n      }, wait);\n    }\n  };\n} // eslint-disable-next-line @typescript-eslint/no-empty-function\n\n\nfunction noop() {}\n\nexport { createSyncStoragePersister };\n//# sourceMappingURL=index.mjs.map\n","function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nexport { _extends as extends };\n//# sourceMappingURL=_rollupPluginBabelHelpers.mjs.map\n","// TYPES\n// FUNCTIONS\nfunction dehydrateMutation(mutation) {\n  return {\n    mutationKey: mutation.options.mutationKey,\n    state: mutation.state\n  };\n} // Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\n\n\nfunction dehydrateQuery(query) {\n  return {\n    state: query.state,\n    queryKey: query.queryKey,\n    queryHash: query.queryHash\n  };\n}\n\nfunction defaultShouldDehydrateMutation(mutation) {\n  return mutation.state.isPaused;\n}\nfunction defaultShouldDehydrateQuery(query) {\n  return query.state.status === 'success';\n}\nfunction dehydrate(client, options = {}) {\n  const mutations = [];\n  const queries = [];\n\n  if (options.dehydrateMutations !== false) {\n    const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;\n    client.getMutationCache().getAll().forEach(mutation => {\n      if (shouldDehydrateMutation(mutation)) {\n        mutations.push(dehydrateMutation(mutation));\n      }\n    });\n  }\n\n  if (options.dehydrateQueries !== false) {\n    const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;\n    client.getQueryCache().getAll().forEach(query => {\n      if (shouldDehydrateQuery(query)) {\n        queries.push(dehydrateQuery(query));\n      }\n    });\n  }\n\n  return {\n    mutations,\n    queries\n  };\n}\nfunction hydrate(client, dehydratedState, options) {\n  if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n    return;\n  }\n\n  const mutationCache = client.getMutationCache();\n  const queryCache = client.getQueryCache(); // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\n  const mutations = dehydratedState.mutations || []; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\n  const queries = dehydratedState.queries || [];\n  mutations.forEach(dehydratedMutation => {\n    var _options$defaultOptio;\n\n    mutationCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),\n      mutationKey: dehydratedMutation.mutationKey\n    }, dehydratedMutation.state);\n  });\n  queries.forEach(({\n    queryKey,\n    state,\n    queryHash\n  }) => {\n    var _options$defaultOptio2;\n\n    const query = queryCache.get(queryHash); // Do not hydrate if an existing query exists with newer data\n\n    if (query) {\n      if (query.state.dataUpdatedAt < state.dataUpdatedAt) {\n        // omit fetchStatus from dehydrated state\n        // so that query stays in its current fetchStatus\n        const {\n          fetchStatus: _ignored,\n          ...dehydratedQueryState\n        } = state;\n        query.setState(dehydratedQueryState);\n      }\n\n      return;\n    } // Restore query\n\n\n    queryCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries),\n      queryKey,\n      queryHash\n    }, // Reset fetch status to idle to avoid\n    // query being stuck in fetching state upon hydration\n    { ...state,\n      fetchStatus: 'idle'\n    });\n  });\n}\n\nexport { defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, dehydrate, hydrate };\n//# sourceMappingURL=hydration.mjs.map\n","import { hydrate, dehydrate } from '@tanstack/query-core';\n\n/**\n * Checks if emitted event is about cache change and not about observers.\n * Useful for persist, where we only want to trigger save when cache is changed.\n */\nconst cacheableEventTypes = ['added', 'removed', 'updated'];\n\nfunction isCacheableEventType(eventType) {\n  return cacheableEventTypes.includes(eventType);\n}\n/**\n * Restores persisted data to the QueryCache\n *  - data obtained from persister.restoreClient\n *  - data is hydrated using hydrateOptions\n * If data is expired, busted, empty, or throws, it runs persister.removeClient\n */\n\n\nasync function persistQueryClientRestore({\n  queryClient,\n  persister,\n  maxAge = 1000 * 60 * 60 * 24,\n  buster = '',\n  hydrateOptions\n}) {\n  try {\n    const persistedClient = await persister.restoreClient();\n\n    if (persistedClient) {\n      if (persistedClient.timestamp) {\n        const expired = Date.now() - persistedClient.timestamp > maxAge;\n        const busted = persistedClient.buster !== buster;\n\n        if (expired || busted) {\n          persister.removeClient();\n        } else {\n          hydrate(queryClient, persistedClient.clientState, hydrateOptions);\n        }\n      } else {\n        persister.removeClient();\n      }\n    }\n  } catch (err) {\n    if (process.env.NODE_ENV !== 'production') {\n      queryClient.getLogger().error(err);\n      queryClient.getLogger().warn('Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.');\n    }\n\n    persister.removeClient();\n  }\n}\n/**\n * Persists data from the QueryCache\n *  - data dehydrated using dehydrateOptions\n *  - data is persisted using persister.persistClient\n */\n\nasync function persistQueryClientSave({\n  queryClient,\n  persister,\n  buster = '',\n  dehydrateOptions\n}) {\n  const persistClient = {\n    buster,\n    timestamp: Date.now(),\n    clientState: dehydrate(queryClient, dehydrateOptions)\n  };\n  await persister.persistClient(persistClient);\n}\n/**\n * Subscribe to QueryCache and MutationCache updates (for persisting)\n * @returns an unsubscribe function (to discontinue monitoring)\n */\n\nfunction persistQueryClientSubscribe(props) {\n  const unsubscribeQueryCache = props.queryClient.getQueryCache().subscribe(event => {\n    if (isCacheableEventType(event.type)) {\n      persistQueryClientSave(props);\n    }\n  });\n  const unusbscribeMutationCache = props.queryClient.getMutationCache().subscribe(event => {\n    if (isCacheableEventType(event.type)) {\n      persistQueryClientSave(props);\n    }\n  });\n  return () => {\n    unsubscribeQueryCache();\n    unusbscribeMutationCache();\n  };\n}\n/**\n * Restores persisted data to QueryCache and persists further changes.\n */\n\nfunction persistQueryClient(props) {\n  let hasUnsubscribed = false;\n  let persistQueryClientUnsubscribe;\n\n  const unsubscribe = () => {\n    hasUnsubscribed = true;\n    persistQueryClientUnsubscribe == null ? void 0 : persistQueryClientUnsubscribe();\n  }; // Attempt restore\n\n\n  const restorePromise = persistQueryClientRestore(props).then(() => {\n    if (!hasUnsubscribed) {\n      // Subscribe to changes in the query cache to trigger the save\n      persistQueryClientUnsubscribe = persistQueryClientSubscribe(props);\n    }\n  });\n  return [unsubscribe, restorePromise];\n}\n\nexport { persistQueryClient, persistQueryClientRestore, persistQueryClientSave, persistQueryClientSubscribe };\n//# sourceMappingURL=persist.mjs.map\n","'use client';\nimport { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.mjs';\nimport * as React from 'react';\nimport { persistQueryClientRestore, persistQueryClientSubscribe } from '@tanstack/query-persist-client-core';\nimport { QueryClientProvider, IsRestoringProvider } from '@tanstack/react-query';\n\nconst PersistQueryClientProvider = ({\n  client,\n  children,\n  persistOptions,\n  onSuccess,\n  ...props\n}) => {\n  const [isRestoring, setIsRestoring] = React.useState(true);\n  const refs = React.useRef({\n    persistOptions,\n    onSuccess\n  });\n  const didRestore = React.useRef(false);\n  React.useEffect(() => {\n    refs.current = {\n      persistOptions,\n      onSuccess\n    };\n  });\n  React.useEffect(() => {\n    const options = { ...refs.current.persistOptions,\n      queryClient: client\n    };\n\n    if (!didRestore.current) {\n      didRestore.current = true;\n      setIsRestoring(true);\n      persistQueryClientRestore(options).then(async () => {\n        try {\n          await (refs.current.onSuccess == null ? void 0 : refs.current.onSuccess());\n        } finally {\n          setIsRestoring(false);\n        }\n      });\n    }\n\n    return isRestoring ? undefined : persistQueryClientSubscribe(options);\n  }, [client, isRestoring]);\n  return /*#__PURE__*/React.createElement(QueryClientProvider, _extends({\n    client: client\n  }, props), /*#__PURE__*/React.createElement(IsRestoringProvider, {\n    value: isRestoring\n  }, children));\n};\n\nexport { PersistQueryClientProvider };\n//# sourceMappingURL=PersistQueryClientProvider.mjs.map\n"],"names":["dispatchEvent","type","detail","useIsomorphicEffect","createUseExternalEvents","prefix","_useExternalEvents","events","handlers","acc","eventKey","event","createEvent","payload","useNotificationsEvents","showNotification","hideNotification","cleanNotifications","cleanNotificationsQueue","updateNotification","notifications","validator","XMLParser","XMLBuilder","module","nameStartChar","nameChar","nameRegexp","regexName","getAllMatches","string","regex","matches","match","allmatches","len","index","isName","exports","v","obj","target","arrayMode","keys","i","util","defaultOptions","xmlData","options","tags","tagFound","reachedRoot","readPI","tagStartPos","readCommentAndCDATA","closingTag","tagName","validateTagName","msg","getErrorObject","getLineNumberForPosition","result","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","otg","openPos","afterAmp","validateAmpersand","isWhiteSpace","t","char","start","tagname","angleBracketsCount","doubleQuote","singleQuote","startChar","tagClosed","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","validateNumberAmpersand","re","count","code","message","lineNumber","lines","buildFromOrderedJs","key","a","Builder","isAttribute","processTextOrObjNode","indentate","jObj","level","val","attr","newval","arrLen","listTagVal","j","item","Ks","L","object","tagEndExp","piClosingChar","closeTag","buildEmptyObjNode","textValue","entity","name","EOL","toXml","jArray","indentation","arrToStr","arr","jPath","xmlStr","isPreviousElementTag","tagObj","propName","newJPath","tagText","isStopNode","replaceEntitiesValue","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","attrMap","attrVal","readDocType","entities","hasBody","comment","exp","isEntity","readEntityExp","validateEntityName","isElement","isAttlist","isNotation","isComment","entityName","attrs","buildOptions","xmlNode","toNumber","regx","OrderedObjParser","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","readStopNodeData","saveTextToParentTag","addChild","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","parseValue","attrsRegx","oldVal","aName","newVal","attrCollection","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","lastTagName","propIndex","tagData","readTagExp","childNode","endIndex","tagExp","rawTagName","attrExpPresent","lastTag","tagContent","stopNodes","currentTagName","allNodesExp","stopNodePath","stopNodeExp","tagExpWithClosingIndex","closingChar","attrBoundary","ch","str","errMsg","closingIndex","removeNSPrefix","separatorIndex","startIndex","openTagCount","shouldParse","prettify","validationOption","orderedObjParser","orderedResult","value","node","compress","text","compressedObj","property","newJpath","isLeaf","isLeafTag","assignAttributes","jpath","atrrName","textNodeName","propCount","XmlNode","createCompounder","lowerCase","word","hexRegex","numRegex","consider","trimmedStr","sign","leadingZeros","numTrimmedByZeros","trimZeros","eNotation","num","numStr","createSyncStoragePersister","storage","throttleTime","serialize","deserialize","retry","trySave","persistedClient","error","throttle","client","errorCount","cacheString","noop","func","wait","timer","params","args","_extends","source","dehydrateMutation","mutation","dehydrateQuery","query","defaultShouldDehydrateMutation","defaultShouldDehydrateQuery","dehydrate","mutations","queries","shouldDehydrateMutation","shouldDehydrateQuery","hydrate","dehydratedState","mutationCache","queryCache","dehydratedMutation","_options$defaultOptio","queryKey","state","queryHash","_options$defaultOptio2","_ignored","dehydratedQueryState","cacheableEventTypes","isCacheableEventType","eventType","persistQueryClientRestore","queryClient","persister","maxAge","buster","hydrateOptions","expired","busted","persistQueryClientSave","dehydrateOptions","persistClient","persistQueryClientSubscribe","props","unsubscribeQueryCache","unusbscribeMutationCache","persistQueryClient","hasUnsubscribed","persistQueryClientUnsubscribe","unsubscribe","restorePromise","PersistQueryClientProvider","children","persistOptions","onSuccess","isRestoring","setIsRestoring","refs","didRestore"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy