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.
- package/cjs/nodes/element/Element.d.ts +1 -1
- package/cjs/nodes/element/Element.d.ts.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts +1 -1
- package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
- package/cjs/nodes/html-element/HTMLElement.d.ts +1 -1
- package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +19 -79
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +6 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameUtility.cjs +74 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameUtility.cjs.map +1 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameUtility.d.ts +13 -0
- package/cjs/nodes/html-iframe-element/HTMLIFrameUtility.d.ts.map +1 -0
- package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +1 -1
- package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElementUtility.cjs +1 -4
- package/cjs/nodes/html-link-element/HTMLLinkElementUtility.cjs.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElementUtility.d.ts.map +1 -1
- package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts +1 -1
- package/cjs/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElementUtility.cjs +1 -4
- package/cjs/nodes/html-script-element/HTMLScriptElementUtility.cjs.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElementUtility.d.ts.map +1 -1
- package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts +1 -1
- package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +1 -1
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
- package/cjs/nodes/svg-element/SVGElement.d.ts +1 -1
- package/cjs/nodes/svg-element/SVGElement.d.ts.map +1 -1
- package/cjs/query-selector/SelectorItem.cjs +5 -0
- package/cjs/query-selector/SelectorItem.cjs.map +1 -1
- package/cjs/query-selector/SelectorItem.d.ts +3 -0
- package/cjs/query-selector/SelectorItem.d.ts.map +1 -1
- package/cjs/query-selector/SelectorParser.cjs +7 -3
- package/cjs/query-selector/SelectorParser.cjs.map +1 -1
- package/cjs/query-selector/SelectorParser.d.ts.map +1 -1
- package/cjs/window/Window.cjs +2 -2
- package/cjs/window/Window.cjs.map +1 -1
- package/cjs/window/Window.d.ts.map +1 -1
- package/lib/nodes/element/Element.d.ts +1 -1
- package/lib/nodes/element/Element.d.ts.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
- package/lib/nodes/html-element/HTMLElement.d.ts +1 -1
- package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +6 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +19 -79
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameUtility.d.ts +13 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameUtility.d.ts.map +1 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameUtility.js +68 -0
- package/lib/nodes/html-iframe-element/HTMLIFrameUtility.js.map +1 -0
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts +1 -1
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElementUtility.d.ts.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElementUtility.js +1 -4
- package/lib/nodes/html-link-element/HTMLLinkElementUtility.js.map +1 -1
- package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +1 -1
- package/lib/nodes/html-option-element/HTMLOptionElement.d.ts.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElementUtility.d.ts.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElementUtility.js +1 -4
- package/lib/nodes/html-script-element/HTMLScriptElementUtility.js.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
- package/lib/nodes/svg-element/SVGElement.d.ts +1 -1
- package/lib/nodes/svg-element/SVGElement.d.ts.map +1 -1
- package/lib/query-selector/SelectorItem.d.ts +3 -0
- package/lib/query-selector/SelectorItem.d.ts.map +1 -1
- package/lib/query-selector/SelectorItem.js +5 -0
- package/lib/query-selector/SelectorItem.js.map +1 -1
- package/lib/query-selector/SelectorParser.d.ts.map +1 -1
- package/lib/query-selector/SelectorParser.js +7 -3
- package/lib/query-selector/SelectorParser.js.map +1 -1
- package/lib/window/Window.d.ts.map +1 -1
- package/lib/window/Window.js +2 -2
- package/lib/window/Window.js.map +1 -1
- package/package.json +1 -1
- package/src/nodes/element/Element.ts +1 -1
- package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +1 -1
- package/src/nodes/html-button-element/HTMLButtonElement.ts +1 -1
- package/src/nodes/html-element/HTMLElement.ts +1 -1
- package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +23 -79
- package/src/nodes/html-iframe-element/HTMLIFrameUtility.ts +86 -0
- package/src/nodes/html-input-element/HTMLInputElement.ts +1 -1
- package/src/nodes/html-link-element/HTMLLinkElement.ts +1 -1
- package/src/nodes/html-link-element/HTMLLinkElementUtility.ts +1 -6
- package/src/nodes/html-option-element/HTMLOptionElement.ts +1 -1
- package/src/nodes/html-script-element/HTMLScriptElement.ts +1 -1
- package/src/nodes/html-script-element/HTMLScriptElementUtility.ts +1 -6
- package/src/nodes/html-select-element/HTMLSelectElement.ts +1 -1
- package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +1 -1
- package/src/nodes/svg-element/SVGElement.ts +1 -1
- package/src/query-selector/SelectorItem.ts +8 -0
- package/src/query-selector/SelectorParser.ts +6 -3
- 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:
|
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
|
-
|
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
|
package/src/window/Window.ts
CHANGED
@@ -845,13 +845,15 @@ export default class Window extends EventTarget implements IWindow {
|
|
845
845
|
);
|
846
846
|
}
|
847
847
|
|
848
|
-
this.
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
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
|
|