A lightweight JavaScript library for parsing RFC 1738 compliant Uniform Resource Locators (URLs).
Parses any RFC 1738 compliant url, including localhost and ftp urls.
The above Syntax diagram from Wikipedia visualizes the supported structure of urls for this module.
Parses parts of an url.
Note: If a non-valid url is passed, it will return null
.
Note: Urls need to have at least a protocol
and a host
part
- String
url
: The url to be parsed.
- Object An object containing the following fields:
protocol
(String): The protocol.username
(null|String): The username of urls with userinfo (e.g. FTP urls).password
(null|String): The password of urls with userinfo (e.g. FTP urls).host
(String): Full host (subDomains + rootDomain + topLevelDomain).subDomains
(null|String): Comma-separated list of subDomainsrootDomain
(String): The rootDomain of the url.topLevelDomain
(null|String): The topLevelDomain of the url.port
(null|Number): The port of the url.path
(String): Full path of the url, without query params of fragment.queryParams
(null|String): Query parameters of the url.fragment
(null|String): Fragment of the url, without leading "#".
import { parseUrlParts } from "parse-url-parts"
const url = "https://foo:[email protected]:80/path/deeper-path?q=amazingQuery#id"
console.log(parseUrlParts(url))
// { protocol: 'https',
// username: 'foo',
// password: 'bar',
// host: 'www.example.com',
// subDomains: 'www',
// rootDomain: 'example',
// topLevelDomain: 'com',
// port: 80,
// path: '/path/deeper-path',
// queryParams: 'q=amazingquery',
// fragment: 'id' }
If any non-required part is not found, its value will be null
:
import { parseUrlParts } from "parse-url-parts"
const url = "https://example.com"
console.log(parseUrlParts(url))
// { protocol: 'https',
// username: null,
// password: null,
// host: 'example.com',
// subDomains: null,
// rootDomain: 'example',
// topLevelDomain: 'com',
// port: null,
// path: "",
// queryParams: null,
// fragment: null }
Contributions and/or critics are welcome! Just open pull requests and issues on things that matter to you!
$ npm run jest