Wondering what’s next for npm?Check out our public roadmap! »


    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.


    • 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.


    • 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.


    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.


    npm i havana-router

    DownloadsWeekly Downloads






    Last publish


    • avatar