A simple server-side url router using Deterministic Finite Automaton.
TypeScript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
test
.babelrc
.gitignore
.npmignore
README.md
circle.yml
dfa_table.ts
index.ts
package.json
router.ts
tsconfig.json
tslint.json

README.md

dfa-router

CircleCI Codecov

A simple server-side url router using Deterministic Finite Automaton.

Installation

This is published at npm registry: dfa-router.

You can install it via npm, yarn or what you like.

npm install dfa-router

How to Use

It behaves like a simple key-value map.

const router = new Router();
router.add('GET', '/foo', 'foo');
router.add('GET', '/bar', 'bar');

const foo = router.route('GET', '/foo');
assert.deepEqual(foo, {
  type: 'found',
  value: 'foo',
  params: new Map([]),
});
const bar = router.route('GET', '/bar');
assert.deepEqual(bar, {
  type: 'found',
  value: 'bar',
  params: new Map([]),
});

And also, it can capture parameters.

const router = new Router();
router.add('GET', '/:param', 'foo');

const foo = router.route('GET', '/value');
assert.deepEqual(foo, {
  type: 'found',
  value: 'foo',
  params: new Map([
    ['param', 'value']
  ]),,
});

See examples/server.js and test/ to learn more.