{"version":3,"file":"s3-client.mjs","sources":["../../../../node_modules/.bun/aws4fetch@1.0.20/node_modules/aws4fetch/dist/aws4fetch.esm.mjs","../../../../node_modules/.bun/fast-xml-parser@5.3.0/node_modules/fast-xml-parser/src/util.js","../../../../node_modules/.bun/fast-xml-parser@5.3.0/node_modules/fast-xml-parser/src/validator.js","../../../../node_modules/.bun/fast-xml-parser@5.3.0/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","../../../../node_modules/.bun/fast-xml-parser@5.3.0/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","../../../../node_modules/.bun/fast-xml-parser@5.3.0/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","../../../../node_modules/.bun/strnum@2.1.1/node_modules/strnum/strnum.js","../../../../node_modules/.bun/fast-xml-parser@5.3.0/node_modules/fast-xml-parser/src/ignoreAttributes.js","../../../../node_modules/.bun/fast-xml-parser@5.3.0/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","../../../../node_modules/.bun/fast-xml-parser@5.3.0/node_modules/fast-xml-parser/src/xmlparser/node2json.js","../../../../node_modules/.bun/fast-xml-parser@5.3.0/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","../../../@hive/s3-storage/dist/_chunks/s3-client-CTMc7zi4.mjs"],"sourcesContent":["/**\n * @license MIT <https://opensource.org/licenses/MIT>\n * @copyright Michael Hart 2024\n */\nconst encoder = new TextEncoder();\nconst HOST_SERVICES = {\n  appstream2: 'appstream',\n  cloudhsmv2: 'cloudhsm',\n  email: 'ses',\n  marketplace: 'aws-marketplace',\n  mobile: 'AWSMobileHubService',\n  pinpoint: 'mobiletargeting',\n  queue: 'sqs',\n  'git-codecommit': 'codecommit',\n  'mturk-requester-sandbox': 'mturk-requester',\n  'personalize-runtime': 'personalize',\n};\nconst UNSIGNABLE_HEADERS = new Set([\n  'authorization',\n  'content-type',\n  'content-length',\n  'user-agent',\n  'presigned-expires',\n  'expect',\n  'x-amzn-trace-id',\n  'range',\n  'connection',\n]);\nclass AwsClient {\n  constructor({ accessKeyId, secretAccessKey, sessionToken, service, region, cache, retries, initRetryMs }) {\n    if (accessKeyId == null) throw new TypeError('accessKeyId is a required option')\n    if (secretAccessKey == null) throw new TypeError('secretAccessKey is a required option')\n    this.accessKeyId = accessKeyId;\n    this.secretAccessKey = secretAccessKey;\n    this.sessionToken = sessionToken;\n    this.service = service;\n    this.region = region;\n    this.cache = cache || new Map();\n    this.retries = retries != null ? retries : 10;\n    this.initRetryMs = initRetryMs || 50;\n  }\n  async sign(input, init) {\n    if (input instanceof Request) {\n      const { method, url, headers, body } = input;\n      init = Object.assign({ method, url, headers }, init);\n      if (init.body == null && headers.has('Content-Type')) {\n        init.body = body != null && headers.has('X-Amz-Content-Sha256') ? body : await input.clone().arrayBuffer();\n      }\n      input = url;\n    }\n    const signer = new AwsV4Signer(Object.assign({ url: input.toString() }, init, this, init && init.aws));\n    const signed = Object.assign({}, init, await signer.sign());\n    delete signed.aws;\n    try {\n      return new Request(signed.url.toString(), signed)\n    } catch (e) {\n      if (e instanceof TypeError) {\n        return new Request(signed.url.toString(), Object.assign({ duplex: 'half' }, signed))\n      }\n      throw e\n    }\n  }\n  async fetch(input, init) {\n    for (let i = 0; i <= this.retries; i++) {\n      const fetched = fetch(await this.sign(input, init));\n      if (i === this.retries) {\n        return fetched\n      }\n      const res = await fetched;\n      if (res.status < 500 && res.status !== 429) {\n        return res\n      }\n      await new Promise(resolve => setTimeout(resolve, Math.random() * this.initRetryMs * Math.pow(2, i)));\n    }\n    throw new Error('An unknown error occurred, ensure retries is not negative')\n  }\n}\nclass AwsV4Signer {\n  constructor({ method, url, headers, body, accessKeyId, secretAccessKey, sessionToken, service, region, cache, datetime, signQuery, appendSessionToken, allHeaders, singleEncode }) {\n    if (url == null) throw new TypeError('url is a required option')\n    if (accessKeyId == null) throw new TypeError('accessKeyId is a required option')\n    if (secretAccessKey == null) throw new TypeError('secretAccessKey is a required option')\n    this.method = method || (body ? 'POST' : 'GET');\n    this.url = new URL(url);\n    this.headers = new Headers(headers || {});\n    this.body = body;\n    this.accessKeyId = accessKeyId;\n    this.secretAccessKey = secretAccessKey;\n    this.sessionToken = sessionToken;\n    let guessedService, guessedRegion;\n    if (!service || !region) {\n[guessedService, guessedRegion] = guessServiceRegion(this.url, this.headers);\n    }\n    this.service = service || guessedService || '';\n    this.region = region || guessedRegion || 'us-east-1';\n    this.cache = cache || new Map();\n    this.datetime = datetime || new Date().toISOString().replace(/[:-]|\\.\\d{3}/g, '');\n    this.signQuery = signQuery;\n    this.appendSessionToken = appendSessionToken || this.service === 'iotdevicegateway';\n    this.headers.delete('Host');\n    if (this.service === 's3' && !this.signQuery && !this.headers.has('X-Amz-Content-Sha256')) {\n      this.headers.set('X-Amz-Content-Sha256', 'UNSIGNED-PAYLOAD');\n    }\n    const params = this.signQuery ? this.url.searchParams : this.headers;\n    params.set('X-Amz-Date', this.datetime);\n    if (this.sessionToken && !this.appendSessionToken) {\n      params.set('X-Amz-Security-Token', this.sessionToken);\n    }\n    this.signableHeaders = ['host', ...this.headers.keys()]\n      .filter(header => allHeaders || !UNSIGNABLE_HEADERS.has(header))\n      .sort();\n    this.signedHeaders = this.signableHeaders.join(';');\n    this.canonicalHeaders = this.signableHeaders\n      .map(header => header + ':' + (header === 'host' ? this.url.host : (this.headers.get(header) || '').replace(/\\s+/g, ' ')))\n      .join('\\n');\n    this.credentialString = [this.datetime.slice(0, 8), this.region, this.service, 'aws4_request'].join('/');\n    if (this.signQuery) {\n      if (this.service === 's3' && !params.has('X-Amz-Expires')) {\n        params.set('X-Amz-Expires', '86400');\n      }\n      params.set('X-Amz-Algorithm', 'AWS4-HMAC-SHA256');\n      params.set('X-Amz-Credential', this.accessKeyId + '/' + this.credentialString);\n      params.set('X-Amz-SignedHeaders', this.signedHeaders);\n    }\n    if (this.service === 's3') {\n      try {\n        this.encodedPath = decodeURIComponent(this.url.pathname.replace(/\\+/g, ' '));\n      } catch (e) {\n        this.encodedPath = this.url.pathname;\n      }\n    } else {\n      this.encodedPath = this.url.pathname.replace(/\\/+/g, '/');\n    }\n    if (!singleEncode) {\n      this.encodedPath = encodeURIComponent(this.encodedPath).replace(/%2F/g, '/');\n    }\n    this.encodedPath = encodeRfc3986(this.encodedPath);\n    const seenKeys = new Set();\n    this.encodedSearch = [...this.url.searchParams]\n      .filter(([k]) => {\n        if (!k) return false\n        if (this.service === 's3') {\n          if (seenKeys.has(k)) return false\n          seenKeys.add(k);\n        }\n        return true\n      })\n      .map(pair => pair.map(p => encodeRfc3986(encodeURIComponent(p))))\n      .sort(([k1, v1], [k2, v2]) => k1 < k2 ? -1 : k1 > k2 ? 1 : v1 < v2 ? -1 : v1 > v2 ? 1 : 0)\n      .map(pair => pair.join('='))\n      .join('&');\n  }\n  async sign() {\n    if (this.signQuery) {\n      this.url.searchParams.set('X-Amz-Signature', await this.signature());\n      if (this.sessionToken && this.appendSessionToken) {\n        this.url.searchParams.set('X-Amz-Security-Token', this.sessionToken);\n      }\n    } else {\n      this.headers.set('Authorization', await this.authHeader());\n    }\n    return {\n      method: this.method,\n      url: this.url,\n      headers: this.headers,\n      body: this.body,\n    }\n  }\n  async authHeader() {\n    return [\n      'AWS4-HMAC-SHA256 Credential=' + this.accessKeyId + '/' + this.credentialString,\n      'SignedHeaders=' + this.signedHeaders,\n      'Signature=' + (await this.signature()),\n    ].join(', ')\n  }\n  async signature() {\n    const date = this.datetime.slice(0, 8);\n    const cacheKey = [this.secretAccessKey, date, this.region, this.service].join();\n    let kCredentials = this.cache.get(cacheKey);\n    if (!kCredentials) {\n      const kDate = await hmac('AWS4' + this.secretAccessKey, date);\n      const kRegion = await hmac(kDate, this.region);\n      const kService = await hmac(kRegion, this.service);\n      kCredentials = await hmac(kService, 'aws4_request');\n      this.cache.set(cacheKey, kCredentials);\n    }\n    return buf2hex(await hmac(kCredentials, await this.stringToSign()))\n  }\n  async stringToSign() {\n    return [\n      'AWS4-HMAC-SHA256',\n      this.datetime,\n      this.credentialString,\n      buf2hex(await hash(await this.canonicalString())),\n    ].join('\\n')\n  }\n  async canonicalString() {\n    return [\n      this.method.toUpperCase(),\n      this.encodedPath,\n      this.encodedSearch,\n      this.canonicalHeaders + '\\n',\n      this.signedHeaders,\n      await this.hexBodyHash(),\n    ].join('\\n')\n  }\n  async hexBodyHash() {\n    let hashHeader = this.headers.get('X-Amz-Content-Sha256') || (this.service === 's3' && this.signQuery ? 'UNSIGNED-PAYLOAD' : null);\n    if (hashHeader == null) {\n      if (this.body && typeof this.body !== 'string' && !('byteLength' in this.body)) {\n        throw new Error('body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header')\n      }\n      hashHeader = buf2hex(await hash(this.body || ''));\n    }\n    return hashHeader\n  }\n}\nasync function hmac(key, string) {\n  const cryptoKey = await crypto.subtle.importKey(\n    'raw',\n    typeof key === 'string' ? encoder.encode(key) : key,\n    { name: 'HMAC', hash: { name: 'SHA-256' } },\n    false,\n    ['sign'],\n  );\n  return crypto.subtle.sign('HMAC', cryptoKey, encoder.encode(string))\n}\nasync function hash(content) {\n  return crypto.subtle.digest('SHA-256', typeof content === 'string' ? encoder.encode(content) : content)\n}\nconst HEX_CHARS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\nfunction buf2hex(arrayBuffer) {\n  const buffer = new Uint8Array(arrayBuffer);\n  let out = '';\n  for (let idx = 0; idx < buffer.length; idx++) {\n    const n = buffer[idx];\n    out += HEX_CHARS[(n >>> 4) & 0xF];\n    out += HEX_CHARS[n & 0xF];\n  }\n  return out\n}\nfunction encodeRfc3986(urlEncodedStr) {\n  return urlEncodedStr.replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase())\n}\nfunction guessServiceRegion(url, headers) {\n  const { hostname, pathname } = url;\n  if (hostname.endsWith('.on.aws')) {\n    const match = hostname.match(/^[^.]{1,63}\\.lambda-url\\.([^.]{1,63})\\.on\\.aws$/);\n    return match != null ? ['lambda', match[1] || ''] : ['', '']\n  }\n  if (hostname.endsWith('.r2.cloudflarestorage.com')) {\n    return ['s3', 'auto']\n  }\n  if (hostname.endsWith('.backblazeb2.com')) {\n    const match = hostname.match(/^(?:[^.]{1,63}\\.)?s3\\.([^.]{1,63})\\.backblazeb2\\.com$/);\n    return match != null ? ['s3', match[1] || ''] : ['', '']\n  }\n  const match = hostname.replace('dualstack.', '').match(/([^.]{1,63})\\.(?:([^.]{0,63})\\.)?amazonaws\\.com(?:\\.cn)?$/);\n  let service = (match && match[1]) || '';\n  let region = match && match[2];\n  if (region === 'us-gov') {\n    region = 'us-gov-west-1';\n  } else if (region === 's3' || region === 's3-accelerate') {\n    region = 'us-east-1';\n    service = 's3';\n  } else if (service === 'iot') {\n    if (hostname.startsWith('iot.')) {\n      service = 'execute-api';\n    } else if (hostname.startsWith('data.jobs.iot.')) {\n      service = 'iot-jobs-data';\n    } else {\n      service = pathname === '/mqtt' ? 'iotdevicegateway' : 'iotdata';\n    }\n  } else if (service === 'autoscaling') {\n    const targetPrefix = (headers.get('X-Amz-Target') || '').split('.')[0];\n    if (targetPrefix === 'AnyScaleFrontendService') {\n      service = 'application-autoscaling';\n    } else if (targetPrefix === 'AnyScaleScalingPlannerFrontendService') {\n      service = 'autoscaling-plans';\n    }\n  } else if (region == null && service.startsWith('s3-')) {\n    region = service.slice(3).replace(/^fips-|^external-1/, '');\n    service = 's3';\n  } else if (service.endsWith('-fips')) {\n    service = service.slice(0, -5);\n  } else if (region && /-\\d$/.test(service) && !/-\\d$/.test(region)) {\n[service, region] = [region, service];\n  }\n  return [HOST_SERVICES[service] || service, region || '']\n}\n\nexport { AwsClient, AwsV4Signer };\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';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(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\nexport const isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(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 */\nexport function merge(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\nexport function getValue(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() {};","'use strict';\n\nimport {getAllMatches, isName} from './util.js';\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\");\nexport function validate(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(/(<!DOCTYPE[\\s\\w\\\"\\.\\/\\-\\:]+(\\[.*\\])*\\s*>)/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 if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", 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 = 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 isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return 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","\nexport const 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    captureMetaData: false,\n};\n   \nexport const buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class 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, startIndex) {\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    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","import {isName} from '../util.js';\n\nexport default class DocTypeReader{\n    constructor(processEntities){\n        this.suppressValidationErr = !processEntities;\n    }\n    \n    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<xmlData.length;i++){\n                if (xmlData[i] === '<' && !comment) { //Determine the tag type\n                    if( hasBody && hasSeq(xmlData, \"!ENTITY\",i)){\n                        i += 7; \n                        let entityName, val;\n                        [entityName, val,i] = this.readEntityExp(xmlData,i+1,this.suppressValidationErr);\n                        if(val.indexOf(\"&\") === -1) //Parameter entities are not supported\n                            entities[ entityName ] = {\n                                regx : RegExp( `&${entityName};`,\"g\"),\n                                val: val\n                            };\n                    }\n                    else if( hasBody && hasSeq(xmlData, \"!ELEMENT\",i))  {\n                        i += 8;//Not supported\n                        const {index} = this.readElementExp(xmlData,i+1);\n                        i = index;\n                    }else if( hasBody && hasSeq(xmlData, \"!ATTLIST\",i)){\n                        i += 8;//Not supported\n                        // const {index} = this.readAttlistExp(xmlData,i+1);\n                        // i = index;\n                    }else if( hasBody && hasSeq(xmlData, \"!NOTATION\",i)) {\n                        i += 9;//Not supported\n                        const {index} = this.readNotationExp(xmlData,i+1,this.suppressValidationErr);\n                        i = index;\n                    }else if( hasSeq(xmlData, \"!--\",i) ) comment = true;\n                    else throw new Error(`Invalid DOCTYPE`);\n\n                    angleBracketsCount++;\n                    exp = \"\";\n                } else if (xmlData[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    readEntityExp(xmlData, i) {    \n        //External entities are not supported\n        //    <!ENTITY ext SYSTEM \"http://normal-website.com\" >\n\n        //Parameter entities are not supported\n        //    <!ENTITY entityname \"&anotherElement;\">\n\n        //Internal entities are supported\n        //    <!ENTITY entityname \"replacement text\">\n\n        // Skip leading whitespace after <!ENTITY\n        i = skipWhitespace(xmlData, i);\n\n        // Read entity name\n        let entityName = \"\";\n        while (i < xmlData.length && !/\\s/.test(xmlData[i]) && xmlData[i] !== '\"' && xmlData[i] !== \"'\") {\n            entityName += xmlData[i];\n            i++;\n        }\n        validateEntityName(entityName);\n\n        // Skip whitespace after entity name\n        i = skipWhitespace(xmlData, i);\n\n        // Check for unsupported constructs (external entities or parameter entities)\n        if(!this.suppressValidationErr){\n            if (xmlData.substring(i, i + 6).toUpperCase() === \"SYSTEM\") {\n                throw new Error(\"External entities are not supported\");\n            }else if (xmlData[i] === \"%\") {\n                throw new Error(\"Parameter entities are not supported\");\n            }\n        }\n\n        // Read entity value (internal entity)\n        let entityValue = \"\";\n        [i, entityValue] = this.readIdentifierVal(xmlData, i, \"entity\");\n        i--;\n        return [entityName, entityValue, i ];\n    }\n\n    readNotationExp(xmlData, i) {\n        // Skip leading whitespace after <!NOTATION\n        i = skipWhitespace(xmlData, i);\n\n        // Read notation name\n        let notationName = \"\";\n        while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n            notationName += xmlData[i];\n            i++;\n        }\n        !this.suppressValidationErr && validateEntityName(notationName);\n\n        // Skip whitespace after notation name\n        i = skipWhitespace(xmlData, i);\n\n        // Check identifier type (SYSTEM or PUBLIC)\n        const identifierType = xmlData.substring(i, i + 6).toUpperCase();\n        if (!this.suppressValidationErr && identifierType !== \"SYSTEM\" && identifierType !== \"PUBLIC\") {\n            throw new Error(`Expected SYSTEM or PUBLIC, found \"${identifierType}\"`);\n        }\n        i += identifierType.length;\n\n        // Skip whitespace after identifier type\n        i = skipWhitespace(xmlData, i);\n\n        // Read public identifier (if PUBLIC)\n        let publicIdentifier = null;\n        let systemIdentifier = null;\n\n        if (identifierType === \"PUBLIC\") {\n            [i, publicIdentifier ] = this.readIdentifierVal(xmlData, i, \"publicIdentifier\");\n\n            // Skip whitespace after public identifier\n            i = skipWhitespace(xmlData, i);\n\n            // Optionally read system identifier\n            if (xmlData[i] === '\"' || xmlData[i] === \"'\") {\n                [i, systemIdentifier ] = this.readIdentifierVal(xmlData, i,\"systemIdentifier\");\n            }\n        } else if (identifierType === \"SYSTEM\") {\n            // Read system identifier (mandatory for SYSTEM)\n            [i, systemIdentifier ] = this.readIdentifierVal(xmlData, i, \"systemIdentifier\");\n\n            if (!this.suppressValidationErr && !systemIdentifier) {\n                throw new Error(\"Missing mandatory system identifier for SYSTEM notation\");\n            }\n        }\n        \n        return {notationName, publicIdentifier, systemIdentifier, index: --i};\n    }\n\n    readIdentifierVal(xmlData, i, type) {\n        let identifierVal = \"\";\n        const startChar = xmlData[i];\n        if (startChar !== '\"' && startChar !== \"'\") {\n            throw new Error(`Expected quoted string, found \"${startChar}\"`);\n        }\n        i++;\n\n        while (i < xmlData.length && xmlData[i] !== startChar) {\n            identifierVal += xmlData[i];\n            i++;\n        }\n\n        if (xmlData[i] !== startChar) {\n            throw new Error(`Unterminated ${type} value`);\n        }\n        i++;\n        return [i, identifierVal];\n    }\n\n    readElementExp(xmlData, i) {\n        // <!ELEMENT br EMPTY>\n        // <!ELEMENT div ANY>\n        // <!ELEMENT title (#PCDATA)>\n        // <!ELEMENT book (title, author+)>\n        // <!ELEMENT name (content-model)>\n        \n        // Skip leading whitespace after <!ELEMENT\n        i = skipWhitespace(xmlData, i);\n\n        // Read element name\n        let elementName = \"\";\n        while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n            elementName += xmlData[i];\n            i++;\n        }\n\n        // Validate element name\n        if (!this.suppressValidationErr && !isName(elementName)) {\n            throw new Error(`Invalid element name: \"${elementName}\"`);\n        }\n\n        // Skip whitespace after element name\n        i = skipWhitespace(xmlData, i);\n        let contentModel = \"\";\n        // Expect '(' to start content model\n        if(xmlData[i] === \"E\" && hasSeq(xmlData, \"MPTY\",i)) i+=4;\n        else if(xmlData[i] === \"A\" && hasSeq(xmlData, \"NY\",i)) i+=2;\n        else if (xmlData[i] === \"(\") {\n            i++; // Move past '('\n\n            // Read content model\n            while (i < xmlData.length && xmlData[i] !== \")\") {\n                contentModel += xmlData[i];\n                i++;\n            }\n            if (xmlData[i] !== \")\") {\n                throw new Error(\"Unterminated content model\");\n            }\n\n        }else if(!this.suppressValidationErr){\n            throw new Error(`Invalid Element Expression, found \"${xmlData[i]}\"`);\n        }\n        \n        return {\n            elementName,\n            contentModel: contentModel.trim(),\n            index: i\n        };\n    }\n\n    readAttlistExp(xmlData, i) {\n        // Skip leading whitespace after <!ATTLIST\n        i = skipWhitespace(xmlData, i);\n\n        // Read element name\n        let elementName = \"\";\n        while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n            elementName += xmlData[i];\n            i++;\n        }\n\n        // Validate element name\n        validateEntityName(elementName)\n\n        // Skip whitespace after element name\n        i = skipWhitespace(xmlData, i);\n\n        // Read attribute name\n        let attributeName = \"\";\n        while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n            attributeName += xmlData[i];\n            i++;\n        }\n\n        // Validate attribute name\n        if (!validateEntityName(attributeName)) {\n            throw new Error(`Invalid attribute name: \"${attributeName}\"`);\n        }\n\n        // Skip whitespace after attribute name\n        i = skipWhitespace(xmlData, i);\n\n        // Read attribute type\n        let attributeType = \"\";\n        if (xmlData.substring(i, i + 8).toUpperCase() === \"NOTATION\") {\n            attributeType = \"NOTATION\";\n            i += 8; // Move past \"NOTATION\"\n\n            // Skip whitespace after \"NOTATION\"\n            i = skipWhitespace(xmlData, i);\n\n            // Expect '(' to start the list of notations\n            if (xmlData[i] !== \"(\") {\n                throw new Error(`Expected '(', found \"${xmlData[i]}\"`);\n            }\n            i++; // Move past '('\n\n            // Read the list of allowed notations\n            let allowedNotations = [];\n            while (i < xmlData.length && xmlData[i] !== \")\") {\n                let notation = \"\";\n                while (i < xmlData.length && xmlData[i] !== \"|\" && xmlData[i] !== \")\") {\n                    notation += xmlData[i];\n                    i++;\n                }\n\n                // Validate notation name\n                notation = notation.trim();\n                if (!validateEntityName(notation)) {\n                    throw new Error(`Invalid notation name: \"${notation}\"`);\n                }\n\n                allowedNotations.push(notation);\n\n                // Skip '|' separator or exit loop\n                if (xmlData[i] === \"|\") {\n                    i++; // Move past '|'\n                    i = skipWhitespace(xmlData, i); // Skip optional whitespace after '|'\n                }\n            }\n\n            if (xmlData[i] !== \")\") {\n                throw new Error(\"Unterminated list of notations\");\n            }\n            i++; // Move past ')'\n\n            // Store the allowed notations as part of the attribute type\n            attributeType += \" (\" + allowedNotations.join(\"|\") + \")\";\n        } else {\n            // Handle simple types (e.g., CDATA, ID, IDREF, etc.)\n            while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n                attributeType += xmlData[i];\n                i++;\n            }\n\n            // Validate simple attribute type\n            const validTypes = [\"CDATA\", \"ID\", \"IDREF\", \"IDREFS\", \"ENTITY\", \"ENTITIES\", \"NMTOKEN\", \"NMTOKENS\"];\n            if (!this.suppressValidationErr && !validTypes.includes(attributeType.toUpperCase())) {\n                throw new Error(`Invalid attribute type: \"${attributeType}\"`);\n            }\n        }\n\n        // Skip whitespace after attribute type\n        i = skipWhitespace(xmlData, i);\n\n        // Read default value\n        let defaultValue = \"\";\n        if (xmlData.substring(i, i + 8).toUpperCase() === \"#REQUIRED\") {\n            defaultValue = \"#REQUIRED\";\n            i += 8;\n        } else if (xmlData.substring(i, i + 7).toUpperCase() === \"#IMPLIED\") {\n            defaultValue = \"#IMPLIED\";\n            i += 7;\n        } else {\n            [i, defaultValue] = this.readIdentifierVal(xmlData, i, \"ATTLIST\");\n        }\n\n        return {\n            elementName,\n            attributeName,\n            attributeType,\n            defaultValue,\n            index: i\n        }\n    }\n}\n\n\n\nconst skipWhitespace = (data, index) => {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq,i){\n    for(let j=0;j<seq.length;j++){\n        if(seq[j]!==data[i+j+1]) return false;\n    }\n    return true;\n}\n\nfunction validateEntityName(name){\n    if (isName(name))\n\t    return name;\n    else\n        throw new Error(`Invalid entity name ${name}`);\n}\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n    hex :  true,\n    // oct: false,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true,\n    //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    \n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if(str===\"0\") return 0;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return parse_int(trimmedStr, 16);\n    // }else if (options.oct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    }else if (trimmedStr.search(/.+[eE].+/)!== -1) { //eNotation\n        return resolveEnotation(str,trimmedStr,options);\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        // +00.123 => [ , '+', '00', '.123', ..\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            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length+1] === \".\" \n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if(!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1 \n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if( num === 0) return num;\n                if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    if(parsedStr === \"0\") return num; //0.0\n                    else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n                \n                let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n                if(leadingZeros){\n                    // -009 => -9\n                    return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n                }else  {\n                    // +9\n                    return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n                }\n            }\n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n    if(!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx); \n    if(notation){\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length+1] === eChar \n            : str[leadingZeros.length] === eChar;\n\n        if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if(leadingZeros.length === 1 \n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n                return Number(trimmedStr);\n        }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n            //remove leading 0s\n            trimmedStr = (notation[1] || \"\") + notation[3];\n            return Number(trimmedStr);\n        }else return str;\n    }else{\n        return str;\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.substring(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base){\n    //polyfill\n    if(parseInt) return parseInt(numStr, base);\n    else if(Number.parseInt) return Number.parseInt(numStr, base);\n    else if(window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n///@ts-check\n\nimport {getAllMatches, isExist} from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const 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\nexport default class 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      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCodePoint(Number.parseInt(str, 10)) },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCodePoint(Number.parseInt(str, 16)) },\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    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\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 !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = 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      if (this.ignoreAttributesFn(attrName, jPath)) {\n        continue\n      }\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  const docTypeReader = new DocTypeReader(this.options.processEntities);\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: </${tagName}>`);\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, i);\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 = docTypeReader.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        let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n        if(val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\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        const startIndex = i;\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            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            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            \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\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, startIndex);\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, startIndex);\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, startIndex);\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, startIndex){\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\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, startIndex);\n  }else{\n    currentNode.addChild(childNode, startIndex);\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 = 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.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\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 (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function 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      if (tagObj[METADATA_SYMBOL] !== undefined) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\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}\n","import { buildOptions} from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport {validate} from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class 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|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData !== \"string\" && xmlData.toString){\n            xmlData = xmlData.toString();\n        }else if(typeof xmlData !== \"string\"){\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        \n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = 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 '&#xD;'\")\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    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","import { formatBytes, formatDuration } from \"@hive/sdk/format\";\nimport { Operation } from \"@hive/sdk/operation\";\nimport { ByteStream, byteStreamToBinary, trackProgress, uint8ArrayToArrayBuffer } from \"@hive/streams\";\nimport { AwsClient } from \"aws4fetch\";\nimport { XMLParser } from \"fast-xml-parser\";\n\n//#region src/s3-client/error.ts\nvar S3Error = class extends Error {\n\tname = \"S3Error\";\n\t/**\n\t* Raw response body as returned by S3.\n\t*/\n\traw;\n\t/**\n\t* HTTP status code of the response returned by S3.\n\t*/\n\tstatus;\n\t/**\n\t* HTTP status text of the response returned by S3.\n\t*/\n\tstatusText;\n\tconstructor(message, options) {\n\t\tsuper(message);\n\t\tthis.raw = options.raw;\n\t\tthis.status = options.status;\n\t\tthis.statusText = options.statusText;\n\t}\n};\nvar BucketNotFoundError = class extends S3Error {\n\tstatic name = \"BucketNotFoundError\";\n\t/**\n\t* Hostname of the S3 instance.\n\t*/\n\thost;\n\t/**\n\t* Name of the S3 bucket.\n\t*/\n\tbucket;\n\tconstructor(host, options) {\n\t\tsuper(`Bucket \\`${host}\\` was not found`, options);\n\t\tthis.host = options.host;\n\t\tthis.bucket = options.bucket;\n\t}\n};\nvar BucketNotAccessibleError = class extends S3Error {\n\tstatic name = \"BucketNotAccessibleError\";\n\t/**\n\t* Hostname of the S3 instance.\n\t*/\n\thost;\n\t/**\n\t* Name of the S3 bucket.\n\t*/\n\tbucket;\n\tconstructor(host, options) {\n\t\tsuper(`Unable to access bucket \\`${host}\\``, options);\n\t\tthis.host = options.host;\n\t\tthis.bucket = options.bucket;\n\t}\n};\nvar ObjectNotFoundError = class extends S3Error {\n\tstatic name = \"ObjectNotFoundError\";\n\t/**\n\t* Hostname of the S3 instance.\n\t*/\n\thost;\n\t/**\n\t* Name of the S3 bucket.\n\t*/\n\tbucket;\n\t/**\n\t* Path of the S3 object.\n\t*/\n\tpath;\n\tconstructor(host, path, options) {\n\t\tsuper(`Object \\`${path}\\` was not found in bucket \\`${host}\\``, options);\n\t\tthis.host = options.host;\n\t\tthis.bucket = options.bucket;\n\t\tthis.path = path;\n\t}\n};\nvar ObjectNotAccessibleError = class extends S3Error {\n\tstatic name = \"ObjectNotAccessibleError\";\n\t/**\n\t* Hostname of the S3 instance.\n\t*/\n\thost;\n\t/**\n\t* Name of the S3 bucket.\n\t*/\n\tbucket;\n\t/**\n\t* Path of the S3 object.\n\t*/\n\tpath;\n\tconstructor(host, path, options) {\n\t\tsuper(`Unable to access object \\`${path}\\` in bucket \\`${host}\\``, options);\n\t\tthis.host = options.host;\n\t\tthis.bucket = options.bucket;\n\t\tthis.path = path;\n\t}\n};\n\n//#endregion\n//#region src/s3-client/index.ts\nvar S3Client = class S3Client {\n\tstatic name = \"s3-client\";\n\t/**\n\t* Internal `AwsClient` instance used to sign requests.\n\t*/\n\taws;\n\t/**\n\t* S3 instance host.\n\t*/\n\thost;\n\t/**\n\t* S3 bucket name, serving as a default bucket for all operations.\n\t*/\n\tbucket;\n\t/**\n\t* `Logger` instance to use for logging.\n\t*/\n\tlogger = null;\n\tconstructor(config) {\n\t\tthis.aws = new AwsClient({\n\t\t\taccessKeyId: config.accessKeyId,\n\t\t\tsecretAccessKey: config.secretAccessKey,\n\t\t\tservice: \"s3\"\n\t\t});\n\t\tthis.host = config.host;\n\t\tthis.bucket = config.bucket;\n\t\tthis.logger = config.logger ?? null;\n\t}\n\t/**\n\t* Send a `HEAD` request to the configured bucket to verify that it exists\n\t* and that it is accessible.\n\t*\n\t* @param opts.operation Operation to associate with the request.\n\t*\n\t* @returns Promise resolving when the bucket access has been validated.\n\t*\n\t* @throws `BucketNotAccessibleError` if the bucket is not accessible.\n\t* @throws `BucketNotFoundError` if the bucket does not exist.\n\t* @throws `Error` if an unknown error occurs.\n\t*/\n\theadBucket = async (opts) => {\n\t\tconst trace = opts?.trace ?? crypto.randomUUID();\n\t\tconst operation = new Operation({ trace });\n\t\tawait this.aws.fetch(this.host, { method: \"HEAD\" }).then(async (res) => {\n\t\t\tif (res.status === 401 || res.status === 403) throw new BucketNotAccessibleError(this.host, {\n\t\t\t\traw: await res.text(),\n\t\t\t\tstatus: res.status,\n\t\t\t\tstatusText: res.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket: this.bucket\n\t\t\t});\n\t\t\tif (res.status === 404) throw new BucketNotFoundError(this.host, {\n\t\t\t\traw: await res.text(),\n\t\t\t\tstatus: res.status,\n\t\t\t\tstatusText: res.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket: this.bucket\n\t\t\t});\n\t\t\tif (res.status !== 200) {\n\t\t\t\tthis.logger?.warn(await res.text());\n\t\t\t\tthrow new S3Error(`Error validating bucket access (${res.status} ${res.statusText})`, {\n\t\t\t\t\traw: await res.text(),\n\t\t\t\t\tstatus: res.status,\n\t\t\t\t\tstatusText: res.statusText\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res;\n\t\t});\n\t\tthis.logger?.debug(\"validated bucket access\", {\n\t\t\tmodule: S3Client.name,\n\t\t\ttrace,\n\t\t\tdur: formatDuration(operation.duration),\n\t\t\thost: this.host,\n\t\t\tbucket: this.bucket\n\t\t});\n\t};\n\t/**\n\t* Lists all objects in a bucket.\n\t*\n\t* Recursively paginates through the bucket until all objects have\n\t* been retrieved.\n\t*\n\t* @param prefix Optional prefix to filter objects by.\n\t* @param delimiter Optional delimiter to group objects by.\n\t* @param opts.operation Operation to associate with the request.\n\t*\n\t* @returns Promise resolving an array of paths of found objects.\n\t*\n\t* @throws `BucketNotAccessibleError` if the bucket is not accessible.\n\t* @throws `BucketNotFoundError` if the bucket does not exist.\n\t* @throws `Error` if an unknown error occurs.\n\t*/\n\tlistObjects = async (prefix, delimiter, opts) => {\n\t\tconst trace = opts?.trace ?? crypto.randomUUID();\n\t\tconst operation = new Operation({ trace });\n\t\tconst paths = new Set();\n\t\tconst params = new URLSearchParams();\n\t\tparams.set(\"list-type\", \"2\");\n\t\tif (prefix) params.set(\"prefix\", prefix);\n\t\tif (delimiter) params.set(\"delimiter\", delimiter);\n\t\tlet continuationToken = null;\n\t\tlet page = 0;\n\t\tdo {\n\t\t\tpage++;\n\t\t\tif (continuationToken) params.set(\"continuation-token\", continuationToken);\n\t\t\telse params.delete(\"continuation-token\");\n\t\t\tconst res = await this.aws.fetch(`${this.host}?${params.toString()}`).then(async (res$1) => {\n\t\t\t\tif (res$1.status === 401 || res$1.status === 403) throw new BucketNotAccessibleError(this.host, {\n\t\t\t\t\traw: await res$1.text(),\n\t\t\t\t\tstatus: res$1.status,\n\t\t\t\t\tstatusText: res$1.statusText,\n\t\t\t\t\thost: this.host,\n\t\t\t\t\tbucket: this.bucket\n\t\t\t\t});\n\t\t\t\tif (res$1.status === 404) throw new BucketNotFoundError(this.host, {\n\t\t\t\t\traw: await res$1.text(),\n\t\t\t\t\tstatus: res$1.status,\n\t\t\t\t\tstatusText: res$1.statusText,\n\t\t\t\t\thost: this.host,\n\t\t\t\t\tbucket: this.bucket\n\t\t\t\t});\n\t\t\t\tif (res$1.status >= 400) {\n\t\t\t\t\tthis.logger?.warn(await res$1.text());\n\t\t\t\t\tthrow new S3Error(`Error listing objects. (${res$1.status} ${res$1.statusText})`, {\n\t\t\t\t\t\traw: await res$1.text(),\n\t\t\t\t\t\tstatus: res$1.status,\n\t\t\t\t\t\tstatusText: res$1.statusText\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn res$1;\n\t\t\t}).then((res$1) => res$1.text()).then((text) => new XMLParser().parse(text));\n\t\t\tcontinuationToken = res.ListBucketResult.NextContinuationToken?.[0] ?? null;\n\t\t\tif (res.ListBucketResult.Contents) for (const content of Array.isArray(res.ListBucketResult.Contents) ? res.ListBucketResult.Contents : [res.ListBucketResult.Contents]) paths.add(content.Key);\n\t\t\tif (res.ListBucketResult.CommonPrefixes) for (const prefix$1 of Array.isArray(res.ListBucketResult.CommonPrefixes) ? res.ListBucketResult.CommonPrefixes : [res.ListBucketResult.CommonPrefixes]) paths.add(prefix$1.Prefix);\n\t\t\tthis.logger?.debug(`listed objects (page ${page})`, {\n\t\t\t\tmodule: S3Client.name,\n\t\t\t\ttrace,\n\t\t\t\tdur: formatDuration(operation.duration),\n\t\t\t\thost: this.host,\n\t\t\t\tbucket: this.bucket,\n\t\t\t\tprefix,\n\t\t\t\tdelimiter,\n\t\t\t\tcount: paths.size.toString()\n\t\t\t});\n\t\t} while (continuationToken);\n\t\tthis.logger?.debug(\"listed objects\", {\n\t\t\tmodule: S3Client.name,\n\t\t\ttrace,\n\t\t\tdur: formatDuration(operation.duration),\n\t\t\thost: this.host,\n\t\t\tbucket: this.bucket,\n\t\t\tprefix,\n\t\t\tdelimiter,\n\t\t\tcount: paths.size.toString()\n\t\t});\n\t\treturn Array.from(paths);\n\t};\n\t/**\n\t* Get the metadata of a specific object.\n\t*\n\t* @param selector Object selector.\n\t* @param opts.operation Operation to associate with the request.\n\t*\n\t* If `opts.expected` is set to `false` (default is `true`), the object will\n\t* not be expected to exist and no error will be thrown if it does not.\n\t*\n\t* @returns Promise resolving the metadata of the object.\n\t*\n\t* @throws `ObjectNotAccessibleError` if the object is not accessible.\n\t* @throws `ObjectNotFoundError` if the object does not exist.\n\t* @throws `Error` if an unknown error occurs.\n\t*/\n\theadObject = async (selector, opts) => {\n\t\tconst trace = opts?.trace ?? crypto.randomUUID();\n\t\tconst operation = new Operation({ trace });\n\t\tconst bucket = selector.bucket ?? this.bucket;\n\t\tconst res = await this.aws.fetch(`${this.host}/${selector.key}`, { method: \"HEAD\" }).then(async (res$1) => {\n\t\t\tif (res$1.status === 401 || res$1.status === 403) throw new ObjectNotAccessibleError(this.host, selector.key, {\n\t\t\t\traw: await res$1.text(),\n\t\t\t\tstatus: res$1.status,\n\t\t\t\tstatusText: res$1.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket,\n\t\t\t\tpath: selector.key\n\t\t\t});\n\t\t\tif (res$1.status === 404) throw new ObjectNotFoundError(this.host, selector.key, {\n\t\t\t\traw: await res$1.text(),\n\t\t\t\tstatus: res$1.status,\n\t\t\t\tstatusText: res$1.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket,\n\t\t\t\tpath: selector.key\n\t\t\t});\n\t\t\tif (res$1.status >= 400) {\n\t\t\t\tthis.logger?.warn(await res$1.text());\n\t\t\t\tthrow new S3Error(`Error fetching metadata of object \\`${selector.key}\\`. (${res$1.status} ${res$1.statusText})`, {\n\t\t\t\t\traw: await res$1.text(),\n\t\t\t\t\tstatus: res$1.status,\n\t\t\t\t\tstatusText: res$1.statusText\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res$1;\n\t\t}).then((res$1) => res$1.headers.toJSON());\n\t\tthis.logger?.debug(\"retrieved object metadata\", {\n\t\t\tmodule: S3Client.name,\n\t\t\ttrace,\n\t\t\tdur: formatDuration(operation.duration),\n\t\t\thost: this.host,\n\t\t\tbucket,\n\t\t\tobject: selector.key\n\t\t});\n\t\treturn res;\n\t};\n\t/**\n\t* Get the binary contents of a specific object.\n\t*\n\t* @param selector Object selector.\n\t* @param opts.operation Operation to associate with the request.\n\t*\n\t* @returns Promise resolving the binary contents of the object.\n\t*\n\t* @throws `ObjectNotAccessibleError` if the object is not accessible.\n\t* @throws `ObjectNotFoundError` if the object does not exist.\n\t* @throws `Error` if an unknown error occurs.\n\t*/\n\tgetObject = async (selector, opts) => {\n\t\tconst trace = opts?.trace ?? crypto.randomUUID();\n\t\tconst operation = new Operation({ trace });\n\t\tconst bucket = selector.bucket ?? this.bucket;\n\t\tconst res = await this.aws.fetch(`${this.host}/${selector.key}`, { method: \"GET\" }).then(async (res$1) => {\n\t\t\tif (res$1.status === 401 || res$1.status === 403) throw new ObjectNotAccessibleError(this.host, selector.key, {\n\t\t\t\traw: await res$1.text(),\n\t\t\t\tstatus: res$1.status,\n\t\t\t\tstatusText: res$1.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket,\n\t\t\t\tpath: selector.key\n\t\t\t});\n\t\t\tif (res$1.status === 404) throw new ObjectNotFoundError(this.host, selector.key, {\n\t\t\t\traw: await res$1.text(),\n\t\t\t\tstatus: res$1.status,\n\t\t\t\tstatusText: res$1.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket,\n\t\t\t\tpath: selector.key\n\t\t\t});\n\t\t\tif (res$1.status >= 400) {\n\t\t\t\tthis.logger?.warn(await res$1.text());\n\t\t\t\tthrow new S3Error(`Error getting object \\`${selector.key}\\` from bucket \\`${bucket}\\`. (${res$1.status} ${res$1.statusText})`, {\n\t\t\t\t\traw: await res$1.text(),\n\t\t\t\t\tstatus: res$1.status,\n\t\t\t\t\tstatusText: res$1.statusText\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res$1;\n\t\t}).then((res$1) => {\n\t\t\tconst length = Number(res$1.headers.get(\"content-length\") ?? Number.NaN);\n\t\t\tif (Number.isNaN(length)) throw new Error(\"Unable to read `Content-Length` header\");\n\t\t\treturn new ByteStream(res$1.body, { length });\n\t\t});\n\t\tthis.logger?.debug(\"retrieved object contents\", {\n\t\t\tmodule: S3Client.name,\n\t\t\ttrace,\n\t\t\tdur: formatDuration(operation.duration),\n\t\t\thost: this.host,\n\t\t\tbucket,\n\t\t\tobject: selector.key,\n\t\t\tsize: res.length.toString()\n\t\t});\n\t\treturn res;\n\t};\n\t/**\n\t* Put a specific object.\n\t*\n\t* @param selector Object selector.\n\t* @param contents Contents of the object.\n\t* @param opts.operation Operation to associate with the request.\n\t*\n\t* @returns Promise resolving when the object has been put.\n\t*\n\t* @throws `ObjectNotAccessibleError` if the object is not accessible.\n\t* @throws `Error` if an unknown error occurs.\n\t*/\n\tputObject = async (selector, contents, opts) => {\n\t\tconst trace = opts?.trace ?? crypto.randomUUID();\n\t\tconst operation = new Operation({ trace });\n\t\tconst bucket = selector.bucket ?? this.bucket;\n\t\tconst stream = trackProgress(contents, { progress: ({ processed, total, percent, duration, eta }) => {\n\t\t\tthis.logger?.debug(`uploading object contents (${formatBytes(processed)}/${formatBytes(total)}, ${percent.toFixed(2)}%${eta ? `, ${formatDuration(eta)} remaining` : \"\"})`, {\n\t\t\t\tmodule: S3Client.name,\n\t\t\t\ttrace,\n\t\t\t\tdur: formatDuration(duration),\n\t\t\t\thost: this.host,\n\t\t\t\tbucket,\n\t\t\t\tpath: selector.key,\n\t\t\t\tobject: selector.key,\n\t\t\t\tprocessed: processed.toString(),\n\t\t\t\ttotal: total.toString(),\n\t\t\t\tpercent: percent.toFixed(2)\n\t\t\t});\n\t\t} });\n\t\tconst binary = await byteStreamToBinary(stream);\n\t\tconst buffer = uint8ArrayToArrayBuffer(binary);\n\t\tawait this.aws.fetch(`${this.host}/${selector.key}`, {\n\t\t\tmethod: \"PUT\",\n\t\t\tbody: buffer,\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/octet-stream\",\n\t\t\t\t\"Content-Length\": buffer.byteLength.toString()\n\t\t\t}\n\t\t}).then(async (res) => {\n\t\t\tif (res.status === 401 || res.status === 403) throw new ObjectNotAccessibleError(this.host, selector.key, {\n\t\t\t\traw: await res.text(),\n\t\t\t\tstatus: res.status,\n\t\t\t\tstatusText: res.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket,\n\t\t\t\tpath: selector.key\n\t\t\t});\n\t\t\tif (res.status >= 400) {\n\t\t\t\tthis.logger?.warn(await res.text());\n\t\t\t\tthrow new S3Error(`Error uploading object \\`${selector.key}\\` to bucket \\`${bucket}\\`. (${res.status} ${res.statusText})`, {\n\t\t\t\t\traw: await res.text(),\n\t\t\t\t\tstatus: res.status,\n\t\t\t\t\tstatusText: res.statusText\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res;\n\t\t});\n\t\tthis.logger?.debug(\"uploaded object contents\", {\n\t\t\tmodule: S3Client.name,\n\t\t\ttrace,\n\t\t\tdur: formatDuration(operation.duration),\n\t\t\thost: this.host,\n\t\t\tbucket,\n\t\t\tobject: selector.key,\n\t\t\tsize: contents.length.toString()\n\t\t});\n\t};\n\t/**\n\t* Copy a specific object from one location to another.\n\t*\n\t* @param source Source object selector.\n\t* @param target Target object selector.\n\t* @param opts.operation Operation to associate with the request.\n\t*\n\t* @returns Promise resolving when the object has been copied.\n\t*\n\t* @throws `ObjectNotAccessibleError` if the object is not accessible.\n\t* @throws `Error` if an unknown error occurs.\n\t*/\n\tcopyObject = async (source, target, opts) => {\n\t\tconst trace = opts?.trace ?? crypto.randomUUID();\n\t\tconst operation = new Operation({ trace });\n\t\tconst sourceBucket = source.bucket ?? this.bucket;\n\t\tconst targetBucket = target.bucket ?? this.bucket;\n\t\tawait this.aws.fetch(`${this.host}/${target.key}`, {\n\t\t\tmethod: \"PUT\",\n\t\t\theaders: { \"x-amz-copy-source\": `/${sourceBucket}/${source.key}` }\n\t\t}).then(async (res) => {\n\t\t\tif (res.status === 401 || res.status === 403) throw new ObjectNotAccessibleError(this.host, source.key, {\n\t\t\t\traw: await res.text(),\n\t\t\t\tstatus: res.status,\n\t\t\t\tstatusText: res.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket: sourceBucket,\n\t\t\t\tpath: source.key\n\t\t\t});\n\t\t\tif (res.status === 404) throw new ObjectNotFoundError(this.host, source.key, {\n\t\t\t\traw: await res.text(),\n\t\t\t\tstatus: res.status,\n\t\t\t\tstatusText: res.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket: sourceBucket,\n\t\t\t\tpath: source.key\n\t\t\t});\n\t\t\tif (res.status >= 400) {\n\t\t\t\tthis.logger?.warn(await res.text());\n\t\t\t\tthrow new S3Error(`Error copying object \\`${sourceBucket}/${source.key}\\` to \\`${targetBucket}/${target.key}\\`. (${res.status} ${res.statusText})`, {\n\t\t\t\t\traw: await res.text(),\n\t\t\t\t\tstatus: res.status,\n\t\t\t\t\tstatusText: res.statusText\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res;\n\t\t});\n\t\tthis.logger?.debug(\"copied object\", {\n\t\t\tmodule: S3Client.name,\n\t\t\ttrace,\n\t\t\tdur: formatDuration(operation.duration),\n\t\t\thost: this.host,\n\t\t\tsource_bucket: sourceBucket,\n\t\t\tsource_object: source.key,\n\t\t\ttarget_bucket: targetBucket,\n\t\t\ttarget_object: target.key\n\t\t});\n\t};\n\t/**\n\t* Delete a specific object.\n\t*\n\t* @param selector Object selector.\n\t* @param opts.operation Operation to associate with the request.\n\t*\n\t* @returns Promise resolving when the object has been deleted.\n\t*\n\t* @throws `ObjectNotAccessibleError` if the object is not accessible.\n\t* @throws `Error` if an unknown error occurs.\n\t*/\n\tdeleteObject = async (selector, opts) => {\n\t\tconst trace = opts?.trace ?? crypto.randomUUID();\n\t\tconst operation = new Operation({ trace });\n\t\tconst bucket = selector.bucket ?? this.bucket;\n\t\tawait this.aws.fetch(`${this.host}/${selector.key}`, { method: \"DELETE\" }).then(async (res) => {\n\t\t\tif (res.status === 401 || res.status === 403) throw new ObjectNotAccessibleError(this.host, selector.key, {\n\t\t\t\traw: await res.text(),\n\t\t\t\tstatus: res.status,\n\t\t\t\tstatusText: res.statusText,\n\t\t\t\thost: this.host,\n\t\t\t\tbucket,\n\t\t\t\tpath: selector.key\n\t\t\t});\n\t\t\tif (res.status >= 400) {\n\t\t\t\tthis.logger?.warn(await res.text());\n\t\t\t\tthrow new S3Error(`Error deleting object \\`${bucket}/${selector.key}\\`. (${res.status} ${res.statusText})`, {\n\t\t\t\t\traw: await res.text(),\n\t\t\t\t\tstatus: res.status,\n\t\t\t\t\tstatusText: res.statusText\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res;\n\t\t});\n\t\tthis.logger?.debug(\"deleted object\", {\n\t\t\tmodule: S3Client.name,\n\t\t\ttrace,\n\t\t\tdur: formatDuration(operation.duration),\n\t\t\thost: this.host,\n\t\t\tbucket,\n\t\t\tobject: selector.key\n\t\t});\n\t};\n};\n\n//#endregion\nexport { BucketNotAccessibleError, BucketNotFoundError, ObjectNotAccessibleError, ObjectNotFoundError, S3Client, S3Error };"],"names":["defaultOptions","METADATA_SYMBOL","xmlNode","S3Client"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10]}