happy-dom 2.38.0 → 2.40.1

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 (80) hide show
  1. package/lib/config/ChildLessElements.d.ts +2 -0
  2. package/lib/config/ChildLessElements.js +4 -0
  3. package/lib/config/ChildLessElements.js.map +1 -0
  4. package/lib/config/ElementTag.d.ts +2 -0
  5. package/lib/config/ElementTag.js +3 -1
  6. package/lib/config/ElementTag.js.map +1 -1
  7. package/lib/cookie/CookieUtility.js +2 -2
  8. package/lib/cookie/CookieUtility.js.map +1 -1
  9. package/lib/css/CSS.js +1 -1
  10. package/lib/css/CSS.js.map +1 -1
  11. package/lib/css/CSSStyleDeclaration.js +5 -5
  12. package/lib/css/CSSStyleDeclaration.js.map +1 -1
  13. package/lib/css/rules/CSSKeyframeRule.js +1 -1
  14. package/lib/css/rules/CSSKeyframeRule.js.map +1 -1
  15. package/lib/css/rules/CSSKeyframesRule.js +1 -1
  16. package/lib/css/rules/CSSKeyframesRule.js.map +1 -1
  17. package/lib/css/rules/CSSMediaRule.js +1 -1
  18. package/lib/css/rules/CSSMediaRule.js.map +1 -1
  19. package/lib/css/rules/CSSStyleRule.js +1 -1
  20. package/lib/css/rules/CSSStyleRule.js.map +1 -1
  21. package/lib/dom-parser/DOMParser.js +1 -1
  22. package/lib/dom-parser/DOMParser.js.map +1 -1
  23. package/lib/fetch/ResourceFetcher.js +2 -2
  24. package/lib/fetch/ResourceFetcher.js.map +1 -1
  25. package/lib/file/FileReader.js +1 -1
  26. package/lib/file/FileReader.js.map +1 -1
  27. package/lib/index.d.ts +4 -1
  28. package/lib/index.js +6 -2
  29. package/lib/index.js.map +1 -1
  30. package/lib/location/URL.js +1 -1
  31. package/lib/location/URL.js.map +1 -1
  32. package/lib/nodes/character-data/CharacterData.js +11 -7
  33. package/lib/nodes/character-data/CharacterData.js.map +1 -1
  34. package/lib/nodes/document/Document.js +11 -7
  35. package/lib/nodes/document/Document.js.map +1 -1
  36. package/lib/nodes/document-fragment/DocumentFragment.js +11 -7
  37. package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
  38. package/lib/nodes/element/ClassList.js +1 -1
  39. package/lib/nodes/element/ClassList.js.map +1 -1
  40. package/lib/nodes/element/Element.js +14 -10
  41. package/lib/nodes/element/Element.js.map +1 -1
  42. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +12 -0
  43. package/lib/nodes/html-input-element/HTMLInputElement.js +28 -5
  44. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  45. package/lib/nodes/html-input-element/HTMLInputElementValueStepping.d.ts +15 -0
  46. package/lib/nodes/html-input-element/HTMLInputElementValueStepping.js +41 -0
  47. package/lib/nodes/html-input-element/HTMLInputElementValueStepping.js.map +1 -0
  48. package/lib/nodes/html-input-element/IHTMLInputElement.d.ts +12 -0
  49. package/lib/nodes/html-meta-element/HTMLMetaElement.d.ts +58 -0
  50. package/lib/nodes/html-meta-element/HTMLMetaElement.js +116 -0
  51. package/lib/nodes/html-meta-element/HTMLMetaElement.js.map +1 -0
  52. package/lib/nodes/html-meta-element/IHTMLMetaElement.d.ts +13 -0
  53. package/lib/nodes/html-meta-element/IHTMLMetaElement.js +3 -0
  54. package/lib/nodes/html-meta-element/IHTMLMetaElement.js.map +1 -0
  55. package/lib/nodes/node/Node.js +1 -1
  56. package/lib/nodes/node/Node.js.map +1 -1
  57. package/lib/nodes/parent-node/ParentNodeUtility.js +9 -5
  58. package/lib/nodes/parent-node/ParentNodeUtility.js.map +1 -1
  59. package/lib/query-selector/SelectorItem.js +5 -5
  60. package/lib/query-selector/SelectorItem.js.map +1 -1
  61. package/lib/window/IWindow.d.ts +2 -0
  62. package/lib/window/Window.d.ts +2 -0
  63. package/lib/window/Window.js +2 -0
  64. package/lib/window/Window.js.map +1 -1
  65. package/lib/xml-parser/XMLParser.js +12 -2
  66. package/lib/xml-parser/XMLParser.js.map +1 -1
  67. package/lib/xml-serializer/XMLSerializer.js +8 -8
  68. package/lib/xml-serializer/XMLSerializer.js.map +1 -1
  69. package/package.json +2 -2
  70. package/src/config/ChildLessElements.ts +1 -0
  71. package/src/config/ElementTag.ts +3 -1
  72. package/src/index.ts +6 -0
  73. package/src/nodes/html-input-element/HTMLInputElement.ts +25 -0
  74. package/src/nodes/html-input-element/HTMLInputElementValueStepping.ts +34 -0
  75. package/src/nodes/html-input-element/IHTMLInputElement.ts +14 -0
  76. package/src/nodes/html-meta-element/HTMLMetaElement.ts +81 -0
  77. package/src/nodes/html-meta-element/IHTMLMetaElement.ts +14 -0
  78. package/src/window/IWindow.ts +2 -0
  79. package/src/window/Window.ts +2 -0
  80. package/src/xml-parser/XMLParser.ts +11 -1
@@ -17,6 +17,7 @@ import HTMLLinkElement from '../nodes/html-link-element/HTMLLinkElement';
17
17
  import HTMLStyleElement from '../nodes/html-style-element/HTMLStyleElement';
18
18
  import HTMLSlotElement from '../nodes/html-slot-element/HTMLSlotElement';
19
19
  import HTMLLabelElement from '../nodes/html-label-element/HTMLLabelElement';
20
+ import HTMLMetaElement from '../nodes/html-meta-element/HTMLMetaElement';
20
21
  import SVGSVGElement from '../nodes/svg-element/SVGSVGElement';
21
22
  import SVGElement from '../nodes/svg-element/SVGElement';
22
23
  import HTMLScriptElement from '../nodes/html-script-element/HTMLScriptElement';
@@ -92,6 +93,7 @@ export default interface IWindow {
92
93
  readonly HTMLStyleElement: typeof HTMLStyleElement;
93
94
  readonly HTMLSlotElement: typeof HTMLSlotElement;
94
95
  readonly HTMLLabelElement: typeof HTMLLabelElement;
96
+ readonly HTMLMetaElement: typeof HTMLMetaElement;
95
97
  readonly SVGSVGElement: typeof SVGSVGElement;
96
98
  readonly SVGElement: typeof SVGElement;
97
99
  readonly Image: typeof Image;
@@ -18,6 +18,7 @@ import HTMLLinkElement from '../nodes/html-link-element/HTMLLinkElement';
18
18
  import HTMLStyleElement from '../nodes/html-style-element/HTMLStyleElement';
19
19
  import HTMLSlotElement from '../nodes/html-slot-element/HTMLSlotElement';
20
20
  import HTMLLabelElement from '../nodes/html-label-element/HTMLLabelElement';
21
+ import HTMLMetaElement from '../nodes/html-meta-element/HTMLMetaElement';
21
22
  import SVGSVGElement from '../nodes/svg-element/SVGSVGElement';
22
23
  import SVGElement from '../nodes/svg-element/SVGElement';
23
24
  import HTMLScriptElement from '../nodes/html-script-element/HTMLScriptElement';
@@ -105,6 +106,7 @@ export default class Window extends EventTarget implements IWindow, NodeJS.Globa
105
106
  public readonly HTMLStyleElement = HTMLStyleElement;
106
107
  public readonly HTMLLabelElement = HTMLLabelElement;
107
108
  public readonly HTMLSlotElement = HTMLSlotElement;
109
+ public readonly HTMLMetaElement = HTMLMetaElement;
108
110
  public readonly SVGSVGElement = SVGSVGElement;
109
111
  public readonly SVGElement = SVGElement;
110
112
  public readonly Text = Text;
@@ -3,6 +3,7 @@ import Element from '../nodes/element/Element';
3
3
  import IDocument from '../nodes/document/IDocument';
4
4
  import SelfClosingElements from '../config/SelfClosingElements';
5
5
  import UnnestableElements from '../config/UnnestableElements';
6
+ import ChildLessElements from '../config/ChildLessElements';
6
7
  import { decode } from 'he';
7
8
  import NamespaceURI from '../config/NamespaceURI';
8
9
  import HTMLScriptElement from '../nodes/html-script-element/HTMLScriptElement';
@@ -36,6 +37,7 @@ export default class XMLParser {
36
37
  let parentUnnestableTagName = null;
37
38
  let lastTextIndex = 0;
38
39
  let match: RegExpExecArray;
40
+ let childLessIndex = 0;
39
41
 
40
42
  while ((match = markupRegexp.exec(data))) {
41
43
  const tagName = match[2].toLowerCase();
@@ -86,8 +88,16 @@ export default class XMLParser {
86
88
  } else {
87
89
  parent.appendChild(newElement);
88
90
  }
91
+ lastTextIndex = childLessIndex = markupRegexp.lastIndex;
89
92
 
90
- lastTextIndex = markupRegexp.lastIndex;
93
+ // Tags which contain non-parsed content
94
+ // For example: <script> JavaScript should not be parsed
95
+ if (ChildLessElements.includes(tagName)) {
96
+ while (markupRegexp.exec(data)[2].toLowerCase() != tagName) {
97
+ childLessIndex = markupRegexp.lastIndex;
98
+ }
99
+ markupRegexp.lastIndex = childLessIndex;
100
+ }
91
101
  } else {
92
102
  stack.pop();
93
103
  parent = stack[stack.length - 1] || root;