2.0.3 • Published 4 years ago

parse-url-parts v2.0.3

Weekly downloads
78
License
MIT
Repository
github
Last release
4 years ago

parse-url-parts

npm npm bundle size

A lightweight JavaScript library for parsing RFC 1738 compliant Uniform Resource Locators (URLs).

Description

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.

Documentation

parseUrlParts(url)

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

Params

  • String url: The url to be parsed.

Return

  • 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 subDomains
  • rootDomain (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 "#".

Usage

import { parseUrlParts } from "parse-url-parts"

const url = "https://foo:bar@www.example.com: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 }

Contributing

GitHub contributors

Contributions and/or critics are welcome! Just open pull requests and issues on things that matter to you!

Testing

$ npm run jest