@idlebox/deepmerge 0.0.7 → 0.0.9
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/LICENSE +4 -16
- package/lib/index.d.ts +14 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +14 -2
- package/src/tsconfig.json +1 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,9 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2026 GongT<admin@gongt.me>
|
|
4
4
|
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
11
6
|
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
14
8
|
|
|
15
|
-
THE SOFTWARE IS PROVIDED
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
9
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/lib/index.d.ts
CHANGED
|
@@ -22,21 +22,29 @@ export declare const custom: unique symbol;
|
|
|
22
22
|
export interface MergeStrategy {
|
|
23
23
|
/**
|
|
24
24
|
* 合并简单值
|
|
25
|
+
*
|
|
26
|
+
* 默认: 如果right不为undefined,则使用right,否则使用left
|
|
27
|
+
*
|
|
25
28
|
* @param left a中的值
|
|
26
29
|
* @param right b中的值
|
|
27
30
|
*/
|
|
28
31
|
primitive?: MergeFn<Primitive>;
|
|
29
32
|
/**
|
|
30
33
|
* 合并数组
|
|
34
|
+
*
|
|
35
|
+
* 默认: 直接使用b中的数组,丢弃a的
|
|
36
|
+
*
|
|
31
37
|
* @param left a中的值
|
|
32
|
-
* @param right b
|
|
33
|
-
* @returns 合并后的值,如果为undefined,则返回right
|
|
38
|
+
* @param right b中的值,它不一定是数组
|
|
39
|
+
* @returns 合并后的值,如果为undefined,则返回(right ?? left)
|
|
34
40
|
*/
|
|
35
41
|
array?: MergeFn<Array<any>>;
|
|
36
42
|
/**
|
|
37
43
|
* 合并普通对象
|
|
38
44
|
* 其中left一定是其他合并函数无法处理的object类型
|
|
39
45
|
*
|
|
46
|
+
* 默认: 普通深复制
|
|
47
|
+
*
|
|
40
48
|
* @param left a中的值
|
|
41
49
|
* @param right b中的值
|
|
42
50
|
* @returns 合并后的值,如果为undefined,则执行深复制逻辑
|
|
@@ -50,6 +58,10 @@ export interface MergeStrategy {
|
|
|
50
58
|
}
|
|
51
59
|
/**
|
|
52
60
|
* 深复制并合并两个对象,原对象不会修改(当然,无法限制options传入的回调)。
|
|
61
|
+
*
|
|
62
|
+
* 并且其中的对象引用完全依赖传入的options。
|
|
63
|
+
*
|
|
64
|
+
* 对返回值进行写操作可能产生意外影响。
|
|
53
65
|
*/
|
|
54
66
|
export declare function deepmerge<A, B = any>(a: A, b: B, options?: MergeStrategy): A & B;
|
|
55
67
|
export {};
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAC5C;;GAEG;AACH,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC;AAEtG,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5F,KAAK,WAAW,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,MAAM,eAAqC,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC7B
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAC5C;;GAEG;AACH,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC;AAEtG,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5F,KAAK,WAAW,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,MAAM,eAAqC,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAE/B;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzB;;;OAGG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9C;AAiCD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,GAAG,CAAC,CAEhF"}
|
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idlebox/deepmerge",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"description": "Deep merge utility for JSON files with custom merge strategies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
"./package.json": "./package.json"
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
14
|
-
"@types/node": "^
|
|
15
|
-
"chai": "^
|
|
16
|
-
"mocha": "^11.7.
|
|
17
|
-
"rimraf": "^6.
|
|
18
|
-
"@build-script/
|
|
19
|
-
"@mpis/run": "^0.0.
|
|
14
|
+
"@types/node": "^25.0.8",
|
|
15
|
+
"chai": "^6.2.2",
|
|
16
|
+
"mocha": "^11.7.5",
|
|
17
|
+
"rimraf": "^6.1.2",
|
|
18
|
+
"@build-script/baseline-rig": "latest",
|
|
19
|
+
"@mpis/run": "^0.0.17"
|
|
20
20
|
},
|
|
21
21
|
"sideEffects": false,
|
|
22
22
|
"license": "MIT",
|
package/src/index.ts
CHANGED
|
@@ -26,6 +26,9 @@ export const custom = Symbol('idlebox/deepmerge/custom');
|
|
|
26
26
|
export interface MergeStrategy {
|
|
27
27
|
/**
|
|
28
28
|
* 合并简单值
|
|
29
|
+
*
|
|
30
|
+
* 默认: 如果right不为undefined,则使用right,否则使用left
|
|
31
|
+
*
|
|
29
32
|
* @param left a中的值
|
|
30
33
|
* @param right b中的值
|
|
31
34
|
*/
|
|
@@ -33,9 +36,12 @@ export interface MergeStrategy {
|
|
|
33
36
|
|
|
34
37
|
/**
|
|
35
38
|
* 合并数组
|
|
39
|
+
*
|
|
40
|
+
* 默认: 直接使用b中的数组,丢弃a的
|
|
41
|
+
*
|
|
36
42
|
* @param left a中的值
|
|
37
|
-
* @param right b
|
|
38
|
-
* @returns 合并后的值,如果为undefined,则返回right
|
|
43
|
+
* @param right b中的值,它不一定是数组
|
|
44
|
+
* @returns 合并后的值,如果为undefined,则返回(right ?? left)
|
|
39
45
|
*/
|
|
40
46
|
array?: MergeFn<Array<any>>;
|
|
41
47
|
|
|
@@ -43,6 +49,8 @@ export interface MergeStrategy {
|
|
|
43
49
|
* 合并普通对象
|
|
44
50
|
* 其中left一定是其他合并函数无法处理的object类型
|
|
45
51
|
*
|
|
52
|
+
* 默认: 普通深复制
|
|
53
|
+
*
|
|
46
54
|
* @param left a中的值
|
|
47
55
|
* @param right b中的值
|
|
48
56
|
* @returns 合并后的值,如果为undefined,则执行深复制逻辑
|
|
@@ -89,6 +97,10 @@ const defaults: StrategyRequired = {
|
|
|
89
97
|
|
|
90
98
|
/**
|
|
91
99
|
* 深复制并合并两个对象,原对象不会修改(当然,无法限制options传入的回调)。
|
|
100
|
+
*
|
|
101
|
+
* 并且其中的对象引用完全依赖传入的options。
|
|
102
|
+
*
|
|
103
|
+
* 对返回值进行写操作可能产生意外影响。
|
|
92
104
|
*/
|
|
93
105
|
export function deepmerge<A, B = any>(a: A, b: B, options?: MergeStrategy): A & B {
|
|
94
106
|
return _deepmerge(a, b, [], { ...defaults, ...options });
|
package/src/tsconfig.json
CHANGED