All files compose.js

83.33% Statements 5/6
0% Branches 0/1
66.67% Functions 2/3
100% Lines 4/4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21                    1x 1x         1x     1x  
/**
 * @description - override defaults params with external, which should skip undefined override
 * @author - huang.jian <hjj491229492@hotmail.com>
 *
 * @param {object} params - param from cli, maybe undefined value
 * @param {object} defaults - base params
 *
 * @todo - params validate
 */
function compose(params, defaults = {}) {
  const keys = Reflect.ownKeys(params).filter((key) => Reflect.get(params, key));
  const usefulParams = keys.reduce((acc, key) => Object.assign(
    {}, acc, { [key]: Reflect.get(params, key) })
    , {}
  );
 
  return Object.assign({}, defaults, usefulParams);
}
 
module.exports = compose;