JSPM

@routes/index

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

📇 An index of routes exposed by Express app

Package Exports

  • @routes/index
  • @routes/index/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@routes/index) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@routes/index

📇 An index of routes exposed by Express app

const app = express();
const index = require('@routes/index');

...

const filter = (method, path) => {
    if (/patch/i.test(method)) { return false; }
    if (path.endsWith('ping')) { return false; }
    return true;
};
index(app, filter);

Arguments and options

  • First argument is an Expressjs app instance.
  • Second, optional, argument is a named options object. All options are optional
Name Type Meaning
filter {Function} Filter routes by method or path
should {Function} For 'route' method, should it display the 404 list page or simply call next middleware

filter method accepts two arguments: method (lowercase), and path - respectfully (e.g. :'get', '/users/:user_id')

const filter = (method, path) => path.starsWith('/api');

should method accepts two arguments: request and response - the express middleware arguments

const should = (request, response) => request.path.startsWith('/api');

Usage

Example express app setup

const express = require('express');

const app = express();
app.get('/ping', ...);
app.get('/users/:user_id', ...);
app.patch('/users/:user_id', ...);
app.delete('/users/:user_id', ...);
app.get('/users', ...);
app.post('/users', ...);

Get an index of all available routes

const index = require('@routes/index');

index(app);

| Example | - |

Get a flat list of routes (no methods) (* de-duped)

const {flat} = index(app);

flat // ['/users', '/users/:user_id']

Show API consumers an index for 404 message

const {route} = index(
    app,

    // filter paths from the list
    {
        filter: (method, path) => !['/ping', '*'].includes(path),
        should: (request, response) => !request.is('html'),
    }
);
app.all('*', route);

| Example | - |

Result

< HTTP/1.1 404 Not Found
< Content-Type: text/plain; charset=utf-8
< Content-Length: 290
< Date: Wed, 17 Apr 2019 21:19:32 GMT
< Connection: keep-alive
<
{ [290 bytes data]
404 error - Could not find route [GET] /missing
Here is a index of available routes:
- [GET] /users
- [POST] /users
- [GET] /users/:user_id
- [PATCH] /users/:user_id
- [DELETE] /users/:user_id