happy-dom 12.2.1 → 12.3.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.

Files changed (180) hide show
  1. package/cjs/async-task-manager/AsyncTaskManager.cjs +28 -12
  2. package/cjs/async-task-manager/AsyncTaskManager.cjs.map +1 -1
  3. package/cjs/async-task-manager/AsyncTaskManager.d.ts +1 -0
  4. package/cjs/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  5. package/cjs/event/Event.cjs +3 -9
  6. package/cjs/event/Event.cjs.map +1 -1
  7. package/cjs/event/Event.d.ts +1 -1
  8. package/cjs/event/Event.d.ts.map +1 -1
  9. package/cjs/event/UIEvent.cjs +2 -6
  10. package/cjs/event/UIEvent.cjs.map +1 -1
  11. package/cjs/event/UIEvent.d.ts +2 -2
  12. package/cjs/event/UIEvent.d.ts.map +1 -1
  13. package/cjs/event/events/AnimationEvent.cjs +4 -7
  14. package/cjs/event/events/AnimationEvent.cjs.map +1 -1
  15. package/cjs/event/events/AnimationEvent.d.ts +4 -4
  16. package/cjs/event/events/AnimationEvent.d.ts.map +1 -1
  17. package/cjs/event/events/CustomEvent.cjs +1 -4
  18. package/cjs/event/events/CustomEvent.cjs.map +1 -1
  19. package/cjs/event/events/CustomEvent.d.ts +2 -2
  20. package/cjs/event/events/CustomEvent.d.ts.map +1 -1
  21. package/cjs/event/events/ErrorEvent.cjs +5 -12
  22. package/cjs/event/events/ErrorEvent.cjs.map +1 -1
  23. package/cjs/event/events/ErrorEvent.d.ts +1 -1
  24. package/cjs/event/events/ErrorEvent.d.ts.map +1 -1
  25. package/cjs/event/events/FocusEvent.cjs +1 -4
  26. package/cjs/event/events/FocusEvent.cjs.map +1 -1
  27. package/cjs/event/events/FocusEvent.d.ts +2 -2
  28. package/cjs/event/events/FocusEvent.d.ts.map +1 -1
  29. package/cjs/event/events/IPointerEventInit.d.ts +5 -0
  30. package/cjs/event/events/IPointerEventInit.d.ts.map +1 -1
  31. package/cjs/event/events/IStorageEventInit.d.ts +2 -1
  32. package/cjs/event/events/IStorageEventInit.d.ts.map +1 -1
  33. package/cjs/event/events/InputEvent.cjs +4 -10
  34. package/cjs/event/events/InputEvent.cjs.map +1 -1
  35. package/cjs/event/events/InputEvent.d.ts +1 -1
  36. package/cjs/event/events/InputEvent.d.ts.map +1 -1
  37. package/cjs/event/events/KeyboardEvent.cjs +9 -20
  38. package/cjs/event/events/KeyboardEvent.cjs.map +1 -1
  39. package/cjs/event/events/KeyboardEvent.d.ts +1 -1
  40. package/cjs/event/events/KeyboardEvent.d.ts.map +1 -1
  41. package/cjs/event/events/MediaQueryListEvent.cjs +2 -6
  42. package/cjs/event/events/MediaQueryListEvent.cjs.map +1 -1
  43. package/cjs/event/events/MediaQueryListEvent.d.ts +1 -1
  44. package/cjs/event/events/MediaQueryListEvent.d.ts.map +1 -1
  45. package/cjs/event/events/MessageEvent.cjs +6 -11
  46. package/cjs/event/events/MessageEvent.cjs.map +1 -1
  47. package/cjs/event/events/MessageEvent.d.ts +6 -6
  48. package/cjs/event/events/MessageEvent.d.ts.map +1 -1
  49. package/cjs/event/events/MouseEvent.cjs +14 -32
  50. package/cjs/event/events/MouseEvent.cjs.map +1 -1
  51. package/cjs/event/events/MouseEvent.d.ts +2 -2
  52. package/cjs/event/events/MouseEvent.d.ts.map +1 -1
  53. package/cjs/event/events/PointerEvent.cjs +16 -23
  54. package/cjs/event/events/PointerEvent.cjs.map +1 -1
  55. package/cjs/event/events/PointerEvent.d.ts +7 -1
  56. package/cjs/event/events/PointerEvent.d.ts.map +1 -1
  57. package/cjs/event/events/ProgressEvent.cjs +3 -8
  58. package/cjs/event/events/ProgressEvent.cjs.map +1 -1
  59. package/cjs/event/events/ProgressEvent.d.ts +1 -1
  60. package/cjs/event/events/ProgressEvent.d.ts.map +1 -1
  61. package/cjs/event/events/StorageEvent.cjs +5 -10
  62. package/cjs/event/events/StorageEvent.cjs.map +1 -1
  63. package/cjs/event/events/StorageEvent.d.ts +6 -5
  64. package/cjs/event/events/StorageEvent.d.ts.map +1 -1
  65. package/cjs/event/events/SubmitEvent.cjs +1 -1
  66. package/cjs/event/events/SubmitEvent.cjs.map +1 -1
  67. package/cjs/event/events/SubmitEvent.d.ts +2 -2
  68. package/cjs/event/events/SubmitEvent.d.ts.map +1 -1
  69. package/cjs/event/events/WheelEvent.cjs +4 -10
  70. package/cjs/event/events/WheelEvent.cjs.map +1 -1
  71. package/cjs/event/events/WheelEvent.d.ts +1 -1
  72. package/cjs/event/events/WheelEvent.d.ts.map +1 -1
  73. package/cjs/version.cjs +1 -1
  74. package/cjs/window/VMGlobalPropertyScript.cjs +3 -2
  75. package/cjs/window/VMGlobalPropertyScript.cjs.map +1 -1
  76. package/cjs/window/VMGlobalPropertyScript.d.ts +3 -1
  77. package/cjs/window/VMGlobalPropertyScript.d.ts.map +1 -1
  78. package/cjs/window/Window.cjs +1 -1
  79. package/cjs/window/Window.cjs.map +1 -1
  80. package/lib/async-task-manager/AsyncTaskManager.d.ts +1 -0
  81. package/lib/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  82. package/lib/async-task-manager/AsyncTaskManager.js +28 -12
  83. package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
  84. package/lib/event/Event.d.ts +1 -1
  85. package/lib/event/Event.d.ts.map +1 -1
  86. package/lib/event/Event.js +3 -9
  87. package/lib/event/Event.js.map +1 -1
  88. package/lib/event/UIEvent.d.ts +2 -2
  89. package/lib/event/UIEvent.d.ts.map +1 -1
  90. package/lib/event/UIEvent.js +2 -6
  91. package/lib/event/UIEvent.js.map +1 -1
  92. package/lib/event/events/AnimationEvent.d.ts +4 -4
  93. package/lib/event/events/AnimationEvent.d.ts.map +1 -1
  94. package/lib/event/events/AnimationEvent.js +4 -7
  95. package/lib/event/events/AnimationEvent.js.map +1 -1
  96. package/lib/event/events/CustomEvent.d.ts +2 -2
  97. package/lib/event/events/CustomEvent.d.ts.map +1 -1
  98. package/lib/event/events/CustomEvent.js +1 -4
  99. package/lib/event/events/CustomEvent.js.map +1 -1
  100. package/lib/event/events/ErrorEvent.d.ts +1 -1
  101. package/lib/event/events/ErrorEvent.d.ts.map +1 -1
  102. package/lib/event/events/ErrorEvent.js +5 -12
  103. package/lib/event/events/ErrorEvent.js.map +1 -1
  104. package/lib/event/events/FocusEvent.d.ts +2 -2
  105. package/lib/event/events/FocusEvent.d.ts.map +1 -1
  106. package/lib/event/events/FocusEvent.js +1 -4
  107. package/lib/event/events/FocusEvent.js.map +1 -1
  108. package/lib/event/events/IPointerEventInit.d.ts +5 -0
  109. package/lib/event/events/IPointerEventInit.d.ts.map +1 -1
  110. package/lib/event/events/IStorageEventInit.d.ts +2 -1
  111. package/lib/event/events/IStorageEventInit.d.ts.map +1 -1
  112. package/lib/event/events/InputEvent.d.ts +1 -1
  113. package/lib/event/events/InputEvent.d.ts.map +1 -1
  114. package/lib/event/events/InputEvent.js +4 -10
  115. package/lib/event/events/InputEvent.js.map +1 -1
  116. package/lib/event/events/KeyboardEvent.d.ts +1 -1
  117. package/lib/event/events/KeyboardEvent.d.ts.map +1 -1
  118. package/lib/event/events/KeyboardEvent.js +9 -20
  119. package/lib/event/events/KeyboardEvent.js.map +1 -1
  120. package/lib/event/events/MediaQueryListEvent.d.ts +1 -1
  121. package/lib/event/events/MediaQueryListEvent.d.ts.map +1 -1
  122. package/lib/event/events/MediaQueryListEvent.js +2 -6
  123. package/lib/event/events/MediaQueryListEvent.js.map +1 -1
  124. package/lib/event/events/MessageEvent.d.ts +6 -6
  125. package/lib/event/events/MessageEvent.d.ts.map +1 -1
  126. package/lib/event/events/MessageEvent.js +6 -11
  127. package/lib/event/events/MessageEvent.js.map +1 -1
  128. package/lib/event/events/MouseEvent.d.ts +2 -2
  129. package/lib/event/events/MouseEvent.d.ts.map +1 -1
  130. package/lib/event/events/MouseEvent.js +14 -32
  131. package/lib/event/events/MouseEvent.js.map +1 -1
  132. package/lib/event/events/PointerEvent.d.ts +7 -1
  133. package/lib/event/events/PointerEvent.d.ts.map +1 -1
  134. package/lib/event/events/PointerEvent.js +16 -23
  135. package/lib/event/events/PointerEvent.js.map +1 -1
  136. package/lib/event/events/ProgressEvent.d.ts +1 -1
  137. package/lib/event/events/ProgressEvent.d.ts.map +1 -1
  138. package/lib/event/events/ProgressEvent.js +3 -8
  139. package/lib/event/events/ProgressEvent.js.map +1 -1
  140. package/lib/event/events/StorageEvent.d.ts +6 -5
  141. package/lib/event/events/StorageEvent.d.ts.map +1 -1
  142. package/lib/event/events/StorageEvent.js +5 -10
  143. package/lib/event/events/StorageEvent.js.map +1 -1
  144. package/lib/event/events/SubmitEvent.d.ts +2 -2
  145. package/lib/event/events/SubmitEvent.d.ts.map +1 -1
  146. package/lib/event/events/SubmitEvent.js +1 -1
  147. package/lib/event/events/SubmitEvent.js.map +1 -1
  148. package/lib/event/events/WheelEvent.d.ts +1 -1
  149. package/lib/event/events/WheelEvent.d.ts.map +1 -1
  150. package/lib/event/events/WheelEvent.js +4 -10
  151. package/lib/event/events/WheelEvent.js.map +1 -1
  152. package/lib/version.js +1 -1
  153. package/lib/window/VMGlobalPropertyScript.d.ts +3 -1
  154. package/lib/window/VMGlobalPropertyScript.d.ts.map +1 -1
  155. package/lib/window/VMGlobalPropertyScript.js +3 -2
  156. package/lib/window/VMGlobalPropertyScript.js.map +1 -1
  157. package/lib/window/Window.js +1 -1
  158. package/lib/window/Window.js.map +1 -1
  159. package/package.json +1 -1
  160. package/src/async-task-manager/AsyncTaskManager.ts +28 -11
  161. package/src/event/Event.ts +8 -10
  162. package/src/event/UIEvent.ts +5 -7
  163. package/src/event/events/AnimationEvent.ts +8 -7
  164. package/src/event/events/CustomEvent.ts +4 -5
  165. package/src/event/events/ErrorEvent.ts +11 -13
  166. package/src/event/events/FocusEvent.ts +3 -5
  167. package/src/event/events/IPointerEventInit.ts +5 -0
  168. package/src/event/events/IStorageEventInit.ts +2 -1
  169. package/src/event/events/InputEvent.ts +9 -11
  170. package/src/event/events/KeyboardEvent.ts +19 -21
  171. package/src/event/events/MediaQueryListEvent.ts +5 -7
  172. package/src/event/events/MessageEvent.ts +12 -11
  173. package/src/event/events/MouseEvent.ts +31 -33
  174. package/src/event/events/PointerEvent.ts +33 -24
  175. package/src/event/events/ProgressEvent.ts +7 -9
  176. package/src/event/events/StorageEvent.ts +11 -11
  177. package/src/event/events/SubmitEvent.ts +3 -3
  178. package/src/event/events/WheelEvent.ts +9 -11
  179. package/src/window/VMGlobalPropertyScript.ts +4 -2
  180. package/src/window/Window.ts +1 -1
@@ -6,6 +6,7 @@ export default class AsyncTaskManager {
6
6
  private runningTasks: { [k: string]: () => void } = {};
7
7
  private runningTimers: NodeJS.Timeout[] = [];
8
8
  private callbacks: Array<() => void> = [];
9
+ private callbackTimeout: NodeJS.Timeout | null = null;
9
10
 
10
11
  /**
11
12
  * Returns a promise that is fulfilled when async tasks are complete.
@@ -36,6 +37,10 @@ export default class AsyncTaskManager {
36
37
  */
37
38
  public startTimer(timerID: NodeJS.Timeout): void {
38
39
  this.runningTimers.push(timerID);
40
+ if (this.callbackTimeout) {
41
+ global.clearTimeout(this.callbackTimeout);
42
+ this.callbackTimeout = null;
43
+ }
39
44
  }
40
45
 
41
46
  /**
@@ -48,6 +53,10 @@ export default class AsyncTaskManager {
48
53
  if (index !== -1) {
49
54
  this.runningTimers.splice(index, 1);
50
55
  }
56
+ if (this.callbackTimeout) {
57
+ global.clearTimeout(this.callbackTimeout);
58
+ this.callbackTimeout = null;
59
+ }
51
60
  if (!Object.keys(this.runningTasks).length && !this.runningTimers.length) {
52
61
  this.endAll();
53
62
  }
@@ -62,6 +71,10 @@ export default class AsyncTaskManager {
62
71
  public startTask(abortHandler?: () => void): number {
63
72
  const taskID = this.newTaskID();
64
73
  this.runningTasks[taskID] = abortHandler ? abortHandler : () => {};
74
+ if (this.callbackTimeout) {
75
+ global.clearTimeout(this.callbackTimeout);
76
+ this.callbackTimeout = null;
77
+ }
65
78
  return taskID;
66
79
  }
67
80
 
@@ -74,6 +87,10 @@ export default class AsyncTaskManager {
74
87
  if (this.runningTasks[taskID]) {
75
88
  delete this.runningTasks[taskID];
76
89
  }
90
+ if (this.callbackTimeout) {
91
+ global.clearTimeout(this.callbackTimeout);
92
+ this.callbackTimeout = null;
93
+ }
77
94
  if (!Object.keys(this.runningTasks).length && !this.runningTimers.length) {
78
95
  this.endAll();
79
96
  }
@@ -118,6 +135,10 @@ export default class AsyncTaskManager {
118
135
  runningTasks[key]();
119
136
  }
120
137
 
138
+ if (this.callbackTimeout) {
139
+ global.clearTimeout(this.callbackTimeout);
140
+ this.callbackTimeout = null;
141
+ }
121
142
  if (this.callbacks.length) {
122
143
  if (canceled) {
123
144
  const callbacks = this.callbacks;
@@ -126,19 +147,15 @@ export default class AsyncTaskManager {
126
147
  callback();
127
148
  }
128
149
  } else {
129
- const timerID = global.setTimeout(() => {
130
- if (!Object.keys(this.runningTasks).length && this.runningTimers.length === 1) {
131
- const callbacks = this.callbacks;
132
- this.callbacks = [];
133
- this.runningTimers = [];
134
- for (const callback of callbacks) {
135
- callback();
136
- }
137
- } else {
138
- this.endTimer(timerID);
150
+ this.callbackTimeout = global.setTimeout(() => {
151
+ const callbacks = this.callbacks;
152
+ this.callbackTimeout = null;
153
+ this.callbacks = [];
154
+ this.runningTimers = [];
155
+ for (const callback of callbacks) {
156
+ callback();
139
157
  }
140
158
  }, 10);
141
- this.startTimer(timerID);
142
159
  }
143
160
  }
144
161
  }
@@ -12,9 +12,9 @@ import IDocument from '../nodes/document/IDocument.js';
12
12
  * Event.
13
13
  */
14
14
  export default class Event {
15
- public composed = false;
16
- public bubbles = false;
17
- public cancelable = false;
15
+ public composed: boolean;
16
+ public bubbles: boolean;
17
+ public cancelable: boolean;
18
18
  public defaultPrevented = false;
19
19
  public eventPhase: EventPhaseEnum = EventPhaseEnum.none;
20
20
  public _immediatePropagationStopped = false;
@@ -22,7 +22,7 @@ export default class Event {
22
22
  public _target: IEventTarget = null;
23
23
  public _currentTarget: IEventTarget = null;
24
24
  public timeStamp: number = performance.now();
25
- public type: string = null;
25
+ public type: string;
26
26
  public _isInPassiveEventListener = false;
27
27
  public NONE = EventPhaseEnum.none;
28
28
  public CAPTURING_PHASE = EventPhaseEnum.capturing;
@@ -35,14 +35,12 @@ export default class Event {
35
35
  * @param type Event type.
36
36
  * @param [eventInit] Event init.
37
37
  */
38
- constructor(type: string, eventInit: IEventInit = null) {
38
+ constructor(type: string, eventInit: IEventInit | null = null) {
39
39
  this.type = type;
40
40
 
41
- if (eventInit) {
42
- this.bubbles = eventInit.bubbles || false;
43
- this.cancelable = eventInit.cancelable || false;
44
- this.composed = eventInit.composed || false;
45
- }
41
+ this.bubbles = eventInit?.bubbles ?? false;
42
+ this.cancelable = eventInit?.cancelable ?? false;
43
+ this.composed = eventInit?.composed ?? false;
46
44
  }
47
45
 
48
46
  /**
@@ -10,12 +10,12 @@ export default class UIEvent extends Event {
10
10
  public static CAPTURING_PHASE = 1;
11
11
  public static AT_TARGET = 2;
12
12
  public static BUBBLING_PHASE = 3;
13
- public readonly detail: number = 0;
13
+ public readonly detail: number;
14
14
  public readonly layerX: number = 0;
15
15
  public readonly layerY: number = 0;
16
16
  public readonly pageX: number = 0;
17
17
  public readonly pageY: number = 0;
18
- public readonly view: IWindow = null;
18
+ public readonly view: IWindow | null;
19
19
 
20
20
  /**
21
21
  * Constructor.
@@ -23,12 +23,10 @@ export default class UIEvent extends Event {
23
23
  * @param type Event type.
24
24
  * @param [eventInit] Event init.
25
25
  */
26
- constructor(type: string, eventInit: IUIEventInit = null) {
26
+ constructor(type: string, eventInit: IUIEventInit | null = null) {
27
27
  super(type, eventInit);
28
28
 
29
- if (eventInit) {
30
- this.detail = eventInit.detail !== undefined ? eventInit.detail : 0;
31
- this.view = eventInit.view || null;
32
- }
29
+ this.detail = eventInit?.detail ?? 0;
30
+ this.view = eventInit?.view ?? null;
33
31
  }
34
32
  }
@@ -5,9 +5,9 @@ import IAnimationEventInit from './IAnimationEventInit.js';
5
5
  *
6
6
  */
7
7
  export default class AnimationEvent extends Event {
8
- public animationName = '';
9
- public elapsedTime = 0;
10
- public pseudoElement = '';
8
+ public readonly animationName: string;
9
+ public readonly elapsedTime: number;
10
+ public readonly pseudoElement: string;
11
11
 
12
12
  /**
13
13
  * Constructor.
@@ -15,10 +15,11 @@ export default class AnimationEvent extends Event {
15
15
  * @param type Event type.
16
16
  * @param [eventInit] Event init.
17
17
  */
18
- constructor(type: string, eventInit?: IAnimationEventInit) {
18
+ constructor(type: string, eventInit: IAnimationEventInit | null = null) {
19
19
  super(type, eventInit);
20
- this.animationName = eventInit?.animationName || '';
21
- this.elapsedTime = eventInit?.elapsedTime || 0;
22
- this.pseudoElement = eventInit?.pseudoElement || '';
20
+
21
+ this.animationName = eventInit?.animationName ?? '';
22
+ this.elapsedTime = eventInit?.elapsedTime ?? 0;
23
+ this.pseudoElement = eventInit?.pseudoElement ?? '';
23
24
  }
24
25
  }
@@ -5,7 +5,8 @@ import ICustomEventInit from './ICustomEventInit.js';
5
5
  *
6
6
  */
7
7
  export default class CustomEvent extends Event {
8
- public detail: object = null;
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ public detail: any;
9
10
 
10
11
  /**
11
12
  * Constructor.
@@ -13,12 +14,10 @@ export default class CustomEvent extends Event {
13
14
  * @param type Event type.
14
15
  * @param [eventInit] Event init.
15
16
  */
16
- constructor(type: string, eventInit: ICustomEventInit = null) {
17
+ constructor(type: string, eventInit: ICustomEventInit | null = null) {
17
18
  super(type, eventInit);
18
19
 
19
- if (eventInit) {
20
- this.detail = eventInit.detail !== undefined ? eventInit.detail : null;
21
- }
20
+ this.detail = eventInit?.detail ?? null;
22
21
  }
23
22
 
24
23
  /**
@@ -5,11 +5,11 @@ import IErrorEventInit from './IErrorEventInit.js';
5
5
  *
6
6
  */
7
7
  export default class ErrorEvent extends UIEvent {
8
- public readonly message: string = '';
9
- public readonly filename: string = '';
10
- public readonly lineno: number = 0;
11
- public readonly colno: number = 0;
12
- public readonly error: Error | null = null;
8
+ public readonly message: string;
9
+ public readonly filename: string;
10
+ public readonly lineno: number;
11
+ public readonly colno: number;
12
+ public readonly error: Error | null;
13
13
 
14
14
  /**
15
15
  * Constructor.
@@ -17,15 +17,13 @@ export default class ErrorEvent extends UIEvent {
17
17
  * @param type Event type.
18
18
  * @param [eventInit] Event init.
19
19
  */
20
- constructor(type: string, eventInit: IErrorEventInit = null) {
20
+ constructor(type: string, eventInit: IErrorEventInit | null = null) {
21
21
  super(type, eventInit);
22
22
 
23
- if (eventInit) {
24
- this.message = eventInit.message || '';
25
- this.filename = eventInit.filename || '';
26
- this.lineno = eventInit.lineno !== undefined ? eventInit.lineno : 0;
27
- this.colno = eventInit.colno !== undefined ? eventInit.colno : 0;
28
- this.error = eventInit.error || null;
29
- }
23
+ this.message = eventInit?.message ?? '';
24
+ this.filename = eventInit?.filename ?? '';
25
+ this.lineno = eventInit?.lineno ?? 0;
26
+ this.colno = eventInit?.colno ?? 0;
27
+ this.error = eventInit?.error ?? null;
30
28
  }
31
29
  }
@@ -6,7 +6,7 @@ import IFocusEventInit from './IFocusEventInit.js';
6
6
  *
7
7
  */
8
8
  export default class FocusEvent extends UIEvent {
9
- public readonly relatedTarget: EventTarget = null;
9
+ public readonly relatedTarget: EventTarget | null;
10
10
 
11
11
  /**
12
12
  * Constructor.
@@ -14,11 +14,9 @@ export default class FocusEvent extends UIEvent {
14
14
  * @param type Event type.
15
15
  * @param [eventInit] Event init.
16
16
  */
17
- constructor(type: string, eventInit: IFocusEventInit = null) {
17
+ constructor(type: string, eventInit: IFocusEventInit | null = null) {
18
18
  super(type, eventInit);
19
19
 
20
- if (eventInit) {
21
- this.relatedTarget = eventInit.relatedTarget || null;
22
- }
20
+ this.relatedTarget = eventInit?.relatedTarget ?? null;
23
21
  }
24
22
  }
@@ -1,4 +1,5 @@
1
1
  import IMouseEventInit from './IMouseEventInit.js';
2
+ import PointerEvent from './PointerEvent.js';
2
3
 
3
4
  export default interface IPointerEventInit extends IMouseEventInit {
4
5
  pointerId?: number;
@@ -9,6 +10,10 @@ export default interface IPointerEventInit extends IMouseEventInit {
9
10
  tiltX?: number;
10
11
  tiltY?: number;
11
12
  twist?: number;
13
+ altitudeAngle?: number;
14
+ azimuthAngle?: number;
12
15
  pointerType?: string;
13
16
  isPrimary?: boolean;
17
+ coalescedEvents?: PointerEvent[];
18
+ predictedEvents?: PointerEvent[];
14
19
  }
@@ -3,7 +3,8 @@ import Storage from '../../storage/Storage.js';
3
3
 
4
4
  export default interface IStorageEventInit extends IEventInit {
5
5
  key?: string;
6
- newValue?: string;
7
6
  oldValue?: string;
7
+ newValue?: string;
8
+ url?: string;
8
9
  storageArea?: Storage;
9
10
  }
@@ -6,10 +6,10 @@ import IInputEventInit from './IInputEventInit.js';
6
6
  *
7
7
  */
8
8
  export default class InputEvent extends UIEvent {
9
- public readonly data: string = '';
10
- public readonly dataTransfer: DataTransfer = null;
11
- public readonly inputType: string = '';
12
- public readonly isComposing: boolean = false;
9
+ public readonly data: string;
10
+ public readonly dataTransfer: DataTransfer;
11
+ public readonly inputType: string;
12
+ public readonly isComposing: boolean;
13
13
 
14
14
  /**
15
15
  * Constructor.
@@ -17,14 +17,12 @@ export default class InputEvent extends UIEvent {
17
17
  * @param type Event type.
18
18
  * @param [eventInit] Event init.
19
19
  */
20
- constructor(type: string, eventInit: IInputEventInit = null) {
20
+ constructor(type: string, eventInit: IInputEventInit | null = null) {
21
21
  super(type, eventInit);
22
22
 
23
- if (eventInit) {
24
- this.data = eventInit.data || '';
25
- this.dataTransfer = eventInit.dataTransfer || null;
26
- this.inputType = eventInit.inputType || '';
27
- this.isComposing = eventInit.isComposing || false;
28
- }
23
+ this.data = eventInit?.data ?? '';
24
+ this.dataTransfer = eventInit?.dataTransfer ?? null;
25
+ this.inputType = eventInit?.inputType ?? '';
26
+ this.isComposing = eventInit?.isComposing ?? false;
29
27
  }
30
28
  }
@@ -9,15 +9,15 @@ export default class KeyboardEvent extends UIEvent {
9
9
  public static DOM_KEY_LOCATION_LEFT = 1;
10
10
  public static DOM_KEY_LOCATION_RIGHT = 2;
11
11
  public static DOM_KEY_LOCATION_NUMPAD = 3;
12
- public readonly altKey: boolean = false;
13
- public readonly code: string = '';
14
- public readonly ctrlKey: boolean = false;
15
- public readonly isComposing: boolean = false;
16
- public readonly key: string = '';
17
- public readonly location: number = 0;
18
- public readonly metaKey: boolean = false;
19
- public readonly repeat: boolean = false;
20
- public readonly shiftKey: boolean = false;
12
+ public readonly altKey: boolean;
13
+ public readonly code: string;
14
+ public readonly ctrlKey: boolean;
15
+ public readonly isComposing: boolean;
16
+ public readonly key: string;
17
+ public readonly location: number;
18
+ public readonly metaKey: boolean;
19
+ public readonly repeat: boolean;
20
+ public readonly shiftKey: boolean;
21
21
 
22
22
  /**
23
23
  * Constructor.
@@ -25,19 +25,17 @@ export default class KeyboardEvent extends UIEvent {
25
25
  * @param type Event type.
26
26
  * @param [eventInit] Event init.
27
27
  */
28
- constructor(type: string, eventInit: IKeyboardEventInit = null) {
28
+ constructor(type: string, eventInit: IKeyboardEventInit | null = null) {
29
29
  super(type, eventInit);
30
30
 
31
- if (eventInit) {
32
- this.altKey = eventInit.altKey || false;
33
- this.code = eventInit.code || '';
34
- this.ctrlKey = eventInit.ctrlKey || false;
35
- this.isComposing = eventInit.isComposing || false;
36
- this.key = eventInit.key || '';
37
- this.location = eventInit.location !== undefined ? eventInit.location : 0;
38
- this.metaKey = eventInit.metaKey || false;
39
- this.repeat = eventInit.repeat || false;
40
- this.shiftKey = eventInit.shiftKey || false;
41
- }
31
+ this.altKey = eventInit?.altKey ?? false;
32
+ this.code = eventInit?.code ?? '';
33
+ this.ctrlKey = eventInit?.ctrlKey ?? false;
34
+ this.isComposing = eventInit?.isComposing ?? false;
35
+ this.key = eventInit?.key ?? '';
36
+ this.location = eventInit?.location ?? 0;
37
+ this.metaKey = eventInit?.metaKey ?? false;
38
+ this.repeat = eventInit?.repeat ?? false;
39
+ this.shiftKey = eventInit?.shiftKey ?? false;
42
40
  }
43
41
  }
@@ -5,8 +5,8 @@ import IMediaQueryListInit from './IMediaQueryListInit.js';
5
5
  *
6
6
  */
7
7
  export default class MediaQueryListEvent extends Event {
8
- public readonly matches: boolean = false;
9
- public readonly media: string = '';
8
+ public readonly matches: boolean;
9
+ public readonly media: string;
10
10
 
11
11
  /**
12
12
  * Constructor.
@@ -14,12 +14,10 @@ export default class MediaQueryListEvent extends Event {
14
14
  * @param type Event type.
15
15
  * @param [eventInit] Event init.
16
16
  */
17
- constructor(type: string, eventInit: IMediaQueryListInit = null) {
17
+ constructor(type: string, eventInit: IMediaQueryListInit | null = null) {
18
18
  super(type, eventInit);
19
19
 
20
- if (eventInit) {
21
- this.matches = eventInit.matches || false;
22
- this.media = eventInit.media || '';
23
- }
20
+ this.matches = eventInit?.matches ?? false;
21
+ this.media = eventInit?.media ?? '';
24
22
  }
25
23
  }
@@ -9,11 +9,11 @@ import IMessageEventInit from './IMessageEventInit.js';
9
9
  * @see https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent
10
10
  */
11
11
  export default class MessageEvent extends Event {
12
- public data?: unknown | null = null;
13
- public origin?: string = '';
14
- public lastEventId?: string = '';
15
- public source?: IWindow | null = null;
16
- public ports?: IMessagePort[] = [];
12
+ public readonly data: unknown | null;
13
+ public readonly origin: string;
14
+ public readonly lastEventId: string;
15
+ public readonly source: IWindow | null;
16
+ public readonly ports: IMessagePort[];
17
17
 
18
18
  /**
19
19
  * Constructor.
@@ -21,12 +21,13 @@ export default class MessageEvent extends Event {
21
21
  * @param type Event type.
22
22
  * @param [eventInit] Event init.
23
23
  */
24
- constructor(type: string, eventInit?: IMessageEventInit) {
24
+ constructor(type: string, eventInit: IMessageEventInit | null = null) {
25
25
  super(type, eventInit);
26
- this.data = eventInit?.data !== undefined ? eventInit.data : null;
27
- this.origin = eventInit?.origin || '';
28
- this.lastEventId = eventInit?.lastEventId || '';
29
- this.source = eventInit?.source || null;
30
- this.ports = eventInit?.ports || [];
26
+
27
+ this.data = eventInit?.data ?? null;
28
+ this.origin = eventInit?.origin ?? '';
29
+ this.lastEventId = eventInit?.lastEventId ?? '';
30
+ this.source = eventInit?.source ?? null;
31
+ this.ports = eventInit?.ports ?? [];
31
32
  }
32
33
  }
@@ -6,22 +6,22 @@ import IMouseEventInit from './IMouseEventInit.js';
6
6
  *
7
7
  */
8
8
  export default class MouseEvent extends UIEvent {
9
- public readonly altKey: boolean = false;
10
- public readonly button: number = 0;
11
- public readonly buttons: number = 0;
12
- public readonly clientX: number = 0;
13
- public readonly clientY: number = 0;
14
- public readonly ctrlKey: boolean = false;
15
- public readonly metaKey: boolean = false;
16
- public readonly movementX: number = 0;
17
- public readonly movementY: number = 0;
18
- public readonly offsetX: number = 0;
19
- public readonly offsetY: number = 0;
20
- public readonly region: string = '';
21
- public readonly relatedTarget: EventTarget = null;
22
- public readonly screenX: number = 0;
23
- public readonly screenY: number = 0;
24
- public readonly shiftKey: boolean = false;
9
+ public readonly altKey: boolean;
10
+ public readonly button: number;
11
+ public readonly buttons: number;
12
+ public readonly clientX: number;
13
+ public readonly clientY: number;
14
+ public readonly ctrlKey: boolean;
15
+ public readonly metaKey: boolean;
16
+ public readonly movementX: number;
17
+ public readonly movementY: number;
18
+ public readonly offsetX: number;
19
+ public readonly offsetY: number;
20
+ public readonly region: string;
21
+ public readonly relatedTarget: EventTarget | null;
22
+ public readonly screenX: number;
23
+ public readonly screenY: number;
24
+ public readonly shiftKey: boolean;
25
25
 
26
26
  /**
27
27
  * Constructor.
@@ -29,24 +29,22 @@ export default class MouseEvent extends UIEvent {
29
29
  * @param type Event type.
30
30
  * @param [eventInit] Event init.
31
31
  */
32
- constructor(type: string, eventInit: IMouseEventInit = null) {
32
+ constructor(type: string, eventInit: IMouseEventInit | null = null) {
33
33
  super(type, eventInit);
34
34
 
35
- if (eventInit) {
36
- this.altKey = eventInit.altKey || false;
37
- this.button = eventInit.button !== undefined ? eventInit.button : 0;
38
- this.buttons = eventInit.buttons !== undefined ? eventInit.buttons : 0;
39
- this.clientX = eventInit.clientX !== undefined ? eventInit.clientX : 0;
40
- this.clientY = eventInit.clientY !== undefined ? eventInit.clientY : 0;
41
- this.ctrlKey = eventInit.ctrlKey || false;
42
- this.metaKey = eventInit.metaKey || false;
43
- this.movementX = eventInit.movementX || 0;
44
- this.movementY = eventInit.movementY || 0;
45
- this.region = eventInit.region || '';
46
- this.relatedTarget = eventInit.relatedTarget || null;
47
- this.screenX = eventInit.screenX !== undefined ? eventInit.screenX : 0;
48
- this.screenY = eventInit.screenY !== undefined ? eventInit.screenY : 0;
49
- this.shiftKey = eventInit.shiftKey || false;
50
- }
35
+ this.altKey = eventInit?.altKey ?? false;
36
+ this.button = eventInit?.button ?? 0;
37
+ this.buttons = eventInit?.buttons ?? 0;
38
+ this.clientX = eventInit?.clientX ?? 0;
39
+ this.clientY = eventInit?.clientY ?? 0;
40
+ this.ctrlKey = eventInit?.ctrlKey ?? false;
41
+ this.metaKey = eventInit?.metaKey ?? false;
42
+ this.movementX = eventInit?.movementX ?? 0;
43
+ this.movementY = eventInit?.movementY ?? 0;
44
+ this.region = eventInit?.region ?? '';
45
+ this.relatedTarget = eventInit?.relatedTarget ?? null;
46
+ this.screenX = eventInit?.screenX ?? 0;
47
+ this.screenY = eventInit?.screenY ?? 0;
48
+ this.shiftKey = eventInit?.shiftKey ?? false;
51
49
  }
52
50
  }
@@ -5,16 +5,20 @@ import IPointerEventInit from './IPointerEventInit.js';
5
5
  *
6
6
  */
7
7
  export default class PointerEvent extends MouseEvent {
8
- public readonly pointerId: number = 0;
9
- public readonly width: number = 0;
10
- public readonly height: number = 0;
11
- public readonly pressure: number = 0;
12
- public readonly tangentialPressure: number = 0;
13
- public readonly tiltX: number = 0;
14
- public readonly tiltY: number = 0;
15
- public readonly twist: number = 0;
16
- public readonly pointerType: string = '';
17
- public readonly isPrimary: boolean = false;
8
+ public readonly pointerId: number;
9
+ public readonly width: number;
10
+ public readonly height: number;
11
+ public readonly pressure: number;
12
+ public readonly tangentialPressure: number;
13
+ public readonly tiltX: number;
14
+ public readonly tiltY: number;
15
+ public readonly twist: number;
16
+ public readonly altitudeAngle: number;
17
+ public readonly azimuthAngle: number;
18
+ public readonly pointerType: string;
19
+ public readonly isPrimary: boolean;
20
+ public readonly coalescedEvents: PointerEvent[];
21
+ public readonly predictedEvents: PointerEvent[];
18
22
 
19
23
  /**
20
24
  * Constructor.
@@ -22,21 +26,26 @@ export default class PointerEvent extends MouseEvent {
22
26
  * @param type Event type.
23
27
  * @param [eventInit] Event init.
24
28
  */
25
- constructor(type: string, eventInit: IPointerEventInit = null) {
29
+ constructor(type: string, eventInit: IPointerEventInit | null = null) {
26
30
  super(type, eventInit);
27
31
 
28
- if (eventInit) {
29
- this.pointerId = eventInit.pointerId !== undefined ? eventInit.pointerId : 0;
30
- this.width = eventInit.width !== undefined ? eventInit.width : 0;
31
- this.height = eventInit.height !== undefined ? eventInit.height : 0;
32
- this.pressure = eventInit.pressure !== undefined ? eventInit.pressure : 0;
33
- this.tangentialPressure =
34
- eventInit.tangentialPressure !== undefined ? eventInit.tangentialPressure : 0;
35
- this.tiltX = eventInit.tiltX !== undefined ? eventInit.tiltX : 0;
36
- this.tiltY = eventInit.tiltY !== undefined ? eventInit.tiltY : 0;
37
- this.twist = eventInit.twist !== undefined ? eventInit.twist : 0;
38
- this.pointerType = eventInit.pointerType !== undefined ? eventInit.pointerType : '';
39
- this.isPrimary = eventInit.isPrimary || eventInit.isPrimary;
40
- }
32
+ this.pointerId = eventInit?.pointerId ?? 0;
33
+ this.width = eventInit?.width ?? 1;
34
+ this.height = eventInit?.height ?? 1;
35
+ this.pressure = eventInit?.pressure ?? 0;
36
+ this.tangentialPressure = eventInit?.tangentialPressure ?? 0;
37
+ this.tiltX = eventInit?.tiltX ?? 0;
38
+ this.tiltY = eventInit?.tiltY ?? 0;
39
+ this.twist = eventInit?.twist ?? 0;
40
+ this.altitudeAngle = eventInit?.altitudeAngle ?? 0;
41
+ this.azimuthAngle = eventInit?.azimuthAngle ?? 0;
42
+ this.pointerType = eventInit?.pointerType ?? '';
43
+ this.isPrimary = eventInit?.isPrimary ?? false;
44
+ this.coalescedEvents = eventInit?.coalescedEvents ?? [];
45
+ this.predictedEvents = eventInit?.predictedEvents ?? [];
41
46
  }
47
+
48
+ public getCoalescedEvents = (): PointerEvent[] => this.coalescedEvents;
49
+
50
+ public getPredictedEvents = (): PointerEvent[] => this.predictedEvents;
42
51
  }
@@ -5,9 +5,9 @@ import IProgressEventInit from './IProgressEventInit.js';
5
5
  *
6
6
  */
7
7
  export default class ProgressEvent extends Event {
8
- public readonly lengthComputable: boolean = false;
9
- public readonly loaded: number = 0;
10
- public readonly total: number = 0;
8
+ public readonly lengthComputable: boolean;
9
+ public readonly loaded: number;
10
+ public readonly total: number;
11
11
 
12
12
  /**
13
13
  * Constructor.
@@ -15,13 +15,11 @@ export default class ProgressEvent extends Event {
15
15
  * @param type Event type.
16
16
  * @param [eventInit] Event init.
17
17
  */
18
- constructor(type: string, eventInit: IProgressEventInit = null) {
18
+ constructor(type: string, eventInit: IProgressEventInit | null = null) {
19
19
  super(type);
20
20
 
21
- if (eventInit) {
22
- this.lengthComputable = eventInit.lengthComputable || false;
23
- this.loaded = eventInit.loaded !== undefined ? eventInit.loaded : 0;
24
- this.total = eventInit.total !== undefined ? eventInit.total : 0;
25
- }
21
+ this.lengthComputable = eventInit?.lengthComputable ?? false;
22
+ this.loaded = eventInit?.loaded ?? 0;
23
+ this.total = eventInit?.total ?? 0;
26
24
  }
27
25
  }