happy-dom 7.6.5 → 7.6.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.

@@ -32,68 +32,71 @@ class XMLParser {
32
32
  let parentUnnestableTagName = null;
33
33
  let lastTextIndex = 0;
34
34
  let match;
35
- while ((match = markupRegexp.exec(data))) {
36
- const tagName = match[2].toLowerCase();
37
- const isStartTag = !match[1];
38
- if (parent && match.index !== lastTextIndex) {
39
- const text = data.substring(lastTextIndex, match.index);
40
- this.appendTextAndCommentNodes(document, parent, text);
41
- }
42
- if (isStartTag) {
43
- const namespaceURI = tagName === 'svg'
44
- ? NamespaceURI_1.default.svg
45
- : parent.namespaceURI || NamespaceURI_1.default.html;
46
- const newElement = document.createElementNS(namespaceURI, tagName);
47
- // Scripts are not allowed to be executed when they are parsed using innerHTML, outerHTML, replaceWith() etc.
48
- // However, they are allowed to be executed when document.write() is used.
49
- // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement
50
- if (tagName === 'script') {
51
- newElement._evaluateScript = evaluateScripts;
52
- }
53
- // An assumption that the same rule should be applied for the HTMLLinkElement is made here.
54
- if (tagName === 'link') {
55
- newElement._evaluateCSS = evaluateScripts;
35
+ if (data !== null && data !== undefined) {
36
+ data = String(data);
37
+ while ((match = markupRegexp.exec(data))) {
38
+ const tagName = match[2].toLowerCase();
39
+ const isStartTag = !match[1];
40
+ if (parent && match.index !== lastTextIndex) {
41
+ const text = data.substring(lastTextIndex, match.index);
42
+ this.appendTextAndCommentNodes(document, parent, text);
56
43
  }
57
- this.setAttributes(newElement, match[3]);
58
- if (!match[4] && !VoidElements_1.default.includes(tagName)) {
59
- // Some elements are not allowed to be nested (e.g. "<a><a></a></a>" is not allowed.).
60
- // Therefore we will auto-close the tag.
61
- if (parentUnnestableTagName === tagName) {
62
- stack.pop();
63
- parent = parent.parentNode || root;
44
+ if (isStartTag) {
45
+ const namespaceURI = tagName === 'svg'
46
+ ? NamespaceURI_1.default.svg
47
+ : parent.namespaceURI || NamespaceURI_1.default.html;
48
+ const newElement = document.createElementNS(namespaceURI, tagName);
49
+ // Scripts are not allowed to be executed when they are parsed using innerHTML, outerHTML, replaceWith() etc.
50
+ // However, they are allowed to be executed when document.write() is used.
51
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement
52
+ if (tagName === 'script') {
53
+ newElement._evaluateScript = evaluateScripts;
64
54
  }
65
- parent = parent.appendChild(newElement);
66
- parentUnnestableTagName = this.getUnnestableTagName(parent);
67
- stack.push(parent);
68
- }
69
- else {
70
- parent.appendChild(newElement);
71
- }
72
- lastTextIndex = markupRegexp.lastIndex;
73
- // Tags which contain non-parsed content
74
- // For example: <script> JavaScript should not be parsed
75
- if (ChildLessElements_1.default.includes(tagName)) {
76
- let childLessMatch = null;
77
- while ((childLessMatch = markupRegexp.exec(data))) {
78
- if (childLessMatch[2].toLowerCase() === tagName && childLessMatch[1]) {
79
- markupRegexp.lastIndex -= childLessMatch[0].length;
80
- break;
55
+ // An assumption that the same rule should be applied for the HTMLLinkElement is made here.
56
+ if (tagName === 'link') {
57
+ newElement._evaluateCSS = evaluateScripts;
58
+ }
59
+ this.setAttributes(newElement, match[3]);
60
+ if (!match[4] && !VoidElements_1.default.includes(tagName)) {
61
+ // Some elements are not allowed to be nested (e.g. "<a><a></a></a>" is not allowed.).
62
+ // Therefore we will auto-close the tag.
63
+ if (parentUnnestableTagName === tagName) {
64
+ stack.pop();
65
+ parent = parent.parentNode || root;
66
+ }
67
+ parent = parent.appendChild(newElement);
68
+ parentUnnestableTagName = this.getUnnestableTagName(parent);
69
+ stack.push(parent);
70
+ }
71
+ else {
72
+ parent.appendChild(newElement);
73
+ }
74
+ lastTextIndex = markupRegexp.lastIndex;
75
+ // Tags which contain non-parsed content
76
+ // For example: <script> JavaScript should not be parsed
77
+ if (ChildLessElements_1.default.includes(tagName)) {
78
+ let childLessMatch = null;
79
+ while ((childLessMatch = markupRegexp.exec(data))) {
80
+ if (childLessMatch[2].toLowerCase() === tagName && childLessMatch[1]) {
81
+ markupRegexp.lastIndex -= childLessMatch[0].length;
82
+ break;
83
+ }
81
84
  }
82
85
  }
83
86
  }
87
+ else {
88
+ stack.pop();
89
+ parent = stack[stack.length - 1] || root;
90
+ parentUnnestableTagName = this.getUnnestableTagName(parent);
91
+ lastTextIndex = markupRegexp.lastIndex;
92
+ }
84
93
  }
85
- else {
86
- stack.pop();
87
- parent = stack[stack.length - 1] || root;
88
- parentUnnestableTagName = this.getUnnestableTagName(parent);
89
- lastTextIndex = markupRegexp.lastIndex;
94
+ // Text after last element
95
+ if ((!match && data.length > 0) || (match && lastTextIndex !== match.index)) {
96
+ const text = data.substring(lastTextIndex);
97
+ this.appendTextAndCommentNodes(document, parent || root, text);
90
98
  }
91
99
  }
92
- // Text after last element
93
- if ((!match && data.length > 0) || (match && lastTextIndex !== match.index)) {
94
- const text = data.substring(lastTextIndex);
95
- this.appendTextAndCommentNodes(document, parent || root, text);
96
- }
97
100
  return root;
98
101
  }
99
102
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"XMLParser.js","sourceRoot":"","sources":["../../src/xml-parser/XMLParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"XMLParser.js","sourceRoot":"","sources":["../../src/xml-parser/XMLParser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "7.6.5",
3
+ "version": "7.6.6",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -75,5 +75,5 @@
75
75
  "ts-jest": "^27.1.3",
76
76
  "typescript": "^4.6.2"
77
77
  },
78
- "gitHead": "d58adfe2717c50e042bf7f9d3e4d2fc5ce83c6b3"
78
+ "gitHead": "e4072902f23440d68bd104027b65bf67685d4396"
79
79
  }
@@ -42,76 +42,80 @@ export default class XMLParser {
42
42
  let lastTextIndex = 0;
43
43
  let match: RegExpExecArray;
44
44
 
45
- while ((match = markupRegexp.exec(data))) {
46
- const tagName = match[2].toLowerCase();
47
- const isStartTag = !match[1];
45
+ if (data !== null && data !== undefined) {
46
+ data = String(data);
48
47
 
49
- if (parent && match.index !== lastTextIndex) {
50
- const text = data.substring(lastTextIndex, match.index);
51
- this.appendTextAndCommentNodes(document, parent, text);
52
- }
53
-
54
- if (isStartTag) {
55
- const namespaceURI =
56
- tagName === 'svg'
57
- ? NamespaceURI.svg
58
- : (<IElement>parent).namespaceURI || NamespaceURI.html;
59
- const newElement = document.createElementNS(namespaceURI, tagName);
60
-
61
- // Scripts are not allowed to be executed when they are parsed using innerHTML, outerHTML, replaceWith() etc.
62
- // However, they are allowed to be executed when document.write() is used.
63
- // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement
64
- if (tagName === 'script') {
65
- (<HTMLScriptElement>newElement)._evaluateScript = evaluateScripts;
66
- }
48
+ while ((match = markupRegexp.exec(data))) {
49
+ const tagName = match[2].toLowerCase();
50
+ const isStartTag = !match[1];
67
51
 
68
- // An assumption that the same rule should be applied for the HTMLLinkElement is made here.
69
- if (tagName === 'link') {
70
- (<HTMLLinkElement>newElement)._evaluateCSS = evaluateScripts;
52
+ if (parent && match.index !== lastTextIndex) {
53
+ const text = data.substring(lastTextIndex, match.index);
54
+ this.appendTextAndCommentNodes(document, parent, text);
71
55
  }
72
56
 
73
- this.setAttributes(newElement, match[3]);
57
+ if (isStartTag) {
58
+ const namespaceURI =
59
+ tagName === 'svg'
60
+ ? NamespaceURI.svg
61
+ : (<IElement>parent).namespaceURI || NamespaceURI.html;
62
+ const newElement = document.createElementNS(namespaceURI, tagName);
63
+
64
+ // Scripts are not allowed to be executed when they are parsed using innerHTML, outerHTML, replaceWith() etc.
65
+ // However, they are allowed to be executed when document.write() is used.
66
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement
67
+ if (tagName === 'script') {
68
+ (<HTMLScriptElement>newElement)._evaluateScript = evaluateScripts;
69
+ }
74
70
 
75
- if (!match[4] && !VoidElements.includes(tagName)) {
76
- // Some elements are not allowed to be nested (e.g. "<a><a></a></a>" is not allowed.).
77
- // Therefore we will auto-close the tag.
78
- if (parentUnnestableTagName === tagName) {
79
- stack.pop();
80
- parent = <Element>parent.parentNode || root;
71
+ // An assumption that the same rule should be applied for the HTMLLinkElement is made here.
72
+ if (tagName === 'link') {
73
+ (<HTMLLinkElement>newElement)._evaluateCSS = evaluateScripts;
81
74
  }
82
75
 
83
- parent = <Element>parent.appendChild(newElement);
84
- parentUnnestableTagName = this.getUnnestableTagName(parent);
85
- stack.push(parent);
86
- } else {
87
- parent.appendChild(newElement);
88
- }
89
- lastTextIndex = markupRegexp.lastIndex;
90
-
91
- // Tags which contain non-parsed content
92
- // For example: <script> JavaScript should not be parsed
93
- if (ChildLessElements.includes(tagName)) {
94
- let childLessMatch = null;
95
- while ((childLessMatch = markupRegexp.exec(data))) {
96
- if (childLessMatch[2].toLowerCase() === tagName && childLessMatch[1]) {
97
- markupRegexp.lastIndex -= childLessMatch[0].length;
98
- break;
76
+ this.setAttributes(newElement, match[3]);
77
+
78
+ if (!match[4] && !VoidElements.includes(tagName)) {
79
+ // Some elements are not allowed to be nested (e.g. "<a><a></a></a>" is not allowed.).
80
+ // Therefore we will auto-close the tag.
81
+ if (parentUnnestableTagName === tagName) {
82
+ stack.pop();
83
+ parent = <Element>parent.parentNode || root;
84
+ }
85
+
86
+ parent = <Element>parent.appendChild(newElement);
87
+ parentUnnestableTagName = this.getUnnestableTagName(parent);
88
+ stack.push(parent);
89
+ } else {
90
+ parent.appendChild(newElement);
91
+ }
92
+ lastTextIndex = markupRegexp.lastIndex;
93
+
94
+ // Tags which contain non-parsed content
95
+ // For example: <script> JavaScript should not be parsed
96
+ if (ChildLessElements.includes(tagName)) {
97
+ let childLessMatch = null;
98
+ while ((childLessMatch = markupRegexp.exec(data))) {
99
+ if (childLessMatch[2].toLowerCase() === tagName && childLessMatch[1]) {
100
+ markupRegexp.lastIndex -= childLessMatch[0].length;
101
+ break;
102
+ }
99
103
  }
100
104
  }
101
- }
102
- } else {
103
- stack.pop();
104
- parent = stack[stack.length - 1] || root;
105
- parentUnnestableTagName = this.getUnnestableTagName(parent);
105
+ } else {
106
+ stack.pop();
107
+ parent = stack[stack.length - 1] || root;
108
+ parentUnnestableTagName = this.getUnnestableTagName(parent);
106
109
 
107
- lastTextIndex = markupRegexp.lastIndex;
110
+ lastTextIndex = markupRegexp.lastIndex;
111
+ }
108
112
  }
109
- }
110
113
 
111
- // Text after last element
112
- if ((!match && data.length > 0) || (match && lastTextIndex !== match.index)) {
113
- const text = data.substring(lastTextIndex);
114
- this.appendTextAndCommentNodes(document, parent || root, text);
114
+ // Text after last element
115
+ if ((!match && data.length > 0) || (match && lastTextIndex !== match.index)) {
116
+ const text = data.substring(lastTextIndex);
117
+ this.appendTextAndCommentNodes(document, parent || root, text);
118
+ }
115
119
  }
116
120
 
117
121
  return root;