@domql/utils 2.3.69 → 2.3.70

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.
@@ -39,59 +39,61 @@ __export(object_exports, {
39
39
  overwriteObj: () => overwriteObj
40
40
  });
41
41
  module.exports = __toCommonJS(object_exports);
42
+ var import_globals = require("@domql/globals");
42
43
  var import_types = require("./types.js");
43
44
  const exec = (param, element, state) => {
44
45
  if ((0, import_types.isFunction)(param))
45
46
  return param(element, state || element.state);
46
47
  return param;
47
48
  };
48
- const map = (obj2, extention, element) => {
49
+ const map = (obj, extention, element) => {
49
50
  for (const e in extention) {
50
- obj2[e] = exec(extention[e], element);
51
+ obj[e] = exec(extention[e], element);
51
52
  }
52
53
  };
53
- const merge = (element, obj2) => {
54
- for (const e in obj2) {
54
+ const merge = (element, obj) => {
55
+ for (const e in obj) {
55
56
  const elementProp = element[e];
56
- const objProp2 = obj2[e];
57
+ const objProp = obj[e];
57
58
  if (elementProp === void 0) {
58
- element[e] = objProp2;
59
+ element[e] = objProp;
59
60
  }
60
61
  }
61
62
  return element;
62
63
  };
63
64
  const deepMerge = (element, extend) => {
64
65
  for (const e in extend) {
65
- const elementProp = element[e];
66
66
  const extendProp = extend[e];
67
67
  if (e === "parent" || e === "props")
68
68
  continue;
69
- if (elementProp === void 0) {
69
+ if (element[e] === void 0) {
70
+ element[e] = extendProp;
71
+ } else if ((0, import_types.isObjectLike)(element[e]) && (0, import_types.isObjectLike)(extendProp)) {
72
+ deepMerge(element[e], extendProp);
73
+ } else {
70
74
  element[e] = extendProp;
71
- } else if ((0, import_types.isObjectLike)(elementProp) && (0, import_types.isObject)(extendProp)) {
72
- deepMerge(elementProp, extendProp);
73
75
  }
74
76
  }
75
77
  return element;
76
78
  };
77
- const clone = (obj2) => {
79
+ const clone = (obj) => {
78
80
  const o = {};
79
- for (const prop2 in obj2) {
80
- if (prop2 === "node")
81
+ for (const prop in obj) {
82
+ if (prop === "node")
81
83
  continue;
82
- o[prop2] = obj2[prop2];
84
+ o[prop] = obj[prop];
83
85
  }
84
86
  return o;
85
87
  };
86
- const deepCloneExclude = (obj2, exclude = []) => {
87
- if ((0, import_types.isArray)(obj2)) {
88
- return obj2.map((x) => deepCloneExclude(x, exclude));
88
+ const deepCloneExclude = (obj, exclude = []) => {
89
+ if ((0, import_types.isArray)(obj)) {
90
+ return obj.map((x) => deepCloneExclude(x, exclude));
89
91
  }
90
92
  const o = {};
91
- for (const k in obj2) {
93
+ for (const k in obj) {
92
94
  if (exclude.indexOf(k) > -1)
93
95
  continue;
94
- let v = obj2[k];
96
+ let v = obj[k];
95
97
  if (k === "extend" && (0, import_types.isArray)(v)) {
96
98
  v = mergeArrayExclude(v, exclude);
97
99
  }
@@ -107,59 +109,89 @@ const deepCloneExclude = (obj2, exclude = []) => {
107
109
  const mergeArrayExclude = (arr, excl = []) => {
108
110
  return arr.reduce((acc, curr) => deepMerge(acc, deepCloneExclude(curr, excl)), {});
109
111
  };
110
- const deepClone = (obj2) => {
111
- if ((0, import_types.isArray)(obj2)) {
112
- return obj2.map(deepClone);
112
+ const deepClone = (obj) => {
113
+ if ((0, import_types.isArray)(obj)) {
114
+ return obj.map(deepClone);
113
115
  }
114
116
  const o = {};
115
- for (const prop2 in obj2) {
116
- let objProp2 = obj2[prop2];
117
- if (prop2 === "extend" && (0, import_types.isArray)(objProp2)) {
118
- objProp2 = mergeArray(objProp2);
117
+ for (const prop in obj) {
118
+ let objProp = obj[prop];
119
+ if (prop === "extend" && (0, import_types.isArray)(objProp)) {
120
+ objProp = mergeArray(objProp);
119
121
  }
120
- if ((0, import_types.isArray)(objProp2)) {
121
- o[prop2] = objProp2.map((v) => (0, import_types.isObject)(v) ? deepClone(v) : v);
122
- } else if ((0, import_types.isObject)(objProp2)) {
123
- o[prop2] = deepClone(objProp2);
122
+ if ((0, import_types.isArray)(objProp)) {
123
+ o[prop] = objProp.map((v) => (0, import_types.isObject)(v) ? deepClone(v) : v);
124
+ } else if ((0, import_types.isObject)(objProp)) {
125
+ o[prop] = deepClone(objProp);
124
126
  } else
125
- o[prop2] = objProp2;
127
+ o[prop] = objProp;
126
128
  }
127
129
  return o;
128
130
  };
129
- const deepStringify = (obj2, stringified2 = {}) => {
130
- for (const prop2 in obj2) {
131
- const objProp2 = obj2[prop2];
132
- if ((0, import_types.isFunction)(objProp2)) {
133
- stringified2[prop2] = objProp2.toString();
134
- } else if ((0, import_types.isObject)(objProp2)) {
135
- stringified2[prop2] = {};
136
- deepStringify(objProp2[prop2], stringified2[prop2]);
137
- } else if ((0, import_types.isArray)(objProp2)) {
138
- stringified2[prop2] = [];
139
- objProp2.map((v, i) => deepStringify(v, stringified2[prop2][i]));
140
- } else
141
- stringified2[prop2] = objProp2;
131
+ const deepStringify = (obj, stringified = {}) => {
132
+ for (const prop in obj) {
133
+ const objProp = obj[prop];
134
+ if ((0, import_types.isFunction)(objProp)) {
135
+ stringified[prop] = objProp.toString();
136
+ } else if ((0, import_types.isObject)(objProp)) {
137
+ stringified[prop] = {};
138
+ deepStringify(objProp, stringified[prop]);
139
+ } else if ((0, import_types.isArray)(objProp)) {
140
+ stringified[prop] = [];
141
+ objProp.forEach((v, i) => {
142
+ if ((0, import_types.isObject)(v)) {
143
+ stringified[prop][i] = {};
144
+ deepStringify(v, stringified[prop][i]);
145
+ } else if ((0, import_types.isFunction)(v)) {
146
+ stringified[prop][i] = v.toString();
147
+ } else {
148
+ stringified[prop][i] = v;
149
+ }
150
+ });
151
+ } else {
152
+ stringified[prop] = objProp;
153
+ }
142
154
  }
143
- console.log(obj2, stringified2);
144
- return stringified2;
155
+ return stringified;
145
156
  };
146
157
  const deepDestringify = (obj, stringified = {}) => {
147
158
  for (const prop in obj) {
148
159
  const objProp = obj[prop];
149
160
  if ((0, import_types.isString)(objProp)) {
150
- if (objProp.includes("=>") || objProp.includes("function") || objProp[0] === "(") {
161
+ if (objProp.includes("=>") || objProp.includes("function") || objProp.startsWith("(")) {
151
162
  try {
152
- const evalProp = eval(objProp);
163
+ const evalProp = import_globals.window.eval(`(${objProp})`);
153
164
  stringified[prop] = evalProp;
154
165
  } catch (e) {
155
166
  if (e)
156
167
  stringified[prop] = objProp;
157
168
  }
158
169
  }
159
- } else
170
+ } else {
160
171
  stringified[prop] = objProp;
161
- if ((0, import_types.isObject)(objProp))
162
- deepDestringify(stringified[prop], stringified[prop]);
172
+ }
173
+ if ((0, import_types.isArray)(objProp)) {
174
+ stringified[prop] = [];
175
+ objProp.forEach((arrProp) => {
176
+ if ((0, import_types.isString)(arrProp)) {
177
+ if (arrProp.includes("=>") || arrProp.includes("function") || arrProp.startsWith("(")) {
178
+ try {
179
+ const evalProp = import_globals.window.eval(arrProp);
180
+ stringified[prop].push(evalProp);
181
+ } catch (e) {
182
+ if (e)
183
+ stringified[prop].push(arrProp);
184
+ }
185
+ } else {
186
+ stringified[prop].push(arrProp);
187
+ }
188
+ } else {
189
+ stringified[prop].push(deepDestringify(arrProp));
190
+ }
191
+ });
192
+ } else if ((0, import_types.isObject)(objProp)) {
193
+ stringified[prop] = deepDestringify(objProp, stringified[prop]);
194
+ }
163
195
  }
164
196
  return stringified;
165
197
  };
@@ -178,44 +210,44 @@ const overwrite = (element, params, options) => {
178
210
  }
179
211
  return changes;
180
212
  };
181
- const diff = (obj2, original, cache) => {
213
+ const diff = (obj, original, cache) => {
182
214
  const changes = cache || {};
183
- for (const e in obj2) {
215
+ for (const e in obj) {
184
216
  if (e === "ref")
185
217
  continue;
186
218
  const originalProp = original[e];
187
- const objProp2 = obj2[e];
188
- if ((0, import_types.isObjectLike)(originalProp) && (0, import_types.isObjectLike)(objProp2)) {
219
+ const objProp = obj[e];
220
+ if ((0, import_types.isObjectLike)(originalProp) && (0, import_types.isObjectLike)(objProp)) {
189
221
  changes[e] = {};
190
- diff(originalProp, objProp2, changes[e]);
191
- } else if (objProp2 !== void 0) {
192
- changes[e] = objProp2;
222
+ diff(originalProp, objProp, changes[e]);
223
+ } else if (objProp !== void 0) {
224
+ changes[e] = objProp;
193
225
  }
194
226
  }
195
227
  return changes;
196
228
  };
197
- const overwriteObj = (params, obj2) => {
229
+ const overwriteObj = (params, obj) => {
198
230
  const changes = {};
199
231
  for (const e in params) {
200
- const objProp2 = obj2[e];
232
+ const objProp = obj[e];
201
233
  const paramsProp = params[e];
202
234
  if (paramsProp) {
203
- obj2[e] = changes[e] = objProp2;
235
+ obj[e] = changes[e] = objProp;
204
236
  }
205
237
  }
206
238
  return changes;
207
239
  };
208
- const overwriteDeep = (params, obj2) => {
240
+ const overwriteDeep = (params, obj) => {
209
241
  for (const e in params) {
210
- const objProp2 = obj2[e];
242
+ const objProp = obj[e];
211
243
  const paramsProp = params[e];
212
- if ((0, import_types.isObjectLike)(objProp2) && (0, import_types.isObjectLike)(paramsProp)) {
213
- overwriteDeep(objProp2, paramsProp);
244
+ if ((0, import_types.isObjectLike)(objProp) && (0, import_types.isObjectLike)(paramsProp)) {
245
+ overwriteDeep(paramsProp, objProp);
214
246
  } else if (paramsProp !== void 0) {
215
- obj2[e] = paramsProp;
247
+ obj[e] = paramsProp;
216
248
  }
217
249
  }
218
- return obj2;
250
+ return obj;
219
251
  };
220
252
  const mergeIfExisted = (a, b) => {
221
253
  if ((0, import_types.isObjectLike)(a) && (0, import_types.isObjectLike)(b))
@@ -225,16 +257,16 @@ const mergeIfExisted = (a, b) => {
225
257
  const mergeArray = (arr) => {
226
258
  return arr.reduce((a, c) => deepMerge(a, deepClone(c)), {});
227
259
  };
228
- const mergeAndCloneIfArray = (obj2) => {
229
- return (0, import_types.isArray)(obj2) ? mergeArray(obj2) : deepClone(obj2);
260
+ const mergeAndCloneIfArray = (obj) => {
261
+ return (0, import_types.isArray)(obj) ? mergeArray(obj) : deepClone(obj);
230
262
  };
231
- const flattenRecursive = (param, prop2, stack = []) => {
263
+ const flattenRecursive = (param, prop, stack = []) => {
232
264
  const objectized = mergeAndCloneIfArray(param);
233
265
  stack.push(objectized);
234
- const extendOfExtend = objectized[prop2];
266
+ const extendOfExtend = objectized[prop];
235
267
  if (extendOfExtend)
236
- flattenRecursive(extendOfExtend, prop2, stack);
237
- delete objectized[prop2];
268
+ flattenRecursive(extendOfExtend, prop, stack);
269
+ delete objectized[prop];
238
270
  return stack;
239
271
  };
240
272
  const isEqualDeep = (param, element) => {
@@ -242,9 +274,9 @@ const isEqualDeep = (param, element) => {
242
274
  return true;
243
275
  if (!param || !element)
244
276
  return false;
245
- for (const prop2 in param) {
246
- const paramProp = param[prop2];
247
- const elementProp = element[prop2];
277
+ for (const prop in param) {
278
+ const paramProp = param[prop];
279
+ const elementProp = element[prop];
248
280
  if ((0, import_types.isObjectLike)(paramProp)) {
249
281
  const isEqual = isEqualDeep(paramProp, elementProp);
250
282
  if (!isEqual)
package/object.js CHANGED
@@ -1,5 +1,6 @@
1
1
  'use strict'
2
2
 
3
+ import { window } from '@domql/globals'
3
4
  import { isFunction, isObjectLike, isObject, isArray, isString } from './types.js'
4
5
 
5
6
  export const exec = (param, element, state) => {
@@ -26,14 +27,14 @@ export const merge = (element, obj) => {
26
27
 
27
28
  export const deepMerge = (element, extend) => {
28
29
  for (const e in extend) {
29
- const elementProp = element[e]
30
30
  const extendProp = extend[e]
31
- // const cachedProps = cache.props
32
31
  if (e === 'parent' || e === 'props') continue
33
- if (elementProp === undefined) {
32
+ if (element[e] === undefined) {
33
+ element[e] = extendProp
34
+ } else if (isObjectLike(element[e]) && isObjectLike(extendProp)) {
35
+ deepMerge(element[e], extendProp)
36
+ } else {
34
37
  element[e] = extendProp
35
- } else if (isObjectLike(elementProp) && isObject(extendProp)) {
36
- deepMerge(elementProp, extendProp)
37
38
  }
38
39
  }
39
40
  return element
@@ -111,13 +112,23 @@ export const deepStringify = (obj, stringified = {}) => {
111
112
  stringified[prop] = objProp.toString()
112
113
  } else if (isObject(objProp)) {
113
114
  stringified[prop] = {}
114
- deepStringify(objProp[prop], stringified[prop])
115
+ deepStringify(objProp, stringified[prop])
115
116
  } else if (isArray(objProp)) {
116
117
  stringified[prop] = []
117
- objProp.map((v, i) => deepStringify(v, stringified[prop][i]))
118
- } else stringified[prop] = objProp
118
+ objProp.forEach((v, i) => {
119
+ if (isObject(v)) {
120
+ stringified[prop][i] = {}
121
+ deepStringify(v, stringified[prop][i])
122
+ } else if (isFunction(v)) {
123
+ stringified[prop][i] = v.toString()
124
+ } else {
125
+ stringified[prop][i] = v
126
+ }
127
+ })
128
+ } else {
129
+ stringified[prop] = objProp
130
+ }
119
131
  }
120
- console.log(obj, stringified)
121
132
  return stringified
122
133
  }
123
134
 
@@ -128,14 +139,35 @@ export const deepDestringify = (obj, stringified = {}) => {
128
139
  for (const prop in obj) {
129
140
  const objProp = obj[prop]
130
141
  if (isString(objProp)) {
131
- if (objProp.includes('=>') || objProp.includes('function') || objProp[0] === '(') {
142
+ if (objProp.includes('=>') || objProp.includes('function') || objProp.startsWith('(')) {
132
143
  try {
133
- const evalProp = eval(objProp) // eslint-disable-line
144
+ const evalProp = window.eval(`(${objProp})`) // use parentheses to convert string to function expression
134
145
  stringified[prop] = evalProp
135
146
  } catch (e) { if (e) stringified[prop] = objProp }
136
147
  }
137
- } else stringified[prop] = objProp
138
- if (isObject(objProp)) deepDestringify(stringified[prop], stringified[prop])
148
+ } else {
149
+ stringified[prop] = objProp
150
+ }
151
+
152
+ if (isArray(objProp)) {
153
+ stringified[prop] = []
154
+ objProp.forEach((arrProp) => {
155
+ if (isString(arrProp)) {
156
+ if (arrProp.includes('=>') || arrProp.includes('function') || arrProp.startsWith('(')) {
157
+ try {
158
+ const evalProp = window.eval(arrProp) // eslint-disable-line
159
+ stringified[prop].push(evalProp)
160
+ } catch (e) { if (e) stringified[prop].push(arrProp) }
161
+ } else {
162
+ stringified[prop].push(arrProp)
163
+ }
164
+ } else {
165
+ stringified[prop].push(deepDestringify(arrProp))
166
+ }
167
+ })
168
+ } else if (isObject(objProp)) {
169
+ stringified[prop] = deepDestringify(objProp, stringified[prop]) // recursively call deepDestringify for nested objects
170
+ }
139
171
  }
140
172
  return stringified
141
173
  }
@@ -204,7 +236,7 @@ export const overwriteDeep = (params, obj) => {
204
236
  const objProp = obj[e]
205
237
  const paramsProp = params[e]
206
238
  if (isObjectLike(objProp) && isObjectLike(paramsProp)) {
207
- overwriteDeep(objProp, paramsProp)
239
+ overwriteDeep(paramsProp, objProp)
208
240
  } else if (paramsProp !== undefined) {
209
241
  obj[e] = paramsProp
210
242
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/utils",
3
- "version": "2.3.69",
3
+ "version": "2.3.70",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "index.js",
@@ -22,5 +22,5 @@
22
22
  "@domql/globals": "latest",
23
23
  "@domql/tags": "latest"
24
24
  },
25
- "gitHead": "7b43df6cfdae920a1602749f2cf29a9b44a40000"
25
+ "gitHead": "c2fa4c40d134093b837eafc1c4374561032281bf"
26
26
  }