happy-dom 10.11.0 → 10.11.2

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.

@@ -10,6 +10,7 @@ const CSSKeyframesRule_js_1 = __importDefault(require("./rules/CSSKeyframesRule.
10
10
  const CSSMediaRule_js_1 = __importDefault(require("./rules/CSSMediaRule.cjs"));
11
11
  const CSSContainerRule_js_1 = __importDefault(require("./rules/CSSContainerRule.cjs"));
12
12
  const CSSSupportsRule_js_1 = __importDefault(require("./rules/CSSSupportsRule.cjs"));
13
+ const SelectorParser_js_1 = __importDefault(require("../query-selector/SelectorParser.cjs"));
13
14
  const COMMENT_REGEXP = /\/\*[\s\S]*?\*\//gm;
14
15
  /**
15
16
  * CSS parser.
@@ -88,22 +89,26 @@ class CSSParser {
88
89
  (parentRule.type === CSSRule_js_1.default.MEDIA_RULE ||
89
90
  parentRule.type === CSSRule_js_1.default.CONTAINER_RULE ||
90
91
  parentRule.type === CSSRule_js_1.default.SUPPORTS_RULE)) {
91
- const newRule = new CSSStyleRule_js_1.default();
92
- newRule.selectorText = selectorText;
93
- newRule.parentStyleSheet = parentStyleSheet;
94
- newRule.parentRule = parentRule;
95
- parentRule.cssRules.push(newRule);
96
- parentRule = newRule;
92
+ if (this.validateSelectorText(selectorText)) {
93
+ const newRule = new CSSStyleRule_js_1.default();
94
+ newRule.selectorText = selectorText;
95
+ newRule.parentStyleSheet = parentStyleSheet;
96
+ newRule.parentRule = parentRule;
97
+ parentRule.cssRules.push(newRule);
98
+ parentRule = newRule;
99
+ }
97
100
  }
98
101
  else {
99
- const newRule = new CSSStyleRule_js_1.default();
100
- newRule.selectorText = selectorText;
101
- newRule.parentStyleSheet = parentStyleSheet;
102
- newRule.parentRule = parentRule;
103
- if (!parentRule) {
104
- cssRules.push(newRule);
102
+ if (this.validateSelectorText(selectorText)) {
103
+ const newRule = new CSSStyleRule_js_1.default();
104
+ newRule.selectorText = selectorText;
105
+ newRule.parentStyleSheet = parentStyleSheet;
106
+ newRule.parentRule = parentRule;
107
+ if (!parentRule) {
108
+ cssRules.push(newRule);
109
+ }
110
+ parentRule = newRule;
105
111
  }
106
- parentRule = newRule;
107
112
  }
108
113
  stack.push(parentRule);
109
114
  }
@@ -128,6 +133,22 @@ class CSSParser {
128
133
  }
129
134
  return cssRules;
130
135
  }
136
+ /**
137
+ * Validates a selector text.
138
+ *
139
+ * @see https://www.w3.org/TR/CSS21/syndata.html#rule-sets
140
+ * @param selectorText Selector text.
141
+ * @returns True if valid, false otherwise.
142
+ */
143
+ static validateSelectorText(selectorText) {
144
+ try {
145
+ SelectorParser_js_1.default.getSelectorGroups(selectorText);
146
+ }
147
+ catch (e) {
148
+ return false;
149
+ }
150
+ return true;
151
+ }
131
152
  }
132
153
  exports.default = CSSParser;
133
154
  //# sourceMappingURL=CSSParser.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CSSParser.cjs","sourceRoot":"","sources":["../../src/css/CSSParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CSSParser.cjs","sourceRoot":"","sources":["../../src/css/CSSParser.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,13 @@ export default class CSSParser {
12
12
  * @returns Root element.
13
13
  */
14
14
  static parseFromString(parentStyleSheet: CSSStyleSheet, cssText: string): CSSRule[];
15
+ /**
16
+ * Validates a selector text.
17
+ *
18
+ * @see https://www.w3.org/TR/CSS21/syndata.html#rule-sets
19
+ * @param selectorText Selector text.
20
+ * @returns True if valid, false otherwise.
21
+ */
22
+ private static validateSelectorText;
15
23
  }
16
24
  //# sourceMappingURL=CSSParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CSSParser.d.ts","sourceRoot":"","sources":["../../src/css/CSSParser.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAU/C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B;;;;;;OAMG;WACW,eAAe,CAAC,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE;CAwH1F"}
1
+ {"version":3,"file":"CSSParser.d.ts","sourceRoot":"","sources":["../../src/css/CSSParser.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAW/C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B;;;;;;OAMG;WACW,eAAe,CAAC,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE;IA6H1F;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;CAQnC"}
@@ -12,5 +12,13 @@ export default class CSSParser {
12
12
  * @returns Root element.
13
13
  */
14
14
  static parseFromString(parentStyleSheet: CSSStyleSheet, cssText: string): CSSRule[];
15
+ /**
16
+ * Validates a selector text.
17
+ *
18
+ * @see https://www.w3.org/TR/CSS21/syndata.html#rule-sets
19
+ * @param selectorText Selector text.
20
+ * @returns True if valid, false otherwise.
21
+ */
22
+ private static validateSelectorText;
15
23
  }
16
24
  //# sourceMappingURL=CSSParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CSSParser.d.ts","sourceRoot":"","sources":["../../src/css/CSSParser.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAU/C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B;;;;;;OAMG;WACW,eAAe,CAAC,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE;CAwH1F"}
1
+ {"version":3,"file":"CSSParser.d.ts","sourceRoot":"","sources":["../../src/css/CSSParser.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAW/C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B;;;;;;OAMG;WACW,eAAe,CAAC,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE;IA6H1F;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;CAQnC"}
@@ -5,6 +5,7 @@ import CSSKeyframesRule from './rules/CSSKeyframesRule.js';
5
5
  import CSSMediaRule from './rules/CSSMediaRule.js';
6
6
  import CSSContainerRule from './rules/CSSContainerRule.js';
7
7
  import CSSSupportsRule from './rules/CSSSupportsRule.js';
8
+ import SelectorParser from '../query-selector/SelectorParser.js';
8
9
  const COMMENT_REGEXP = /\/\*[\s\S]*?\*\//gm;
9
10
  /**
10
11
  * CSS parser.
@@ -83,22 +84,26 @@ export default class CSSParser {
83
84
  (parentRule.type === CSSRule.MEDIA_RULE ||
84
85
  parentRule.type === CSSRule.CONTAINER_RULE ||
85
86
  parentRule.type === CSSRule.SUPPORTS_RULE)) {
86
- const newRule = new CSSStyleRule();
87
- newRule.selectorText = selectorText;
88
- newRule.parentStyleSheet = parentStyleSheet;
89
- newRule.parentRule = parentRule;
90
- parentRule.cssRules.push(newRule);
91
- parentRule = newRule;
87
+ if (this.validateSelectorText(selectorText)) {
88
+ const newRule = new CSSStyleRule();
89
+ newRule.selectorText = selectorText;
90
+ newRule.parentStyleSheet = parentStyleSheet;
91
+ newRule.parentRule = parentRule;
92
+ parentRule.cssRules.push(newRule);
93
+ parentRule = newRule;
94
+ }
92
95
  }
93
96
  else {
94
- const newRule = new CSSStyleRule();
95
- newRule.selectorText = selectorText;
96
- newRule.parentStyleSheet = parentStyleSheet;
97
- newRule.parentRule = parentRule;
98
- if (!parentRule) {
99
- cssRules.push(newRule);
97
+ if (this.validateSelectorText(selectorText)) {
98
+ const newRule = new CSSStyleRule();
99
+ newRule.selectorText = selectorText;
100
+ newRule.parentStyleSheet = parentStyleSheet;
101
+ newRule.parentRule = parentRule;
102
+ if (!parentRule) {
103
+ cssRules.push(newRule);
104
+ }
105
+ parentRule = newRule;
100
106
  }
101
- parentRule = newRule;
102
107
  }
103
108
  stack.push(parentRule);
104
109
  }
@@ -123,5 +128,21 @@ export default class CSSParser {
123
128
  }
124
129
  return cssRules;
125
130
  }
131
+ /**
132
+ * Validates a selector text.
133
+ *
134
+ * @see https://www.w3.org/TR/CSS21/syndata.html#rule-sets
135
+ * @param selectorText Selector text.
136
+ * @returns True if valid, false otherwise.
137
+ */
138
+ static validateSelectorText(selectorText) {
139
+ try {
140
+ SelectorParser.getSelectorGroups(selectorText);
141
+ }
142
+ catch (e) {
143
+ return false;
144
+ }
145
+ return true;
146
+ }
126
147
  }
127
148
  //# sourceMappingURL=CSSParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CSSParser.js","sourceRoot":"","sources":["../../src/css/CSSParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CSSParser.js","sourceRoot":"","sources":["../../src/css/CSSParser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "10.11.0",
3
+ "version": "10.11.2",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -6,6 +6,7 @@ import CSSKeyframesRule from './rules/CSSKeyframesRule.js';
6
6
  import CSSMediaRule from './rules/CSSMediaRule.js';
7
7
  import CSSContainerRule from './rules/CSSContainerRule.js';
8
8
  import CSSSupportsRule from './rules/CSSSupportsRule.js';
9
+ import SelectorParser from '../query-selector/SelectorParser.js';
9
10
 
10
11
  const COMMENT_REGEXP = /\/\*[\s\S]*?\*\//gm;
11
12
 
@@ -96,23 +97,27 @@ export default class CSSParser {
96
97
  parentRule.type === CSSRule.CONTAINER_RULE ||
97
98
  parentRule.type === CSSRule.SUPPORTS_RULE)
98
99
  ) {
99
- const newRule = new CSSStyleRule();
100
- (<string>newRule.selectorText) = selectorText;
101
- newRule.parentStyleSheet = parentStyleSheet;
102
- newRule.parentRule = parentRule;
103
- (<CSSMediaRule>parentRule).cssRules.push(newRule);
104
- parentRule = newRule;
100
+ if (this.validateSelectorText(selectorText)) {
101
+ const newRule = new CSSStyleRule();
102
+ (<string>newRule.selectorText) = selectorText;
103
+ newRule.parentStyleSheet = parentStyleSheet;
104
+ newRule.parentRule = parentRule;
105
+ (<CSSMediaRule>parentRule).cssRules.push(newRule);
106
+ parentRule = newRule;
107
+ }
105
108
  } else {
106
- const newRule = new CSSStyleRule();
107
- (<string>newRule.selectorText) = selectorText;
108
- newRule.parentStyleSheet = parentStyleSheet;
109
- newRule.parentRule = parentRule;
109
+ if (this.validateSelectorText(selectorText)) {
110
+ const newRule = new CSSStyleRule();
111
+ (<string>newRule.selectorText) = selectorText;
112
+ newRule.parentStyleSheet = parentStyleSheet;
113
+ newRule.parentRule = parentRule;
110
114
 
111
- if (!parentRule) {
112
- cssRules.push(newRule);
113
- }
115
+ if (!parentRule) {
116
+ cssRules.push(newRule);
117
+ }
114
118
 
115
- parentRule = newRule;
119
+ parentRule = newRule;
120
+ }
116
121
  }
117
122
 
118
123
  stack.push(parentRule);
@@ -140,4 +145,20 @@ export default class CSSParser {
140
145
 
141
146
  return cssRules;
142
147
  }
148
+
149
+ /**
150
+ * Validates a selector text.
151
+ *
152
+ * @see https://www.w3.org/TR/CSS21/syndata.html#rule-sets
153
+ * @param selectorText Selector text.
154
+ * @returns True if valid, false otherwise.
155
+ */
156
+ private static validateSelectorText(selectorText: string): boolean {
157
+ try {
158
+ SelectorParser.getSelectorGroups(selectorText);
159
+ } catch (e) {
160
+ return false;
161
+ }
162
+ return true;
163
+ }
143
164
  }