decompose-url

0.1.2 • Public • Published

decompose-url

NPM version Bower version Build Status Coverage Status

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 = require('decompose-url')
 
var decomposedUrl = decomposeUrl('http://test.example.com:8000/one/two/three?value=abc&value2=123#david-rules');
// `decomposedUrl` now contains the decomposed values from the url that was passed. See [Url](#url-model) for the structure.
 
var decomposedUrlWithParams = decomposeUrl('http://test.example.com:8000/one/two/three?value=abc&value2=123#david-rules', '/:value1/:value2/:value3');
// `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 = decomposeUrl('http://test.example.com:8000/one/two/three?value=abc&value2=123#david-rules');
// `decomposedUrl` now contains the decomposed values from the url that was passed. See [Url](#url-model) for the structure.
 
var decomposedUrlWithParams = decomposeUrl('http://test.example.com:8000/one/two/three?value=abc&value2=123#david-rules', '/:value1/:value2/:value3');
// `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% (197 runs sampled)
    nativeUrl     x  33,648 ops/sec ±0.56% (192 runs sampled)
    parseUrl      x  50,891 ops/sec ±0.26% (196 runs sampled)
    fastUrlParser x 218,160 ops/sec ±0.23% (197 runs sampled)
  
  > 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% (197 runs sampled)
    nativeUrl     x  52,087 ops/sec ±0.51% (195 runs sampled)
    parseUrl      x  93,881 ops/sec ±0.29% (196 runs sampled)
    fastUrlParser x 244,401 ops/sec ±0.17% (196 runs sampled)
  
  > 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% (196 runs sampled)
    nativeUrl     x  31,373 ops/sec ±0.46% (195 runs sampled)
    parseUrl      x  40,676 ops/sec ±1.89% (194 runs sampled)
    fastUrlParser x 199,756 ops/sec ±0.24% (196 runs sampled)
  
  > 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% (194 runs sampled)
    nativeUrl     x  51,650 ops/sec ±0.91% (192 runs sampled)
    parseUrl      x  85,423 ops/sec ±0.30% (194 runs sampled)
    fastUrlParser x 227,996 ops/sec ±0.29% (197 runs sampled)
  
  > 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% (193 runs sampled)
    nativeUrl     x  48,762 ops/sec ±1.45% (184 runs sampled)
    parseUrl      x  82,902 ops/sec ±1.40% (190 runs sampled)
    fastUrlParser x 218,049 ops/sec ±1.56% (188 runs sampled)

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i decompose-url

Weekly Downloads

7

Version

0.1.2

License

MIT

Last publish

Collaborators

  • davidtpate