JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2917
  • Score
    100M100P100Q16076F
  • License MIT

URL utils for humans

Package Exports

  • @nuxt/ufo

Readme

npm version npm downloads Github Actions Codecov bundle

👽 ufo

Install

Install using npm or yarn:

npm i @nuxt/ufo
# or
yarn add @nuxt/ufo

Import:

// CommonJS
const { normalizeURL, joinURL } = require('@nuxt/ufo')

// ESM
import { normalizeURL, joinURL } from '@nuxt/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')

// Result: http://foo.com/foo/bar/baz?test=123#token
joinURL('http://foo.com/foo?test=123#token', 'bar', 'baz')

withparams

// Result: /foo?page=a&token=secret
withParams('/foo?page=a', { token: 'secret' })

getParams

// Result: { test: '123', unicode: '好' }
getParams('http://foo.com/foo?test=123&unicode=%E5%A5%BD')

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//')

License

MIT. Made with 💖