happy-dom 2.40.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.
- package/lib/config/ChildLessElements.d.ts +2 -0
- package/lib/config/ChildLessElements.js +4 -0
- package/lib/config/ChildLessElements.js.map +1 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/xml-parser/XMLParser.js +11 -1
- package/lib/xml-parser/XMLParser.js.map +1 -1
- package/package.json +2 -2
- package/src/config/ChildLessElements.ts +1 -0
- package/src/index.ts +2 -0
- package/src/xml-parser/XMLParser.ts +11 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ChildLessElements.js","sourceRoot":"","sources":["../../src/config/ChildLessElements.ts"],"names":[],"mappings":";;AAAA,kBAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC"}
|
package/lib/index.d.ts
CHANGED
@@ -102,7 +102,8 @@ import XMLSerializer from './xml-serializer/XMLSerializer';
|
|
102
102
|
import ElementTag from './config/ElementTag';
|
103
103
|
import SelfClosingElements from './config/SelfClosingElements';
|
104
104
|
import UnclosedElements from './config/UnclosedElements';
|
105
|
+
import ChildLessElements from './config/ChildLessElements';
|
105
106
|
import CSSStyleSheet from './css/CSSStyleSheet';
|
106
107
|
import Storage from './storage/Storage';
|
107
108
|
import URLSearchParams from './url-search-params/URLSearchParams';
|
108
|
-
export { AsyncWindow, Window, IWindow, DataTransfer, DataTransferItem, DataTransferItemList, URL, Location, MutationObserver, ResizeObserver, Blob, File, FileReader, DOMException, History, CSSStyleDeclaration, Screen, AsyncTaskManager, IResponse, IFetchOptions, NodeFilter, Event, EventTarget, IEventInit, IEventListener, IUIEventInit, UIEvent, ErrorEvent, FocusEvent, AnimationEvent, IAnimationEventInit, ICustomEventInit, CustomEvent, IErrorEventInit, IFocusEventInit, IInputEventInit, IKeyboardEventInit, IMouseEventInit, IProgressEventInit, IWheelEventInit, InputEvent, KeyboardEvent, MouseEvent, ProgressEvent, WheelEvent, DOMParser, Document, IDocument, HTMLDocument, XMLDocument, SVGDocument, Element, IElement, IHTMLCollection, HTMLElement, IHTMLElement, HTMLTemplateElement, IHTMLTemplateElement, HTMLFormElement, IHTMLFormElement, HTMLInputElement, IHTMLInputElement, HTMLTextAreaElement, IHTMLTextAreaElement, HTMLImageElement, IHTMLImageElement, Image, HTMLScriptElement, HTMLLinkElement, IHTMLLinkElement, HTMLStyleElement, IHTMLStyleElement, HTMLSlotElement, IHTMLSlotElement, HTMLLabelElement, IHTMLLabelElement, HTMLMetaElement, IHTMLMetaElement, SVGElement, ISVGElement, SVGGraphicsElement, ISVGGraphicsElement, SVGSVGElement, ISVGSVGElement, DocumentFragment, IDocumentFragment, ShadowRoot, IShadowRoot, Node, INode, INodeList, Text, IText, Comment, IComment, DocumentType, IDocumentType, TreeWalker, CustomElementRegistry, XMLParser, XMLSerializer, ElementTag, SelfClosingElements, UnclosedElements, CSSStyleSheet, Storage, URLSearchParams };
|
109
|
+
export { AsyncWindow, Window, IWindow, DataTransfer, DataTransferItem, DataTransferItemList, URL, Location, MutationObserver, ResizeObserver, Blob, File, FileReader, DOMException, History, CSSStyleDeclaration, Screen, AsyncTaskManager, IResponse, IFetchOptions, NodeFilter, Event, EventTarget, IEventInit, IEventListener, IUIEventInit, UIEvent, ErrorEvent, FocusEvent, AnimationEvent, IAnimationEventInit, ICustomEventInit, CustomEvent, IErrorEventInit, IFocusEventInit, IInputEventInit, IKeyboardEventInit, IMouseEventInit, IProgressEventInit, IWheelEventInit, InputEvent, KeyboardEvent, MouseEvent, ProgressEvent, WheelEvent, DOMParser, Document, IDocument, HTMLDocument, XMLDocument, SVGDocument, Element, IElement, IHTMLCollection, HTMLElement, IHTMLElement, HTMLTemplateElement, IHTMLTemplateElement, HTMLFormElement, IHTMLFormElement, HTMLInputElement, IHTMLInputElement, HTMLTextAreaElement, IHTMLTextAreaElement, HTMLImageElement, IHTMLImageElement, Image, HTMLScriptElement, HTMLLinkElement, IHTMLLinkElement, HTMLStyleElement, IHTMLStyleElement, HTMLSlotElement, IHTMLSlotElement, HTMLLabelElement, IHTMLLabelElement, HTMLMetaElement, IHTMLMetaElement, SVGElement, ISVGElement, SVGGraphicsElement, ISVGGraphicsElement, SVGSVGElement, ISVGSVGElement, DocumentFragment, IDocumentFragment, ShadowRoot, IShadowRoot, Node, INode, INodeList, Text, IText, Comment, IComment, DocumentType, IDocumentType, TreeWalker, CustomElementRegistry, XMLParser, XMLSerializer, ElementTag, SelfClosingElements, UnclosedElements, ChildLessElements, CSSStyleSheet, Storage, URLSearchParams };
|
package/lib/index.js
CHANGED
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.SVGElement = exports.HTMLMetaElement = exports.HTMLLabelElement = exports.HTMLSlotElement = exports.HTMLStyleElement = exports.HTMLLinkElement = exports.HTMLScriptElement = exports.Image = exports.HTMLImageElement = exports.HTMLTextAreaElement = exports.HTMLInputElement = exports.HTMLFormElement = exports.HTMLTemplateElement = exports.HTMLElement = exports.Element = exports.SVGDocument = exports.XMLDocument = exports.HTMLDocument = exports.Document = exports.DOMParser = exports.WheelEvent = exports.ProgressEvent = exports.MouseEvent = exports.KeyboardEvent = exports.InputEvent = exports.CustomEvent = exports.AnimationEvent = exports.FocusEvent = exports.ErrorEvent = exports.UIEvent = exports.EventTarget = exports.Event = exports.NodeFilter = exports.AsyncTaskManager = exports.Screen = exports.CSSStyleDeclaration = exports.History = exports.DOMException = exports.FileReader = exports.File = exports.Blob = exports.ResizeObserver = exports.MutationObserver = exports.Location = exports.URL = exports.DataTransferItemList = exports.DataTransferItem = exports.DataTransfer = exports.Window = exports.AsyncWindow = void 0;
|
7
|
-
exports.URLSearchParams = exports.Storage = exports.CSSStyleSheet = exports.UnclosedElements = exports.SelfClosingElements = exports.ElementTag = exports.XMLSerializer = exports.XMLParser = exports.CustomElementRegistry = exports.TreeWalker = exports.DocumentType = exports.Comment = exports.Text = exports.Node = exports.ShadowRoot = exports.DocumentFragment = exports.SVGSVGElement = exports.SVGGraphicsElement = void 0;
|
7
|
+
exports.URLSearchParams = exports.Storage = exports.CSSStyleSheet = exports.ChildLessElements = exports.UnclosedElements = exports.SelfClosingElements = exports.ElementTag = exports.XMLSerializer = exports.XMLParser = exports.CustomElementRegistry = exports.TreeWalker = exports.DocumentType = exports.Comment = exports.Text = exports.Node = exports.ShadowRoot = exports.DocumentFragment = exports.SVGSVGElement = exports.SVGGraphicsElement = void 0;
|
8
8
|
var Window_1 = __importDefault(require("./window/Window"));
|
9
9
|
exports.Window = Window_1.default;
|
10
10
|
var DataTransfer_1 = __importDefault(require("./event/DataTransfer"));
|
@@ -135,6 +135,8 @@ var SelfClosingElements_1 = __importDefault(require("./config/SelfClosingElement
|
|
135
135
|
exports.SelfClosingElements = SelfClosingElements_1.default;
|
136
136
|
var UnclosedElements_1 = __importDefault(require("./config/UnclosedElements"));
|
137
137
|
exports.UnclosedElements = UnclosedElements_1.default;
|
138
|
+
var ChildLessElements_1 = __importDefault(require("./config/ChildLessElements"));
|
139
|
+
exports.ChildLessElements = ChildLessElements_1.default;
|
138
140
|
var CSSStyleSheet_1 = __importDefault(require("./css/CSSStyleSheet"));
|
139
141
|
exports.CSSStyleSheet = CSSStyleSheet_1.default;
|
140
142
|
var Storage_1 = __importDefault(require("./storage/Storage"));
|
package/lib/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;AAAA,2DAAqC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;AAAA,2DAAqC;AA+GpC,iBA/GM,gBAAM,CA+GN;AA7GP,sEAAgD;AA+G/C,uBA/GM,sBAAY,CA+GN;AA9Gb,8EAAwD;AA+GvD,2BA/GM,0BAAgB,CA+GN;AA9GjB,sFAAgE;AA+G/D,+BA/GM,8BAAoB,CA+GN;AA9GrB,uDAAiC;AA+GhC,cA/GM,aAAG,CA+GN;AA9GJ,iEAA2C;AA+G1C,mBA/GM,kBAAQ,CA+GN;AA9GT,0FAAoE;AA+GnE,2BA/GM,0BAAgB,CA+GN;AA9GjB,oFAA8D;AA+G7D,yBA/GM,wBAAc,CA+GN;AA9Gf,qDAA+B;AA+G9B,eA/GM,cAAI,CA+GN;AA9GL,qDAA+B;AA+G9B,eA/GM,cAAI,CA+GN;AA9GL,iEAA2C;AA+G1C,qBA/GM,oBAAU,CA+GN;AA9GX,0EAAoD;AA+GnD,uBA/GM,sBAAY,CA+GN;AA9Gb,8DAAwC;AA+GvC,kBA/GM,iBAAO,CA+GN;AA9GR,kFAA4D;AA+G3D,8BA/GM,6BAAmB,CA+GN;AA9GpB,2DAAqC;AA+GpC,iBA/GM,gBAAM,CA+GN;AA9GP,+EAAyD;AA+GxD,2BA/GM,0BAAgB,CA+GN;AA5GjB,wEAAkD;AA+GjD,qBA/GM,oBAAU,CA+GN;AA9GX,wDAAkC;AA+GjC,gBA/GM,eAAK,CA+GN;AA9GN,oEAA8C;AA+G7C,sBA/GM,qBAAW,CA+GN;AA3GZ,4DAAsC;AA+GrC,kBA/GM,iBAAO,CA+GN;AA9GR,yEAAmD;AA+GlD,qBA/GM,oBAAU,CA+GN;AA9GX,yEAAmD;AA+GlD,qBA/GM,oBAAU,CA+GN;AA9GX,2EAAqD;AAkHpD,sBAlHM,qBAAW,CAkHN;AAjHZ,iFAA2D;AA8G1D,yBA9GM,wBAAc,CA8GN;AApGf,yEAAmD;AA+GlD,qBA/GM,oBAAU,CA+GN;AA9GX,+EAAyD;AA+GxD,wBA/GM,uBAAa,CA+GN;AA9Gd,yEAAmD;AA+GlD,qBA/GM,oBAAU,CA+GN;AA9GX,+EAAyD;AA+GxD,wBA/GM,uBAAa,CA+GN;AA9Gd,yEAAmD;AA+GlD,qBA/GM,oBAAU,CA+GN;AA9GX,qEAA+C;AAkE9C,sBAlEM,qBAAW,CAkEN;AAjEZ,qEAA+C;AA8G9C,oBA9GM,mBAAS,CA8GN;AA7GV,uEAAiD;AA8GhD,mBA9GM,kBAAQ,CA8GN;AA5GT,oFAA8D;AA8G7D,uBA9GM,sBAAY,CA8GN;AA7Gb,iFAA2D;AA8G1D,sBA9GM,qBAAW,CA8GN;AA7GZ,iFAA2D;AA8G1D,sBA9GM,qBAAW,CA8GN;AA7GZ,oEAA8C;AA8G7C,kBA9GM,iBAAO,CA8GN;AA3GR,iFAA2D;AA8G1D,sBA9GM,qBAAW,CA8GN;AA5GZ,0GAAoF;AA8GnF,8BA9GM,6BAAmB,CA8GN;AA5GpB,8FAAwE;AA8GvE,0BA9GM,yBAAe,CA8GN;AA5GhB,iGAA2E;AA8G1E,2BA9GM,0BAAgB,CA8GN;AA5GjB,2GAAqF;AA8GpF,8BA9GM,6BAAmB,CA8GN;AA5GpB,iGAA2E;AA8G1E,2BA9GM,0BAAgB,CA8GN;AA5GjB,2EAAqD;AA8GpD,gBA9GM,eAAK,CA8GN;AA7GN,oGAA8E;AA8G7E,4BA9GM,2BAAiB,CA8GN;AA7GlB,8FAAwE;AA8GvE,0BA9GM,yBAAe,CA8GN;AA5GhB,iGAA2E;AA8G1E,2BA9GM,0BAAgB,CA8GN;AA5GjB,8FAAwE;AA8GvE,0BA9GM,yBAAe,CA8GN;AA5GhB,iGAA2E;AA8G1E,2BA9GM,0BAAgB,CA8GN;AA5GjB,8FAAwE;AA8GvE,0BA9GM,yBAAe,CA8GN;AA5GhB,8EAAwD;AA8GvD,qBA9GM,oBAAU,CA8GN;AA5GX,8FAAwE;AA8GvE,6BA9GM,4BAAkB,CA8GN;AA5GnB,oFAA8D;AA8G7D,wBA9GM,uBAAa,CA8GN;AA5Gd,gGAA0E;AA8GzE,2BA9GM,0BAAgB,CA8GN;AA5GjB,8EAAwD;AA8GvD,qBA9GM,oBAAU,CA8GN;AA5GX,2DAAqC;AA8GpC,eA9GM,cAAI,CA8GN;AA3GL,2DAAqC;AA8GpC,eA9GM,cAAI,CA8GN;AA5GL,oEAA8C;AA8G7C,kBA9GM,iBAAO,CA8GN;AA5GR,oFAA8D;AA8G7D,uBA9GM,sBAAY,CA8GN;AA5Gb,wEAAkD;AA8GjD,qBA9GM,oBAAU,CA8GN;AA7GX,iGAA2E;AA8G1E,gCA9GM,+BAAqB,CA8GN;AA7GtB,qEAA+C;AA8G9C,oBA9GM,mBAAS,CA8GN;AA7GV,iFAA2D;AA8G1D,wBA9GM,uBAAa,CA8GN;AA7Gd,mEAA6C;AA8G5C,qBA9GM,oBAAU,CA8GN;AA7GX,qFAA+D;AA8G9D,8BA9GM,6BAAmB,CA8GN;AA7GpB,+EAAyD;AA8GxD,2BA9GM,0BAAgB,CA8GN;AA7GjB,iFAA2D;AA8G1D,4BA9GM,2BAAiB,CA8GN;AA7GlB,sEAAgD;AA8G/C,wBA9GM,uBAAa,CA8GN;AA7Gd,8DAAwC;AA8GvC,kBA9GM,iBAAO,CA8GN;AA7GR,wFAAkE;AA8GjE,0BA9GM,yBAAe,CA8GN"}
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
var SelfClosingElements_1 = __importDefault(require("../config/SelfClosingElements"));
|
7
7
|
var UnnestableElements_1 = __importDefault(require("../config/UnnestableElements"));
|
8
|
+
var ChildLessElements_1 = __importDefault(require("../config/ChildLessElements"));
|
8
9
|
var he_1 = require("he");
|
9
10
|
var NamespaceURI_1 = __importDefault(require("../config/NamespaceURI"));
|
10
11
|
var MARKUP_REGEXP = /<(\/?)([a-z][-.0-9_a-z]*)\s*([^>]*?)(\/?)>/gi;
|
@@ -35,6 +36,7 @@ var XMLParser = /** @class */ (function () {
|
|
35
36
|
var parentUnnestableTagName = null;
|
36
37
|
var lastTextIndex = 0;
|
37
38
|
var match;
|
39
|
+
var childLessIndex = 0;
|
38
40
|
while ((match = markupRegexp.exec(data))) {
|
39
41
|
var tagName = match[2].toLowerCase();
|
40
42
|
var isStartTag = !match[1];
|
@@ -78,7 +80,15 @@ var XMLParser = /** @class */ (function () {
|
|
78
80
|
else {
|
79
81
|
parent.appendChild(newElement);
|
80
82
|
}
|
81
|
-
lastTextIndex = markupRegexp.lastIndex;
|
83
|
+
lastTextIndex = childLessIndex = markupRegexp.lastIndex;
|
84
|
+
// Tags which contain non-parsed content
|
85
|
+
// For example: <script> JavaScript should not be parsed
|
86
|
+
if (ChildLessElements_1.default.includes(tagName)) {
|
87
|
+
while (markupRegexp.exec(data)[2].toLowerCase() != tagName) {
|
88
|
+
childLessIndex = markupRegexp.lastIndex;
|
89
|
+
}
|
90
|
+
markupRegexp.lastIndex = childLessIndex;
|
91
|
+
}
|
82
92
|
}
|
83
93
|
else {
|
84
94
|
stack.pop();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"XMLParser.js","sourceRoot":"","sources":["../../src/xml-parser/XMLParser.ts"],"names":[],"mappings":";;;;;AAGA,sFAAgE;AAChE,oFAA8D;AAC9D,yBAA4B;AAC5B,wEAAkD;AAMlD,IAAM,aAAa,GAAG,8CAA8C,CAAC;AACrE,IAAM,cAAc,GAAG,gCAAgC,CAAC;AACxD,IAAM,8BAA8B,GAAG,aAAa,CAAC;AACrD,IAAM,gBAAgB,GAAG,sDAAsD,CAAC;AAChF,IAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAEzD;;GAEG;AACH;IAAA;
|
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": "2.40.
|
3
|
+
"version": "2.40.1",
|
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": "^26.5.6",
|
76
76
|
"typescript": "^4.2.4"
|
77
77
|
},
|
78
|
-
"gitHead": "
|
78
|
+
"gitHead": "59a41bd7278690f87e10fc647950ae374ec9ade3"
|
79
79
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export default ['style', 'script', 'template'];
|
package/src/index.ts
CHANGED
@@ -102,6 +102,7 @@ import XMLSerializer from './xml-serializer/XMLSerializer';
|
|
102
102
|
import ElementTag from './config/ElementTag';
|
103
103
|
import SelfClosingElements from './config/SelfClosingElements';
|
104
104
|
import UnclosedElements from './config/UnclosedElements';
|
105
|
+
import ChildLessElements from './config/ChildLessElements';
|
105
106
|
import CSSStyleSheet from './css/CSSStyleSheet';
|
106
107
|
import Storage from './storage/Storage';
|
107
108
|
import URLSearchParams from './url-search-params/URLSearchParams';
|
@@ -211,6 +212,7 @@ export {
|
|
211
212
|
ElementTag,
|
212
213
|
SelfClosingElements,
|
213
214
|
UnclosedElements,
|
215
|
+
ChildLessElements,
|
214
216
|
CSSStyleSheet,
|
215
217
|
Storage,
|
216
218
|
URLSearchParams
|
@@ -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
|
-
|
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;
|