Experiment to normalize URLs w/ functional programming
npm i --save-dev composable-normalize
import {normalize} from 'composable-normalize'
normalize('HTTP://github.com/')
//=> 'http://github.com/'
normalize('http://github.com/../a/b/../c/./d')
// => 'http://github.com/a/b/c/d/'
normalize('http://github.com:80/bar')
// => 'http://github.com/bar/'
normalize('http://github.com/%7Eusername/')
// => 'http://github.com/~username/'
also as a bonus you can do functional composition right to left 🔥
import {normalize, compose} from 'composable-normalize'
compose(str => `${str}bar`, normalize)('HTTP://github.com////foo/')
// => 'http://github.com/foo/bar'
- Dedupe slashes
- Dedupe dots
- Decode
- Lowercase scheme
- Remove default http/https ports
- Adds trailing slash
- Add Tests
- Publish to npm
- Add Options?