immutable-url
🔗 A tiny (< 500B), 0-dependency, immutable URL library, backed by the native whatwg URL. 🎉 Now with immutable Headers
support!
Credits
This library is maintained fork of immutable-url by Tom Sherman.
Install
npm install immutable-url
Because immutable-url uses the native whatwg URL API under the hood you'll need a polyfill to support environments that don't implement this API eg. IE11.
Usage
ImmutableURL
ImmutableURL
works as you expect, it contains all of the properties of the native URL API.
import { ImmutableURL } from 'immutable-url';
const url = new ImmutableURL('https://example.com');
console.log(url.href);
let newUrl = url.set('pathname', '/login');
newUrl = url.set('pathname', '/bar').set('hash', '#heading');
ImmutableURLSearchParams
immutable-url also contains an immutable version of the URLSearchParams
API; ImmutableURLSearchParams
.
The API for ImmutableURLSearchParams
is exactly the same as the native version except the methods that usually mutate (.append()
, .delete()
, .sort()
) return a new ImmutableURLSearchParams
instance.
import { ImmutableURLSearchParams } from 'immutable-url';
let params = new ImmutableURLSearchParams('q=URLUtils.searchParams&topic=api');
params = params.append('foo', 'bar').delete('q');
The searchParams
property of ImmutableURL
returns an ImmutableURLSearchParams
.
const url = new ImmutableURL('https://example.com?foo=bar');
const newParams = url.searchParams
.append('q', 'search-term')
.set('foo', 'fuz')
.sort();
const newUrl = url.set('searchParams', newParams);
const newUrl2 = url.set(
'searchParams',
url.searchParams.append('q', 'search-term').set('foo', 'fuz').sort()
);
Not strictly related to whatg URLs, but it's shoehorned in here because it's kinda related and they're usually used together.
import { ImmutableHeaders } from 'immutable-url';
const headers = new ImmutableHeaders({
foo: 'bar'
});
const newHeaders = headers.set('foo', 'fuz');
console.log(headers.get('foo'));
console.log(newHeaders.get('foo'));