UNPKG

parse-domain

Version:

Splits a hostname into subdomains, domain and (effective) top-level domains

1 lines 2.06 kB
{"version":3,"file":"from-url.js","sourceRoot":"","sources":["../src/from-url.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAC5C,MAAM,kBAAkB,GACtB,wDAAwD,CAAC;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAkB,MAAM,CAAC,aAAa,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;IACzC,0BAA0B;IAC1B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,yHAAyH,CAC1H,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,gDAAgD;IAChD,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,QAAQ,OAAO,EAAE;QACnB,CAAC,CAAC,wDAAwD;YACxD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBACvB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;oBACxB,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC;IAE5B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC,CAAC","sourcesContent":["const urlPattern = /^[a-z][*+.a-z-]+:\\/\\//i;\nconst invalidIpv6Pattern =\n /^([a-z][*+.a-z-]+:\\/\\/)([^[][^/?]*:[^/?]*:[^/?]*)(.*)/i;\n\nexport const NO_HOSTNAME: unique symbol = Symbol(\"NO_HOSTNAME\");\n\nexport const fromUrl = (urlLike: string) => {\n /* istanbul ignore next */\n if (typeof URL !== \"function\") {\n throw new Error(\n \"Looks like the new URL() constructor is not globally available in your environment. Please make sure to use a polyfill.\",\n );\n }\n\n // Extra check for non-TypeScript users\n if (typeof urlLike !== \"string\") {\n return NO_HOSTNAME;\n }\n\n // URLs that start with // are protocol relative\n let url = urlLike.startsWith(\"//\")\n ? `http:${urlLike}`\n : // URLs that start with / do not have a hostname section\n urlLike.startsWith(\"/\")\n ? urlLike\n : urlPattern.test(urlLike)\n ? urlLike\n : `http://${urlLike}`;\n\n url = url.replace(invalidIpv6Pattern, \"$1[$2]$3\");\n\n try {\n return new URL(url).hostname;\n } catch {\n return NO_HOSTNAME;\n }\n};\n"]}