Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

decompose-url

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

decompose-url

A quick and easy URL decomposer for breaking URLs into their constituent parts.

  • 0.1.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

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

Keywords

FAQs

Package last updated on 06 Aug 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc