Source: obj/copyall.js

/**
 * This is a 'dumb' copy method.
 *
 * It only copies enumerable properties, does no type checking, 
 * and has no qualms about overwriting properties.
 * 
 * Use `copyProps`, or `mergeNested` for more robust versions.
 * 
 * @alias module:@lumjs/core/obj.copyAll
 */
function copyAll(target, ...sources)
{
  for (const source of sources)
  {
    for (const name in source)
    {
      target[name] = source[name];
    }
  }
  return target;
}
exports.copyAll = copyAll;

/**
 * Make a copy of a single object using `copyAll`.
 * 
 * Use `clone` for a more robust version.
 * 
 * Alias: `copyAll.clone`
 * 
 * @alias module:@lumjs/core/obj.duplicateOne
 * @param {object} obj - The object to duplicate.
 * @returns {object} A clone of the object.
 */
exports.duplicateOne = copyAll.clone = obj => copyAll({}, obj);

/**
 * Make a new object containing properties from other objects using `copyAll`.
 * 
 * Use `copyProps.into({}).from(...sources)` for a more robust version.
 * 
 * Alias: `copyAll.duplicate`
 * 
 * @alias module:@lumjs/core/obj.duplicateOne
 * @param {object} obj - The object to duplicate.
 * @returns {object} A clone of the object.
 */
exports.duplicateAll = copyAll.duplicate = () => copyAll({}, ...arguments);