happy-dom 14.3.3 → 14.3.4

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.

Potentially problematic release.


This version of happy-dom might be problematic. Click here for more details.

Files changed (40) hide show
  1. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs +5 -3
  2. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs.map +1 -1
  3. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  4. package/cjs/nodes/element/Element.cjs +2 -2
  5. package/cjs/nodes/element/Element.cjs.map +1 -1
  6. package/cjs/query-selector/QuerySelector.cjs +10 -4
  7. package/cjs/query-selector/QuerySelector.cjs.map +1 -1
  8. package/cjs/query-selector/QuerySelector.d.ts +5 -1
  9. package/cjs/query-selector/QuerySelector.d.ts.map +1 -1
  10. package/cjs/query-selector/SelectorItem.cjs +9 -4
  11. package/cjs/query-selector/SelectorItem.cjs.map +1 -1
  12. package/cjs/query-selector/SelectorItem.d.ts +4 -1
  13. package/cjs/query-selector/SelectorItem.d.ts.map +1 -1
  14. package/cjs/query-selector/SelectorParser.cjs +39 -18
  15. package/cjs/query-selector/SelectorParser.cjs.map +1 -1
  16. package/cjs/query-selector/SelectorParser.d.ts +12 -2
  17. package/cjs/query-selector/SelectorParser.d.ts.map +1 -1
  18. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  19. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js +5 -3
  20. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js.map +1 -1
  21. package/lib/nodes/element/Element.js +2 -2
  22. package/lib/nodes/element/Element.js.map +1 -1
  23. package/lib/query-selector/QuerySelector.d.ts +5 -1
  24. package/lib/query-selector/QuerySelector.d.ts.map +1 -1
  25. package/lib/query-selector/QuerySelector.js +10 -4
  26. package/lib/query-selector/QuerySelector.js.map +1 -1
  27. package/lib/query-selector/SelectorItem.d.ts +4 -1
  28. package/lib/query-selector/SelectorItem.d.ts.map +1 -1
  29. package/lib/query-selector/SelectorItem.js +9 -4
  30. package/lib/query-selector/SelectorItem.js.map +1 -1
  31. package/lib/query-selector/SelectorParser.d.ts +12 -2
  32. package/lib/query-selector/SelectorParser.d.ts.map +1 -1
  33. package/lib/query-selector/SelectorParser.js +39 -18
  34. package/lib/query-selector/SelectorParser.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/css/declaration/element-style/CSSStyleDeclarationElementStyle.ts +5 -3
  37. package/src/nodes/element/Element.ts +2 -2
  38. package/src/query-selector/QuerySelector.ts +15 -4
  39. package/src/query-selector/SelectorItem.ts +15 -4
  40. package/src/query-selector/SelectorParser.ts +49 -18
@@ -55,36 +55,44 @@ export default class SelectorParser {
55
55
  * Parses a selector string and returns an instance of SelectorItem.
56
56
  *
57
57
  * @param selector Selector.
58
+ * @param [options] Options.
59
+ * @param [options.ignoreErrors] Ignores errors.
58
60
  * @returns Selector item.
59
61
  */
60
- static getSelectorItem(selector) {
61
- return this.getSelectorGroups(selector)[0][0];
62
+ static getSelectorItem(selector, options) {
63
+ return this.getSelectorGroups(selector, options)[0][0];
62
64
  }
63
65
  /**
64
66
  * Parses a selector string and returns groups with SelectorItem instances.
65
67
  *
66
68
  * @param selector Selector.
69
+ * @param [options] Options.
70
+ * @param [options.ignoreErrors] Ignores errors.
67
71
  * @returns Selector groups.
68
72
  */
69
- static getSelectorGroups(selector) {
73
+ static getSelectorGroups(selector, options) {
74
+ const ignoreErrors = options?.ignoreErrors;
70
75
  if (selector === '*') {
71
- return [[new SelectorItem({ tagName: '*' })]];
76
+ return [[new SelectorItem({ tagName: '*', ignoreErrors })]];
72
77
  }
73
78
  const simpleMatch = selector.match(SIMPLE_SELECTOR_REGEXP);
74
79
  if (simpleMatch) {
75
80
  if (simpleMatch[1]) {
76
- return [[new SelectorItem({ tagName: selector.toUpperCase() })]];
81
+ return [[new SelectorItem({ tagName: selector.toUpperCase(), ignoreErrors })]];
77
82
  }
78
83
  else if (simpleMatch[2]) {
79
- return [[new SelectorItem({ classNames: selector.replace('.', '').split('.') })]];
84
+ return [
85
+ [new SelectorItem({ classNames: selector.replace('.', '').split('.'), ignoreErrors })]
86
+ ];
80
87
  }
81
88
  else if (simpleMatch[3]) {
82
- return [[new SelectorItem({ id: selector.replace('#', '') })]];
89
+ return [[new SelectorItem({ id: selector.replace('#', ''), ignoreErrors })]];
83
90
  }
84
91
  }
85
92
  const regexp = new RegExp(SELECTOR_REGEXP);
86
93
  let currentSelectorItem = new SelectorItem({
87
- combinator: SelectorCombinatorEnum.descendant
94
+ combinator: SelectorCombinatorEnum.descendant,
95
+ ignoreErrors
88
96
  });
89
97
  let currentGroup = [currentSelectorItem];
90
98
  const groups = [currentGroup];
@@ -142,11 +150,11 @@ export default class SelectorParser {
142
150
  }
143
151
  else if (match[13] && match[14]) {
144
152
  currentSelectorItem.pseudos = currentSelectorItem.pseudos || [];
145
- currentSelectorItem.pseudos.push(this.getPseudo(match[13], match[14]));
153
+ currentSelectorItem.pseudos.push(this.getPseudo(match[13], match[14], options));
146
154
  }
147
155
  else if (match[15]) {
148
156
  currentSelectorItem.pseudos = currentSelectorItem.pseudos || [];
149
- currentSelectorItem.pseudos.push(this.getPseudo(match[15]));
157
+ currentSelectorItem.pseudos.push(this.getPseudo(match[15], null, options));
150
158
  }
151
159
  else if (match[16]) {
152
160
  currentSelectorItem.isPseudoElement = true;
@@ -155,24 +163,30 @@ export default class SelectorParser {
155
163
  switch (match[17].trim()) {
156
164
  case ',':
157
165
  currentSelectorItem = new SelectorItem({
158
- combinator: SelectorCombinatorEnum.descendant
166
+ combinator: SelectorCombinatorEnum.descendant,
167
+ ignoreErrors
159
168
  });
160
169
  currentGroup = [currentSelectorItem];
161
170
  groups.push(currentGroup);
162
171
  break;
163
172
  case '>':
164
- currentSelectorItem = new SelectorItem({ combinator: SelectorCombinatorEnum.child });
173
+ currentSelectorItem = new SelectorItem({
174
+ combinator: SelectorCombinatorEnum.child,
175
+ ignoreErrors
176
+ });
165
177
  currentGroup.push(currentSelectorItem);
166
178
  break;
167
179
  case '+':
168
180
  currentSelectorItem = new SelectorItem({
169
- combinator: SelectorCombinatorEnum.adjacentSibling
181
+ combinator: SelectorCombinatorEnum.adjacentSibling,
182
+ ignoreErrors
170
183
  });
171
184
  currentGroup.push(currentSelectorItem);
172
185
  break;
173
186
  case '':
174
187
  currentSelectorItem = new SelectorItem({
175
- combinator: SelectorCombinatorEnum.descendant
188
+ combinator: SelectorCombinatorEnum.descendant,
189
+ ignoreErrors
176
190
  });
177
191
  currentGroup.push(currentSelectorItem);
178
192
  break;
@@ -184,6 +198,9 @@ export default class SelectorParser {
184
198
  }
185
199
  }
186
200
  if (!isValid) {
201
+ if (options?.ignoreErrors) {
202
+ return [];
203
+ }
187
204
  throw new DOMException(`Invalid selector: "${selector}"`);
188
205
  }
189
206
  return groups;
@@ -227,9 +244,11 @@ export default class SelectorParser {
227
244
  *
228
245
  * @param name Pseudo name.
229
246
  * @param args Pseudo arguments.
247
+ * @param [options] Options.
248
+ * @param [options.ignoreErrors] Ignores errors.
230
249
  * @returns Pseudo.
231
250
  */
232
- static getPseudo(name, args) {
251
+ static getPseudo(name, args, options) {
233
252
  const lowerName = name.toLowerCase();
234
253
  if (!args) {
235
254
  return { name: lowerName, arguments: null, selectorItems: null, nthFunction: null };
@@ -239,7 +258,9 @@ export default class SelectorParser {
239
258
  case 'nth-child':
240
259
  const nthOfIndex = args.indexOf(' of ');
241
260
  const nthFunction = nthOfIndex !== -1 ? args.substring(0, nthOfIndex) : args;
242
- const selectorItem = nthOfIndex !== -1 ? this.getSelectorItem(args.substring(nthOfIndex + 4).trim()) : null;
261
+ const selectorItem = nthOfIndex !== -1
262
+ ? this.getSelectorItem(args.substring(nthOfIndex + 4).trim(), options)
263
+ : null;
243
264
  return {
244
265
  name: lowerName,
245
266
  arguments: args,
@@ -258,12 +279,12 @@ export default class SelectorParser {
258
279
  return {
259
280
  name: lowerName,
260
281
  arguments: args,
261
- selectorItems: [this.getSelectorItem(args)],
282
+ selectorItems: [this.getSelectorItem(args, options)],
262
283
  nthFunction: null
263
284
  };
264
285
  case 'is':
265
286
  case 'where':
266
- const selectorGroups = this.getSelectorGroups(args);
287
+ const selectorGroups = this.getSelectorGroups(args, options);
267
288
  const selectorItems = [];
268
289
  for (const group of selectorGroups) {
269
290
  selectorItems.push(group[0]);
@@ -1 +1 @@
1
- {"version":3,"file":"SelectorParser.js","sourceRoot":"","sources":["../../src/query-selector/SelectorParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectorParser.js","sourceRoot":"","sources":["../../src/query-selector/SelectorParser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "14.3.3",
3
+ "version": "14.3.4",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -328,11 +328,13 @@ export default class CSSStyleDeclarationElementStyle {
328
328
  }
329
329
  } else {
330
330
  for (const element of options.elements) {
331
- const matchResult = QuerySelector.match(<Element>element.element, selectorText);
332
- if (matchResult) {
331
+ const match = QuerySelector.matches(<Element>element.element, selectorText, {
332
+ ignoreErrors: true
333
+ });
334
+ if (match) {
333
335
  element.cssTexts.push({
334
336
  cssText: (<CSSStyleRule>rule)[PropertySymbol.cssText],
335
- priorityWeight: matchResult.priorityWeight
337
+ priorityWeight: match.priorityWeight
336
338
  });
337
339
  }
338
340
  }
@@ -851,7 +851,7 @@ export default class Element
851
851
  * @returns "true" if matching.
852
852
  */
853
853
  public matches(selector: string): boolean {
854
- return !!QuerySelector.match(this, selector);
854
+ return !!QuerySelector.matches(this, selector);
855
855
  }
856
856
 
857
857
  /**
@@ -865,7 +865,7 @@ export default class Element
865
865
  let parent: Element = this;
866
866
 
867
867
  while (parent) {
868
- if (QuerySelector.match(parent, selector)) {
868
+ if (QuerySelector.matches(parent, selector)) {
869
869
  return parent;
870
870
  }
871
871
  parent = parent.parentElement;
@@ -198,9 +198,15 @@ export default class QuerySelector {
198
198
  *
199
199
  * @param element Element to match.
200
200
  * @param selector Selector to match with.
201
+ * @param [options] Options.
202
+ * @param [options.ignoreErrors] Ignores errors.
201
203
  * @returns Result.
202
204
  */
203
- public static match(element: Element, selector: string): ISelectorMatch | null {
205
+ public static matches(
206
+ element: Element,
207
+ selector: string,
208
+ options?: { ignoreErrors?: boolean }
209
+ ): ISelectorMatch | null {
204
210
  if (!selector) {
205
211
  return null;
206
212
  }
@@ -211,14 +217,19 @@ export default class QuerySelector {
211
217
  };
212
218
  }
213
219
 
220
+ const ignoreErrors = options?.ignoreErrors;
221
+
214
222
  if (INVALID_SELECTOR_REGEXP.test(selector)) {
223
+ if (ignoreErrors) {
224
+ return null;
225
+ }
215
226
  throw new Error(
216
- `Failed to execute 'match' on '${element.constructor.name}': '${selector}' is not a valid selector.`
227
+ `Failed to execute 'matches' on '${element.constructor.name}': '${selector}' is not a valid selector.`
217
228
  );
218
229
  }
219
230
 
220
- for (const items of SelectorParser.getSelectorGroups(selector)) {
221
- const result = this.matchSelector(element, element, items.reverse());
231
+ for (const items of SelectorParser.getSelectorGroups(selector, options)) {
232
+ const result = this.matchSelector(element, element, items.reverse(), 0);
222
233
 
223
234
  if (result) {
224
235
  return result;
@@ -18,6 +18,7 @@ export default class SelectorItem {
18
18
  public pseudos: ISelectorPseudo[] | null;
19
19
  public isPseudoElement: boolean;
20
20
  public combinator: SelectorCombinatorEnum;
21
+ public ignoreErrors: boolean;
21
22
 
22
23
  /**
23
24
  * Constructor.
@@ -30,6 +31,7 @@ export default class SelectorItem {
30
31
  * @param [options.attributes] Attributes.
31
32
  * @param [options.pseudos] Pseudos.
32
33
  * @param [options.isPseudoElement] Is pseudo element.
34
+ * @param [options.ignoreErrors] Ignore errors.
33
35
  */
34
36
  constructor(options?: {
35
37
  tagName?: string;
@@ -39,6 +41,7 @@ export default class SelectorItem {
39
41
  pseudos?: ISelectorPseudo[];
40
42
  isPseudoElement?: boolean;
41
43
  combinator?: SelectorCombinatorEnum;
44
+ ignoreErrors?: boolean;
42
45
  }) {
43
46
  this.tagName = options?.tagName || null;
44
47
  this.id = options?.id || null;
@@ -47,6 +50,7 @@ export default class SelectorItem {
47
50
  this.pseudos = options?.pseudos || null;
48
51
  this.isPseudoElement = options?.isPseudoElement || false;
49
52
  this.combinator = options?.combinator || SelectorCombinatorEnum.descendant;
53
+ this.ignoreErrors = options?.ignoreErrors || false;
50
54
  }
51
55
 
52
56
  /**
@@ -98,7 +102,7 @@ export default class SelectorItem {
98
102
 
99
103
  // Pseudo match
100
104
  if (this.pseudos) {
101
- const result = this.matchPsuedo(element);
105
+ const result = this.matchPseudo(element);
102
106
  if (!result) {
103
107
  return null;
104
108
  }
@@ -114,7 +118,7 @@ export default class SelectorItem {
114
118
  * @param element Element.
115
119
  * @returns Result.
116
120
  */
117
- private matchPsuedo(element: Element): ISelectorMatch | null {
121
+ private matchPseudo(element: Element): ISelectorMatch | null {
118
122
  const parent = <Element>element[PropertySymbol.parentNode];
119
123
  const parentChildren = element[PropertySymbol.parentNode]
120
124
  ? (<Element>element[PropertySymbol.parentNode])[PropertySymbol.children]
@@ -135,7 +139,14 @@ export default class SelectorItem {
135
139
  case 'nth-last-child':
136
140
  case 'nth-last-of-type':
137
141
  if (!pseudo.arguments) {
138
- throw new DOMException(`The selector "${this.getSelectorString()}" is not valid.`);
142
+ if (this.ignoreErrors) {
143
+ return null;
144
+ }
145
+ throw new DOMException(
146
+ `Failed to execute 'matches' on '${
147
+ element.constructor.name
148
+ }': '${this.getSelectorString()}' is not a valid selector.`
149
+ );
139
150
  }
140
151
  break;
141
152
  }
@@ -357,7 +368,7 @@ export default class SelectorItem {
357
368
  * @returns Selector string.
358
369
  */
359
370
  private getSelectorString(): string {
360
- return `${this.tagName || ''}${this.id ? `#${this.id}` : ''}${
371
+ return `${this.tagName ? this.tagName.toLowerCase() : ''}${this.id ? `#${this.id}` : ''}${
361
372
  this.classNames ? `.${this.classNames.join('.')}` : ''
362
373
  }${
363
374
  this.attributes
@@ -63,38 +63,52 @@ export default class SelectorParser {
63
63
  * Parses a selector string and returns an instance of SelectorItem.
64
64
  *
65
65
  * @param selector Selector.
66
+ * @param [options] Options.
67
+ * @param [options.ignoreErrors] Ignores errors.
66
68
  * @returns Selector item.
67
69
  */
68
- public static getSelectorItem(selector: string): SelectorItem {
69
- return this.getSelectorGroups(selector)[0][0];
70
+ public static getSelectorItem(
71
+ selector: string,
72
+ options?: { ignoreErrors?: boolean }
73
+ ): SelectorItem {
74
+ return this.getSelectorGroups(selector, options)[0][0];
70
75
  }
71
76
 
72
77
  /**
73
78
  * Parses a selector string and returns groups with SelectorItem instances.
74
79
  *
75
80
  * @param selector Selector.
81
+ * @param [options] Options.
82
+ * @param [options.ignoreErrors] Ignores errors.
76
83
  * @returns Selector groups.
77
84
  */
78
- public static getSelectorGroups(selector: string): Array<Array<SelectorItem>> {
85
+ public static getSelectorGroups(
86
+ selector: string,
87
+ options?: { ignoreErrors?: boolean }
88
+ ): Array<Array<SelectorItem>> {
89
+ const ignoreErrors = options?.ignoreErrors;
79
90
  if (selector === '*') {
80
- return [[new SelectorItem({ tagName: '*' })]];
91
+ return [[new SelectorItem({ tagName: '*', ignoreErrors })]];
81
92
  }
82
93
 
83
94
  const simpleMatch = selector.match(SIMPLE_SELECTOR_REGEXP);
84
95
 
85
96
  if (simpleMatch) {
86
97
  if (simpleMatch[1]) {
87
- return [[new SelectorItem({ tagName: selector.toUpperCase() })]];
98
+ return [[new SelectorItem({ tagName: selector.toUpperCase(), ignoreErrors })]];
88
99
  } else if (simpleMatch[2]) {
89
- return [[new SelectorItem({ classNames: selector.replace('.', '').split('.') })]];
100
+ return [
101
+ [new SelectorItem({ classNames: selector.replace('.', '').split('.'), ignoreErrors })]
102
+ ];
90
103
  } else if (simpleMatch[3]) {
91
- return [[new SelectorItem({ id: selector.replace('#', '') })]];
104
+ return [[new SelectorItem({ id: selector.replace('#', ''), ignoreErrors })]];
92
105
  }
93
106
  }
94
107
 
95
108
  const regexp = new RegExp(SELECTOR_REGEXP);
96
109
  let currentSelectorItem: SelectorItem = new SelectorItem({
97
- combinator: SelectorCombinatorEnum.descendant
110
+ combinator: SelectorCombinatorEnum.descendant,
111
+ ignoreErrors
98
112
  });
99
113
  let currentGroup: SelectorItem[] = [currentSelectorItem];
100
114
  const groups: Array<Array<SelectorItem>> = [currentGroup];
@@ -147,34 +161,40 @@ export default class SelectorParser {
147
161
  });
148
162
  } else if (match[13] && match[14]) {
149
163
  currentSelectorItem.pseudos = currentSelectorItem.pseudos || [];
150
- currentSelectorItem.pseudos.push(this.getPseudo(match[13], match[14]));
164
+ currentSelectorItem.pseudos.push(this.getPseudo(match[13], match[14], options));
151
165
  } else if (match[15]) {
152
166
  currentSelectorItem.pseudos = currentSelectorItem.pseudos || [];
153
- currentSelectorItem.pseudos.push(this.getPseudo(match[15]));
167
+ currentSelectorItem.pseudos.push(this.getPseudo(match[15], null, options));
154
168
  } else if (match[16]) {
155
169
  currentSelectorItem.isPseudoElement = true;
156
170
  } else if (match[17]) {
157
171
  switch (match[17].trim()) {
158
172
  case ',':
159
173
  currentSelectorItem = new SelectorItem({
160
- combinator: SelectorCombinatorEnum.descendant
174
+ combinator: SelectorCombinatorEnum.descendant,
175
+ ignoreErrors
161
176
  });
162
177
  currentGroup = [currentSelectorItem];
163
178
  groups.push(currentGroup);
164
179
  break;
165
180
  case '>':
166
- currentSelectorItem = new SelectorItem({ combinator: SelectorCombinatorEnum.child });
181
+ currentSelectorItem = new SelectorItem({
182
+ combinator: SelectorCombinatorEnum.child,
183
+ ignoreErrors
184
+ });
167
185
  currentGroup.push(currentSelectorItem);
168
186
  break;
169
187
  case '+':
170
188
  currentSelectorItem = new SelectorItem({
171
- combinator: SelectorCombinatorEnum.adjacentSibling
189
+ combinator: SelectorCombinatorEnum.adjacentSibling,
190
+ ignoreErrors
172
191
  });
173
192
  currentGroup.push(currentSelectorItem);
174
193
  break;
175
194
  case '':
176
195
  currentSelectorItem = new SelectorItem({
177
- combinator: SelectorCombinatorEnum.descendant
196
+ combinator: SelectorCombinatorEnum.descendant,
197
+ ignoreErrors
178
198
  });
179
199
  currentGroup.push(currentSelectorItem);
180
200
  break;
@@ -186,6 +206,9 @@ export default class SelectorParser {
186
206
  }
187
207
 
188
208
  if (!isValid) {
209
+ if (options?.ignoreErrors) {
210
+ return [];
211
+ }
189
212
  throw new DOMException(`Invalid selector: "${selector}"`);
190
213
  }
191
214
 
@@ -241,9 +264,15 @@ export default class SelectorParser {
241
264
  *
242
265
  * @param name Pseudo name.
243
266
  * @param args Pseudo arguments.
267
+ * @param [options] Options.
268
+ * @param [options.ignoreErrors] Ignores errors.
244
269
  * @returns Pseudo.
245
270
  */
246
- private static getPseudo(name: string, args?: string): ISelectorPseudo {
271
+ private static getPseudo(
272
+ name: string,
273
+ args?: string,
274
+ options?: { ignoreErrors?: boolean }
275
+ ): ISelectorPseudo {
247
276
  const lowerName = name.toLowerCase();
248
277
 
249
278
  if (!args) {
@@ -256,7 +285,9 @@ export default class SelectorParser {
256
285
  const nthOfIndex = args.indexOf(' of ');
257
286
  const nthFunction = nthOfIndex !== -1 ? args.substring(0, nthOfIndex) : args;
258
287
  const selectorItem =
259
- nthOfIndex !== -1 ? this.getSelectorItem(args.substring(nthOfIndex + 4).trim()) : null;
288
+ nthOfIndex !== -1
289
+ ? this.getSelectorItem(args.substring(nthOfIndex + 4).trim(), options)
290
+ : null;
260
291
  return {
261
292
  name: lowerName,
262
293
  arguments: args,
@@ -275,12 +306,12 @@ export default class SelectorParser {
275
306
  return {
276
307
  name: lowerName,
277
308
  arguments: args,
278
- selectorItems: [this.getSelectorItem(args)],
309
+ selectorItems: [this.getSelectorItem(args, options)],
279
310
  nthFunction: null
280
311
  };
281
312
  case 'is':
282
313
  case 'where':
283
- const selectorGroups = this.getSelectorGroups(args);
314
+ const selectorGroups = this.getSelectorGroups(args, options);
284
315
  const selectorItems = [];
285
316
  for (const group of selectorGroups) {
286
317
  selectorItems.push(group[0]);