mw-cls

Advanced CLS (continuation local storage) middleware for express, restify, ...

mw-cls

Advanced CLS (continuation local storage) middleware (for express, restify, ...)

Namespace middleware

var session = cls.createNamespaceMiddleware('session');

run the following middleware within the namespace

var cls = require('mw-cls');
var session = cls.createNamespaceMiddleware('session');
 
app.use(session.run());

set the namespace key with a value

var cls = require('mw-cls');
var session = cls.createNamespaceMiddleware('session');
 
app.use(session.run()); # required
app.get('/',
  session.set('foo.bar.baz', 'value'),
  ...);

set the namespace key as the result of an async function

var cls = require('mw-cls');
var session = cls.createNamespaceMiddleware('session');
 
app.use(session.run()); # required
app.get('/',
  session.asyncSet('foo.bar.baz', asyncValue),
  ...); // session.get('foo').bar.baz becomes 'value' 
 
function asyncValue (cb) {
  setTimeout(function () {
    cb(null, 'value');
  }, 100);
}

includeError option

var cls = require('mw-cls');
var session = cls.createNamespaceMiddleware('session');
 
app.use(session.run()); # required
app.get('/',
  session.asyncSet('foo.bar.baz', asyncValue, { includeError:true }),
  ...); // session.get('foo').bar.baz becomes [null, 'value'] 
 
function asyncValue (cb) {
  setTimeout(function () {
    cb(null, 'value');
  }, 100);
}

// forceReturnKeypath means no errors if keypath DNE

res.send the value for the namespace key

var cls = require('mw-cls');
var session = cls.createNamespaceMiddleware('session');
 
app.use(session.run()); # required
app.get('/',
  session.set('foo.bar.baz', 'value'), // session.get('foo').bar.baz becomes 'value' 
  session.send('foo.bar.baz')); // res.sends 'value', code defaults to 200 

// forceReturnKeypath means no errors if keypath DNE

res.json the value for the namespace key

var cls = require('mw-cls');
var session = cls.createNamespaceMiddleware('session');
 
app.use(session.run()); # required
app.get('/',
  session.set('foo.bar.baz', 'value'), // session.get('foo').bar.baz becomes 'value' 
  session.json('foo.bar')); // res.sends { bar: 'value' }, code defaults to 200 

mv, cp, del, unset, setFromReq

MIT