@eggjs/extend2 5.0.0-beta.20 → 5.0.0-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -4
- package/dist/index.js +65 -37
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
//#endregion
|
|
4
|
-
export { extend as default, extend };
|
|
1
|
+
export declare function extend<T = Record<string, any>>(deepOrTarget?: unknown, ...objects: unknown[]): T;
|
|
2
|
+
export default extend;
|
package/dist/index.js
CHANGED
|
@@ -1,42 +1,70 @@
|
|
|
1
|
-
//#region src/index.ts
|
|
2
1
|
const hasOwn = Object.prototype.hasOwnProperty;
|
|
3
2
|
const toStr = Object.prototype.toString;
|
|
4
3
|
function isPlainObject(obj) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
if (!obj || toStr.call(obj) !== '[object Object]') {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
const hasOwnConstructor = hasOwn.call(obj, 'constructor');
|
|
8
|
+
const hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');
|
|
9
|
+
// Not own constructor property must be Object
|
|
10
|
+
if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
// Own properties are enumerated firstly, so to speed up,
|
|
14
|
+
// if last one is own, then all properties are own.
|
|
15
|
+
let key;
|
|
16
|
+
for (key in obj) {
|
|
17
|
+
/**/
|
|
18
|
+
}
|
|
19
|
+
return typeof key === 'undefined' || hasOwn.call(obj, key);
|
|
12
20
|
}
|
|
13
|
-
function extend(deepOrTarget, ...objects) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
21
|
+
export function extend(deepOrTarget, ...objects) {
|
|
22
|
+
// extend(deep, target, obj1, obj2, ...)
|
|
23
|
+
// extend(target, obj1, obj2, ...)
|
|
24
|
+
let target = deepOrTarget;
|
|
25
|
+
let i = 0;
|
|
26
|
+
const length = objects.length;
|
|
27
|
+
let deep = false;
|
|
28
|
+
// Handle a deep copy situation
|
|
29
|
+
if (typeof target === 'boolean') {
|
|
30
|
+
// extend(deep, target, obj1, obj2, ...)
|
|
31
|
+
deep = target;
|
|
32
|
+
target = objects[0] || {};
|
|
33
|
+
// skip the boolean and the target
|
|
34
|
+
i = 1;
|
|
35
|
+
}
|
|
36
|
+
else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {
|
|
37
|
+
// extend(null, obj1, obj2, ...)
|
|
38
|
+
target = {};
|
|
39
|
+
}
|
|
40
|
+
for (; i < length; ++i) {
|
|
41
|
+
const options = objects[i];
|
|
42
|
+
// Only deal with non-null/undefined values
|
|
43
|
+
if (options === null || options === undefined)
|
|
44
|
+
continue;
|
|
45
|
+
// Extend the base object
|
|
46
|
+
for (const name in options) {
|
|
47
|
+
if (name === '__proto__')
|
|
48
|
+
continue;
|
|
49
|
+
const src = target[name];
|
|
50
|
+
const copy = options[name];
|
|
51
|
+
// Prevent never-ending loop
|
|
52
|
+
if (target === copy)
|
|
53
|
+
continue;
|
|
54
|
+
// Recurse if we're merging plain objects
|
|
55
|
+
if (deep && copy && isPlainObject(copy)) {
|
|
56
|
+
const clone = src && isPlainObject(src) ? src : {};
|
|
57
|
+
// Never move original objects, clone them
|
|
58
|
+
target[name] = extend(deep, clone, copy);
|
|
59
|
+
// Don't bring in undefined values
|
|
60
|
+
}
|
|
61
|
+
else if (typeof copy !== 'undefined') {
|
|
62
|
+
target[name] = copy;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Return the modified object
|
|
67
|
+
return target;
|
|
38
68
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
//#endregion
|
|
42
|
-
export { src_default as default, extend };
|
|
69
|
+
export default extend;
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7QUFDL0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFFeEMsU0FBUyxhQUFhLENBQUMsR0FBWTtJQUNqQyxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQ3BCLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMxRyw4Q0FBOEM7SUFDOUMsSUFBSSxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9ELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHlEQUF5RDtJQUN6RCxtREFBbUQ7SUFDbkQsSUFBSSxHQUF1QixDQUFDO0lBQzVCLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUk7SUFDTixDQUFDO0lBRUQsT0FBTyxPQUFPLEdBQUcsS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQTBCLFlBQXNCLEVBQUUsR0FBRyxPQUFrQjtJQUMzRix3Q0FBd0M7SUFDeEMsa0NBQWtDO0lBQ2xDLElBQUksTUFBTSxHQUFHLFlBQW1CLENBQUM7SUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7SUFFakIsK0JBQStCO0lBQy9CLElBQUksT0FBTyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDaEMsd0NBQXdDO1FBQ3hDLElBQUksR0FBRyxNQUFNLENBQUM7UUFDZCxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixrQ0FBa0M7UUFDbEMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNSLENBQUM7U0FBTSxJQUFJLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMxRixnQ0FBZ0M7UUFDaEMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFRLENBQUM7UUFDbEMsMkNBQTJDO1FBQzNDLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssU0FBUztZQUFFLFNBQVM7UUFFeEQseUJBQXlCO1FBQ3pCLEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxJQUFJLEtBQUssV0FBVztnQkFBRSxTQUFTO1lBRW5DLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFM0IsNEJBQTRCO1lBQzVCLElBQUksTUFBTSxLQUFLLElBQUk7Z0JBQUUsU0FBUztZQUU5Qix5Q0FBeUM7WUFDekMsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLEtBQUssR0FBRyxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsMENBQTBDO2dCQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRXpDLGtDQUFrQztZQUNwQyxDQUFDO2lCQUFNLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLE9BQU8sTUFBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxlQUFlLE1BQU0sQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/extend2",
|
|
3
3
|
"author": "popomore <sakura9515@gmail.com>",
|
|
4
|
-
"version": "5.0.0-beta.
|
|
4
|
+
"version": "5.0.0-beta.22",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=22.18.0"
|
|
7
7
|
},
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"tsdown": "^0.15.4",
|
|
26
26
|
"typescript": "^5.9.3",
|
|
27
27
|
"vitest": "4.0.0-beta.16",
|
|
28
|
-
"@eggjs/tsconfig": "3.1.0-beta.
|
|
28
|
+
"@eggjs/tsconfig": "3.1.0-beta.22"
|
|
29
29
|
},
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"files": [
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"types": "./dist/index.d.ts",
|
|
41
41
|
"module": "./dist/index.js",
|
|
42
42
|
"scripts": {
|
|
43
|
-
"build": "tsdown",
|
|
43
|
+
"build": "tsdown && rimraf dist && tsc -b --clean && tsc",
|
|
44
44
|
"typecheck": "tsc --noEmit",
|
|
45
45
|
"lint": "oxlint",
|
|
46
46
|
"test": "vitest run"
|