@observertc/observer-js 1.0.1-ec27289.0 → 1.1.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.
Files changed (210) hide show
  1. package/README.md +2184 -1
  2. package/dist/index.d.mts +6842 -0
  3. package/dist/index.d.ts +6842 -0
  4. package/dist/index.js +7736 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/index.mjs +7608 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/package.json +44 -18
  9. package/.eslintrc.json +0 -143
  10. package/.prettierignore +0 -5
  11. package/.prettierrc +0 -7
  12. package/jest.config.js +0 -9
  13. package/lib/ObservedCall.d.ts +0 -83
  14. package/lib/ObservedCall.d.ts.map +0 -1
  15. package/lib/ObservedCall.js +0 -203
  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 -131
  23. package/lib/ObservedClient.d.ts.map +0 -1
  24. package/lib/ObservedClient.js +0 -520
  25. package/lib/ObservedClientEventMonitor.d.ts +0 -89
  26. package/lib/ObservedClientEventMonitor.d.ts.map +0 -1
  27. package/lib/ObservedClientEventMonitor.js +0 -247
  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 -44
  41. package/lib/ObservedIceCandidatePair.d.ts.map +0 -1
  42. package/lib/ObservedIceCandidatePair.js +0 -111
  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 -31
  50. package/lib/ObservedInboundTrack.d.ts.map +0 -1
  51. package/lib/ObservedInboundTrack.js +0 -59
  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 -31
  62. package/lib/ObservedOutboundTrack.d.ts.map +0 -1
  63. package/lib/ObservedOutboundTrack.js +0 -59
  64. package/lib/ObservedPeerConnection.d.ts +0 -185
  65. package/lib/ObservedPeerConnection.d.ts.map +0 -1
  66. package/lib/ObservedPeerConnection.js +0 -710
  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 -61
  83. package/lib/Observer.d.ts.map +0 -1
  84. package/lib/Observer.js +0 -156
  85. package/lib/ObserverSummary.d.ts +0 -13
  86. package/lib/ObserverSummary.d.ts.map +0 -1
  87. package/lib/ObserverSummary.js +0 -2
  88. package/lib/common/Middleware.d.ts +0 -17
  89. package/lib/common/Middleware.d.ts.map +0 -1
  90. package/lib/common/Middleware.js +0 -60
  91. package/lib/common/SingleExecutor.d.ts +0 -3
  92. package/lib/common/SingleExecutor.d.ts.map +0 -1
  93. package/lib/common/SingleExecutor.js +0 -31
  94. package/lib/common/logger.d.ts +0 -17
  95. package/lib/common/logger.d.ts.map +0 -1
  96. package/lib/common/logger.js +0 -50
  97. package/lib/common/types.d.ts +0 -3
  98. package/lib/common/types.d.ts.map +0 -1
  99. package/lib/common/types.js +0 -3
  100. package/lib/common/utils.d.ts +0 -11
  101. package/lib/common/utils.d.ts.map +0 -1
  102. package/lib/common/utils.js +0 -63
  103. package/lib/detectors/Detector.d.ts +0 -5
  104. package/lib/detectors/Detector.d.ts.map +0 -1
  105. package/lib/detectors/Detector.js +0 -3
  106. package/lib/detectors/Detectors.d.ts +0 -11
  107. package/lib/detectors/Detectors.d.ts.map +0 -1
  108. package/lib/detectors/Detectors.js +0 -34
  109. package/lib/index.d.ts +0 -27
  110. package/lib/index.d.ts.map +0 -1
  111. package/lib/index.js +0 -47
  112. package/lib/monitors/TurnUsageMonitor.d.ts +0 -1
  113. package/lib/monitors/TurnUsageMonitor.d.ts.map +0 -1
  114. package/lib/monitors/TurnUsageMonitor.js +0 -146
  115. package/lib/schema/ClientEventTypes.d.ts +0 -100
  116. package/lib/schema/ClientEventTypes.d.ts.map +0 -1
  117. package/lib/schema/ClientEventTypes.js +0 -38
  118. package/lib/schema/ClientMetaTypes.d.ts +0 -34
  119. package/lib/schema/ClientMetaTypes.d.ts.map +0 -1
  120. package/lib/schema/ClientMetaTypes.js +0 -16
  121. package/lib/schema/ClientSample.d.ts +0 -1333
  122. package/lib/schema/ClientSample.d.ts.map +0 -1
  123. package/lib/schema/ClientSample.js +0 -4
  124. package/lib/scores/CalculatedScore.d.ts +0 -6
  125. package/lib/scores/CalculatedScore.d.ts.map +0 -1
  126. package/lib/scores/CalculatedScore.js +0 -2
  127. package/lib/scores/DefaultCallScoreCalculator.d.ts +0 -7
  128. package/lib/scores/DefaultCallScoreCalculator.d.ts.map +0 -1
  129. package/lib/scores/DefaultCallScoreCalculator.js +0 -21
  130. package/lib/scores/ScoreCalculator.d.ts +0 -4
  131. package/lib/scores/ScoreCalculator.d.ts.map +0 -1
  132. package/lib/scores/ScoreCalculator.js +0 -2
  133. package/lib/updaters/CallUpdater.d.ts +0 -5
  134. package/lib/updaters/CallUpdater.d.ts.map +0 -1
  135. package/lib/updaters/CallUpdater.js +0 -2
  136. package/lib/updaters/ObserverUpdater.d.ts +0 -5
  137. package/lib/updaters/ObserverUpdater.d.ts.map +0 -1
  138. package/lib/updaters/ObserverUpdater.js +0 -2
  139. package/lib/updaters/OnAllCallObserverUpdater_.d.ts +0 -13
  140. package/lib/updaters/OnAllCallObserverUpdater_.d.ts.map +0 -1
  141. package/lib/updaters/OnAllCallObserverUpdater_.js +0 -38
  142. package/lib/updaters/OnAllClientCallUpdater.d.ts +0 -13
  143. package/lib/updaters/OnAllClientCallUpdater.d.ts.map +0 -1
  144. package/lib/updaters/OnAllClientCallUpdater.js +0 -37
  145. package/lib/updaters/OnAnyCallObserverUpdater_.d.ts +0 -11
  146. package/lib/updaters/OnAnyCallObserverUpdater_.d.ts.map +0 -1
  147. package/lib/updaters/OnAnyCallObserverUpdater_.js +0 -27
  148. package/lib/updaters/OnAnyClientCallUpdater.d.ts +0 -11
  149. package/lib/updaters/OnAnyClientCallUpdater.d.ts.map +0 -1
  150. package/lib/updaters/OnAnyClientCallUpdater.js +0 -27
  151. package/lib/updaters/OnIntervalUpdater.d.ts +0 -10
  152. package/lib/updaters/OnIntervalUpdater.d.ts.map +0 -1
  153. package/lib/updaters/OnIntervalUpdater.js +0 -17
  154. package/lib/updaters/Updater.d.ts +0 -6
  155. package/lib/updaters/Updater.d.ts.map +0 -1
  156. package/lib/updaters/Updater.js +0 -2
  157. package/lib/utils/RemoteTrackResolver.d.ts +0 -7
  158. package/lib/utils/RemoteTrackResolver.d.ts.map +0 -1
  159. package/lib/utils/RemoteTrackResolver.js +0 -2
  160. package/src/ObservedCall.ts +0 -322
  161. package/src/ObservedCallSummary.ts +0 -22
  162. package/src/ObservedCertificate.ts +0 -43
  163. package/src/ObservedClient.ts +0 -673
  164. package/src/ObservedClientEventMonitor.ts +0 -301
  165. package/src/ObservedClientSummary.ts +0 -24
  166. package/src/ObservedCodec.ts +0 -49
  167. package/src/ObservedDataChannel.ts +0 -85
  168. package/src/ObservedIceCandidate.ts +0 -64
  169. package/src/ObservedIceCandidatePair.ts +0 -118
  170. package/src/ObservedIceTransport.ts +0 -99
  171. package/src/ObservedInboundRtp.ts +0 -205
  172. package/src/ObservedInboundTrack.ts +0 -73
  173. package/src/ObservedMediaPlayout.ts +0 -49
  174. package/src/ObservedMediaSource.ts +0 -60
  175. package/src/ObservedOutboundRtp.ts +0 -156
  176. package/src/ObservedOutboundTrack.ts +0 -72
  177. package/src/ObservedPeerConnection.ts +0 -1019
  178. package/src/ObservedPeerConnectionTransport.ts +0 -38
  179. package/src/ObservedRemoteInboundRtp.ts +0 -64
  180. package/src/ObservedRemoteOutboundRtp.ts +0 -65
  181. package/src/ObservedTURN.ts +0 -86
  182. package/src/ObservedTurnServer.ts +0 -72
  183. package/src/Observer.ts +0 -239
  184. package/src/ObserverSummary.ts +0 -15
  185. package/src/common/Middleware.ts +0 -84
  186. package/src/common/SingleExecutor.ts +0 -36
  187. package/src/common/logger.ts +0 -82
  188. package/src/common/types.ts +0 -4
  189. package/src/common/utils.ts +0 -69
  190. package/src/detectors/Detector.ts +0 -6
  191. package/src/detectors/Detectors.ts +0 -38
  192. package/src/index.ts +0 -28
  193. package/src/monitors/TurnUsageMonitor.ts +0 -187
  194. package/src/schema/ClientEventTypes.ts +0 -112
  195. package/src/schema/ClientMetaTypes.ts +0 -41
  196. package/src/schema/ClientSample.ts +0 -1682
  197. package/src/scores/CalculatedScore.ts +0 -6
  198. package/src/scores/DefaultCallScoreCalculator.ts +0 -23
  199. package/src/scores/ScoreCalculator.ts +0 -3
  200. package/src/updaters/CallUpdater.ts +0 -5
  201. package/src/updaters/ObserverUpdater.ts +0 -5
  202. package/src/updaters/OnAllCallObserverUpdater_.ts +0 -46
  203. package/src/updaters/OnAllClientCallUpdater.ts +0 -46
  204. package/src/updaters/OnAnyCallObserverUpdater_.ts +0 -32
  205. package/src/updaters/OnAnyClientCallUpdater.ts +0 -32
  206. package/src/updaters/OnIntervalUpdater.ts +0 -19
  207. package/src/updaters/Updater.ts +0 -5
  208. package/src/utils/RemoteTrackResolver.ts +0 -12
  209. package/tsconfig.json +0 -19
  210. package/tslint.json +0 -6
@@ -1,131 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'events';
3
- import { ObservedPeerConnection } from './ObservedPeerConnection';
4
- import { ClientEvent, ClientMetaData, ClientSample, ClientIssue, ExtensionStat } from './schema/ClientSample';
5
- import * as MetaData from './schema/ClientMetaTypes';
6
- import { ObservedCall } from './ObservedCall';
7
- import { CalculatedScore } from './scores/CalculatedScore';
8
- import { Detectors } from './detectors/Detectors';
9
- import { ObservedClientEventMonitor } from './ObservedClientEventMonitor';
10
- export type ObservedClientSettings<AppData extends Record<string, unknown> = Record<string, unknown>> = {
11
- clientId: string;
12
- appData?: AppData;
13
- };
14
- export type ObservedClientEvents = {
15
- update: [
16
- {
17
- sample: ClientSample;
18
- elapsedTimeInMs: number;
19
- }
20
- ];
21
- close: [];
22
- joined: [];
23
- issue: [ClientIssue];
24
- metaData: [ClientMetaData];
25
- rejoined: [timestamp: number];
26
- left: [];
27
- usingturn: [boolean];
28
- usermediaerror: [string];
29
- newpeerconnection: [ObservedPeerConnection];
30
- };
31
- export declare interface ObservedClient {
32
- on<U extends keyof ObservedClientEvents>(event: U, listener: (...args: ObservedClientEvents[U]) => void): this;
33
- off<U extends keyof ObservedClientEvents>(event: U, listener: (...args: ObservedClientEvents[U]) => void): this;
34
- once<U extends keyof ObservedClientEvents>(event: U, listener: (...args: ObservedClientEvents[U]) => void): this;
35
- emit<U extends keyof ObservedClientEvents>(event: U, ...args: ObservedClientEvents[U]): boolean;
36
- }
37
- export declare class ObservedClient<AppData extends Record<string, unknown> = Record<string, unknown>> extends EventEmitter {
38
- readonly call: ObservedCall;
39
- readonly detectors: Detectors;
40
- readonly clientId: string;
41
- readonly observedPeerConnections: Map<string, ObservedPeerConnection>;
42
- readonly calculatedScore: CalculatedScore;
43
- appData: AppData;
44
- attachments?: Record<string, unknown>;
45
- updated: number;
46
- acceptedSamples: number;
47
- closed: boolean;
48
- joinedAt?: number;
49
- leftAt?: number;
50
- closedAt?: number;
51
- operationSystem?: MetaData.OperationSystem;
52
- engine?: MetaData.Engine;
53
- platform?: MetaData.Platform;
54
- browser?: MetaData.Browser;
55
- mediaConstraints: string[];
56
- usingTURN: boolean;
57
- usingTCP: boolean;
58
- availableOutgoingBitrate: number;
59
- availableIncomingBitrate: number;
60
- totalInboundPacketsLost: number;
61
- totalInboundPacketsReceived: number;
62
- totalOutboundPacketsSent: number;
63
- totalDataChannelBytesSent: number;
64
- totalDataChannelBytesReceived: number;
65
- totalDataChannelMessagesSent: number;
66
- totalDataChannelMessagesReceived: number;
67
- totalReceivedAudioBytes: number;
68
- totalReceivedVideoBytes: number;
69
- totalSentAudioBytes: number;
70
- totalSentVideoBytes: number;
71
- totalSentBytes: number;
72
- totalReceivedBytes: number;
73
- deltaReceivedAudioBytes: number;
74
- deltaReceivedVideoBytes: number;
75
- deltaSentAudioBytes: number;
76
- deltaSentVideoBytes: number;
77
- deltaDataChannelBytesSent: number;
78
- deltaDataChannelBytesReceived: number;
79
- deltaDataChannelMessagesSent: number;
80
- deltaDataChannelMessagesReceived: number;
81
- deltaInboundPacketsLost: number;
82
- deltaInboundPacketsReceived: number;
83
- deltaOutboundPacketsSent: number;
84
- deltaTransportSentBytes: number;
85
- deltaTransportReceivedBytes: number;
86
- deltaRttLt50Measurements: number;
87
- deltaRttLt150Measurements: number;
88
- deltaRttLt300Measurements: number;
89
- deltaRttGtOrEq300Measurements: number;
90
- currentMaxRttInMs?: number;
91
- currentMinRttInMs?: number;
92
- currentAvgRttInMs?: number;
93
- sendingAudioBitrate: number;
94
- sendingVideoBitrate: number;
95
- receivingAudioBitrate: number;
96
- receivingVideoBitrate: number;
97
- numberOfInboundRtpStreams: number;
98
- numberOfInbundTracks: number;
99
- numberOfOutboundRtpStreams: number;
100
- numberOfOutboundTracks: number;
101
- numberOfDataChannels: number;
102
- totalRttLt50Measurements: number;
103
- totalRttLt150Measurements: number;
104
- totalRttLt300Measurements: number;
105
- totalRttGtOrEq300Measurements: number;
106
- deltaNumberOfIssues: number;
107
- totalScoreSum: number;
108
- numberOfScoreMeasurements: number;
109
- totalNumberOfIssues: number;
110
- readonly mediaDevices: MetaData.MediaDeviceInfo[];
111
- issues: ClientIssue[];
112
- private _injections;
113
- constructor(settings: ObservedClientSettings<AppData>, call: ObservedCall);
114
- get numberOfPeerConnections(): number;
115
- get score(): number | undefined;
116
- close(): void;
117
- accept(sample: ClientSample): void;
118
- private _processClientEvent;
119
- injectMetaData(metaData: ClientMetaData): void;
120
- injectEvent(event: ClientEvent): void;
121
- injectIssue(issue: ClientIssue): void;
122
- injectExtensionStat(stat: ExtensionStat): void;
123
- injectAttachment(key: string, value: unknown): void;
124
- addMetadata(metadata: ClientMetaData): void;
125
- addIssue(issue: ClientIssue): void;
126
- addExtensionStats(stats: ExtensionStat): void;
127
- private _updatePeerConnection;
128
- createEventMonitor<CTX = unknown>(ctx?: CTX): ObservedClientEventMonitor<CTX>;
129
- private _mergeInjections;
130
- }
131
- //# sourceMappingURL=ObservedClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ObservedClient.d.ts","sourceRoot":"","sources":["../src/ObservedClient.ts"],"names":[],"mappings":"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"}
@@ -1,520 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObservedClient = void 0;
4
- const events_1 = require("events");
5
- const ObservedPeerConnection_1 = require("./ObservedPeerConnection");
6
- const logger_1 = require("./common/logger");
7
- const ClientEventTypes_1 = require("./schema/ClientEventTypes");
8
- const ClientMetaTypes_1 = require("./schema/ClientMetaTypes");
9
- const utils_1 = require("./common/utils");
10
- const Detectors_1 = require("./detectors/Detectors");
11
- const ObservedClientEventMonitor_1 = require("./ObservedClientEventMonitor");
12
- const logger = (0, logger_1.createLogger)('ObservedClient');
13
- class ObservedClient extends events_1.EventEmitter {
14
- call;
15
- detectors;
16
- clientId;
17
- observedPeerConnections = new Map();
18
- calculatedScore = {
19
- weight: 1,
20
- value: undefined,
21
- };
22
- appData;
23
- attachments;
24
- updated = Date.now();
25
- acceptedSamples = 0;
26
- closed = false;
27
- joinedAt;
28
- leftAt;
29
- closedAt;
30
- // the timestamp of the CLIENT_JOINED event
31
- operationSystem;
32
- engine;
33
- platform;
34
- browser;
35
- mediaConstraints = [];
36
- usingTURN = false;
37
- usingTCP = false;
38
- availableOutgoingBitrate = 0;
39
- availableIncomingBitrate = 0;
40
- totalInboundPacketsLost = 0;
41
- totalInboundPacketsReceived = 0;
42
- totalOutboundPacketsSent = 0;
43
- totalDataChannelBytesSent = 0;
44
- totalDataChannelBytesReceived = 0;
45
- totalDataChannelMessagesSent = 0;
46
- totalDataChannelMessagesReceived = 0;
47
- totalReceivedAudioBytes = 0;
48
- totalReceivedVideoBytes = 0;
49
- totalSentAudioBytes = 0;
50
- totalSentVideoBytes = 0;
51
- totalSentBytes = 0;
52
- totalReceivedBytes = 0;
53
- deltaReceivedAudioBytes = 0;
54
- deltaReceivedVideoBytes = 0;
55
- deltaSentAudioBytes = 0;
56
- deltaSentVideoBytes = 0;
57
- deltaDataChannelBytesSent = 0;
58
- deltaDataChannelBytesReceived = 0;
59
- deltaDataChannelMessagesSent = 0;
60
- deltaDataChannelMessagesReceived = 0;
61
- deltaInboundPacketsLost = 0;
62
- deltaInboundPacketsReceived = 0;
63
- deltaOutboundPacketsSent = 0;
64
- deltaTransportSentBytes = 0;
65
- deltaTransportReceivedBytes = 0;
66
- deltaRttLt50Measurements = 0;
67
- deltaRttLt150Measurements = 0;
68
- deltaRttLt300Measurements = 0;
69
- deltaRttGtOrEq300Measurements = 0;
70
- currentMaxRttInMs;
71
- currentMinRttInMs;
72
- currentAvgRttInMs;
73
- sendingAudioBitrate = 0;
74
- sendingVideoBitrate = 0;
75
- receivingAudioBitrate = 0;
76
- receivingVideoBitrate = 0;
77
- numberOfInboundRtpStreams = 0;
78
- numberOfInbundTracks = 0;
79
- numberOfOutboundRtpStreams = 0;
80
- numberOfOutboundTracks = 0;
81
- numberOfDataChannels = 0;
82
- totalRttLt50Measurements = 0;
83
- totalRttLt150Measurements = 0;
84
- totalRttLt300Measurements = 0;
85
- totalRttGtOrEq300Measurements = 0;
86
- deltaNumberOfIssues = 0;
87
- totalScoreSum = 0;
88
- numberOfScoreMeasurements = 0;
89
- totalNumberOfIssues = 0;
90
- mediaDevices = [];
91
- issues = [];
92
- _injections = {};
93
- constructor(settings, call) {
94
- super();
95
- this.call = call;
96
- this.setMaxListeners(Infinity);
97
- this.clientId = settings.clientId;
98
- this.appData = settings.appData ?? {};
99
- this.detectors = new Detectors_1.Detectors();
100
- }
101
- get numberOfPeerConnections() {
102
- return this.observedPeerConnections.size;
103
- }
104
- get score() {
105
- return this.calculatedScore.value;
106
- }
107
- close() {
108
- if (this.closed)
109
- return;
110
- this.closed = true;
111
- Array.from(this.observedPeerConnections.values()).forEach((peerConnection) => peerConnection.close());
112
- this.closedAt = Date.now();
113
- this.emit('close');
114
- }
115
- accept(sample) {
116
- if (this.closed)
117
- throw new Error(`Client ${this.clientId} is closed`);
118
- const now = Date.now();
119
- const elapsedInMs = now - this.updated;
120
- const elapsedInSeconds = elapsedInMs / 1000;
121
- let sumOfRtts = 0;
122
- let numberOfRttMeasurements = 0;
123
- ++this.acceptedSamples;
124
- this.availableIncomingBitrate = 0;
125
- this.availableOutgoingBitrate = 0;
126
- this.deltaDataChannelBytesReceived = 0;
127
- this.deltaDataChannelBytesSent = 0;
128
- this.deltaDataChannelMessagesReceived = 0;
129
- this.deltaDataChannelMessagesSent = 0;
130
- this.deltaInboundPacketsLost = 0;
131
- this.deltaInboundPacketsReceived = 0;
132
- this.deltaOutboundPacketsSent = 0;
133
- this.deltaReceivedAudioBytes = 0;
134
- this.deltaReceivedVideoBytes = 0;
135
- this.deltaSentAudioBytes = 0;
136
- this.deltaSentVideoBytes = 0;
137
- this.deltaTransportReceivedBytes = 0;
138
- this.deltaTransportSentBytes = 0;
139
- this.deltaRttLt50Measurements = 0;
140
- this.deltaRttLt150Measurements = 0;
141
- this.deltaRttLt300Measurements = 0;
142
- this.deltaRttGtOrEq300Measurements = 0;
143
- this.deltaNumberOfIssues = 0;
144
- this.numberOfDataChannels = 0;
145
- this.numberOfInboundRtpStreams = 0;
146
- this.numberOfInbundTracks = 0;
147
- this.numberOfOutboundRtpStreams = 0;
148
- this.numberOfOutboundTracks = 0;
149
- this.usingTURN = false;
150
- this.usingTCP = false;
151
- this.currentMinRttInMs = undefined;
152
- this.currentMaxRttInMs = undefined;
153
- this._mergeInjections(sample);
154
- const clientEventsPostBuffer = [];
155
- for (const clientEvent of sample.clientEvents ?? []) {
156
- this._processClientEvent(clientEvent, clientEventsPostBuffer);
157
- this.call.observer.emit('client-event', this, clientEvent);
158
- }
159
- for (const metaData of sample.clientMetaItems ?? []) {
160
- this.addMetadata(metaData);
161
- }
162
- for (const issue of sample.clientIssues ?? []) {
163
- this.addIssue(issue);
164
- ++this.deltaNumberOfIssues;
165
- }
166
- for (const extensionStat of sample.extensionStats ?? []) {
167
- this.addExtensionStats(extensionStat);
168
- }
169
- for (const pcSample of sample.peerConnections ?? []) {
170
- const observedPeerConnection = this._updatePeerConnection(pcSample);
171
- if (!observedPeerConnection)
172
- continue;
173
- this.deltaDataChannelBytesReceived += observedPeerConnection.deltaDataChannelBytesReceived;
174
- this.deltaDataChannelBytesSent += observedPeerConnection.deltaDataChannelBytesSent;
175
- this.deltaDataChannelMessagesReceived += observedPeerConnection.deltaDataChannelMessagesReceived;
176
- this.deltaDataChannelMessagesSent += observedPeerConnection.deltaDataChannelMessagesSent;
177
- this.deltaInboundPacketsLost += observedPeerConnection.deltaInboundPacketsLost;
178
- this.deltaInboundPacketsReceived += observedPeerConnection.deltaInboundPacketsReceived;
179
- this.deltaOutboundPacketsSent += observedPeerConnection.deltaOutboundPacketsSent;
180
- this.deltaReceivedAudioBytes += observedPeerConnection.deltaReceivedAudioBytes;
181
- this.deltaReceivedVideoBytes += observedPeerConnection.deltaReceivedVideoBytes;
182
- this.deltaSentAudioBytes += observedPeerConnection.deltaSentAudioBytes;
183
- this.deltaSentVideoBytes += observedPeerConnection.deltaSentVideoBytes;
184
- this.deltaTransportReceivedBytes += observedPeerConnection.deltaTransportReceivedBytes;
185
- this.deltaTransportSentBytes += observedPeerConnection.deltaTransportSentBytes;
186
- this.availableIncomingBitrate += observedPeerConnection.availableIncomingBitrate;
187
- this.availableOutgoingBitrate += observedPeerConnection.availableOutgoingBitrate;
188
- this.numberOfDataChannels += observedPeerConnection.observedDataChannels.size;
189
- this.numberOfInbundTracks += observedPeerConnection.observedInboundTracks.size;
190
- this.numberOfOutboundRtpStreams += observedPeerConnection.observedOutboundRtps.size;
191
- this.numberOfOutboundTracks += observedPeerConnection.observedOutboundTracks.size;
192
- this.numberOfInboundRtpStreams += observedPeerConnection.observedInboundRtps.size;
193
- if (observedPeerConnection.usingTURN) {
194
- this.usingTURN = true;
195
- }
196
- if (observedPeerConnection.usingTCP) {
197
- this.usingTCP = true;
198
- }
199
- if (observedPeerConnection.currentRttInMs) {
200
- if (this.currentMinRttInMs === undefined || observedPeerConnection.currentRttInMs < this.currentMinRttInMs) {
201
- this.currentMinRttInMs = observedPeerConnection.currentRttInMs;
202
- }
203
- if (this.currentMaxRttInMs === undefined || observedPeerConnection.currentRttInMs > this.currentMaxRttInMs) {
204
- this.currentMaxRttInMs = observedPeerConnection.currentRttInMs;
205
- }
206
- if (observedPeerConnection.currentRttInMs < 50) {
207
- this.deltaRttLt50Measurements += 1;
208
- }
209
- else if (observedPeerConnection.currentRttInMs < 150) {
210
- this.deltaRttLt150Measurements += 1;
211
- }
212
- else if (observedPeerConnection.currentRttInMs < 300) {
213
- this.deltaRttLt300Measurements += 1;
214
- }
215
- else if (300 <= observedPeerConnection.currentRttInMs) {
216
- this.deltaRttGtOrEq300Measurements += 1;
217
- }
218
- sumOfRtts += observedPeerConnection.currentRttInMs;
219
- ++numberOfRttMeasurements;
220
- }
221
- }
222
- for (const clientEvent of clientEventsPostBuffer) {
223
- this._processClientEvent(clientEvent);
224
- }
225
- // emit new attachments?
226
- this.attachments = sample.attachments;
227
- this.totalDataChannelBytesReceived += this.deltaDataChannelBytesReceived;
228
- this.totalDataChannelBytesSent += this.deltaDataChannelBytesSent;
229
- this.totalDataChannelMessagesReceived += this.deltaDataChannelMessagesReceived;
230
- this.totalDataChannelMessagesSent += this.deltaDataChannelMessagesSent;
231
- this.totalInboundPacketsLost += this.deltaInboundPacketsLost;
232
- this.totalInboundPacketsReceived += this.deltaInboundPacketsReceived;
233
- this.totalOutboundPacketsSent += this.deltaOutboundPacketsSent;
234
- this.totalReceivedAudioBytes += this.deltaReceivedAudioBytes;
235
- this.totalReceivedVideoBytes += this.deltaReceivedVideoBytes;
236
- this.totalSentAudioBytes += this.deltaSentAudioBytes;
237
- this.totalSentVideoBytes += this.deltaSentVideoBytes;
238
- this.totalReceivedBytes += this.deltaTransportReceivedBytes;
239
- this.totalSentBytes += this.deltaTransportSentBytes;
240
- this.totalRttLt50Measurements += this.deltaRttLt50Measurements;
241
- this.totalRttLt150Measurements += this.deltaRttLt150Measurements;
242
- this.totalRttLt300Measurements += this.deltaRttLt300Measurements;
243
- this.totalRttGtOrEq300Measurements += this.deltaRttGtOrEq300Measurements;
244
- this.totalNumberOfIssues += this.deltaNumberOfIssues;
245
- this.receivingAudioBitrate = (this.deltaReceivedAudioBytes * 8) / (elapsedInSeconds);
246
- this.receivingVideoBitrate = (this.totalReceivedVideoBytes * 8) / (elapsedInSeconds);
247
- this.sendingAudioBitrate = (this.deltaSentAudioBytes * 8) / (elapsedInSeconds);
248
- this.sendingVideoBitrate = (this.deltaSentVideoBytes * 8) / (elapsedInSeconds);
249
- this.currentAvgRttInMs = 0 < numberOfRttMeasurements ? sumOfRtts / numberOfRttMeasurements : undefined;
250
- this.calculatedScore.value = sample.score;
251
- this.detectors.update();
252
- // emit update
253
- this.emit('update', {
254
- sample,
255
- elapsedTimeInMs: now - this.updated,
256
- });
257
- this.updated = now;
258
- // if result changed after update
259
- if (this.calculatedScore.value) {
260
- this.totalScoreSum += this.calculatedScore.value;
261
- ++this.numberOfScoreMeasurements;
262
- }
263
- }
264
- _processClientEvent(event, postBuffer) {
265
- // eslint-disable-next-line no-console
266
- // console.warn('ClientEvent', event);
267
- switch (event.type) {
268
- case ClientEventTypes_1.ClientEventTypes.CLIENT_JOINED: {
269
- if (event.timestamp) {
270
- if (!this.joinedAt) {
271
- this.joinedAt = event.timestamp;
272
- this.emit('joined');
273
- }
274
- else if (this.joinedAt < event.timestamp) {
275
- this.emit('rejoined', event.timestamp);
276
- }
277
- else {
278
- this.joinedAt = event.timestamp;
279
- logger.warn(`Client ${this.clientId} joinedAt timestamp was updated to ${event.timestamp}. the joined event will not be emitted.`);
280
- }
281
- }
282
- break;
283
- }
284
- case ClientEventTypes_1.ClientEventTypes.CLIENT_LEFT: {
285
- if (event.timestamp) {
286
- if (!this.leftAt) {
287
- this.leftAt = event.timestamp;
288
- this.emit('left');
289
- }
290
- else {
291
- logger.warn(`Client ${this.clientId} leftAt timestamp was already set`);
292
- }
293
- }
294
- break;
295
- }
296
- case ClientEventTypes_1.ClientEventTypes.PEER_CONNECTION_OPENED: {
297
- const payload = (0, utils_1.parseJsonAs)(event.payload);
298
- if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string') {
299
- const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
300
- if (observedPeerConnection) {
301
- observedPeerConnection.openedAt = event.timestamp;
302
- }
303
- else if (postBuffer) {
304
- postBuffer.push(event);
305
- }
306
- else {
307
- logger.warn('Received PEER_CONNECTION_OPENED event without a corresponding observedPeerConnection', event);
308
- }
309
- }
310
- break;
311
- }
312
- case ClientEventTypes_1.ClientEventTypes.PEER_CONNECTION_CLOSED: {
313
- const payload = (0, utils_1.parseJsonAs)(event.payload);
314
- if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string') {
315
- const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
316
- if (observedPeerConnection) {
317
- observedPeerConnection.closedAt = event.timestamp;
318
- }
319
- else if (postBuffer) {
320
- postBuffer.push(event);
321
- }
322
- else {
323
- logger.warn('Received PEER_CONNECTION_CLOSED event without a corresponding observedPeerConnection', event);
324
- }
325
- }
326
- break;
327
- }
328
- case ClientEventTypes_1.ClientEventTypes.MEDIA_TRACK_ADDED: {
329
- const payload = (0, utils_1.parseJsonAs)(event.payload);
330
- if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.trackId && typeof payload.trackId === 'string') {
331
- const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
332
- const observedTrack = observedPeerConnection?.observedInboundTracks.get(payload.trackId) ?? observedPeerConnection?.observedOutboundTracks.get(payload.trackId);
333
- if (observedTrack) {
334
- observedTrack.addedAt = event.timestamp;
335
- }
336
- else if (postBuffer) {
337
- postBuffer.push(event);
338
- }
339
- else {
340
- logger.warn('Received MEDIA_TRACK_ADDED event without a corresponding observedPeerConnection or observedTrack', event);
341
- }
342
- }
343
- break;
344
- }
345
- case ClientEventTypes_1.ClientEventTypes.MEDIA_TRACK_REMOVED: {
346
- const payload = (0, utils_1.parseJsonAs)(event.payload);
347
- if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.trackId && typeof payload.trackId === 'string') {
348
- const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
349
- const observedTrack = observedPeerConnection?.observedInboundTracks.get(payload.trackId) ?? observedPeerConnection?.observedOutboundTracks.get(payload.trackId);
350
- if (observedTrack) {
351
- observedTrack.removedAt = event.timestamp;
352
- }
353
- else if (postBuffer) {
354
- postBuffer.push(event);
355
- }
356
- else {
357
- logger.warn('Received MEDIA_TRACK_REMOVED event without a corresponding observedPeerConnection or observedTrack', event);
358
- }
359
- }
360
- break;
361
- }
362
- case ClientEventTypes_1.ClientEventTypes.DATA_CHANNEL_OPEN: {
363
- const payload = (0, utils_1.parseJsonAs)(event.payload);
364
- if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.dataChannelId && typeof payload.dataChannelId === 'string') {
365
- const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
366
- const observedDataChannel = observedPeerConnection?.observedDataChannels.get(payload.dataChannelId);
367
- if (observedDataChannel) {
368
- observedDataChannel.addedAt = event.timestamp;
369
- }
370
- else if (postBuffer) {
371
- postBuffer.push(event);
372
- }
373
- else {
374
- logger.warn('Received DATA_CHANNEL_OPENED event without a corresponding observedPeerConnection or observedDataChannel', event);
375
- }
376
- }
377
- break;
378
- }
379
- case ClientEventTypes_1.ClientEventTypes.DATA_CHANNEL_CLOSED: {
380
- const payload = (0, utils_1.parseJsonAs)(event.payload);
381
- if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.dataChannelId && typeof payload.dataChannelId === 'string') {
382
- const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
383
- const observedDataChannel = observedPeerConnection?.observedDataChannels.get(payload.dataChannelId);
384
- if (observedDataChannel) {
385
- observedDataChannel.removedAt = event.timestamp;
386
- }
387
- else if (postBuffer) {
388
- postBuffer.push(event);
389
- }
390
- else {
391
- logger.warn('Received DATA_CHANNEL_CLOSE event without a corresponding observedPeerConnection or observedDataChannel', event);
392
- }
393
- }
394
- break;
395
- }
396
- }
397
- }
398
- injectMetaData(metaData) {
399
- if (this.closed)
400
- return;
401
- if (!this._injections.clientMetaItems)
402
- this._injections.clientMetaItems = [];
403
- this._injections.clientMetaItems.push(metaData);
404
- }
405
- injectEvent(event) {
406
- if (this.closed)
407
- return;
408
- if (!this._injections.clientEvents)
409
- this._injections.clientEvents = [];
410
- this._injections.clientEvents.push(event);
411
- }
412
- injectIssue(issue) {
413
- if (this.closed)
414
- return;
415
- if (!this._injections.clientIssues)
416
- this._injections.clientIssues = [];
417
- this._injections.clientIssues.push(issue);
418
- }
419
- injectExtensionStat(stat) {
420
- if (this.closed)
421
- return;
422
- if (!this._injections.extensionStats)
423
- this._injections.extensionStats = [];
424
- this._injections.extensionStats.push(stat);
425
- }
426
- injectAttachment(key, value) {
427
- if (this.closed)
428
- return;
429
- if (!this._injections.attachments)
430
- this._injections.attachments = {};
431
- this._injections.attachments[key] = value;
432
- }
433
- addMetadata(metadata) {
434
- if (this.closed)
435
- return;
436
- switch (metadata.type) {
437
- case ClientMetaTypes_1.ClientMetaTypes.BROWSER: {
438
- this.browser = (0, utils_1.parseJsonAs)(metadata.payload);
439
- break;
440
- }
441
- case ClientMetaTypes_1.ClientMetaTypes.ENGINE: {
442
- this.engine = (0, utils_1.parseJsonAs)(metadata.payload);
443
- break;
444
- }
445
- case ClientMetaTypes_1.ClientMetaTypes.PLATFORM: {
446
- this.platform = (0, utils_1.parseJsonAs)(metadata.payload);
447
- break;
448
- }
449
- case ClientMetaTypes_1.ClientMetaTypes.OPERATION_SYSTEM: {
450
- this.operationSystem = (0, utils_1.parseJsonAs)(metadata.payload);
451
- break;
452
- }
453
- }
454
- this.call.observer.emit('client-metadata', this, metadata);
455
- }
456
- addIssue(issue) {
457
- if (this.closed)
458
- return;
459
- this.emit('issue', issue);
460
- this.call.observer.emit('client-issue', this, issue);
461
- }
462
- addExtensionStats(stats) {
463
- this.call.observer.emit('client-extension-stats', this, stats);
464
- }
465
- _updatePeerConnection(sample) {
466
- let observedPeerConnection = this.observedPeerConnections.get(sample.peerConnectionId);
467
- if (!observedPeerConnection) {
468
- if (!sample.peerConnectionId) {
469
- return (logger.warn(`ObservedClient received an invalid PeerConnectionSample (missing peerConnectionId field). ClientId: ${this.clientId}, CallId: ${this.call.callId}`, sample), void 0);
470
- }
471
- observedPeerConnection = new ObservedPeerConnection_1.ObservedPeerConnection(sample.peerConnectionId, this);
472
- observedPeerConnection.once('close', () => {
473
- this.observedPeerConnections.delete(sample.peerConnectionId);
474
- });
475
- this.observedPeerConnections.set(sample.peerConnectionId, observedPeerConnection);
476
- this.emit('newpeerconnection', observedPeerConnection);
477
- }
478
- observedPeerConnection.accept(sample);
479
- return observedPeerConnection;
480
- }
481
- createEventMonitor(ctx) {
482
- return new ObservedClientEventMonitor_1.ObservedClientEventMonitor(this, ctx ?? {});
483
- }
484
- _mergeInjections(sample) {
485
- if (this.closed)
486
- return sample;
487
- if (this._injections.clientEvents) {
488
- if (!sample.clientEvents)
489
- sample.clientEvents = [];
490
- sample.clientEvents.push(...this._injections.clientEvents);
491
- this._injections.clientEvents = undefined;
492
- }
493
- if (this._injections.clientIssues) {
494
- if (!sample.clientIssues)
495
- sample.clientIssues = [];
496
- sample.clientIssues.push(...this._injections.clientIssues);
497
- this._injections.clientIssues = undefined;
498
- }
499
- if (this._injections.extensionStats) {
500
- if (!sample.extensionStats)
501
- sample.extensionStats = [];
502
- sample.extensionStats.push(...this._injections.extensionStats);
503
- this._injections.extensionStats = undefined;
504
- }
505
- if (this._injections.attachments) {
506
- if (!sample.attachments)
507
- sample.attachments = {};
508
- Object.assign(sample.attachments, this._injections.attachments);
509
- this._injections.attachments = undefined;
510
- }
511
- if (this._injections.clientMetaItems) {
512
- if (!sample.clientMetaItems)
513
- sample.clientMetaItems = [];
514
- sample.clientMetaItems.push(...this._injections.clientMetaItems);
515
- this._injections.clientMetaItems = undefined;
516
- }
517
- return sample;
518
- }
519
- }
520
- exports.ObservedClient = ObservedClient;