No description, website, or topics provided.
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.
tests
xware
.gitignore
README.md
index.js
package.json

README.md

organic-expressserver v0.4.0

The organelle wraps expressjs server http://expressjs.com/ v3.x.x

DNA structure and defaults

{
  "log": false,
  "port": 1337 || Number,
  "emitReady": "ExpressServer" || String,
  "emitServer": "HttpServer" || String,
  "middleware": Array,
  "afterware": Array,
  "reactOn": String
}
  • reactOn : String, optional if set will wait for given chemical type(without aggregating it). If not set, will start listening once instantiated.

"middleware" and "afterware" items

    {
      "source": "path/to/middleware/module",
      "arguments": Array
    }
  • arguments are applied to middleware module with context of the organelle

thereafter middleware module has the following signature/interface

module.exports = function(/* arguments */) {
   var plasma = this.plasma;
   var expressApp = this.app;
   var httpServer = this.server;
   // .... either do something with above without returning anything
   // or
   // return middleware function to be passed to express app.use
   return function(req, res, next) {
     // middleware implementation
   }
}
  • Organelle loads synchroniously all middleware modules.
  • Those of them which return function will be assigned respectively as middleware function to express app.
  • Middleware items are placed before express app router and afterware items are placed after the router.
  • Note that paths to middlware modules are relative to the current working directory.
  • Note that the organelle can load general purpose express/connect middlewares as well.

Emits chemicals when

started listening

Emitted with Chemical type value of emitReady. Chemical's structure:

{
  "type": `emitReady`,
  "data": ExpressApp
}

Optionally if emitServer is defined, emits Chemical type with value of emitServer. Chemical's structure:

{
  "type": `emitServer`,
  "data": HttpServer
}

Reacts to chemicals

type: "kill"

Closes underlaying httpServer instance. The organelles doesn't aggragates the chemical and leaves it passing forward.

Example DNA configuration

{
  "port": 8090,
  "middleware": [
    {
      "source": "node_modules/express/node_modules/connect/lib/middleware/cookieParser",
      "arguments": ["secret"]
    },
    { 
      "source": "node_modules/express/node_modules/connect/lib/middleware/bodyParser",
      "arguments": []
    },
    {
      "source": "xware/allowCrossDomain",
      "arguments": [],
    }
    { 
      "source": "xware/mongoSessions", 
      "arguments": [
        { "dbname": "test-webcell", "cookie_secret": "test" } 
      ]
    }
  ]
}