datum-merge 0.3.1-alpha → 0.5.1
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 +23 -21
- package/dist/esm/{data-utils.d.ts → datum-utils.d.ts} +12 -4
- package/dist/esm/{data-utils.js → datum-utils.js} +28 -18
- package/dist/esm/datum-utils.js.map +1 -0
- package/dist/esm/diff-high.d.ts +2 -2
- package/dist/esm/diff-high.js +2 -2
- package/dist/esm/diff-high.js.map +1 -1
- package/dist/esm/diff-lib/deep-diff.d.ts +59 -0
- package/dist/esm/diff-lib/deep-diff.js +425 -0
- package/dist/esm/diff-lib/deep-diff.js.map +1 -0
- package/dist/esm/index.d.ts +10 -6
- package/dist/esm/index.js +9 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/merge-conf.d.ts +10 -0
- package/dist/esm/merge-conf.js +33 -0
- package/dist/esm/merge-conf.js.map +1 -0
- package/dist/esm/merge-high.d.ts +16 -7
- package/dist/esm/merge-high.js +64 -15
- package/dist/esm/merge-high.js.map +1 -1
- package/dist/esm/merge-low.d.ts +0 -6
- package/dist/esm/merge-low.js +9 -33
- package/dist/esm/merge-low.js.map +1 -1
- package/dist/esm/type-utils.d.ts +1 -1
- package/package.json +4 -5
- package/src/datum-utils.ts +122 -0
- package/src/diff-high.ts +62 -0
- package/src/diff-lib/README.md +35 -0
- package/src/diff-lib/deep-diff.ts +584 -0
- package/src/index.ts +24 -0
- package/src/merge-conf.ts +58 -0
- package/src/merge-high.ts +194 -0
- package/src/merge-low.ts +152 -0
- package/src/type-utils.ts +87 -0
- package/dist/esm/data-utils.js.map +0 -1
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
export { diff };
|
|
2
|
+
export { orderIndependentDiff };
|
|
3
|
+
export { accumulateDiff };
|
|
4
|
+
export { observableDiff };
|
|
5
|
+
export { orderIndependentObservableDiff };
|
|
6
|
+
export { applyChange, revertChange };
|
|
7
|
+
export { applyDiff };
|
|
8
|
+
export { realTypeOf };
|
|
9
|
+
export { getOrderIndependentHash };
|
|
10
|
+
const typeNormalizer = {
|
|
11
|
+
normalize: function (currentPath, key, lhs, rhs) {
|
|
12
|
+
if (realTypeOf(lhs) === 'regexp' && realTypeOf(rhs) === 'regexp') {
|
|
13
|
+
lhs = lhs.toString();
|
|
14
|
+
rhs = rhs.toString();
|
|
15
|
+
}
|
|
16
|
+
if (realTypeOf(lhs) === 'date' && realTypeOf(rhs) === 'date') {
|
|
17
|
+
lhs = lhs.valueOf();
|
|
18
|
+
rhs = rhs.valueOf();
|
|
19
|
+
}
|
|
20
|
+
return [lhs, rhs];
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
function diff(lhs, rhs, prefilter) {
|
|
24
|
+
const changes = [];
|
|
25
|
+
deepDiff(lhs, rhs, changes, prefilter);
|
|
26
|
+
return (changes === null || changes === void 0 ? void 0 : changes.length) ? changes : undefined;
|
|
27
|
+
}
|
|
28
|
+
function orderIndependentDiff(lhs, rhs, prefilter) {
|
|
29
|
+
const changes = [];
|
|
30
|
+
deepDiff(lhs, rhs, changes, prefilter, null, null, null, true);
|
|
31
|
+
return (changes === null || changes === void 0 ? void 0 : changes.length) ? changes : undefined;
|
|
32
|
+
}
|
|
33
|
+
function observableDiff(lhs, rhs, observer, prefilter, orderIndependent) {
|
|
34
|
+
const changes = [];
|
|
35
|
+
deepDiff(lhs, rhs, changes, prefilter, null, null, null, orderIndependent);
|
|
36
|
+
if (observer) {
|
|
37
|
+
changes.forEach((c) => observer(c));
|
|
38
|
+
}
|
|
39
|
+
return changes;
|
|
40
|
+
}
|
|
41
|
+
function accumulateDiff(lhs, rhs, prefilter, accum, orderIndependent) {
|
|
42
|
+
const observer = (accum) ?
|
|
43
|
+
function (difference) {
|
|
44
|
+
if (difference) {
|
|
45
|
+
accum.push(difference);
|
|
46
|
+
}
|
|
47
|
+
} : undefined;
|
|
48
|
+
const changes = observableDiff(lhs, rhs, observer, prefilter, orderIndependent);
|
|
49
|
+
return accum ? accum : (changes.length) ? changes : undefined;
|
|
50
|
+
}
|
|
51
|
+
function orderIndependentObservableDiff(lhs, rhs, changes, prefilter, path, key, stack) {
|
|
52
|
+
deepDiff(lhs, rhs, changes, prefilter, path, key, stack, true);
|
|
53
|
+
}
|
|
54
|
+
function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndependent = false) {
|
|
55
|
+
changes = changes || [];
|
|
56
|
+
path = path || [];
|
|
57
|
+
stack = stack || [];
|
|
58
|
+
const currentPath = path.slice(0);
|
|
59
|
+
if (typeof key !== 'undefined' && key !== null) {
|
|
60
|
+
if (prefilter) {
|
|
61
|
+
if (typeof (prefilter) === 'function' && prefilter(currentPath, key)) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
else if (typeof (prefilter) === 'object') {
|
|
65
|
+
if (prefilter.prefilter && prefilter.prefilter(currentPath, key)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (prefilter.normalize) {
|
|
69
|
+
const alt = prefilter.normalize(currentPath, key, lhs, rhs);
|
|
70
|
+
if (alt) {
|
|
71
|
+
lhs = alt[0];
|
|
72
|
+
rhs = alt[1];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
currentPath.push(key);
|
|
78
|
+
}
|
|
79
|
+
if (realTypeOf(lhs) === 'regexp' && realTypeOf(rhs) === 'regexp') {
|
|
80
|
+
lhs = lhs.toString();
|
|
81
|
+
rhs = rhs.toString();
|
|
82
|
+
}
|
|
83
|
+
const ltype = typeof lhs;
|
|
84
|
+
const rtype = typeof rhs;
|
|
85
|
+
const ldefined = ltype !== 'undefined' ||
|
|
86
|
+
(stack && (stack.length > 0) && stack[stack.length - 1].lhs &&
|
|
87
|
+
Object.getOwnPropertyDescriptor(stack[stack.length - 1].lhs, key));
|
|
88
|
+
const rdefined = rtype !== 'undefined' ||
|
|
89
|
+
(stack && (stack.length > 0) && stack[stack.length - 1].rhs &&
|
|
90
|
+
Object.getOwnPropertyDescriptor(stack[stack.length - 1].rhs, key));
|
|
91
|
+
if (!ldefined && rdefined) {
|
|
92
|
+
changes.push({
|
|
93
|
+
kind: 'N',
|
|
94
|
+
path: currentPath,
|
|
95
|
+
rhs
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
else if (!rdefined && ldefined) {
|
|
100
|
+
changes.push({
|
|
101
|
+
kind: 'D',
|
|
102
|
+
path: currentPath,
|
|
103
|
+
lhs
|
|
104
|
+
});
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
else if (realTypeOf(lhs) !== realTypeOf(rhs)) {
|
|
108
|
+
changes.push({
|
|
109
|
+
kind: 'E',
|
|
110
|
+
path: currentPath,
|
|
111
|
+
lhs,
|
|
112
|
+
rhs
|
|
113
|
+
});
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (realTypeOf(lhs) === 'date'
|
|
117
|
+
&& (lhs.valueOf() - rhs.valueOf()) !== 0) {
|
|
118
|
+
changes.push({
|
|
119
|
+
kind: 'E',
|
|
120
|
+
path: currentPath,
|
|
121
|
+
lhs,
|
|
122
|
+
rhs
|
|
123
|
+
});
|
|
124
|
+
new Date();
|
|
125
|
+
}
|
|
126
|
+
else if (ltype === 'object' && lhs !== null && rhs !== null) {
|
|
127
|
+
let i, j;
|
|
128
|
+
let other = false;
|
|
129
|
+
for (i = stack.length - 1; i > -1; --i) {
|
|
130
|
+
if (stack[i].lhs === lhs) {
|
|
131
|
+
other = true;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (!other) {
|
|
136
|
+
stack.push({ lhs: lhs, rhs: rhs });
|
|
137
|
+
if (Array.isArray(lhs) && Array.isArray(rhs)) {
|
|
138
|
+
i = rhs.length - 1;
|
|
139
|
+
j = lhs.length - 1;
|
|
140
|
+
if (orderIndependent) {
|
|
141
|
+
lhs = lhs.slice().sort(function (a, b) {
|
|
142
|
+
return getOrderIndependentHash(a) - getOrderIndependentHash(b);
|
|
143
|
+
});
|
|
144
|
+
rhs = rhs.slice().sort(function (a, b) {
|
|
145
|
+
return getOrderIndependentHash(a) - getOrderIndependentHash(b);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
while (i > j) {
|
|
149
|
+
changes.push({
|
|
150
|
+
kind: 'A',
|
|
151
|
+
path: currentPath,
|
|
152
|
+
index: i,
|
|
153
|
+
item: { kind: 'N', rhs: rhs[i--] },
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
while (j > i) {
|
|
157
|
+
changes.push({
|
|
158
|
+
kind: 'A',
|
|
159
|
+
path: currentPath,
|
|
160
|
+
index: j,
|
|
161
|
+
item: { kind: 'D', lhs: lhs[j--] },
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
for (; i >= 0; --i) {
|
|
165
|
+
deepDiff(lhs[i], rhs[i], changes, prefilter, currentPath, i, stack, orderIndependent);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
const akeys = [...Object.keys(lhs), ...Object.getOwnPropertySymbols(lhs)];
|
|
170
|
+
const pkeys = [...Object.keys(rhs), ...Object.getOwnPropertySymbols(rhs)];
|
|
171
|
+
for (i = 0; i < akeys.length; ++i) {
|
|
172
|
+
const k = akeys[i];
|
|
173
|
+
const ki = pkeys.indexOf(k);
|
|
174
|
+
if (ki >= 0) {
|
|
175
|
+
deepDiff(lhs[k], rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);
|
|
176
|
+
pkeys[ki] = null;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
deepDiff(lhs[k], undefined, changes, prefilter, currentPath, k, stack, orderIndependent);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
for (i = 0; i < pkeys.length; ++i) {
|
|
183
|
+
const k = pkeys[i];
|
|
184
|
+
if (k) {
|
|
185
|
+
deepDiff(undefined, rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
stack.length = stack.length - 1;
|
|
190
|
+
}
|
|
191
|
+
else if (lhs !== rhs) {
|
|
192
|
+
changes.push({
|
|
193
|
+
kind: 'E',
|
|
194
|
+
path: currentPath,
|
|
195
|
+
lhs,
|
|
196
|
+
rhs
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else if (lhs !== rhs) {
|
|
201
|
+
if (!(ltype === 'number' && isNaN(lhs) && isNaN(rhs))) {
|
|
202
|
+
changes.push({
|
|
203
|
+
kind: 'E',
|
|
204
|
+
path: currentPath,
|
|
205
|
+
lhs,
|
|
206
|
+
rhs
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function applyDiff(target, source, filter) {
|
|
212
|
+
if (!target || !source) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const onChange = function (change) {
|
|
216
|
+
if (!filter || filter(target, source, change)) {
|
|
217
|
+
applyChange(target, source, change);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
observableDiff(target, source, onChange);
|
|
221
|
+
return target;
|
|
222
|
+
}
|
|
223
|
+
function applyChange(target, source, change) {
|
|
224
|
+
var _a;
|
|
225
|
+
if (!target || !change || !change.kind) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
let it = target;
|
|
229
|
+
const rootPath = !((_a = change.path) === null || _a === void 0 ? void 0 : _a.length);
|
|
230
|
+
const last = rootPath ? 0 : change.path.length - 1;
|
|
231
|
+
let i = -1;
|
|
232
|
+
while (++i < last) {
|
|
233
|
+
if (typeof it[change.path[i]] === 'undefined') {
|
|
234
|
+
it[change.path[i]] = (typeof change.path[i + 1] !== 'undefined'
|
|
235
|
+
&& typeof change.path[i + 1] === 'number') ? [] : {};
|
|
236
|
+
}
|
|
237
|
+
it = it[change.path[i]];
|
|
238
|
+
}
|
|
239
|
+
switch (change.kind) {
|
|
240
|
+
case 'A':
|
|
241
|
+
if (!rootPath && typeof it[change.path[i]] === 'undefined') {
|
|
242
|
+
it[change.path[i]] = [];
|
|
243
|
+
}
|
|
244
|
+
applyArrayChange(rootPath ? it : it[change.path[i]], change.index, change.item);
|
|
245
|
+
break;
|
|
246
|
+
case 'D':
|
|
247
|
+
delete it[change.path[i]];
|
|
248
|
+
break;
|
|
249
|
+
case 'E':
|
|
250
|
+
case 'N':
|
|
251
|
+
it[change.path[i]] = change.rhs;
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
function applyArrayChange(arr, index, change) {
|
|
256
|
+
if (change.path && change.path.length > 0) {
|
|
257
|
+
const u = change.path.length - 1;
|
|
258
|
+
let it = arr[index];
|
|
259
|
+
let i;
|
|
260
|
+
for (i = 0; i < u; i++) {
|
|
261
|
+
it = it[change.path[i]];
|
|
262
|
+
}
|
|
263
|
+
switch (change.kind) {
|
|
264
|
+
case 'A':
|
|
265
|
+
applyArrayChange(it[change.path[i]], change.index, change.item);
|
|
266
|
+
break;
|
|
267
|
+
case 'D':
|
|
268
|
+
delete it[change.path[i]];
|
|
269
|
+
break;
|
|
270
|
+
case 'E':
|
|
271
|
+
case 'N':
|
|
272
|
+
it[change.path[i]] = change.rhs;
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
switch (change.kind) {
|
|
278
|
+
case 'A':
|
|
279
|
+
applyArrayChange(arr[index], change.index, change.item);
|
|
280
|
+
break;
|
|
281
|
+
case 'D':
|
|
282
|
+
arr = arrayRemove(arr, index);
|
|
283
|
+
break;
|
|
284
|
+
case 'E':
|
|
285
|
+
case 'N':
|
|
286
|
+
arr[index] = change.rhs;
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return arr;
|
|
291
|
+
}
|
|
292
|
+
function revertChange(target, source, change) {
|
|
293
|
+
var _a;
|
|
294
|
+
if (!target || !change || !change.kind) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
let it = target;
|
|
298
|
+
const rootPath = !((_a = change.path) === null || _a === void 0 ? void 0 : _a.length);
|
|
299
|
+
const last = rootPath ? 0 : change.path.length - 1;
|
|
300
|
+
let i;
|
|
301
|
+
for (i = 0; i < last; i++) {
|
|
302
|
+
if (typeof it[change.path[i]] === 'undefined') {
|
|
303
|
+
it[change.path[i]] = {};
|
|
304
|
+
}
|
|
305
|
+
it = it[change.path[i]];
|
|
306
|
+
}
|
|
307
|
+
switch (change.kind) {
|
|
308
|
+
case 'A':
|
|
309
|
+
revertArrayChange(rootPath ? it : it[change.path[i]], change.index, change.item);
|
|
310
|
+
break;
|
|
311
|
+
case 'D':
|
|
312
|
+
it[change.path[i]] = change.lhs;
|
|
313
|
+
break;
|
|
314
|
+
case 'E':
|
|
315
|
+
it[change.path[i]] = change.lhs;
|
|
316
|
+
break;
|
|
317
|
+
case 'N':
|
|
318
|
+
delete it[change.path[i]];
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
function revertArrayChange(arr, index, change) {
|
|
323
|
+
if (change.path && change.path.length > 0) {
|
|
324
|
+
const u = change.path.length - 1;
|
|
325
|
+
let it = arr[index];
|
|
326
|
+
let i;
|
|
327
|
+
for (i = 0; i < u; i++) {
|
|
328
|
+
it = it[change.path[i]];
|
|
329
|
+
}
|
|
330
|
+
switch (change.kind) {
|
|
331
|
+
case 'A':
|
|
332
|
+
revertArrayChange(it[change.path[i]], change.index, change.item);
|
|
333
|
+
break;
|
|
334
|
+
case 'D':
|
|
335
|
+
it[change.path[i]] = change.lhs;
|
|
336
|
+
break;
|
|
337
|
+
case 'E':
|
|
338
|
+
it[change.path[i]] = change.lhs;
|
|
339
|
+
break;
|
|
340
|
+
case 'N':
|
|
341
|
+
delete it[change.path[i]];
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
switch (change.kind) {
|
|
347
|
+
case 'A':
|
|
348
|
+
revertArrayChange(arr[index], change.index, change.item);
|
|
349
|
+
break;
|
|
350
|
+
case 'D':
|
|
351
|
+
arr[index] = change.lhs;
|
|
352
|
+
break;
|
|
353
|
+
case 'E':
|
|
354
|
+
arr[index] = change.lhs;
|
|
355
|
+
break;
|
|
356
|
+
case 'N':
|
|
357
|
+
arr = arrayRemove(arr, index);
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return arr;
|
|
362
|
+
}
|
|
363
|
+
function arrayRemove(arr, index) {
|
|
364
|
+
index = index < 0 ? arr.length + index : index;
|
|
365
|
+
arr.splice(index, 1);
|
|
366
|
+
return arr;
|
|
367
|
+
}
|
|
368
|
+
function realTypeOf(val) {
|
|
369
|
+
const type = typeof val;
|
|
370
|
+
if (type !== 'object') {
|
|
371
|
+
return type;
|
|
372
|
+
}
|
|
373
|
+
if (val === Math) {
|
|
374
|
+
return 'math';
|
|
375
|
+
}
|
|
376
|
+
else if (val === null) {
|
|
377
|
+
return 'null';
|
|
378
|
+
}
|
|
379
|
+
else if (Array.isArray(val)) {
|
|
380
|
+
return 'array';
|
|
381
|
+
}
|
|
382
|
+
else if (Object.prototype.toString.call(val) === '[object Date]') {
|
|
383
|
+
return 'date';
|
|
384
|
+
}
|
|
385
|
+
else if (typeof val.toString === 'function' && /^\/.*\//.test(val.toString())) {
|
|
386
|
+
return 'regexp';
|
|
387
|
+
}
|
|
388
|
+
return 'object';
|
|
389
|
+
}
|
|
390
|
+
function getOrderIndependentHash(val) {
|
|
391
|
+
let accum = 0;
|
|
392
|
+
const type = realTypeOf(val);
|
|
393
|
+
if (type === 'array') {
|
|
394
|
+
val.forEach(function (item) {
|
|
395
|
+
accum += getOrderIndependentHash(item);
|
|
396
|
+
});
|
|
397
|
+
const arrayString = `[type: array, hash: ${accum}]`;
|
|
398
|
+
return accum + hashThisString(arrayString);
|
|
399
|
+
}
|
|
400
|
+
if (type === 'object') {
|
|
401
|
+
for (let key in val) {
|
|
402
|
+
if (val.hasOwnProperty(key)) {
|
|
403
|
+
const keyValueHash = getOrderIndependentHash(val[key]);
|
|
404
|
+
const keyValueString = `[ type: object, key: ${key}, value hash: ${keyValueHash}]`;
|
|
405
|
+
accum += hashThisString(keyValueString);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return accum;
|
|
409
|
+
}
|
|
410
|
+
const stringToHash = `[ type: ${type} ; value: ${val}]`;
|
|
411
|
+
return accum + hashThisString(stringToHash);
|
|
412
|
+
}
|
|
413
|
+
function hashThisString(str) {
|
|
414
|
+
let hash = 0;
|
|
415
|
+
if (str.length === 0) {
|
|
416
|
+
return hash;
|
|
417
|
+
}
|
|
418
|
+
for (let i = 0; i < str.length; i++) {
|
|
419
|
+
const char = str.charCodeAt(i);
|
|
420
|
+
hash = ((hash << 5) - hash) + char;
|
|
421
|
+
hash = hash & hash;
|
|
422
|
+
}
|
|
423
|
+
return hash;
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=deep-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-diff.js","sourceRoot":"","sources":["../../../src/diff-lib/deep-diff.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,8BAA8B,EAAE,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,CAAC;AAGrB,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAkDnC,MAAM,cAAc,GAA8B;IAC9C,SAAS,EAAE,UAAU,WAAgB,EAAE,GAAQ,EAAE,GAAQ,EAAE,GAAQ;QAC/D,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/D,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrB,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC;YAC3D,GAAG,GAAI,GAAY,CAAC,OAAO,EAAE,CAAC;YAC9B,GAAG,GAAI,GAAY,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACJ,CAAC;AAIF,SAAS,IAAI,CACT,GAAQ,EACR,GAAQ,EACR,SAA+B;IAE/B,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACvC,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,oBAAoB,CACzB,GAAQ,EACR,GAAQ,EACR,SAA+B;IAE/B,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CACnB,GAAQ,EACR,GAAQ,EACR,QAA6B,EAC7B,SAA+B,EAC/B,gBAA0B;IAE1B,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC3E,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CACnB,GAAQ,EACR,GAAQ,EACR,SAA+B,EAC/B,KAA6B,EAC7B,gBAA0B;IAE1B,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACtB,UAAU,UAA0B;YAChC,IAAI,UAAU,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAChF,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAID,SAAS,8BAA8B,CACnC,GAAQ,EACR,GAAQ,EACR,OAA8B,EAC9B,SAA+B,EAC/B,IAAY,EACZ,GAAS,EACT,KAAa;IAEb,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,QAAQ,CACb,GAAQ,EACR,GAAQ,EACR,OAAyB,EACzB,SAA+B,EAC/B,IAAY,EACZ,GAAS,EACT,KAAa,EACb,mBAA4B,KAAK;IAEjC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IACxB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC7C,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,UAAU,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;gBACnE,OAAO;YACX,CAAC;iBAAM,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACzC,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;oBAC/D,OAAO;gBACX,CAAC;gBACD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC5D,IAAI,GAAG,EAAE,CAAC;wBACN,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;wBACb,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBACjB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAGD,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/D,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAS,CAAC;QAC5B,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAS,CAAC;IAChC,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC;IACzB,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,KAAK,KAAK,WAAW;QAClC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;YACvD,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,KAAK,KAAK,WAAW;QAClC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;YACvD,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAG3E,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,WAAW;YACjB,GAAG;SACU,CAAC,CAAC;QACnB,OAAO;IACX,CAAC;SAAM,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,WAAW;YACjB,GAAG;SACc,CAAC,CAAC;QACvB,OAAO;IACX,CAAC;SAAM,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,WAAW;YACjB,GAAG;YACH,GAAG;SACgB,CAAC,CAAC;QACzB,OAAO;IACX,CAAC;IAED,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,MAAM;WACvB,CAAE,GAAY,CAAC,OAAO,EAAE,GAAI,GAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,WAAW;YACjB,GAAG;YACH,GAAG;SACgB,CAAC,CAAC;QAAC,IAAI,IAAI,EAAE,CAAA;IACxC,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5D,IAAI,CAAS,EAAE,CAAS,CAAC;QACzB,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACvB,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACV,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;gBACnB,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;gBAEnB,IAAI,gBAAgB,EAAE,CAAC;oBACnB,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjC,OAAO,uBAAuB,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;oBACnE,CAAC,CAAQ,CAAC;oBACV,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjC,OAAO,uBAAuB,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;oBACnE,CAAC,CAAQ,CAAC;gBACd,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,GAAG;wBACT,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,CAAC;wBACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAkB;qBAC9B,CAAC,CAAC;gBAC9B,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,GAAG;wBACT,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,CAAC;wBACR,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAsB;qBAClC,CAAC,CAAC;gBAC9B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBACjB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;gBAC1F,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1E,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1E,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACnB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC5B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;wBACV,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;wBACtF,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACJ,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;oBAC7F,CAAC;gBACL,CAAC;gBACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACnB,IAAI,CAAC,EAAE,CAAC;wBACJ,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;oBAC7F,CAAC;gBACL,CAAC;YACL,CAAC;YACD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,CAAC;aAAM,IAAK,GAAW,KAAM,GAAW,EAAE,CAAC;YAEvC,OAAO,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,WAAW;gBACjB,GAAG;gBACH,GAAG;aACgB,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;SAAM,IAAK,GAAW,KAAM,GAAW,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAa,CAAC,IAAI,KAAK,CAAC,GAAa,CAAC,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,WAAW;gBACjB,GAAG;gBACH,GAAG;aACgB,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;AACL,CAAC;AAID,SAAS,SAAS,CACd,MAAW,EACX,MAAW,EACX,MAAyB;IAEzB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO;IACX,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,MAAsB;QAC7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;IACL,CAAC,CAAC;IACF,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAChB,MAAW,EACX,MAAW,EACX,MAAsB;;IAEtB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO;IACX,CAAC;IACD,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,QAAQ,GAAG,CAAC,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,MAAM,CAAA,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACX,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;QAChB,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;YAC5C,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CACjB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,WAAW;mBACtC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAC5C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,CAAC;QACD,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,GAAG;YACJ,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;gBACzD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAC5B,CAAC;YACD,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAChF,MAAM;QACV,KAAK,GAAG;YACJ,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM;QACV,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACJ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;YAChC,MAAM;IACd,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CACrB,GAAU,EACV,KAAa,EACb,MAAsB;IAEtB,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjC,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAS,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACrB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,GAAG;gBACJ,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM;YACV,KAAK,GAAG;gBACJ,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACJ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;gBAChC,MAAM;QACd,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,GAAG;gBACJ,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM;YACV,KAAK,GAAG;gBACJ,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC9B,MAAM;YACV,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACJ,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;gBACxB,MAAM;QACd,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CACjB,MAAW,EACX,MAAW,EACX,MAAsB;;IAEtB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO;IACX,CAAC;IACD,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,QAAQ,GAAG,CAAC,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,MAAM,CAAA,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,IAAI,CAAS,CAAC;IACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;YAC5C,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAE5B,CAAC;QACD,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,GAAG;YAGJ,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjF,MAAM;QACV,KAAK,GAAG;YAEJ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;YAChC,MAAM;QACV,KAAK,GAAG;YAEJ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;YAChC,MAAM;QACV,KAAK,GAAG;YAEJ,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM;IACd,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACtB,GAAU,EACV,KAAa,EACb,MAAsB;IAEtB,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAExC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjC,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAS,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACrB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,GAAG;gBACJ,iBAAiB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjE,MAAM;YACV,KAAK,GAAG;gBACJ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;gBAChC,MAAM;YACV,KAAK,GAAG;gBACJ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;gBAChC,MAAM;YACV,KAAK,GAAG;gBACJ,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM;QACd,CAAC;IACL,CAAC;SAAM,CAAC;QAEJ,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,GAAG;gBACJ,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM;YACV,KAAK,GAAG;gBACJ,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;gBACxB,MAAM;YACV,KAAK,GAAG;gBACJ,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;gBACxB,MAAM;YACV,KAAK,GAAG;gBACJ,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC9B,MAAM;QACd,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAID,SAAS,WAAW,CAChB,GAAU,EACV,KAAa;IAEb,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/C,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACf,CAAC;AAaD,SAAS,UAAU,CAAC,GAAQ;IACxB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC;IACxB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAClB,CAAC;SAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAClB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC;IACnB,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,eAAe,EAAE,CAAC;QACjE,OAAO,MAAM,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC9E,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAID,SAAS,uBAAuB,CAAC,GAAQ;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,GAAG,CAAC,OAAO,CAAC,UAAU,IAAS;YAE3B,KAAK,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,uBAAuB,KAAK,GAAG,CAAC;QACpD,OAAO,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,MAAM,cAAc,GAAG,wBAAwB,GAAG,iBAAiB,YAAY,GAAG,CAAC;gBACnF,KAAK,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,IAAI,aAAa,GAAG,GAAG,CAAC;IACxD,OAAO,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;AAChD,CAAC;AAGD,SAAS,cAAc,CAAC,GAAW;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
export { deepEquals } from "./
|
|
2
|
-
export {
|
|
1
|
+
export { deepEquals } from "./datum-utils";
|
|
2
|
+
export { deepClone } from "./datum-utils";
|
|
3
|
+
export { flattenObject, unflattenObject } from "./datum-utils";
|
|
3
4
|
export { deepDiffLow } from "./diff-high";
|
|
4
5
|
export { deepDiffFlat } from "./diff-high";
|
|
5
6
|
export { deepDiffTyped } from "./diff-high";
|
|
6
7
|
export { UpdateCode } from "./merge-low";
|
|
7
|
-
export { updateCodeInfo } from "./merge-
|
|
8
|
+
export { updateCodeInfo } from "./merge-high";
|
|
8
9
|
export { MergeError } from "./merge-high";
|
|
9
10
|
export { shallowMerge, immutableMerge } from "./merge-high";
|
|
10
|
-
export { type DetailConfig, detailMerge } from "./merge-high";
|
|
11
11
|
export { diffFromMerge } from "./merge-high";
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
12
|
+
export { deepMerge, immutableDeepMerge } from "./merge-high";
|
|
13
|
+
export { type DetailConfig, } from "./merge-conf";
|
|
14
|
+
export { detailMerge, immutableDetailMerge } from "./merge-conf";
|
|
15
|
+
export { deepMerge as merge } from "./merge-high";
|
|
16
|
+
export * from "./diff-lib/deep-diff";
|
|
17
|
+
export { deepDiffLow as deepDiff } from "./diff-high";
|
package/dist/esm/index.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
export { deepEquals } from "./
|
|
2
|
-
export {
|
|
1
|
+
export { deepEquals } from "./datum-utils";
|
|
2
|
+
export { deepClone } from "./datum-utils";
|
|
3
|
+
export { flattenObject, unflattenObject } from "./datum-utils";
|
|
3
4
|
export { deepDiffLow } from "./diff-high";
|
|
4
5
|
export { deepDiffFlat } from "./diff-high";
|
|
5
6
|
export { deepDiffTyped } from "./diff-high";
|
|
6
7
|
export { UpdateCode } from "./merge-low";
|
|
7
|
-
export { updateCodeInfo } from "./merge-
|
|
8
|
+
export { updateCodeInfo } from "./merge-high";
|
|
8
9
|
export { MergeError } from "./merge-high";
|
|
9
10
|
export { shallowMerge, immutableMerge } from "./merge-high";
|
|
10
|
-
export { detailMerge } from "./merge-high";
|
|
11
11
|
export { diffFromMerge } from "./merge-high";
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
12
|
+
export { deepMerge, immutableDeepMerge } from "./merge-high";
|
|
13
|
+
export { detailMerge, immutableDetailMerge } from "./merge-conf";
|
|
14
|
+
export { deepMerge as merge } from "./merge-high";
|
|
15
|
+
export * from "./diff-lib/deep-diff";
|
|
16
|
+
export { deepDiffLow as deepDiff } from "./diff-high";
|
|
14
17
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGjE,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,cAAc,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,WAAW,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { UpdateCode } from "./merge-low";
|
|
2
|
+
export type DetailConfig = {
|
|
3
|
+
[key: string]: UpdateCode | DetailConfig;
|
|
4
|
+
};
|
|
5
|
+
export declare function detailMerge(target: {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}, source: {
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}, mergeCodes: DetailConfig): boolean;
|
|
10
|
+
export declare function immutableDetailMerge(target: any, source: any, mergeCodes: DetailConfig): any;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { emptyObject, isObject, isString } from "./type-utils";
|
|
2
|
+
import { deepClone, getObjectKeys } from "./datum-utils";
|
|
3
|
+
import { UpdateCode, mergeScalarField, mergeVectorField } from "./merge-low";
|
|
4
|
+
export function detailMerge(target, source, mergeCodes) {
|
|
5
|
+
if (!isObject(mergeCodes) || emptyObject(mergeCodes)) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
let changed = false;
|
|
9
|
+
const mergeKeys = getObjectKeys(mergeCodes);
|
|
10
|
+
for (const label of mergeKeys) {
|
|
11
|
+
const mergeCode = mergeCodes[label];
|
|
12
|
+
if (!isString(mergeCode)) {
|
|
13
|
+
if ((isObject(target[label]) && isObject(source[label]))
|
|
14
|
+
? detailMerge(target[label], source[label], mergeCode)
|
|
15
|
+
: mergeScalarField(target, source, label, UpdateCode.I)) {
|
|
16
|
+
changed = true;
|
|
17
|
+
}
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (mergeCode.toString().startsWith("X")
|
|
21
|
+
? mergeVectorField(target, source, label, mergeCode)
|
|
22
|
+
: mergeScalarField(target, source, label, mergeCode)) {
|
|
23
|
+
changed = true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return changed;
|
|
27
|
+
}
|
|
28
|
+
export function immutableDetailMerge(target, source, mergeCodes) {
|
|
29
|
+
const targetCopy = deepClone(target);
|
|
30
|
+
detailMerge(targetCopy, source, mergeCodes);
|
|
31
|
+
return targetCopy;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=merge-conf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-conf.js","sourceRoot":"","sources":["../../src/merge-conf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAY7E,MAAM,UAAU,WAAW,CACvB,MAA8B,EAC9B,MAA8B,EAC9B,UAAwB;IAExB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpD,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;gBACtD,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EACzD,CAAC;gBACC,OAAO,GAAG,IAAI,CAAC;YACnB,CAAC;YACD,SAAS;QACb,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YACpC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;YACpD,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,EACtD,CAAC;YACC,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAMD,MAAM,UAAU,oBAAoB,CAChC,MAAW,EACX,MAAW,EACX,UAAwB;IAExB,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC;AACtB,CAAC"}
|
package/dist/esm/merge-high.d.ts
CHANGED
|
@@ -7,8 +7,11 @@ export type MergeTuple = {
|
|
|
7
7
|
[label: string]: any;
|
|
8
8
|
};
|
|
9
9
|
export type MergeCode = `${UpdateCode}`;
|
|
10
|
-
export type
|
|
11
|
-
|
|
10
|
+
export type MergePerms = {
|
|
11
|
+
enable: boolean;
|
|
12
|
+
insert?: boolean;
|
|
13
|
+
update?: boolean;
|
|
14
|
+
unset?: boolean;
|
|
12
15
|
};
|
|
13
16
|
export declare class MergeError extends Error {
|
|
14
17
|
readonly data: {
|
|
@@ -27,11 +30,17 @@ export declare class MergeError extends Error {
|
|
|
27
30
|
t?: any;
|
|
28
31
|
});
|
|
29
32
|
}
|
|
30
|
-
export declare function
|
|
31
|
-
[key: string]: any;
|
|
32
|
-
}, source: {
|
|
33
|
-
[key: string]: any;
|
|
34
|
-
}, mergeCodes: DetailConfig): boolean;
|
|
33
|
+
export declare function updateCodeInfo(mergeCode: UpdateCode | MergeCode): MergePerms;
|
|
35
34
|
export declare function shallowMerge(target: any, source: any, scalarCode: UpdateCode, vectorCode?: UpdateCode, excludeKeys?: string[], includeKeys?: string[]): boolean;
|
|
36
35
|
export declare function immutableMerge(target: any, source: any, scalarCode: UpdateCode, vectorCode?: UpdateCode): any;
|
|
37
36
|
export declare function diffFromMerge(target: any, source: any, scalarCode: UpdateCode, vectorCode?: UpdateCode): any | false;
|
|
37
|
+
export declare function deepMerge(target: {
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
}, source: {
|
|
40
|
+
[key: string]: any;
|
|
41
|
+
}, scalarCode: UpdateCode, vectorCode: UpdateCode, nestedCode: UpdateCode): boolean;
|
|
42
|
+
export declare function immutableDeepMerge(target: {
|
|
43
|
+
[key: string]: any;
|
|
44
|
+
}, source: {
|
|
45
|
+
[key: string]: any;
|
|
46
|
+
}, scalarCode: UpdateCode, vectorCode?: UpdateCode, nestedCode?: UpdateCode): any;
|