@eggjs/extend2 5.0.0-beta.34 → 5.0.0-beta.36
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 +4 -2
- package/dist/index.js +37 -65
- package/package.json +19 -25
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
//#region src/index.d.ts
|
|
2
|
+
declare function extend<T = Record<string, any>>(deepOrTarget?: unknown, ...objects: unknown[]): T;
|
|
3
|
+
//#endregion
|
|
4
|
+
export { extend as default, extend };
|
package/dist/index.js
CHANGED
|
@@ -1,70 +1,42 @@
|
|
|
1
|
+
//#region src/index.ts
|
|
1
2
|
const hasOwn = Object.prototype.hasOwnProperty;
|
|
2
3
|
const toStr = Object.prototype.toString;
|
|
3
4
|
function isPlainObject(obj) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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);
|
|
5
|
+
if (!obj || toStr.call(obj) !== "[object Object]") return false;
|
|
6
|
+
const hasOwnConstructor = hasOwn.call(obj, "constructor");
|
|
7
|
+
const hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, "isPrototypeOf");
|
|
8
|
+
if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) return false;
|
|
9
|
+
let key;
|
|
10
|
+
for (key in obj);
|
|
11
|
+
return typeof key === "undefined" || hasOwn.call(obj, key);
|
|
20
12
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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;
|
|
13
|
+
function extend(deepOrTarget, ...objects) {
|
|
14
|
+
let target = deepOrTarget;
|
|
15
|
+
let i = 0;
|
|
16
|
+
const length = objects.length;
|
|
17
|
+
let deep = false;
|
|
18
|
+
if (typeof target === "boolean") {
|
|
19
|
+
deep = target;
|
|
20
|
+
target = objects[0] || {};
|
|
21
|
+
i = 1;
|
|
22
|
+
} else if (typeof target !== "object" && typeof target !== "function" || target == null) target = {};
|
|
23
|
+
for (; i < length; ++i) {
|
|
24
|
+
const options = objects[i];
|
|
25
|
+
if (options === null || options === void 0) continue;
|
|
26
|
+
for (const name in options) {
|
|
27
|
+
if (name === "__proto__") continue;
|
|
28
|
+
const src = target[name];
|
|
29
|
+
const copy = options[name];
|
|
30
|
+
if (target === copy) continue;
|
|
31
|
+
if (deep && copy && isPlainObject(copy)) {
|
|
32
|
+
const clone = src && isPlainObject(src) ? src : {};
|
|
33
|
+
target[name] = extend(deep, clone, copy);
|
|
34
|
+
} else if (typeof copy !== "undefined") target[name] = copy;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return target;
|
|
68
38
|
}
|
|
69
|
-
|
|
70
|
-
|
|
39
|
+
var src_default = extend;
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { src_default as default, extend };
|
package/package.json
CHANGED
|
@@ -1,48 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/extend2",
|
|
3
|
-
"
|
|
4
|
-
"version": "5.0.0-beta.34",
|
|
5
|
-
"engines": {
|
|
6
|
-
"node": ">=22.18.0"
|
|
7
|
-
},
|
|
8
|
-
"publishConfig": {
|
|
9
|
-
"access": "public"
|
|
10
|
-
},
|
|
3
|
+
"version": "5.0.0-beta.36",
|
|
11
4
|
"description": "Port of jQuery.extend for Node.js",
|
|
12
5
|
"keywords": [
|
|
13
|
-
"extend",
|
|
14
6
|
"clone",
|
|
7
|
+
"extend",
|
|
15
8
|
"merge"
|
|
16
9
|
],
|
|
10
|
+
"homepage": "https://github.com/eggjs/egg/tree/next/packages/extend2",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"author": "popomore <sakura9515@gmail.com>",
|
|
17
13
|
"repository": {
|
|
18
14
|
"type": "git",
|
|
19
15
|
"url": "git+https://github.com/eggjs/egg.git",
|
|
20
16
|
"directory": "packages/extend2"
|
|
21
17
|
},
|
|
22
|
-
"homepage": "https://github.com/eggjs/egg/tree/next/packages/extend2",
|
|
23
|
-
"devDependencies": {
|
|
24
|
-
"oxlint": "^1.24.0",
|
|
25
|
-
"tsdown": "0.15.11",
|
|
26
|
-
"typescript": "^5.9.3",
|
|
27
|
-
"vitest": "4.0.5",
|
|
28
|
-
"@eggjs/tsconfig": "3.1.0-beta.34"
|
|
29
|
-
},
|
|
30
|
-
"license": "MIT",
|
|
31
18
|
"files": [
|
|
32
19
|
"dist"
|
|
33
20
|
],
|
|
34
21
|
"type": "module",
|
|
22
|
+
"main": "./dist/index.js",
|
|
23
|
+
"module": "./dist/index.js",
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
35
25
|
"exports": {
|
|
36
26
|
".": "./dist/index.js",
|
|
37
27
|
"./package.json": "./package.json"
|
|
38
28
|
},
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"typescript": "^5.9.3",
|
|
34
|
+
"@eggjs/tsconfig": "3.1.0-beta.36"
|
|
35
|
+
},
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=22.18.0"
|
|
38
|
+
},
|
|
42
39
|
"scripts": {
|
|
43
|
-
"
|
|
44
|
-
"typecheck": "tsc --noEmit",
|
|
45
|
-
"lint": "oxlint",
|
|
46
|
-
"test": "vitest run"
|
|
40
|
+
"typecheck": "tsgo --noEmit"
|
|
47
41
|
}
|
|
48
42
|
}
|