decompose-url
A quick and easy URL decomposer for breaking URLs into their constituent parts.
Install
NPM
$ npm install decompose-url
Bower
bower install --save decompose-url
Node.js
var decomposeUrl = var decomposedUrl = ;// `decomposedUrl` now contains the decomposed values from the url that was passed. See [Url](#url-model) for the structure. var decomposedUrlWithParams = ;// `decomposedUrlWithParams` now contains the decomposed values from the url that was passed and now decomposedUrlWithParams.params is populated with a map of the path parameters that were passed and their values. See [Url](#url-model) for the structure.
Browser
<script type="text/javascript" src="decompose-url.js"></script><script type="text/javascript">var decomposedUrl = ;// `decomposedUrl` now contains the decomposed values from the url that was passed. See [Url](#url-model) for the structure. var decomposedUrlWithParams = ;// `decomposedUrlWithParams` now contains the decomposed values from the url that was passed and now decomposedUrlWithParams.params is populated with a map of the path parameters that were passed and their values. See [Url](#url-model) for the structure.</script>
Url Model
protocol
- The protocol in the URL, null if none. (eg. 'http')username
- The username in the URL, null if none. (eg. 'david')password
- The password in the URL, null if none. (eg. 'l33t5auce#!')hostname
- The full hostname in the URL, null if none. (eg. 'mail.google.com')host
- An array of the domain names in the URL, null if none. (eg. ['mail', 'google'])tld
- The top level domain in the URL, null if none. (eg. 'com')port
- The port in the URL. Default: 80, if there is a host (eg. '80')path
- An array of the path parts in the URL, null if none. (eg. ['mail', 'u', '0'])params
- A map of the path parameters (only populated if a template was passed) in the URL, null if no template was passed. (eg. { 'user' : 0 })search
- The full search part in the URL, null if none. (eg. 'ui=1&pli=1')query
- A map of the query parameters in the URL, null if none. (eg. { 'ui': '1', 'pli': '1' })hash
- The full hash in the URL, null if none. (eg. 'inbox')hash
- The original URL that was decomposed (eg. 'http://david:l33t5auce#!@mail.google.com/mail/u/0?ui=2&pli=1#inbox')
Benchmark
$ npm run-script bench > decompose-url@0.1.1 bench decompose-url > node benchmark/index.js > node benchmark\absolute-url.js Parsing URL http://test.example.com:8000/one/two/three?value=abc&value2=123#david-rules 1 test completed. 2 tests completed. 3 tests completed. 4 tests completed. decomposeUrl x 184,267 ops/sec ±0.35% nativeUrl x 33,648 ops/sec ±0.56% parseUrl x 50,891 ops/sec ±0.26% fastUrlParser x 218,160 ops/sec ±0.23% > node benchmark\document-relative-url.js Parsing URL one/two/three?value=abc&value2=123#david-rules 1 test completed. 2 tests completed. 3 tests completed. 4 tests completed. decomposeUrl x 290,588 ops/sec ±0.14% nativeUrl x 52,087 ops/sec ±0.51% parseUrl x 93,881 ops/sec ±0.29% fastUrlParser x 244,401 ops/sec ±0.17% > node benchmark\full-url.js Parsing URL http://username:password@test.example.com:8000/one/two/three?value=abc&value2=123#david-rules 1 test completed. 2 tests completed. 3 tests completed. 4 tests completed. decomposeUrl x 175,061 ops/sec ±0.18% nativeUrl x 31,373 ops/sec ±0.46% parseUrl x 40,676 ops/sec ±1.89% fastUrlParser x 199,756 ops/sec ±0.24% > node benchmark\protocol-relative-url.js Parsing URL //test.example.com/one/two/three?value=abc&value2=123#david-rules 1 test completed. 2 tests completed. 3 tests completed. 4 tests completed. decomposeUrl x 195,416 ops/sec ±0.22% nativeUrl x 51,650 ops/sec ±0.91% parseUrl x 85,423 ops/sec ±0.30% fastUrlParser x 227,996 ops/sec ±0.29% > node benchmark\root-relative-url.js Parsing URL /one/two/three?value=abc&value2=123#david-rules 1 test completed. 2 tests completed. 3 tests completed. 4 tests completed. decomposeUrl x 261,973 ops/sec ±1.30% nativeUrl x 48,762 ops/sec ±1.45% parseUrl x 82,902 ops/sec ±1.40% fastUrlParser x 218,049 ops/sec ±1.56%