UNPKG

module-composer

Version:

Bring order to chaos. Level up your JS application architecture with Module Composer, a tiny but powerful module composition utility based on functional dependency injection.

15 lines (10 loc) 487 B
const _ = require('./util'); module.exports = (callback = c => c, ...initialConfigs) => { const mergeWith = (customiser, ...configs) => { const reducer = (acc, c) => _.mergeWith(acc, _.invokeOrReturn(c, acc), customiser); const config = [...initialConfigs, ...configs].flat().reduce(reducer, {}); return callback(config); }; const merge = (...configs) => mergeWith(undefined, ...configs); return Object.assign(merge, { merge, mergeWith }); };