File: //opt/LibreChat/node_modules/node-stdlib-browser/cjs/proxy/url.js.map
{"version":3,"file":"url.js","sources":["../../node_modules/url/util.js","../../node_modules/url/url.js","../../node_modules/rollup-plugin-node-builtins/src/es6/path.js","../../proxy/url.js"],"sourcesContent":["'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexport function resolve() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : '/';\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexport function normalize(path) {\n var isPathAbsolute = isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isPathAbsolute).join('/');\n\n if (!path && !isPathAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexport function isAbsolute(path) {\n return path.charAt(0) === '/';\n}\n\n// posix version\nexport function join() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n}\n\n\n// path.relative(from, to)\n// posix version\nexport function relative(from, to) {\n from = resolve(from).substr(1);\n to = resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\nexport var sep = '/';\nexport var delimiter = ':';\n\nexport function dirname(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\nexport function basename(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n}\n\n\nexport function extname(path) {\n return splitPath(path)[3];\n}\nexport default {\n extname: extname,\n basename: basename,\n dirname: dirname,\n sep: sep,\n delimiter: delimiter,\n relative: relative,\n join: join,\n isAbsolute: isAbsolute,\n normalize: normalize,\n resolve: resolve\n};\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b' ?\n function (str, start, len) { return str.substr(start, len) } :\n function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","/* globals unknown */\n\n/**\n * @typedef {import('url').URLFormatOptions} URLFormatOptions\n * @typedef {import('url').UrlObject} UrlObject\n * @typedef {import('url').format} formatImport\n * @typedef {import('url').parse} parseImport\n * @typedef {import('url').resolve} resolveImport\n * @typedef {import('url').Url} UrlImport\n * @typedef {import('url').fileURLToPath} fileURLToPath\n * @typedef {import('url').pathToFileURL} pathToFileURL\n * @typedef {import('url').domainToUnicode} domainToUnicode\n * @typedef {import('url').domainToASCII} domainToASCII\n */\n\n// @ts-ignore\nimport { format, parse, resolve, resolveObject, Url } from 'url';\nimport { resolve as pathResolve } from 'path';\n\nconst formatImport = /** @type {formatImport}*/ (format);\nconst parseImport = /** @type {parseImport}*/ (parse);\nconst resolveImport = /** @type {resolveImport}*/ (resolve);\n// @ts-ignore\nconst UrlImport = /** @type {UrlImport}*/ (Url);\n\nconst URL = globalThis.URL;\n/* eslint-disable-next-line unicorn/prevent-abbreviations */\nconst URLSearchParams = globalThis.URLSearchParams;\n\nconst percentRegEx = /%/g;\nconst backslashRegEx = /\\\\/g;\nconst newlineRegEx = /\\n/g;\nconst carriageReturnRegEx = /\\r/g;\nconst tabRegEx = /\\t/g;\nconst CHAR_FORWARD_SLASH = 47;\n\n/**\n * @param {unknown} instance\n */\nfunction isURLInstance(instance) {\n\tconst resolved = /** @type {URL|null} */ (instance ?? null);\n\treturn Boolean(resolved !== null && resolved?.href && resolved?.origin);\n}\n\n/**\n * @param {URL} url\n */\nfunction getPathFromURLPosix(url) {\n\tif (url.hostname !== '') {\n\t\tthrow new TypeError(\n\t\t\t`File URL host must be \"localhost\" or empty on browser`\n\t\t);\n\t}\n\tconst pathname = url.pathname;\n\tfor (let n = 0; n < pathname.length; n++) {\n\t\tif (pathname[n] === '%') {\n\t\t\t// @ts-ignore\n\t\t\tconst third = pathname.codePointAt(n + 2) | 0x20;\n\t\t\tif (pathname[n + 1] === '2' && third === 102) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t'File URL path must not include encoded / characters'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\treturn decodeURIComponent(pathname);\n}\n\n/**\n * @param {string} filepath\n */\nfunction encodePathChars(filepath) {\n\tif (filepath.includes('%')) {\n\t\tfilepath = filepath.replace(percentRegEx, '%25');\n\t}\n\tif (filepath.includes('\\\\')) {\n\t\tfilepath = filepath.replace(backslashRegEx, '%5C');\n\t}\n\tif (filepath.includes('\\n')) {\n\t\tfilepath = filepath.replace(newlineRegEx, '%0A');\n\t}\n\tif (filepath.includes('\\r')) {\n\t\tfilepath = filepath.replace(carriageReturnRegEx, '%0D');\n\t}\n\tif (filepath.includes('\\t')) {\n\t\tfilepath = filepath.replace(tabRegEx, '%09');\n\t}\n\treturn filepath;\n}\n\nconst domainToASCII =\n\t/**\n\t * @type {domainToASCII}\n\t */\n\tfunction (domain) {\n\t\tif (typeof domain === 'undefined') {\n\t\t\tthrow new TypeError('The \"domain\" argument must be specified');\n\t\t}\n\t\treturn new URL(`http://${domain}`).hostname;\n\t};\n\nconst domainToUnicode =\n\t/**\n\t * @type {domainToUnicode}\n\t */\n\tfunction (domain) {\n\t\tif (typeof domain === 'undefined') {\n\t\t\tthrow new TypeError('The \"domain\" argument must be specified');\n\t\t}\n\t\treturn new URL(`http://${domain}`).hostname;\n\t};\n\nconst pathToFileURL =\n\t/**\n\t * @type {(url: string) => URL}\n\t */\n\tfunction (filepath) {\n\t\tconst outURL = new URL('file://');\n\t\tlet resolved = pathResolve(filepath);\n\t\tconst filePathLast = filepath.charCodeAt(filepath.length - 1);\n\t\tif (\n\t\t\tfilePathLast === CHAR_FORWARD_SLASH &&\n\t\t\tresolved[resolved.length - 1] !== '/'\n\t\t) {\n\t\t\tresolved += '/';\n\t\t}\n\t\toutURL.pathname = encodePathChars(resolved);\n\t\treturn outURL;\n\t};\n\nconst fileURLToPath =\n\t/**\n\t * @type {fileURLToPath & ((path: string | URL) => string)}\n\t */\n\tfunction (path) {\n\t\tif (!isURLInstance(path) && typeof path !== 'string') {\n\t\t\tthrow new TypeError(\n\t\t\t\t`The \"path\" argument must be of type string or an instance of URL. Received type ${typeof path} (${path})`\n\t\t\t);\n\t\t}\n\t\tconst resolved = new URL(path);\n\t\tif (resolved.protocol !== 'file:') {\n\t\t\tthrow new TypeError('The URL must be of scheme file');\n\t\t}\n\t\treturn getPathFromURLPosix(resolved);\n\t};\n\nconst formatImportWithOverloads =\n\t/**\n\t * @type {(\n\t * ((urlObject: URL, options?: URLFormatOptions) => string) &\n\t * ((urlObject: UrlObject | string, options?: never) => string)\n\t * )}\n\t */\n\tfunction (urlObject, options = {}) {\n\t\tif (!(urlObject instanceof URL)) {\n\t\t\treturn formatImport(urlObject);\n\t\t}\n\n\t\tif (typeof options !== 'object' || options === null) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'The \"options\" argument must be of type object.'\n\t\t\t);\n\t\t}\n\n\t\tconst auth = options.auth ?? true;\n\t\tconst fragment = options.fragment ?? true;\n\t\tconst search = options.search ?? true;\n\t\tconst unicode = options.unicode ?? false;\n\n\t\tconst parsed = new URL(urlObject.toString());\n\n\t\tif (!auth) {\n\t\t\tparsed.username = '';\n\t\t\tparsed.password = '';\n\t\t}\n\n\t\tif (!fragment) {\n\t\t\tparsed.hash = '';\n\t\t}\n\n\t\tif (!search) {\n\t\t\tparsed.search = '';\n\t\t}\n\n\t\tif (unicode) {\n\t\t\t// Not implemented\n\t\t}\n\n\t\treturn parsed.toString();\n\t};\n\nconst api = {\n\tformat: formatImportWithOverloads,\n\tparse: parseImport,\n\tresolve: resolveImport,\n\tresolveObject,\n\tUrl: UrlImport,\n\tURL,\n\tURLSearchParams,\n\tdomainToASCII,\n\tdomainToUnicode,\n\tpathToFileURL,\n\tfileURLToPath\n};\n\nexport default api;\n\nexport {\n\tformatImportWithOverloads as format,\n\tparseImport as parse,\n\tresolveImport as resolve,\n\tresolveObject,\n\tUrlImport as Url,\n\tURL,\n\tURLSearchParams,\n\tdomainToASCII,\n\tdomainToUnicode,\n\tpathToFileURL,\n\tfileURLToPath\n};\n"],"names":["util","require$$0","require$$1","require$$2","formatImport","format","parseImport","parse","resolveImport","resolve","UrlImport","Url","URL","URLSearchParams","percentRegEx","backslashRegEx","newlineRegEx","carriageReturnRegEx","tabRegEx","CHAR_FORWARD_SLASH","isURLInstance","instance","resolved","Boolean","href","origin","getPathFromURLPosix","url","hostname","TypeError","pathname","n","length","third","codePointAt","decodeURIComponent","encodePathChars","filepath","includes","replace","domainToASCII","domain","domainToUnicode","pathToFileURL","outURL","pathResolve","filePathLast","charCodeAt","fileURLToPath","path","protocol","formatImportWithOverloads","urlObject","options","auth","fragment","search","parsed","toString","username","password","hash","api","resolveObject"],"mappings":"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"}