As extracted from keystone.js utils
/**
* Copies and merges options with defaults.
*
* @param {Object} defaults
* @param {Object} options
* @return {Object} the options argument merged with defaults
* @api public
*/
var options = exports.options = function options (defaults, ops) {
ops = ops || {};
if (!defaults) return ops;
var keys = Object.keys(defaults), i = keys.length, k;
while (i--) {
k = keys[i];
if (!(k in ops)) {
ops[k] = defaults[k];
}
}
return ops;
};