@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.4.2 → 0.4.3

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.
Files changed (188) hide show
  1. package/dist/commonjs/AFK/AFKController.js.map +1 -1
  2. package/dist/commonjs/Config/Config.js +14 -6
  3. package/dist/commonjs/Config/Config.js.map +1 -1
  4. package/dist/commonjs/Config/SettingBase.js.map +1 -1
  5. package/dist/commonjs/Config/SettingFlag.js.map +1 -1
  6. package/dist/commonjs/Config/SettingNumber.js.map +1 -1
  7. package/dist/commonjs/Config/SettingOption.js.map +1 -1
  8. package/dist/commonjs/Config/SettingText.js.map +1 -1
  9. package/dist/commonjs/DataChannel/DataChannelController.js.map +1 -1
  10. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js.map +1 -1
  11. package/dist/commonjs/DataChannel/DataChannelSender.js.map +1 -1
  12. package/dist/commonjs/DataChannel/InitialSettings.js.map +1 -1
  13. package/dist/commonjs/DataChannel/LatencyTestResults.js.map +1 -1
  14. package/dist/commonjs/FreezeFrame/FreezeFrame.js.map +1 -1
  15. package/dist/commonjs/FreezeFrame/FreezeFrameController.js.map +1 -1
  16. package/dist/commonjs/Inputs/GamepadController.js +1 -1
  17. package/dist/commonjs/Inputs/GamepadController.js.map +1 -1
  18. package/dist/commonjs/Inputs/GamepadTypes.js +1 -2
  19. package/dist/commonjs/Inputs/GamepadTypes.js.map +1 -1
  20. package/dist/commonjs/Inputs/InputClassesFactory.js.map +1 -1
  21. package/dist/commonjs/Inputs/KeyboardController.js.map +1 -1
  22. package/dist/commonjs/Inputs/MouseController.js.map +1 -1
  23. package/dist/commonjs/Inputs/MouseControllerHovering.js.map +1 -1
  24. package/dist/commonjs/Inputs/MouseControllerLocked.js.map +1 -1
  25. package/dist/commonjs/Inputs/TouchController.js.map +1 -1
  26. package/dist/commonjs/Inputs/TouchControllerFake.js.map +1 -1
  27. package/dist/commonjs/Inputs/XRGamepadController.js.map +1 -1
  28. package/dist/commonjs/PeerConnectionController/AggregatedStats.js.map +1 -1
  29. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +4 -4
  30. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js.map +1 -1
  31. package/dist/commonjs/PixelStreaming/PixelStreaming.js.map +1 -1
  32. package/dist/commonjs/UI/OnScreenKeyboard.js.map +1 -1
  33. package/dist/commonjs/UeInstanceMessage/SendMessageController.js +1 -0
  34. package/dist/commonjs/UeInstanceMessage/SendMessageController.js.map +1 -1
  35. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +1 -1
  36. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js.map +1 -1
  37. package/dist/commonjs/Util/EventEmitter.js.map +1 -1
  38. package/dist/commonjs/Util/FileUtil.js.map +1 -1
  39. package/dist/commonjs/Util/IURLSearchParams.js.map +1 -1
  40. package/dist/commonjs/Util/InputCoordTranslator.js.map +1 -1
  41. package/dist/commonjs/VideoPlayer/StreamController.js.map +1 -1
  42. package/dist/commonjs/VideoPlayer/VideoPlayer.js.map +1 -1
  43. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +60 -1
  44. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
  45. package/dist/commonjs/WebXR/WebXRController.js +2 -2
  46. package/dist/commonjs/WebXR/WebXRController.js.map +1 -1
  47. package/dist/commonjs/pixelstreamingfrontend.js +5 -1
  48. package/dist/commonjs/pixelstreamingfrontend.js.map +1 -1
  49. package/dist/esm/AFK/AFKController.js +20 -16
  50. package/dist/esm/AFK/AFKController.js.map +1 -1
  51. package/dist/esm/Config/Config.js +80 -64
  52. package/dist/esm/Config/Config.js.map +1 -1
  53. package/dist/esm/Config/SettingBase.js +5 -1
  54. package/dist/esm/Config/SettingBase.js.map +1 -1
  55. package/dist/esm/Config/SettingFlag.js +6 -2
  56. package/dist/esm/Config/SettingFlag.js.map +1 -1
  57. package/dist/esm/Config/SettingNumber.js +6 -2
  58. package/dist/esm/Config/SettingNumber.js.map +1 -1
  59. package/dist/esm/Config/SettingOption.js +8 -4
  60. package/dist/esm/Config/SettingOption.js.map +1 -1
  61. package/dist/esm/Config/SettingText.js +6 -2
  62. package/dist/esm/Config/SettingText.js.map +1 -1
  63. package/dist/esm/DataChannel/DataChannelController.js +10 -6
  64. package/dist/esm/DataChannel/DataChannelController.js.map +1 -1
  65. package/dist/esm/DataChannel/DataChannelLatencyTestController.js +9 -5
  66. package/dist/esm/DataChannel/DataChannelLatencyTestController.js.map +1 -1
  67. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +5 -1
  68. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js.map +1 -1
  69. package/dist/esm/DataChannel/DataChannelSender.js +8 -4
  70. package/dist/esm/DataChannel/DataChannelSender.js.map +1 -1
  71. package/dist/esm/DataChannel/InitialSettings.js +11 -4
  72. package/dist/esm/DataChannel/InitialSettings.js.map +1 -1
  73. package/dist/esm/DataChannel/LatencyTestResults.js +8 -4
  74. package/dist/esm/DataChannel/LatencyTestResults.js.map +1 -1
  75. package/dist/esm/FreezeFrame/FreezeFrame.js +5 -1
  76. package/dist/esm/FreezeFrame/FreezeFrame.js.map +1 -1
  77. package/dist/esm/FreezeFrame/FreezeFrameController.js +11 -7
  78. package/dist/esm/FreezeFrame/FreezeFrameController.js.map +1 -1
  79. package/dist/esm/Inputs/GamepadController.js +11 -7
  80. package/dist/esm/Inputs/GamepadController.js.map +1 -1
  81. package/dist/esm/Inputs/GamepadTypes.js +4 -1
  82. package/dist/esm/Inputs/GamepadTypes.js.map +1 -1
  83. package/dist/esm/Inputs/IInputController.js +2 -1
  84. package/dist/esm/Inputs/InputClassesFactory.js +26 -21
  85. package/dist/esm/Inputs/InputClassesFactory.js.map +1 -1
  86. package/dist/esm/Inputs/KeyCodes.js +4 -1
  87. package/dist/esm/Inputs/KeyCodes.js.map +1 -1
  88. package/dist/esm/Inputs/KeyboardController.js +22 -18
  89. package/dist/esm/Inputs/KeyboardController.js.map +1 -1
  90. package/dist/esm/Inputs/MouseButtons.js +7 -2
  91. package/dist/esm/Inputs/MouseButtons.js.map +1 -1
  92. package/dist/esm/Inputs/MouseController.js +26 -22
  93. package/dist/esm/Inputs/MouseController.js.map +1 -1
  94. package/dist/esm/Inputs/MouseControllerHovering.js +6 -2
  95. package/dist/esm/Inputs/MouseControllerHovering.js.map +1 -1
  96. package/dist/esm/Inputs/MouseControllerLocked.js +9 -5
  97. package/dist/esm/Inputs/MouseControllerLocked.js.map +1 -1
  98. package/dist/esm/Inputs/SpecialKeyCodes.js +5 -1
  99. package/dist/esm/Inputs/SpecialKeyCodes.js.map +1 -1
  100. package/dist/esm/Inputs/TouchController.js +8 -4
  101. package/dist/esm/Inputs/TouchController.js.map +1 -1
  102. package/dist/esm/Inputs/TouchControllerFake.js +8 -4
  103. package/dist/esm/Inputs/TouchControllerFake.js.map +1 -1
  104. package/dist/esm/Inputs/XRGamepadController.js +8 -4
  105. package/dist/esm/Inputs/XRGamepadController.js.map +1 -1
  106. package/dist/esm/PeerConnectionController/AggregatedStats.js +23 -19
  107. package/dist/esm/PeerConnectionController/AggregatedStats.js.map +1 -1
  108. package/dist/esm/PeerConnectionController/CandidatePairStats.js +5 -1
  109. package/dist/esm/PeerConnectionController/CandidatePairStats.js.map +1 -1
  110. package/dist/esm/PeerConnectionController/CandidateStat.js +5 -1
  111. package/dist/esm/PeerConnectionController/CandidateStat.js.map +1 -1
  112. package/dist/esm/PeerConnectionController/CodecStats.js +5 -1
  113. package/dist/esm/PeerConnectionController/CodecStats.js.map +1 -1
  114. package/dist/esm/PeerConnectionController/DataChannelStats.js +5 -1
  115. package/dist/esm/PeerConnectionController/DataChannelStats.js.map +1 -1
  116. package/dist/esm/PeerConnectionController/InboundRTPStats.js +9 -3
  117. package/dist/esm/PeerConnectionController/InboundRTPStats.js.map +1 -1
  118. package/dist/esm/PeerConnectionController/InboundTrackStats.js +5 -1
  119. package/dist/esm/PeerConnectionController/InboundTrackStats.js.map +1 -1
  120. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +7 -2
  121. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js.map +1 -1
  122. package/dist/esm/PeerConnectionController/PeerConnectionController.js +45 -41
  123. package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -1
  124. package/dist/esm/PeerConnectionController/SessionStats.js +5 -1
  125. package/dist/esm/PeerConnectionController/SessionStats.js.map +1 -1
  126. package/dist/esm/PeerConnectionController/StreamStats.js +5 -1
  127. package/dist/esm/PeerConnectionController/StreamStats.js.map +1 -1
  128. package/dist/esm/PixelStreaming/PixelStreaming.js +119 -115
  129. package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -1
  130. package/dist/esm/UI/OnScreenKeyboard.js +5 -1
  131. package/dist/esm/UI/OnScreenKeyboard.js.map +1 -1
  132. package/dist/esm/UeInstanceMessage/ResponseController.js +8 -4
  133. package/dist/esm/UeInstanceMessage/ResponseController.js.map +1 -1
  134. package/dist/esm/UeInstanceMessage/SendMessageController.js +10 -5
  135. package/dist/esm/UeInstanceMessage/SendMessageController.js.map +1 -1
  136. package/dist/esm/UeInstanceMessage/StreamMessageController.js +11 -6
  137. package/dist/esm/UeInstanceMessage/StreamMessageController.js.map +1 -1
  138. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +5 -1
  139. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -1
  140. package/dist/esm/Util/EventEmitter.js +79 -38
  141. package/dist/esm/Util/EventEmitter.js.map +1 -1
  142. package/dist/esm/Util/FileUtil.js +16 -11
  143. package/dist/esm/Util/FileUtil.js.map +1 -1
  144. package/dist/esm/Util/IURLSearchParams.js +5 -1
  145. package/dist/esm/Util/IURLSearchParams.js.map +1 -1
  146. package/dist/esm/Util/InputCoordTranslator.js +5 -1
  147. package/dist/esm/Util/InputCoordTranslator.js.map +1 -1
  148. package/dist/esm/Util/RTCUtils.js +5 -1
  149. package/dist/esm/Util/RTCUtils.js.map +1 -1
  150. package/dist/esm/VideoPlayer/StreamController.js +10 -6
  151. package/dist/esm/VideoPlayer/StreamController.js.map +1 -1
  152. package/dist/esm/VideoPlayer/VideoPlayer.js +11 -7
  153. package/dist/esm/VideoPlayer/VideoPlayer.js.map +1 -1
  154. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +280 -217
  155. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
  156. package/dist/esm/WebXR/WebXRController.js +16 -12
  157. package/dist/esm/WebXR/WebXRController.js.map +1 -1
  158. package/dist/esm/pixelstreamingfrontend.js +73 -23
  159. package/dist/esm/pixelstreamingfrontend.js.map +1 -1
  160. package/dist/types/Config/Config.d.ts +5 -0
  161. package/dist/types/DataChannel/DataChannelController.d.ts +1 -1
  162. package/dist/types/Inputs/XRGamepadController.d.ts +0 -1
  163. package/dist/types/PixelStreaming/PixelStreaming.d.ts +1 -1
  164. package/dist/types/Util/EventEmitter.d.ts +0 -1
  165. package/dist/types/VideoPlayer/VideoPlayer.d.ts +1 -1
  166. package/dist/types/WebRtcPlayer/WebRtcPlayerController.d.ts +1 -0
  167. package/dist/types/WebXR/WebXRController.d.ts +0 -1
  168. package/dist/types/pixelstreamingfrontend.d.ts +1 -1
  169. package/package.json +8 -8
  170. package/src/Config/Config.ts +19 -4
  171. package/src/Config/SettingFlag.ts +3 -3
  172. package/src/Config/SettingNumber.ts +3 -3
  173. package/src/Config/SettingOption.ts +3 -3
  174. package/src/Config/SettingText.ts +4 -4
  175. package/src/DataChannel/DataChannelController.ts +2 -2
  176. package/src/Inputs/MouseControllerHovering.ts +2 -2
  177. package/src/Inputs/MouseControllerLocked.ts +2 -2
  178. package/src/PeerConnectionController/PeerConnectionController.ts +5 -5
  179. package/src/UeInstanceMessage/SendMessageController.ts +1 -0
  180. package/src/Util/EventEmitter.ts +40 -40
  181. package/src/VideoPlayer/VideoPlayer.ts +1 -1
  182. package/src/WebRtcPlayer/WebRtcPlayerController.ts +82 -1
  183. package/src/WebXR/WebXRController.ts +1 -1
  184. package/src/__test__/mockRTCRtpReceiver.ts +1 -1
  185. package/src/__test__/mockWebSocket.ts +3 -3
  186. package/src/pixelstreamingfrontend.ts +6 -1
  187. package/tsconfig.esm.json +2 -1
  188. package/tsconfig.json +6 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "Frontend library for Unreal Engine 5.5 Pixel Streaming",
5
5
  "main": "dist/commonjs/pixelstreamingfrontend.js",
6
6
  "module": "dist/esm/pixelstreamingfrontend.js",
@@ -15,22 +15,22 @@
15
15
  "spellcheck": "cspell \"{README.md,.github/*.md,src/**/*.ts}\""
16
16
  },
17
17
  "devDependencies": {
18
- "@types/jest": "27.5.1",
18
+ "@types/jest": "^29.5.14",
19
19
  "@typescript-eslint/eslint-plugin": "^6.21.0",
20
20
  "cspell": "^4.1.0",
21
21
  "eslint": "^8.11.0",
22
22
  "eslint-config-prettier": "^9.1.0",
23
23
  "eslint-plugin-prettier": "^5.2.1",
24
- "jest": "^27.5.1",
25
- "jest-environment-jsdom": "27.5.1",
24
+ "jest": "^29.7.0",
25
+ "jest-environment-jsdom": "^29.7.0",
26
26
  "prettier": "3.3.3",
27
- "ts-jest": "27.1.5",
28
- "typedoc": "^0.23.24",
29
- "typescript": "^4.9.4"
27
+ "ts-jest": "^29.2.5",
28
+ "typedoc": "^0.27.4",
29
+ "typescript": "^5.0.0"
30
30
  },
31
31
  "dependencies": {
32
+ "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "^0.1.4",
32
33
  "@types/webxr": "^0.5.1",
33
- "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "^0.1.3",
34
34
  "sdp": "^3.1.0"
35
35
  },
36
36
  "repository": {
@@ -38,7 +38,7 @@ export class Flags {
38
38
  export type FlagsKeys = Exclude<keyof typeof Flags, 'prototype'>;
39
39
  export type FlagsIds = (typeof Flags)[FlagsKeys];
40
40
 
41
- const isFlagId = (id: string): id is FlagsIds =>
41
+ export const isFlagId = (id: string): id is FlagsIds =>
42
42
  Object.getOwnPropertyNames(Flags).some((name: FlagsKeys) => Flags[name] === id);
43
43
 
44
44
  /**
@@ -64,7 +64,7 @@ export class NumericParameters {
64
64
  export type NumericParametersKeys = Exclude<keyof typeof NumericParameters, 'prototype'>;
65
65
  export type NumericParametersIds = (typeof NumericParameters)[NumericParametersKeys];
66
66
 
67
- const isNumericId = (id: string): id is NumericParametersIds =>
67
+ export const isNumericId = (id: string): id is NumericParametersIds =>
68
68
  Object.getOwnPropertyNames(NumericParameters).some(
69
69
  (name: NumericParametersKeys) => NumericParameters[name] === id
70
70
  );
@@ -80,7 +80,7 @@ export class TextParameters {
80
80
  export type TextParametersKeys = Exclude<keyof typeof TextParameters, 'prototype'>;
81
81
  export type TextParametersIds = (typeof TextParameters)[TextParametersKeys];
82
82
 
83
- const isTextId = (id: string): id is TextParametersIds =>
83
+ export const isTextId = (id: string): id is TextParametersIds =>
84
84
  Object.getOwnPropertyNames(TextParameters).some(
85
85
  (name: TextParametersKeys) => TextParameters[name] === id
86
86
  );
@@ -92,12 +92,13 @@ const isTextId = (id: string): id is TextParametersIds =>
92
92
  export class OptionParameters {
93
93
  static PreferredCodec = 'PreferredCodec' as const;
94
94
  static StreamerId = 'StreamerId' as const;
95
+ static PreferredQuality = 'PreferredQuality' as const;
95
96
  }
96
97
 
97
98
  export type OptionParametersKeys = Exclude<keyof typeof OptionParameters, 'prototype'>;
98
99
  export type OptionParametersIds = (typeof OptionParameters)[OptionParametersKeys];
99
100
 
100
- const isOptionId = (id: string): id is OptionParametersIds =>
101
+ export const isOptionId = (id: string): id is OptionParametersIds =>
101
102
  Object.getOwnPropertyNames(OptionParameters).some(
102
103
  (name: OptionParametersKeys) => OptionParameters[name] === id
103
104
  );
@@ -281,6 +282,20 @@ export class Config {
281
282
  )
282
283
  );
283
284
 
285
+ this.optionParameters.set(
286
+ OptionParameters.PreferredQuality,
287
+ new SettingOption(
288
+ OptionParameters.PreferredQuality,
289
+ 'Preferred Quality',
290
+ 'The preferred quality of the stream (only applicable when using the SFU)',
291
+ settings && Object.prototype.hasOwnProperty.call(settings, OptionParameters.PreferredQuality)
292
+ ? settings[OptionParameters.PreferredQuality]!
293
+ : 'Default',
294
+ ['Default'],
295
+ useUrlParams
296
+ )
297
+ );
298
+
284
299
  /**
285
300
  * Boolean parameters
286
301
  */
@@ -7,8 +7,8 @@ import { SettingBase } from './SettingBase';
7
7
  * A boolean flag setting object with a text label.
8
8
  */
9
9
  export class SettingFlag<CustomIds extends string = FlagsIds> extends SettingBase {
10
- id: FlagsIds | CustomIds;
11
- onChangeEmit: (changedValue: boolean) => void;
10
+ override id: FlagsIds | CustomIds;
11
+ override onChangeEmit: (changedValue: boolean) => void;
12
12
 
13
13
  constructor(
14
14
  id: FlagsIds | CustomIds,
@@ -33,7 +33,7 @@ export class SettingFlag<CustomIds extends string = FlagsIds> extends SettingBas
33
33
  this.useUrlParams = useUrlParams;
34
34
  }
35
35
 
36
- protected getValueAsString(): string {
36
+ protected override getValueAsString(): string {
37
37
  return this.flag ? 'true' : 'false';
38
38
  }
39
39
 
@@ -10,8 +10,8 @@ export class SettingNumber<CustomIds extends string = NumericParametersIds> exte
10
10
  _min: number | null;
11
11
  _max: number | null;
12
12
 
13
- id: NumericParametersIds | CustomIds;
14
- onChangeEmit: (changedValue: number) => void;
13
+ override id: NumericParametersIds | CustomIds;
14
+ override onChangeEmit: (changedValue: number) => void;
15
15
 
16
16
  constructor(
17
17
  id: NumericParametersIds | CustomIds,
@@ -41,7 +41,7 @@ export class SettingNumber<CustomIds extends string = NumericParametersIds> exte
41
41
  this.useUrlParams = useUrlParams;
42
42
  }
43
43
 
44
- protected getValueAsString(): string {
44
+ protected override getValueAsString(): string {
45
45
  return this.number.toString();
46
46
  }
47
47
 
@@ -8,8 +8,8 @@ import { SettingBase } from './SettingBase';
8
8
  * An Option setting object with a text label. Allows you to specify an array of options and select one of them.
9
9
  */
10
10
  export class SettingOption<CustomIds extends string = OptionParametersIds> extends SettingBase {
11
- id: OptionParametersIds | CustomIds;
12
- onChangeEmit: (changedValue: string) => void;
11
+ override id: OptionParametersIds | CustomIds;
12
+ override onChangeEmit: (changedValue: string) => void;
13
13
  _options: Array<string>;
14
14
 
15
15
  /* Transforms the url parameter value into something else, by default no transformation is made, the url param is returned as-is. */
@@ -45,7 +45,7 @@ export class SettingOption<CustomIds extends string = OptionParametersIds> exten
45
45
  this.useUrlParams = useUrlParams;
46
46
  }
47
47
 
48
- protected getValueAsString(): string {
48
+ protected override getValueAsString(): string {
49
49
  return this.selected;
50
50
  }
51
51
 
@@ -7,9 +7,9 @@ import { SettingBase } from './SettingBase';
7
7
  * A text setting object with a text label.
8
8
  */
9
9
  export class SettingText<CustomIds extends string = TextParametersIds> extends SettingBase {
10
- id: TextParametersIds | CustomIds;
11
- onChangeEmit: (changedValue: string) => void;
12
- useUrlParams: boolean;
10
+ override id: TextParametersIds | CustomIds;
11
+ override onChangeEmit: (changedValue: string) => void;
12
+ override useUrlParams: boolean;
13
13
 
14
14
  constructor(
15
15
  id: TextParametersIds | CustomIds,
@@ -33,7 +33,7 @@ export class SettingText<CustomIds extends string = TextParametersIds> extends S
33
33
  this.useUrlParams = useUrlParams;
34
34
  }
35
35
 
36
- protected getValueAsString(): string {
36
+ protected override getValueAsString(): string {
37
37
  return this.text;
38
38
  }
39
39
 
@@ -49,7 +49,7 @@ export class DataChannelController {
49
49
  this.dataChannel.onopen = (ev: Event) => this.handleOnOpen(ev);
50
50
  this.dataChannel.onclose = (ev: Event) => this.handleOnClose(ev);
51
51
  this.dataChannel.onmessage = (ev: MessageEvent) => this.handleOnMessage(ev);
52
- this.dataChannel.onerror = (ev: MessageEvent) => this.handleOnError(ev);
52
+ this.dataChannel.onerror = (ev: Event) => this.handleOnError(ev);
53
53
  }
54
54
 
55
55
  /**
@@ -81,7 +81,7 @@ export class DataChannelController {
81
81
  * Handles when an error is thrown
82
82
  * @param event - Error Event
83
83
  */
84
- handleOnError(event: MessageEvent) {
84
+ handleOnError(event: Event) {
85
85
  Logger.Info(`Data Channel (${this.label}) error: ${event}`);
86
86
  this.onError(this.dataChannel?.label, event);
87
87
  }
@@ -33,7 +33,7 @@ export class MouseControllerHovering extends MouseController {
33
33
  this.onContextMenuListener = this.onContextMenu.bind(this);
34
34
  }
35
35
 
36
- register(): void {
36
+ override register(): void {
37
37
  super.register();
38
38
 
39
39
  this.videoElementParent.addEventListener('mousemove', this.onMouseMoveListener);
@@ -44,7 +44,7 @@ export class MouseControllerHovering extends MouseController {
44
44
  this.videoElementParent.addEventListener('dblclick', this.onMouseDblClickListener);
45
45
  }
46
46
 
47
- unregister(): void {
47
+ override unregister(): void {
48
48
  this.videoElementParent.removeEventListener('mousemove', this.onMouseMoveListener);
49
49
  this.videoElementParent.removeEventListener('mousedown', this.onMouseDownListener);
50
50
  this.videoElementParent.removeEventListener('mouseup', this.onMouseUpListener);
@@ -44,7 +44,7 @@ export class MouseControllerLocked extends MouseController {
44
44
  this.onMouseMoveListener = this.onMouseMove.bind(this);
45
45
  }
46
46
 
47
- register() {
47
+ override register() {
48
48
  super.register();
49
49
 
50
50
  this.videoElementParent.requestPointerLock =
@@ -64,7 +64,7 @@ export class MouseControllerLocked extends MouseController {
64
64
  this.videoElementParent.addEventListener('dblclick', this.onMouseDblClickListener);
65
65
  }
66
66
 
67
- unregister() {
67
+ override unregister() {
68
68
  const pointerLockElement = document.pointerLockElement || document.mozPointerLockElement;
69
69
  if (document.exitPointerLock && pointerLockElement === this.videoElementParent) {
70
70
  document.exitPointerLock();
@@ -428,18 +428,18 @@ export class PeerConnectionController {
428
428
  ) {
429
429
  // Get our preferred codec from the codecs options drop down
430
430
  const preferredRTPCodec = this.preferredCodec.split(' ');
431
- const preferredRTCRtpCodecCapability: RTCRtpCodecCapability = {
431
+ const preferredRTCRtpCodecCapability: RTCRtpCodec = {
432
432
  mimeType: 'video/' + preferredRTPCodec[0] /* Name */,
433
433
  clockRate: 90000 /* All current video formats in browsers have 90khz clock rate */,
434
434
  sdpFmtpLine: preferredRTPCodec[1] ? preferredRTPCodec[1] : ''
435
435
  };
436
436
 
437
437
  // Populate a list of codecs we will support with our preferred one in the first position
438
- const ourSupportedCodecs: Array<RTCRtpCodecCapability> = [preferredRTCRtpCodecCapability];
438
+ const ourSupportedCodecs: Array<RTCRtpCodec> = [preferredRTCRtpCodecCapability];
439
439
 
440
440
  // Go through all codecs the browser supports and add them to the list (in any order)
441
441
  RTCRtpReceiver.getCapabilities('video').codecs.forEach(
442
- (browserSupportedCodec: RTCRtpCodecCapability) => {
442
+ (browserSupportedCodec: RTCRtpCodec) => {
443
443
  // Don't add our preferred codec again, but add everything else
444
444
  if (browserSupportedCodec.mimeType != preferredRTCRtpCodecCapability.mimeType) {
445
445
  ourSupportedCodecs.push(browserSupportedCodec);
@@ -626,11 +626,11 @@ export class PeerConnectionController {
626
626
  const sections = splitSections(rtcSessionDescription.sdp);
627
627
  // discard the session information as we only want media related info
628
628
  sections.shift();
629
- sections.forEach((mediaSection) => {
629
+ sections.forEach((mediaSection: any) => {
630
630
  const { codecs } = parseRtpParameters(mediaSection);
631
631
  // Filter only for VPX / H26X / AV1
632
632
  const matcher = /(VP\d|H26\d|AV1).*/;
633
- codecs.forEach((c) => {
633
+ codecs.forEach((c: any) => {
634
634
  const str =
635
635
  c.name +
636
636
  ' ' +
@@ -50,6 +50,7 @@ export class SendMessageController {
50
50
  case 'int16':
51
51
  case 'float':
52
52
  case 'double':
53
+ default:
53
54
  return 'number';
54
55
  case 'string':
55
56
  return 'string';
@@ -17,7 +17,7 @@ import {
17
17
  * Can be cancelled by calling the callback function provided as part of the event.
18
18
  */
19
19
  export class AfkWarningActivateEvent extends Event {
20
- readonly type: 'afkWarningActivate';
20
+ override readonly type: 'afkWarningActivate';
21
21
  readonly data: {
22
22
  /** How many seconds until the session is disconnected */
23
23
  countDown: number;
@@ -34,7 +34,7 @@ export class AfkWarningActivateEvent extends Event {
34
34
  * An event that is emitted when the AFK disconnect countdown is updated.
35
35
  */
36
36
  export class AfkWarningUpdateEvent extends Event {
37
- readonly type: 'afkWarningUpdate';
37
+ override readonly type: 'afkWarningUpdate';
38
38
  readonly data: {
39
39
  /** How many seconds until the session is disconnected */
40
40
  countDown: number;
@@ -49,7 +49,7 @@ export class AfkWarningUpdateEvent extends Event {
49
49
  * An event that is emitted when AFK warning is deactivated.
50
50
  */
51
51
  export class AfkWarningDeactivateEvent extends Event {
52
- readonly type: 'afkWarningDeactivate';
52
+ override readonly type: 'afkWarningDeactivate';
53
53
  constructor() {
54
54
  super('afkWarningDeactivate');
55
55
  }
@@ -59,7 +59,7 @@ export class AfkWarningDeactivateEvent extends Event {
59
59
  * An event that is emitted when AFK countdown reaches 0 and the user is disconnected.
60
60
  */
61
61
  export class AfkTimedOutEvent extends Event {
62
- readonly type: 'afkTimedOut';
62
+ override readonly type: 'afkTimedOut';
63
63
  constructor() {
64
64
  super('afkTimedOut');
65
65
  }
@@ -69,7 +69,7 @@ export class AfkTimedOutEvent extends Event {
69
69
  * An event that is emitted when we receive new video quality value.
70
70
  */
71
71
  export class VideoEncoderAvgQPEvent extends Event {
72
- readonly type: 'videoEncoderAvgQP';
72
+ override readonly type: 'videoEncoderAvgQP';
73
73
  readonly data: {
74
74
  /** Average video quality value */
75
75
  avgQP: number;
@@ -84,7 +84,7 @@ export class VideoEncoderAvgQPEvent extends Event {
84
84
  * An event that is emitted after a WebRtc connection has been negotiated.
85
85
  */
86
86
  export class WebRtcSdpEvent extends Event {
87
- readonly type: 'webRtcSdp';
87
+ override readonly type: 'webRtcSdp';
88
88
  constructor() {
89
89
  super('webRtcSdp');
90
90
  }
@@ -94,7 +94,7 @@ export class WebRtcSdpEvent extends Event {
94
94
  * An event that is emitted when auto connecting.
95
95
  */
96
96
  export class WebRtcAutoConnectEvent extends Event {
97
- readonly type: 'webRtcAutoConnect';
97
+ override readonly type: 'webRtcAutoConnect';
98
98
  constructor() {
99
99
  super('webRtcAutoConnect');
100
100
  }
@@ -104,7 +104,7 @@ export class WebRtcAutoConnectEvent extends Event {
104
104
  * An event that is emitted when sending a WebRtc offer.
105
105
  */
106
106
  export class WebRtcConnectingEvent extends Event {
107
- readonly type: 'webRtcConnecting';
107
+ override readonly type: 'webRtcConnecting';
108
108
  constructor() {
109
109
  super('webRtcConnecting');
110
110
  }
@@ -114,7 +114,7 @@ export class WebRtcConnectingEvent extends Event {
114
114
  * An event that is emitted when WebRtc connection has been established.
115
115
  */
116
116
  export class WebRtcConnectedEvent extends Event {
117
- readonly type: 'webRtcConnected';
117
+ override readonly type: 'webRtcConnected';
118
118
  constructor() {
119
119
  super('webRtcConnected');
120
120
  }
@@ -124,7 +124,7 @@ export class WebRtcConnectedEvent extends Event {
124
124
  * An event that is emitted if WebRtc connection has failed.
125
125
  */
126
126
  export class WebRtcFailedEvent extends Event {
127
- readonly type: 'webRtcFailed';
127
+ override readonly type: 'webRtcFailed';
128
128
  constructor() {
129
129
  super('webRtcFailed');
130
130
  }
@@ -134,7 +134,7 @@ export class WebRtcFailedEvent extends Event {
134
134
  * An event that is emitted if WebRtc connection is disconnected.
135
135
  */
136
136
  export class WebRtcDisconnectedEvent extends Event {
137
- readonly type: 'webRtcDisconnected';
137
+ override readonly type: 'webRtcDisconnected';
138
138
  readonly data: {
139
139
  /** Message describing the disconnect reason */
140
140
  eventString: string;
@@ -151,7 +151,7 @@ export class WebRtcDisconnectedEvent extends Event {
151
151
  * An event that is emitted when RTCDataChannel is opened.
152
152
  */
153
153
  export class DataChannelOpenEvent extends Event {
154
- readonly type: 'dataChannelOpen';
154
+ override readonly type: 'dataChannelOpen';
155
155
  readonly data: {
156
156
  /** Data channel label. One of 'datachannel', 'send-datachannel', 'recv-datachannel' */
157
157
  label: string;
@@ -168,7 +168,7 @@ export class DataChannelOpenEvent extends Event {
168
168
  * An event that is emitted when RTCDataChannel is closed.
169
169
  */
170
170
  export class DataChannelCloseEvent extends Event {
171
- readonly type: 'dataChannelClose';
171
+ override readonly type: 'dataChannelClose';
172
172
  readonly data: {
173
173
  /** Data channel label. One of 'datachannel', 'send-datachannel', 'recv-datachannel' */
174
174
  label: string;
@@ -185,7 +185,7 @@ export class DataChannelCloseEvent extends Event {
185
185
  * An event that is emitted on RTCDataChannel errors.
186
186
  */
187
187
  export class DataChannelErrorEvent extends Event {
188
- readonly type: 'dataChannelError';
188
+ override readonly type: 'dataChannelError';
189
189
  readonly data: {
190
190
  /** Data channel label. One of 'datachannel', 'send-datachannel', 'recv-datachannel' */
191
191
  label: string;
@@ -202,7 +202,7 @@ export class DataChannelErrorEvent extends Event {
202
202
  * An event that is emitted when the video stream has been initialized.
203
203
  */
204
204
  export class VideoInitializedEvent extends Event {
205
- readonly type: 'videoInitialized';
205
+ override readonly type: 'videoInitialized';
206
206
  constructor() {
207
207
  super('videoInitialized');
208
208
  }
@@ -212,7 +212,7 @@ export class VideoInitializedEvent extends Event {
212
212
  * An event that is emitted when video stream loading starts.
213
213
  */
214
214
  export class StreamLoadingEvent extends Event {
215
- readonly type: 'streamLoading';
215
+ override readonly type: 'streamLoading';
216
216
  constructor() {
217
217
  super('streamLoading');
218
218
  }
@@ -222,7 +222,7 @@ export class StreamLoadingEvent extends Event {
222
222
  * An event that is emitted when video stream loading has finished.
223
223
  */
224
224
  export class StreamPreConnectEvent extends Event {
225
- readonly type: 'streamConnect';
225
+ override readonly type: 'streamConnect';
226
226
  constructor() {
227
227
  super('streamConnect');
228
228
  }
@@ -232,7 +232,7 @@ export class StreamPreConnectEvent extends Event {
232
232
  * An event that is emitted when video stream has stopped.
233
233
  */
234
234
  export class StreamPreDisconnectEvent extends Event {
235
- readonly type: 'streamDisconnect';
235
+ override readonly type: 'streamDisconnect';
236
236
  constructor() {
237
237
  super('streamDisconnect');
238
238
  }
@@ -242,7 +242,7 @@ export class StreamPreDisconnectEvent extends Event {
242
242
  * An event that is emitted when video stream is reconnecting.
243
243
  */
244
244
  export class StreamReconnectEvent extends Event {
245
- readonly type: 'streamReconnect';
245
+ override readonly type: 'streamReconnect';
246
246
  constructor() {
247
247
  super('streamReconnect');
248
248
  }
@@ -252,7 +252,7 @@ export class StreamReconnectEvent extends Event {
252
252
  * An event that is emitted if there are errors loading the video stream.
253
253
  */
254
254
  export class PlayStreamErrorEvent extends Event {
255
- readonly type: 'playStreamError';
255
+ override readonly type: 'playStreamError';
256
256
  readonly data: {
257
257
  /** Error message */
258
258
  message: string;
@@ -267,7 +267,7 @@ export class PlayStreamErrorEvent extends Event {
267
267
  * An event that is emitted before trying to start video playback.
268
268
  */
269
269
  export class PlayStreamEvent extends Event {
270
- readonly type: 'playStream';
270
+ override readonly type: 'playStream';
271
271
  constructor() {
272
272
  super('playStream');
273
273
  }
@@ -278,7 +278,7 @@ export class PlayStreamEvent extends Event {
278
278
  * video auto-play without user interaction is refused by the browser.
279
279
  */
280
280
  export class PlayStreamRejectedEvent extends Event {
281
- readonly type: 'playStreamRejected';
281
+ override readonly type: 'playStreamRejected';
282
282
  readonly data: {
283
283
  /** Rejection reason */
284
284
  reason: unknown;
@@ -293,7 +293,7 @@ export class PlayStreamRejectedEvent extends Event {
293
293
  * An event that is emitted when receiving a full FreezeFrame image from UE.
294
294
  */
295
295
  export class LoadFreezeFrameEvent extends Event {
296
- readonly type: 'loadFreezeFrame';
296
+ override readonly type: 'loadFreezeFrame';
297
297
  readonly data: {
298
298
  /** true if should show click-to-play overlay, not the freeze frame contents */
299
299
  shouldShowPlayOverlay: boolean;
@@ -312,7 +312,7 @@ export class LoadFreezeFrameEvent extends Event {
312
312
  * An event that is emitted when receiving UnfreezeFrame message from UE and video playback is about to be resumed.
313
313
  */
314
314
  export class HideFreezeFrameEvent extends Event {
315
- readonly type: 'hideFreezeFrame';
315
+ override readonly type: 'hideFreezeFrame';
316
316
  constructor() {
317
317
  super('hideFreezeFrame');
318
318
  }
@@ -322,7 +322,7 @@ export class HideFreezeFrameEvent extends Event {
322
322
  * An event that is emitted when receiving WebRTC statistics.
323
323
  */
324
324
  export class StatsReceivedEvent extends Event {
325
- readonly type: 'statsReceived';
325
+ override readonly type: 'statsReceived';
326
326
  readonly data: {
327
327
  /** Statistics object */
328
328
  aggregatedStats: AggregatedStats;
@@ -337,7 +337,7 @@ export class StatsReceivedEvent extends Event {
337
337
  * An event that is emitted when streamer list changes.
338
338
  */
339
339
  export class StreamerListMessageEvent extends Event {
340
- readonly type: 'streamerListMessage';
340
+ override readonly type: 'streamerListMessage';
341
341
  readonly data: {
342
342
  /** Streamer list message containing an array of streamer ids */
343
343
  messageStreamerList: Messages.streamerList;
@@ -356,7 +356,7 @@ export class StreamerListMessageEvent extends Event {
356
356
  * An event that is emitted when a subscribed to streamer's id changes.
357
357
  */
358
358
  export class StreamerIDChangedMessageEvent extends Event {
359
- readonly type: 'streamerIDChangedMessage';
359
+ override readonly type: 'streamerIDChangedMessage';
360
360
  readonly data: {
361
361
  /** The new ID of the streamer. */
362
362
  newID: string;
@@ -371,7 +371,7 @@ export class StreamerIDChangedMessageEvent extends Event {
371
371
  * An event that is emitted when receiving latency test results.
372
372
  */
373
373
  export class LatencyTestResultEvent extends Event {
374
- readonly type: 'latencyTestResult';
374
+ override readonly type: 'latencyTestResult';
375
375
  readonly data: {
376
376
  /** Latency test result object */
377
377
  latencyTimings: LatencyTestResults;
@@ -387,7 +387,7 @@ export class LatencyTestResultEvent extends Event {
387
387
  * This event is handled by DataChannelLatencyTestController
388
388
  */
389
389
  export class DataChannelLatencyTestResponseEvent extends Event {
390
- readonly type: 'dataChannelLatencyTestResponse';
390
+ override readonly type: 'dataChannelLatencyTestResponse';
391
391
  readonly data: {
392
392
  /** Latency test result object */
393
393
  response: DataChannelLatencyTestResponse;
@@ -402,7 +402,7 @@ export class DataChannelLatencyTestResponseEvent extends Event {
402
402
  * An event that is emitted when data channel latency test results are ready.
403
403
  */
404
404
  export class DataChannelLatencyTestResultEvent extends Event {
405
- readonly type: 'dataChannelLatencyTestResult';
405
+ override readonly type: 'dataChannelLatencyTestResult';
406
406
  readonly data: {
407
407
  /** Latency test result object */
408
408
  result: DataChannelLatencyTestResult;
@@ -417,7 +417,7 @@ export class DataChannelLatencyTestResultEvent extends Event {
417
417
  * An event that is emitted when receiving initial settings from UE.
418
418
  */
419
419
  export class InitialSettingsEvent extends Event {
420
- readonly type: 'initialSettings';
420
+ override readonly type: 'initialSettings';
421
421
  readonly data: {
422
422
  /** Initial settings from UE */
423
423
  settings: InitialSettings;
@@ -470,7 +470,7 @@ export type SettingsData =
470
470
  * An event that is emitted when PixelStreaming settings change.
471
471
  */
472
472
  export class SettingsChangedEvent extends Event {
473
- readonly type: 'settingsChanged';
473
+ override readonly type: 'settingsChanged';
474
474
  readonly data: SettingsData;
475
475
  constructor(data: SettingsChangedEvent['data']) {
476
476
  super('settingsChanged');
@@ -482,7 +482,7 @@ export class SettingsChangedEvent extends Event {
482
482
  * Event emitted when an XR Session starts
483
483
  */
484
484
  export class XrSessionStartedEvent extends Event {
485
- readonly type: 'xrSessionStarted';
485
+ override readonly type: 'xrSessionStarted';
486
486
  constructor() {
487
487
  super('xrSessionStarted');
488
488
  }
@@ -492,7 +492,7 @@ export class XrSessionStartedEvent extends Event {
492
492
  * Event emitted when an XR Session ends
493
493
  */
494
494
  export class XrSessionEndedEvent extends Event {
495
- readonly type: 'xrSessionEnded';
495
+ override readonly type: 'xrSessionEnded';
496
496
  constructor() {
497
497
  super('xrSessionEnded');
498
498
  }
@@ -509,7 +509,7 @@ export type XrFrameData = {
509
509
  * Event emitted when an XR Frame is complete
510
510
  */
511
511
  export class XrFrameEvent extends Event {
512
- readonly type: 'xrFrame';
512
+ override readonly type: 'xrFrame';
513
513
  readonly data: XrFrameData;
514
514
  constructor(data: XrFrameEvent['data']) {
515
515
  super('xrFrame');
@@ -521,7 +521,7 @@ export class XrFrameEvent extends Event {
521
521
  * An event that is emitted when receiving a player count from the signalling server
522
522
  */
523
523
  export class PlayerCountEvent extends Event {
524
- readonly type: 'playerCount';
524
+ override readonly type: 'playerCount';
525
525
  readonly data: {
526
526
  /** count object */
527
527
  count: number;
@@ -536,7 +536,7 @@ export class PlayerCountEvent extends Event {
536
536
  * An event that is emitted when the webRTC connections is relayed over TCP.
537
537
  */
538
538
  export class WebRtcTCPRelayDetectedEvent extends Event {
539
- readonly type: 'webRtcTCPRelayDetected';
539
+ override readonly type: 'webRtcTCPRelayDetected';
540
540
  constructor() {
541
541
  super('webRtcTCPRelayDetected');
542
542
  }
@@ -587,7 +587,7 @@ export class PixelStreamingEventEmitter extends EventTarget {
587
587
  * @param e event
588
588
  * @returns
589
589
  */
590
- public dispatchEvent(e: PixelStreamingEvent): boolean {
590
+ public override dispatchEvent(e: PixelStreamingEvent): boolean {
591
591
  return super.dispatchEvent(e);
592
592
  }
593
593
 
@@ -596,7 +596,7 @@ export class PixelStreamingEventEmitter extends EventTarget {
596
596
  * @param type event name
597
597
  * @param listener event handler function
598
598
  */
599
- public addEventListener<
599
+ public override addEventListener<
600
600
  T extends PixelStreamingEvent['type'],
601
601
  E extends PixelStreamingEvent & { type: T }
602
602
  >(type: T, listener: (e: Event & E) => void) {
@@ -608,7 +608,7 @@ export class PixelStreamingEventEmitter extends EventTarget {
608
608
  * @param type event name
609
609
  * @param listener event handler function
610
610
  */
611
- public removeEventListener<
611
+ public override removeEventListener<
612
612
  T extends PixelStreamingEvent['type'],
613
613
  E extends PixelStreamingEvent & { type: T }
614
614
  >(type: T, listener: (e: Event & E) => void) {
@@ -8,7 +8,7 @@ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
8
8
  */
9
9
  declare global {
10
10
  interface HTMLElement {
11
- mozRequestPointerLock?(): void;
11
+ mozRequestPointerLock(options: PointerLockOptions): Promise<void>;
12
12
  }
13
13
  }
14
14