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

npm install switch-path
Usage
Basic usage:
const {path, value} = switchPath('/home/foo', {
'/bar': 123,
'/home/foo': 456,
});
Supports trailing slashes
const {path, value} = switchPath('/home/foo/', {
'/bar': 123,
'/home/foo': 456,
});
Supports nested route configuration:
const {path, value} = switchPath('/home/foo', {
'/bar': 123,
'/home': {
'/foo': 456,
},
});
Supports base paths in nested route configurations
const {path, value} = switchPath('/home', {
'/bar': 123,
'/home': {
'/': 456,
'/foo': 789
}
});
Incomplete patterns will be optimistically matched:
const {path, value} = switchPath('/home/foo', {
'/bar': 123,
'/home': 456,
});
Optional not found pattern:
const {path, value} = switchPath('/home/33', {
'/': 123,
'books': {
'/': 456,
'/:id': 789
},
'*': '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}`,
});
Match a route with :param
parameters also inside nested configurations:
const {path, value} = switchPath('/home/1736', {
'/bar': 123,
'/home': {
'/:id': id => `id is ${id}`,
},
});
Match a route with :param
parameters base inside nested configurations:
const {path, value} = switchPath('/1736', {
'/bar': 123,
'/:id': {
'/': id => `id is ${id}`,
'/home': 789
}
});