happy-dom 5.4.0 → 6.0.0
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/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 +2 -1
- package/lib/index.js +3 -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 +1 -6
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js +7 -3
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -1
- package/lib/nodes/html-dialog-element/IHTMLDialogElement.d.ts +11 -0
- 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 +20 -0
- package/lib/window/Window.d.ts +23 -9
- package/lib/window/Window.js +83 -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/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 +2 -0
- 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 +4 -9
- package/src/nodes/html-dialog-element/IHTMLDialogElement.ts +14 -0
- 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 +22 -0
- package/src/window/Window.ts +102 -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
@@ -26,7 +26,6 @@ import SVGSVGElement from '../nodes/svg-element/SVGSVGElement';
|
|
26
26
|
import SVGElement from '../nodes/svg-element/SVGElement';
|
27
27
|
import HTMLScriptElement from '../nodes/html-script-element/HTMLScriptElement';
|
28
28
|
import HTMLImageElement from '../nodes/html-image-element/HTMLImageElement';
|
29
|
-
import Image from '../nodes/html-image-element/Image';
|
30
29
|
import DocumentFragment from '../nodes/document-fragment/DocumentFragment';
|
31
30
|
import CharacterData from '../nodes/character-data/CharacterData';
|
32
31
|
import TreeWalker from '../tree-walker/TreeWalker';
|
@@ -39,13 +38,11 @@ import EventTarget from '../event/EventTarget';
|
|
39
38
|
import URL from '../location/URL';
|
40
39
|
import Location from '../location/Location';
|
41
40
|
import MutationObserver from '../mutation-observer/MutationObserver';
|
42
|
-
import DOMParser from '../dom-parser/DOMParser';
|
43
41
|
import XMLSerializer from '../xml-serializer/XMLSerializer';
|
44
42
|
import ResizeObserver from '../resize-observer/ResizeObserver';
|
45
43
|
import Blob from '../file/Blob';
|
46
44
|
import File from '../file/File';
|
47
45
|
import DOMException from '../exception/DOMException';
|
48
|
-
import FileReader from '../file/FileReader';
|
49
46
|
import History from '../history/History';
|
50
47
|
import CSSStyleSheet from '../css/CSSStyleSheet';
|
51
48
|
import CSSStyleDeclaration from '../css/CSSStyleDeclaration';
|
@@ -104,7 +101,6 @@ export default class Window extends EventTarget implements IWindow {
|
|
104
101
|
readonly HTMLInputElement: typeof HTMLInputElement;
|
105
102
|
readonly HTMLTextAreaElement: typeof HTMLTextAreaElement;
|
106
103
|
readonly HTMLImageElement: typeof HTMLImageElement;
|
107
|
-
readonly Image: typeof Image;
|
108
104
|
readonly HTMLScriptElement: typeof HTMLScriptElement;
|
109
105
|
readonly HTMLLinkElement: typeof HTMLLinkElement;
|
110
106
|
readonly HTMLStyleElement: typeof HTMLStyleElement;
|
@@ -140,7 +136,6 @@ export default class Window extends EventTarget implements IWindow {
|
|
140
136
|
SHOW_NOTATION: number;
|
141
137
|
};
|
142
138
|
readonly TreeWalker: typeof TreeWalker;
|
143
|
-
readonly DOMParser: typeof DOMParser;
|
144
139
|
readonly MutationObserver: typeof MutationObserver;
|
145
140
|
readonly Document: typeof Document;
|
146
141
|
readonly HTMLDocument: typeof HTMLDocument;
|
@@ -172,7 +167,6 @@ export default class Window extends EventTarget implements IWindow {
|
|
172
167
|
readonly CSSStyleSheet: typeof CSSStyleSheet;
|
173
168
|
readonly Blob: typeof Blob;
|
174
169
|
readonly File: typeof File;
|
175
|
-
readonly FileReader: typeof FileReader;
|
176
170
|
readonly DOMException: typeof DOMException;
|
177
171
|
readonly History: typeof History;
|
178
172
|
readonly Screen: typeof Screen;
|
@@ -191,6 +185,7 @@ export default class Window extends EventTarget implements IWindow {
|
|
191
185
|
readonly Headers: {
|
192
186
|
new (init?: IHeadersInit): IHeaders;
|
193
187
|
};
|
188
|
+
readonly DOMRect: typeof DOMRect;
|
194
189
|
readonly Request: {
|
195
190
|
new (input: string | {
|
196
191
|
href: string;
|
@@ -199,7 +194,10 @@ export default class Window extends EventTarget implements IWindow {
|
|
199
194
|
readonly Response: {
|
200
195
|
new (body?: NodeJS.ReadableStream | null, init?: IResponseInit): IResponse;
|
201
196
|
};
|
202
|
-
readonly
|
197
|
+
readonly DOMParser: any;
|
198
|
+
readonly Range: any;
|
199
|
+
readonly FileReader: any;
|
200
|
+
readonly Image: any;
|
203
201
|
onload: (event: Event) => void;
|
204
202
|
onerror: (event: ErrorEvent) => void;
|
205
203
|
readonly document: Document;
|
@@ -220,8 +218,6 @@ export default class Window extends EventTarget implements IWindow {
|
|
220
218
|
readonly sessionStorage: Storage;
|
221
219
|
readonly localStorage: Storage;
|
222
220
|
readonly performance: PerfHooks.Performance;
|
223
|
-
atob: (data: unknown) => string;
|
224
|
-
btoa: (data: unknown) => string;
|
225
221
|
ArrayBuffer: any;
|
226
222
|
Boolean: any;
|
227
223
|
Buffer: typeof globalThis.Buffer;
|
@@ -403,6 +399,24 @@ export default class Window extends EventTarget implements IWindow {
|
|
403
399
|
* @returns Promise.
|
404
400
|
*/
|
405
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;
|
406
420
|
/**
|
407
421
|
* Setup of VM context.
|
408
422
|
*/
|
package/lib/window/Window.js
CHANGED
@@ -109,11 +109,16 @@ const Plugin_1 = __importDefault(require("../navigator/Plugin"));
|
|
109
109
|
const PluginArray_1 = __importDefault(require("../navigator/PluginArray"));
|
110
110
|
const url_1 = require("url");
|
111
111
|
const FetchHandler_1 = __importDefault(require("../fetch/FetchHandler"));
|
112
|
+
const Range_1 = __importDefault(require("../range/Range"));
|
112
113
|
const VMGlobalPropertyScript_1 = __importDefault(require("./VMGlobalPropertyScript"));
|
113
114
|
const PerfHooks = __importStar(require("perf_hooks"));
|
114
115
|
const vm_1 = __importDefault(require("vm"));
|
115
116
|
const buffer_1 = require("buffer");
|
116
|
-
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;
|
117
122
|
/**
|
118
123
|
* Browser window.
|
119
124
|
*
|
@@ -126,7 +131,23 @@ class Window extends EventTarget_1.default {
|
|
126
131
|
*/
|
127
132
|
constructor() {
|
128
133
|
super();
|
129
|
-
|
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
|
130
151
|
this.happyDOM = {
|
131
152
|
whenAsyncComplete: async () => {
|
132
153
|
return await this.happyDOM.asyncTaskManager.whenComplete();
|
@@ -145,7 +166,6 @@ class Window extends EventTarget_1.default {
|
|
145
166
|
this.HTMLInputElement = HTMLInputElement_1.default;
|
146
167
|
this.HTMLTextAreaElement = HTMLTextAreaElement_1.default;
|
147
168
|
this.HTMLImageElement = HTMLImageElement_1.default;
|
148
|
-
this.Image = Image_1.default;
|
149
169
|
this.HTMLScriptElement = HTMLScriptElement_1.default;
|
150
170
|
this.HTMLLinkElement = HTMLLinkElement_1.default;
|
151
171
|
this.HTMLStyleElement = HTMLStyleElement_1.default;
|
@@ -164,7 +184,6 @@ class Window extends EventTarget_1.default {
|
|
164
184
|
this.CharacterData = CharacterData_1.default;
|
165
185
|
this.NodeFilter = NodeFilter_1.default;
|
166
186
|
this.TreeWalker = TreeWalker_1.default;
|
167
|
-
this.DOMParser = DOMParser_1.default;
|
168
187
|
this.MutationObserver = MutationObserver_1.default;
|
169
188
|
this.Document = Document_1.default;
|
170
189
|
this.HTMLDocument = HTMLDocument_1.default;
|
@@ -196,7 +215,6 @@ class Window extends EventTarget_1.default {
|
|
196
215
|
this.CSSStyleSheet = CSSStyleSheet_1.default;
|
197
216
|
this.Blob = Blob_1.default;
|
198
217
|
this.File = File_1.default;
|
199
|
-
this.FileReader = FileReader_1.default;
|
200
218
|
this.DOMException = DOMException_1.default;
|
201
219
|
this.History = History_1.default;
|
202
220
|
this.Screen = Screen_1.default;
|
@@ -213,8 +231,6 @@ class Window extends EventTarget_1.default {
|
|
213
231
|
this.Plugin = Plugin_1.default;
|
214
232
|
this.PluginArray = PluginArray_1.default;
|
215
233
|
this.Headers = Headers_1.default;
|
216
|
-
this.Request = Request_1.default;
|
217
|
-
this.Response = Response_1.default;
|
218
234
|
// Events
|
219
235
|
this.onload = null;
|
220
236
|
this.onerror = null;
|
@@ -235,35 +251,7 @@ class Window extends EventTarget_1.default {
|
|
235
251
|
this.sessionStorage = new Storage_1.default();
|
236
252
|
this.localStorage = new Storage_1.default();
|
237
253
|
this.performance = PerfHooks.performance;
|
238
|
-
// Atob & btoa
|
239
|
-
this.atob = WindowBase64_1.atob;
|
240
|
-
this.btoa = WindowBase64_1.btoa;
|
241
254
|
this.Buffer = buffer_1.Buffer;
|
242
|
-
// Private properties
|
243
|
-
this._setTimeout = setTimeout;
|
244
|
-
this._clearTimeout = clearTimeout;
|
245
|
-
this._setInterval = setInterval;
|
246
|
-
this._clearInterval = clearInterval;
|
247
|
-
this.document = new HTMLDocument_1.default();
|
248
|
-
this.document.defaultView = this;
|
249
|
-
this.document._readyStateManager.whenComplete().then(() => {
|
250
|
-
this.dispatchEvent(new Event_1.default('load'));
|
251
|
-
});
|
252
|
-
DOMParser_1.default._ownerDocument = this.document;
|
253
|
-
FileReader_1.default._ownerDocument = this.document;
|
254
|
-
Image_1.default.ownerDocument = this.document;
|
255
|
-
Request_1.default._ownerDocument = this.document;
|
256
|
-
Response_1.default._ownerDocument = this.document;
|
257
|
-
for (const eventType of NonImplementedEventTypes_1.default) {
|
258
|
-
if (!this[eventType]) {
|
259
|
-
this[eventType] = Event_1.default;
|
260
|
-
}
|
261
|
-
}
|
262
|
-
for (const className of NonImplemenetedElementClasses_1.default) {
|
263
|
-
if (!this[className]) {
|
264
|
-
this[className] = HTMLElement_1.default;
|
265
|
-
}
|
266
|
-
}
|
267
255
|
// Binds all methods to "this", so that it will use the correct context when called globally.
|
268
256
|
for (const key of Object.getOwnPropertyNames(Window.prototype).concat(Object.getOwnPropertyNames(EventTarget_1.default.prototype))) {
|
269
257
|
if (key !== 'constructor' &&
|
@@ -273,7 +261,45 @@ class Window extends EventTarget_1.default {
|
|
273
261
|
this[key] = this[key].bind(this);
|
274
262
|
}
|
275
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;
|
276
301
|
this._setupVMContext();
|
302
|
+
this.document._onWindowReady();
|
277
303
|
}
|
278
304
|
/**
|
279
305
|
* The CSS interface holds useful CSS-related methods.
|
@@ -446,6 +472,28 @@ class Window extends EventTarget_1.default {
|
|
446
472
|
async fetch(url, init) {
|
447
473
|
return await FetchHandler_1.default.fetch(this.document, url, init);
|
448
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
|
+
}
|
449
497
|
/**
|
450
498
|
* Setup of VM context.
|
451
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,uGAA+E;AAC/E,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.0",
|
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": "7efd88a8eb74fe0d32bea79ff7322e6eeda62fac"
|
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
|
+
}
|
@@ -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;
|