https://github.com/one-com/normalizeurl
Normalize urls by removing .. and . constructs, and only percent-encode the bytes that encodeURIComponent would.
https://github.com/one-com/normalizeurl
Last synced: about 2 months ago
JSON representation
Normalize urls by removing .. and . constructs, and only percent-encode the bytes that encodeURIComponent would.
- Host: GitHub
- URL: https://github.com/one-com/normalizeurl
- Owner: One-com
- License: bsd-3-clause
- Created: 2013-10-01T11:33:13.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2016-08-19T08:06:16.000Z (almost 9 years ago)
- Last Synced: 2025-02-05T07:49:06.872Z (4 months ago)
- Language: JavaScript
- Size: 15.6 KB
- Stars: 3
- Watchers: 16
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# normalizeurl
Normalize a url or url fragment by percent-encoding exactly the chars
encodeURIComponent does and removing `/./` and `/foo/../` constructs
like `require('path').resolve` does.Example:
```javascript
var normalizeUrl = require('normalizeurl');console.log(normalizeUrl('http://example.com/%7efoo%2Ebar'));
// => 'http://example.com/~foo.bar'console.log(normalizeUrl('http://example.com/foo/./bar/quux/../blah'));
// => 'http://example.com/foo/bar/blah'
```It also does the right thing for relative, root-relative, and protocol-relative urls:
```javascript
console.log(normalizeUrl('foo/bar/../blah'));
// => 'foo/bar/blah'console.log(normalizeUrl('/hey/there/../you?blah?#foo%7e'));
// => '/hey/you?blah?#foo~'console.log(normalizeUrl('//example.com/%7efoo'));
// => '//example.com/~foo'
```Url objects already parsed by node.js' built-in `url` module are also supported:
```javascript
console.log(normalizeUrl(require('url').parse('htTP://foo.com/%7ebarf')));
// => {protocol: 'http:', slashes: true, host: 'foo.com', hostname: 'foo.com', pathname: '/~barf', href: 'http://foo.com/~barf', path: '/~barf'}
```The module works also works in a browser, but only for url fragments
for now. It'll throw an exception if you attempt to normalize an
absolute or protocol-relative url, as that currently relies on
`require('url').parse`.## License
normalizeurl is licensed under a standard 3-clause BSD license -- see the `LICENSE`-file for details.