🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@eggjs/extend2

Package Overview
Dependencies
Maintainers
8
Versions
63
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@eggjs/extend2 - npm Package Compare versions

Comparing version
5.0.0-beta.35
to
5.0.0-beta.36
+4
-2
dist/index.d.ts

@@ -1,2 +0,4 @@

export declare function extend<T = Record<string, any>>(deepOrTarget?: unknown, ...objects: unknown[]): T;
export default extend;
//#region src/index.d.ts
declare function extend<T = Record<string, any>>(deepOrTarget?: unknown, ...objects: unknown[]): T;
//#endregion
export { extend as default, extend };

@@ -0,70 +1,42 @@

//#region src/index.ts
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);
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");
if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) return false;
let key;
for (key in obj);
return typeof key === "undefined" || hasOwn.call(obj, key);
}
export 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;
function extend(deepOrTarget, ...objects) {
let target = deepOrTarget;
let i = 0;
const length = objects.length;
let deep = false;
if (typeof target === "boolean") {
deep = target;
target = objects[0] || {};
i = 1;
} else if (typeof target !== "object" && typeof target !== "function" || target == null) target = {};
for (; i < length; ++i) {
const options = objects[i];
if (options === null || options === void 0) continue;
for (const name in options) {
if (name === "__proto__") continue;
const src = target[name];
const copy = options[name];
if (target === copy) continue;
if (deep && copy && isPlainObject(copy)) {
const clone = src && isPlainObject(src) ? src : {};
target[name] = extend(deep, clone, copy);
} else if (typeof copy !== "undefined") target[name] = copy;
}
}
return target;
}
export default extend;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7QUFDL0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFFeEMsU0FBUyxhQUFhLENBQUMsR0FBWTtJQUNqQyxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQ3BCLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMxRyw4Q0FBOEM7SUFDOUMsSUFBSSxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9ELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHlEQUF5RDtJQUN6RCxtREFBbUQ7SUFDbkQsSUFBSSxHQUF1QixDQUFDO0lBQzVCLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUk7SUFDTixDQUFDO0lBRUQsT0FBTyxPQUFPLEdBQUcsS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQTBCLFlBQXNCLEVBQUUsR0FBRyxPQUFrQjtJQUMzRix3Q0FBd0M7SUFDeEMsa0NBQWtDO0lBQ2xDLElBQUksTUFBTSxHQUFHLFlBQW1CLENBQUM7SUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7SUFFakIsK0JBQStCO0lBQy9CLElBQUksT0FBTyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDaEMsd0NBQXdDO1FBQ3hDLElBQUksR0FBRyxNQUFNLENBQUM7UUFDZCxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixrQ0FBa0M7UUFDbEMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNSLENBQUM7U0FBTSxJQUFJLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMxRixnQ0FBZ0M7UUFDaEMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFRLENBQUM7UUFDbEMsMkNBQTJDO1FBQzNDLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssU0FBUztZQUFFLFNBQVM7UUFFeEQseUJBQXlCO1FBQ3pCLEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxJQUFJLEtBQUssV0FBVztnQkFBRSxTQUFTO1lBRW5DLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFM0IsNEJBQTRCO1lBQzVCLElBQUksTUFBTSxLQUFLLElBQUk7Z0JBQUUsU0FBUztZQUU5Qix5Q0FBeUM7WUFDekMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLEtBQUssR0FBRyxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsMENBQTBDO2dCQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRXpDLGtDQUFrQztZQUNwQyxDQUFDO2lCQUFNLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLE9BQU8sTUFBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxlQUFlLE1BQU0sQ0FBQyJ9
var src_default = extend;
//#endregion
export { src_default as default, extend };
{
"name": "@eggjs/extend2",
"author": "popomore <sakura9515@gmail.com>",
"version": "5.0.0-beta.35",
"engines": {
"node": ">=22.18.0"
},
"publishConfig": {
"access": "public"
},
"version": "5.0.0-beta.36",
"description": "Port of jQuery.extend for Node.js",
"keywords": [
"clone",
"extend",
"clone",
"merge"
],
"homepage": "https://github.com/eggjs/egg/tree/next/packages/extend2",
"license": "MIT",
"author": "popomore <sakura9515@gmail.com>",
"repository": {

@@ -22,11 +18,2 @@ "type": "git",

},
"homepage": "https://github.com/eggjs/egg/tree/next/packages/extend2",
"devDependencies": {
"oxlint": "^1.31.0",
"tsdown": "^0.17.0",
"typescript": "^5.9.3",
"vitest": "^4.0.15",
"@eggjs/tsconfig": "3.1.0-beta.35"
},
"license": "MIT",
"files": [

@@ -36,2 +23,5 @@ "dist"

"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {

@@ -41,11 +31,15 @@ ".": "./dist/index.js",

},
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"module": "./dist/index.js",
"publishConfig": {
"access": "public"
},
"devDependencies": {
"typescript": "^5.9.3",
"@eggjs/tsconfig": "3.1.0-beta.36"
},
"engines": {
"node": ">=22.18.0"
},
"scripts": {
"build": "tsdown && rimraf dist *.tsbuildinfo && tsc -p tsconfig.build.json",
"typecheck": "tsc --noEmit",
"lint": "oxlint",
"test": "vitest run"
"typecheck": "tsgo --noEmit"
}
}