UNPKG

extend2

Version:

Port of jQuery.extend for Node.js

74 lines 5.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extend = void 0; const hasOwn = Object.prototype.hasOwnProperty; const toStr = Object.prototype.toString; function isPlainObject(obj) { if (!obj || toStr.call(obj) !== '[object Object]') { return false; } const hasOwnConstructor = hasOwn.call(obj, 'constructor'); const hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { return false; } // Own properties are enumerated firstly, so to speed up, // if last one is own, then all properties are own. let key; for (key in obj) { /**/ } return typeof key === 'undefined' || hasOwn.call(obj, key); } function extend(deepOrTarget, ...objects) { // extend(deep, target, obj1, obj2, ...) // extend(target, obj1, obj2, ...) let target = deepOrTarget; let i = 0; const length = objects.length; let deep = false; // Handle a deep copy situation if (typeof target === 'boolean') { // extend(deep, target, obj1, obj2, ...) deep = target; target = objects[0] || {}; // skip the boolean and the target i = 1; } else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) { // extend(null, obj1, obj2, ...) target = {}; } for (; i < length; ++i) { const options = objects[i]; // Only deal with non-null/undefined values if (options === null || options === undefined) continue; // Extend the base object for (const name in options) { if (name === '__proto__') continue; const src = target[name]; const copy = options[name]; // Prevent never-ending loop if (target === copy) continue; // Recurse if we're merging plain objects if (deep && copy && isPlainObject(copy)) { const clone = src && isPlainObject(src) ? src : {}; // Never move original objects, clone them target[name] = extend(deep, clone, copy); // Don't bring in undefined values } else if (typeof copy !== 'undefined') { target[name] = copy; } } } // Return the modified object return target; } exports.extend = extend; exports.default = extend; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7QUFDL0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFFeEMsU0FBUyxhQUFhLENBQUMsR0FBWTtJQUNqQyxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2pJLDhDQUE4QztJQUM5QyxJQUFJLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDL0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQseURBQXlEO0lBQ3pELG1EQUFtRDtJQUNuRCxJQUFJLEdBQXVCLENBQUM7SUFDNUIsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSTtJQUNOLENBQUM7SUFFRCxPQUFPLE9BQU8sR0FBRyxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUEwQixZQUFzQixFQUFFLEdBQUcsT0FBa0I7SUFDM0Ysd0NBQXdDO0lBQ3hDLGtDQUFrQztJQUNsQyxJQUFJLE1BQU0sR0FBRyxZQUFtQixDQUFDO0lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBRWpCLCtCQUErQjtJQUMvQixJQUFJLE9BQU8sTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLHdDQUF3QztRQUN4QyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2QsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsa0NBQWtDO1FBQ2xDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDUixDQUFDO1NBQU0sSUFBSSxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUYsZ0NBQWdDO1FBQ2hDLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBUSxDQUFDO1FBQ2xDLDJDQUEyQztRQUMzQyxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLFNBQVM7WUFBRSxTQUFTO1FBRXhELHlCQUF5QjtRQUN6QixLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBSSxLQUFLLFdBQVc7Z0JBQUUsU0FBUztZQUVuQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTNCLDRCQUE0QjtZQUM1QixJQUFJLE1BQU0sS0FBSyxJQUFJO2dCQUFFLFNBQVM7WUFFOUIseUNBQXlDO1lBQ3pDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELDBDQUEwQztnQkFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUUzQyxrQ0FBa0M7WUFDbEMsQ0FBQztpQkFBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixPQUFPLE1BQVcsQ0FBQztBQUNyQixDQUFDO0FBbERELHdCQWtEQztBQUVELGtCQUFlLE1BQU0sQ0FBQyJ9