jsonapi-server-mini
Version:
Minimalistic JSON:API server for Node.js and MongoDB
22 lines (20 loc) • 734 B
JavaScript
/**
* Apply single argument middleware to results.
* @param {Object} options Route definion
* @param {String} middleware Name of expected middleware
* @param {String} method Method for this middleware
* @param {Object|Array} data Results on which to apply the middleware
* @return {Object|Array} Mutated results
*/
module.exports = function middlefy(options, middleware, method, data) {
const middlewares = [
`${method}.middleware.${middleware}`, // method
`middleware.${middleware}`, // route
`args.middleware.${middleware}`, // global
]
return middlewares.reduce((data, path) => {
const fn = get(options, path, null)
if (typeof fn == 'function') return fn(data)
return data
}, data)
}