0.5.0 • Published 5 years ago

routekit v0.5.0

Weekly downloads
3
License
MIT
Repository
github
Last release
5 years ago

RouteKit · GitHub license codecov CircleCI Status PRs Welcome

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

packagesNPM version
routekitnpm version
routekit-resolvernpm 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.

0.5.0

5 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.1.0

7 years ago

0.0.1

7 years ago