{"ast":null,"code":"// 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//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = 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.\nconst protocolPattern = /^([a-z0-9.+-]+:)/i;\nconst portPattern = /:[0-9]*$/;\n\n// Special case for a simple path URL\n/* eslint-disable-next-line no-useless-escape */\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/;\n\n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\nconst delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'];\n\n// RFC 2396: characters not allowed for various reasons.\nconst unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims);\n\n// Allowed by RFCs, but cause of XSS attacks. Always escape these.\nconst 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.\nconst nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape);\nconst hostEndingChars = ['/', '?', '#'];\nconst hostnameMaxLen = 255;\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/;\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/;\n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n// protocols that never have a hostname.\nconst hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n};\n// protocols that always contain a // bit.\nconst 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};\nfunction urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) return url;\n const u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n}\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n let lowerProto, hec, slashes;\n let rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n const simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n return this;\n }\n }\n let proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\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 /* eslint-disable-next-line no-useless-escape */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\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 let hostEnd = -1;\n for (let i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\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 let 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 = auth;\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (let i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\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 if (rest[hostEnd - 1] === ':') {\n hostEnd--;\n }\n const host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost(host);\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 const ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n const hostparts = this.hostname.split(/\\./);\n for (let i = 0, l = hostparts.length; i < l; i++) {\n const part = hostparts[i];\n if (!part) {\n continue;\n }\n if (!part.match(hostnamePartPattern)) {\n let newpart = '';\n for (let 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 const validParts = hostparts.slice(0, i);\n const notHost = hostparts.slice(i + 1);\n const 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 if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n }\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 }\n }\n\n // chop off from the tail first.\n const 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 const qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n if (rest) {\n this.pathname = rest;\n }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '';\n }\n return this;\n};\nUrl.prototype.parseHost = function (host) {\n let 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) {\n this.hostname = host;\n }\n};\nexport default urlParse;","map":{"version":3,"names":["Url","protocol","slashes","auth","port","hostname","hash","search","pathname","protocolPattern","portPattern","simplePathPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","hostlessProtocol","javascript","slashedProtocol","http","https","ftp","gopher","file","urlParse","url","slashesDenoteHost","u","parse","prototype","lowerProto","hec","rest","trim","split","length","simplePath","exec","proto","toLowerCase","substr","match","hostEnd","i","indexOf","atSign","lastIndexOf","slice","host","parseHost","ipv6Hostname","hostparts","l","part","newpart","j","k","charCodeAt","validParts","notHost","bit","push","unshift","join","qm"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/mdurl/lib/parse.mjs"],"sourcesContent":["// 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//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url () {\n this.protocol = null\n this.slashes = null\n this.auth = null\n this.port = null\n this.hostname = null\n this.hash = null\n this.search = null\n this.pathname = 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.\nconst protocolPattern = /^([a-z0-9.+-]+:)/i\nconst portPattern = /:[0-9]*$/\n\n// Special case for a simple path URL\n/* eslint-disable-next-line no-useless-escape */\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/\n\n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\nconst delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t']\n\n// RFC 2396: characters not allowed for various reasons.\nconst unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims)\n\n// Allowed by RFCs, but cause of XSS attacks. Always escape these.\nconst 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.\nconst nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape)\nconst hostEndingChars = ['/', '?', '#']\nconst hostnameMaxLen = 255\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/\n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n// protocols that never have a hostname.\nconst hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n}\n// protocols that always contain a // bit.\nconst 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\nfunction urlParse (url, slashesDenoteHost) {\n if (url && url instanceof Url) return url\n\n const u = new Url()\n u.parse(url, slashesDenoteHost)\n return u\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n let lowerProto, hec, slashes\n let 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 const simplePath = simplePathPattern.exec(rest)\n if (simplePath) {\n this.pathname = simplePath[1]\n if (simplePath[2]) {\n this.search = simplePath[2]\n }\n return this\n }\n }\n\n let proto = protocolPattern.exec(rest)\n if (proto) {\n proto = proto[0]\n lowerProto = proto.toLowerCase()\n this.protocol = proto\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 /* eslint-disable-next-line no-useless-escape */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n 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 // 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 let hostEnd = -1\n for (let i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\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 let 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 = auth\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1\n for (let i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\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\n if (rest[hostEnd - 1] === ':') { hostEnd-- }\n const host = rest.slice(0, hostEnd)\n rest = rest.slice(hostEnd)\n\n // pull out port.\n this.parseHost(host)\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 const ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']'\n\n // validate a little.\n if (!ipv6Hostname) {\n const hostparts = this.hostname.split(/\\./)\n for (let i = 0, l = hostparts.length; i < l; i++) {\n const part = hostparts[i]\n if (!part) { continue }\n if (!part.match(hostnamePartPattern)) {\n let newpart = ''\n for (let 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 const validParts = hostparts.slice(0, i)\n const notHost = hostparts.slice(i + 1)\n const 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 }\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 }\n }\n\n // chop off from the tail first.\n const 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 const qm = rest.indexOf('?')\n if (qm !== -1) {\n this.search = rest.substr(qm)\n rest = rest.slice(0, qm)\n }\n if (rest) { this.pathname = rest }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = ''\n }\n\n return this\n}\n\nUrl.prototype.parseHost = function (host) {\n let 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\nexport default urlParse\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}