URI parser and builder with semantic API
| Name | uri |
| Version | 0.2.2 |
| Size | 3 KB / 1 KB (gzipped) |
| Environment | Node, Browser |
Features
- URI parsing
- URI builder
- RFC 3986 compliant
- Full and partial URI support
- Automatic query mapping values
- Support for special characters decoding
Installation
Node.js
npm install lil-uri
Browser
Via Bower
bower install lil-uri
Via Component
component install lil-js/uri
Or loading the script remotely
<script src="//cdn.rawgit.com/lil-js/uri/0.2.2/uri.js"></script>
Environments
Cross-browser support guaranteed running tests in BrowserStack
- Node.js
- Chrome >= 5
- Firefox >= 3
- Safari >= 5
- Opera >= 10
- IE >= 9
Usage
You could fetch de module via require() if it's available.
Otherwise, global fallback will be used, exposed via lil.uri
var uri = require('lil-uri')
Parser
var url = uri('http://user:pass@example.com:8080/bar/foo.xml?foo=bar&hello=world&#hash=1') url.protocol() // -> http url.host() // -> example.com:8080 url.hostname() // -> example.com url.port() // -> 8080 url.auth() // -> { user: 'user', password: 'pass' } url.user() // -> user url.password() // -> pass url.path() // -> /bar/foo.xml url.search() // -> foo=bar&hello=world url.query() // -> { foo: 'bar', hello: 'world' } url.hash() // -> hash=1
Builder
uri() .protocol('https') .host('example.com') .port('8080') .auth('user:pass') .path('/bar/foo.xml') .query({ foo: 'bar', hello: 'world' }) .hash('hash=1') .build() // -> http://@example.com:8080/bar/foo.xml?foo=bar&hello=world&#frament=1
API
uri([ uri ])
uri#protocol([ protocol ])
uri#host([ host ])
uri#hostname([ hostname ])
uri#port([ port ])
uri#auth([ auth ])
uri#user([ user ])
uri#password([ password ])
uri#path([ path ])
uri#search([ search ])
uri#query([ query ])
uri#hash([ fragment ])
uri#build()
uri#parse(uri)
uri.isURL(str)
uri.is(url)
uri.URI(uri)
uri.VERSION
Contributing
Wanna help? Cool! It will be appreciated :)
You must add new test cases for any new feature or refactor you do, always following the same design/code patterns that already exist
Development
Only node.js is required for development
Clone the repository
$ git clone https://github.com/lil-js/uri.git && cd uri
Install dependencies
$ npm install
Generate browser bundle source
$ make browser
Run tests
$ make testLicense
MIT © Tomas Aparicio