8000 GitHub - aquapi/rou3: 🌳 Lightweight and fast rou(ter) for JavaScript
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

aquapi/rou3

 
 

Repository files navigation

🌳 rou3

npm version npm downloads bundle size codecov

Lightweight and fast router for JavaScript.

Usage

Install:

# ✨ Auto-detect
npx nypm install rou3

Import:

ESM (Node.js, Bun, Deno)

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

CDN (Deno, Bun and Browsers)

import {
  createRouter,
  addRoute,
  findRoute,
  removeRoute,
  findAllRoutes,
  routeToRegExp,
  NullProtoObj,
} 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", "/");

Experimental Compiler

compileRouter(router)

Compiles the router instance into a faster route-matching function.

IMPORTANT: Compiler is an experimental feature, may contain issues and the API may change between versions.

IMPORTANT: This function requires eval (new Function) support in the runtime environment for JIT (Just-In-Time) compilation.

Example:

import { createRouter, addRoute } from "rou3";
import { compileRouter } from "rou3/experimental-compiler";
const router = createRouter();
// [add some routes]
const findRoute = compileRouter(router);
findRoute("GET", "/path/foo/bar");

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

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.5%
  • JavaScript 1.5%
0