@domql/utils 2.3.110 → 2.3.112

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/array.js CHANGED
@@ -1,5 +1,6 @@
1
1
  'use strict'
2
2
 
3
+ import { deepClone, deepMerge } from './object'
3
4
  import { isArray, isNumber, isString } from './types'
4
5
 
5
6
  export const arrayContainsOtherArray = (arr1, arr2) => {
@@ -28,3 +29,17 @@ export const swapItemsInArray = (arr, i, j) => {
28
29
  export const joinArrays = (...arrays) => {
29
30
  return [].concat(...arrays)
30
31
  }
32
+
33
+ /**
34
+ * Merges array extendtypes
35
+ */
36
+ export const mergeArray = (arr) => {
37
+ return arr.reduce((a, c) => deepMerge(a, deepClone(c)), {})
38
+ }
39
+
40
+ /**
41
+ * Merges array extends
42
+ */
43
+ export const mergeAndCloneIfArray = obj => {
44
+ return isArray(obj) ? mergeArray(obj) : deepClone(obj)
45
+ }
package/dist/cjs/array.js CHANGED
@@ -20,10 +20,13 @@ var array_exports = {};
20
20
  __export(array_exports, {
21
21
  arrayContainsOtherArray: () => arrayContainsOtherArray,
22
22
  joinArrays: () => joinArrays,
23
+ mergeAndCloneIfArray: () => mergeAndCloneIfArray,
24
+ mergeArray: () => mergeArray,
23
25
  removeFromArray: () => removeFromArray,
24
26
  swapItemsInArray: () => swapItemsInArray
25
27
  });
26
28
  module.exports = __toCommonJS(array_exports);
29
+ var import_object = require("./object");
27
30
  var import_types = require("./types");
28
31
  const arrayContainsOtherArray = (arr1, arr2) => {
29
32
  return arr2.every((val) => arr1.includes(val));
@@ -49,3 +52,9 @@ const swapItemsInArray = (arr, i, j) => {
49
52
  const joinArrays = (...arrays) => {
50
53
  return [].concat(...arrays);
51
54
  };
55
+ const mergeArray = (arr) => {
56
+ return arr.reduce((a, c) => (0, import_object.deepMerge)(a, (0, import_object.deepClone)(c)), {});
57
+ };
58
+ const mergeAndCloneIfArray = (obj) => {
59
+ return (0, import_types.isArray)(obj) ? mergeArray(obj) : (0, import_object.deepClone)(obj);
60
+ };
@@ -34,12 +34,12 @@ __export(object_exports, {
34
34
  map: () => map,
35
35
  merge: () => merge,
36
36
  mergeAndCloneIfArray: () => mergeAndCloneIfArray,
37
- mergeArray: () => mergeArray,
38
37
  mergeArrayExclude: () => mergeArrayExclude,
39
38
  mergeIfExisted: () => mergeIfExisted,
40
39
  overwrite: () => overwrite,
41
40
  overwriteDeep: () => overwriteDeep,
42
41
  overwriteObj: () => overwriteObj,
42
+ overwriteShallow: () => overwriteShallow,
43
43
  removeFromObject: () => removeFromObject
44
44
  });
45
45
  module.exports = __toCommonJS(object_exports);
@@ -56,59 +56,59 @@ const exec = (param, element, state, context) => {
56
56
  return param;
57
57
  };
58
58
  const map = (obj, extention, element) => {
59
- for (const e in extention) {
60
- obj[e] = exec(extention[e], element);
59
+ for (const e2 in extention) {
60
+ obj[e2] = exec(extention[e2], element);
61
61
  }
62
62
  };
63
63
  const merge = (element, obj) => {
64
- for (const e in obj) {
65
- const elementProp = element[e];
66
- const objProp = obj[e];
64
+ for (const e2 in obj) {
65
+ const elementProp = element[e2];
66
+ const objProp = obj[e2];
67
67
  if (elementProp === void 0) {
68
- element[e] = objProp;
68
+ element[e2] = objProp;
69
69
  }
70
70
  }
71
71
  return element;
72
72
  };
73
- const deepMerge = (element, extend) => {
74
- for (const e in extend) {
75
- const elementProp = element[e];
76
- const extendProp = extend[e];
77
- if (e === "parent" || e === "props")
73
+ const deepMerge = (element, extend, excludeFrom = []) => {
74
+ for (const e2 in extend) {
75
+ if (excludeFrom.includes(e2) || e2.includes("__"))
78
76
  continue;
77
+ const elementProp = element[e2];
78
+ const extendProp = extend[e2];
79
79
  if ((0, import_types.isObjectLike)(elementProp) && (0, import_types.isObjectLike)(extendProp)) {
80
80
  deepMerge(elementProp, extendProp);
81
81
  } else if (elementProp === void 0) {
82
- element[e] = extendProp;
82
+ element[e2] = extendProp;
83
83
  }
84
84
  }
85
85
  return element;
86
86
  };
87
- const clone = (obj) => {
87
+ const clone = (obj, excludeFrom = []) => {
88
88
  const o = {};
89
89
  for (const prop in obj) {
90
- if (prop === "node")
90
+ if (excludeFrom.includes(e) || e.includes("__"))
91
91
  continue;
92
92
  o[prop] = obj[prop];
93
93
  }
94
94
  return o;
95
95
  };
96
- const deepCloneExclude = (obj, exclude = []) => {
96
+ const deepCloneExclude = (obj, excludeFrom = []) => {
97
97
  if ((0, import_types.isArray)(obj)) {
98
- return obj.map((x) => deepCloneExclude(x, exclude));
98
+ return obj.map((x) => deepCloneExclude(x, excludeFrom));
99
99
  }
100
100
  const o = {};
101
101
  for (const k in obj) {
102
- if (exclude.indexOf(k) > -1)
102
+ if (excludeFrom.includes(k) || k.includes("__"))
103
103
  continue;
104
104
  let v = obj[k];
105
105
  if (k === "extend" && (0, import_types.isArray)(v)) {
106
- v = mergeArrayExclude(v, exclude);
106
+ v = mergeArrayExclude(v, excludeFrom);
107
107
  }
108
108
  if ((0, import_types.isArray)(v)) {
109
- o[k] = v.map((x) => deepCloneExclude(x, exclude));
109
+ o[k] = v.map((x) => deepCloneExclude(x, excludeFrom));
110
110
  } else if ((0, import_types.isObject)(v)) {
111
- o[k] = deepCloneExclude(v, exclude);
111
+ o[k] = deepCloneExclude(v, excludeFrom);
112
112
  } else
113
113
  o[k] = v;
114
114
  }
@@ -117,20 +117,17 @@ const deepCloneExclude = (obj, exclude = []) => {
117
117
  const mergeArrayExclude = (arr, excl = []) => {
118
118
  return arr.reduce((acc, curr) => deepMerge(acc, deepCloneExclude(curr, excl)), {});
119
119
  };
120
- const deepClone = (obj) => {
121
- if ((0, import_types.isArray)(obj)) {
122
- return obj.map(deepClone);
123
- }
124
- const o = {};
120
+ const deepClone = (obj, excludeFrom = []) => {
121
+ const o = (0, import_types.isArray)(obj) ? [] : {};
125
122
  for (const prop in obj) {
123
+ if (excludeFrom.includes(prop) || prop.includes("__"))
124
+ continue;
126
125
  let objProp = obj[prop];
127
126
  if (prop === "extend" && (0, import_types.isArray)(objProp)) {
128
127
  objProp = mergeArray(objProp);
129
128
  }
130
- if ((0, import_types.isArray)(objProp)) {
131
- o[prop] = objProp.map((v) => (0, import_types.isObject)(v) ? deepClone(v) : v);
132
- } else if ((0, import_types.isObject)(objProp)) {
133
- o[prop] = deepClone(objProp);
129
+ if ((0, import_types.isObjectLike)(objProp)) {
130
+ o[prop] = deepClone(objProp, excludeFrom);
134
131
  } else
135
132
  o[prop] = objProp;
136
133
  }
@@ -196,8 +193,8 @@ const deepDestringify = (obj, stringified = {}) => {
196
193
  try {
197
194
  const evalProp = import_globals.window.eval(`(${objProp})`);
198
195
  stringified[prop] = evalProp;
199
- } catch (e) {
200
- if (e)
196
+ } catch (e2) {
197
+ if (e2)
201
198
  stringified[prop] = objProp;
202
199
  }
203
200
  } else {
@@ -211,8 +208,8 @@ const deepDestringify = (obj, stringified = {}) => {
211
208
  try {
212
209
  const evalProp = import_globals.window.eval(`(${arrProp})`);
213
210
  stringified[prop].push(evalProp);
214
- } catch (e) {
215
- if (e)
211
+ } catch (e2) {
212
+ if (e2)
216
213
  stringified[prop].push(arrProp);
217
214
  }
218
215
  } else {
@@ -232,32 +229,32 @@ const deepDestringify = (obj, stringified = {}) => {
232
229
  }
233
230
  return stringified;
234
231
  };
235
- const overwrite = (element, params, options) => {
232
+ const overwrite = (element, params, excludeFrom = []) => {
236
233
  const { ref } = element;
237
234
  const changes = {};
238
- for (const e in params) {
239
- if (e === "props")
235
+ for (const e2 in params) {
236
+ if (excludeFrom.includes(e2) || e2.includes("__"))
240
237
  continue;
241
- const elementProp = element[e];
242
- const paramsProp = params[e];
238
+ const elementProp = element[e2];
239
+ const paramsProp = params[e2];
243
240
  if (paramsProp) {
244
- ref.__cache[e] = changes[e] = elementProp;
245
- ref[e] = paramsProp;
241
+ ref.__cache[e2] = changes[e2] = elementProp;
242
+ ref[e2] = paramsProp;
246
243
  }
247
244
  }
248
245
  return changes;
249
246
  };
250
247
  const diffObjects = (original, objToDiff, cache) => {
251
- for (const e in objToDiff) {
252
- if (e === "ref")
248
+ for (const e2 in objToDiff) {
249
+ if (e2 === "ref")
253
250
  continue;
254
- const originalProp = original[e];
255
- const objToDiffProp = objToDiff[e];
251
+ const originalProp = original[e2];
252
+ const objToDiffProp = objToDiff[e2];
256
253
  if ((0, import_types.isObject)(originalProp) && (0, import_types.isObject)(objToDiffProp)) {
257
- cache[e] = {};
258
- diff(originalProp, objToDiffProp, cache[e]);
254
+ cache[e2] = {};
255
+ diff(originalProp, objToDiffProp, cache[e2]);
259
256
  } else if (objToDiffProp !== void 0) {
260
- cache[e] = objToDiffProp;
257
+ cache[e2] = objToDiffProp;
261
258
  }
262
259
  }
263
260
  return cache;
@@ -290,23 +287,33 @@ const diff = (original, objToDiff, cache = {}) => {
290
287
  };
291
288
  const overwriteObj = (params, obj) => {
292
289
  const changes = {};
293
- for (const e in params) {
294
- const objProp = obj[e];
295
- const paramsProp = params[e];
290
+ for (const e2 in params) {
291
+ const objProp = obj[e2];
292
+ const paramsProp = params[e2];
296
293
  if (paramsProp) {
297
- obj[e] = changes[e] = objProp;
294
+ obj[e2] = changes[e2] = objProp;
298
295
  }
299
296
  }
300
297
  return changes;
301
298
  };
302
- const overwriteDeep = (params, obj) => {
303
- for (const e in params) {
304
- const objProp = obj[e];
305
- const paramsProp = params[e];
299
+ const overwriteShallow = (obj, params, excludeFrom = []) => {
300
+ for (const e2 in params) {
301
+ if (excludeFrom.includes(e2) || e2.includes("__"))
302
+ continue;
303
+ obj[e2] = params[e2];
304
+ }
305
+ return obj;
306
+ };
307
+ const overwriteDeep = (params, obj, excludeFrom = []) => {
308
+ for (const e2 in params) {
309
+ if (excludeFrom.includes(e2) || e2.includes("__"))
310
+ continue;
311
+ const objProp = obj[e2];
312
+ const paramsProp = params[e2];
306
313
  if ((0, import_types.isObjectLike)(objProp) && (0, import_types.isObjectLike)(paramsProp)) {
307
314
  overwriteDeep(paramsProp, objProp);
308
315
  } else if (paramsProp !== void 0) {
309
- obj[e] = paramsProp;
316
+ obj[e2] = paramsProp;
310
317
  }
311
318
  }
312
319
  return obj;
@@ -316,9 +323,6 @@ const mergeIfExisted = (a, b) => {
316
323
  return deepMerge(a, b);
317
324
  return a || b;
318
325
  };
319
- const mergeArray = (arr) => {
320
- return arr.reduce((a, c) => deepMerge(a, deepClone(c)), {});
321
- };
322
326
  const mergeAndCloneIfArray = (obj) => {
323
327
  return (0, import_types.isArray)(obj) ? mergeArray(obj) : deepClone(obj);
324
328
  };
package/object.js CHANGED
@@ -3,6 +3,7 @@
3
3
  import { window } from '@domql/globals'
4
4
  import { isFunction, isObjectLike, isObject, isArray, isString, is } from './types.js'
5
5
 
6
+
6
7
  export const exec = (param, element, state, context) => {
7
8
  if (isFunction(param)) {
8
9
  return param(
@@ -31,11 +32,11 @@ export const merge = (element, obj) => {
31
32
  return element
32
33
  }
33
34
 
34
- export const deepMerge = (element, extend) => {
35
+ export const deepMerge = (element, extend, excludeFrom = []) => {
35
36
  for (const e in extend) {
37
+ if (excludeFrom.includes(e) || e.includes('__')) continue
36
38
  const elementProp = element[e]
37
39
  const extendProp = extend[e]
38
- if (e === 'parent' || e === 'props') continue
39
40
  if (isObjectLike(elementProp) && isObjectLike(extendProp)) {
40
41
  deepMerge(elementProp, extendProp)
41
42
  } else if (elementProp === undefined) {
@@ -45,42 +46,42 @@ export const deepMerge = (element, extend) => {
45
46
  return element
46
47
  }
47
48
 
48
- export const clone = obj => {
49
+ export const clone = (obj, excludeFrom = []) => {
49
50
  const o = {}
50
51
  for (const prop in obj) {
51
- if (prop === 'node') continue
52
+ if (excludeFrom.includes(e) || e.includes('__')) continue
52
53
  o[prop] = obj[prop]
53
54
  }
54
55
  return o
55
56
  }
56
57
 
57
- // Clone anything deeply but exclude keys given in 'exclude'
58
- export const deepCloneExclude = (obj, exclude = []) => {
58
+ // Clone anything deeply but excludeFrom keys given in 'excludeFrom'
59
+ export const deepCloneExclude = (obj, excludeFrom = []) => {
59
60
  if (isArray(obj)) {
60
- return obj.map(x => deepCloneExclude(x, exclude))
61
+ return obj.map(x => deepCloneExclude(x, excludeFrom))
61
62
  }
62
63
 
63
64
  const o = {}
64
65
  for (const k in obj) {
65
- if (exclude.indexOf(k) > -1) continue
66
+ if (excludeFrom.includes(k) || k.includes('__')) continue
66
67
 
67
68
  let v = obj[k]
68
69
 
69
70
  if (k === 'extend' && isArray(v)) {
70
- v = mergeArrayExclude(v, exclude)
71
+ v = mergeArrayExclude(v, excludeFrom)
71
72
  }
72
73
 
73
74
  if (isArray(v)) {
74
- o[k] = v.map(x => deepCloneExclude(x, exclude))
75
+ o[k] = v.map(x => deepCloneExclude(x, excludeFrom))
75
76
  } else if (isObject(v)) {
76
- o[k] = deepCloneExclude(v, exclude)
77
+ o[k] = deepCloneExclude(v, excludeFrom)
77
78
  } else o[k] = v
78
79
  }
79
80
 
80
81
  return o
81
82
  }
82
83
 
83
- // Merge array, but exclude keys listed in 'excl'
84
+ // Merge array, but excludeFrom keys listed in 'excl'
84
85
  export const mergeArrayExclude = (arr, excl = []) => {
85
86
  return arr.reduce((acc, curr) => deepMerge(acc, deepCloneExclude(curr, excl)), {})
86
87
  }
@@ -88,20 +89,16 @@ export const mergeArrayExclude = (arr, excl = []) => {
88
89
  /**
89
90
  * Deep cloning of object
90
91
  */
91
- export const deepClone = (obj) => {
92
- if (isArray(obj)) {
93
- return obj.map(deepClone)
94
- }
95
- const o = {}
92
+ export const deepClone = (obj, excludeFrom = []) => {
93
+ const o = isArray(obj) ? [] : {}
96
94
  for (const prop in obj) {
95
+ if (excludeFrom.includes(prop) || prop.includes('__')) continue
97
96
  let objProp = obj[prop]
98
97
  if (prop === 'extend' && isArray(objProp)) {
99
98
  objProp = mergeArray(objProp)
100
99
  }
101
- if (isArray(objProp)) {
102
- o[prop] = objProp.map(v => isObject(v) ? deepClone(v) : v)
103
- } else if (isObject(objProp)) {
104
- o[prop] = deepClone(objProp)
100
+ if (isObjectLike(objProp)) {
101
+ o[prop] = deepClone(objProp, excludeFrom)
105
102
  } else o[prop] = objProp
106
103
  }
107
104
  return o
@@ -210,12 +207,12 @@ export const deepDestringify = (obj, stringified = {}) => {
210
207
  /**
211
208
  * Overwrites object properties with another
212
209
  */
213
- export const overwrite = (element, params, options) => {
210
+ export const overwrite = (element, params, excludeFrom = []) => {
214
211
  const { ref } = element
215
212
  const changes = {}
216
213
 
217
214
  for (const e in params) {
218
- if (e === 'props') continue
215
+ if (excludeFrom.includes(e) || e.includes('__')) continue
219
216
 
220
217
  const elementProp = element[e]
221
218
  const paramsProp = params[e]
@@ -293,11 +290,20 @@ export const overwriteObj = (params, obj) => {
293
290
  return changes
294
291
  }
295
292
 
293
+ export const overwriteShallow = (obj, params, excludeFrom = []) => {
294
+ for (const e in params) {
295
+ if (excludeFrom.includes(e) || e.includes('__')) continue
296
+ obj[e] = params[e]
297
+ }
298
+ return obj
299
+ }
300
+
296
301
  /**
297
302
  * Overwrites DEEPLY object properties with another
298
303
  */
299
- export const overwriteDeep = (params, obj) => {
304
+ export const overwriteDeep = (params, obj, excludeFrom = []) => {
300
305
  for (const e in params) {
306
+ if (excludeFrom.includes(e) || e.includes('__')) continue
301
307
  const objProp = obj[e]
302
308
  const paramsProp = params[e]
303
309
  if (isObjectLike(objProp) && isObjectLike(paramsProp)) {
@@ -317,13 +323,6 @@ export const mergeIfExisted = (a, b) => {
317
323
  return a || b
318
324
  }
319
325
 
320
- /**
321
- * Merges array extendtypes
322
- */
323
- export const mergeArray = (arr) => {
324
- return arr.reduce((a, c) => deepMerge(a, deepClone(c)), {})
325
- }
326
-
327
326
  /**
328
327
  * Merges array extendtypes
329
328
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/utils",
3
- "version": "2.3.110",
3
+ "version": "2.3.112",
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": "7b3ccf7d24188c27067e88610f4d246070ccffd9",
26
+ "gitHead": "a86dad4cef1731f6a97d43ec445074c31f76760a",
27
27
  "devDependencies": {
28
28
  "@babel/core": "^7.12.0"
29
29
  }