happy-dom 12.8.0 → 12.9.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/cjs/async-task-manager/AsyncTaskManager.cjs +75 -69
- package/cjs/async-task-manager/AsyncTaskManager.cjs.map +1 -1
- package/cjs/async-task-manager/AsyncTaskManager.d.ts +20 -11
- package/cjs/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
- package/cjs/fetch/Fetch.cjs +2 -2
- package/cjs/fetch/Fetch.cjs.map +1 -1
- package/cjs/mutation-observer/MutationListener.cjs +1 -0
- package/cjs/mutation-observer/MutationListener.cjs.map +1 -1
- package/cjs/mutation-observer/MutationListener.d.ts +3 -1
- package/cjs/mutation-observer/MutationListener.d.ts.map +1 -1
- package/cjs/mutation-observer/MutationObserver.cjs +1 -0
- package/cjs/mutation-observer/MutationObserver.cjs.map +1 -1
- package/cjs/mutation-observer/MutationObserver.d.ts +1 -1
- package/cjs/mutation-observer/MutationObserver.d.ts.map +1 -1
- package/cjs/nodes/character-data/CharacterData.cjs +1 -1
- package/cjs/nodes/character-data/CharacterData.cjs.map +1 -1
- package/cjs/nodes/document/DocumentReadyStateManager.cjs +9 -9
- package/cjs/nodes/document/DocumentReadyStateManager.cjs.map +1 -1
- package/cjs/nodes/document/DocumentReadyStateManager.d.ts +1 -1
- package/cjs/nodes/document/DocumentReadyStateManager.d.ts.map +1 -1
- package/cjs/nodes/element/ElementNamedNodeMap.cjs +2 -2
- package/cjs/nodes/element/ElementNamedNodeMap.cjs.map +1 -1
- package/cjs/nodes/node/NodeUtility.cjs +3 -3
- package/cjs/nodes/node/NodeUtility.cjs.map +1 -1
- package/cjs/version.cjs +1 -1
- package/cjs/window/IWindow.d.ts +4 -4
- package/cjs/window/IWindow.d.ts.map +1 -1
- package/cjs/window/Window.cjs +17 -6
- package/cjs/window/Window.cjs.map +1 -1
- package/cjs/window/Window.d.ts +4 -4
- package/cjs/window/Window.d.ts.map +1 -1
- package/lib/async-task-manager/AsyncTaskManager.d.ts +20 -11
- package/lib/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
- package/lib/async-task-manager/AsyncTaskManager.js +75 -69
- package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
- package/lib/fetch/Fetch.js +2 -2
- package/lib/fetch/Fetch.js.map +1 -1
- package/lib/mutation-observer/MutationListener.d.ts +3 -1
- package/lib/mutation-observer/MutationListener.d.ts.map +1 -1
- package/lib/mutation-observer/MutationListener.js +1 -0
- package/lib/mutation-observer/MutationListener.js.map +1 -1
- package/lib/mutation-observer/MutationObserver.d.ts +1 -1
- package/lib/mutation-observer/MutationObserver.d.ts.map +1 -1
- package/lib/mutation-observer/MutationObserver.js +1 -0
- package/lib/mutation-observer/MutationObserver.js.map +1 -1
- package/lib/nodes/character-data/CharacterData.js +1 -1
- package/lib/nodes/character-data/CharacterData.js.map +1 -1
- package/lib/nodes/document/DocumentReadyStateManager.d.ts +1 -1
- package/lib/nodes/document/DocumentReadyStateManager.d.ts.map +1 -1
- package/lib/nodes/document/DocumentReadyStateManager.js +9 -9
- package/lib/nodes/document/DocumentReadyStateManager.js.map +1 -1
- package/lib/nodes/element/ElementNamedNodeMap.js +2 -2
- package/lib/nodes/element/ElementNamedNodeMap.js.map +1 -1
- package/lib/nodes/node/NodeUtility.js +3 -3
- package/lib/nodes/node/NodeUtility.js.map +1 -1
- package/lib/version.js +1 -1
- package/lib/window/IWindow.d.ts +4 -4
- package/lib/window/IWindow.d.ts.map +1 -1
- package/lib/window/Window.d.ts +4 -4
- package/lib/window/Window.d.ts.map +1 -1
- package/lib/window/Window.js +17 -6
- package/lib/window/Window.js.map +1 -1
- package/package.json +1 -1
- package/src/async-task-manager/AsyncTaskManager.ts +85 -72
- package/src/fetch/Fetch.ts +2 -2
- package/src/mutation-observer/MutationListener.ts +3 -1
- package/src/mutation-observer/MutationObserver.ts +3 -2
- package/src/nodes/character-data/CharacterData.ts +1 -1
- package/src/nodes/document/DocumentReadyStateManager.ts +9 -9
- package/src/nodes/element/ElementNamedNodeMap.ts +2 -2
- package/src/nodes/node/NodeUtility.ts +3 -3
- package/src/window/IWindow.ts +4 -4
- package/src/window/Window.ts +18 -9
@@ -68,7 +68,7 @@ export default abstract class CharacterData extends Node implements ICharacterDa
|
|
68
68
|
record.target = this;
|
69
69
|
record.type = MutationTypeEnum.characterData;
|
70
70
|
record.oldValue = observer.options.characterDataOldValue ? oldValue : null;
|
71
|
-
observer.callback([record]);
|
71
|
+
observer.callback([record], observer.observer);
|
72
72
|
}
|
73
73
|
}
|
74
74
|
}
|
@@ -7,7 +7,7 @@ export default class DocumentReadyStateManager {
|
|
7
7
|
private totalTasks = 0;
|
8
8
|
private readyStateCallbacks: (() => void)[] = [];
|
9
9
|
private window: IWindow = null;
|
10
|
-
private
|
10
|
+
private immediate: NodeJS.Immediate | null = null;
|
11
11
|
private isComplete = false;
|
12
12
|
|
13
13
|
/**
|
@@ -30,8 +30,8 @@ export default class DocumentReadyStateManager {
|
|
30
30
|
resolve();
|
31
31
|
} else {
|
32
32
|
this.readyStateCallbacks.push(resolve);
|
33
|
-
if (this.totalTasks === 0 && !this.
|
34
|
-
this.
|
33
|
+
if (this.totalTasks === 0 && !this.immediate) {
|
34
|
+
this.immediate = this.window.requestAnimationFrame(this.endTask.bind(this));
|
35
35
|
}
|
36
36
|
}
|
37
37
|
});
|
@@ -45,9 +45,9 @@ export default class DocumentReadyStateManager {
|
|
45
45
|
return;
|
46
46
|
}
|
47
47
|
|
48
|
-
if (this.
|
49
|
-
this.window.
|
50
|
-
this.
|
48
|
+
if (this.immediate) {
|
49
|
+
this.window.cancelAnimationFrame(this.immediate);
|
50
|
+
this.immediate = null;
|
51
51
|
}
|
52
52
|
|
53
53
|
this.totalTasks++;
|
@@ -61,9 +61,9 @@ export default class DocumentReadyStateManager {
|
|
61
61
|
return;
|
62
62
|
}
|
63
63
|
|
64
|
-
if (this.
|
65
|
-
this.window.
|
66
|
-
this.
|
64
|
+
if (this.immediate) {
|
65
|
+
this.window.cancelAnimationFrame(this.immediate);
|
66
|
+
this.immediate = null;
|
67
67
|
}
|
68
68
|
|
69
69
|
this.totalTasks--;
|
@@ -103,7 +103,7 @@ export default class ElementNamedNodeMap extends NamedNodeMap {
|
|
103
103
|
record.type = MutationTypeEnum.attributes;
|
104
104
|
record.attributeName = item.name;
|
105
105
|
record.oldValue = observer.options.attributeOldValue ? oldValue : null;
|
106
|
-
observer.callback([record]);
|
106
|
+
observer.callback([record], observer.observer);
|
107
107
|
}
|
108
108
|
}
|
109
109
|
}
|
@@ -164,7 +164,7 @@ export default class ElementNamedNodeMap extends NamedNodeMap {
|
|
164
164
|
record.type = MutationTypeEnum.attributes;
|
165
165
|
record.attributeName = removedItem.name;
|
166
166
|
record.oldValue = observer.options.attributeOldValue ? removedItem.value : null;
|
167
|
-
observer.callback([record]);
|
167
|
+
observer.callback([record], observer.observer);
|
168
168
|
}
|
169
169
|
}
|
170
170
|
}
|
@@ -81,7 +81,7 @@ export default class NodeUtility {
|
|
81
81
|
(<Node>node)._observe(observer);
|
82
82
|
}
|
83
83
|
if (observer.options.childList) {
|
84
|
-
observer.callback([record]);
|
84
|
+
observer.callback([record], observer.observer);
|
85
85
|
}
|
86
86
|
}
|
87
87
|
}
|
@@ -121,7 +121,7 @@ export default class NodeUtility {
|
|
121
121
|
for (const observer of (<Node>ancestorNode)._observers) {
|
122
122
|
(<Node>node)._unobserve(observer);
|
123
123
|
if (observer.options.childList) {
|
124
|
-
observer.callback([record]);
|
124
|
+
observer.callback([record], observer.observer);
|
125
125
|
}
|
126
126
|
}
|
127
127
|
}
|
@@ -208,7 +208,7 @@ export default class NodeUtility {
|
|
208
208
|
(<Node>newNode)._observe(observer);
|
209
209
|
}
|
210
210
|
if (observer.options.childList) {
|
211
|
-
observer.callback([record]);
|
211
|
+
observer.callback([record], observer.observer);
|
212
212
|
}
|
213
213
|
}
|
214
214
|
}
|
package/src/window/IWindow.ts
CHANGED
@@ -492,16 +492,16 @@ export default interface IWindow extends IEventTarget, INodeJSGlobal {
|
|
492
492
|
* Mock animation frames with timeouts.
|
493
493
|
*
|
494
494
|
* @param {Function} callback Callback.
|
495
|
-
* @returns {NodeJS.Timeout}
|
495
|
+
* @returns {NodeJS.Timeout} ID.
|
496
496
|
*/
|
497
|
-
requestAnimationFrame(callback: (timestamp: number) => void): NodeJS.
|
497
|
+
requestAnimationFrame(callback: (timestamp: number) => void): NodeJS.Immediate;
|
498
498
|
|
499
499
|
/**
|
500
500
|
* Mock animation frames with timeouts.
|
501
501
|
*
|
502
|
-
* @param {NodeJS.Timeout} id
|
502
|
+
* @param {NodeJS.Timeout} id ID.
|
503
503
|
*/
|
504
|
-
cancelAnimationFrame(id: NodeJS.
|
504
|
+
cancelAnimationFrame(id: NodeJS.Immediate): void;
|
505
505
|
|
506
506
|
/**
|
507
507
|
* This method provides an easy, logical way to fetch resources asynchronously across the network.
|
package/src/window/Window.ts
CHANGED
@@ -837,12 +837,12 @@ export default class Window extends EventTarget implements IWindow {
|
|
837
837
|
*/
|
838
838
|
public setTimeout(callback: Function, delay = 0, ...args: unknown[]): NodeJS.Timeout {
|
839
839
|
const id = this._setTimeout(() => {
|
840
|
-
this.happyDOM.asyncTaskManager.endTimer(id);
|
841
840
|
if (this.happyDOM.settings.disableErrorCapturing) {
|
842
841
|
callback(...args);
|
843
842
|
} else {
|
844
843
|
WindowErrorUtility.captureError(this, () => callback(...args));
|
845
844
|
}
|
845
|
+
this.happyDOM.asyncTaskManager.endTimer(id);
|
846
846
|
}, delay);
|
847
847
|
this.happyDOM.asyncTaskManager.startTimer(id);
|
848
848
|
return id;
|
@@ -896,19 +896,29 @@ export default class Window extends EventTarget implements IWindow {
|
|
896
896
|
* Mock animation frames with timeouts.
|
897
897
|
*
|
898
898
|
* @param callback Callback.
|
899
|
-
* @returns
|
899
|
+
* @returns ID.
|
900
900
|
*/
|
901
|
-
public requestAnimationFrame(callback: (timestamp: number) => void): NodeJS.
|
902
|
-
|
901
|
+
public requestAnimationFrame(callback: (timestamp: number) => void): NodeJS.Immediate {
|
902
|
+
const id = global.setImmediate(() => {
|
903
|
+
if (this.happyDOM.settings.disableErrorCapturing) {
|
904
|
+
callback(this.performance.now());
|
905
|
+
} else {
|
906
|
+
WindowErrorUtility.captureError(this, () => callback(this.performance.now()));
|
907
|
+
}
|
908
|
+
this.happyDOM.asyncTaskManager.endImmediate(id);
|
909
|
+
});
|
910
|
+
this.happyDOM.asyncTaskManager.startImmediate(id);
|
911
|
+
return id;
|
903
912
|
}
|
904
913
|
|
905
914
|
/**
|
906
915
|
* Mock animation frames with timeouts.
|
907
916
|
*
|
908
|
-
* @param id
|
917
|
+
* @param id ID.
|
909
918
|
*/
|
910
|
-
public cancelAnimationFrame(id: NodeJS.
|
911
|
-
|
919
|
+
public cancelAnimationFrame(id: NodeJS.Immediate): void {
|
920
|
+
global.clearImmediate(id);
|
921
|
+
this.happyDOM.asyncTaskManager.endImmediate(id);
|
912
922
|
}
|
913
923
|
|
914
924
|
/**
|
@@ -921,13 +931,12 @@ export default class Window extends EventTarget implements IWindow {
|
|
921
931
|
const taskId = this.happyDOM.asyncTaskManager.startTask(() => (isAborted = true));
|
922
932
|
this._queueMicrotask(() => {
|
923
933
|
if (!isAborted) {
|
924
|
-
this.happyDOM.asyncTaskManager.endTask(taskId);
|
925
|
-
|
926
934
|
if (this.happyDOM.settings.disableErrorCapturing) {
|
927
935
|
callback();
|
928
936
|
} else {
|
929
937
|
WindowErrorUtility.captureError(this, <() => unknown>callback);
|
930
938
|
}
|
939
|
+
this.happyDOM.asyncTaskManager.endTask(taskId);
|
931
940
|
}
|
932
941
|
});
|
933
942
|
}
|