npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

als-dynamic-router

v1.0.0

Published

A dynamic route and middleware integration package for Express.js applications.

Downloads

19

Readme

als-dynamic-router

als-dynamic-router is a Node.js package designed for dynamically creating routes and integrating middleware into your Express applications or similar HTTP servers.

Function routes

The routes function automatically scans a specified directory for route and middleware files, creates routes from them, and adds them to your application.

Parameters

  • dirPath (String): The path to the directory where the route and middleware files are located.
  • urlPath (String): The base URL path for all routes. Defaults to '/'.
  • app (Express Application): The Express application instance to which the routes will be added.

Return Value

The function returns an object with the following properties:

  • readyRoutes (Array): An array of the created routes.
  • errors (Array): An array of errors encountered during the creation of routes.

Usage Example

const express = require('express');
const routes = require('als-dynamic-router');

const app = express();
const dirPath = __dirname + '/routes'; // Path to the directory with route files

// Adding routes to the application
const { readyRoutes, errors } = routes(dirPath, '/', app);

if (errors.length > 0) {
    console.error('The following errors occurred while creating routes:', errors);
}

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

Dynamic Routes

Files starting with $ are treated as dynamic routes. The $ in the filename will be replaced with : to conform with Express' dynamic route syntax.

Example File Structure for Routes and Middleware

/routes
    /.get.js
    /login.post.js
    /dashboard/$userId.get.js // Dynamic route
    /dashboard/auth.mw.js
    ...

Each route or middleware file should export a corresponding function. Dynamic routes, denoted by $, will be transformed into Express-compatible routes.

Format of Route and Middleware Files

  • Route files should be named in the format [name].[method].js, where [name] is the name of the route, [method] is the HTTP method (get, post, put, delete, etc.). For dynamic routes, use $ in the name to indicate a dynamic segment (e.g., $userId).
  • Middleware files should be named in the format [name].mw.js. If a file name starts with #, it is considered private middleware, which will be applied only to routes in the same directory.
  • General middleware (e.g., auth.mw.js) is applied to all routes at its level and below in the directory structure.
  • Private middleware (e.g., #profile.mw.js) is applied only to routes at the same level in the directory structure.