JSPM

  • Created
  • Published
  • Downloads 9590891
  • Score
    100M100P100Q208951F
  • License MIT

URL utils for humans

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

npm version npm downloads Github Actions Codecov bundle

👽 ufo

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

MIT

Special thanks to Eduardo San Martin Morote (posva) for encoding utlities