Giter VIP home page Giter VIP logo

co-hapi's Introduction

⚠️ DEPRECATED⚠️

co-hapi

Build Dependencies

This module lets you use powered by co generators inside hapi applications. Node 0.11+ is required. Forget aboout callback hell.

Install

$ npm install co-hapi co hapi

Usage

Use

let Hapi = require("co-hapi");

instead of

var Hapi = require("hapi");

See a demo bellow to see abilities of this module

"use strict";
let Hapi = require("co-hapi");
let co = require("co");

co(function*(){
  let server = new Hapi.Server(8080);
  server.ext("onRequest", function*(request){
    request.setUrl("/test");
    //return nothing <=> next()
    //throw error <=> next(err)
    //return value <=> next(null, value)
  });

  server.handler("myHandler", function(route, options){
    return function*(request, reply){
      //'reply' is optional. You can return value (<=> reply(value)) or throw an error (<=> reply(errorObject)) here instead of using 'reply' directly
      return {data: [1, 2, 3]};
    };
  });

  server.method("add", function*(a, b){
    return a + b; //use 'return' or 'throw' instead of 'next'
  });

  let result = yield server.methods.add(2, 3); //calling server's method via yield (the way with callback is supported too)

  yield server.pack.register(require("my-plugin")); //registering of plugin

  server.route({
    method: "GET",
      path: "/",
      config: {
        pre: [{method: function*(request, reply){
          //'reply' is optional here too
        }, assign: "pre1"}]
      },
      handler: function* (request, reply) {
        //'reply' is optional here too
        let result = yield someOperation();
        reply(result); //or use 'return result;' instead of it
      }
  });
  let v = yield Hapi.state.prepareValue("name", val, {});
  let pack = yield Hapi.Pack.compose(manifest); //composing a pack
  yield server.start();
  //the server will be started here. Use 'yield server.stop()' to stop it
})(function(err){
  if(err){
    console.error(err);
  }
});


Inside plugin

module.exports.register = function*(plugin, options){ // plugins with function(plugin, options, next){} are supported too
  //do plugins operations here
  plugin.ext("onRequest", function*(request){

  });

  plugin.dependency("my-plugin1", function*(plugin){
    //actions after loading my-plugin1
  });

  plugin.route({...}); //like server.route()

  plugin.handler(...); //like server.handler()
};

module.exports.register.attributes = {
  name: "name",
  version: "1.0.0"
};

co-hapi's People

Contributors

avbel avatar scottbarstow avatar simondegraeve avatar troft avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.