forte-lifecycle
v2.2.2
Published
An express middleware that automatically hooks in to forte perf and analytics
Downloads
25
Keywords
Readme
forte-lifecycle
Forte Lifecycle is expressjs middleware that provides lifecycle magic to your Forte experience apps.
Features
- Automatic Organization Resolver and Cache
The first request processed will cause aforte-api
call to be made that fills the organization cache. A request.organization prop will also be available for use in other areas of your express server. - Automatic server.renderTime metric tracking
All requests are timed and logged via node-statsd
Install
$ npm i -S forte-lifecycle
Documentation
Quick Start
var express = require('express')
var forteApi = require('forte-api')
var lifecycle = require('forte-lifecycle')
var app = express()
var api = forteApi({...})
// register the middleware
// be sure to register the middleware before any routes that require trunk/branch scope info
app.use(lifecycle(api))
// now, all requests will have a request.lifecycle property
// and log server.renderTime using node-statsd
app.get('/', function (req, res) {
res.send('Hello ' + req.lifecycle.scope.trunk '!');
});
app.listen(3000, function () {
console.log('Forte Experience app listening on port 3000!');
})
API
Constructor
ForteLifecycle(apiClient, [options])
Creates an instance of the Forte Lifecycle middleware.
apiClient:
Aforte-api
client instance or an object that conforms to the following interface can also be supplied:organizations.getOne(filter): {organization}
Returns a promise that returns a single organization.filter
is an object map of props to filter by e.x.:{ hostname: '...'}
.organizations.getMany(filter): [{organization}, ...]
Returns a promise that returns all organizations.filter
is an object map of props to filter by e.x.:{ parentID: '...'}
.
options:
cacheDuration:
The duration in milliseconds or string in ms format to cache organizations lookups.default: '15m'
stats:
An optional configuration object fornode-statsd
.default: node-statsd defaults
see node-statsd usage
Request Properties
The lifecycle middleware adds the following properties to the request for use in subsequent middleware/handlers:
request.lifecycle.scope: {object}
hostname: {string}
The hostname of the request derived fromrequest.headers.host
.trunk: {string}
The trunk organization ID for the request.branch: {string}
The branch organization ID for the request.