@mongez/reinforcements 2.3.3 → 2.3.4
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/README.md +2 -0
- package/cjs/mixed/clone/clone.js +19 -18
- package/cjs/object/merge.js +1 -1
- package/esm/mixed/clone/clone.js +19 -18
- package/esm/object/merge.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2057,6 +2057,8 @@ To run tests run `npm run test` or `yarn test`
|
|
|
2057
2057
|
|
|
2058
2058
|
## Change Log
|
|
2059
2059
|
|
|
2060
|
+
- 2.3.4 (06 May 2023)
|
|
2061
|
+
- Fixed clone function array cloning does not lose reference for nested objects.
|
|
2060
2062
|
- 2.3.3 (06 May 2023)
|
|
2061
2063
|
- Fixed clone function array cloning does not lose reference for nested objects.
|
|
2062
2064
|
- 2.3.2 (06 May 2023)
|
package/cjs/mixed/clone/clone.js
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
function clone(value) {
|
|
3
|
-
if (typeof value
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
3
|
+
if (typeof value === "object" && value !== null) {
|
|
4
|
+
if (Array.isArray(value)) {
|
|
5
|
+
return value.map(item => clone(item));
|
|
6
|
+
} else if (value instanceof Date) {
|
|
7
|
+
return new Date(value.getTime());
|
|
8
|
+
} else if (value instanceof Set) {
|
|
9
|
+
return new Set(Array.from(value, clone));
|
|
10
|
+
} else if (value instanceof Map) {
|
|
11
|
+
return new Map(Array.from(value, ([key, val]) => [key, clone(val)]));
|
|
12
|
+
} else {
|
|
13
|
+
const clonedObject = Object.create(Object.getPrototypeOf(value));
|
|
14
|
+
return Object.assign(
|
|
15
|
+
clonedObject,
|
|
16
|
+
...Object.keys(value).map(key => ({
|
|
17
|
+
[key]: clone(value[key]),
|
|
18
|
+
})),
|
|
19
|
+
);
|
|
20
20
|
}
|
|
21
|
+
} else {
|
|
22
|
+
return value;
|
|
21
23
|
}
|
|
22
|
-
return clonedObject;
|
|
23
24
|
}
|
|
24
25
|
module.exports = clone;
|
package/cjs/object/merge.js
CHANGED
|
@@ -28,7 +28,7 @@ function isDescriptor(object) {
|
|
|
28
28
|
* Merge deep objects or arrays
|
|
29
29
|
*/
|
|
30
30
|
function merge(...objects) {
|
|
31
|
-
if (objects.length === 0) return objects[0];
|
|
31
|
+
if (objects.length === 0 || !objects[0]) return objects[0];
|
|
32
32
|
const refinedObjects = [];
|
|
33
33
|
for (let object of objects) {
|
|
34
34
|
if (isObject(object) || isArray(object)) {
|
package/esm/mixed/clone/clone.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
function clone(value) {
|
|
2
|
-
if (typeof value
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
if (typeof value === "object" && value !== null) {
|
|
3
|
+
if (Array.isArray(value)) {
|
|
4
|
+
return value.map(item => clone(item));
|
|
5
|
+
} else if (value instanceof Date) {
|
|
6
|
+
return new Date(value.getTime());
|
|
7
|
+
} else if (value instanceof Set) {
|
|
8
|
+
return new Set(Array.from(value, clone));
|
|
9
|
+
} else if (value instanceof Map) {
|
|
10
|
+
return new Map(Array.from(value, ([key, val]) => [key, clone(val)]));
|
|
11
|
+
} else {
|
|
12
|
+
const clonedObject = Object.create(Object.getPrototypeOf(value));
|
|
13
|
+
return Object.assign(
|
|
14
|
+
clonedObject,
|
|
15
|
+
...Object.keys(value).map(key => ({
|
|
16
|
+
[key]: clone(value[key]),
|
|
17
|
+
})),
|
|
18
|
+
);
|
|
19
19
|
}
|
|
20
|
+
} else {
|
|
21
|
+
return value;
|
|
20
22
|
}
|
|
21
|
-
return clonedObject;
|
|
22
23
|
}
|
|
23
24
|
export { clone as default };
|
package/esm/object/merge.js
CHANGED
|
@@ -23,7 +23,7 @@ function isDescriptor(object) {
|
|
|
23
23
|
* Merge deep objects or arrays
|
|
24
24
|
*/
|
|
25
25
|
function merge(...objects) {
|
|
26
|
-
if (objects.length === 0) return objects[0];
|
|
26
|
+
if (objects.length === 0 || !objects[0]) return objects[0];
|
|
27
27
|
const refinedObjects = [];
|
|
28
28
|
for (let object of objects) {
|
|
29
29
|
if (isObject(object) || isArray(object)) {
|
package/package.json
CHANGED