@eggjs/extend2 5.0.0-beta.20 → 5.0.0-beta.21

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 CHANGED
@@ -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 };
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
- 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);
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
- 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;
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
- var src_default = extend;
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.20",
4
+ "version": "5.0.0-beta.21",
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.20"
28
+ "@eggjs/tsconfig": "3.1.0-beta.21"
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"