switch-path
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

switchPath

Advanced switch case for URLs, a small tool for routing in JavaScript

npm version

npm install switch-path

Usage

Basic usage:

const {path, value} = switchPath('/home/foo', {
  '/bar': 123,
  '/home/foo': 456,
});
// path is `/home/foo`
// value is 456

Supports trailing slashes

const {path, value} = switchPath('/home/foo/', {
  '/bar': 123,
  '/home/foo': 456,
});
// path is `/home/foo`
// value is 456

Supports nested route configuration:

const {path, value} = switchPath('/home/foo', {
  '/bar': 123,
  '/home': {
    '/foo': 456,
  },
});
// path is `/home/foo`
// value is 456

Supports base paths in nested route configurations

const {path, value} = switchPath('/home', {
  '/bar': 123,
  '/home': {
    '/': 456,
    '/foo': 789
  }
});
// path is `/home`
// value is 456

Incomplete patterns will be optimistically matched:

const {path, value} = switchPath('/home/foo', {
  '/bar': 123,
  '/home': 456,
});
// path is `/home`
// value is 456

Optional not found pattern:

const {path, value} = switchPath('/home/33', {
  '/': 123,
  'books': {
    '/': 456,
    '/:id': 789
  },
  '*': 'Route not found'
});
// path = '/home/33'
// value = 'Route not found'

Match a route with :param parameters and get the parameter value in a function:

const {path, value} = switchPath('/home/1736', {
  '/bar': 123,
  '/home/:id': id => `id is ${id}`,
});
// path is `/home/1736`
// value is 'id is 1736'

Match a route with :param parameters also inside nested configurations:

const {path, value} = switchPath('/home/1736', {
  '/bar': 123,
  '/home': {
    '/:id': id => `id is ${id}`,
  },
});
// path is `/home/1736`
// value is 'id is 1736'

Match a route with :param parameters base inside nested configurations:

const {path, value} = switchPath('/1736', {
  '/bar': 123,
  '/:id': {
    '/': id => `id is ${id}`,
    '/home': 789
  }
});
// path is `/1736`
// value is 'id is 1736'

Dependents (6)

Package Sidebar

Install

npm i switch-path

Weekly Downloads

360

Version

1.2.0

License

MIT

Last publish

Collaborators

  • tylors
  • cycle