happy-dom 3.0.0 → 3.2.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/lib/event/Event.d.ts +8 -1
- package/lib/event/Event.js +28 -1
- package/lib/event/Event.js.map +1 -1
- package/lib/fetch/ResourceFetchHandler.js +2 -2
- package/lib/fetch/ResourceFetchHandler.js.map +1 -1
- package/lib/window/GlobalWindow.d.ts +6 -0
- package/lib/window/GlobalWindow.js +8 -0
- package/lib/window/GlobalWindow.js.map +1 -1
- package/lib/window/IWindow.d.ts +6 -0
- package/lib/window/Window.d.ts +14 -0
- package/lib/window/Window.js +29 -11
- package/lib/window/Window.js.map +1 -1
- package/package.json +2 -2
- package/src/event/Event.ts +35 -1
- package/src/fetch/ResourceFetchHandler.ts +2 -2
- package/src/window/GlobalWindow.ts +9 -0
- package/src/window/IWindow.ts +7 -0
- package/src/window/Window.ts +33 -12
package/lib/event/Event.d.ts
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
import IEventInit from './IEventInit';
|
2
2
|
import EventTarget from './EventTarget';
|
3
|
+
import IEventTarget from './IEventTarget';
|
3
4
|
/**
|
4
|
-
*
|
5
|
+
* Event.
|
5
6
|
*/
|
6
7
|
export default class Event {
|
7
8
|
composed: boolean;
|
@@ -20,6 +21,12 @@ export default class Event {
|
|
20
21
|
* @param [eventInit] Event init.
|
21
22
|
*/
|
22
23
|
constructor(type: string, eventInit?: IEventInit);
|
24
|
+
/**
|
25
|
+
* Returns composed path.
|
26
|
+
*
|
27
|
+
* @returns Composed path.
|
28
|
+
*/
|
29
|
+
composedPath(): IEventTarget[];
|
23
30
|
/**
|
24
31
|
* Init event.
|
25
32
|
*
|
package/lib/event/Event.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
/**
|
4
|
-
*
|
4
|
+
* Event.
|
5
5
|
*/
|
6
6
|
class Event {
|
7
7
|
/**
|
@@ -27,6 +27,33 @@ class Event {
|
|
27
27
|
this.composed = eventInit.composed || false;
|
28
28
|
}
|
29
29
|
}
|
30
|
+
/**
|
31
|
+
* Returns composed path.
|
32
|
+
*
|
33
|
+
* @returns Composed path.
|
34
|
+
*/
|
35
|
+
composedPath() {
|
36
|
+
if (!this.target) {
|
37
|
+
return [];
|
38
|
+
}
|
39
|
+
const composedPath = [];
|
40
|
+
let eventTarget = this.target;
|
41
|
+
while (eventTarget) {
|
42
|
+
composedPath.push(eventTarget);
|
43
|
+
if (this.bubbles) {
|
44
|
+
if (this.composed && eventTarget.host) {
|
45
|
+
eventTarget = eventTarget.host;
|
46
|
+
}
|
47
|
+
else if (this.target.ownerDocument === eventTarget) {
|
48
|
+
eventTarget = this.target.ownerDocument.defaultView;
|
49
|
+
}
|
50
|
+
else {
|
51
|
+
eventTarget = eventTarget.parentNode || null;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
return composedPath;
|
56
|
+
}
|
30
57
|
/**
|
31
58
|
* Init event.
|
32
59
|
*
|
package/lib/event/Event.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Event.js","sourceRoot":"","sources":["../../src/event/Event.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"Event.js","sourceRoot":"","sources":["../../src/event/Event.ts"],"names":[],"mappings":";;AAOA;;GAEG;AACH,MAAqB,KAAK;IAWzB;;;;;OAKG;IACH,YAAY,IAAY,EAAE,YAAwB,IAAI;QAhB/C,aAAQ,GAAG,KAAK,CAAC;QACjB,kBAAa,GAAgB,IAAI,CAAC;QAClC,WAAM,GAAgB,IAAI,CAAC;QAC3B,YAAO,GAAG,KAAK,CAAC;QAChB,eAAU,GAAG,KAAK,CAAC;QACnB,qBAAgB,GAAG,KAAK,CAAC;QACzB,iCAA4B,GAAG,KAAK,CAAC;QACrC,wBAAmB,GAAG,KAAK,CAAC;QAC5B,SAAI,GAAW,IAAI,CAAC;QAS1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,SAAS,EAAE;YACd,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC;YAChD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC;SAC5C;IACF,CAAC;IAED;;;;OAIG;IACI,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjB,OAAO,EAAE,CAAC;SACV;QAED,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,IAAI,WAAW,GAAiE,IAAI,CAAC,MAAO,CAAC;QAE7F,OAAO,WAAW,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE/B,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,IAAkB,WAAY,CAAC,IAAI,EAAE;oBACrD,WAAW,GAAiB,WAAY,CAAC,IAAI,CAAC;iBAC9C;qBAAM,IAAsB,IAAI,CAAC,MAAQ,CAAC,aAAa,KAAK,WAAW,EAAE;oBACzE,WAAW,GAAqB,IAAI,CAAC,MAAQ,CAAC,aAAa,CAAC,WAAW,CAAC;iBACxE;qBAAM;oBACN,WAAW,GAAqB,WAAa,CAAC,UAAU,IAAI,IAAI,CAAC;iBACjE;aACD;SACD;QAED,OAAO,YAAY,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACI,SAAS,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK;QACjE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,cAAc;QACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,wBAAwB;QAC9B,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,eAAe;QACrB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACjC,CAAC;CACD;AA3FD,wBA2FC"}
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const RelativeURL_1 = __importDefault(require("../location/RelativeURL"));
|
7
7
|
const DOMException_1 = __importDefault(require("../exception/DOMException"));
|
8
|
-
const sync_request_1 = __importDefault(require("sync-request"));
|
9
8
|
/**
|
10
9
|
* Helper class for performing fetch of resources.
|
11
10
|
*/
|
@@ -34,7 +33,8 @@ class ResourceFetchHandler {
|
|
34
33
|
static fetchSync(document, url) {
|
35
34
|
// We want to only load SyncRequest when it is needed to improve performance and not have direct dependencies to server side packages.
|
36
35
|
const absoluteURL = RelativeURL_1.default.getAbsoluteURL(document.defaultView.location, url);
|
37
|
-
const
|
36
|
+
const syncRequest = require('sync-request');
|
37
|
+
const response = syncRequest('GET', absoluteURL);
|
38
38
|
if (response.isError()) {
|
39
39
|
throw new DOMException_1.default(`Failed to perform request to "${absoluteURL}". Status code: ${response.statusCode}`);
|
40
40
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ResourceFetchHandler.js","sourceRoot":"","sources":["../../src/fetch/ResourceFetchHandler.ts"],"names":[],"mappings":";;;;;AAAA,0EAAkD;AAClD,6EAAqD;
|
1
|
+
{"version":3,"file":"ResourceFetchHandler.js","sourceRoot":"","sources":["../../src/fetch/ResourceFetchHandler.ts"],"names":[],"mappings":";;;;;AAAA,0EAAkD;AAClD,6EAAqD;AAGrD;;GAEG;AACH,MAAqB,oBAAoB;IACxC;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAmB,EAAE,GAAW;QACzD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACjB,MAAM,IAAI,sBAAY,CACrB,iCAAiC,GAAG,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CACxE,CAAC;SACF;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,SAAS,CAAC,QAAmB,EAAE,GAAW;QACvD,sIAAsI;QACtI,MAAM,WAAW,GAAG,qBAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEjD,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YACvB,MAAM,IAAI,sBAAY,CACrB,iCAAiC,WAAW,mBAAmB,QAAQ,CAAC,UAAU,EAAE,CACpF,CAAC;SACF;QAED,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;CACD;AAvCD,uCAuCC"}
|
@@ -85,6 +85,14 @@ class GlobalWindow extends Window_1.default {
|
|
85
85
|
eval(code) {
|
86
86
|
return eval(code);
|
87
87
|
}
|
88
|
+
/**
|
89
|
+
* Setup of VM context.
|
90
|
+
*
|
91
|
+
* @override
|
92
|
+
*/
|
93
|
+
_setupVMContext() {
|
94
|
+
// Do nothing
|
95
|
+
}
|
88
96
|
}
|
89
97
|
exports.default = GlobalWindow;
|
90
98
|
//# sourceMappingURL=GlobalWindow.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"GlobalWindow.js","sourceRoot":"","sources":["../../src/window/GlobalWindow.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"GlobalWindow.js","sourceRoot":"","sources":["../../src/window/GlobalWindow.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAE9B;;;;;GAKG;AACH,MAAqB,YAAa,SAAQ,gBAAM;IAAhD;;QACC,kBAAkB;QACX,gBAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QACrC,YAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAC7B,WAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,aAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,SAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QACvB,UAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACzB,cAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACjC,iBAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QACvC,iBAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QACvC,WAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,aAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,eAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACnC,eAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACnC,cAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACjC,SAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QACvB,SAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QACvB,QAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QACrB,SAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QACvB,QAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QACrB,WAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,YAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAC7B,eAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACnC,mBAAc,GAAG,UAAU,CAAC,cAAc,CAAC;QAC3C,WAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,YAAO,GAAG,UAAU,CAAC,WAAW,CAAC;QACjC,QAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QACrB,WAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,gBAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QACrC,WAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,cAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACjC,aAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,gBAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QACrC,gBAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QACrC,eAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACnC,sBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC;QACjD,YAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAC7B,YAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAC7B,mBAAc,GAAG,UAAU,CAAC,cAAc,CAAC;QAC3C,cAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACjC,uBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC;QACnD,cAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACjC,uBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC;QACnD,WAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,WAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,aAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,UAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACzB,eAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACnC,aAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,YAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAC7B,SAAI,GAAG,UAAU,CAAC,WAAW,CAAC;QAC9B,iBAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QACvC,mBAAc,GAAG,UAAU,CAAC,cAAc,CAAC;QAC3C,cAAS,GAAG,UAAU,CAAC,WAAW,CAAC;QACnC,aAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,OAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACnB,YAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAC7B,oBAAe,GAAG,UAAU,CAAC,eAAe,CAAC;QAC7C,gBAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QACrC,UAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACzB,WAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,aAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IAoBvC,CAAC;IAlBA;;;;;OAKG;IACI,IAAI,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACO,eAAe;QACxB,aAAa;IACd,CAAC;CACD;AAlFD,+BAkFC"}
|
package/lib/window/IWindow.d.ts
CHANGED
@@ -209,6 +209,12 @@ export default interface IWindow extends IEventTarget, NodeJS.Global {
|
|
209
209
|
* @returns CSS style declaration.
|
210
210
|
*/
|
211
211
|
getComputedStyle(element: IHTMLElement): CSSStyleDeclaration;
|
212
|
+
/**
|
213
|
+
* Returns selection.
|
214
|
+
*
|
215
|
+
* @returns Selection.
|
216
|
+
*/
|
217
|
+
getSelection(): Selection;
|
212
218
|
/**
|
213
219
|
* Scrolls to a particular set of coordinates.
|
214
220
|
*
|
package/lib/window/Window.d.ts
CHANGED
@@ -277,6 +277,10 @@ export default class Window extends EventTarget implements IWindow {
|
|
277
277
|
Array: any;
|
278
278
|
Object: any;
|
279
279
|
Function: any;
|
280
|
+
private _setTimeout;
|
281
|
+
private _clearTimeout;
|
282
|
+
private _setInterval;
|
283
|
+
private _clearInterval;
|
280
284
|
/**
|
281
285
|
* Constructor.
|
282
286
|
*/
|
@@ -302,6 +306,12 @@ export default class Window extends EventTarget implements IWindow {
|
|
302
306
|
* @returns CSS style declaration.
|
303
307
|
*/
|
304
308
|
getComputedStyle(element: HTMLElement): CSSStyleDeclaration;
|
309
|
+
/**
|
310
|
+
* Returns selection.
|
311
|
+
*
|
312
|
+
* @returns Selection.
|
313
|
+
*/
|
314
|
+
getSelection(): Selection;
|
305
315
|
/**
|
306
316
|
* Scrolls to a particular set of coordinates.
|
307
317
|
*
|
@@ -387,4 +397,8 @@ export default class Window extends EventTarget implements IWindow {
|
|
387
397
|
* @returns Promise.
|
388
398
|
*/
|
389
399
|
fetch(url: string, init?: IRequestInit): Promise<IResponse>;
|
400
|
+
/**
|
401
|
+
* Setup of VM context.
|
402
|
+
*/
|
403
|
+
protected _setupVMContext(): void;
|
390
404
|
}
|
package/lib/window/Window.js
CHANGED
@@ -233,6 +233,11 @@ class Window extends EventTarget_1.default {
|
|
233
233
|
this.localStorage = new Storage_1.default();
|
234
234
|
this.performance = PerfHooks.performance;
|
235
235
|
this.Buffer = buffer_1.Buffer;
|
236
|
+
// Private properties
|
237
|
+
this._setTimeout = setTimeout;
|
238
|
+
this._clearTimeout = clearTimeout;
|
239
|
+
this._setInterval = setInterval;
|
240
|
+
this._clearInterval = clearInterval;
|
236
241
|
this.document = new HTMLDocument_1.default();
|
237
242
|
this.document.defaultView = this;
|
238
243
|
this.document._readyStateManager.whenComplete().then(() => {
|
@@ -259,13 +264,7 @@ class Window extends EventTarget_1.default {
|
|
259
264
|
this[key] = this[key].bind(this);
|
260
265
|
}
|
261
266
|
}
|
262
|
-
|
263
|
-
if (this.Array === undefined && !vm_1.default.isContext(this)) {
|
264
|
-
vm_1.default.createContext(this);
|
265
|
-
// Sets global properties from the VM to the Window object.
|
266
|
-
// Otherwise "this.Array" will be undefined for example.
|
267
|
-
vm_1.default.runInContext(VMGlobalPropertyScript_1.default, this);
|
268
|
-
}
|
267
|
+
this._setupVMContext();
|
269
268
|
}
|
270
269
|
/**
|
271
270
|
* The CSS interface holds useful CSS-related methods.
|
@@ -297,6 +296,14 @@ class Window extends EventTarget_1.default {
|
|
297
296
|
getComputedStyle(element) {
|
298
297
|
return new CSSStyleDeclaration_1.default(element._attributes, element);
|
299
298
|
}
|
299
|
+
/**
|
300
|
+
* Returns selection.
|
301
|
+
*
|
302
|
+
* @returns Selection.
|
303
|
+
*/
|
304
|
+
getSelection() {
|
305
|
+
return this.document.getSelection();
|
306
|
+
}
|
300
307
|
/**
|
301
308
|
* Scrolls to a particular set of coordinates.
|
302
309
|
*
|
@@ -358,7 +365,7 @@ class Window extends EventTarget_1.default {
|
|
358
365
|
* @returns Timeout ID.
|
359
366
|
*/
|
360
367
|
setTimeout(callback, delay = 0) {
|
361
|
-
const id =
|
368
|
+
const id = this._setTimeout(() => {
|
362
369
|
this.happyDOM.asyncTaskManager.endTimer(id);
|
363
370
|
callback();
|
364
371
|
}, delay);
|
@@ -372,7 +379,7 @@ class Window extends EventTarget_1.default {
|
|
372
379
|
* @param id ID of the timeout.
|
373
380
|
*/
|
374
381
|
clearTimeout(id) {
|
375
|
-
|
382
|
+
this._clearTimeout(id);
|
376
383
|
this.happyDOM.asyncTaskManager.endTimer(id);
|
377
384
|
}
|
378
385
|
/**
|
@@ -384,7 +391,7 @@ class Window extends EventTarget_1.default {
|
|
384
391
|
* @returns Interval ID.
|
385
392
|
*/
|
386
393
|
setInterval(callback, delay = 0) {
|
387
|
-
const id =
|
394
|
+
const id = this._setInterval(callback, delay);
|
388
395
|
this.happyDOM.asyncTaskManager.startTimer(id);
|
389
396
|
return id;
|
390
397
|
}
|
@@ -395,7 +402,7 @@ class Window extends EventTarget_1.default {
|
|
395
402
|
* @param id ID of the interval.
|
396
403
|
*/
|
397
404
|
clearInterval(id) {
|
398
|
-
|
405
|
+
this._clearInterval(id);
|
399
406
|
this.happyDOM.asyncTaskManager.endTimer(id);
|
400
407
|
}
|
401
408
|
/**
|
@@ -430,6 +437,17 @@ class Window extends EventTarget_1.default {
|
|
430
437
|
async fetch(url, init) {
|
431
438
|
return await FetchHandler_1.default.fetch(this.document, url, init);
|
432
439
|
}
|
440
|
+
/**
|
441
|
+
* Setup of VM context.
|
442
|
+
*/
|
443
|
+
_setupVMContext() {
|
444
|
+
if (!vm_1.default.isContext(this)) {
|
445
|
+
vm_1.default.createContext(this);
|
446
|
+
// Sets global properties from the VM to the Window object.
|
447
|
+
// Otherwise "this.Array" will be undefined for example.
|
448
|
+
vm_1.default.runInContext(VMGlobalPropertyScript_1.default, this);
|
449
|
+
}
|
450
|
+
}
|
433
451
|
}
|
434
452
|
exports.default = Window;
|
435
453
|
//# sourceMappingURL=Window.js.map
|
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,8EAAsD;AACtD,mGAA2E;AAC3E,0FAAkE;AAClE,2EAAmD;AACnD,2DAAmC;AACnC,8EAAsD;AACtD,oFAA4D;AAC5D,kFAA0D;AAC1D,kFAA0D;AAC1D,uEAA+C;AAC/C,0DAAkC;AAClC,oEAA4C;AAC5C,iGAAyE;AACzE,6FAAqE;AACrE,4GAAoF;AACpF,wEAAgD;AAChD,oFAA4D;AAC5D,uFAA+D;AAC/D,wDAAgC;AAChC,wDAAgC;AAChC,6EAAqD;AACrD,oEAA4C;AAC5C,iEAAyC;AACzC,yEAAiD;AACjD,qFAA6D;AAC7D,qDAA6B;AAC7B,uEAA+C;AAC/C,4EAAoD;AACpD,gFAAwD;AACxD,4EAAoD;AACpD,4EAAoD;AACpD,yEAAiD;AACjD,iFAAyD;AACzD,yFAAiE;AACjE,4EAAoD;AACpD,+DAAuC;AACvC,4EAAoD;AACpD,gFAAwD;AACxD,8DAAsC;AACtC,8FAAsE;AAOtE,+DAAuC;AACvC,+DAAuC;AACvC,iEAAyC;AACzC,iEAAyC;AAEzC,qFAA6D;AAC7D,sEAA8C;AAC9C,mFAA2D;AAC3D,uEAA+C;AAC/C,uEAA+C;AAC/C,qEAA6C;AAC7C,+EAAuD;AACvD,iEAAyC;AACzC,2EAAmD;AACnD,6BAAsC;AACtC,yEAAiD;AACjD,sFAA8D;AAC9D,sDAAwC;AACxC,4CAAoB;AACpB,mCAAgC;AAEhC;;;;;GAKG;AACH,MAAqB,MAAO,SAAQ,qBAAW;
|
1
|
+
{"version":3,"file":"Window.js","sourceRoot":"","sources":["../../src/window/Window.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.
|
3
|
+
"version": "3.2.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": "6623d692855df7187d8fef5efa39793000927480"
|
79
79
|
}
|
package/src/event/Event.ts
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
import IEventInit from './IEventInit';
|
2
2
|
import EventTarget from './EventTarget';
|
3
|
+
import INode from '../nodes/node/INode';
|
4
|
+
import IWindow from '../window/IWindow';
|
5
|
+
import IShadowRoot from '../nodes/shadow-root/IShadowRoot';
|
6
|
+
import IEventTarget from './IEventTarget';
|
3
7
|
|
4
8
|
/**
|
5
|
-
*
|
9
|
+
* Event.
|
6
10
|
*/
|
7
11
|
export default class Event {
|
8
12
|
public composed = false;
|
@@ -31,6 +35,36 @@ export default class Event {
|
|
31
35
|
}
|
32
36
|
}
|
33
37
|
|
38
|
+
/**
|
39
|
+
* Returns composed path.
|
40
|
+
*
|
41
|
+
* @returns Composed path.
|
42
|
+
*/
|
43
|
+
public composedPath(): IEventTarget[] {
|
44
|
+
if (!this.target) {
|
45
|
+
return [];
|
46
|
+
}
|
47
|
+
|
48
|
+
const composedPath = [];
|
49
|
+
let eventTarget: INode | IShadowRoot | IWindow = <INode | IShadowRoot>(<unknown>this.target);
|
50
|
+
|
51
|
+
while (eventTarget) {
|
52
|
+
composedPath.push(eventTarget);
|
53
|
+
|
54
|
+
if (this.bubbles) {
|
55
|
+
if (this.composed && (<IShadowRoot>eventTarget).host) {
|
56
|
+
eventTarget = (<IShadowRoot>eventTarget).host;
|
57
|
+
} else if ((<INode>(<unknown>this.target)).ownerDocument === eventTarget) {
|
58
|
+
eventTarget = (<INode>(<unknown>this.target)).ownerDocument.defaultView;
|
59
|
+
} else {
|
60
|
+
eventTarget = (<INode>(<unknown>eventTarget)).parentNode || null;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
return composedPath;
|
66
|
+
}
|
67
|
+
|
34
68
|
/**
|
35
69
|
* Init event.
|
36
70
|
*
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import RelativeURL from '../location/RelativeURL';
|
2
2
|
import DOMException from '../exception/DOMException';
|
3
3
|
import IDocument from '../nodes/document/IDocument';
|
4
|
-
import SyncRequest from 'sync-request';
|
5
4
|
|
6
5
|
/**
|
7
6
|
* Helper class for performing fetch of resources.
|
@@ -34,7 +33,8 @@ export default class ResourceFetchHandler {
|
|
34
33
|
public static fetchSync(document: IDocument, url: string): string {
|
35
34
|
// We want to only load SyncRequest when it is needed to improve performance and not have direct dependencies to server side packages.
|
36
35
|
const absoluteURL = RelativeURL.getAbsoluteURL(document.defaultView.location, url);
|
37
|
-
const
|
36
|
+
const syncRequest = require('sync-request');
|
37
|
+
const response = syncRequest('GET', absoluteURL);
|
38
38
|
|
39
39
|
if (response.isError()) {
|
40
40
|
throw new DOMException(
|
package/src/window/IWindow.ts
CHANGED
@@ -213,6 +213,13 @@ export default interface IWindow extends IEventTarget, NodeJS.Global {
|
|
213
213
|
*/
|
214
214
|
getComputedStyle(element: IHTMLElement): CSSStyleDeclaration;
|
215
215
|
|
216
|
+
/**
|
217
|
+
* Returns selection.
|
218
|
+
*
|
219
|
+
* @returns Selection.
|
220
|
+
*/
|
221
|
+
getSelection(): Selection;
|
222
|
+
|
216
223
|
/**
|
217
224
|
* Scrolls to a particular set of coordinates.
|
218
225
|
*
|
package/src/window/Window.ts
CHANGED
@@ -280,6 +280,12 @@ export default class Window extends EventTarget implements IWindow {
|
|
280
280
|
public Object;
|
281
281
|
public Function;
|
282
282
|
|
283
|
+
// Private properties
|
284
|
+
private _setTimeout = setTimeout;
|
285
|
+
private _clearTimeout = clearTimeout;
|
286
|
+
private _setInterval = setInterval;
|
287
|
+
private _clearInterval = clearInterval;
|
288
|
+
|
283
289
|
/**
|
284
290
|
* Constructor.
|
285
291
|
*/
|
@@ -317,14 +323,7 @@ export default class Window extends EventTarget implements IWindow {
|
|
317
323
|
}
|
318
324
|
}
|
319
325
|
|
320
|
-
|
321
|
-
if (this.Array === undefined && !VM.isContext(this)) {
|
322
|
-
VM.createContext(this);
|
323
|
-
|
324
|
-
// Sets global properties from the VM to the Window object.
|
325
|
-
// Otherwise "this.Array" will be undefined for example.
|
326
|
-
VM.runInContext(VMGlobalPropertyScript, this);
|
327
|
-
}
|
326
|
+
this._setupVMContext();
|
328
327
|
}
|
329
328
|
|
330
329
|
/**
|
@@ -361,6 +360,15 @@ export default class Window extends EventTarget implements IWindow {
|
|
361
360
|
return new CSSStyleDeclaration(element._attributes, element);
|
362
361
|
}
|
363
362
|
|
363
|
+
/**
|
364
|
+
* Returns selection.
|
365
|
+
*
|
366
|
+
* @returns Selection.
|
367
|
+
*/
|
368
|
+
public getSelection(): Selection {
|
369
|
+
return this.document.getSelection();
|
370
|
+
}
|
371
|
+
|
364
372
|
/**
|
365
373
|
* Scrolls to a particular set of coordinates.
|
366
374
|
*
|
@@ -426,7 +434,7 @@ export default class Window extends EventTarget implements IWindow {
|
|
426
434
|
* @returns Timeout ID.
|
427
435
|
*/
|
428
436
|
public setTimeout(callback: () => void, delay = 0): NodeJS.Timeout {
|
429
|
-
const id =
|
437
|
+
const id = this._setTimeout(() => {
|
430
438
|
this.happyDOM.asyncTaskManager.endTimer(id);
|
431
439
|
callback();
|
432
440
|
}, delay);
|
@@ -441,7 +449,7 @@ export default class Window extends EventTarget implements IWindow {
|
|
441
449
|
* @param id ID of the timeout.
|
442
450
|
*/
|
443
451
|
public clearTimeout(id: NodeJS.Timeout): void {
|
444
|
-
|
452
|
+
this._clearTimeout(id);
|
445
453
|
this.happyDOM.asyncTaskManager.endTimer(id);
|
446
454
|
}
|
447
455
|
|
@@ -454,7 +462,7 @@ export default class Window extends EventTarget implements IWindow {
|
|
454
462
|
* @returns Interval ID.
|
455
463
|
*/
|
456
464
|
public setInterval(callback: () => void, delay = 0): NodeJS.Timeout {
|
457
|
-
const id =
|
465
|
+
const id = this._setInterval(callback, delay);
|
458
466
|
this.happyDOM.asyncTaskManager.startTimer(id);
|
459
467
|
return id;
|
460
468
|
}
|
@@ -466,7 +474,7 @@ export default class Window extends EventTarget implements IWindow {
|
|
466
474
|
* @param id ID of the interval.
|
467
475
|
*/
|
468
476
|
public clearInterval(id: NodeJS.Timeout): void {
|
469
|
-
|
477
|
+
this._clearInterval(id);
|
470
478
|
this.happyDOM.asyncTaskManager.endTimer(id);
|
471
479
|
}
|
472
480
|
|
@@ -504,4 +512,17 @@ export default class Window extends EventTarget implements IWindow {
|
|
504
512
|
public async fetch(url: string, init?: IRequestInit): Promise<IResponse> {
|
505
513
|
return await FetchHandler.fetch(this.document, url, init);
|
506
514
|
}
|
515
|
+
|
516
|
+
/**
|
517
|
+
* Setup of VM context.
|
518
|
+
*/
|
519
|
+
protected _setupVMContext(): void {
|
520
|
+
if (!VM.isContext(this)) {
|
521
|
+
VM.createContext(this);
|
522
|
+
|
523
|
+
// Sets global properties from the VM to the Window object.
|
524
|
+
// Otherwise "this.Array" will be undefined for example.
|
525
|
+
VM.runInContext(VMGlobalPropertyScript, this);
|
526
|
+
}
|
527
|
+
}
|
507
528
|
}
|