Finds and decodes best matching path in a set of routes
With params
import { compile, matcher } from "multi-path-matcher";
const routes = [
{ path: "/a/b/c" },
{ path: "/a/b" },
{ path: "/d/:att1/e/:att2" },
{ path: "/d/:att1/e" },
{ path: "/" }
];
const compiled = compile(routes);
matcher(compiled "/a"); // undefined
matcher(compiled, "/a/b"); // routes[1]
matcher(compiled, "/a/b/c"); // routes[0]
matcher(compiled, "/d/value1/e"); // routes[3] { att1: "value1" }
matcher(compiled, "/d/value1/e/value2?sort=asc"); // routes[2] { att1: "value1", att2: "value2" }
matcher(compiled, "/"); // routes[4]
With wildcards
import { compile, matcher } from "multi-path-matcher";
const routes = [
{ path: "/" },
{ path: "/*" },
{ path: "/about" },
{ path: "/login" }
];
const compiled = compile(routes);
matcher(compiled, "/"); // routes[0]
matcher(compiled, "/index.html"); // routes[1]
matcher(compiled, "/about"); // routes[2]
matcher(compiled, "/login?param=1"); // routes[3]
One single route
Type: Object
path
string
Result of a path compilation priorities for each path component
Type: Route
regex
RegExp for later checking and params extractionkeys
Array<string> all keys found in the routepriority
number order in which to check
Result of a match
Type: Object
route
Route? as given to the compiler, undefined if no matching route was foundparams
Object extracted from the path
Prioritiy for a plain path component
Type: number
Prioritiy for a path component with a wildcard '*'
Type: number
Prioritiy for a parameter path component
Type: number
Compile a set of routes. All properties of the original routes are preserved
Returns Array<CompiledRoute>
Generate regex with priority.
route
Route
Returns CompiledRoute
Find best match for a given path. Decodes params into an object.
compiled
Array<CompiledRoute>path
string
Returns Match match
With npm do:
npm install multi-path-matcher
BSD-2-Clause