@domql/utils 2.3.118 → 2.3.120
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/object.js +48 -44
- package/object.js +9 -5
- package/package.json +2 -2
package/dist/cjs/object.js
CHANGED
|
@@ -33,6 +33,7 @@ __export(object_exports, {
|
|
|
33
33
|
isEqualDeep: () => isEqualDeep,
|
|
34
34
|
map: () => map,
|
|
35
35
|
merge: () => merge,
|
|
36
|
+
mergeArrayExclude: () => mergeArrayExclude,
|
|
36
37
|
mergeIfExisted: () => mergeIfExisted,
|
|
37
38
|
overwrite: () => overwrite,
|
|
38
39
|
overwriteDeep: () => overwriteDeep,
|
|
@@ -55,30 +56,30 @@ const exec = (param, element, state, context) => {
|
|
|
55
56
|
return param;
|
|
56
57
|
};
|
|
57
58
|
const map = (obj, extention, element) => {
|
|
58
|
-
for (const
|
|
59
|
-
obj[
|
|
59
|
+
for (const e in extention) {
|
|
60
|
+
obj[e] = exec(extention[e], element);
|
|
60
61
|
}
|
|
61
62
|
};
|
|
62
63
|
const merge = (element, obj) => {
|
|
63
|
-
for (const
|
|
64
|
-
const elementProp = element[
|
|
65
|
-
const objProp = obj[
|
|
64
|
+
for (const e in obj) {
|
|
65
|
+
const elementProp = element[e];
|
|
66
|
+
const objProp = obj[e];
|
|
66
67
|
if (elementProp === void 0) {
|
|
67
|
-
element[
|
|
68
|
+
element[e] = objProp;
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
return element;
|
|
71
72
|
};
|
|
72
73
|
const deepMerge = (element, extend, excludeFrom = []) => {
|
|
73
|
-
for (const
|
|
74
|
-
if (excludeFrom.includes(
|
|
74
|
+
for (const e in extend) {
|
|
75
|
+
if (excludeFrom.includes(e) || e.includes("__"))
|
|
75
76
|
continue;
|
|
76
|
-
const elementProp = element[
|
|
77
|
-
const extendProp = extend[
|
|
77
|
+
const elementProp = element[e];
|
|
78
|
+
const extendProp = extend[e];
|
|
78
79
|
if ((0, import_types.isObjectLike)(elementProp) && (0, import_types.isObjectLike)(extendProp)) {
|
|
79
80
|
deepMerge(elementProp, extendProp);
|
|
80
81
|
} else if (elementProp === void 0) {
|
|
81
|
-
element[
|
|
82
|
+
element[e] = extendProp;
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
return element;
|
|
@@ -86,7 +87,7 @@ const deepMerge = (element, extend, excludeFrom = []) => {
|
|
|
86
87
|
const clone = (obj, excludeFrom = []) => {
|
|
87
88
|
const o = {};
|
|
88
89
|
for (const prop in obj) {
|
|
89
|
-
if (excludeFrom.includes(
|
|
90
|
+
if (excludeFrom.includes(prop) || prop.includes("__"))
|
|
90
91
|
continue;
|
|
91
92
|
o[prop] = obj[prop];
|
|
92
93
|
}
|
|
@@ -113,6 +114,9 @@ const deepCloneExclude = (obj, excludeFrom = []) => {
|
|
|
113
114
|
}
|
|
114
115
|
return o;
|
|
115
116
|
};
|
|
117
|
+
const mergeArrayExclude = (arr, excl = []) => {
|
|
118
|
+
return arr.reduce((acc, curr) => deepMerge(acc, deepCloneExclude(curr, excl)), {});
|
|
119
|
+
};
|
|
116
120
|
const deepClone = (obj, excludeFrom = []) => {
|
|
117
121
|
const o = (0, import_types.isArray)(obj) ? [] : {};
|
|
118
122
|
for (const prop in obj) {
|
|
@@ -189,8 +193,8 @@ const deepDestringify = (obj, stringified = {}) => {
|
|
|
189
193
|
try {
|
|
190
194
|
const evalProp = import_globals.window.eval(`(${objProp})`);
|
|
191
195
|
stringified[prop] = evalProp;
|
|
192
|
-
} catch (
|
|
193
|
-
if (
|
|
196
|
+
} catch (e) {
|
|
197
|
+
if (e)
|
|
194
198
|
stringified[prop] = objProp;
|
|
195
199
|
}
|
|
196
200
|
} else {
|
|
@@ -204,8 +208,8 @@ const deepDestringify = (obj, stringified = {}) => {
|
|
|
204
208
|
try {
|
|
205
209
|
const evalProp = import_globals.window.eval(`(${arrProp})`);
|
|
206
210
|
stringified[prop].push(evalProp);
|
|
207
|
-
} catch (
|
|
208
|
-
if (
|
|
211
|
+
} catch (e) {
|
|
212
|
+
if (e)
|
|
209
213
|
stringified[prop].push(arrProp);
|
|
210
214
|
}
|
|
211
215
|
} else {
|
|
@@ -228,29 +232,29 @@ const deepDestringify = (obj, stringified = {}) => {
|
|
|
228
232
|
const overwrite = (element, params, excludeFrom = []) => {
|
|
229
233
|
const { ref } = element;
|
|
230
234
|
const changes = {};
|
|
231
|
-
for (const
|
|
232
|
-
if (excludeFrom.includes(
|
|
235
|
+
for (const e in params) {
|
|
236
|
+
if (excludeFrom.includes(e) || e.includes("__"))
|
|
233
237
|
continue;
|
|
234
|
-
const elementProp = element[
|
|
235
|
-
const paramsProp = params[
|
|
238
|
+
const elementProp = element[e];
|
|
239
|
+
const paramsProp = params[e];
|
|
236
240
|
if (paramsProp) {
|
|
237
|
-
ref.__cache[
|
|
238
|
-
ref[
|
|
241
|
+
ref.__cache[e] = changes[e] = elementProp;
|
|
242
|
+
ref[e] = paramsProp;
|
|
239
243
|
}
|
|
240
244
|
}
|
|
241
245
|
return changes;
|
|
242
246
|
};
|
|
243
247
|
const diffObjects = (original, objToDiff, cache) => {
|
|
244
|
-
for (const
|
|
245
|
-
if (
|
|
248
|
+
for (const e in objToDiff) {
|
|
249
|
+
if (e === "ref")
|
|
246
250
|
continue;
|
|
247
|
-
const originalProp = original[
|
|
248
|
-
const objToDiffProp = objToDiff[
|
|
251
|
+
const originalProp = original[e];
|
|
252
|
+
const objToDiffProp = objToDiff[e];
|
|
249
253
|
if ((0, import_types.isObject)(originalProp) && (0, import_types.isObject)(objToDiffProp)) {
|
|
250
|
-
cache[
|
|
251
|
-
diff(originalProp, objToDiffProp, cache[
|
|
254
|
+
cache[e] = {};
|
|
255
|
+
diff(originalProp, objToDiffProp, cache[e]);
|
|
252
256
|
} else if (objToDiffProp !== void 0) {
|
|
253
|
-
cache[
|
|
257
|
+
cache[e] = objToDiffProp;
|
|
254
258
|
}
|
|
255
259
|
}
|
|
256
260
|
return cache;
|
|
@@ -283,33 +287,33 @@ const diff = (original, objToDiff, cache = {}) => {
|
|
|
283
287
|
};
|
|
284
288
|
const overwriteObj = (params, obj) => {
|
|
285
289
|
const changes = {};
|
|
286
|
-
for (const
|
|
287
|
-
const objProp = obj[
|
|
288
|
-
const paramsProp = params[
|
|
290
|
+
for (const e in params) {
|
|
291
|
+
const objProp = obj[e];
|
|
292
|
+
const paramsProp = params[e];
|
|
289
293
|
if (paramsProp) {
|
|
290
|
-
obj[
|
|
294
|
+
obj[e] = changes[e] = objProp;
|
|
291
295
|
}
|
|
292
296
|
}
|
|
293
297
|
return changes;
|
|
294
298
|
};
|
|
295
299
|
const overwriteShallow = (obj, params, excludeFrom = []) => {
|
|
296
|
-
for (const
|
|
297
|
-
if (excludeFrom.includes(
|
|
300
|
+
for (const e in params) {
|
|
301
|
+
if (excludeFrom.includes(e) || e.includes("__"))
|
|
298
302
|
continue;
|
|
299
|
-
obj[
|
|
303
|
+
obj[e] = params[e];
|
|
300
304
|
}
|
|
301
305
|
return obj;
|
|
302
306
|
};
|
|
303
|
-
const overwriteDeep = (
|
|
304
|
-
for (const
|
|
305
|
-
if (excludeFrom.includes(
|
|
307
|
+
const overwriteDeep = (obj, params, excludeFrom = []) => {
|
|
308
|
+
for (const e in params) {
|
|
309
|
+
if (excludeFrom.includes(e) || e.includes("__"))
|
|
306
310
|
continue;
|
|
307
|
-
const objProp = obj[
|
|
308
|
-
const paramsProp = params[
|
|
311
|
+
const objProp = obj[e];
|
|
312
|
+
const paramsProp = params[e];
|
|
309
313
|
if ((0, import_types.isObjectLike)(objProp) && (0, import_types.isObjectLike)(paramsProp)) {
|
|
310
|
-
overwriteDeep(
|
|
314
|
+
overwriteDeep(objProp, paramsProp);
|
|
311
315
|
} else if (paramsProp !== void 0) {
|
|
312
|
-
obj[
|
|
316
|
+
obj[e] = paramsProp;
|
|
313
317
|
}
|
|
314
318
|
}
|
|
315
319
|
return obj;
|
|
@@ -320,7 +324,7 @@ const mergeIfExisted = (a, b) => {
|
|
|
320
324
|
return a || b;
|
|
321
325
|
};
|
|
322
326
|
const flattenRecursive = (param, prop, stack = []) => {
|
|
323
|
-
const objectized = mergeAndCloneIfArray(param);
|
|
327
|
+
const objectized = (0, import_array.mergeAndCloneIfArray)(param);
|
|
324
328
|
stack.push(objectized);
|
|
325
329
|
const extendOfExtend = objectized[prop];
|
|
326
330
|
if (extendOfExtend)
|
package/object.js
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { window } from '@domql/globals'
|
|
4
4
|
import { isFunction, isObjectLike, isObject, isArray, isString, is } from './types.js'
|
|
5
|
-
import { mergeArray } from './array.js'
|
|
6
|
-
|
|
5
|
+
import { mergeAndCloneIfArray, mergeArray } from './array.js'
|
|
7
6
|
|
|
8
7
|
export const exec = (param, element, state, context) => {
|
|
9
8
|
if (isFunction(param)) {
|
|
@@ -50,7 +49,7 @@ export const deepMerge = (element, extend, excludeFrom = []) => {
|
|
|
50
49
|
export const clone = (obj, excludeFrom = []) => {
|
|
51
50
|
const o = {}
|
|
52
51
|
for (const prop in obj) {
|
|
53
|
-
if (excludeFrom.includes(
|
|
52
|
+
if (excludeFrom.includes(prop) || prop.includes('__')) continue
|
|
54
53
|
o[prop] = obj[prop]
|
|
55
54
|
}
|
|
56
55
|
return o
|
|
@@ -82,6 +81,11 @@ export const deepCloneExclude = (obj, excludeFrom = []) => {
|
|
|
82
81
|
return o
|
|
83
82
|
}
|
|
84
83
|
|
|
84
|
+
// Merge array, but exclude keys listed in 'excl'
|
|
85
|
+
export const mergeArrayExclude = (arr, excl = []) => {
|
|
86
|
+
return arr.reduce((acc, curr) => deepMerge(acc, deepCloneExclude(curr, excl)), {})
|
|
87
|
+
}
|
|
88
|
+
|
|
85
89
|
/**
|
|
86
90
|
* Deep cloning of object
|
|
87
91
|
*/
|
|
@@ -297,13 +301,13 @@ export const overwriteShallow = (obj, params, excludeFrom = []) => {
|
|
|
297
301
|
/**
|
|
298
302
|
* Overwrites DEEPLY object properties with another
|
|
299
303
|
*/
|
|
300
|
-
export const overwriteDeep = (
|
|
304
|
+
export const overwriteDeep = (obj, params, excludeFrom = []) => {
|
|
301
305
|
for (const e in params) {
|
|
302
306
|
if (excludeFrom.includes(e) || e.includes('__')) continue
|
|
303
307
|
const objProp = obj[e]
|
|
304
308
|
const paramsProp = params[e]
|
|
305
309
|
if (isObjectLike(objProp) && isObjectLike(paramsProp)) {
|
|
306
|
-
overwriteDeep(
|
|
310
|
+
overwriteDeep(objProp, paramsProp)
|
|
307
311
|
} else if (paramsProp !== undefined) {
|
|
308
312
|
obj[e] = paramsProp
|
|
309
313
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@domql/utils",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.120",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@domql/key": "latest",
|
|
24
24
|
"@domql/tags": "latest"
|
|
25
25
|
},
|
|
26
|
-
"gitHead": "
|
|
26
|
+
"gitHead": "6e932a813b8e6ee0a57a40ebc6dc757cc44e6427",
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@babel/core": "^7.12.0"
|
|
29
29
|
}
|