curry-di

Similar to the standard curry function found in functional programming but allowing parameters to applied non-sequentially based on names matching a supplied object

npm install curry-di
8 downloads in the last month

curry-di

Similar to the standard curry function found in functional programming but allowing parameters to applied non-sequentially based on names matching a supplied object.

The primary purpose of this library is so you can use function parameters to include dependencies of that function and later normalize them into a standard form.

An Example

routes/user.js
module.exports.register = function(err, req, res, bcrypt, emailSender, db, next) { }
module.exports.login = function(err, req, res, memcache, db, next) { }
app.js
var curryDi = require('curry-di');
var dependencies = {
    emailSender: var emailSender = curry(require('email-sender'))('localhost'),
    bcrypt: require('bcrypt'),
    db: db,
    memcacheApi: memcacheApi
};

// The return value of curryDi(dependencies, ...) is a function with the
// signature function(err, req, res, next) as all other parameters have 
// been matched to the dependences object.
app.post('/user/register', curryDi(dependencies, userRoute.register));
app.post('/user/login', curryDi(dependencies, userRoute.login));
npm loves you