@substrate-system/routes
    Preparing search index...

    @substrate-system/routes

    routes

    tests types module dependencies install size GZip size semantic versioning license

    Route matcher devised for shared rendering JavaScript applications

    Contents

    npm install -S @substrate-system/routes
    

    Featuring ESM or CJS versions via package.json exports field.

    // esm
    import Router from '@substrate-system/routes'
    // cjs
    const Router = require('@substrate-system/routes').default

    Get a router instance

    import Router from '@substrate-system/routes'
    var router = new Router()
    router.addRoute('/articles', getArticles);
    router.addRoute('/articles/:slug', getArticleBySlug);
    router.addRoute('/articles/search/*', searchForArticles);

    // can also chain the method calls
    router
    .addRoute('/foo', () => {/* ... */})
    .addRoute('/bar', () => {/* ... */})
    const match = router.match('/articles');
    // => RouteMatch
    interface RouteMatch {
    params:Record<string, string>; // <-- e.g. { slug: 'article-title' }
    splats:string[];
    route:string;
    next?:((...any)=>any)|null;
    action?:(...any)=>any;
    index?:number;
    }

    You'll get null back if no route matches the provided URL. Otherwise, the route match will provide all the useful information you need inside an object.

    Key Description
    action The action passed to addRoute as a second argument. Using a function is recommended
    next Fall through to the next route, or null if no other routes match
    route The route passed to addRoute as the first argument
    params An object containing the values for named parameters in the route
    splats An object filled with the values for wildcard parameters

    This is a fork of ruta3, just adding types.