@observertc/observer-js 1.0.1-72a904d.0 → 1.0.1-797e5af.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 (46) hide show
  1. package/lib/ObservedCall.d.ts +2 -8
  2. package/lib/ObservedCall.d.ts.map +1 -1
  3. package/lib/ObservedCall.js +12 -72
  4. package/lib/ObservedClient.d.ts +16 -8
  5. package/lib/ObservedClient.d.ts.map +1 -1
  6. package/lib/ObservedClient.js +258 -98
  7. package/lib/ObservedClientEventMonitor.d.ts +89 -0
  8. package/lib/ObservedClientEventMonitor.d.ts.map +1 -0
  9. package/lib/ObservedClientEventMonitor.js +247 -0
  10. package/lib/ObservedDataChannel.d.ts +2 -0
  11. package/lib/ObservedDataChannel.d.ts.map +1 -1
  12. package/lib/ObservedDataChannel.js +2 -0
  13. package/lib/ObservedInboundTrack.d.ts +2 -0
  14. package/lib/ObservedInboundTrack.d.ts.map +1 -1
  15. package/lib/ObservedInboundTrack.js +2 -0
  16. package/lib/ObservedOutboundTrack.d.ts +2 -0
  17. package/lib/ObservedOutboundTrack.d.ts.map +1 -1
  18. package/lib/ObservedOutboundTrack.js +2 -0
  19. package/lib/ObservedPeerConnection.d.ts.map +1 -1
  20. package/lib/ObservedPeerConnection.js +22 -6
  21. package/lib/Observer.d.ts +1 -3
  22. package/lib/Observer.d.ts.map +1 -1
  23. package/lib/Observer.js +3 -21
  24. package/lib/ObserverSummary.d.ts +2 -0
  25. package/lib/ObserverSummary.d.ts.map +1 -1
  26. package/lib/common/utils.d.ts +1 -0
  27. package/lib/common/utils.d.ts.map +1 -1
  28. package/lib/common/utils.js +7 -1
  29. package/lib/index.d.ts +1 -0
  30. package/lib/index.d.ts.map +1 -1
  31. package/lib/index.js +3 -1
  32. package/lib/schema/ClientEventTypes.d.ts +43 -0
  33. package/lib/schema/ClientEventTypes.d.ts.map +1 -1
  34. package/package.json +1 -1
  35. package/src/ObservedCall.ts +51 -82
  36. package/src/ObservedClient.ts +336 -112
  37. package/src/ObservedClientEventMonitor.ts +301 -0
  38. package/src/ObservedDataChannel.ts +3 -0
  39. package/src/ObservedInboundTrack.ts +3 -0
  40. package/src/ObservedOutboundTrack.ts +3 -0
  41. package/src/ObservedPeerConnection.ts +25 -10
  42. package/src/Observer.ts +28 -25
  43. package/src/ObserverSummary.ts +3 -1
  44. package/src/common/utils.ts +6 -0
  45. package/src/index.ts +1 -0
  46. package/src/schema/ClientEventTypes.ts +46 -0
@@ -7,7 +7,6 @@ import { CalculatedScore } from './scores/CalculatedScore';
7
7
  import { Detectors } from './detectors/Detectors';
8
8
  import { RemoteTrackResolver } from './utils/RemoteTrackResolver';
9
9
  import { Updater } from './updaters/Updater';
10
- import { ObservedCallSummary } from './ObservedCallSummary';
11
10
  export type ObservedCallSettings<AppData extends Record<string, unknown> = Record<string, unknown>> = {
12
11
  callId: string;
13
12
  appData?: AppData;
@@ -21,8 +20,6 @@ export type ObservedCallEvents = {
21
20
  empty: [];
22
21
  'not-empty': [];
23
22
  close: [];
24
- started: [];
25
- ended: [];
26
23
  };
27
24
  export declare interface ObservedCall {
28
25
  on<U extends keyof ObservedCallEvents>(event: U, listener: (...args: ObservedCallEvents[U]) => void): this;
@@ -68,7 +65,8 @@ export declare class ObservedCall<AppData extends Record<string, unknown> = Reco
68
65
  appData: AppData;
69
66
  closed: boolean;
70
67
  startedAt?: number;
71
- ended?: number;
68
+ endedAt?: number;
69
+ closedAt?: number;
72
70
  private _callStartedEvent;
73
71
  private _callEndedEvent;
74
72
  constructor(settings: ObservedCallSettings<AppData>, observer: Observer);
@@ -81,9 +79,5 @@ export declare class ObservedCall<AppData extends Record<string, unknown> = Reco
81
79
  private _onClientUpdate;
82
80
  private _clientJoined;
83
81
  private _clientLeft;
84
- emitCallStartedEvent(): void;
85
- emitCallEndedEvent(): void;
86
- resetSummaryMetrics(): void;
87
- createSummary(): ObservedCallSummary;
88
82
  }
89
83
  //# sourceMappingURL=ObservedCall.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObservedCall.d.ts","sourceRoot":"","sources":["../src/ObservedCall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObservedCall.d.ts","sourceRoot":"","sources":["../src/ObservedCall.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,8 @@ class ObservedCall extends events_1.EventEmitter {
49
49
  appData;
50
50
  closed = false;
51
51
  startedAt;
52
- ended;
52
+ endedAt;
53
+ closedAt;
53
54
  _callStartedEvent;
54
55
  _callEndedEvent;
55
56
  constructor(settings, observer) {
@@ -99,12 +100,11 @@ class ObservedCall extends events_1.EventEmitter {
99
100
  close() {
100
101
  if (this.closed)
101
102
  return;
103
+ this.update(); // last update before closing
102
104
  this.closed = true;
103
105
  this.updater?.close();
104
106
  [...this.observedClients.values()].forEach((client) => client.close());
105
- // make sure to emit the events
106
- this.emitCallStartedEvent();
107
- this.emitCallEndedEvent();
107
+ this.closedAt = Date.now();
108
108
  this.emit('close');
109
109
  }
110
110
  getObservedClient(clientId) {
@@ -130,7 +130,7 @@ class ObservedCall extends events_1.EventEmitter {
130
130
  if (this.observedClients.size === 0) {
131
131
  this.emit('empty');
132
132
  }
133
- --this.totalRemovedClients;
133
+ ++this.totalRemovedClients;
134
134
  });
135
135
  result.on('update', onUpdate);
136
136
  result.on('joined', joined);
@@ -156,9 +156,6 @@ class ObservedCall extends events_1.EventEmitter {
156
156
  this.numberOfOutboundRtpStreams += client.numberOfOutboundRtpStreams;
157
157
  this.numberOfPeerConnections += client.numberOfPeerConnections;
158
158
  this.numberOfDataChannels += client.numberOfDataChannels;
159
- if (client.usingTURN) {
160
- this.clientsUsedTurn.add(client.clientId);
161
- }
162
159
  }
163
160
  this.detectors.update();
164
161
  this.scoreCalculator.update();
@@ -171,12 +168,12 @@ class ObservedCall extends events_1.EventEmitter {
171
168
  }
172
169
  _onClientUpdate(client) {
173
170
  this.totalClientsReceivedAudioBytes += client.deltaReceivedAudioBytes;
174
- this.totalClientsSentAudioBytes += client.deltaSentAudioBytes;
175
171
  this.totalClientsReceivedVideoBytes += client.deltaReceivedVideoBytes;
176
- this.totalClientsReceivedVideoBytes += client.deltaSentVideoBytes;
177
172
  this.totalClientsReceivedDataChannelBytes += client.deltaDataChannelBytesReceived;
178
- this.totalClientsSentDataChannelBytes += client.deltaDataChannelBytesSent;
179
173
  this.totalClientsReceivedBytes += client.deltaTransportReceivedBytes;
174
+ this.totalClientsSentAudioBytes += client.deltaSentAudioBytes;
175
+ this.totalClientsSentVideoBytes += client.deltaSentVideoBytes;
176
+ this.totalClientsSentDataChannelBytes += client.deltaDataChannelBytesSent;
180
177
  this.totalClientsSentBytes += client.deltaTransportSentBytes;
181
178
  this.deltaRttLt50Measurements += client.deltaRttLt50Measurements;
182
179
  this.deltaRttLt150Measurements += client.deltaRttLt150Measurements;
@@ -188,76 +185,19 @@ class ObservedCall extends events_1.EventEmitter {
188
185
  this.totalRttGtOrEq300Measurements += client.deltaRttGtOrEq300Measurements;
189
186
  this.deltaNumberOfIssues += client.deltaNumberOfIssues;
190
187
  this.numberOfIssues += client.deltaNumberOfIssues;
188
+ if (client.usingTURN) {
189
+ this.clientsUsedTurn.add(client.clientId);
190
+ }
191
191
  }
192
192
  _clientJoined(client) {
193
193
  if (!client.joinedAt)
194
194
  return;
195
195
  this.startedAt = Math.min(this.startedAt ?? client.joinedAt, client.joinedAt);
196
- if (this._callStartedEvent.emitted)
197
- return;
198
- if (this._callStartedEvent.timer) {
199
- if (1 < this.observedClients.size) {
200
- this.emitCallStartedEvent();
201
- }
202
- return;
203
- }
204
- this._callStartedEvent.timer = setTimeout(() => {
205
- this.emitCallStartedEvent();
206
- }, 5000);
207
196
  }
208
197
  _clientLeft(client) {
209
198
  if (!client.leftAt)
210
199
  return;
211
- this.ended = Math.max(this.ended ?? client.leftAt, client.leftAt);
212
- }
213
- emitCallStartedEvent() {
214
- if (this._callStartedEvent.emitted)
215
- return;
216
- this._callStartedEvent.emitted = true;
217
- clearTimeout(this._callStartedEvent.timer);
218
- this._callStartedEvent.timer = undefined;
219
- this.emit('started');
220
- }
221
- emitCallEndedEvent() {
222
- if (this._callEndedEvent.emitted)
223
- return;
224
- this._callEndedEvent.emitted = true;
225
- this.emit('ended');
226
- }
227
- resetSummaryMetrics() {
228
- this.totalAddedClients = 0;
229
- this.totalRemovedClients = 0;
230
- this.totalClientsReceivedAudioBytes = 0;
231
- this.totalClientsReceivedVideoBytes = 0;
232
- this.totalClientsReceivedBytes = 0;
233
- this.totalClientsSentAudioBytes = 0;
234
- this.totalClientsSentVideoBytes = 0;
235
- this.totalClientsSentBytes = 0;
236
- this.totalRttLt50Measurements = 0;
237
- this.totalRttLt150Measurements = 0;
238
- this.totalRttLt300Measurements = 0;
239
- this.totalRttGtOrEq300Measurements = 0;
240
- this.numberOfIssues = 0;
241
- this.clientsUsedTurn.clear();
242
- }
243
- createSummary() {
244
- return {
245
- currentActiveClients: this.observedClients.size,
246
- totalAddedClients: this.totalAddedClients,
247
- totalRemovedClients: this.totalRemovedClients,
248
- totalClientsReceivedAudioBytes: this.totalClientsReceivedBytes,
249
- totalClientsReceivedVideoBytes: this.totalClientsReceivedVideoBytes,
250
- totalClientsReceivedBytes: this.totalClientsReceivedBytes,
251
- totalClientsSentAudioBytes: this.totalClientsSentAudioBytes,
252
- totalClientsSentVideoBytes: this.totalClientsSentVideoBytes,
253
- totalClientsSentBytes: this.totalClientsSentBytes,
254
- totalRttLt50Measurements: this.totalRttLt50Measurements,
255
- totalRttLt150Measurements: this.totalRttLt150Measurements,
256
- totalRttLt300Measurements: this.totalRttLt300Measurements,
257
- totalRttGtOrEq300Measurements: this.totalRttGtOrEq300Measurements,
258
- numberOfIssues: this.numberOfIssues,
259
- numberOfClientsUsedTurn: this.clientsUsedTurn.size,
260
- };
200
+ this.endedAt = Math.max(this.endedAt ?? client.leftAt, client.leftAt);
261
201
  }
262
202
  }
263
203
  exports.ObservedCall = ObservedCall;
@@ -1,12 +1,12 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
3
  import { ObservedPeerConnection } from './ObservedPeerConnection';
4
- import { ClientMetaData, ClientSample, ClientIssue, ExtensionStat } from './schema/ClientSample';
4
+ import { ClientEvent, ClientMetaData, ClientSample, ClientIssue, ExtensionStat } from './schema/ClientSample';
5
5
  import * as MetaData from './schema/ClientMetaTypes';
6
6
  import { ObservedCall } from './ObservedCall';
7
7
  import { CalculatedScore } from './scores/CalculatedScore';
8
8
  import { Detectors } from './detectors/Detectors';
9
- import { ObservedClientSummary } from './ObservedClientSummary';
9
+ import { ObservedClientEventMonitor } from './ObservedClientEventMonitor';
10
10
  export type ObservedClientSettings<AppData extends Record<string, unknown> = Record<string, unknown>> = {
11
11
  clientId: string;
12
12
  appData?: AppData;
@@ -47,12 +47,14 @@ export declare class ObservedClient<AppData extends Record<string, unknown> = Re
47
47
  closed: boolean;
48
48
  joinedAt?: number;
49
49
  leftAt?: number;
50
+ closedAt?: number;
50
51
  operationSystem?: MetaData.OperationSystem;
51
52
  engine?: MetaData.Engine;
52
53
  platform?: MetaData.Platform;
53
54
  browser?: MetaData.Browser;
54
55
  mediaConstraints: string[];
55
56
  usingTURN: boolean;
57
+ usingTCP: boolean;
56
58
  availableOutgoingBitrate: number;
57
59
  availableIncomingBitrate: number;
58
60
  totalInboundPacketsLost: number;
@@ -79,14 +81,15 @@ export declare class ObservedClient<AppData extends Record<string, unknown> = Re
79
81
  deltaInboundPacketsLost: number;
80
82
  deltaInboundPacketsReceived: number;
81
83
  deltaOutboundPacketsSent: number;
82
- deltaRttInMsMeasurements: number[];
83
84
  deltaTransportSentBytes: number;
84
85
  deltaTransportReceivedBytes: number;
85
86
  deltaRttLt50Measurements: number;
86
87
  deltaRttLt150Measurements: number;
87
88
  deltaRttLt300Measurements: number;
88
89
  deltaRttGtOrEq300Measurements: number;
89
- currentRttInMs?: number;
90
+ currentMaxRttInMs?: number;
91
+ currentMinRttInMs?: number;
92
+ currentAvgRttInMs?: number;
90
93
  sendingAudioBitrate: number;
91
94
  sendingVideoBitrate: number;
92
95
  receivingAudioBitrate: number;
@@ -103,21 +106,26 @@ export declare class ObservedClient<AppData extends Record<string, unknown> = Re
103
106
  deltaNumberOfIssues: number;
104
107
  totalScoreSum: number;
105
108
  numberOfScoreMeasurements: number;
106
- numberOfIssues: number;
109
+ totalNumberOfIssues: number;
107
110
  readonly mediaDevices: MetaData.MediaDeviceInfo[];
108
111
  issues: ClientIssue[];
112
+ private _injections;
109
113
  constructor(settings: ObservedClientSettings<AppData>, call: ObservedCall);
110
114
  get numberOfPeerConnections(): number;
111
115
  get score(): number | undefined;
112
116
  close(): void;
113
117
  accept(sample: ClientSample): void;
114
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;
115
124
  addMetadata(metadata: ClientMetaData): void;
116
125
  addIssue(issue: ClientIssue): void;
117
126
  addExtensionStats(stats: ExtensionStat): void;
118
127
  private _updatePeerConnection;
119
- resetSummaryMetrics(): void;
120
- createSummary(): ObservedClientSummary;
121
- private _updateRttMeasurements;
128
+ createEventMonitor<CTX = unknown>(ctx?: CTX): ObservedClientEventMonitor<CTX>;
129
+ private _mergeInjections;
122
130
  }
123
131
  //# sourceMappingURL=ObservedClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObservedClient.d.ts","sourceRoot":"","sources":["../src/ObservedClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObservedClient.d.ts","sourceRoot":"","sources":["../src/ObservedClient.ts"],"names":[],"mappings":"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"}