havana-router

0.1.4 • Public • Published

Havana router

NPM version Build Status Dependency status

A simple router for routed response handlers.

Havana router subscribes to the route.find event published by a routed response handler. When it receives a route.find event it will iterate through the array of routes it was instantiated with, attempting to match on the url and method. If it matches a route Havana router will publish a route.found event for the routed response handler to consume. If it fails to match a route Havana router will publish a route.error event.

How to install

npm install havana-router

How to use

import Event from 'havana-event';
import Router from 'havana-router';
import Server from 'havana-server';
 
const event = new Event();
 
const reporting = {
  'level': 2, 
  'reporter': console.log,
};
 
const server = new Server({
  'event': event,
  'reporting': reporting,
});
 
new Router({
  'event': event,
  'reporting': reporting,
  'routes': [
    { 
      'url': '/',
      'method': 'GET',
      'content': 'Home page',
    },
    { 
      'url': '/about',
      'method': 'GET',
      'content': 'About page',
    },
  ],
});
 
// Add a routed response handler here
 
server.listen( 3000 );

Event list

Events take the form of Havana event or a library with an interchangeable API.

Publish

  • route.found: Signifies that Havana router has matched a route, publishing the route data for consumption by a routed response handler.
  • route.error: Signifies that Havana router was unable to match a route.

Subscribe

  • route.find: Allows a routed response handler to notify Havana router that it wishes to receive route data that matches the published url and method.

ES2015+

Havana router is written using ES2015+ syntax.

However, by default this module will use an ES5 compatible file that has been compiled using Babel.

In the dist directory there are four files, the default is router.server.js. The default when using a client-side bundler that supports the browser field spec is router.browser.js.

Havana router currently requires the Babel polyfill. You are expected to supply this yourself. However, as a courtesy you will also find router.server.with-polyfill.js and router.browser.with-polyfill.js in the dist directory.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.1.4
    2
    • latest

Version History

Package Sidebar

Install

npm i havana-router

Weekly Downloads

2

Version

0.1.4

License

ISC

Last publish

Collaborators

  • colinmeinke