@domql/utils 2.5.64 → 2.5.73

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
@@ -53,6 +53,7 @@ export const cutArrayBeforeValue = (arr, value) => {
53
53
  }
54
54
 
55
55
  export const cutArrayAfterValue = (arr, value) => {
56
+ if (!isArray(arr)) return
56
57
  const index = arr.indexOf(value)
57
58
  if (index !== -1) {
58
59
  return arr.slice(index + 1)
package/dist/cjs/array.js CHANGED
@@ -71,6 +71,8 @@ const cutArrayBeforeValue = (arr, value) => {
71
71
  return arr;
72
72
  };
73
73
  const cutArrayAfterValue = (arr, value) => {
74
+ if (!(0, import_types.isArray)(arr))
75
+ return;
74
76
  const index = arr.indexOf(value);
75
77
  if (index !== -1) {
76
78
  return arr.slice(index + 1);
@@ -20,6 +20,7 @@ var object_exports = {};
20
20
  __export(object_exports, {
21
21
  clone: () => clone,
22
22
  deepClone: () => deepClone,
23
+ deepCloneEntrance: () => deepCloneEntrance,
23
24
  deepCloneExclude: () => deepCloneExclude,
24
25
  deepCloneWithExtend: () => deepCloneWithExtend,
25
26
  deepContains: () => deepContains,
@@ -152,18 +153,24 @@ const deepClone = (obj, excludeFrom = [], cleanUndefined = false) => {
152
153
  }
153
154
  return o;
154
155
  };
155
- const deepCloneWithExtend = (obj, excludeFrom = [], cleanUndefined = false) => {
156
+ const deepCloneEntrance = (...params) => {
157
+ let extended;
158
+ try {
159
+ extended = deepCloneWithExtend(...params);
160
+ } catch {
161
+ console.log("HERE", extended);
162
+ }
163
+ return extended;
164
+ };
165
+ const deepCloneWithExtend = (obj, excludeFrom = ["node"], options = {}) => {
156
166
  const o = (0, import_types.isArray)(obj) ? [] : {};
157
167
  for (const prop in obj) {
158
- if (prop === "__proto__")
159
- continue;
160
- if (excludeFrom.includes(prop) || prop.startsWith("__"))
161
- continue;
168
+ const hasOwnProperty2 = Object.prototype.hasOwnProperty.call(obj, prop);
162
169
  const objProp = obj[prop];
163
- if (cleanUndefined && (0, import_types.isUndefined)(objProp))
170
+ if (!hasOwnProperty2 || excludeFrom.includes(prop) || prop.startsWith("__") || options.cleanUndefined && (0, import_types.isUndefined)(objProp) || options.cleanNull && (0, import_types.isNull)(objProp))
164
171
  continue;
165
172
  if ((0, import_types.isObjectLike)(objProp)) {
166
- o[prop] = deepCloneWithExtend(objProp, excludeFrom, cleanUndefined);
173
+ o[prop] = deepCloneWithExtend(objProp, excludeFrom, options);
167
174
  } else
168
175
  o[prop] = objProp;
169
176
  }
@@ -36,13 +36,16 @@ const trimStringFromSymbols = (str, characters) => {
36
36
  const pattern = new RegExp(`[${characters.join("\\")}]`, "g");
37
37
  return str.replace(pattern, "");
38
38
  };
39
- const brackRegex = /\{\{\s*((?:\.\.\/)+)?([^}\s]+)\s*\}\}/g;
40
- const replaceLiteralsWithObjectFields = (str, state) => {
41
- if (!str.includes("{{"))
39
+ const brackRegex = {
40
+ 2: /\{\{\s*((?:\.\.\/)+)?([^}\s]+)\s*\}\}/g,
41
+ 3: /\{\{\s*((?:\.\.\.\/)+)?([^}\s]+)\s*\}\}/g
42
+ };
43
+ const replaceLiteralsWithObjectFields = (str, state, opts = {}) => {
44
+ if (!str.includes(opts.bracketsLength === 3 ? "{{{" : "{{"))
42
45
  return str;
43
- return str.replace(brackRegex, (_, parentPath, variable) => {
46
+ return str.replace(brackRegex[opts.bracketsLength || 2], (_, parentPath, variable) => {
44
47
  if (parentPath) {
45
- const parentLevels = parentPath.match(/\.\.\//g).length;
48
+ const parentLevels = parentPath.match(opts.bracketsLength === 3 ? /\.\.\.\//g : /\.\.\//g).length;
46
49
  let parentState = state;
47
50
  for (let i = 0; i < parentLevels; i++) {
48
51
  parentState = parentState.parent;
package/object.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict'
2
2
 
3
3
  import { window } from './globals.js'
4
- import { isFunction, isObjectLike, isObject, isArray, isString, is, isUndefined, isDate } from './types.js'
4
+ import { isFunction, isObjectLike, isObject, isArray, isString, is, isUndefined, isDate, isNull } from './types.js'
5
5
  import { mergeAndCloneIfArray, mergeArray } from './array.js'
6
6
  import { stringIncludesAny } from './string.js'
7
7
 
@@ -114,15 +114,31 @@ export const deepClone = (obj, excludeFrom = [], cleanUndefined = false) => {
114
114
  /**
115
115
  * Deep cloning of object
116
116
  */
117
- export const deepCloneWithExtend = (obj, excludeFrom = [], cleanUndefined = false) => {
117
+ export const deepCloneEntrance = (...params) => {
118
+ // console.groupCollapsed('deepCloneEntrance')
119
+ // console.warn(params)
120
+ let extended
121
+ try {
122
+ extended = deepCloneWithExtend(...params)
123
+ } catch {
124
+ console.log('HERE', extended)
125
+ }
126
+ // console.groupEnd('deepCloneEntrance')
127
+ return extended
128
+ }
129
+
130
+ export const deepCloneWithExtend = (obj, excludeFrom = ['node'], options = {}) => {
118
131
  const o = isArray(obj) ? [] : {}
119
132
  for (const prop in obj) {
120
- if (prop === '__proto__') continue
121
- if (excludeFrom.includes(prop) || prop.startsWith('__')) continue
133
+ const hasOwnProperty = Object.prototype.hasOwnProperty.call(obj, prop)
122
134
  const objProp = obj[prop]
123
- if (cleanUndefined && isUndefined(objProp)) continue
135
+ if (
136
+ !hasOwnProperty || excludeFrom.includes(prop) || prop.startsWith('__') ||
137
+ (options.cleanUndefined && isUndefined(objProp)) ||
138
+ (options.cleanNull && isNull(objProp))
139
+ ) continue
124
140
  if (isObjectLike(objProp)) {
125
- o[prop] = deepCloneWithExtend(objProp, excludeFrom, cleanUndefined)
141
+ o[prop] = deepCloneWithExtend(objProp, excludeFrom, options)
126
142
  } else o[prop] = objProp
127
143
  }
128
144
  return o
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domql/utils",
3
- "version": "2.5.64",
3
+ "version": "2.5.73",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "index.js",
@@ -23,7 +23,7 @@
23
23
  "build": "yarn build:cjs",
24
24
  "prepublish": "rimraf -I dist && yarn build && yarn copy:package:cjs"
25
25
  },
26
- "gitHead": "ed8570ce73011589d920684013958c081147a39c",
26
+ "gitHead": "6180b8819c6ccf0dc60501220a05ae212df7f44d",
27
27
  "devDependencies": {
28
28
  "@babel/core": "^7.12.0"
29
29
  }
package/string.js CHANGED
@@ -24,12 +24,16 @@ export const trimStringFromSymbols = (str, characters) => {
24
24
  * @param {object} state - The object containing the values to substitute.
25
25
  * @returns {string} The modified string with placeholders replaced by values from the object.
26
26
  */
27
- const brackRegex = /\{\{\s*((?:\.\.\/)+)?([^}\s]+)\s*\}\}/g
28
- export const replaceLiteralsWithObjectFields = (str, state) => {
29
- if (!str.includes('{{')) return str
30
- return str.replace(brackRegex, (_, parentPath, variable) => {
27
+ const brackRegex = {
28
+ 2: /\{\{\s*((?:\.\.\/)+)?([^}\s]+)\s*\}\}/g,
29
+ 3: /\{\{\s*((?:\.\.\.\/)+)?([^}\s]+)\s*\}\}/g
30
+ }
31
+
32
+ export const replaceLiteralsWithObjectFields = (str, state, opts = {}) => {
33
+ if (!str.includes(opts.bracketsLength === 3 ? '{{{' : '{{')) return str
34
+ return str.replace(brackRegex[opts.bracketsLength || 2], (_, parentPath, variable) => {
31
35
  if (parentPath) {
32
- const parentLevels = parentPath.match(/\.\.\//g).length
36
+ const parentLevels = parentPath.match(opts.bracketsLength === 3 ? /\.\.\.\//g : /\.\.\//g).length
33
37
  let parentState = state
34
38
  for (let i = 0; i < parentLevels; i++) {
35
39
  parentState = parentState.parent