happy-dom 9.11.0 → 9.12.0

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.

@@ -1,5 +1,8 @@
1
+ import SelectorItem from './SelectorItem';
1
2
  export default interface ISelectorPseudo {
2
3
  name: string;
3
4
  arguments: string | null;
5
+ selectorItem: SelectorItem | null;
6
+ nthFunction: ((n: number) => boolean) | null;
4
7
  }
5
8
  //# sourceMappingURL=ISelectorPseudo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ISelectorPseudo.d.ts","sourceRoot":"","sources":["../../src/query-selector/ISelectorPseudo.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,eAAe;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
1
+ {"version":3,"file":"ISelectorPseudo.d.ts","sourceRoot":"","sources":["../../src/query-selector/ISelectorPseudo.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,OAAO,WAAW,eAAe;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C"}
@@ -46,15 +46,6 @@ export default class SelectorItem {
46
46
  * @returns Result.
47
47
  */
48
48
  private matchPsuedo;
49
- /**
50
- * Matches a nth-child selector.
51
- *
52
- * @param element Element.
53
- * @param parentChildren Parent children.
54
- * @param placement Placement.
55
- * @returns True if it is a match.
56
- */
57
- private matchNthChild;
58
49
  /**
59
50
  * Matches attribute.
60
51
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SelectorItem.d.ts","sourceRoot":"","sources":["../../src/query-selector/SelectorItem.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AAGjD,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,sBAAsB,CAAC;IAE1C;;;;;;;;;;OAUG;gBACS,OAAO,CAAC,EAAE;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;QAClC,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;QAC5B,UAAU,CAAC,EAAE,sBAAsB,CAAC;KACpC;IASD;;;;;OAKG;IACI,KAAK,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,GAAG,IAAI;IA6CtD;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAwGnB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAkCrB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAiEvB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAkBlB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAsBzB"}
1
+ {"version":3,"file":"SelectorItem.d.ts","sourceRoot":"","sources":["../../src/query-selector/SelectorItem.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AAGjD,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,sBAAsB,CAAC;IAE1C;;;;;;;;;;OAUG;gBACS,OAAO,CAAC,EAAE;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;QAClC,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;QAC5B,UAAU,CAAC,EAAE,sBAAsB,CAAC;KACpC;IASD;;;;;OAKG;IACI,KAAK,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,GAAG,IAAI;IA6CtD;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAgHnB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAiEvB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAkBlB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAsBzB"}
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const DOMException_1 = __importDefault(require("../exception/DOMException"));
7
7
  const SelectorCombinatorEnum_1 = __importDefault(require("./SelectorCombinatorEnum"));
8
- const SelectorParser_1 = __importDefault(require("./SelectorParser"));
9
8
  /**
10
9
  * Selector item.
11
10
  */
@@ -153,60 +152,38 @@ class SelectorItem {
153
152
  case 'root':
154
153
  return element.tagName === 'HTML';
155
154
  case 'not':
156
- return !SelectorParser_1.default.getSelectorItem(psuedo.arguments).match(element);
155
+ return !psuedo.selectorItem.match(element);
157
156
  case 'nth-child':
158
- return this.matchNthChild(element, parent.children, psuedo.arguments);
157
+ const nthChildIndex = psuedo.selectorItem
158
+ ? parent.children.filter((child) => psuedo.selectorItem.match(child)).indexOf(element)
159
+ : parent.children.indexOf(element);
160
+ return nthChildIndex !== -1 && psuedo.nthFunction(nthChildIndex + 1);
159
161
  case 'nth-of-type':
160
162
  if (!element.parentNode) {
161
163
  return false;
162
164
  }
163
- return this.matchNthChild(element, parent.children.filter((child) => child.tagName === element.tagName), psuedo.arguments);
165
+ const nthOfTypeIndex = parent.children
166
+ .filter((child) => child.tagName === element.tagName)
167
+ .indexOf(element);
168
+ return nthOfTypeIndex !== -1 && psuedo.nthFunction(nthOfTypeIndex + 1);
164
169
  case 'nth-last-child':
165
- return this.matchNthChild(element, parent.children.reverse(), psuedo.arguments);
170
+ const nthLastChildIndex = psuedo.selectorItem
171
+ ? parent.children
172
+ .filter((child) => psuedo.selectorItem.match(child))
173
+ .reverse()
174
+ .indexOf(element)
175
+ : parent.children.reverse().indexOf(element);
176
+ return nthLastChildIndex !== -1 && psuedo.nthFunction(nthLastChildIndex + 1);
166
177
  case 'nth-last-of-type':
167
- return this.matchNthChild(element, parent.children.filter((child) => child.tagName === element.tagName).reverse(), psuedo.arguments);
178
+ const nthLastOfTypeIndex = parent.children
179
+ .filter((child) => child.tagName === element.tagName)
180
+ .reverse()
181
+ .indexOf(element);
182
+ return nthLastOfTypeIndex !== -1 && psuedo.nthFunction(nthLastOfTypeIndex + 1);
168
183
  }
169
184
  }
170
185
  return true;
171
186
  }
172
- /**
173
- * Matches a nth-child selector.
174
- *
175
- * @param element Element.
176
- * @param parentChildren Parent children.
177
- * @param placement Placement.
178
- * @returns True if it is a match.
179
- */
180
- matchNthChild(element, parentChildren, placement) {
181
- if (placement === 'odd') {
182
- const index = parentChildren.indexOf(element);
183
- return index !== -1 && (index + 1) % 2 !== 0;
184
- }
185
- else if (placement === 'even') {
186
- const index = parentChildren.indexOf(element);
187
- return index !== -1 && (index + 1) % 2 === 0;
188
- }
189
- else if (placement.includes('n')) {
190
- const [a, b] = placement.replace(/ /g, '').split('n');
191
- const childIndex = parentChildren.indexOf(element);
192
- const aNumber = a !== '' ? Number(a) : 1;
193
- const bNumber = b !== undefined ? Number(b) : 0;
194
- if (isNaN(aNumber) || isNaN(bNumber)) {
195
- throw new DOMException_1.default(`The selector "${this.getSelectorString()}" is not valid.`);
196
- }
197
- for (let i = 0, max = parentChildren.length; i <= max; i += aNumber) {
198
- if (childIndex === i + bNumber - 1) {
199
- return true;
200
- }
201
- }
202
- return false;
203
- }
204
- const number = Number(placement);
205
- if (isNaN(number)) {
206
- throw new DOMException_1.default(`The selector "${this.getSelectorString()}" is not valid.`);
207
- }
208
- return parentChildren[number - 1] === element;
209
- }
210
187
  /**
211
188
  * Matches attribute.
212
189
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SelectorItem.js","sourceRoot":"","sources":["../../src/query-selector/SelectorItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectorItem.js","sourceRoot":"","sources":["../../src/query-selector/SelectorItem.ts"],"names":[],"mappings":"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"}
@@ -17,5 +17,23 @@ export default class SelectorParser {
17
17
  * @returns Selector groups.
18
18
  */
19
19
  static getSelectorGroups(selector: string): Array<Array<SelectorItem>>;
20
+ /**
21
+ * Returns pseudo.
22
+ *
23
+ * @param name Pseudo name.
24
+ * @param args Pseudo arguments.
25
+ * @returns Pseudo.
26
+ */
27
+ private static getPseudo;
28
+ /**
29
+ * Returns pseudo nth function.
30
+ *
31
+ * Based on:
32
+ * https://github.com/dperini/nwsapi/blob/master/src/nwsapi.js
33
+ *
34
+ * @param args Pseudo arguments.
35
+ * @returns Pseudo nth function.
36
+ */
37
+ private static getPseudoNthFunction;
20
38
  }
21
39
  //# sourceMappingURL=SelectorParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectorParser.d.ts","sourceRoot":"","sources":["../../src/query-selector/SelectorParser.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAwC1C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IAClC;;;;;OAKG;WACW,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY;IAI7D;;;;;OAKG;WACW,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;CA8G7E"}
1
+ {"version":3,"file":"SelectorParser.d.ts","sourceRoot":"","sources":["../../src/query-selector/SelectorParser.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAuD1C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IAClC;;;;;OAKG;WACW,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY;IAI7D;;;;;OAKG;WACW,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAyG7E;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAwCxB;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;CA4CnC"}
@@ -30,6 +30,18 @@ const SELECTOR_REGEXP = /(\*)|([a-zA-Z0-9-]+)|#((?:[a-zA-Z0-9-_]|\\.)+)|\.((?:[a
30
30
  * Escaped Character RegExp.
31
31
  */
32
32
  const CLASS_ESCAPED_CHARACTER_REGEXP = /\\/g;
33
+ /**
34
+ * Nth Function.
35
+ */
36
+ const NTH_FUNCTION = {
37
+ odd: (n) => (n + 1) % 2 === 0,
38
+ even: (n) => (n + 1) % 2 !== 0,
39
+ alwaysFalse: () => false
40
+ };
41
+ /**
42
+ * Space RegExp.
43
+ */
44
+ const SPACE_REGEXP = / /g;
33
45
  /**
34
46
  * Simple Selector RegExp.
35
47
  *
@@ -123,17 +135,11 @@ class SelectorParser {
123
135
  }
124
136
  else if (match[12] && match[13]) {
125
137
  currentSelectorItem.pseudos = currentSelectorItem.pseudos || [];
126
- currentSelectorItem.pseudos.push({
127
- name: match[12].toLowerCase(),
128
- arguments: match[13]
129
- });
138
+ currentSelectorItem.pseudos.push(this.getPseudo(match[12], match[13]));
130
139
  }
131
140
  else if (match[14]) {
132
141
  currentSelectorItem.pseudos = currentSelectorItem.pseudos || [];
133
- currentSelectorItem.pseudos.push({
134
- name: match[14].toLowerCase(),
135
- arguments: null
136
- });
142
+ currentSelectorItem.pseudos.push(this.getPseudo(match[14]));
137
143
  }
138
144
  else if (match[15]) {
139
145
  switch (match[15].trim()) {
@@ -172,6 +178,92 @@ class SelectorParser {
172
178
  }
173
179
  return groups;
174
180
  }
181
+ /**
182
+ * Returns pseudo.
183
+ *
184
+ * @param name Pseudo name.
185
+ * @param args Pseudo arguments.
186
+ * @returns Pseudo.
187
+ */
188
+ static getPseudo(name, args) {
189
+ const lowerName = name.toLowerCase();
190
+ if (!args) {
191
+ return { name: lowerName, arguments: null, selectorItem: null, nthFunction: null };
192
+ }
193
+ switch (lowerName) {
194
+ case 'nth-last-child':
195
+ case 'nth-child':
196
+ const nthOfIndex = args.indexOf(' of ');
197
+ const nthFunction = nthOfIndex !== -1 ? args.substring(0, nthOfIndex) : args;
198
+ const selectorItem = nthOfIndex !== -1 ? this.getSelectorItem(args.substring(nthOfIndex + 4).trim()) : null;
199
+ return {
200
+ name: lowerName,
201
+ arguments: args,
202
+ selectorItem,
203
+ nthFunction: this.getPseudoNthFunction(nthFunction)
204
+ };
205
+ case 'nth-of-type':
206
+ case 'nth-last-of-type':
207
+ return {
208
+ name: lowerName,
209
+ arguments: args,
210
+ selectorItem: null,
211
+ nthFunction: this.getPseudoNthFunction(args)
212
+ };
213
+ case 'not':
214
+ return {
215
+ name: lowerName,
216
+ arguments: args,
217
+ selectorItem: this.getSelectorItem(args),
218
+ nthFunction: null
219
+ };
220
+ default:
221
+ return { name: lowerName, arguments: args, selectorItem: null, nthFunction: null };
222
+ }
223
+ }
224
+ /**
225
+ * Returns pseudo nth function.
226
+ *
227
+ * Based on:
228
+ * https://github.com/dperini/nwsapi/blob/master/src/nwsapi.js
229
+ *
230
+ * @param args Pseudo arguments.
231
+ * @returns Pseudo nth function.
232
+ */
233
+ static getPseudoNthFunction(args) {
234
+ if (args === 'odd') {
235
+ return NTH_FUNCTION.odd;
236
+ }
237
+ else if (args === 'even') {
238
+ return NTH_FUNCTION.even;
239
+ }
240
+ const parts = args.replace(SPACE_REGEXP, '').split('n');
241
+ let partA = parseInt(parts[0], 10) || 0;
242
+ if (parts[0] == '-') {
243
+ partA = -1;
244
+ }
245
+ if (parts.length === 1) {
246
+ return (n) => n == partA;
247
+ }
248
+ let partB = parseInt(parts[1], 10) || 0;
249
+ if (parts[0] == '+') {
250
+ partB = 1;
251
+ }
252
+ if (partA >= 1 || partA <= -1) {
253
+ const innerExpression = (partB ? '(n' + (partB > 0 ? '-' : '+') + Math.abs(partB) + ')' : 'n') +
254
+ '%' +
255
+ partA +
256
+ '==0';
257
+ if (partA >= 1) {
258
+ return eval('(n) => n>' + (partB - 1) + (Math.abs(partA) != 1 ? '&&' + innerExpression : ''));
259
+ }
260
+ return eval('(n) => n<' + (partB + 1) + (Math.abs(partA) != 1 ? '&&' + innerExpression : ''));
261
+ }
262
+ if (parts[0]) {
263
+ return (n) => n === partB;
264
+ }
265
+ return (n) => n > partB - 1;
266
+ }
175
267
  }
176
268
  exports.default = SelectorParser;
177
269
  //# sourceMappingURL=SelectorParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectorParser.js","sourceRoot":"","sources":["../../src/query-selector/SelectorParser.ts"],"names":[],"mappings":";;;;;AAAA,kEAA0C;AAC1C,sFAA8D;AAC9D,6EAAqD;AAErD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,eAAe,GACpB,kQAAkQ,CAAC;AAEpQ;;GAEG;AACH,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,6DAA6D,CAAC;AAE7F;;GAEG;AACH,MAAqB,cAAc;IAClC;;;;;OAKG;IACI,MAAM,CAAC,eAAe,CAAC,QAAgB;QAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,iBAAiB,CAAC,QAAgB;QAC/C,IAAI,QAAQ,KAAK,GAAG,EAAE;YACrB,OAAO,CAAC,CAAC,IAAI,sBAAY,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9C;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE3D,IAAI,WAAW,EAAE;YAChB,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;gBACnB,OAAO,CAAC,CAAC,IAAI,sBAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACjE;iBAAM,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;gBAC1B,OAAO,CAAC,CAAC,IAAI,sBAAY,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAClF;iBAAM,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;gBAC1B,OAAO,CAAC,CAAC,IAAI,sBAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC/D;SACD;QAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,mBAAmB,GAAiB,IAAI,sBAAY,CAAC;YACxD,UAAU,EAAE,gCAAsB,CAAC,UAAU;SAC7C,CAAC,CAAC;QACH,IAAI,YAAY,GAAmB,CAAC,mBAAmB,CAAC,CAAC;QACzD,MAAM,MAAM,GAA+B,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,KAAK,CAAC;QAEV,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACvC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;gBACb,OAAO,GAAG,IAAI,CAAC;gBAEf,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;oBACb,mBAAmB,CAAC,OAAO,GAAG,GAAG,CAAC;iBAClC;qBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;oBACpB,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;iBACrD;qBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;oBACpB,mBAAmB,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;iBAC9E;qBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;oBACpB,mBAAmB,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,IAAI,EAAE,CAAC;oBACtE,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC1F;qBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;oBACpB,mBAAmB,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,IAAI,EAAE,CAAC;oBACtE,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;wBACnC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;wBAC5B,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,IAAI;qBACX,CAAC,CAAC;iBACH;qBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;oBAC9C,mBAAmB,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,IAAI,EAAE,CAAC;oBACtE,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;wBACnC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;wBAC5B,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;wBAC1B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;qBACf,CAAC,CAAC;iBACH;qBAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;oBAC/C,mBAAmB,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,IAAI,EAAE,CAAC;oBACtE,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;wBACnC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;wBAC5B,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI;wBAC3B,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;qBAChB,CAAC,CAAC;iBACH;qBAAM,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;oBAClC,mBAAmB,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,IAAI,EAAE,CAAC;oBAChE,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;wBAChC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;wBAC7B,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;qBACpB,CAAC,CAAC;iBACH;qBAAM,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;oBACrB,mBAAmB,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,IAAI,EAAE,CAAC;oBAChE,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;wBAChC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;wBAC7B,SAAS,EAAE,IAAI;qBACf,CAAC,CAAC;iBACH;qBAAM,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;oBACrB,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;wBACzB,KAAK,GAAG;4BACP,mBAAmB,GAAG,IAAI,sBAAY,CAAC;gCACtC,UAAU,EAAE,gCAAsB,CAAC,UAAU;6BAC7C,CAAC,CAAC;4BACH,YAAY,GAAG,CAAC,mBAAmB,CAAC,CAAC;4BACrC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BAC1B,MAAM;wBACP,KAAK,GAAG;4BACP,mBAAmB,GAAG,IAAI,sBAAY,CAAC,EAAE,UAAU,EAAE,gCAAsB,CAAC,KAAK,EAAE,CAAC,CAAC;4BACrF,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;4BACvC,MAAM;wBACP,KAAK,GAAG;4BACP,mBAAmB,GAAG,IAAI,sBAAY,CAAC;gCACtC,UAAU,EAAE,gCAAsB,CAAC,eAAe;6BAClD,CAAC,CAAC;4BACH,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;4BACvC,MAAM;wBACP,KAAK,EAAE;4BACN,mBAAmB,GAAG,IAAI,sBAAY,CAAC;gCACtC,UAAU,EAAE,gCAAsB,CAAC,UAAU;6BAC7C,CAAC,CAAC;4BACH,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;4BACvC,MAAM;qBACP;iBACD;aACD;iBAAM;gBACN,MAAM;aACN;SACD;QAED,IAAI,CAAC,OAAO,EAAE;YACb,MAAM,IAAI,sBAAY,CAAC,sBAAsB,QAAQ,GAAG,CAAC,CAAC;SAC1D;QAED,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AA/HD,iCA+HC"}
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": "9.11.0",
3
+ "version": "9.12.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -1,4 +1,8 @@
1
+ import SelectorItem from './SelectorItem';
2
+
1
3
  export default interface ISelectorPseudo {
2
4
  name: string;
3
5
  arguments: string | null;
6
+ selectorItem: SelectorItem | null;
7
+ nthFunction: ((n: number) => boolean) | null;
4
8
  }
@@ -4,7 +4,6 @@ import Element from '../nodes/element/Element';
4
4
  import IHTMLInputElement from '../nodes/html-input-element/IHTMLInputElement';
5
5
  import SelectorCombinatorEnum from './SelectorCombinatorEnum';
6
6
  import ISelectorAttribute from './ISelectorAttribute';
7
- import SelectorParser from './SelectorParser';
8
7
  import ISelectorMatch from './ISelectorMatch';
9
8
  import ISelectorPseudo from './ISelectorPseudo';
10
9
 
@@ -181,74 +180,40 @@ export default class SelectorItem {
181
180
  case 'root':
182
181
  return element.tagName === 'HTML';
183
182
  case 'not':
184
- return !SelectorParser.getSelectorItem(psuedo.arguments).match(element);
183
+ return !psuedo.selectorItem.match(element);
185
184
  case 'nth-child':
186
- return this.matchNthChild(element, parent.children, psuedo.arguments);
185
+ const nthChildIndex = psuedo.selectorItem
186
+ ? parent.children.filter((child) => psuedo.selectorItem.match(child)).indexOf(element)
187
+ : parent.children.indexOf(element);
188
+ return nthChildIndex !== -1 && psuedo.nthFunction(nthChildIndex + 1);
187
189
  case 'nth-of-type':
188
190
  if (!element.parentNode) {
189
191
  return false;
190
192
  }
191
- return this.matchNthChild(
192
- element,
193
- parent.children.filter((child) => child.tagName === element.tagName),
194
- psuedo.arguments
195
- );
193
+ const nthOfTypeIndex = parent.children
194
+ .filter((child) => child.tagName === element.tagName)
195
+ .indexOf(element);
196
+ return nthOfTypeIndex !== -1 && psuedo.nthFunction(nthOfTypeIndex + 1);
196
197
  case 'nth-last-child':
197
- return this.matchNthChild(element, parent.children.reverse(), psuedo.arguments);
198
+ const nthLastChildIndex = psuedo.selectorItem
199
+ ? parent.children
200
+ .filter((child) => psuedo.selectorItem.match(child))
201
+ .reverse()
202
+ .indexOf(element)
203
+ : parent.children.reverse().indexOf(element);
204
+ return nthLastChildIndex !== -1 && psuedo.nthFunction(nthLastChildIndex + 1);
198
205
  case 'nth-last-of-type':
199
- return this.matchNthChild(
200
- element,
201
- parent.children.filter((child) => child.tagName === element.tagName).reverse(),
202
- psuedo.arguments
203
- );
206
+ const nthLastOfTypeIndex = parent.children
207
+ .filter((child) => child.tagName === element.tagName)
208
+ .reverse()
209
+ .indexOf(element);
210
+ return nthLastOfTypeIndex !== -1 && psuedo.nthFunction(nthLastOfTypeIndex + 1);
204
211
  }
205
212
  }
206
213
 
207
214
  return true;
208
215
  }
209
216
 
210
- /**
211
- * Matches a nth-child selector.
212
- *
213
- * @param element Element.
214
- * @param parentChildren Parent children.
215
- * @param placement Placement.
216
- * @returns True if it is a match.
217
- */
218
- private matchNthChild(element: IElement, parentChildren: IElement[], placement: string): boolean {
219
- if (placement === 'odd') {
220
- const index = parentChildren.indexOf(element);
221
- return index !== -1 && (index + 1) % 2 !== 0;
222
- } else if (placement === 'even') {
223
- const index = parentChildren.indexOf(element);
224
- return index !== -1 && (index + 1) % 2 === 0;
225
- } else if (placement.includes('n')) {
226
- const [a, b] = placement.replace(/ /g, '').split('n');
227
- const childIndex = parentChildren.indexOf(element);
228
- const aNumber = a !== '' ? Number(a) : 1;
229
- const bNumber = b !== undefined ? Number(b) : 0;
230
- if (isNaN(aNumber) || isNaN(bNumber)) {
231
- throw new DOMException(`The selector "${this.getSelectorString()}" is not valid.`);
232
- }
233
-
234
- for (let i = 0, max = parentChildren.length; i <= max; i += aNumber) {
235
- if (childIndex === i + bNumber - 1) {
236
- return true;
237
- }
238
- }
239
-
240
- return false;
241
- }
242
-
243
- const number = Number(placement);
244
-
245
- if (isNaN(number)) {
246
- throw new DOMException(`The selector "${this.getSelectorString()}" is not valid.`);
247
- }
248
-
249
- return parentChildren[number - 1] === element;
250
- }
251
-
252
217
  /**
253
218
  * Matches attribute.
254
219
  *
@@ -1,6 +1,7 @@
1
1
  import SelectorItem from './SelectorItem';
2
2
  import SelectorCombinatorEnum from './SelectorCombinatorEnum';
3
3
  import DOMException from '../exception/DOMException';
4
+ import ISelectorPseudo from './ISelectorPseudo';
4
5
 
5
6
  /**
6
7
  * Selector RegExp.
@@ -29,6 +30,20 @@ const SELECTOR_REGEXP =
29
30
  */
30
31
  const CLASS_ESCAPED_CHARACTER_REGEXP = /\\/g;
31
32
 
33
+ /**
34
+ * Nth Function.
35
+ */
36
+ const NTH_FUNCTION = {
37
+ odd: (n: number) => (n + 1) % 2 === 0,
38
+ even: (n: number) => (n + 1) % 2 !== 0,
39
+ alwaysFalse: () => false
40
+ };
41
+
42
+ /**
43
+ * Space RegExp.
44
+ */
45
+ const SPACE_REGEXP = / /g;
46
+
32
47
  /**
33
48
  * Simple Selector RegExp.
34
49
  *
@@ -120,16 +135,10 @@ export default class SelectorParser {
120
135
  });
121
136
  } else if (match[12] && match[13]) {
122
137
  currentSelectorItem.pseudos = currentSelectorItem.pseudos || [];
123
- currentSelectorItem.pseudos.push({
124
- name: match[12].toLowerCase(),
125
- arguments: match[13]
126
- });
138
+ currentSelectorItem.pseudos.push(this.getPseudo(match[12], match[13]));
127
139
  } else if (match[14]) {
128
140
  currentSelectorItem.pseudos = currentSelectorItem.pseudos || [];
129
- currentSelectorItem.pseudos.push({
130
- name: match[14].toLowerCase(),
131
- arguments: null
132
- });
141
+ currentSelectorItem.pseudos.push(this.getPseudo(match[14]));
133
142
  } else if (match[15]) {
134
143
  switch (match[15].trim()) {
135
144
  case ',':
@@ -168,4 +177,105 @@ export default class SelectorParser {
168
177
 
169
178
  return groups;
170
179
  }
180
+
181
+ /**
182
+ * Returns pseudo.
183
+ *
184
+ * @param name Pseudo name.
185
+ * @param args Pseudo arguments.
186
+ * @returns Pseudo.
187
+ */
188
+ private static getPseudo(name: string, args?: string): ISelectorPseudo {
189
+ const lowerName = name.toLowerCase();
190
+
191
+ if (!args) {
192
+ return { name: lowerName, arguments: null, selectorItem: null, nthFunction: null };
193
+ }
194
+
195
+ switch (lowerName) {
196
+ case 'nth-last-child':
197
+ case 'nth-child':
198
+ const nthOfIndex = args.indexOf(' of ');
199
+ const nthFunction = nthOfIndex !== -1 ? args.substring(0, nthOfIndex) : args;
200
+ const selectorItem =
201
+ nthOfIndex !== -1 ? this.getSelectorItem(args.substring(nthOfIndex + 4).trim()) : null;
202
+ return {
203
+ name: lowerName,
204
+ arguments: args,
205
+ selectorItem,
206
+ nthFunction: this.getPseudoNthFunction(nthFunction)
207
+ };
208
+ case 'nth-of-type':
209
+ case 'nth-last-of-type':
210
+ return {
211
+ name: lowerName,
212
+ arguments: args,
213
+ selectorItem: null,
214
+ nthFunction: this.getPseudoNthFunction(args)
215
+ };
216
+ case 'not':
217
+ return {
218
+ name: lowerName,
219
+ arguments: args,
220
+ selectorItem: this.getSelectorItem(args),
221
+ nthFunction: null
222
+ };
223
+ default:
224
+ return { name: lowerName, arguments: args, selectorItem: null, nthFunction: null };
225
+ }
226
+ }
227
+
228
+ /**
229
+ * Returns pseudo nth function.
230
+ *
231
+ * Based on:
232
+ * https://github.com/dperini/nwsapi/blob/master/src/nwsapi.js
233
+ *
234
+ * @param args Pseudo arguments.
235
+ * @returns Pseudo nth function.
236
+ */
237
+ private static getPseudoNthFunction(args?: string): ((n: number) => boolean) | null {
238
+ if (args === 'odd') {
239
+ return NTH_FUNCTION.odd;
240
+ } else if (args === 'even') {
241
+ return NTH_FUNCTION.even;
242
+ }
243
+
244
+ const parts = args.replace(SPACE_REGEXP, '').split('n');
245
+ let partA = parseInt(parts[0], 10) || 0;
246
+
247
+ if (parts[0] == '-') {
248
+ partA = -1;
249
+ }
250
+
251
+ if (parts.length === 1) {
252
+ return (n) => n == partA;
253
+ }
254
+
255
+ let partB = parseInt(parts[1], 10) || 0;
256
+
257
+ if (parts[0] == '+') {
258
+ partB = 1;
259
+ }
260
+
261
+ if (partA >= 1 || partA <= -1) {
262
+ const innerExpression =
263
+ (partB ? '(n' + (partB > 0 ? '-' : '+') + Math.abs(partB) + ')' : 'n') +
264
+ '%' +
265
+ partA +
266
+ '==0';
267
+ if (partA >= 1) {
268
+ return eval(
269
+ '(n) => n>' + (partB - 1) + (Math.abs(partA) != 1 ? '&&' + innerExpression : '')
270
+ );
271
+ }
272
+ return eval('(n) => n<' + (partB + 1) + (Math.abs(partA) != 1 ? '&&' + innerExpression : ''));
273
+ }
274
+
275
+ if (parts[0]) {
276
+ return (n) => n === partB;
277
+ }
278
+
279
+ return (n) => n > partB - 1;
280
+ }
171
281
  }