datum-merge 0.9.7 → 0.9.8

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.
Files changed (66) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +7 -4
  3. package/dist/cjs/datum-utils.js +22 -7
  4. package/dist/cjs/diff-high.js +27 -2
  5. package/dist/cjs/diff-lib/deep-diff.js +38 -36
  6. package/dist/cjs/index.js +6 -3
  7. package/dist/cjs/merge-conf.js +14 -6
  8. package/dist/cjs/merge-high.js +2 -2
  9. package/dist/cjs/patch-low.js +2 -0
  10. package/dist/{cjs → dts}/datum-utils.d.ts +3 -2
  11. package/dist/dts/datum-utils.d.ts.map +1 -0
  12. package/dist/dts/diff-high.d.ts +16 -0
  13. package/dist/dts/diff-high.d.ts.map +1 -0
  14. package/dist/{cjs → dts}/diff-lib/deep-diff.d.ts +14 -11
  15. package/dist/dts/diff-lib/deep-diff.d.ts.map +1 -0
  16. package/dist/{cjs → dts}/index.d.ts +2 -1
  17. package/dist/dts/index.d.ts.map +1 -0
  18. package/dist/{cjs → dts}/merge-conf.d.ts +3 -3
  19. package/dist/dts/merge-conf.d.ts.map +1 -0
  20. package/dist/{esm → dts}/merge-high.d.ts +1 -1
  21. package/dist/{cjs → dts}/merge-high.d.ts.map +1 -1
  22. package/dist/{cjs → dts}/patch-low.d.ts.map +1 -1
  23. package/dist/esm/datum-utils.js +19 -5
  24. package/dist/esm/diff-high.js +25 -1
  25. package/dist/esm/diff-lib/deep-diff.js +37 -35
  26. package/dist/esm/index.js +2 -1
  27. package/dist/esm/merge-conf.js +12 -5
  28. package/dist/esm/merge-high.js +2 -2
  29. package/dist/esm/patch-low.js +2 -0
  30. package/package.json +12 -7
  31. package/src/datum-utils.ts +25 -7
  32. package/src/diff-high.ts +44 -3
  33. package/src/diff-lib/deep-diff.ts +60 -58
  34. package/src/index.ts +2 -1
  35. package/src/merge-conf.ts +25 -8
  36. package/src/merge-high.ts +4 -2
  37. package/src/patch-low.ts +4 -2
  38. package/dist/cjs/datum-utils.d.ts.map +0 -1
  39. package/dist/cjs/diff-high.d.ts +0 -15
  40. package/dist/cjs/diff-high.d.ts.map +0 -1
  41. package/dist/cjs/diff-lib/deep-diff.d.ts.map +0 -1
  42. package/dist/cjs/index.d.ts.map +0 -1
  43. package/dist/cjs/merge-conf.d.ts.map +0 -1
  44. package/dist/cjs/merge-high.d.ts +0 -26
  45. package/dist/esm/datum-utils.d.ts +0 -12
  46. package/dist/esm/datum-utils.d.ts.map +0 -1
  47. package/dist/esm/diff-high.d.ts +0 -15
  48. package/dist/esm/diff-high.d.ts.map +0 -1
  49. package/dist/esm/diff-lib/deep-diff.d.ts +0 -60
  50. package/dist/esm/diff-lib/deep-diff.d.ts.map +0 -1
  51. package/dist/esm/index.d.ts +0 -26
  52. package/dist/esm/index.d.ts.map +0 -1
  53. package/dist/esm/merge-conf.d.ts +0 -22
  54. package/dist/esm/merge-conf.d.ts.map +0 -1
  55. package/dist/esm/merge-high.d.ts.map +0 -1
  56. package/dist/esm/merge-low.d.ts +0 -21
  57. package/dist/esm/merge-low.d.ts.map +0 -1
  58. package/dist/esm/patch-low.d.ts +0 -16
  59. package/dist/esm/patch-low.d.ts.map +0 -1
  60. package/dist/esm/type-utils.d.ts +0 -31
  61. package/dist/esm/type-utils.d.ts.map +0 -1
  62. /package/dist/{cjs → dts}/merge-low.d.ts +0 -0
  63. /package/dist/{cjs → dts}/merge-low.d.ts.map +0 -0
  64. /package/dist/{cjs → dts}/patch-low.d.ts +0 -0
  65. /package/dist/{cjs → dts}/type-utils.d.ts +0 -0
  66. /package/dist/{cjs → dts}/type-utils.d.ts.map +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 Rohit Kulkarni
3
+ Copyright (c) 2024-2025 Rohit Kulkarni
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -31,7 +31,10 @@ const changed = detailMerge(target, source, {
31
31
  mykey: UpdateCode.I,
32
32
  myarr: UpdateCode.XM,
33
33
  anobj: UpdateCode.B,
34
- myobj: { myid: UpdateCode.I },
34
+ myobj: {
35
+ myid: UpdateCode.I,
36
+ vals: UpdateCode.XR,
37
+ },
35
38
  });
36
39
  ```
37
40
 
@@ -55,7 +58,7 @@ const diff = customMerge(target, source, conf);
55
58
 
56
59
  ## Upcoming Features
57
60
 
58
- 1. inline the unmaintained [deep-diff](https://github.com/flitbit/diff) library which contains serious bugs. (available)
61
+ 1. inline the [deep-diff](https://github.com/flitbit/diff) library which unmaintained and buggy. ([available](/src/diff-lib/README.md))
59
62
 
60
63
  2. formalize config schema for deeply nested objects (for v1).
61
64
 
@@ -92,9 +95,9 @@ The value is migrated from the source field to the target field only if the pred
92
95
  | I | `sX & t0` | insert only, no update or delete |
93
96
  | D | `s0 & tX` | delete only, no update or insert |
94
97
  | XR | `sX & tX` | full vector replacement |
95
- | XM | `st` | set union, vector merge |
98
+ | XM | `ts` | set union, vector merge |
96
99
  | XD | `t - s` | set difference, delete given values |
97
- | XI | `st` | set intersection, delete missing values |
100
+ | XI | `ts` | set intersection, delete missing values |
98
101
  | XS | `t + s` | preserve order insert (allows dupes) |
99
102
  | XF | `s + t` | insert from start (allows dupes) |
100
103
 
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.selectGlobKeys = exports.createGlobRegex = exports.areArraysEqual = exports.toUniqueArray = exports.deepClone = exports.deepEqualsPath = exports.deepEquals = exports.createValueKeys = exports.getObjectKeys = void 0;
6
+ exports.selectObjKeys = exports.getGlobKeys = exports.createGlobRegex = exports.areArraysEqual = exports.toUniqueArray = exports.deepClone = exports.deepEqualsPath = exports.deepEquals = exports.createValueKeys = exports.getObjectKeys = void 0;
7
7
  const lodash_es_1 = require("lodash-es");
8
8
  const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
9
9
  function getObjectKeys(obj, excludeKeys, includeKeys) {
@@ -58,21 +58,36 @@ function areArraysEqual(arr1, arr2) {
58
58
  }
59
59
  exports.areArraysEqual = areArraysEqual;
60
60
  function createGlobRegex(search) {
61
- let pattern = search.replace(/\*/g, ".+");
61
+ const pattern = search.replace(/\*/g, ".+");
62
62
  return new RegExp(`^${pattern}$`);
63
63
  }
64
64
  exports.createGlobRegex = createGlobRegex;
65
- function selectGlobKeys(obj, includePats = ["*"], excludeKeys) {
65
+ function getGlobKeys(obj, includePats = ["*"], excludeKeys) {
66
66
  const includeKeys = [];
67
67
  if (!obj || !(includePats === null || includePats === void 0 ? void 0 : includePats.length)) {
68
68
  return includeKeys;
69
69
  }
70
- const globPats = includePats.map((g) => createGlobRegex(g));
71
- for (const label of getObjectKeys(obj, excludeKeys)) {
72
- if (globPats.findIndex((r) => r.test(label)) >= 0) {
70
+ const labels = getObjectKeys(obj, excludeKeys);
71
+ if (!labels || !labels.length) {
72
+ return includeKeys;
73
+ }
74
+ const globPats = includePats.filter((s) => s.includes("*"))
75
+ .map((g) => createGlobRegex(g));
76
+ for (const label of labels) {
77
+ if (includePats.includes(label)) {
78
+ includeKeys.push(label);
79
+ }
80
+ else if (globPats.findIndex((r) => r.test(label)) >= 0) {
73
81
  includeKeys.push(label);
74
82
  }
75
83
  }
76
84
  return includeKeys;
77
85
  }
78
- exports.selectGlobKeys = selectGlobKeys;
86
+ exports.getGlobKeys = getGlobKeys;
87
+ function selectObjKeys(obj, includeKeys) {
88
+ if (!(includeKeys === null || includeKeys === void 0 ? void 0 : includeKeys.length))
89
+ return Object.assign({}, obj);
90
+ return Object.fromEntries(Object.entries(obj)
91
+ .filter(([k, _]) => includeKeys.includes(k)));
92
+ }
93
+ exports.selectObjKeys = selectObjKeys;
@@ -1,15 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unflattenObject = exports.flattenObject = exports.deepDiffFlat = exports.deepDiffLow = exports.deepDiffTyped = void 0;
3
+ exports.unflattenObject = exports.flattenObject = exports.deepDiffFlat = exports.deepDiffLow = exports.antiDiffTyped = exports.deepDiffTyped = void 0;
4
+ const type_utils_1 = require("./type-utils");
4
5
  const deep_diff_1 = require("./diff-lib/deep-diff");
5
6
  function deepDiffTyped(lhsObj, rhsObj, orderInd = false) {
7
+ if ((0, type_utils_1.emptyObject)(rhsObj)) {
8
+ return {};
9
+ }
10
+ if ((0, type_utils_1.emptyObject)(lhsObj)) {
11
+ return Object.assign({}, rhsObj);
12
+ }
6
13
  const differences = deepDiffLow(lhsObj, rhsObj, orderInd);
7
14
  const deltaObj = {};
8
15
  if (!differences) {
9
16
  return deltaObj;
10
17
  }
11
18
  for (const difference of differences) {
12
- (0, deep_diff_1.applyChange)(deltaObj, null, difference);
19
+ (0, deep_diff_1.applyChange)(deltaObj, undefined, difference);
13
20
  }
14
21
  cleanupObjArrays(deltaObj);
15
22
  return deltaObj;
@@ -24,6 +31,24 @@ function cleanupObjArrays(obj) {
24
31
  }
25
32
  }
26
33
  }
34
+ function antiDiffTyped(lhsObj, rhsObj, orderInd = false) {
35
+ if ((0, type_utils_1.emptyObject)(lhsObj) || (0, type_utils_1.emptyObject)(rhsObj)) {
36
+ return {};
37
+ }
38
+ const differences = deepDiffLow(lhsObj, rhsObj, orderInd);
39
+ if (!differences) {
40
+ return Object.assign({}, lhsObj);
41
+ }
42
+ const modFields = new Set();
43
+ differences.map((d) => d === null || d === void 0 ? void 0 : d.path)
44
+ .filter((p) => !!p && p.length > 0)
45
+ .map((p) => (p === null || p === void 0 ? void 0 : p[0]).toString())
46
+ .forEach((s) => modFields.add(s));
47
+ const shareObj = Object.fromEntries(Object.entries(lhsObj)
48
+ .filter(([k, _]) => !modFields.has(k)));
49
+ return shareObj;
50
+ }
51
+ exports.antiDiffTyped = antiDiffTyped;
27
52
  function deepDiffLow(lhsObj, rhsObj, orderInd = false) {
28
53
  const differences = !orderInd
29
54
  ? (0, deep_diff_1.diff)(lhsObj, rhsObj)
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getOrderIndependentHash = exports.realTypeOf = exports.applyDiff = exports.revertChange = exports.applyChange = exports.orderIndependentObservableDiff = exports.observableDiff = exports.accumulateDiff = exports.orderIndependentDiff = exports.diff = void 0;
3
+ exports.getOrderIndependentHash = exports.realTypeOf = exports.applyDiff = exports.revertChange = exports.applyChange = exports.orderIndependentDeepDiff = exports.observableDiff = exports.accumulateDiff = exports.orderIndependentDiff = exports.diff = void 0;
4
4
  const typeNormalizer = {
5
5
  normalize: function (currentPath, key, lhs, rhs) {
6
6
  if (realTypeOf(lhs) === 'regexp' && realTypeOf(rhs) === 'regexp') {
@@ -21,14 +21,13 @@ function diff(lhs, rhs, prefilter) {
21
21
  }
22
22
  exports.diff = diff;
23
23
  function orderIndependentDiff(lhs, rhs, prefilter) {
24
- const changes = [];
25
- deepDiff(lhs, rhs, changes, prefilter, null, null, null, true);
24
+ const changes = observableDiff(lhs, rhs, undefined, prefilter, true);
26
25
  return (changes === null || changes === void 0 ? void 0 : changes.length) ? changes : undefined;
27
26
  }
28
27
  exports.orderIndependentDiff = orderIndependentDiff;
29
28
  function observableDiff(lhs, rhs, observer, prefilter, orderIndependent) {
30
29
  const changes = [];
31
- deepDiff(lhs, rhs, changes, prefilter, null, null, null, orderIndependent);
30
+ deepDiff(lhs, rhs, changes, prefilter, undefined, undefined, undefined, orderIndependent);
32
31
  if (observer) {
33
32
  changes.forEach((c) => observer(c));
34
33
  }
@@ -46,10 +45,10 @@ function accumulateDiff(lhs, rhs, prefilter, accum, orderIndependent) {
46
45
  return accum ? accum : (changes.length) ? changes : undefined;
47
46
  }
48
47
  exports.accumulateDiff = accumulateDiff;
49
- function orderIndependentObservableDiff(lhs, rhs, changes, prefilter, path, key, stack) {
48
+ function orderIndependentDeepDiff(lhs, rhs, changes, prefilter, path, key, stack) {
50
49
  deepDiff(lhs, rhs, changes, prefilter, path, key, stack, true);
51
50
  }
52
- exports.orderIndependentObservableDiff = orderIndependentObservableDiff;
51
+ exports.orderIndependentDeepDiff = orderIndependentDeepDiff;
53
52
  function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndependent = false) {
54
53
  changes = changes || [];
55
54
  path = path || [];
@@ -82,11 +81,11 @@ function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndepende
82
81
  const ltype = typeof lhs;
83
82
  const rtype = typeof rhs;
84
83
  const ldefined = ltype !== 'undefined' ||
85
- (stack && (stack.length > 0) && stack[stack.length - 1].lhs &&
86
- Object.getOwnPropertyDescriptor(stack[stack.length - 1].lhs, key));
84
+ (stack && (stack.length > 0) && stack.at(-1).lhs &&
85
+ Object.getOwnPropertyDescriptor(stack.at(-1).lhs, key));
87
86
  const rdefined = rtype !== 'undefined' ||
88
- (stack && (stack.length > 0) && stack[stack.length - 1].rhs &&
89
- Object.getOwnPropertyDescriptor(stack[stack.length - 1].rhs, key));
87
+ (stack && (stack.length > 0) && stack.at(-1).rhs &&
88
+ Object.getOwnPropertyDescriptor(stack.at(-1).rhs, key));
90
89
  if (!ldefined && rdefined) {
91
90
  changes.push({
92
91
  kind: 'N',
@@ -120,12 +119,11 @@ function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndepende
120
119
  lhs,
121
120
  rhs
122
121
  });
123
- new Date();
122
+ return;
124
123
  }
125
- else if (ltype === 'object' && lhs !== null && rhs !== null) {
126
- let i, j;
124
+ if (ltype === 'object' && lhs !== null && rhs !== null) {
127
125
  let other = false;
128
- for (i = stack.length - 1; i > -1; --i) {
126
+ for (let i = stack.length - 1; i > -1; --i) {
129
127
  if (stack[i].lhs === lhs) {
130
128
  other = true;
131
129
  break;
@@ -134,22 +132,24 @@ function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndepende
134
132
  if (!other) {
135
133
  stack.push({ lhs: lhs, rhs: rhs });
136
134
  if (Array.isArray(lhs) && Array.isArray(rhs)) {
137
- i = rhs.length - 1;
138
- j = lhs.length - 1;
135
+ let lArr = lhs;
136
+ let rArr = rhs;
139
137
  if (orderIndependent) {
140
- lhs = lhs.slice().sort(function (a, b) {
138
+ lArr = lArr.slice(0).sort(function (a, b) {
141
139
  return getOrderIndependentHash(a) - getOrderIndependentHash(b);
142
140
  });
143
- rhs = rhs.slice().sort(function (a, b) {
141
+ rArr = rArr.slice(0).sort(function (a, b) {
144
142
  return getOrderIndependentHash(a) - getOrderIndependentHash(b);
145
143
  });
146
144
  }
145
+ let i = rArr.length - 1;
146
+ let j = lArr.length - 1;
147
147
  while (i > j) {
148
148
  changes.push({
149
149
  kind: 'A',
150
150
  path: currentPath,
151
151
  index: i,
152
- item: { kind: 'N', rhs: rhs[i--] },
152
+ item: { kind: 'N', rhs: rArr[i--], path: undefined },
153
153
  });
154
154
  }
155
155
  while (j > i) {
@@ -157,31 +157,33 @@ function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndepende
157
157
  kind: 'A',
158
158
  path: currentPath,
159
159
  index: j,
160
- item: { kind: 'D', lhs: lhs[j--] },
160
+ item: { kind: 'D', lhs: lArr[j--], path: undefined },
161
161
  });
162
162
  }
163
163
  for (; i >= 0; --i) {
164
- deepDiff(lhs[i], rhs[i], changes, prefilter, currentPath, i, stack, orderIndependent);
164
+ deepDiff(lArr[i], rArr[i], changes, prefilter, currentPath, i, stack, orderIndependent);
165
165
  }
166
166
  }
167
167
  else {
168
- const akeys = [...Object.keys(lhs), ...Object.getOwnPropertySymbols(lhs)];
169
- const pkeys = [...Object.keys(rhs), ...Object.getOwnPropertySymbols(rhs)];
170
- for (i = 0; i < akeys.length; ++i) {
168
+ const lObj = lhs;
169
+ const rObj = rhs;
170
+ const akeys = [...Object.keys(lObj), ...Object.getOwnPropertySymbols(lObj)];
171
+ const pkeys = [...Object.keys(rObj), ...Object.getOwnPropertySymbols(rObj)];
172
+ for (let i = 0; i < akeys.length; ++i) {
171
173
  const k = akeys[i];
172
174
  const ki = pkeys.indexOf(k);
173
175
  if (ki >= 0) {
174
- deepDiff(lhs[k], rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);
176
+ deepDiff(lObj[k], rObj[k], changes, prefilter, currentPath, k, stack, orderIndependent);
175
177
  pkeys[ki] = null;
176
178
  }
177
179
  else {
178
- deepDiff(lhs[k], undefined, changes, prefilter, currentPath, k, stack, orderIndependent);
180
+ deepDiff(lObj[k], undefined, changes, prefilter, currentPath, k, stack, orderIndependent);
179
181
  }
180
182
  }
181
- for (i = 0; i < pkeys.length; ++i) {
183
+ for (let i = 0; i < pkeys.length; ++i) {
182
184
  const k = pkeys[i];
183
185
  if (k) {
184
- deepDiff(undefined, rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);
186
+ deepDiff(undefined, rObj[k], changes, prefilter, currentPath, k, stack, orderIndependent);
185
187
  }
186
188
  }
187
189
  }
@@ -209,18 +211,18 @@ function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndepende
209
211
  }
210
212
  function applyDiff(target, source, filter) {
211
213
  if (!target || !source) {
212
- return;
214
+ return target;
213
215
  }
214
216
  const onChange = function (change) {
215
217
  if (!filter || filter(target, source, change)) {
216
- applyChange(target, source, change);
218
+ applyChange(target, undefined, change);
217
219
  }
218
220
  };
219
221
  observableDiff(target, source, onChange);
220
222
  return target;
221
223
  }
222
224
  exports.applyDiff = applyDiff;
223
- function applyChange(target, source, change) {
225
+ function applyChange(target, unused, change) {
224
226
  var _a;
225
227
  if (!target || !change || !change.kind) {
226
228
  return;
@@ -255,10 +257,10 @@ function applyChange(target, source, change) {
255
257
  exports.applyChange = applyChange;
256
258
  function applyArrayChange(arr, index, change) {
257
259
  if (change.path && change.path.length > 0) {
258
- const u = change.path.length - 1;
260
+ const last = change.path.length - 1;
259
261
  let it = arr[index];
260
262
  let i;
261
- for (i = 0; i < u; i++) {
263
+ for (i = 0; i < last; i++) {
262
264
  it = it[change.path[i]];
263
265
  }
264
266
  switch (change.kind) {
@@ -290,7 +292,7 @@ function applyArrayChange(arr, index, change) {
290
292
  }
291
293
  return arr;
292
294
  }
293
- function revertChange(target, source, change) {
295
+ function revertChange(target, unused, change) {
294
296
  var _a;
295
297
  if (!target || !change || !change.kind) {
296
298
  return;
@@ -323,10 +325,10 @@ function revertChange(target, source, change) {
323
325
  exports.revertChange = revertChange;
324
326
  function revertArrayChange(arr, index, change) {
325
327
  if (change.path && change.path.length > 0) {
326
- const u = change.path.length - 1;
328
+ const last = change.path.length - 1;
327
329
  let it = arr[index];
328
330
  let i;
329
- for (i = 0; i < u; i++) {
331
+ for (i = 0; i < last; i++) {
330
332
  it = it[change.path[i]];
331
333
  }
332
334
  switch (change.kind) {
package/dist/cjs/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.deepDiff = exports.mergeDiff = exports.merge = exports.deepPatchLog = exports.asLodashPath = exports.diffToPatchLog = exports.immutableCustomMerge = exports.customMerge = exports.fillUpdateCodes = exports.immutableDetailMerge = exports.detailMerge = exports.diffFromMerge = exports.immutableDeepMerge = exports.deepMerge = exports.immutableMerge = exports.shallowMerge = exports.updateCodeInfo = exports.MC = exports.UpdateCode = exports.unflattenObject = exports.flattenObject = exports.deepDiffFlat = exports.deepDiffTyped = exports.deepDiffLow = exports.deepClone = exports.deepEquals = void 0;
17
+ exports.deepDiff = exports.mergeDiff = exports.merge = exports.deepPatchLog = exports.asLodashPath = exports.diffToPatchLog = exports.bypassMerge = exports.immutableCustomMerge = exports.customMerge = exports.fillUpdateCodes = exports.immutableDetailMerge = exports.detailMerge = exports.diffFromMerge = exports.immutableDeepMerge = exports.deepMerge = exports.immutableMerge = exports.shallowMerge = exports.updateCodeInfo = exports.MC = exports.UpdateCode = exports.unflattenObject = exports.flattenObject = exports.deepDiffFlat = exports.antiDiffTyped = exports.deepDiffTyped = exports.deepDiffLow = exports.deepClone = exports.deepEquals = void 0;
18
18
  var datum_utils_1 = require("./datum-utils");
19
19
  Object.defineProperty(exports, "deepEquals", { enumerable: true, get: function () { return datum_utils_1.deepEquals; } });
20
20
  var datum_utils_2 = require("./datum-utils");
@@ -23,6 +23,7 @@ var diff_high_1 = require("./diff-high");
23
23
  Object.defineProperty(exports, "deepDiffLow", { enumerable: true, get: function () { return diff_high_1.deepDiffLow; } });
24
24
  var diff_high_2 = require("./diff-high");
25
25
  Object.defineProperty(exports, "deepDiffTyped", { enumerable: true, get: function () { return diff_high_2.deepDiffTyped; } });
26
+ Object.defineProperty(exports, "antiDiffTyped", { enumerable: true, get: function () { return diff_high_2.antiDiffTyped; } });
26
27
  var diff_high_3 = require("./diff-high");
27
28
  Object.defineProperty(exports, "deepDiffFlat", { enumerable: true, get: function () { return diff_high_3.deepDiffFlat; } });
28
29
  var diff_high_4 = require("./diff-high");
@@ -50,6 +51,8 @@ Object.defineProperty(exports, "fillUpdateCodes", { enumerable: true, get: funct
50
51
  var merge_conf_3 = require("./merge-conf");
51
52
  Object.defineProperty(exports, "customMerge", { enumerable: true, get: function () { return merge_conf_3.customMerge; } });
52
53
  Object.defineProperty(exports, "immutableCustomMerge", { enumerable: true, get: function () { return merge_conf_3.immutableCustomMerge; } });
54
+ var merge_conf_4 = require("./merge-conf");
55
+ Object.defineProperty(exports, "bypassMerge", { enumerable: true, get: function () { return merge_conf_4.bypassMerge; } });
53
56
  var patch_low_1 = require("./patch-low");
54
57
  Object.defineProperty(exports, "diffToPatchLog", { enumerable: true, get: function () { return patch_low_1.diffToPatchLog; } });
55
58
  Object.defineProperty(exports, "asLodashPath", { enumerable: true, get: function () { return patch_low_1.asLodashPath; } });
@@ -57,8 +60,8 @@ var patch_low_2 = require("./patch-low");
57
60
  Object.defineProperty(exports, "deepPatchLog", { enumerable: true, get: function () { return patch_low_2.deepPatchLog; } });
58
61
  var merge_high_5 = require("./merge-high");
59
62
  Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return merge_high_5.deepMerge; } });
60
- var merge_conf_4 = require("./merge-conf");
61
- Object.defineProperty(exports, "mergeDiff", { enumerable: true, get: function () { return merge_conf_4.customMerge; } });
63
+ var merge_conf_5 = require("./merge-conf");
64
+ Object.defineProperty(exports, "mergeDiff", { enumerable: true, get: function () { return merge_conf_5.customMerge; } });
62
65
  __exportStar(require("./diff-lib/deep-diff"), exports);
63
66
  var diff_high_5 = require("./diff-high");
64
67
  Object.defineProperty(exports, "deepDiff", { enumerable: true, get: function () { return diff_high_5.deepDiffLow; } });
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fillUpdateCodes = exports.immutableCustomMerge = exports.customMerge = exports.selectDetailKeys = exports.immutableDetailMerge = exports.detailMerge = void 0;
3
+ exports.fillUpdateCodes = exports.immutableCustomMerge = exports.bypassMerge = exports.customMerge = exports.getDetailKeys = exports.immutableDetailMerge = exports.detailMerge = void 0;
4
4
  const type_utils_1 = require("./type-utils");
5
5
  const datum_utils_1 = require("./datum-utils");
6
6
  const diff_high_1 = require("./diff-high");
@@ -43,7 +43,7 @@ function immutableDetailMerge(target, source, mergeCodes) {
43
43
  return targetCopy;
44
44
  }
45
45
  exports.immutableDetailMerge = immutableDetailMerge;
46
- function selectDetailKeys(obj, mergeCodes, excludeKeys) {
46
+ function getDetailKeys(obj, mergeCodes, excludeKeys) {
47
47
  const includeKeys = [];
48
48
  if (!obj || !mergeCodes) {
49
49
  return includeKeys;
@@ -57,7 +57,7 @@ function selectDetailKeys(obj, mergeCodes, excludeKeys) {
57
57
  }
58
58
  return includeKeys;
59
59
  }
60
- exports.selectDetailKeys = selectDetailKeys;
60
+ exports.getDetailKeys = getDetailKeys;
61
61
  function customMerge(target, source, mergeConf, excludeKeys) {
62
62
  switch (mergeConf) {
63
63
  case merge_low_1.UpdateCode.C:
@@ -67,9 +67,7 @@ function customMerge(target, source, mergeConf, excludeKeys) {
67
67
  case merge_low_1.UpdateCode.N:
68
68
  return false;
69
69
  case merge_low_1.UpdateCode.Y:
70
- const delta = (0, diff_high_1.deepDiffTyped)(target, source);
71
- Object.assign(target, Object.assign({}, source));
72
- return delta;
70
+ return bypassMerge(target, source);
73
71
  }
74
72
  const mergeCodes = (0, exports.fillUpdateCodes)(source, mergeConf, false, excludeKeys);
75
73
  if ((0, type_utils_1.emptyObject)(mergeCodes)) {
@@ -84,6 +82,16 @@ function customMerge(target, source, mergeConf, excludeKeys) {
84
82
  return false;
85
83
  }
86
84
  exports.customMerge = customMerge;
85
+ function bypassMerge(target, source) {
86
+ if ((0, type_utils_1.emptyObject)(source)) {
87
+ return false;
88
+ }
89
+ let delta = (0, diff_high_1.deepDiffTyped)(target, source, true);
90
+ Object.assign(target, Object.assign({}, source));
91
+ delta = (0, datum_utils_1.selectObjKeys)(delta, (0, datum_utils_1.getObjectKeys)(source));
92
+ return (0, type_utils_1.emptyObject)(delta) ? false : delta;
93
+ }
94
+ exports.bypassMerge = bypassMerge;
87
95
  function immutableCustomMerge(target, source, mergeConf, skipFill = false) {
88
96
  const mergeCodes = !skipFill
89
97
  ? (0, exports.fillUpdateCodes)(source, mergeConf)
@@ -96,9 +96,9 @@ function immutableDeepMerge(target, source, scalarCode, vectorCode, nestedCode)
96
96
  }
97
97
  exports.immutableDeepMerge = immutableDeepMerge;
98
98
  ;
99
- function diffFromMerge(target, source, scalarCode, vectorCode, nestedCode) {
99
+ function diffFromMerge(target, source, scalarCode, vectorCode, nestedCode, orderInd = false) {
100
100
  const targetCopy = immutableDeepMerge(target, source, scalarCode, vectorCode, nestedCode);
101
- const delta = (0, diff_high_1.deepDiffTyped)(target, targetCopy);
101
+ const delta = (0, diff_high_1.deepDiffTyped)(target, targetCopy, orderInd);
102
102
  return (0, type_utils_1.emptyObject)(delta) ? false : delta;
103
103
  }
104
104
  exports.diffFromMerge = diffFromMerge;
@@ -44,6 +44,8 @@ exports.deepPatchLog = deepPatchLog;
44
44
  function escapePathPart(path) {
45
45
  if (typeof path === 'number')
46
46
  return path.toString();
47
+ if (typeof path === 'symbol')
48
+ return path.toString();
47
49
  if (path.indexOf('/') === -1 && path.indexOf('~') === -1)
48
50
  return path;
49
51
  return path.replace(/~/g, '~0').replace(/\//g, '~1');
@@ -4,9 +4,10 @@ export declare function createValueKeys<T>(keys: string[], value: T): {
4
4
  };
5
5
  export declare function deepEquals(lhs: any, rhs: any): boolean;
6
6
  export declare function deepEqualsPath(lhs: any, rhs: any, atPath: string): boolean;
7
- export declare function deepClone(val: any): any;
7
+ export declare function deepClone<T = any>(val: T): T;
8
8
  export declare function toUniqueArray<T>(arr: T[]): T[];
9
9
  export declare function areArraysEqual<T>(arr1: T[] | undefined, arr2: T[] | undefined): boolean;
10
10
  export declare function createGlobRegex(search: string): RegExp;
11
- export declare function selectGlobKeys(obj: any, includePats?: string[], excludeKeys?: string[]): string[];
11
+ export declare function getGlobKeys(obj: any, includePats?: string[], excludeKeys?: string[]): string[];
12
+ export declare function selectObjKeys<T extends object>(obj: T, includeKeys: string[]): Partial<T>;
12
13
  //# sourceMappingURL=datum-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datum-utils.d.ts","sourceRoot":"","sources":["../../src/datum-utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CACzB,GAAG,EAAE,GAAG,EACR,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,WAAW,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM,EAAE,CAaV;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC7B,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,CAAC,GACT;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;CAAE,CAEtB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAEtD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE5C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE9C;AAED,wBAAgB,cAAc,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,EACrB,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,GACtB,OAAO,CAaT;AAID,wBAAgB,eAAe,CAC3B,MAAM,EAAE,MAAM,GACf,MAAM,CAIR;AAED,wBAAgB,WAAW,CACvB,GAAG,EAAE,GAAG,EACR,WAAW,GAAE,MAAM,EAAU,EAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM,EAAE,CAmBV;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC1C,GAAG,EAAE,CAAC,EACN,WAAW,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,CAAC,CAAC,CAMZ"}
@@ -0,0 +1,16 @@
1
+ import { Diff } from "./diff-lib/deep-diff";
2
+ export declare function deepDiffTyped<T extends object>(lhsObj: T, rhsObj: T, orderInd?: boolean): Partial<T>;
3
+ export declare function antiDiffTyped<T extends object>(lhsObj: T, rhsObj: object, orderInd?: boolean): Partial<T>;
4
+ export declare function deepDiffLow<T = any, S = T>(lhsObj: T, rhsObj: S, orderInd?: boolean): readonly Diff<T, S>[] | false;
5
+ export declare function deepDiffFlat(oldFlat: any, newFlat: any, flatten?: boolean): [any, any];
6
+ export declare function flattenObject(obj: {
7
+ [key: string]: any;
8
+ }): {
9
+ [key: string]: any;
10
+ };
11
+ export declare function unflattenObject(flatObj: {
12
+ [key: string]: any;
13
+ }): {
14
+ [key: string]: any;
15
+ };
16
+ //# sourceMappingURL=diff-high.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-high.d.ts","sourceRoot":"","sources":["../../src/diff-high.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAA2C,MAAM,sBAAsB,CAAC;AAOrF,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC1C,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,QAAQ,GAAE,OAAe,GAC1B,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAeD,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC1C,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,OAAe,GAC1B,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED,wBAAgB,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EACtC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,QAAQ,GAAE,OAAe,GAC1B,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,CAO/B;AAID,wBAAgB,YAAY,CACxB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,OAAO,GAAE,OAAc,GACxB,CAAC,GAAG,EAAE,GAAG,CAAC,CAeZ;AAED,wBAAgB,aAAa,CACzB,GAAG,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAC5B;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAiBxB;AAED,wBAAgB,eAAe,CAC3B,OAAO,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAChC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAgBxB"}
@@ -3,34 +3,35 @@ export { type PreFilterFunction };
3
3
  export { type PreFilterObject };
4
4
  export { type Accumulator };
5
5
  export { type Observer };
6
+ export { type DiffPath };
6
7
  export { diff };
7
8
  export { orderIndependentDiff };
8
9
  export { accumulateDiff };
9
10
  export { observableDiff };
10
- export { orderIndependentObservableDiff };
11
+ export { orderIndependentDeepDiff };
11
12
  export { applyChange, revertChange };
12
13
  export { applyDiff };
13
14
  export { realTypeOf };
14
15
  export { getOrderIndependentHash };
15
16
  type DiffNew<RHS> = {
16
17
  readonly kind: "N";
17
- readonly path?: any[];
18
+ readonly path: any[];
18
19
  readonly rhs: RHS;
19
20
  };
20
21
  type DiffDeleted<LHS> = {
21
22
  readonly kind: "D";
22
- readonly path?: any[];
23
+ readonly path: any[];
23
24
  readonly lhs: LHS;
24
25
  };
25
26
  type DiffEdit<LHS, RHS = LHS> = {
26
27
  readonly kind: "E";
27
- readonly path?: any[];
28
+ readonly path: any[];
28
29
  readonly lhs: LHS;
29
30
  readonly rhs: RHS;
30
31
  };
31
32
  type DiffArray<LHS, RHS = LHS> = {
32
33
  readonly kind: "A";
33
- readonly path?: any[];
34
+ readonly path: any[];
34
35
  readonly index: number;
35
36
  readonly item: Diff<LHS, RHS>;
36
37
  };
@@ -47,14 +48,16 @@ type Accumulator<LHS, RHS = LHS> = {
47
48
  length: number;
48
49
  };
49
50
  type Observer<LHS, RHS = LHS> = (diff: Diff<LHS, RHS>) => void;
50
- declare function diff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, prefilter?: PreFilter<LHS, RHS>): readonly Diff<LHS, RHS>[];
51
- declare function orderIndependentDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, prefilter?: PreFilter<LHS, RHS>): readonly Diff<LHS, RHS>[];
51
+ type PathKey = string | number | symbol;
52
+ type DiffPath = PathKey[];
53
+ declare function diff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, prefilter?: PreFilter<LHS, RHS>): readonly Diff<LHS, RHS>[] | undefined;
54
+ declare function orderIndependentDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, prefilter?: PreFilter<LHS, RHS>): readonly Diff<LHS, RHS>[] | undefined;
52
55
  declare function observableDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, observer?: Observer<LHS, RHS>, prefilter?: PreFilter<LHS, RHS>, orderIndependent?: boolean): Array<Diff<LHS, RHS>>;
53
- declare function accumulateDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, prefilter?: PreFilter<LHS, RHS>, accum?: Accumulator<LHS, RHS>, orderIndependent?: boolean): Accumulator<LHS, RHS> | Diff<LHS, RHS>[];
54
- declare function orderIndependentObservableDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, changes: Array<Diff<LHS, RHS>>, prefilter?: PreFilter<LHS, RHS>, path?: any[], key?: any, stack?: any[]): void;
56
+ declare function accumulateDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, prefilter?: PreFilter<LHS, RHS>, accum?: Accumulator<LHS, RHS>, orderIndependent?: boolean): Accumulator<LHS, RHS> | Diff<LHS, RHS>[] | undefined;
57
+ declare function orderIndependentDeepDiff<LHS, RHS = LHS>(lhs: LHS, rhs: RHS, changes: Array<Diff<LHS, RHS>>, prefilter?: PreFilter<LHS, RHS>, path?: any[], key?: any, stack?: any[]): void;
55
58
  declare function applyDiff<LHS, RHS = LHS>(target: LHS, source: RHS, filter?: Filter<LHS, RHS>): LHS;
56
- declare function applyChange<LHS>(target: LHS, source: any, change: Diff<LHS, any>): void;
57
- declare function revertChange<LHS>(target: LHS, source: any, change: Diff<LHS, any>): void;
59
+ declare function applyChange<LHS>(target: LHS, unused: any, change: Diff<LHS, any>): void;
60
+ declare function revertChange<LHS>(target: LHS, unused: any, change: Diff<LHS, any>): void;
58
61
  declare function realTypeOf(val: any): string;
59
62
  declare function getOrderIndependentHash(val: any): number;
60
63
  //# sourceMappingURL=deep-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-diff.d.ts","sourceRoot":"","sources":["../../../src/diff-lib/deep-diff.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export { deepEquals } from "./datum-utils";
2
2
  export { deepClone } from "./datum-utils";
3
3
  export { deepDiffLow } from "./diff-high";
4
- export { deepDiffTyped } from "./diff-high";
4
+ export { deepDiffTyped, antiDiffTyped } from "./diff-high";
5
5
  export { deepDiffFlat } from "./diff-high";
6
6
  export { flattenObject, unflattenObject } from "./diff-high";
7
7
  export { UpdateCode } from "./merge-low";
@@ -16,6 +16,7 @@ export { detailMerge, immutableDetailMerge } from "./merge-conf";
16
16
  export { type MergeConfig } from "./merge-conf";
17
17
  export { fillUpdateCodes } from "./merge-conf";
18
18
  export { customMerge, immutableCustomMerge } from "./merge-conf";
19
+ export { bypassMerge } from "./merge-conf";
19
20
  export { type PatchResult } from "./patch-low";
20
21
  export { diffToPatchLog, asLodashPath } from "./patch-low";
21
22
  export { deepPatchLog } from "./patch-low";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,IAAI,EAAE,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,WAAW,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC"}
@@ -1,4 +1,3 @@
1
- import { TupleObj } from "./type-utils";
2
1
  import { MergeCode } from "./merge-low";
3
2
  export type DetailConfig = {
4
3
  [key: string]: MergeCode | DetailConfig;
@@ -15,8 +14,9 @@ export declare function detailMerge(target: {
15
14
  [key: string]: any;
16
15
  }, mergeCodes: DetailConfig): boolean;
17
16
  export declare function immutableDetailMerge(target: any, source: any, mergeCodes: DetailConfig): any;
18
- export declare function selectDetailKeys(obj: any, mergeCodes: DetailConfig, excludeKeys?: string[]): string[];
19
- export declare function customMerge<T extends TupleObj>(target: T, source: Partial<T>, mergeConf: MergeConfig | MergeCode, excludeKeys?: string[]): Partial<T> | false;
17
+ export declare function getDetailKeys(obj: any, mergeCodes: DetailConfig, excludeKeys?: string[]): string[];
18
+ export declare function customMerge<T extends object>(target: T, source: Partial<T>, mergeConf: MergeConfig | MergeCode, excludeKeys?: string[]): Partial<T> | false;
19
+ export declare function bypassMerge<T extends object>(target: T, source: object): Partial<T> | false;
20
20
  export declare function immutableCustomMerge(target: any, source: any, mergeConf: MergeConfig, skipFill?: boolean): any;
21
21
  export declare const fillUpdateCodes: (source: any, mergeConf: MergeConfig | MergeCode, blockUnset?: boolean, excludeKeys?: string[]) => DetailConfig;
22
22
  //# sourceMappingURL=merge-conf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-conf.d.ts","sourceRoot":"","sources":["../../src/merge-conf.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,SAAS,EAAsC,MAAM,aAAa,CAAC;AAGxF,MAAM,MAAM,YAAY,GAAG;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;CACvD,CAAC;AAUF,wBAAgB,WAAW,CACvB,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC9B,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC9B,UAAU,EAAE,YAAY,GACzB,OAAO,CAgCT;AAMD,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,YAAY,GACzB,GAAG,CAIL;AAKD,wBAAgB,aAAa,CACzB,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,YAAY,EACxB,WAAW,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM,EAAE,CAaV;AAQD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EACxC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,WAAW,CAAC,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAuBpB;AAOD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EACxC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CASpB;AAMD,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,WAAW,EACtB,QAAQ,GAAE,OAAe,GAC1B,GAAG,CAOL;AAWD,eAAO,MAAM,eAAe,WAChB,GAAG,aACA,WAAW,GAAG,SAAS,eACtB,OAAO,gBACL,MAAM,EAAE,KACvB,YAoEF,CAAA"}
@@ -22,5 +22,5 @@ export declare function diffFromMerge(target: {
22
22
  [key: string]: any;
23
23
  }, source: {
24
24
  [key: string]: any;
25
- }, scalarCode: MergeCode, vectorCode?: MergeCode, nestedCode?: MergeCode): any | false;
25
+ }, scalarCode: MergeCode, vectorCode?: MergeCode, nestedCode?: MergeCode, orderInd?: boolean): any | false;
26
26
  //# sourceMappingURL=merge-high.d.ts.map