happy-dom 10.0.4 → 10.0.6

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 (111) hide show
  1. package/cjs/nodes/element/Element.d.ts +1 -1
  2. package/cjs/nodes/element/Element.d.ts.map +1 -1
  3. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts +1 -1
  4. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  5. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts +1 -1
  6. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  7. package/cjs/nodes/html-element/HTMLElement.d.ts +1 -1
  8. package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
  9. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +19 -79
  10. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
  11. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +6 -1
  12. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  13. package/cjs/nodes/html-iframe-element/HTMLIFrameUtility.cjs +74 -0
  14. package/cjs/nodes/html-iframe-element/HTMLIFrameUtility.cjs.map +1 -0
  15. package/cjs/nodes/html-iframe-element/HTMLIFrameUtility.d.ts +13 -0
  16. package/cjs/nodes/html-iframe-element/HTMLIFrameUtility.d.ts.map +1 -0
  17. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +1 -1
  18. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  19. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +1 -1
  20. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  21. package/cjs/nodes/html-link-element/HTMLLinkElementUtility.cjs +1 -4
  22. package/cjs/nodes/html-link-element/HTMLLinkElementUtility.cjs.map +1 -1
  23. package/cjs/nodes/html-link-element/HTMLLinkElementUtility.d.ts.map +1 -1
  24. package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts +1 -1
  25. package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
  26. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +1 -1
  27. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  28. package/cjs/nodes/html-script-element/HTMLScriptElementUtility.cjs +1 -4
  29. package/cjs/nodes/html-script-element/HTMLScriptElementUtility.cjs.map +1 -1
  30. package/cjs/nodes/html-script-element/HTMLScriptElementUtility.d.ts.map +1 -1
  31. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts +1 -1
  32. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  33. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +1 -1
  34. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  35. package/cjs/nodes/svg-element/SVGElement.d.ts +1 -1
  36. package/cjs/nodes/svg-element/SVGElement.d.ts.map +1 -1
  37. package/cjs/query-selector/SelectorItem.cjs +5 -0
  38. package/cjs/query-selector/SelectorItem.cjs.map +1 -1
  39. package/cjs/query-selector/SelectorItem.d.ts +3 -0
  40. package/cjs/query-selector/SelectorItem.d.ts.map +1 -1
  41. package/cjs/query-selector/SelectorParser.cjs +7 -3
  42. package/cjs/query-selector/SelectorParser.cjs.map +1 -1
  43. package/cjs/query-selector/SelectorParser.d.ts.map +1 -1
  44. package/cjs/window/Window.cjs +2 -2
  45. package/cjs/window/Window.cjs.map +1 -1
  46. package/cjs/window/Window.d.ts.map +1 -1
  47. package/lib/nodes/element/Element.d.ts +1 -1
  48. package/lib/nodes/element/Element.d.ts.map +1 -1
  49. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts +1 -1
  50. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  51. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +1 -1
  52. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  53. package/lib/nodes/html-element/HTMLElement.d.ts +1 -1
  54. package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
  55. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +6 -1
  56. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  57. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +19 -79
  58. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
  59. package/lib/nodes/html-iframe-element/HTMLIFrameUtility.d.ts +13 -0
  60. package/lib/nodes/html-iframe-element/HTMLIFrameUtility.d.ts.map +1 -0
  61. package/lib/nodes/html-iframe-element/HTMLIFrameUtility.js +68 -0
  62. package/lib/nodes/html-iframe-element/HTMLIFrameUtility.js.map +1 -0
  63. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +1 -1
  64. package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  65. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +1 -1
  66. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  67. package/lib/nodes/html-link-element/HTMLLinkElementUtility.d.ts.map +1 -1
  68. package/lib/nodes/html-link-element/HTMLLinkElementUtility.js +1 -4
  69. package/lib/nodes/html-link-element/HTMLLinkElementUtility.js.map +1 -1
  70. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +1 -1
  71. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
  72. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +1 -1
  73. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  74. package/lib/nodes/html-script-element/HTMLScriptElementUtility.d.ts.map +1 -1
  75. package/lib/nodes/html-script-element/HTMLScriptElementUtility.js +1 -4
  76. package/lib/nodes/html-script-element/HTMLScriptElementUtility.js.map +1 -1
  77. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +1 -1
  78. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  79. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +1 -1
  80. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  81. package/lib/nodes/svg-element/SVGElement.d.ts +1 -1
  82. package/lib/nodes/svg-element/SVGElement.d.ts.map +1 -1
  83. package/lib/query-selector/SelectorItem.d.ts +3 -0
  84. package/lib/query-selector/SelectorItem.d.ts.map +1 -1
  85. package/lib/query-selector/SelectorItem.js +5 -0
  86. package/lib/query-selector/SelectorItem.js.map +1 -1
  87. package/lib/query-selector/SelectorParser.d.ts.map +1 -1
  88. package/lib/query-selector/SelectorParser.js +7 -3
  89. package/lib/query-selector/SelectorParser.js.map +1 -1
  90. package/lib/window/Window.d.ts.map +1 -1
  91. package/lib/window/Window.js +2 -2
  92. package/lib/window/Window.js.map +1 -1
  93. package/package.json +1 -1
  94. package/src/nodes/element/Element.ts +1 -1
  95. package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +1 -1
  96. package/src/nodes/html-button-element/HTMLButtonElement.ts +1 -1
  97. package/src/nodes/html-element/HTMLElement.ts +1 -1
  98. package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +23 -79
  99. package/src/nodes/html-iframe-element/HTMLIFrameUtility.ts +86 -0
  100. package/src/nodes/html-input-element/HTMLInputElement.ts +1 -1
  101. package/src/nodes/html-link-element/HTMLLinkElement.ts +1 -1
  102. package/src/nodes/html-link-element/HTMLLinkElementUtility.ts +1 -6
  103. package/src/nodes/html-option-element/HTMLOptionElement.ts +1 -1
  104. package/src/nodes/html-script-element/HTMLScriptElement.ts +1 -1
  105. package/src/nodes/html-script-element/HTMLScriptElementUtility.ts +1 -6
  106. package/src/nodes/html-select-element/HTMLSelectElement.ts +1 -1
  107. package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +1 -1
  108. package/src/nodes/svg-element/SVGElement.ts +1 -1
  109. package/src/query-selector/SelectorItem.ts +8 -0
  110. package/src/query-selector/SelectorParser.ts +6 -3
  111. package/src/window/Window.ts +9 -7
@@ -16,6 +16,7 @@ export default class SelectorItem {
16
16
  public classNames: string[] | null;
17
17
  public attributes: ISelectorAttribute[] | null;
18
18
  public pseudos: ISelectorPseudo[] | null;
19
+ public isPseudoElement: boolean;
19
20
  public combinator: SelectorCombinatorEnum;
20
21
 
21
22
  /**
@@ -28,6 +29,7 @@ export default class SelectorItem {
28
29
  * @param [options.classNames] Class names.
29
30
  * @param [options.attributes] Attributes.
30
31
  * @param [options.pseudos] Pseudos.
32
+ * @param [options.isPseudoElement] Is pseudo element.
31
33
  */
32
34
  constructor(options?: {
33
35
  tagName?: string;
@@ -35,6 +37,7 @@ export default class SelectorItem {
35
37
  classNames?: string[];
36
38
  attributes?: ISelectorAttribute[];
37
39
  pseudos?: ISelectorPseudo[];
40
+ isPseudoElement?: boolean;
38
41
  combinator?: SelectorCombinatorEnum;
39
42
  }) {
40
43
  this.tagName = options?.tagName || null;
@@ -42,6 +45,7 @@ export default class SelectorItem {
42
45
  this.classNames = options?.classNames || null;
43
46
  this.attributes = options?.attributes || null;
44
47
  this.pseudos = options?.pseudos || null;
48
+ this.isPseudoElement = options?.isPseudoElement || false;
45
49
  this.combinator = options?.combinator || SelectorCombinatorEnum.descendant;
46
50
  }
47
51
 
@@ -54,6 +58,10 @@ export default class SelectorItem {
54
58
  public match(element: IElement): ISelectorMatch | null {
55
59
  let priorityWeight = 0;
56
60
 
61
+ if (this.isPseudoElement) {
62
+ return null;
63
+ }
64
+
57
65
  // Tag name match
58
66
  if (this.tagName) {
59
67
  if (this.tagName !== '*' && this.tagName !== element.tagName) {
@@ -21,10 +21,11 @@ import ISelectorPseudo from './ISelectorPseudo.js';
21
21
  * Group 13: Pseudo name when arguments (e.g. "nth-child")
22
22
  * Group 14: Arguments of pseudo (e.g. "2n + 1")
23
23
  * Group 15: Pseudo name when no arguments (e.g. "empty")
24
- * Group 16: Combinator.
24
+ * Group 16: Pseudo element (e.g. "::after", "::-webkit-inner-spin-button").
25
+ * Group 17: Combinator.
25
26
  */
26
27
  const SELECTOR_REGEXP =
27
- /(\*)|([a-zA-Z0-9-]+)|#((?:[a-zA-Z0-9-_]|\\.)+)|\.((?:[a-zA-Z0-9-_]|\\.)+)|\[([a-zA-Z0-9-_]+)\]|\[([a-zA-Z0-9-_]+) *([~|^$*]{0,1}) *= *["']{1}([^"']*)["']{1} *(s|i){0,1}\]|\[([a-zA-Z0-9-_]+) *([~|^$*]{0,1}) *= *([^\]]*)\]|:([a-zA-Z-]+) *\(([^)]+)\)|:([a-zA-Z-]+)|([ ,+>]*)/g;
28
+ /(\*)|([a-zA-Z0-9-]+)|#((?:[a-zA-Z0-9-_]|\\.)+)|\.((?:[a-zA-Z0-9-_]|\\.)+)|\[([a-zA-Z0-9-_]+)\]|\[([a-zA-Z0-9-_]+) *([~|^$*]{0,1}) *= *["']{1}([^"']*)["']{1} *(s|i){0,1}\]|\[([a-zA-Z0-9-_]+) *([~|^$*]{0,1}) *= *([^\]]*)\]|:([a-zA-Z-]+) *\(([^)]+)\)|:([a-zA-Z-]+)|::([a-zA-Z-]+)|([ ,+>]*)/g;
28
29
 
29
30
  /**
30
31
  * Escaped Character RegExp.
@@ -151,7 +152,9 @@ export default class SelectorParser {
151
152
  currentSelectorItem.pseudos = currentSelectorItem.pseudos || [];
152
153
  currentSelectorItem.pseudos.push(this.getPseudo(match[15]));
153
154
  } else if (match[16]) {
154
- switch (match[16].trim()) {
155
+ currentSelectorItem.isPseudoElement = true;
156
+ } else if (match[17]) {
157
+ switch (match[17].trim()) {
155
158
  case ',':
156
159
  currentSelectorItem = new SelectorItem({
157
160
  combinator: SelectorCombinatorEnum.descendant
@@ -845,13 +845,15 @@ export default class Window extends EventTarget implements IWindow {
845
845
  );
846
846
  }
847
847
 
848
- this.dispatchEvent(
849
- new MessageEvent('message', {
850
- data: message,
851
- origin: this.parent.location.origin,
852
- source: this.parent,
853
- lastEventId: ''
854
- })
848
+ this.window.setTimeout(() =>
849
+ this.dispatchEvent(
850
+ new MessageEvent('message', {
851
+ data: message,
852
+ origin: this.parent.location.origin,
853
+ source: this.parent,
854
+ lastEventId: ''
855
+ })
856
+ )
855
857
  );
856
858
  }
857
859