ale-url-parser
🍺 Top fermented URL parser and stringifier built with performance and small size (1.6KB) in mind.
Installation
$ npm i ale-url-parser
Usage
parse :: String -> Object
Parse url string and return url object.
const parse = ;
Basic example
; protocol: 'http' host: 'domain.lol' path: 'lorem' 'ipsum' query: foo: '1' bar: '2' hash: 'baz'
Preserve protocol
; protocol: '' host: 'domain.lol' path: query: {} hash: ''
Http by default
; protocol: 'http' host: 'domain.lol' path: query: {} hash: ''
Multi-valued query parameters
; protocol: 'http' host: 'domain.lol' path: query: foo: '1' '2' bar: '3' hash: ''
Parsing relative urls
; protocol: 'http' host: '' path: query: foo: '1' hash: ''
stringify :: Object -> String
Stringify url object to url string.
const stringify = ;
Basic example
; "https://domain.lol/lorem/ipsum?foo=1&bar=2#baz"
Preserve protocol
; "//domain.lol"
Multi-valued query parameters
; "https://domain.lol?foo=1&foo=2&bar=%2Fbaz"
Build relative urls
; "/lorem/ipsum?foo=1&bar=2"
Sort query params with custom compareFunction
Sorting query params is disabled by default. You can define your own sorting method by passing compareFunction
:
const order = 'first' 'second' 'third' 'fourth';; "http://domain.lol?first=1&second=2&third=3&fourth=4"
Caveats
ale-url-parser
is limited to be used with http
and https
protocols though context-aware protocol guess is supported by passing an empty string to stringify
function, i.e. protocol: ''
.
Benchmarks
$ npm t && npm run prepare && node ./tests/benchmark-parse.js [simple] ale-url-parser x 124,203 ops/sec ±0.67% [simple] url x 75,006 ops/sec ±1.03% [simple] query-string x 47,283 ops/sec ±0.77% [simple] fast-url-parser x 237,420 ops/sec ±0.66% [simple] Fastest is fast-url-parser[complex] ale-url-parser x 16,846 ops/sec ±0.58% [complex] url x 8,104 ops/sec ±0.71% [complex] query-string x 5,884 ops/sec ±0.80% [complex] fast-url-parser x 15,430 ops/sec ±0.92%
https://jsperf.com/ale-url-parser-vs-new-url
TypeScript definitions
Type definitions for ale-url-parser
are declared in DefinitelyTyped
repository. We recommend installing @types/ale-url-parser
for a better experience
$ npm i @types/ale-url-parser -D
License
MIT