Nature Preceded Machines

    falcor-hapi

    0.0.3 • Public • Published

    falcor-hapi

    Server middleware for falcor-hapi

    Working usage example of the basic repro in falcor-hapi-demo/

    Usage

    Minimalistic example

    var FalcorServer = require('falcor-hapi');
    var Hapi = require('hapi');
    var TestRouter = <your router here>;
    
    var app = new Hapi.Server();
    app.connection({
        host: "localhost",
        port: 9090
    });
    
    app.route({
        method: ['GET', 'POST'],
        path: '/model.json',
        handler: FalcorServer.dataSourceRoute(function(req, res) {
            return new TestRouter();
        })
    });
    app.start();
    

    Hapi Plugin Usage

    You can also register this module as an Hapi Plugin and use its provided Falcor handler.

    Features

    • Provides restful router with cached routes out of the box.
    • Both the Hapi Request and Reply are available within your routes as this.req and this.reply.
    • Validates your routes with JOI.
    • You can provide your own initialize method to the router.
    • Alternately, you can provide your own Router class and the handler will mixin the logic to cache your routes and the base Falcor router class.
    var Hapi = require('hapi');
    
    var app = new Hapi.Server();
    app.connection({
        host: "localhost",
        port: 9090
    });
    
    app.register(require('falcor-hapi'), function (err) {
       if (err) {
           console.error('Failed to load plugin:', err);
       }
    
       app.route({
         method: ['GET', 'POST'],
         path: '/model.json',
         handler: {
             falcor: {
                 routes: routes,                                         // Your routes
                 cacheRoutes: true,                                      // Whether to cache your routes, default to true
                 options: {debug: true},                                 // Option to give to Falcor router
                 initialize: function() {                                // Optional initialize method
                    this.foo = this.req.payload.meaningoflife || 42;
                 },
                 routerClass: MyRouterClass                              // Optional routerClass to use
             }
         }
       });
    
       app.start();
    });
    

    Development

    Please run linting before pushing on repo

    npm run lint
    

    Todo

    • Create mocha test for regression and development instead of using example

    Keywords

    none

    Install

    npm i falcor-hapi

    DownloadsWeekly Downloads

    4

    Version

    0.0.3

    License

    none

    Last publish

    Collaborators

    • kkwon
    • kaylie
    • donutespresso
    • tbranyen
    • tvui-user
    • tvuiops-user
    • gsimpson
    • barb_the_builder
    • mmarchini
    • wesleytodd
    • satyend