Skip to content

iiio2/rou3

 
 

Repository files navigation

🌳 rou3

npm version npm downloads bundle size codecov

Lightweight and fast router for JavaScript.

Note

Radix3 migrated to Rou3! See #108 for notes and radix3 branch for legacy codebase.

Usage

Install:

# ✨ Auto-detect npx nypm install rou3 # npm npm install rou3 # yarn yarn add rou3 # pnpm pnpm install rou3 # bun bun install rou3

Import:

ESM (Node.js, Bun)

import { createRouter, addRoute, findRoute, removeRoute, findAllRoutes, } from "rou3";

CommonJS (Legacy Node.js)

const { createRouter, addRoute, findRoute, removeRoute, findAllRoutes, } = require("rou3");

CDN (Deno, Bun and Browsers)

import { createRouter, addRoute, findRoute, removeRoute, findAllRoutes, } from "https://esm.sh/rou3";

Create a router instance and insert routes:

import { createRouter, addRoute } from "rou3"; const router = createRouter(/* options */); addRoute(router, "GET", "/path", { payload: "this path" }); addRoute(router, "POST", "/path/:name", { payload: "named route" }); addRoute(router, "GET", "/path/foo/**", { payload: "wildcard route" }); addRoute(router, "GET", "/path/foo/**:name", { payload: "named wildcard route", });

Match route to access matched data:

// Returns { payload: 'this path' } findRoute(router, "GET", "/path"); // Returns { payload: 'named route', params: { name: 'fooval' } } findRoute(router, "POST", "/path/fooval"); // Returns { payload: 'wildcard route' } findRoute(router, "GET", "/path/foo/bar/baz"); // Returns undefined (no route matched for/) findRoute(router, "GET", "/");

License

Published under the MIT license. Made by @pi0 and community 💛


🤖 auto updated with automd

About

🌳 Lightweight and fast rou(ter) for JavaScript

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 98.6%
  • JavaScript 1.4%