happy-dom 5.3.4 → 6.0.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/.eslintrc.js +2 -2
- package/lib/base64/Base64.d.ts +23 -0
- package/lib/base64/Base64.js +89 -0
- package/lib/base64/Base64.js.map +1 -0
- package/lib/config/ElementTag.d.ts +2 -1
- package/lib/config/ElementTag.js +2 -1
- package/lib/config/ElementTag.js.map +1 -1
- package/lib/config/NonImplemenetedElementClasses.js +0 -1
- package/lib/config/NonImplemenetedElementClasses.js.map +1 -1
- package/lib/dom-implementation/DOMImplementation.d.ts +7 -1
- package/lib/dom-implementation/DOMImplementation.js +10 -2
- package/lib/dom-implementation/DOMImplementation.js.map +1 -1
- package/lib/dom-parser/DOMParser.d.ts +9 -4
- package/lib/dom-parser/DOMParser.js +13 -2
- package/lib/dom-parser/DOMParser.js.map +1 -1
- package/lib/exception/DOMExceptionNameEnum.d.ts +5 -1
- package/lib/exception/DOMExceptionNameEnum.js +4 -0
- package/lib/exception/DOMExceptionNameEnum.js.map +1 -1
- package/lib/fetch/Request.d.ts +8 -0
- package/lib/fetch/Request.js +15 -6
- package/lib/fetch/Request.js.map +1 -1
- package/lib/fetch/Response.d.ts +5 -0
- package/lib/fetch/Response.js +12 -6
- package/lib/fetch/Response.js.map +1 -1
- package/lib/file/FileReader.d.ts +7 -2
- package/lib/file/FileReader.js +9 -3
- package/lib/file/FileReader.js.map +1 -1
- package/lib/index.d.ts +4 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/nodes/comment/Comment.d.ts +1 -1
- package/lib/nodes/document/Document.d.ts +18 -15
- package/lib/nodes/document/Document.js +36 -33
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/document/IDocument.d.ts +7 -0
- package/lib/nodes/document-fragment/DocumentFragment.d.ts +1 -1
- package/lib/nodes/document-type/DocumentType.d.ts +1 -1
- package/lib/nodes/element/DOMRectListFactory.d.ts +23 -0
- package/lib/nodes/element/DOMRectListFactory.js +33 -0
- package/lib/nodes/element/DOMRectListFactory.js.map +1 -0
- package/lib/nodes/element/Element.d.ts +6 -5
- package/lib/nodes/element/Element.js +9 -11
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/IDOMRectList.d.ts +11 -0
- package/lib/nodes/element/IDOMRectList.js +3 -0
- package/lib/nodes/element/IDOMRectList.js.map +1 -0
- package/lib/nodes/element/IElement.d.ts +5 -4
- package/lib/nodes/html-dialog-element/HTMLDialogElement.d.ts +31 -0
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js +51 -0
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -0
- package/lib/nodes/html-dialog-element/IHTMLDialogElement.d.ts +25 -0
- package/lib/nodes/html-dialog-element/IHTMLDialogElement.js +3 -0
- package/lib/nodes/html-dialog-element/IHTMLDialogElement.js.map +1 -0
- package/lib/nodes/html-element/DatasetUtility.js +3 -1
- package/lib/nodes/html-element/DatasetUtility.js.map +1 -1
- package/lib/nodes/html-template-element/HTMLTemplateElement.d.ts +1 -10
- package/lib/nodes/html-template-element/HTMLTemplateElement.js +2 -15
- package/lib/nodes/html-template-element/HTMLTemplateElement.js.map +1 -1
- package/lib/nodes/node/INode.d.ts +8 -6
- package/lib/nodes/node/Node.d.ts +20 -17
- package/lib/nodes/node/Node.js +19 -15
- package/lib/nodes/node/Node.js.map +1 -1
- package/lib/nodes/node/NodeTypeEnum.d.ts +10 -0
- package/lib/nodes/node/NodeTypeEnum.js +14 -0
- package/lib/nodes/node/NodeTypeEnum.js.map +1 -0
- package/lib/nodes/node/NodeUtility.d.ts +59 -0
- package/lib/nodes/node/NodeUtility.js +123 -0
- package/lib/nodes/node/NodeUtility.js.map +1 -0
- package/lib/nodes/text/IText.d.ts +9 -0
- package/lib/nodes/text/Text.d.ts +10 -1
- package/lib/nodes/text/Text.js +24 -0
- package/lib/nodes/text/Text.js.map +1 -1
- package/lib/range/IRangeBoundaryPoint.d.ts +8 -0
- package/lib/range/IRangeBoundaryPoint.js +3 -0
- package/lib/range/IRangeBoundaryPoint.js.map +1 -0
- package/lib/range/Range.d.ts +249 -0
- package/lib/range/Range.js +820 -0
- package/lib/range/Range.js.map +1 -0
- package/lib/range/RangeHowEnum.d.ts +7 -0
- package/lib/range/RangeHowEnum.js +11 -0
- package/lib/range/RangeHowEnum.js.map +1 -0
- package/lib/range/RangeUtility.d.ts +46 -0
- package/lib/range/RangeUtility.js +92 -0
- package/lib/range/RangeUtility.js.map +1 -0
- package/lib/selection/Selection.d.ts +167 -44
- package/lib/selection/Selection.js +369 -58
- package/lib/selection/Selection.js.map +1 -1
- package/lib/selection/SelectionDirectionEnum.d.ts +6 -0
- package/lib/selection/SelectionDirectionEnum.js +10 -0
- package/lib/selection/SelectionDirectionEnum.js.map +1 -0
- package/lib/window/IWindow.d.ts +22 -0
- package/lib/window/Window.d.ts +25 -9
- package/lib/window/Window.js +85 -35
- package/lib/window/Window.js.map +1 -1
- package/lib/xml-parser/XMLParser.d.ts +2 -2
- package/lib/xml-parser/XMLParser.js +5 -3
- package/lib/xml-parser/XMLParser.js.map +1 -1
- package/lib/xml-serializer/XMLSerializer.js +4 -1
- package/lib/xml-serializer/XMLSerializer.js.map +1 -1
- package/package.json +2 -2
- package/src/base64/Base64.ts +97 -0
- package/src/config/ElementTag.ts +2 -1
- package/src/config/NonImplemenetedElementClasses.ts +0 -1
- package/src/dom-implementation/DOMImplementation.ts +13 -2
- package/src/dom-parser/DOMParser.ts +20 -7
- package/src/exception/DOMExceptionNameEnum.ts +5 -1
- package/src/fetch/Request.ts +16 -6
- package/src/fetch/Response.ts +13 -6
- package/src/file/FileReader.ts +14 -4
- package/src/index.ts +7 -1
- package/src/nodes/document/Document.ts +47 -39
- package/src/nodes/document/IDocument.ts +8 -0
- package/src/nodes/element/DOMRectListFactory.ts +33 -0
- package/src/nodes/element/Element.ts +10 -11
- package/src/nodes/element/IDOMRectList.ts +11 -0
- package/src/nodes/element/IElement.ts +5 -4
- package/src/nodes/html-dialog-element/HTMLDialogElement.ts +47 -0
- package/src/nodes/html-dialog-element/IHTMLDialogElement.ts +29 -0
- package/src/nodes/html-element/DatasetUtility.ts +3 -1
- package/src/nodes/html-template-element/HTMLTemplateElement.ts +3 -21
- package/src/nodes/node/INode.ts +8 -6
- package/src/nodes/node/Node.ts +24 -19
- package/src/nodes/node/NodeTypeEnum.ts +11 -0
- package/src/nodes/node/NodeUtility.ts +139 -0
- package/src/nodes/text/IText.ts +10 -0
- package/src/nodes/text/Text.ts +33 -0
- package/src/range/IRangeBoundaryPoint.ts +9 -0
- package/src/range/Range.ts +1057 -0
- package/src/range/RangeHowEnum.ts +8 -0
- package/src/range/RangeUtility.ts +114 -0
- package/src/selection/Selection.ts +444 -60
- package/src/selection/SelectionDirectionEnum.ts +7 -0
- package/src/window/IWindow.ts +24 -0
- package/src/window/Window.ts +104 -32
- package/src/xml-parser/XMLParser.ts +15 -7
- package/src/xml-serializer/XMLSerializer.ts +6 -1
- package/lib/nodes/element/Range.d.ts +0 -167
- package/lib/nodes/element/Range.js +0 -215
- package/lib/nodes/element/Range.js.map +0 -1
- package/lib/window/WindowBase64.d.ts +0 -19
- package/lib/window/WindowBase64.js +0 -88
- package/lib/window/WindowBase64.js.map +0 -1
- package/src/nodes/element/Range.ts +0 -237
- package/src/window/WindowBase64.ts +0 -95
package/lib/window/Window.d.ts
CHANGED
@@ -21,11 +21,11 @@ import HTMLSlotElement from '../nodes/html-slot-element/HTMLSlotElement';
|
|
21
21
|
import HTMLLabelElement from '../nodes/html-label-element/HTMLLabelElement';
|
22
22
|
import HTMLMetaElement from '../nodes/html-meta-element/HTMLMetaElement';
|
23
23
|
import HTMLBaseElement from '../nodes/html-base-element/HTMLBaseElement';
|
24
|
+
import HTMLDialogElement from '../nodes/html-dialog-element/HTMLDialogElement';
|
24
25
|
import SVGSVGElement from '../nodes/svg-element/SVGSVGElement';
|
25
26
|
import SVGElement from '../nodes/svg-element/SVGElement';
|
26
27
|
import HTMLScriptElement from '../nodes/html-script-element/HTMLScriptElement';
|
27
28
|
import HTMLImageElement from '../nodes/html-image-element/HTMLImageElement';
|
28
|
-
import Image from '../nodes/html-image-element/Image';
|
29
29
|
import DocumentFragment from '../nodes/document-fragment/DocumentFragment';
|
30
30
|
import CharacterData from '../nodes/character-data/CharacterData';
|
31
31
|
import TreeWalker from '../tree-walker/TreeWalker';
|
@@ -38,13 +38,11 @@ import EventTarget from '../event/EventTarget';
|
|
38
38
|
import URL from '../location/URL';
|
39
39
|
import Location from '../location/Location';
|
40
40
|
import MutationObserver from '../mutation-observer/MutationObserver';
|
41
|
-
import DOMParser from '../dom-parser/DOMParser';
|
42
41
|
import XMLSerializer from '../xml-serializer/XMLSerializer';
|
43
42
|
import ResizeObserver from '../resize-observer/ResizeObserver';
|
44
43
|
import Blob from '../file/Blob';
|
45
44
|
import File from '../file/File';
|
46
45
|
import DOMException from '../exception/DOMException';
|
47
|
-
import FileReader from '../file/FileReader';
|
48
46
|
import History from '../history/History';
|
49
47
|
import CSSStyleSheet from '../css/CSSStyleSheet';
|
50
48
|
import CSSStyleDeclaration from '../css/CSSStyleDeclaration';
|
@@ -103,7 +101,6 @@ export default class Window extends EventTarget implements IWindow {
|
|
103
101
|
readonly HTMLInputElement: typeof HTMLInputElement;
|
104
102
|
readonly HTMLTextAreaElement: typeof HTMLTextAreaElement;
|
105
103
|
readonly HTMLImageElement: typeof HTMLImageElement;
|
106
|
-
readonly Image: typeof Image;
|
107
104
|
readonly HTMLScriptElement: typeof HTMLScriptElement;
|
108
105
|
readonly HTMLLinkElement: typeof HTMLLinkElement;
|
109
106
|
readonly HTMLStyleElement: typeof HTMLStyleElement;
|
@@ -111,6 +108,7 @@ export default class Window extends EventTarget implements IWindow {
|
|
111
108
|
readonly HTMLSlotElement: typeof HTMLSlotElement;
|
112
109
|
readonly HTMLMetaElement: typeof HTMLMetaElement;
|
113
110
|
readonly HTMLBaseElement: typeof HTMLBaseElement;
|
111
|
+
readonly HTMLDialogElement: typeof HTMLDialogElement;
|
114
112
|
readonly SVGSVGElement: typeof SVGSVGElement;
|
115
113
|
readonly SVGElement: typeof SVGElement;
|
116
114
|
readonly Text: typeof Text;
|
@@ -138,7 +136,6 @@ export default class Window extends EventTarget implements IWindow {
|
|
138
136
|
SHOW_NOTATION: number;
|
139
137
|
};
|
140
138
|
readonly TreeWalker: typeof TreeWalker;
|
141
|
-
readonly DOMParser: typeof DOMParser;
|
142
139
|
readonly MutationObserver: typeof MutationObserver;
|
143
140
|
readonly Document: typeof Document;
|
144
141
|
readonly HTMLDocument: typeof HTMLDocument;
|
@@ -170,7 +167,6 @@ export default class Window extends EventTarget implements IWindow {
|
|
170
167
|
readonly CSSStyleSheet: typeof CSSStyleSheet;
|
171
168
|
readonly Blob: typeof Blob;
|
172
169
|
readonly File: typeof File;
|
173
|
-
readonly FileReader: typeof FileReader;
|
174
170
|
readonly DOMException: typeof DOMException;
|
175
171
|
readonly History: typeof History;
|
176
172
|
readonly Screen: typeof Screen;
|
@@ -189,6 +185,7 @@ export default class Window extends EventTarget implements IWindow {
|
|
189
185
|
readonly Headers: {
|
190
186
|
new (init?: IHeadersInit): IHeaders;
|
191
187
|
};
|
188
|
+
readonly DOMRect: typeof DOMRect;
|
192
189
|
readonly Request: {
|
193
190
|
new (input: string | {
|
194
191
|
href: string;
|
@@ -197,7 +194,10 @@ export default class Window extends EventTarget implements IWindow {
|
|
197
194
|
readonly Response: {
|
198
195
|
new (body?: NodeJS.ReadableStream | null, init?: IResponseInit): IResponse;
|
199
196
|
};
|
200
|
-
readonly
|
197
|
+
readonly DOMParser: any;
|
198
|
+
readonly Range: any;
|
199
|
+
readonly FileReader: any;
|
200
|
+
readonly Image: any;
|
201
201
|
onload: (event: Event) => void;
|
202
202
|
onerror: (event: ErrorEvent) => void;
|
203
203
|
readonly document: Document;
|
@@ -218,8 +218,6 @@ export default class Window extends EventTarget implements IWindow {
|
|
218
218
|
readonly sessionStorage: Storage;
|
219
219
|
readonly localStorage: Storage;
|
220
220
|
readonly performance: PerfHooks.Performance;
|
221
|
-
atob: (data: unknown) => string;
|
222
|
-
btoa: (data: unknown) => string;
|
223
221
|
ArrayBuffer: any;
|
224
222
|
Boolean: any;
|
225
223
|
Buffer: typeof globalThis.Buffer;
|
@@ -401,6 +399,24 @@ export default class Window extends EventTarget implements IWindow {
|
|
401
399
|
* @returns Promise.
|
402
400
|
*/
|
403
401
|
fetch(url: string, init?: IRequestInit): Promise<IResponse>;
|
402
|
+
/**
|
403
|
+
* Creates a Base64-encoded ASCII string from a binary string (i.e., a string in which each character in the string is treated as a byte of binary data).
|
404
|
+
*
|
405
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/btoa
|
406
|
+
* @param data Binay data.
|
407
|
+
* @returns Base64-encoded string.
|
408
|
+
*/
|
409
|
+
btoa(data: unknown): string;
|
410
|
+
/**
|
411
|
+
* Decodes a string of data which has been encoded using Base64 encoding.
|
412
|
+
*
|
413
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/atob
|
414
|
+
* @see https://infra.spec.whatwg.org/#forgiving-base64-encode.
|
415
|
+
* @see Https://html.spec.whatwg.org/multipage/webappapis.html#btoa.
|
416
|
+
* @param data Binay string.
|
417
|
+
* @returns An ASCII string containing decoded data from encodedData.
|
418
|
+
*/
|
419
|
+
atob(data: unknown): string;
|
404
420
|
/**
|
405
421
|
* Setup of VM context.
|
406
422
|
*/
|
package/lib/window/Window.js
CHANGED
@@ -49,6 +49,7 @@ const HTMLSlotElement_1 = __importDefault(require("../nodes/html-slot-element/HT
|
|
49
49
|
const HTMLLabelElement_1 = __importDefault(require("../nodes/html-label-element/HTMLLabelElement"));
|
50
50
|
const HTMLMetaElement_1 = __importDefault(require("../nodes/html-meta-element/HTMLMetaElement"));
|
51
51
|
const HTMLBaseElement_1 = __importDefault(require("../nodes/html-base-element/HTMLBaseElement"));
|
52
|
+
const HTMLDialogElement_1 = __importDefault(require("../nodes/html-dialog-element/HTMLDialogElement"));
|
52
53
|
const SVGSVGElement_1 = __importDefault(require("../nodes/svg-element/SVGSVGElement"));
|
53
54
|
const SVGElement_1 = __importDefault(require("../nodes/svg-element/SVGElement"));
|
54
55
|
const HTMLScriptElement_1 = __importDefault(require("../nodes/html-script-element/HTMLScriptElement"));
|
@@ -108,11 +109,16 @@ const Plugin_1 = __importDefault(require("../navigator/Plugin"));
|
|
108
109
|
const PluginArray_1 = __importDefault(require("../navigator/PluginArray"));
|
109
110
|
const url_1 = require("url");
|
110
111
|
const FetchHandler_1 = __importDefault(require("../fetch/FetchHandler"));
|
112
|
+
const Range_1 = __importDefault(require("../range/Range"));
|
111
113
|
const VMGlobalPropertyScript_1 = __importDefault(require("./VMGlobalPropertyScript"));
|
112
114
|
const PerfHooks = __importStar(require("perf_hooks"));
|
113
115
|
const vm_1 = __importDefault(require("vm"));
|
114
116
|
const buffer_1 = require("buffer");
|
115
|
-
const
|
117
|
+
const Base64_1 = __importDefault(require("../base64/Base64"));
|
118
|
+
const ORIGINAL_SET_TIMEOUT = setTimeout;
|
119
|
+
const ORIGINAL_CLEAR_TIMEOUT = clearTimeout;
|
120
|
+
const ORIGINAL_SET_INTERVAL = setInterval;
|
121
|
+
const ORIGINAL_CLEAR_INTERVAL = clearInterval;
|
116
122
|
/**
|
117
123
|
* Browser window.
|
118
124
|
*
|
@@ -125,7 +131,23 @@ class Window extends EventTarget_1.default {
|
|
125
131
|
*/
|
126
132
|
constructor() {
|
127
133
|
super();
|
128
|
-
|
134
|
+
this._setTimeout = ORIGINAL_SET_TIMEOUT;
|
135
|
+
this._clearTimeout = ORIGINAL_CLEAR_TIMEOUT;
|
136
|
+
this._setInterval = ORIGINAL_SET_INTERVAL;
|
137
|
+
this._clearInterval = ORIGINAL_CLEAR_INTERVAL;
|
138
|
+
// Non-implemented event types
|
139
|
+
for (const eventType of NonImplementedEventTypes_1.default) {
|
140
|
+
if (!this[eventType]) {
|
141
|
+
this[eventType] = Event_1.default;
|
142
|
+
}
|
143
|
+
}
|
144
|
+
// Non implemented element classes
|
145
|
+
for (const className of NonImplemenetedElementClasses_1.default) {
|
146
|
+
if (!this[className]) {
|
147
|
+
this[className] = HTMLElement_1.default;
|
148
|
+
}
|
149
|
+
}
|
150
|
+
// The Happy DOM property
|
129
151
|
this.happyDOM = {
|
130
152
|
whenAsyncComplete: async () => {
|
131
153
|
return await this.happyDOM.asyncTaskManager.whenComplete();
|
@@ -144,7 +166,6 @@ class Window extends EventTarget_1.default {
|
|
144
166
|
this.HTMLInputElement = HTMLInputElement_1.default;
|
145
167
|
this.HTMLTextAreaElement = HTMLTextAreaElement_1.default;
|
146
168
|
this.HTMLImageElement = HTMLImageElement_1.default;
|
147
|
-
this.Image = Image_1.default;
|
148
169
|
this.HTMLScriptElement = HTMLScriptElement_1.default;
|
149
170
|
this.HTMLLinkElement = HTMLLinkElement_1.default;
|
150
171
|
this.HTMLStyleElement = HTMLStyleElement_1.default;
|
@@ -152,6 +173,7 @@ class Window extends EventTarget_1.default {
|
|
152
173
|
this.HTMLSlotElement = HTMLSlotElement_1.default;
|
153
174
|
this.HTMLMetaElement = HTMLMetaElement_1.default;
|
154
175
|
this.HTMLBaseElement = HTMLBaseElement_1.default;
|
176
|
+
this.HTMLDialogElement = HTMLDialogElement_1.default;
|
155
177
|
this.SVGSVGElement = SVGSVGElement_1.default;
|
156
178
|
this.SVGElement = SVGElement_1.default;
|
157
179
|
this.Text = Text_1.default;
|
@@ -162,7 +184,6 @@ class Window extends EventTarget_1.default {
|
|
162
184
|
this.CharacterData = CharacterData_1.default;
|
163
185
|
this.NodeFilter = NodeFilter_1.default;
|
164
186
|
this.TreeWalker = TreeWalker_1.default;
|
165
|
-
this.DOMParser = DOMParser_1.default;
|
166
187
|
this.MutationObserver = MutationObserver_1.default;
|
167
188
|
this.Document = Document_1.default;
|
168
189
|
this.HTMLDocument = HTMLDocument_1.default;
|
@@ -194,7 +215,6 @@ class Window extends EventTarget_1.default {
|
|
194
215
|
this.CSSStyleSheet = CSSStyleSheet_1.default;
|
195
216
|
this.Blob = Blob_1.default;
|
196
217
|
this.File = File_1.default;
|
197
|
-
this.FileReader = FileReader_1.default;
|
198
218
|
this.DOMException = DOMException_1.default;
|
199
219
|
this.History = History_1.default;
|
200
220
|
this.Screen = Screen_1.default;
|
@@ -211,8 +231,6 @@ class Window extends EventTarget_1.default {
|
|
211
231
|
this.Plugin = Plugin_1.default;
|
212
232
|
this.PluginArray = PluginArray_1.default;
|
213
233
|
this.Headers = Headers_1.default;
|
214
|
-
this.Request = Request_1.default;
|
215
|
-
this.Response = Response_1.default;
|
216
234
|
// Events
|
217
235
|
this.onload = null;
|
218
236
|
this.onerror = null;
|
@@ -233,35 +251,7 @@ class Window extends EventTarget_1.default {
|
|
233
251
|
this.sessionStorage = new Storage_1.default();
|
234
252
|
this.localStorage = new Storage_1.default();
|
235
253
|
this.performance = PerfHooks.performance;
|
236
|
-
// Atob & btoa
|
237
|
-
this.atob = WindowBase64_1.atob;
|
238
|
-
this.btoa = WindowBase64_1.btoa;
|
239
254
|
this.Buffer = buffer_1.Buffer;
|
240
|
-
// Private properties
|
241
|
-
this._setTimeout = setTimeout;
|
242
|
-
this._clearTimeout = clearTimeout;
|
243
|
-
this._setInterval = setInterval;
|
244
|
-
this._clearInterval = clearInterval;
|
245
|
-
this.document = new HTMLDocument_1.default();
|
246
|
-
this.document.defaultView = this;
|
247
|
-
this.document._readyStateManager.whenComplete().then(() => {
|
248
|
-
this.dispatchEvent(new Event_1.default('load'));
|
249
|
-
});
|
250
|
-
DOMParser_1.default._ownerDocument = this.document;
|
251
|
-
FileReader_1.default._ownerDocument = this.document;
|
252
|
-
Image_1.default.ownerDocument = this.document;
|
253
|
-
Request_1.default._ownerDocument = this.document;
|
254
|
-
Response_1.default._ownerDocument = this.document;
|
255
|
-
for (const eventType of NonImplementedEventTypes_1.default) {
|
256
|
-
if (!this[eventType]) {
|
257
|
-
this[eventType] = Event_1.default;
|
258
|
-
}
|
259
|
-
}
|
260
|
-
for (const className of NonImplemenetedElementClasses_1.default) {
|
261
|
-
if (!this[className]) {
|
262
|
-
this[className] = HTMLElement_1.default;
|
263
|
-
}
|
264
|
-
}
|
265
255
|
// Binds all methods to "this", so that it will use the correct context when called globally.
|
266
256
|
for (const key of Object.getOwnPropertyNames(Window.prototype).concat(Object.getOwnPropertyNames(EventTarget_1.default.prototype))) {
|
267
257
|
if (key !== 'constructor' &&
|
@@ -271,7 +261,45 @@ class Window extends EventTarget_1.default {
|
|
271
261
|
this[key] = this[key].bind(this);
|
272
262
|
}
|
273
263
|
}
|
264
|
+
HTMLDocument_1.default._defaultView = this;
|
265
|
+
const document = new HTMLDocument_1.default();
|
266
|
+
this.document = document;
|
267
|
+
// We need to set the correct owner document when the class is constructed.
|
268
|
+
// To achieve this we will extend the original implementation with a class that sets the owner document.
|
269
|
+
Response_1.default._ownerDocument = document;
|
270
|
+
Request_1.default._ownerDocument = document;
|
271
|
+
Image_1.default._ownerDocument = document;
|
272
|
+
FileReader_1.default._ownerDocument = document;
|
273
|
+
DOMParser_1.default._ownerDocument = document;
|
274
|
+
Range_1.default._ownerDocument = document;
|
275
|
+
/* eslint-disable jsdoc/require-jsdoc */
|
276
|
+
class Response extends Response_1.default {
|
277
|
+
}
|
278
|
+
Response._ownerDocument = document;
|
279
|
+
class Request extends Request_1.default {
|
280
|
+
}
|
281
|
+
Request._ownerDocument = document;
|
282
|
+
class Image extends Image_1.default {
|
283
|
+
}
|
284
|
+
Image._ownerDocument = document;
|
285
|
+
class FileReader extends FileReader_1.default {
|
286
|
+
}
|
287
|
+
FileReader._ownerDocument = document;
|
288
|
+
class DOMParser extends DOMParser_1.default {
|
289
|
+
}
|
290
|
+
DOMParser._ownerDocument = document;
|
291
|
+
class Range extends Range_1.default {
|
292
|
+
}
|
293
|
+
Range._ownerDocument = document;
|
294
|
+
/* eslint-enable jsdoc/require-jsdoc */
|
295
|
+
this.Response = Response;
|
296
|
+
this.Request = Request;
|
297
|
+
this.Image = Image;
|
298
|
+
this.FileReader = FileReader;
|
299
|
+
this.DOMParser = DOMParser;
|
300
|
+
this.Range = Range;
|
274
301
|
this._setupVMContext();
|
302
|
+
this.document._onWindowReady();
|
275
303
|
}
|
276
304
|
/**
|
277
305
|
* The CSS interface holds useful CSS-related methods.
|
@@ -444,6 +472,28 @@ class Window extends EventTarget_1.default {
|
|
444
472
|
async fetch(url, init) {
|
445
473
|
return await FetchHandler_1.default.fetch(this.document, url, init);
|
446
474
|
}
|
475
|
+
/**
|
476
|
+
* Creates a Base64-encoded ASCII string from a binary string (i.e., a string in which each character in the string is treated as a byte of binary data).
|
477
|
+
*
|
478
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/btoa
|
479
|
+
* @param data Binay data.
|
480
|
+
* @returns Base64-encoded string.
|
481
|
+
*/
|
482
|
+
btoa(data) {
|
483
|
+
return Base64_1.default.btoa(data);
|
484
|
+
}
|
485
|
+
/**
|
486
|
+
* Decodes a string of data which has been encoded using Base64 encoding.
|
487
|
+
*
|
488
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/atob
|
489
|
+
* @see https://infra.spec.whatwg.org/#forgiving-base64-encode.
|
490
|
+
* @see Https://html.spec.whatwg.org/multipage/webappapis.html#btoa.
|
491
|
+
* @param data Binay string.
|
492
|
+
* @returns An ASCII string containing decoded data from encodedData.
|
493
|
+
*/
|
494
|
+
atob(data) {
|
495
|
+
return Base64_1.default.atob(data);
|
496
|
+
}
|
447
497
|
/**
|
448
498
|
* Setup of VM context.
|
449
499
|
*/
|
package/lib/window/Window.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Window.js","sourceRoot":"","sources":["../../src/window/Window.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oGAA4E;AAC5E,0EAAkD;AAClD,uFAA+D;AAC/D,oFAA4D;AAC5D,oFAA4D;AAC5D,8DAAsC;AACtC,2EAAmD;AACnD,8DAAsC;AACtC,uEAA+C;AAC/C,iFAAyD;AACzD,uEAA+C;AAC/C,6GAAqF;AACrF,iGAAyE;AACzE,oFAA4D;AAC5D,0GAAkF;AAClF,oGAA4E;AAC5E,8GAAsF;AACtF,iGAAyE;AACzE,oGAA4E;AAC5E,iGAAyE;AACzE,oGAA4E;AAC5E,iGAAyE;AACzE,iGAAyE;AACzE,uFAA+D;AAC/D,iFAAyD;AACzD,uGAA+E;AAC/E,oGAA4E;AAC5E,
|
1
|
+
{"version":3,"file":"Window.js","sourceRoot":"","sources":["../../src/window/Window.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import IDocument from '../nodes/document/IDocument';
|
2
|
-
import
|
2
|
+
import IDocumentFragment from '../nodes/document-fragment/IDocumentFragment';
|
3
3
|
/**
|
4
4
|
* XML parser.
|
5
5
|
*/
|
@@ -12,7 +12,7 @@ export default class XMLParser {
|
|
12
12
|
* @param [evaluateScripts = false] Set to "true" to enable script execution.
|
13
13
|
* @returns Root element.
|
14
14
|
*/
|
15
|
-
static parse(document: IDocument, data: string, evaluateScripts?: boolean):
|
15
|
+
static parse(document: IDocument, data: string, evaluateScripts?: boolean): IDocumentFragment;
|
16
16
|
/**
|
17
17
|
* Returns a tag name if element is unnestable.
|
18
18
|
*
|
@@ -25,7 +25,7 @@ class XMLParser {
|
|
25
25
|
* @returns Root element.
|
26
26
|
*/
|
27
27
|
static parse(document, data, evaluateScripts = false) {
|
28
|
-
const root = document.
|
28
|
+
const root = document.createDocumentFragment();
|
29
29
|
const stack = [root];
|
30
30
|
const markupRegexp = new RegExp(MARKUP_REGEXP, 'gi');
|
31
31
|
let parent = root;
|
@@ -40,7 +40,9 @@ class XMLParser {
|
|
40
40
|
this.appendTextAndCommentNodes(document, parent, text);
|
41
41
|
}
|
42
42
|
if (isStartTag) {
|
43
|
-
const namespaceURI = tagName === 'svg'
|
43
|
+
const namespaceURI = tagName === 'svg'
|
44
|
+
? NamespaceURI_1.default.svg
|
45
|
+
: parent.namespaceURI || NamespaceURI_1.default.html;
|
44
46
|
const newElement = document.createElementNS(namespaceURI, tagName);
|
45
47
|
// Scripts are not allowed to be executed when they are parsed using innerHTML, outerHTML, replaceWith() etc.
|
46
48
|
// However, they are allowed to be executed when document.write() is used.
|
@@ -101,7 +103,7 @@ class XMLParser {
|
|
101
103
|
* @returns Tag name if element is unnestable.
|
102
104
|
*/
|
103
105
|
static getUnnestableTagName(element) {
|
104
|
-
const tagName = element.tagName.toLowerCase();
|
106
|
+
const tagName = element.tagName ? element.tagName.toLowerCase() : null;
|
105
107
|
return tagName && UnnestableElements_1.default.includes(tagName) ? tagName : null;
|
106
108
|
}
|
107
109
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"XMLParser.js","sourceRoot":"","sources":["../../src/xml-parser/XMLParser.ts"],"names":[],"mappings":";;;;;AAGA,0EAAkD;AAClD,sFAA8D;AAC9D,oFAA4D;AAC5D,2BAA4B;AAC5B,0EAAkD;
|
1
|
+
{"version":3,"file":"XMLParser.js","sourceRoot":"","sources":["../../src/xml-parser/XMLParser.ts"],"names":[],"mappings":"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"}
|
@@ -26,8 +26,11 @@ class XMLSerializer {
|
|
26
26
|
if (VoidElements_1.default.includes(tagName)) {
|
27
27
|
return `<${tagName}${this._getAttributes(element)}>`;
|
28
28
|
}
|
29
|
+
const childNodes = element.tagName === 'TEMPLATE'
|
30
|
+
? root.content.childNodes
|
31
|
+
: root.childNodes;
|
29
32
|
let innerHTML = '';
|
30
|
-
for (const node of
|
33
|
+
for (const node of childNodes) {
|
31
34
|
innerHTML += this.serializeToString(node, options);
|
32
35
|
}
|
33
36
|
if (options?.includeShadowRoots && element.shadowRoot) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"XMLSerializer.js","sourceRoot":"","sources":["../../src/xml-serializer/XMLSerializer.ts"],"names":[],"mappings":";;;;;AACA,8DAAsC;AACtC,0EAAkD;AAElD,2BAA4B;
|
1
|
+
{"version":3,"file":"XMLSerializer.js","sourceRoot":"","sources":["../../src/xml-serializer/XMLSerializer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "happy-dom",
|
3
|
-
"version": "
|
3
|
+
"version": "6.0.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": "^27.1.3",
|
76
76
|
"typescript": "^4.6.2"
|
77
77
|
},
|
78
|
-
"gitHead": "
|
78
|
+
"gitHead": "629ca607db3d1713bf55cf98fd1ea59ec532f418"
|
79
79
|
}
|
@@ -0,0 +1,97 @@
|
|
1
|
+
import DOMException from '../exception/DOMException';
|
2
|
+
import DOMExceptionNameEnum from '../exception/DOMExceptionNameEnum';
|
3
|
+
|
4
|
+
const BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Base64 encoding and decoding.
|
8
|
+
*/
|
9
|
+
export default class Base64 {
|
10
|
+
/**
|
11
|
+
* Creates a Base64-encoded ASCII string from a binary string (i.e., a string in which each character in the string is treated as a byte of binary data).
|
12
|
+
*
|
13
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/btoa
|
14
|
+
* @param data Binay data.
|
15
|
+
* @returns Base64-encoded string.
|
16
|
+
*/
|
17
|
+
public static btoa(data: unknown): string {
|
18
|
+
const str = (<string>data).toString();
|
19
|
+
if (/[^\u0000-\u00ff]/.test(str)) {
|
20
|
+
throw new DOMException(
|
21
|
+
"Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.",
|
22
|
+
DOMExceptionNameEnum.invalidCharacterError
|
23
|
+
);
|
24
|
+
}
|
25
|
+
|
26
|
+
let t = '';
|
27
|
+
let p = -6;
|
28
|
+
let a = 0;
|
29
|
+
let i = 0;
|
30
|
+
let v = 0;
|
31
|
+
let c;
|
32
|
+
while (i < str.length || p > -6) {
|
33
|
+
if (p < 0) {
|
34
|
+
if (i < str.length) {
|
35
|
+
c = str.charCodeAt(i++);
|
36
|
+
v += 8;
|
37
|
+
} else {
|
38
|
+
c = 0;
|
39
|
+
}
|
40
|
+
a = ((a & 255) << 8) | (c & 255);
|
41
|
+
p += 8;
|
42
|
+
}
|
43
|
+
t += BASE64_CHARS.charAt(v > 0 ? (a >> p) & 63 : 64);
|
44
|
+
p -= 6;
|
45
|
+
v -= 6;
|
46
|
+
}
|
47
|
+
return t;
|
48
|
+
}
|
49
|
+
|
50
|
+
/**
|
51
|
+
* Decodes a string of data which has been encoded using Base64 encoding.
|
52
|
+
*
|
53
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/atob
|
54
|
+
* @see https://infra.spec.whatwg.org/#forgiving-base64-encode.
|
55
|
+
* @see Https://html.spec.whatwg.org/multipage/webappapis.html#btoa.
|
56
|
+
* @param data Binay string.
|
57
|
+
* @returns An ASCII string containing decoded data from encodedData.
|
58
|
+
*/
|
59
|
+
public static atob(data: unknown): string {
|
60
|
+
const str = (<string>data).toString();
|
61
|
+
|
62
|
+
if (/[^\u0000-\u00ff]/.test(str)) {
|
63
|
+
throw new DOMException(
|
64
|
+
"Failed to execute 'atob' on 'Window': The string to be decoded contains characters outside of the Latin1 range.",
|
65
|
+
DOMExceptionNameEnum.invalidCharacterError
|
66
|
+
);
|
67
|
+
}
|
68
|
+
|
69
|
+
if (/[^A-Za-z\d+/=]/.test(str) || str.length % 4 == 1) {
|
70
|
+
throw new DOMException(
|
71
|
+
"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.",
|
72
|
+
DOMExceptionNameEnum.invalidCharacterError
|
73
|
+
);
|
74
|
+
}
|
75
|
+
|
76
|
+
let t = '';
|
77
|
+
let p = -8;
|
78
|
+
let a = 0;
|
79
|
+
let c;
|
80
|
+
let d;
|
81
|
+
for (let i = 0; i < str.length; i++) {
|
82
|
+
if ((c = BASE64_CHARS.indexOf(str.charAt(i))) < 0) {
|
83
|
+
continue;
|
84
|
+
}
|
85
|
+
a = (a << 6) | (c & 63);
|
86
|
+
if ((p += 6) >= 0) {
|
87
|
+
d = (a >> p) & 255;
|
88
|
+
if (c !== 64) {
|
89
|
+
t += String.fromCharCode(d);
|
90
|
+
}
|
91
|
+
a &= 63;
|
92
|
+
p -= 8;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
return t;
|
96
|
+
}
|
97
|
+
}
|
package/src/config/ElementTag.ts
CHANGED
@@ -16,6 +16,7 @@ import HTMLBaseElement from '../nodes/html-base-element/HTMLBaseElement';
|
|
16
16
|
import HTMLSelectElement from '../nodes/html-select-element/HTMLSelectElement';
|
17
17
|
import HTMLOptionElement from '../nodes/html-option-element/HTMLOptionElement';
|
18
18
|
import HTMLOptGroupElement from '../nodes/html-opt-group-element/HTMLOptGroupElement';
|
19
|
+
import HTMLDialogElement from '../nodes/html-dialog-element/HTMLDialogElement';
|
19
20
|
|
20
21
|
export default {
|
21
22
|
A: HTMLElement,
|
@@ -67,7 +68,7 @@ export default {
|
|
67
68
|
DEL: HTMLElement,
|
68
69
|
DETAILS: HTMLElement,
|
69
70
|
DFN: HTMLElement,
|
70
|
-
DIALOG:
|
71
|
+
DIALOG: HTMLDialogElement,
|
71
72
|
DIV: HTMLElement,
|
72
73
|
DL: HTMLElement,
|
73
74
|
DT: HTMLElement,
|
@@ -5,7 +5,16 @@ import IDocument from '../nodes/document/IDocument';
|
|
5
5
|
* The DOMImplementation interface represents an object providing methods which are not dependent on any particular document. Such an object is returned by the.
|
6
6
|
*/
|
7
7
|
export default class DOMImplementation {
|
8
|
-
|
8
|
+
protected _ownerDocument: IDocument = null;
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Constructor.
|
12
|
+
*
|
13
|
+
* @param ownerDocument
|
14
|
+
*/
|
15
|
+
constructor(ownerDocument: IDocument) {
|
16
|
+
this._ownerDocument = ownerDocument;
|
17
|
+
}
|
9
18
|
|
10
19
|
/**
|
11
20
|
* Creates and returns an XML Document.
|
@@ -15,6 +24,8 @@ export default class DOMImplementation {
|
|
15
24
|
public createDocument(): IDocument {
|
16
25
|
const documentClass = this._ownerDocument.constructor;
|
17
26
|
// @ts-ignore
|
27
|
+
documentClass._defaultView = this._ownerDocument.defaultView;
|
28
|
+
// @ts-ignore
|
18
29
|
return new documentClass();
|
19
30
|
}
|
20
31
|
|
@@ -37,7 +48,7 @@ export default class DOMImplementation {
|
|
37
48
|
publicId: string,
|
38
49
|
systemId: string
|
39
50
|
): DocumentType {
|
40
|
-
DocumentType.
|
51
|
+
DocumentType._ownerDocument = this._ownerDocument;
|
41
52
|
const documentType = new DocumentType();
|
42
53
|
documentType.name = qualifiedName;
|
43
54
|
documentType.publicId = publicId;
|