0.5.0 • Published 7 years ago
routekit v0.5.0
RouteKit ·

RouteKit is a set of tools for generating lightweight and efficient routers.
| packages | NPM version |
|---|---|
| routekit | |
| routekit-resolver |
Installation
$ npm install -D routekitUsage 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.jsAnd 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-resolverUsage 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:
mapis a flattened trie generated by routekit.pathis a path that should be resolved.
When resolve function returns null value it means that no match was found.