What is url-toolkit?
The url-toolkit npm package provides utilities for parsing, resolving, and normalizing URLs. It is particularly useful for handling URL manipulations in web applications, ensuring that URLs are correctly formatted and resolved.
What are url-toolkit's main functionalities?
Parsing URLs
This feature allows you to parse a URL into its components such as protocol, hostname, pathname, search, and hash. The code sample demonstrates how to parse a URL and log its components.
const URLToolkit = require('url-toolkit');
const parsedURL = URLToolkit.parseURL('https://example.com/path?query=123#hash');
console.log(parsedURL);
Resolving URLs
This feature allows you to resolve a relative URL against a base URL to get an absolute URL. The code sample shows how to resolve a relative URL to an absolute URL.
const URLToolkit = require('url-toolkit');
const resolvedURL = URLToolkit.buildAbsoluteURL('https://example.com/path/', '../newpath');
console.log(resolvedURL);
Normalizing URLs
This feature allows you to normalize a URL path, resolving any '..' or '.' segments. The code sample demonstrates how to normalize a URL path.
const URLToolkit = require('url-toolkit');
const normalizedURL = URLToolkit.normalizePath('https://example.com/path/../newpath');
console.log(normalizedURL);
Other packages similar to url-toolkit
url
The 'url' package is a core Node.js module that provides utilities for URL resolution and parsing. It offers similar functionalities to url-toolkit, such as parsing URLs and resolving relative URLs. However, url-toolkit provides additional features like URL normalization.
whatwg-url
The 'whatwg-url' package is a full implementation of the WHATWG URL Standard. It provides comprehensive URL parsing, serialization, and manipulation functionalities. Compared to url-toolkit, whatwg-url is more standards-compliant and offers a broader range of URL manipulation features.
url-parse
The 'url-parse' package is a lightweight URL parser that works in both Node.js and the browser. It provides similar functionalities to url-toolkit, such as parsing and resolving URLs. However, url-parse is designed to be more lightweight and faster.
URL Toolkit
Lightweight library to build an absolute URL from a base URL and a relative URL, written from the spec (RFC 1808). Initially part of HLS.JS.
Differences to JS URL()
The JS URL() function also lets you calculate a new URL from a base and relative one.
That uses the URL Living Standard which is slightly different to RFC 1808 that this library implements.
One of the key differences is that the URL Living Standard has the concept of a 'special url' and 'special scheme'. For these special URL's, such as a URL with the http
scheme, they normalise them in a way that results in http:///example.com/something
becoming http://example.com/something
. This library does not do that and parseURL()
would give you //
as the netLoc
and /example.com
as the path.
Methods
buildAbsoluteURL(baseURL, relativeURL, opts={})
Build an absolute URL from a relative and base one.
URLToolkit.buildAbsoluteURL('http://a.com/b/cd', 'e/f/../g');
If you want to ensure that the URL is treated as a relative one you should prefix it with ./
.
URLToolkit.buildAbsoluteURL('http://a.com/b/cd', 'a:b');
URLToolkit.buildAbsoluteURL('http://a.com/b/cd', './a:b');
By default the paths will not be normalized unless necessary, according to the spec. However you can ensure paths are always normalized by setting the opts.alwaysNormalize
option to true
.
URLToolkit.buildAbsoluteURL('http://a.com/b/cd', '/e/f/../g');
URLToolkit.buildAbsoluteURL('http://a.com/b/cd', '/e/f/../g', {
alwaysNormalize: true,
});
normalizePath(url)
Normalizes a path.
URLToolkit.normalizePath('a/b/../c');
parseURL(url)
Parse a URL into its separate components.
URLToolkit.parseURL('http://a/b/c/d;p?q#f');
buildURLFromParts(parts)
Puts all the parts from parseURL()
back together into a string.
Example
var URLToolkit = require('url-toolkit');
var url = URLToolkit.buildAbsoluteURL(
'https://a.com/b/cd/e.m3u8?test=1#something',
'../z.ts?abc=1#test'
);
console.log(url);
Browser
This can also be used in the browser thanks to jsDelivr:
<head>
<script
type="text/javascript"
src="https://cdn.jsdelivr.net/npm/url-toolkit@2"
></script>
<script type="text/javascript">
var url = URLToolkit.buildAbsoluteURL(
'https://a.com/b/cd/e.m3u8?test=1#something',
'../z.ts?abc=1#test'
);
console.log(url);
</script>
</head>