@observertc/observer-js 0.42.0 → 0.42.2

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 (41) hide show
  1. package/lib/ObservedCall.d.ts +5 -10
  2. package/lib/ObservedCall.d.ts.map +1 -1
  3. package/lib/ObservedCall.js +17 -22
  4. package/lib/ObservedClient.d.ts +20 -8
  5. package/lib/ObservedClient.d.ts.map +1 -1
  6. package/lib/ObservedClient.js +96 -27
  7. package/lib/ObservedInboundAudioTrack.d.ts +2 -0
  8. package/lib/ObservedInboundAudioTrack.d.ts.map +1 -1
  9. package/lib/ObservedInboundAudioTrack.js +2 -0
  10. package/lib/ObservedInboundVideoTrack.d.ts +4 -1
  11. package/lib/ObservedInboundVideoTrack.d.ts.map +1 -1
  12. package/lib/ObservedInboundVideoTrack.js +2 -1
  13. package/lib/ObservedOutboundAudioTrack.d.ts +2 -0
  14. package/lib/ObservedOutboundAudioTrack.d.ts.map +1 -1
  15. package/lib/ObservedOutboundAudioTrack.js +2 -12
  16. package/lib/ObservedOutboundVideoTrack.d.ts +4 -1
  17. package/lib/ObservedOutboundVideoTrack.d.ts.map +1 -1
  18. package/lib/ObservedOutboundVideoTrack.js +2 -1
  19. package/lib/ObservedPeerConnection.d.ts +2 -0
  20. package/lib/ObservedPeerConnection.d.ts.map +1 -1
  21. package/lib/Observer.d.ts +0 -1
  22. package/lib/Observer.d.ts.map +1 -1
  23. package/lib/Observer.js +5 -3
  24. package/lib/common/CalculatedScore.js +3 -3
  25. package/lib/common/types.d.ts +1 -0
  26. package/lib/common/types.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/src/ObservedCall.ts +35 -41
  29. package/src/ObservedClient.ts +117 -35
  30. package/src/ObservedInboundAudioTrack.ts +8 -0
  31. package/src/ObservedInboundVideoTrack.ts +10 -1
  32. package/src/ObservedOutboundAudioTrack.ts +8 -16
  33. package/src/ObservedOutboundVideoTrack.ts +10 -1
  34. package/src/ObservedPeerConnection.ts +6 -1
  35. package/src/Observer.ts +3 -4
  36. package/src/common/CalculatedScore.ts +1 -1
  37. package/src/common/types.ts +1 -0
  38. package/lib/monitors/ClientQualityMonitor.d.ts +0 -1
  39. package/lib/monitors/ClientQualityMonitor.d.ts.map +0 -1
  40. package/lib/monitors/ClientQualityMonitor.js +0 -1
  41. package/src/monitors/ClientQualityMonitor.ts +0 -0
@@ -5,11 +5,9 @@ import { Observer } from './Observer';
5
5
  import { PartialBy } from './common/utils';
6
6
  import { CallEventReport } from '@observertc/report-schemas-js';
7
7
  import { ClientSample } from '@observertc/sample-schemas-js';
8
- import { ClientIssue } from './monitors/CallSummary';
9
8
  import { ObservedOutboundAudioTrack } from './ObservedOutboundAudioTrack';
10
9
  import { ObservedOutboundVideoTrack } from './ObservedOutboundVideoTrack';
11
10
  import { CalculatedScore } from './common/CalculatedScore';
12
- type ClientIssueDetectionConfig = Pick<ClientIssue, 'severity'>;
13
11
  export type ObservedCallModel = {
14
12
  serviceId: string;
15
13
  roomId: string;
@@ -42,14 +40,14 @@ export declare class ObservedCall<AppData extends Record<string, unknown> = Reco
42
40
  readonly sfuStreamIdToOutboundVideoTrack: Map<string | number, ObservedOutboundVideoTrack>;
43
41
  private _closed;
44
42
  private _updated;
45
- private _ended?;
43
+ ended?: number;
44
+ started?: number;
46
45
  constructor(_model: ObservedCallModel, observer: Observer, appData: AppData);
47
46
  get serviceId(): string;
48
47
  get reports(): import("./ReportsCollector").ReportsCollector;
49
48
  get roomId(): string;
50
49
  get callId(): string;
51
50
  get updated(): number;
52
- get ended(): number | undefined;
53
51
  get clients(): ReadonlyMap<string, ObservedClient>;
54
52
  get score(): CalculatedScore | undefined;
55
53
  get closed(): boolean;
@@ -57,12 +55,9 @@ export declare class ObservedCall<AppData extends Record<string, unknown> = Reco
57
55
  addEventReport(params: PartialBy<Omit<CallEventReport, 'serviceId' | 'roomId' | 'callId'>, 'timestamp'>): void;
58
56
  createClient<ClientAppData extends Record<string, unknown> = Record<string, unknown>>(config: ObservedClientModel & {
59
57
  appData: ClientAppData;
60
- generateClientJoinedReport?: boolean;
61
- joined?: number;
62
- detectIssues?: {
63
- rejoin: ClientIssue['severity'] | ClientIssueDetectionConfig;
64
- };
58
+ joinedTimestamp?: number;
59
+ createClientJoinedReport?: boolean;
60
+ createClientLeftReport?: boolean;
65
61
  }): ObservedClient<ClientAppData>;
66
62
  }
67
- export {};
68
63
  //# 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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"}
@@ -30,6 +30,7 @@ class ObservedCall extends events_1.EventEmitter {
30
30
  this.sfuStreamIdToOutboundVideoTrack = new Map();
31
31
  this._closed = false;
32
32
  this._updated = Date.now();
33
+ this.started = Date.now();
33
34
  this.setMaxListeners(Infinity);
34
35
  }
35
36
  get serviceId() {
@@ -50,9 +51,6 @@ class ObservedCall extends events_1.EventEmitter {
50
51
  get updated() {
51
52
  return this._updated;
52
53
  }
53
- get ended() {
54
- return this._ended;
55
- }
56
54
  get clients() {
57
55
  return this._clients;
58
56
  }
@@ -90,7 +88,12 @@ class ObservedCall extends events_1.EventEmitter {
90
88
  if (this._closed)
91
89
  return;
92
90
  this._closed = true;
93
- this._ended = timestamp !== null && timestamp !== void 0 ? timestamp : Date.now();
91
+ if (timestamp) {
92
+ this.ended = timestamp;
93
+ }
94
+ else if (!this.ended) {
95
+ this.ended = Date.now();
96
+ }
94
97
  Array.from(this._clients.values()).forEach((client) => client.close());
95
98
  this.emit('close');
96
99
  }
@@ -99,11 +102,10 @@ class ObservedCall extends events_1.EventEmitter {
99
102
  this.reports.addCallEventReport(Object.assign(Object.assign({}, params), { serviceId: this.serviceId, roomId: this.roomId, callId: this.callId, timestamp: (_a = params.timestamp) !== null && _a !== void 0 ? _a : Date.now() }));
100
103
  }
101
104
  createClient(config) {
105
+ var _a;
102
106
  if (this._closed)
103
107
  throw new Error(`Call ${this.callId} is closed`);
104
- const { appData, generateClientJoinedReport, joined = Date.now(), detectIssues = {
105
- rejoin: 'minor'
106
- } } = config, model = __rest(config, ["appData", "generateClientJoinedReport", "joined", "detectIssues"]);
108
+ const { appData, createClientJoinedReport, createClientLeftReport, joinedTimestamp = Date.now() } = config, model = __rest(config, ["appData", "createClientJoinedReport", "createClientLeftReport", "joinedTimestamp"]);
107
109
  const result = new ObservedClient_1.ObservedClient(model, this, appData);
108
110
  const onUpdate = ({ sample }) => {
109
111
  this._updated = Date.now();
@@ -116,22 +118,15 @@ class ObservedCall extends events_1.EventEmitter {
116
118
  });
117
119
  result.on('update', onUpdate);
118
120
  this._clients.set(result.clientId, result);
119
- if (generateClientJoinedReport) {
120
- this.reports.addCallEventReport((0, callEventReports_1.createClientJoinedEventReport)(this.serviceId, result.mediaUnitId, this.roomId, this.callId, result.clientId, joined, result.userId, result.marker));
121
- }
122
- if (detectIssues === null || detectIssues === void 0 ? void 0 : detectIssues.rejoin) {
123
- const issueBaseConfig = typeof detectIssues.rejoin === 'object' ? detectIssues.rejoin : {
124
- severity: detectIssues.rejoin
125
- };
126
- const rejoinedClientIssueListener = (event) => {
127
- event.lastJoined;
128
- result.addIssue(Object.assign({ timestamp: Date.now() }, issueBaseConfig));
129
- };
130
- result.once('close', () => {
131
- result.off('rejoined', rejoinedClientIssueListener);
132
- });
133
- result.on('rejoined', rejoinedClientIssueListener);
121
+ if (createClientJoinedReport) {
122
+ this.reports.addCallEventReport((0, callEventReports_1.createClientJoinedEventReport)(this.serviceId, result.mediaUnitId, this.roomId, this.callId, result.clientId, (_a = result.joined) !== null && _a !== void 0 ? _a : joinedTimestamp, result.userId, result.marker));
134
123
  }
124
+ result.once('close', () => {
125
+ var _a;
126
+ if (createClientLeftReport) {
127
+ this.reports.addCallEventReport((0, callEventReports_1.createClientLeftEventReport)(this.serviceId, result.mediaUnitId, this.roomId, this.callId, result.clientId, (_a = result.left) !== null && _a !== void 0 ? _a : Date.now(), result.userId, result.marker));
128
+ }
129
+ });
135
130
  this.emit('newclient', result);
136
131
  return result;
137
132
  }
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { Browser, ClientSample, Engine, IceLocalCandidate, IceRemoteCandidate, OperationSystem, Platform } from '@observertc/sample-schemas-js';
2
+ import { Browser, ClientSample, Engine, IceLocalCandidate, IceRemoteCandidate, MediaCodecStats, MediaDevice, OperationSystem, Platform } from '@observertc/sample-schemas-js';
3
3
  import { ObservedCall } from './ObservedCall';
4
4
  import { EventEmitter } from 'events';
5
5
  import { ObservedPeerConnection } from './ObservedPeerConnection';
@@ -73,6 +73,17 @@ export declare interface ObservedClient<AppData extends Record<string, unknown>
73
73
  emit<U extends keyof ObservedClientEvents>(event: U, ...args: ObservedClientEvents[U]): boolean;
74
74
  readonly appData: AppData;
75
75
  }
76
+ type PendingPeerConnectionTimestamp = {
77
+ type: 'opened' | 'closed';
78
+ peerConnectionId: string;
79
+ timestamp: number;
80
+ };
81
+ type PendingMediaTrackTimestamp = {
82
+ type: 'added' | 'removed';
83
+ peerConnectionId: string;
84
+ mediaTrackId: string;
85
+ timestamp: number;
86
+ };
76
87
  export declare class ObservedClient<AppData extends Record<string, unknown> = Record<string, unknown>> extends EventEmitter {
77
88
  private readonly _model;
78
89
  readonly call: ObservedCall;
@@ -82,10 +93,10 @@ export declare class ObservedClient<AppData extends Record<string, unknown> = Re
82
93
  sfuId?: string;
83
94
  private readonly _peerConnections;
84
95
  private _closed;
85
- private _joinedEventAt?;
86
96
  private _acceptedSamples;
87
97
  private _timeZoneOffsetInHours?;
88
- private _left?;
98
+ joined?: number;
99
+ left?: number;
89
100
  score?: CalculatedScore;
90
101
  usingTURN: boolean;
91
102
  availableOutgoingBitrate: number;
@@ -115,12 +126,13 @@ export declare class ObservedClient<AppData extends Record<string, unknown> = Re
115
126
  outboundVideoBitrate?: number;
116
127
  inboundAudioBitrate?: number;
117
128
  inboundVideoBitrate?: number;
118
- readonly mediaDevices: string[];
119
- readonly codecs: string[];
129
+ mediaConstraints: string[];
130
+ readonly mediaDevices: MediaDevice[];
131
+ readonly mediaCodecs: MediaCodecStats[];
120
132
  readonly userMediaErrors: string[];
121
133
  readonly issues: ClientIssue[];
122
- readonly ωpendingCreatedTracksTimestamp: Map<string, number>;
123
- readonly ωpendingCreatedPeerConnectionTimestamp: Map<string, number>;
134
+ ωpendingPeerConnectionTimestamps: PendingPeerConnectionTimestamp[];
135
+ ωpendingMediaTrackTimestamps: PendingMediaTrackTimestamp[];
124
136
  constructor(_model: ObservedClientModel, call: ObservedCall, appData: AppData);
125
137
  getSfu<T extends Record<string, unknown> = Record<string, unknown>>(): ObservedSfu<T> | undefined;
126
138
  get sfu(): ObservedSfu | undefined;
@@ -159,6 +171,6 @@ export declare class ObservedClient<AppData extends Record<string, unknown> = Re
159
171
  accept(sample: ClientSample): void;
160
172
  private _addAndEmitIssue;
161
173
  private _createPeerConnection;
162
- private _addClientLeftReport;
163
174
  }
175
+ export {};
164
176
  //# 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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"}
@@ -18,7 +18,6 @@ const logger_1 = require("./common/logger");
18
18
  const CallMetaReports_1 = require("./common/CallMetaReports");
19
19
  // eslint-disable-next-line camelcase
20
20
  const utils_1 = require("./common/utils");
21
- const callEventReports_1 = require("./common/callEventReports");
22
21
  const CallEventType_1 = require("./common/CallEventType");
23
22
  const logger = (0, logger_1.createLogger)('ObservedClient');
24
23
  class ObservedClient extends events_1.EventEmitter {
@@ -55,12 +54,13 @@ class ObservedClient extends events_1.EventEmitter {
55
54
  this.deltaInboundPacketsLost = 0;
56
55
  this.deltaInboundPacketsReceived = 0;
57
56
  this.deltaOutboundPacketsSent = 0;
57
+ this.mediaConstraints = [];
58
58
  this.mediaDevices = [];
59
- this.codecs = [];
59
+ this.mediaCodecs = [];
60
60
  this.userMediaErrors = [];
61
61
  this.issues = [];
62
- this.ωpendingCreatedTracksTimestamp = new Map();
63
- this.ωpendingCreatedPeerConnectionTimestamp = new Map();
62
+ this.ωpendingPeerConnectionTimestamps = [];
63
+ this.ωpendingMediaTrackTimestamps = [];
64
64
  this.setMaxListeners(Infinity);
65
65
  }
66
66
  getSfu() {
@@ -144,9 +144,6 @@ class ObservedClient extends events_1.EventEmitter {
144
144
  if (this._closed)
145
145
  return;
146
146
  this._closed = true;
147
- if (!this._left) {
148
- this._addClientLeftReport();
149
- }
150
147
  Array.from(this._peerConnections.values()).forEach((peerConnection) => peerConnection.close());
151
148
  this.emit('close');
152
149
  }
@@ -194,7 +191,7 @@ class ObservedClient extends events_1.EventEmitter {
194
191
  this._addAndEmitIssue(issue);
195
192
  }
196
193
  accept(sample) {
197
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26;
194
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29;
198
195
  if (this._closed)
199
196
  throw new Error(`Client ${this.clientId} is closed`);
200
197
  if (sample.clientId && sample.clientId !== 'NULL' && sample.clientId !== this.clientId) {
@@ -266,6 +263,7 @@ class ObservedClient extends events_1.EventEmitter {
266
263
  payload: mediaConstraint,
267
264
  }, this.userId, undefined, sample.timestamp);
268
265
  this.reports.addCallMetaReport(callMetaReport);
266
+ this.mediaConstraints.push(mediaConstraint);
269
267
  }
270
268
  for (const localSDP of (_m = sample.localSDPs) !== null && _m !== void 0 ? _m : []) {
271
269
  const callMetaReport = (0, CallMetaReports_1.createCallMetaReport)(this.serviceId, this.mediaUnitId, this.roomId, this.callId, this.clientId, {
@@ -287,19 +285,58 @@ class ObservedClient extends events_1.EventEmitter {
287
285
  extensionType: extensionStats.type,
288
286
  });
289
287
  }
290
- for (let _27 of (_p = sample.customCallEvents) !== null && _p !== void 0 ? _p : []) {
291
- const { timestamp } = _27, callEvent = __rest(_27, ["timestamp"]);
288
+ for (let _30 of (_p = sample.customCallEvents) !== null && _p !== void 0 ? _p : []) {
289
+ const { timestamp } = _30, callEvent = __rest(_30, ["timestamp"]);
292
290
  switch (callEvent.name) {
293
291
  case CallEventType_1.CallEventType.CLIENT_JOINED: {
294
- const lastJoined = this._joinedEventAt;
295
- this._joinedEventAt = timestamp !== null && timestamp !== void 0 ? timestamp : sample.timestamp;
296
- if (lastJoined && this._joinedEventAt && lastJoined !== this._joinedEventAt) {
292
+ const lastJoined = this.joined;
293
+ this.joined = timestamp;
294
+ // if it is joined before and it is joined again
295
+ if (lastJoined && this.joined && lastJoined !== this.joined) {
297
296
  this.emit('rejoined', { lastJoined });
298
297
  }
298
+ // in case we have a left event before the joined event
299
+ if (this.left && this.joined && this.left < this.joined) {
300
+ this.left = undefined;
301
+ }
299
302
  break;
300
303
  }
301
304
  case CallEventType_1.CallEventType.CLIENT_LEFT: {
302
- this._left = timestamp;
305
+ this.left = timestamp;
306
+ break;
307
+ }
308
+ case CallEventType_1.CallEventType.PEER_CONNECTION_OPENED: {
309
+ callEvent.peerConnectionId && this.ωpendingPeerConnectionTimestamps.push({
310
+ type: 'opened',
311
+ peerConnectionId: callEvent.peerConnectionId,
312
+ timestamp: timestamp !== null && timestamp !== void 0 ? timestamp : sample.timestamp,
313
+ });
314
+ break;
315
+ }
316
+ case CallEventType_1.CallEventType.PEER_CONNECTION_CLOSED: {
317
+ callEvent.peerConnectionId && this.ωpendingPeerConnectionTimestamps.push({
318
+ type: 'closed',
319
+ peerConnectionId: callEvent.peerConnectionId,
320
+ timestamp: timestamp !== null && timestamp !== void 0 ? timestamp : sample.timestamp,
321
+ });
322
+ break;
323
+ }
324
+ case CallEventType_1.CallEventType.MEDIA_TRACK_ADDED: {
325
+ callEvent.peerConnectionId && callEvent.mediaTrackId && this.ωpendingMediaTrackTimestamps.push({
326
+ type: 'added',
327
+ peerConnectionId: callEvent.peerConnectionId,
328
+ mediaTrackId: callEvent.mediaTrackId,
329
+ timestamp: timestamp !== null && timestamp !== void 0 ? timestamp : sample.timestamp,
330
+ });
331
+ break;
332
+ }
333
+ case CallEventType_1.CallEventType.MEDIA_TRACK_REMOVED: {
334
+ callEvent.peerConnectionId && callEvent.mediaTrackId && this.ωpendingMediaTrackTimestamps.push({
335
+ type: 'removed',
336
+ peerConnectionId: callEvent.peerConnectionId,
337
+ mediaTrackId: callEvent.mediaTrackId,
338
+ timestamp: timestamp !== null && timestamp !== void 0 ? timestamp : sample.timestamp,
339
+ });
303
340
  break;
304
341
  }
305
342
  case CallEventType_1.CallEventType.CLIENT_ISSUE: {
@@ -346,7 +383,9 @@ class ObservedClient extends events_1.EventEmitter {
346
383
  payload: codec,
347
384
  }, this.userId);
348
385
  this.reports.addCallMetaReport(callMetaReport);
349
- codec.mimeType && this.codecs.push(codec.mimeType);
386
+ if (codec.mimeType && !this.mediaCodecs.find((c) => c.mimeType === codec.mimeType)) {
387
+ this.mediaCodecs.push(codec);
388
+ }
350
389
  }
351
390
  for (const iceServer of (_t = sample.iceServers) !== null && _t !== void 0 ? _t : []) {
352
391
  const callMetaReport = (0, CallMetaReports_1.createCallMetaReport)(this.serviceId, this.mediaUnitId, this.roomId, this.callId, this.clientId, {
@@ -361,7 +400,9 @@ class ObservedClient extends events_1.EventEmitter {
361
400
  payload: mediaDevice,
362
401
  }, this.userId);
363
402
  this.reports.addCallMetaReport(callMetaReport);
364
- mediaDevice.label && this.mediaDevices.push(mediaDevice.label);
403
+ if (mediaDevice.id && !this.mediaDevices.find((d) => d.id === mediaDevice.id)) {
404
+ this.mediaDevices.push(mediaDevice);
405
+ }
365
406
  }
366
407
  for (const mediaSource of (_v = sample.mediaSources) !== null && _v !== void 0 ? _v : []) {
367
408
  const callMetaReport = (0, CallMetaReports_1.createCallMetaReport)(this.serviceId, this.mediaUnitId, this.roomId, this.callId, this.clientId, {
@@ -541,6 +582,40 @@ class ObservedClient extends events_1.EventEmitter {
541
582
  logger.error(`Error creating data channel: ${err === null || err === void 0 ? void 0 : err.message}`);
542
583
  }
543
584
  }
585
+ // try to set the timestamps of the peer connections
586
+ if (0 < this.ωpendingPeerConnectionTimestamps.length) {
587
+ const newPendingTimestamps = [];
588
+ for (const pendingTimestamp of this.ωpendingPeerConnectionTimestamps) {
589
+ const peerConnection = this._peerConnections.get(pendingTimestamp.peerConnectionId);
590
+ if (!peerConnection) {
591
+ newPendingTimestamps.push(pendingTimestamp);
592
+ continue;
593
+ }
594
+ if (pendingTimestamp.type === 'opened')
595
+ peerConnection.opened = pendingTimestamp.timestamp;
596
+ else if (pendingTimestamp.type === 'closed')
597
+ peerConnection.closedTimestamp = pendingTimestamp.timestamp;
598
+ }
599
+ this.ωpendingPeerConnectionTimestamps = newPendingTimestamps;
600
+ }
601
+ // try to set the timestamps of the media tracks
602
+ if (0 < this.ωpendingMediaTrackTimestamps.length) {
603
+ const newPendingTimestamps = [];
604
+ for (const pendingTimestamp of this.ωpendingMediaTrackTimestamps) {
605
+ const peerConnection = this._peerConnections.get(pendingTimestamp.peerConnectionId);
606
+ const mediaTrack = (_22 = (_21 = (_20 = peerConnection === null || peerConnection === void 0 ? void 0 : peerConnection.inboundAudioTracks.get(pendingTimestamp.mediaTrackId)) !== null && _20 !== void 0 ? _20 : peerConnection === null || peerConnection === void 0 ? void 0 : peerConnection.inboundVideoTracks.get(pendingTimestamp.mediaTrackId)) !== null && _21 !== void 0 ? _21 : peerConnection === null || peerConnection === void 0 ? void 0 : peerConnection.outboundAudioTracks.get(pendingTimestamp.mediaTrackId)) !== null && _22 !== void 0 ? _22 : peerConnection === null || peerConnection === void 0 ? void 0 : peerConnection.outboundVideoTracks.get(pendingTimestamp.mediaTrackId);
607
+ if (!mediaTrack) {
608
+ newPendingTimestamps.push(pendingTimestamp);
609
+ continue;
610
+ }
611
+ if (pendingTimestamp.type === 'added')
612
+ mediaTrack.added = pendingTimestamp.timestamp;
613
+ else if (pendingTimestamp.type === 'removed')
614
+ mediaTrack.removed = pendingTimestamp.timestamp;
615
+ }
616
+ this.ωpendingMediaTrackTimestamps = newPendingTimestamps;
617
+ }
618
+ // close resources that are not visited
544
619
  for (const peerConnection of this._peerConnections.values()) {
545
620
  if (!peerConnection.visited) {
546
621
  peerConnection.close();
@@ -612,12 +687,12 @@ class ObservedClient extends events_1.EventEmitter {
612
687
  this.deltaSentVideoBytes += peerConnection.deltaSentVideoBytes;
613
688
  this.deltaDataChannelBytesReceived += peerConnection.deltaDataChannelBytesReceived;
614
689
  this.deltaDataChannelBytesSent += peerConnection.deltaDataChannelBytesSent;
615
- this.availableIncomingBitrate += (_20 = peerConnection.availableIncomingBitrate) !== null && _20 !== void 0 ? _20 : 0;
616
- this.availableOutgoingBitrate += (_21 = peerConnection.availableOutgoingBitrate) !== null && _21 !== void 0 ? _21 : 0;
617
- sumRttInMs += (_22 = peerConnection.avgRttInMs) !== null && _22 !== void 0 ? _22 : 0;
690
+ this.availableIncomingBitrate += (_23 = peerConnection.availableIncomingBitrate) !== null && _23 !== void 0 ? _23 : 0;
691
+ this.availableOutgoingBitrate += (_24 = peerConnection.availableOutgoingBitrate) !== null && _24 !== void 0 ? _24 : 0;
692
+ sumRttInMs += (_25 = peerConnection.avgRttInMs) !== null && _25 !== void 0 ? _25 : 0;
618
693
  anyPeerConnectionUsingTurn || (anyPeerConnectionUsingTurn = peerConnection.usingTURN);
619
- minPcScore = Math.min(minPcScore, (_24 = (_23 = peerConnection.score) === null || _23 === void 0 ? void 0 : _23.score) !== null && _24 !== void 0 ? _24 : Number.MAX_SAFE_INTEGER);
620
- maxPcScore = Math.max(maxPcScore, (_26 = (_25 = peerConnection.score) === null || _25 === void 0 ? void 0 : _25.score) !== null && _26 !== void 0 ? _26 : Number.MIN_SAFE_INTEGER);
694
+ minPcScore = Math.min(minPcScore, (_27 = (_26 = peerConnection.score) === null || _26 === void 0 ? void 0 : _26.score) !== null && _27 !== void 0 ? _27 : Number.MAX_SAFE_INTEGER);
695
+ maxPcScore = Math.max(maxPcScore, (_29 = (_28 = peerConnection.score) === null || _28 === void 0 ? void 0 : _28.score) !== null && _29 !== void 0 ? _29 : Number.MIN_SAFE_INTEGER);
621
696
  }
622
697
  this.score = {
623
698
  score: minPcScore,
@@ -694,11 +769,5 @@ class ObservedClient extends events_1.EventEmitter {
694
769
  this.emit('newpeerconnection', result);
695
770
  return result;
696
771
  }
697
- _addClientLeftReport() {
698
- if (this._left)
699
- return;
700
- this._left = Date.now();
701
- this.reports.addCallEventReport((0, callEventReports_1.createClientLeftEventReport)(this.serviceId, this.mediaUnitId, this.roomId, this.callId, this.clientId, this._left, this.userId, this.marker));
702
- }
703
772
  }
704
773
  exports.ObservedClient = ObservedClient;
@@ -48,6 +48,8 @@ export declare class ObservedInboundAudioTrack extends EventEmitter {
48
48
  readonly peerConnection: ObservedPeerConnection;
49
49
  readonly created: number;
50
50
  visited: boolean;
51
+ added?: number;
52
+ removed?: number;
51
53
  private readonly _stats;
52
54
  private _closed;
53
55
  private _updated;
@@ -1 +1 @@
1
- {"version":3,"file":"ObservedInboundAudioTrack.d.ts","sourceRoot":"","sources":["../src/ObservedInboundAudioTrack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObservedInboundAudioTrack.d.ts","sourceRoot":"","sources":["../src/ObservedInboundAudioTrack.ts"],"names":[],"mappings":"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"}
@@ -149,6 +149,8 @@ class ObservedInboundAudioTrack extends events_1.EventEmitter {
149
149
  statsTimestamp });
150
150
  this._stats.set(sample.ssrc, stats);
151
151
  this.visited = true;
152
+ // a peer connection is active if it has at least one active track
153
+ this.peerConnection.visited = true;
152
154
  this._updated = now;
153
155
  this.emit('update', {
154
156
  elapsedTimeInMs,
@@ -5,6 +5,7 @@ import { InboundVideoTrack } from '@observertc/sample-schemas-js';
5
5
  import { CalculatedScore } from './common/CalculatedScore';
6
6
  import { ClientIssue } from './monitors/CallSummary';
7
7
  import { ObservedOutboundVideoTrack } from './ObservedOutboundVideoTrack';
8
+ import { SupportedVideoCodecType } from './common/types';
8
9
  export type ObservedInboundVideoTrackModel = {
9
10
  trackId: string;
10
11
  sfuStreamId?: string;
@@ -47,8 +48,10 @@ export declare class ObservedInboundVideoTrack extends EventEmitter {
47
48
  readonly peerConnection: ObservedPeerConnection;
48
49
  readonly created: number;
49
50
  visited: boolean;
51
+ added?: number;
52
+ removed?: number;
50
53
  contentType: 'lowmotion' | 'standard' | 'highmotion';
51
- codec: 'vp8' | 'vp9' | 'h264';
54
+ codec?: SupportedVideoCodecType;
52
55
  private readonly _stats;
53
56
  private _closed;
54
57
  private _updated;
@@ -1 +1 @@
1
- {"version":3,"file":"ObservedInboundVideoTrack.d.ts","sourceRoot":"","sources":["../src/ObservedInboundVideoTrack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObservedInboundVideoTrack.d.ts","sourceRoot":"","sources":["../src/ObservedInboundVideoTrack.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,6 @@ class ObservedInboundVideoTrack extends events_1.EventEmitter {
11
11
  this.created = Date.now();
12
12
  this.visited = false;
13
13
  this.contentType = 'standard';
14
- this.codec = 'vp8';
15
14
  this._stats = new Map();
16
15
  this._closed = false;
17
16
  this._updated = Date.now();
@@ -157,6 +156,8 @@ class ObservedInboundVideoTrack extends events_1.EventEmitter {
157
156
  statsTimestamp });
158
157
  this._stats.set(sample.ssrc, stats);
159
158
  this.visited = true;
159
+ // a peer connection is active if it has at least one active track
160
+ this.peerConnection.visited = true;
160
161
  this._updated = now;
161
162
  this.emit('update', {
162
163
  elapsedTimeInMs,
@@ -42,6 +42,8 @@ export declare class ObservedOutboundAudioTrack extends EventEmitter {
42
42
  readonly peerConnection: ObservedPeerConnection;
43
43
  readonly created: number;
44
44
  visited: boolean;
45
+ added?: number;
46
+ removed?: number;
45
47
  bitrate: number;
46
48
  rttInMs?: number;
47
49
  jitter?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ObservedOutboundAudioTrack.d.ts","sourceRoot":"","sources":["../src/ObservedOutboundAudioTrack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObservedOutboundAudioTrack.d.ts","sourceRoot":"","sources":["../src/ObservedOutboundAudioTrack.ts"],"names":[],"mappings":"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"}
@@ -120,19 +120,9 @@ class ObservedOutboundAudioTrack extends events_1.EventEmitter {
120
120
  deltaSentFrames,
121
121
  statsTimestamp });
122
122
  this._stats.set(sample.ssrc, stats);
123
- // this.bitrate = [ ...this._stats.values() ].reduce((acc, stat) => acc + stat.bitrate, 0);
124
- // this.rttInMs = [ ...this._stats.values() ].reduce((acc, stat) => acc + (stat.rttInMs ?? 0), 0) / (this._stats.size || 1);
125
- // this.totalLostPackets = [ ...this._stats.values() ].reduce((acc, stat) => acc + (stat.packetsLost ?? 0), 0);
126
- // this.totalSentPackets = [ ...this._stats.values() ].reduce((acc, stat) => acc + (stat.packetsSent ?? 0), 0);
127
- // this.totalSentBytes = [ ...this._stats.values() ].reduce((acc, stat) => acc + (stat.bytesSent ?? 0), 0);
128
- // this.totalSentFrames = [ ...this._stats.values() ].reduce((acc, stat) => acc + (stat.deltaSentPackets ?? 0), 0);
129
- // this.deltaEncodedFrames = [ ...this._stats.values() ].reduce((acc, stat) => acc + (stat.deltaEncodedFrames ?? 0), 0);
130
- // this.deltaSentFrames = [ ...this._stats.values() ].reduce((acc, stat) => acc + (stat.deltaSentFrames ?? 0), 0);
131
- // this.deltaLostPackets = [ ...this._stats.values() ].reduce((acc, stat) => acc + stat.deltaLostPackets, 0);
132
- // this.deltaSentPackets = [ ...this._stats.values() ].reduce((acc, stat) => acc + stat.deltaSentPackets, 0);
133
- // this.deltaSentBytes = [ ...this._stats.values() ].reduce((acc, stat) => acc + stat.deltaSentBytes, 0);
134
- // setting up sfu connection as it is not always available at the first sample
135
123
  this.visited = true;
124
+ // a peer connection is active if it has at least one active track
125
+ this.peerConnection.visited = true;
136
126
  this._updated = now;
137
127
  this.emit('update', {
138
128
  elapsedTimeInMs,
@@ -5,6 +5,7 @@ import { OutboundVideoTrack } from '@observertc/sample-schemas-js';
5
5
  import { ObservedInboundVideoTrack } from './ObservedInboundVideoTrack';
6
6
  import { CalculatedScore } from './common/CalculatedScore';
7
7
  import { ClientIssue } from './monitors/CallSummary';
8
+ import { SupportedVideoCodecType } from './common/types';
8
9
  export type ObservedOutboundVideoTrackModel = {
9
10
  trackId: string;
10
11
  sfuStreamId?: string;
@@ -42,8 +43,10 @@ export declare class ObservedOutboundVideoTrack extends EventEmitter {
42
43
  readonly peerConnection: ObservedPeerConnection;
43
44
  readonly created: number;
44
45
  visited: boolean;
46
+ added?: number;
47
+ removed?: number;
45
48
  contentType: 'lowmotion' | 'standard' | 'highmotion';
46
- codec: 'vp8' | 'vp9' | 'h264';
49
+ codec?: SupportedVideoCodecType;
47
50
  highestLayer?: ObservedOutboundVideoTrackStats;
48
51
  bitrate: number;
49
52
  jitter?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ObservedOutboundVideoTrack.d.ts","sourceRoot":"","sources":["../src/ObservedOutboundVideoTrack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObservedOutboundVideoTrack.d.ts","sourceRoot":"","sources":["../src/ObservedOutboundVideoTrack.ts"],"names":[],"mappings":"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"}