@observertc/observer-js 1.0.0-beta.2 → 1.0.0-beta.4

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 (223) hide show
  1. package/README.md +773 -388
  2. package/dist/index.d.mts +2793 -0
  3. package/dist/index.mjs +3719 -0
  4. package/dist/index.mjs.map +1 -0
  5. package/package.json +21 -14
  6. package/.eslintrc.json +0 -143
  7. package/.prettierignore +0 -5
  8. package/.prettierrc +0 -7
  9. package/jest.config.js +0 -9
  10. package/lib/ObservedCall.d.ts +0 -86
  11. package/lib/ObservedCall.d.ts.map +0 -1
  12. package/lib/ObservedCall.js +0 -225
  13. package/lib/ObservedCallEventMonitor.d.ts +0 -104
  14. package/lib/ObservedCallEventMonitor.d.ts.map +0 -1
  15. package/lib/ObservedCallEventMonitor.js +0 -314
  16. package/lib/ObservedCallSummary.d.ts +0 -18
  17. package/lib/ObservedCallSummary.d.ts.map +0 -1
  18. package/lib/ObservedCallSummary.js +0 -2
  19. package/lib/ObservedCertificate.d.ts +0 -19
  20. package/lib/ObservedCertificate.d.ts.map +0 -1
  21. package/lib/ObservedCertificate.js +0 -38
  22. package/lib/ObservedClient.d.ts +0 -130
  23. package/lib/ObservedClient.d.ts.map +0 -1
  24. package/lib/ObservedClient.js +0 -650
  25. package/lib/ObservedClientEventMonitor.d.ts +0 -91
  26. package/lib/ObservedClientEventMonitor.d.ts.map +0 -1
  27. package/lib/ObservedClientEventMonitor.js +0 -254
  28. package/lib/ObservedClientSummary.d.ts +0 -23
  29. package/lib/ObservedClientSummary.d.ts.map +0 -1
  30. package/lib/ObservedClientSummary.js +0 -2
  31. package/lib/ObservedCodec.d.ts +0 -22
  32. package/lib/ObservedCodec.d.ts.map +0 -1
  33. package/lib/ObservedCodec.js +0 -45
  34. package/lib/ObservedDataChannel.d.ts +0 -30
  35. package/lib/ObservedDataChannel.d.ts.map +0 -1
  36. package/lib/ObservedDataChannel.js +0 -75
  37. package/lib/ObservedIceCandidate.d.ts +0 -29
  38. package/lib/ObservedIceCandidate.d.ts.map +0 -1
  39. package/lib/ObservedIceCandidate.js +0 -59
  40. package/lib/ObservedIceCandidatePair.d.ts +0 -45
  41. package/lib/ObservedIceCandidatePair.d.ts.map +0 -1
  42. package/lib/ObservedIceCandidatePair.js +0 -127
  43. package/lib/ObservedIceTransport.d.ts +0 -36
  44. package/lib/ObservedIceTransport.d.ts.map +0 -1
  45. package/lib/ObservedIceTransport.js +0 -93
  46. package/lib/ObservedInboundRtp.d.ts +0 -92
  47. package/lib/ObservedInboundRtp.d.ts.map +0 -1
  48. package/lib/ObservedInboundRtp.js +0 -193
  49. package/lib/ObservedInboundTrack.d.ts +0 -32
  50. package/lib/ObservedInboundTrack.d.ts.map +0 -1
  51. package/lib/ObservedInboundTrack.js +0 -60
  52. package/lib/ObservedMediaPlayout.d.ts +0 -22
  53. package/lib/ObservedMediaPlayout.d.ts.map +0 -1
  54. package/lib/ObservedMediaPlayout.js +0 -42
  55. package/lib/ObservedMediaSource.d.ts +0 -28
  56. package/lib/ObservedMediaSource.d.ts.map +0 -1
  57. package/lib/ObservedMediaSource.js +0 -55
  58. package/lib/ObservedOutboundRtp.d.ts +0 -62
  59. package/lib/ObservedOutboundRtp.d.ts.map +0 -1
  60. package/lib/ObservedOutboundRtp.js +0 -144
  61. package/lib/ObservedOutboundTrack.d.ts +0 -32
  62. package/lib/ObservedOutboundTrack.d.ts.map +0 -1
  63. package/lib/ObservedOutboundTrack.js +0 -60
  64. package/lib/ObservedPeerConnection.d.ts +0 -207
  65. package/lib/ObservedPeerConnection.d.ts.map +0 -1
  66. package/lib/ObservedPeerConnection.js +0 -773
  67. package/lib/ObservedPeerConnectionTransport.d.ts +0 -17
  68. package/lib/ObservedPeerConnectionTransport.d.ts.map +0 -1
  69. package/lib/ObservedPeerConnectionTransport.js +0 -34
  70. package/lib/ObservedRemoteInboundRtp.d.ts +0 -30
  71. package/lib/ObservedRemoteInboundRtp.d.ts.map +0 -1
  72. package/lib/ObservedRemoteInboundRtp.js +0 -60
  73. package/lib/ObservedRemoteOutboundRtp.d.ts +0 -30
  74. package/lib/ObservedRemoteOutboundRtp.d.ts.map +0 -1
  75. package/lib/ObservedRemoteOutboundRtp.js +0 -60
  76. package/lib/ObservedTURN.d.ts +0 -31
  77. package/lib/ObservedTURN.d.ts.map +0 -1
  78. package/lib/ObservedTURN.js +0 -58
  79. package/lib/ObservedTurnServer.d.ts +0 -25
  80. package/lib/ObservedTurnServer.d.ts.map +0 -1
  81. package/lib/ObservedTurnServer.js +0 -59
  82. package/lib/Observer.d.ts +0 -65
  83. package/lib/Observer.d.ts.map +0 -1
  84. package/lib/Observer.js +0 -166
  85. package/lib/ObserverEventMonitor.d.ts +0 -138
  86. package/lib/ObserverEventMonitor.d.ts.map +0 -1
  87. package/lib/ObserverEventMonitor.js +0 -433
  88. package/lib/ObserverSummary.d.ts +0 -13
  89. package/lib/ObserverSummary.d.ts.map +0 -1
  90. package/lib/ObserverSummary.js +0 -2
  91. package/lib/common/Middleware.d.ts +0 -17
  92. package/lib/common/Middleware.d.ts.map +0 -1
  93. package/lib/common/Middleware.js +0 -60
  94. package/lib/common/SingleExecutor.d.ts +0 -3
  95. package/lib/common/SingleExecutor.d.ts.map +0 -1
  96. package/lib/common/SingleExecutor.js +0 -31
  97. package/lib/common/logger.d.ts +0 -17
  98. package/lib/common/logger.d.ts.map +0 -1
  99. package/lib/common/logger.js +0 -50
  100. package/lib/common/types.d.ts +0 -3
  101. package/lib/common/types.d.ts.map +0 -1
  102. package/lib/common/types.js +0 -3
  103. package/lib/common/utils.d.ts +0 -11
  104. package/lib/common/utils.d.ts.map +0 -1
  105. package/lib/common/utils.js +0 -63
  106. package/lib/detectors/Detector.d.ts +0 -5
  107. package/lib/detectors/Detector.d.ts.map +0 -1
  108. package/lib/detectors/Detector.js +0 -3
  109. package/lib/detectors/Detectors.d.ts +0 -11
  110. package/lib/detectors/Detectors.d.ts.map +0 -1
  111. package/lib/detectors/Detectors.js +0 -34
  112. package/lib/index.d.ts +0 -28
  113. package/lib/index.d.ts.map +0 -1
  114. package/lib/index.js +0 -49
  115. package/lib/mediasoup/ObservedMediaRouter.d.ts +0 -10
  116. package/lib/mediasoup/ObservedMediaRouter.d.ts.map +0 -1
  117. package/lib/mediasoup/ObservedMediaRouter.js +0 -6
  118. package/lib/monitors/TurnUsageMonitor.d.ts +0 -1
  119. package/lib/monitors/TurnUsageMonitor.d.ts.map +0 -1
  120. package/lib/monitors/TurnUsageMonitor.js +0 -146
  121. package/lib/schema/ClientEventTypes.d.ts +0 -228
  122. package/lib/schema/ClientEventTypes.d.ts.map +0 -1
  123. package/lib/schema/ClientEventTypes.js +0 -41
  124. package/lib/schema/ClientMetaTypes.d.ts +0 -34
  125. package/lib/schema/ClientMetaTypes.d.ts.map +0 -1
  126. package/lib/schema/ClientMetaTypes.js +0 -16
  127. package/lib/schema/ClientSample.d.ts +0 -1333
  128. package/lib/schema/ClientSample.d.ts.map +0 -1
  129. package/lib/schema/ClientSample.js +0 -4
  130. package/lib/scores/CalculatedScore.d.ts +0 -6
  131. package/lib/scores/CalculatedScore.d.ts.map +0 -1
  132. package/lib/scores/CalculatedScore.js +0 -2
  133. package/lib/scores/DefaultCallScoreCalculator.d.ts +0 -7
  134. package/lib/scores/DefaultCallScoreCalculator.d.ts.map +0 -1
  135. package/lib/scores/DefaultCallScoreCalculator.js +0 -21
  136. package/lib/scores/ScoreCalculator.d.ts +0 -4
  137. package/lib/scores/ScoreCalculator.d.ts.map +0 -1
  138. package/lib/scores/ScoreCalculator.js +0 -2
  139. package/lib/updaters/CallUpdater.d.ts +0 -5
  140. package/lib/updaters/CallUpdater.d.ts.map +0 -1
  141. package/lib/updaters/CallUpdater.js +0 -2
  142. package/lib/updaters/ObserverUpdater.d.ts +0 -5
  143. package/lib/updaters/ObserverUpdater.d.ts.map +0 -1
  144. package/lib/updaters/ObserverUpdater.js +0 -2
  145. package/lib/updaters/OnAllCallObserverUpdater.d.ts +0 -15
  146. package/lib/updaters/OnAllCallObserverUpdater.d.ts.map +0 -1
  147. package/lib/updaters/OnAllCallObserverUpdater.js +0 -50
  148. package/lib/updaters/OnAllClientCallUpdater.d.ts +0 -15
  149. package/lib/updaters/OnAllClientCallUpdater.d.ts.map +0 -1
  150. package/lib/updaters/OnAllClientCallUpdater.js +0 -53
  151. package/lib/updaters/OnAnyCallObserverUpdater.d.ts +0 -12
  152. package/lib/updaters/OnAnyCallObserverUpdater.d.ts.map +0 -1
  153. package/lib/updaters/OnAnyCallObserverUpdater.js +0 -37
  154. package/lib/updaters/OnAnyClientCallUpdater.d.ts +0 -12
  155. package/lib/updaters/OnAnyClientCallUpdater.d.ts.map +0 -1
  156. package/lib/updaters/OnAnyClientCallUpdater.js +0 -36
  157. package/lib/updaters/OnIntervalUpdater.d.ts +0 -10
  158. package/lib/updaters/OnIntervalUpdater.d.ts.map +0 -1
  159. package/lib/updaters/OnIntervalUpdater.js +0 -17
  160. package/lib/updaters/Updater.d.ts +0 -6
  161. package/lib/updaters/Updater.d.ts.map +0 -1
  162. package/lib/updaters/Updater.js +0 -2
  163. package/lib/utils/MediasoupRemoteTrackResolver.d.ts +0 -25
  164. package/lib/utils/MediasoupRemoteTrackResolver.d.ts.map +0 -1
  165. package/lib/utils/MediasoupRemoteTrackResolver.js +0 -110
  166. package/lib/utils/RemoteTrackResolver.d.ts +0 -7
  167. package/lib/utils/RemoteTrackResolver.d.ts.map +0 -1
  168. package/lib/utils/RemoteTrackResolver.js +0 -2
  169. package/src/ObservedCall.ts +0 -342
  170. package/src/ObservedCallEventMonitor.ts +0 -392
  171. package/src/ObservedCallSummary.ts +0 -22
  172. package/src/ObservedCertificate.ts +0 -43
  173. package/src/ObservedClient.ts +0 -807
  174. package/src/ObservedClientEventMonitor.ts +0 -309
  175. package/src/ObservedClientSummary.ts +0 -24
  176. package/src/ObservedCodec.ts +0 -49
  177. package/src/ObservedDataChannel.ts +0 -85
  178. package/src/ObservedIceCandidate.ts +0 -64
  179. package/src/ObservedIceCandidatePair.ts +0 -134
  180. package/src/ObservedIceTransport.ts +0 -99
  181. package/src/ObservedInboundRtp.ts +0 -205
  182. package/src/ObservedInboundTrack.ts +0 -75
  183. package/src/ObservedMediaPlayout.ts +0 -49
  184. package/src/ObservedMediaSource.ts +0 -60
  185. package/src/ObservedOutboundRtp.ts +0 -156
  186. package/src/ObservedOutboundTrack.ts +0 -74
  187. package/src/ObservedPeerConnection.ts +0 -1088
  188. package/src/ObservedPeerConnectionTransport.ts +0 -38
  189. package/src/ObservedRemoteInboundRtp.ts +0 -64
  190. package/src/ObservedRemoteOutboundRtp.ts +0 -65
  191. package/src/ObservedTURN.ts +0 -86
  192. package/src/ObservedTurnServer.ts +0 -72
  193. package/src/Observer.ts +0 -251
  194. package/src/ObserverEventMonitor.ts +0 -551
  195. package/src/ObserverSummary.ts +0 -15
  196. package/src/common/Middleware.ts +0 -84
  197. package/src/common/SingleExecutor.ts +0 -36
  198. package/src/common/logger.ts +0 -82
  199. package/src/common/types.ts +0 -4
  200. package/src/common/utils.ts +0 -69
  201. package/src/detectors/Detector.ts +0 -6
  202. package/src/detectors/Detectors.ts +0 -38
  203. package/src/index.ts +0 -28
  204. package/src/mediasoup/ObservedMediaRouter.ts +0 -10
  205. package/src/monitors/TurnUsageMonitor.ts +0 -187
  206. package/src/schema/ClientEventTypes.ts +0 -280
  207. package/src/schema/ClientMetaTypes.ts +0 -41
  208. package/src/schema/ClientSample.ts +0 -1682
  209. package/src/scores/CalculatedScore.ts +0 -6
  210. package/src/scores/DefaultCallScoreCalculator.ts +0 -23
  211. package/src/scores/ScoreCalculator.ts +0 -3
  212. package/src/updaters/CallUpdater.ts +0 -5
  213. package/src/updaters/ObserverUpdater.ts +0 -5
  214. package/src/updaters/OnAllCallObserverUpdater.ts +0 -59
  215. package/src/updaters/OnAllClientCallUpdater.ts +0 -61
  216. package/src/updaters/OnAnyCallObserverUpdater.ts +0 -41
  217. package/src/updaters/OnAnyClientCallUpdater.ts +0 -39
  218. package/src/updaters/OnIntervalUpdater.ts +0 -19
  219. package/src/updaters/Updater.ts +0 -5
  220. package/src/utils/MediasoupRemoteTrackResolver.ts +0 -155
  221. package/src/utils/RemoteTrackResolver.ts +0 -12
  222. package/tsconfig.json +0 -19
  223. package/tslint.json +0 -6
@@ -1,82 +0,0 @@
1
- export interface Logger {
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- trace(...args: any[]): void;
4
- /* eslint-disable @typescript-eslint/no-explicit-any */
5
- debug(...args: any[]): void;
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- info(...args: any[]): void;
8
- /* eslint-disable @typescript-eslint/no-explicit-any */
9
- warn(...args: any[]): void;
10
- /* eslint-disable @typescript-eslint/no-explicit-any */
11
- error(...args: any[]): void;
12
- }
13
-
14
- export interface ObserverLogger {
15
- /* eslint-disable @typescript-eslint/no-explicit-any */
16
- trace(module: string, ...args: any[]): void;
17
- /* eslint-disable @typescript-eslint/no-explicit-any */
18
- debug(module: string, ...args: any[]): void;
19
- /* eslint-disable @typescript-eslint/no-explicit-any */
20
- info(module: string, ...args: any[]): void;
21
- /* eslint-disable @typescript-eslint/no-explicit-any */
22
- warn(module: string, ...args: any[]): void;
23
- /* eslint-disable @typescript-eslint/no-explicit-any */
24
- error(module: string, ...args: any[]): void;
25
- }
26
-
27
- let mainLogger: ObserverLogger = new class implements ObserverLogger {
28
- trace = () => void 0;
29
- // trace(module: string, ...args: any[]) {
30
- // // eslint-disable-next-line no-console
31
- // console.log(`[TRACE] ${module}`, ...args);
32
- // }
33
-
34
- debug(module: string, ...args: any[]) {
35
- // eslint-disable-next-line no-console
36
- console.log(`[DEBUG] ${module}`, ...args);
37
- }
38
-
39
- info(module: string, ...args: any[]) {
40
- // eslint-disable-next-line no-console
41
- console.info(`[INFO] ${module}`, ...args);
42
- }
43
-
44
- warn(module: string, ...args: any[]) {
45
- // eslint-disable-next-line no-console
46
- console.warn(`[WARN] ${module}`, ...args);
47
- }
48
-
49
- error(module: string, ...args: any[]) {
50
- // eslint-disable-next-line no-console
51
- console.error(`[ERROR] ${module}`, ...args);
52
- }
53
- }();
54
-
55
- export function createLogger(moduleName: string): Logger {
56
- return new class implements Logger {
57
- trace(...args: any[]) {
58
- mainLogger.trace(moduleName, ...args);
59
- }
60
-
61
- debug(...args: any[]) {
62
- mainLogger.debug(moduleName, ...args);
63
- }
64
-
65
- info(...args: any[]) {
66
- mainLogger.info(moduleName, ...args);
67
- }
68
-
69
- warn(...args: any[]) {
70
- mainLogger.warn(moduleName, ...args);
71
- }
72
-
73
- error(...args: any[]) {
74
- mainLogger.error(moduleName, ...args);
75
- }
76
-
77
- }();
78
- }
79
-
80
- export function setObserverLogger(logger: ObserverLogger) {
81
- mainLogger = logger;
82
- }
@@ -1,4 +0,0 @@
1
- export type MediaKind = 'audio' | 'video';
2
- export type SupportedVideoCodecType = 'vp8' | 'vp9' | 'h264' | 'h265';
3
-
4
- // export type EvaluatorMiddleware = Middleware<EvaluatorContext>;
@@ -1,69 +0,0 @@
1
- export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
2
-
3
- export type Writable<T> = T extends object ? { -readonly [K in keyof T]: Writable<T[K]> } : T;
4
-
5
- export function iteratorConverter<T>(generator: Generator<T, void, undefined>): IterableIterator<T> {
6
- return {
7
- [Symbol.iterator](): IterableIterator<T> {
8
- return this;
9
- },
10
- next(): IteratorResult<T> {
11
- return generator.next();
12
- },
13
- };
14
- }
15
-
16
- export function asyncIteratorConverter<T>(generator: AsyncGenerator<T, void, undefined>): AsyncIterableIterator<T> {
17
- return {
18
- [Symbol.asyncIterator](): AsyncIterableIterator<T> {
19
- return this;
20
- },
21
- next(): Promise<IteratorResult<T>> {
22
- return generator.next();
23
- },
24
- };
25
- }
26
-
27
- export function isValidUuid(str: string): boolean {
28
- const regexp = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
29
-
30
- return regexp.test(str);
31
- }
32
-
33
- export function getAverage(arr: number[], defaultAvgIfArrLengthIs0 = 0): number {
34
- if (arr.length === 0) return defaultAvgIfArrLengthIs0;
35
-
36
- return arr.reduce((a, b) => a + b, 0) / arr.length;
37
- }
38
-
39
- export function getMedian(arr: number[], copyArrayForSorting = true): number {
40
- // Sort the array in ascending order
41
- const sortedArr = copyArrayForSorting
42
- ? arr.slice().sort((a, b) => a - b)
43
- : arr.sort((a, b) => a-b)
44
-
45
- ;
46
-
47
- // Calculate the middle index
48
- const mid = Math.floor(sortedArr.length / 2);
49
-
50
- // If the array length is odd, return the middle element
51
- if (sortedArr.length % 2 !== 0) {
52
- return sortedArr[mid];
53
- }
54
-
55
- // If the array length is even, return the average of the two middle elements
56
- return (sortedArr[mid - 1] + sortedArr[mid]) / 2;
57
- }
58
-
59
- export function parseJsonAs<T>(json?: string): T | undefined {
60
- if (!json) {
61
- return undefined;
62
- }
63
-
64
- try {
65
- return JSON.parse(json) as T;
66
- } catch (error) {
67
- return undefined;
68
- }
69
- }
@@ -1,6 +0,0 @@
1
- // import { AlertState } from "../ClientMonitor";
2
-
3
- export interface Detector {
4
- readonly name: string;
5
- update(): void;
6
- }
@@ -1,38 +0,0 @@
1
- import { createLogger } from '../common/logger';
2
- import { Detector } from './Detector';
3
-
4
- const logger = createLogger('Detectors');
5
-
6
- export class Detectors {
7
- private _detectors: Detector[];
8
-
9
- public constructor(...detectors: Detector[]) {
10
- this._detectors = detectors;
11
- }
12
-
13
- public add(detector: Detector) {
14
- this._detectors.push(detector);
15
- }
16
-
17
- public remove(detector: Detector) {
18
- this._detectors = this._detectors.filter((d) => d !== detector);
19
- }
20
-
21
- get listOfNames() {
22
- return this._detectors.map((d) => d.name);
23
- }
24
-
25
- public update() {
26
- for (const detector of this._detectors) {
27
- try {
28
- detector.update();
29
- } catch (err) {
30
- logger.warn(`Error updating detector ${detector?.constructor?.name}`, err);
31
- }
32
- }
33
- }
34
-
35
- public clear() {
36
- this._detectors = [];
37
- }
38
- }
package/src/index.ts DELETED
@@ -1,28 +0,0 @@
1
- export type { ObserverEvents } from './Observer';
2
-
3
- export { Observer } from './Observer';
4
- export { ObservedCall } from './ObservedCall';
5
- export { ObservedInboundTrack } from './ObservedInboundTrack';
6
- export { ObservedOutboundTrack } from './ObservedOutboundTrack';
7
- export { ObservedClient } from './ObservedClient';
8
- export { ObservedPeerConnection } from './ObservedPeerConnection';
9
- export { ObservedMediaSource } from './ObservedMediaSource';
10
- export { ObservedMediaPlayout } from './ObservedMediaPlayout';
11
- export { ObservedCodec } from './ObservedCodec';
12
- export { ObservedCertificate } from './ObservedCertificate';
13
- export { ObservedDataChannel } from './ObservedDataChannel';
14
- export { ObservedInboundRtp } from './ObservedInboundRtp';
15
- export { ObservedOutboundRtp } from './ObservedOutboundRtp';
16
- export { ObservedRemoteInboundRtp } from './ObservedRemoteInboundRtp';
17
- export { ObservedRemoteOutboundRtp } from './ObservedRemoteOutboundRtp';
18
- export { ObservedIceCandidatePair } from './ObservedIceCandidatePair';
19
- export { ObservedIceCandidate } from './ObservedIceCandidate';
20
- export { ObservedIceTransport } from './ObservedIceTransport';
21
- export { ObservedPeerConnectionTransport } from './ObservedPeerConnectionTransport';
22
- export { ClientEventTypes } from './schema/ClientEventTypes';
23
- export { ClientMetaTypes } from './schema/ClientMetaTypes';
24
- export { ClientSample, ClientIssue, ClientEvent, ClientMetaData } from './schema/ClientSample';
25
- export { ScoreCalculator } from './scores/ScoreCalculator';
26
- export { ObservedClientEventMonitor } from './ObservedClientEventMonitor';
27
- export { ObserverEventMonitor } from './ObserverEventMonitor';
28
- export { Middleware } from './common/Middleware';
@@ -1,10 +0,0 @@
1
- export type Item = {
2
- callId: string;
3
- appData?: Record<string, unknown>;
4
- region: string;
5
- publishers: string[];
6
- subscribers: string[];
7
- }
8
- export class ObservedMediaRouter {
9
-
10
- }
@@ -1,187 +0,0 @@
1
- // import { EventEmitter } from 'events';
2
- // import { ObservedPeerConnection } from '../ObservedPeerConnection';
3
- // import { ObservedICEEvents } from '../ObservedICE';
4
- // import { ObservedClient } from '../ObservedClient';
5
-
6
- // export type TurnUsageMonitorEvents = {
7
- // close: [],
8
- // 'newturnip': [string],
9
- // update: [TurnUsage],
10
- // addpeerconnection: [ObservedPeerConnection],
11
- // removepeerconnection: [ObservedPeerConnection],
12
- // }
13
-
14
- // export type TurnUsage = {
15
- // turnIp: string;
16
- // totalBytesSent: number;
17
- // totalBytesReceived: number;
18
- // totalPacketsSent: number;
19
- // totalPacketsReceived: number;
20
- // }
21
-
22
- // export type TurnStats = {
23
- // turnIp: string;
24
- // totalBytesSent: number;
25
- // totalBytesReceived: number;
26
- // totalPacketsSent: number;
27
- // totalPacketsReceived: number;
28
- // deltaBytesSent: number;
29
- // deltaBytesReceived: number;
30
- // timestamp: number;
31
- // outboundBitrate: number;
32
- // inboundBitrate: number;
33
- // }
34
-
35
- // type ObservedConnection = {
36
- // peerConnection: ObservedPeerConnection,
37
- // onUpdate: (...e: ObservedICEEvents['update']) => void;
38
-
39
- // }
40
-
41
- // export declare interface TurnUsageMonitor {
42
- // on<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
43
- // off<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
44
- // once<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
45
- // emit<U extends keyof TurnUsageMonitorEvents>(event: U, ...args: TurnUsageMonitorEvents[U]): boolean;
46
- // }
47
-
48
- // export class TurnUsageMonitor extends EventEmitter {
49
- // private readonly _connections = new Map<string, ObservedConnection>();
50
- // private readonly _turnUsage = new Map<string, TurnUsage>();
51
- // private readonly _stats = new Map<string, TurnStats>();
52
-
53
- // private _closed = false;
54
- // public constructor() {
55
- // super();
56
- // this.setMaxListeners(Infinity);
57
- // }
58
-
59
- // public get stats(): TurnStats[] {
60
- // const result: TurnStats[] = [];
61
-
62
- // for (const [ turnIp, usage ] of this._turnUsage) {
63
- // const stats = this._stats.get(turnIp) ?? {
64
- // turnIp,
65
- // totalBytesSent: 0,
66
- // totalBytesReceived: 0,
67
- // totalPacketsSent: 0,
68
- // totalPacketsReceived: 0,
69
- // deltaBytesSent: 0,
70
- // deltaBytesReceived: 0,
71
- // timestamp: Date.now(),
72
- // outboundBitrate: 0,
73
- // inboundBitrate: 0,
74
- // };
75
-
76
- // stats.deltaBytesSent = usage.totalBytesSent - stats.totalBytesSent;
77
- // stats.deltaBytesReceived = usage.totalBytesReceived - stats.totalBytesReceived;
78
- // stats.timestamp = Date.now();
79
- // stats.outboundBitrate = (stats.deltaBytesSent * 8) / ((stats.timestamp - stats.timestamp) / 1000.0);
80
- // stats.inboundBitrate = (stats.deltaBytesReceived * 8) / ((stats.timestamp - stats.timestamp) / 1000.0);
81
- // stats.totalBytesSent = usage.totalBytesSent;
82
- // stats.totalBytesReceived = usage.totalBytesReceived;
83
- // stats.totalPacketsSent = usage.totalPacketsSent;
84
- // stats.totalPacketsReceived = usage.totalPacketsReceived;
85
-
86
- // this._stats.set(turnIp, stats);
87
-
88
- // result.push(stats);
89
- // }
90
-
91
- // return result;
92
- // }
93
-
94
- // public addPeerConnection(peerConnection: ObservedPeerConnection) {
95
- // if (this.closed) return;
96
- // if (this._connections.has(peerConnection.peerConnectionId)) return;
97
-
98
- // const ice = peerConnection.ICE;
99
-
100
- // const onUpdate = () => {
101
- // const turnIp = ice?.selectedRemoteCandidate?.address;
102
-
103
- // if (!peerConnection.usingTURN || !turnIp) return;
104
-
105
- // let usage = this._turnUsage.get(turnIp);
106
-
107
- // if (!usage) {
108
- // usage = {
109
- // turnIp,
110
- // totalBytesSent: 0,
111
- // totalBytesReceived: 0,
112
- // totalPacketsSent: 0,
113
- // totalPacketsReceived: 0,
114
- // };
115
- // this._turnUsage.set(turnIp, usage);
116
-
117
- // this.emit('newturnip', turnIp);
118
- // }
119
-
120
- // usage.totalBytesSent += ice.deltaBytesSent;
121
- // usage.totalBytesReceived += ice.deltaBytesReceived;
122
- // usage.totalPacketsSent += ice.deltaPacketsSent;
123
- // usage.totalPacketsReceived += ice.deltaPacketsReceived;
124
-
125
- // this.emit('update', usage);
126
- // };
127
-
128
- // peerConnection.ICE.on('update', onUpdate);
129
-
130
- // this._connections.set(peerConnection.peerConnectionId, {
131
- // peerConnection,
132
- // onUpdate
133
- // });
134
-
135
- // this.emit('addpeerconnection', peerConnection);
136
- // }
137
-
138
- // public removePeerConnection(peerConnection: ObservedPeerConnection) {
139
- // if (this.closed) return;
140
- // if (!this._connections.has(peerConnection.peerConnectionId)) return;
141
-
142
- // const { onUpdate } = this._connections.get(peerConnection.peerConnectionId) ?? {};
143
-
144
- // if (!onUpdate) return;
145
-
146
- // peerConnection.ICE.off('update', onUpdate);
147
-
148
- // this._connections.delete(peerConnection.peerConnectionId);
149
-
150
- // this.emit('removepeerconnection', peerConnection);
151
- // }
152
-
153
- // public get turnIps() {
154
- // return Array.from(this._turnUsage.keys());
155
- // }
156
-
157
- // public get peerConnections() {
158
- // return Array.from(this._connections.values()).map(({ peerConnection }) => peerConnection);
159
- // }
160
-
161
- // public getUsage(turnIp: string) {
162
- // return this._turnUsage.get(turnIp);
163
- // }
164
-
165
- // public get clients(): ReadonlyMap<string, ObservedClient> {
166
- // const result = new Map<string, ObservedClient>();
167
-
168
- // for (const pc of this.peerConnections) {
169
- // if (result.has(pc.clientId)) continue;
170
-
171
- // result.set(pc.clientId, pc.client);
172
- // }
173
-
174
- // return result;
175
- // }
176
-
177
- // public get closed() {
178
- // return this._closed;
179
- // }
180
-
181
- // public close() {
182
- // if (this._closed) return;
183
- // this._closed = true;
184
-
185
- // this.emit('close');
186
- // }
187
- // }