routekit
TypeScript icon, indicating that this package has built-in type declarations

0.5.0 • Public • Published

RouteKit · GitHub license codecov CircleCI Status PRs Welcome

RouteKit is a set of tools for generating lightweight and efficient routers.

packages NPM version
routekit npm version
routekit-resolver npm version

Installation

$ npm install -D routekit

Usage Example

Create a routes file: routes.build.js

#!/usr/bin/env node
 
import { r, emitter } from "routekit";
 
const enum Location { Home, UserView, UserEdit }
 
process.stdout.write(emitter()(
  r("/", Location.Home),
  r("/user/:id", Location.UserView),
  r("/user/:id/edit", Location.UserEdit),
));

Run routes.build.js file

$ node routes.build.js > routes.js

And it will generate routes.js file with a compact flattened trie.

const ROUTES = {
  f: [35, 38, 33, 7],
  p: ["user/", "/edit"],
  s: [0, 1, 2],
};

Emmiter

Emitter generates flattened tries that can be used by routekit-resolver for matching urls.

export function emitter<T>(name = "ROUTES"): (...routes: Route<T>[]) => string;
export function injector<T>(src: string): (...routes: Route<T>[]) => string;

inject function injects code blocks into existing code using incode package. This function is using routekit prefix to detect injectable regions.

Resolver

Installation

NPM package routekit-resolver provides a commonjs, es2015 modules and TypeScript typings.

npm install routekit-resolver

Usage Example

import { resolve } from "routekit-resolver";
 
// routekit:emit("routes")
const ROUTES = {
  f: [35, 38, 33, 7],
  p: ["user/", "/edit"],
  s: [0, 1, 2],
};
// routekit:end
 
const match = (path) => resolve(ROUTES, path);
 
match("/user/123");
// {
//   state: 1,
//   vars: ["123"],
// }

API

export interface ResolveResult<T> {
  readonly state: T;
  readonly vars: string[];
}
 
export function resolve<T>(map: RouteMap<T>, path: string): ResolveResult<T> | null;

resolve() function has 2 parameters:

  • map is a flattened trie generated by routekit.
  • path is a path that should be resolved.

When resolve function returns null value it means that no match was found.

Package Sidebar

Install

npm i routekit

Weekly Downloads

0

Version

0.5.0

License

MIT

Unpacked Size

36.9 kB

Total Files

27

Last publish

Collaborators

  • localvoid