Package Exports
- ufo
- ufo/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ufo) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Install
Install using npm or yarn:
npm i ufo
# or
yarn add ufo
Import:
// CommonJS
const { normalizeURL, joinURL } = require('ufo')
// ESM
import { normalizeURL, joinURL } from 'ufo'
Notice: You may need to transpile package and add URL polyfill for legacy environments
Usage
normalizeURL
- Ensures URL is properly encoded
- Ensures pathname starts with slash
- Preserves protocol/host if provided
// Result: test?query=123%20123#hash,%20test
normalizeURL('test?query=123 123#hash, test')
// Result: http://localhost:3000/
normalizeURL('http://localhost:3000')
joinURL
// Result: a/b/c
joinURL('a', '/b', '/c')
resolveURL
// Result: http://foo.com/foo/bar/baz?test=123#token
joinURL('http://foo.com/foo?test=123#token', 'bar', 'baz')
withQuery
// Result: /foo?page=a&token=secret
withQuery('/foo?page=a', { token: 'secret' })
getQuery
// Result: { test: '123', unicode: '好' }
getQuery('http://foo.com/foo?test=123&unicode=%E5%A5%BD')
$URL
Implementing URL interface with some improvements:
- Supporting schemeless and hostless URLs
- Supporting relative URLs
- Preserving trailing-slash status
- Decoded and mutable classs properties (
protocol
,host
,auth
,pathname
,query
,hash
) - Consistent URL parser independent of environment
- Consistent encoding independent of environment
- Punycode support for host encoding
withTrailingSlash
Ensures url ends with a trailing slash
// Result: /foo/
withTrailingSlash('/foo')
withoutTrailingSlash
Ensures url does not ends with a trailing slash
// Result: /foo
withoutTrailingSlash('/foo/')
cleanDoubleSlashes
Ensures url does not have double slash (except for protocol)
// Result: /foo/bar/
cleanDoubleSlashes('//foo//bar//')
// Result: http://example.com/analyze/http://localhost:3000/
cleanDoubleSlashes('http://example.com/analyze//http://localhost:3000//')
isSamePath
Check two paths are equal or not. Trailing slash and encoding are normalized before comparation.
// Result: true
isSamePath('/foo', '/foo/')
isRelative
Check if a path starts with ./
or ../
.
// Result: true
isRelative('./foo')
License
Special thanks to Eduardo San Martin Morote (posva) for encoding utlities