@observertc/observer-js 0.9.11-beta → 0.9.12-beta

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 (91) hide show
  1. package/lib/Evaluator.d.ts +2 -0
  2. package/lib/Evaluator.d.ts.map +1 -1
  3. package/lib/Evaluator.js +2 -1
  4. package/lib/Observer.d.ts.map +1 -1
  5. package/lib/Observer.js +1 -0
  6. package/lib/common/callMetaReports.d.ts +1 -1
  7. package/lib/common/callMetaReports.d.ts.map +1 -1
  8. package/lib/common/callMetaReports.js +2 -1
  9. package/lib/common/utils.d.ts +1 -0
  10. package/lib/common/utils.d.ts.map +1 -1
  11. package/lib/common/utils.js +12 -0
  12. package/lib/middlewares/DeleteOutdatedCallEntries.d.ts +6 -0
  13. package/lib/middlewares/DeleteOutdatedCallEntries.d.ts.map +1 -0
  14. package/lib/middlewares/DeleteOutdatedCallEntries.js +112 -0
  15. package/lib/middlewares/DeleteOutdatedSfuEntries.d.ts +6 -0
  16. package/lib/middlewares/DeleteOutdatedSfuEntries.d.ts.map +1 -0
  17. package/lib/middlewares/DeleteOutdatedSfuEntries.js +118 -0
  18. package/lib/middlewares/TransactionContext.d.ts.map +1 -1
  19. package/lib/middlewares/TransactionContext.js +42 -26
  20. package/lib/middlewares/TransactoinProcessor.d.ts +1 -1
  21. package/lib/middlewares/TransactoinProcessor.d.ts.map +1 -1
  22. package/lib/middlewares/TransactoinProcessor.js +4 -2
  23. package/lib/middlewares/VisitObservedCallsMiddleware.d.ts +2 -1
  24. package/lib/middlewares/VisitObservedCallsMiddleware.d.ts.map +1 -1
  25. package/lib/middlewares/VisitObservedCallsMiddleware.js +19 -90
  26. package/lib/middlewares/visitors/visitClient.d.ts.map +1 -1
  27. package/lib/middlewares/visitors/visitClient.js +15 -13
  28. package/lib/middlewares/visitors/visitInboundAudioTrack.d.ts +1 -1
  29. package/lib/middlewares/visitors/visitInboundAudioTrack.d.ts.map +1 -1
  30. package/lib/middlewares/visitors/visitInboundAudioTrack.js +10 -2
  31. package/lib/middlewares/visitors/visitInboundVideoTrack.d.ts +1 -1
  32. package/lib/middlewares/visitors/visitInboundVideoTrack.d.ts.map +1 -1
  33. package/lib/middlewares/visitors/visitInboundVideoTrack.js +10 -2
  34. package/lib/middlewares/visitors/visitOutboundAudioTrack.d.ts.map +1 -1
  35. package/lib/middlewares/visitors/visitOutboundAudioTrack.js +5 -1
  36. package/lib/middlewares/visitors/visitOutboundVideoTarck.d.ts.map +1 -1
  37. package/lib/middlewares/visitors/visitOutboundVideoTarck.js +5 -1
  38. package/lib/middlewares/visitors/visitPeerConnection.d.ts.map +1 -1
  39. package/lib/middlewares/visitors/visitPeerConnection.js +15 -0
  40. package/lib/models/Models.d.ts +26 -22
  41. package/lib/models/Models.d.ts.map +1 -1
  42. package/lib/models/Models.js +16 -11
  43. package/lib/processes/findRemoteMatches.d.ts +9 -0
  44. package/lib/processes/findRemoteMatches.d.ts.map +1 -0
  45. package/lib/processes/findRemoteMatches.js +83 -0
  46. package/lib/samples/ObservedCalls.d.ts.map +1 -1
  47. package/lib/samples/ObservedCalls.js +16 -7
  48. package/lib/samples/ObservedInboundAudioTrack.d.ts +2 -0
  49. package/lib/samples/ObservedInboundAudioTrack.d.ts.map +1 -1
  50. package/lib/samples/ObservedInboundVideoTrack.d.ts +2 -0
  51. package/lib/samples/ObservedInboundVideoTrack.d.ts.map +1 -1
  52. package/lib/samples/ObservedOutboundAudioTrack.d.ts +1 -0
  53. package/lib/samples/ObservedOutboundAudioTrack.d.ts.map +1 -1
  54. package/lib/samples/ObservedOutboundVideoTrack.d.ts +1 -0
  55. package/lib/samples/ObservedOutboundVideoTrack.d.ts.map +1 -1
  56. package/lib/samples/ObservedPeerConnection.d.ts.map +1 -1
  57. package/lib/samples/ObservedPeerConnection.js +14 -8
  58. package/lib/samples/ObservedSfus.d.ts.map +1 -1
  59. package/lib/samples/ObservedSfus.js +10 -4
  60. package/lib/storages/ObserverStorage.d.ts +4 -0
  61. package/lib/storages/ObserverStorage.d.ts.map +1 -1
  62. package/lib/storages/SimpleStorage.d.ts +1 -0
  63. package/lib/storages/SimpleStorage.d.ts.map +1 -1
  64. package/lib/storages/SimpleStorage.js +3 -0
  65. package/package.json +1 -1
  66. package/src/Evaluator.ts +7 -3
  67. package/src/Observer.ts +1 -0
  68. package/src/common/callMetaReports.ts +2 -0
  69. package/src/common/utils.ts +11 -0
  70. package/src/middlewares/DeleteOutdatedCallEntries.ts +151 -0
  71. package/src/middlewares/DeleteOutdatedSfuEntries.ts +159 -0
  72. package/src/middlewares/TransactionContext.ts +61 -29
  73. package/src/middlewares/TransactoinProcessor.ts +8 -2
  74. package/src/middlewares/VisitObservedCallsMiddleware.ts +40 -125
  75. package/src/middlewares/visitors/visitClient.ts +15 -13
  76. package/src/middlewares/visitors/visitInboundAudioTrack.ts +15 -5
  77. package/src/middlewares/visitors/visitInboundVideoTrack.ts +14 -2
  78. package/src/middlewares/visitors/visitOutboundAudioTrack.ts +6 -2
  79. package/src/middlewares/visitors/visitOutboundVideoTarck.ts +5 -1
  80. package/src/middlewares/visitors/visitPeerConnection.ts +17 -1
  81. package/src/models/Models.ts +40 -34
  82. package/src/processes/findRemoteMatches.ts +94 -0
  83. package/src/samples/ObservedCalls.ts +17 -7
  84. package/src/samples/ObservedInboundAudioTrack.ts +2 -0
  85. package/src/samples/ObservedInboundVideoTrack.ts +3 -1
  86. package/src/samples/ObservedOutboundAudioTrack.ts +2 -1
  87. package/src/samples/ObservedOutboundVideoTrack.ts +2 -1
  88. package/src/samples/ObservedPeerConnection.ts +28 -8
  89. package/src/samples/ObservedSfus.ts +10 -5
  90. package/src/storages/ObserverStorage.ts +5 -0
  91. package/src/storages/SimpleStorage.ts +4 -0
@@ -8,21 +8,30 @@ const visitInboundAudioTrack_1 = require("./visitors/visitInboundAudioTrack");
8
8
  const visitOutboundAudioTrack_1 = require("./visitors/visitOutboundAudioTrack");
9
9
  const visitOutboundVideoTarck_1 = require("./visitors/visitOutboundVideoTarck");
10
10
  const visitInboundVideoTrack_1 = require("./visitors/visitInboundVideoTrack");
11
+ const findRemoteMatches_1 = require("../processes/findRemoteMatches");
11
12
  exports.logger = (0, logger_1.createLogger)('VisitObservedCallsMiddleware');
12
- function createVisitObservedCallsMiddleware(reports, fetchSamples) {
13
+ const emptyMap = new Map();
14
+ function createVisitObservedCallsMiddleware(storages, reports, fetchSamples, findRemoteMatches) {
13
15
  const process = async (transaction) => {
14
- const { observedCalls, clients, updatedPeerConnections, deletedPeerConnections, updatedInboundAudioTracks, deletedInboundAudioTracks, updatedInboundVideoTracks, deletedInboundVideoTracks, updatedOutboundAudioTracks, deletedOutboundAudioTracks, updatedOutboundVideoTracks, deletedOutboundVideoTracks, } = transaction;
16
+ var _a, _b, _c, _d;
17
+ const { observedCalls, clients, updatedPeerConnections, updatedInboundAudioTracks, updatedInboundVideoTracks, updatedOutboundAudioTracks, updatedOutboundVideoTracks, } = transaction;
15
18
  const visitedPeerConnectionIds = new Set();
16
19
  const visitedInboundAudioTrackIds = new Set();
17
20
  const visitedInboundVideoTrackIds = new Set();
18
21
  const visitedOutboundAudioTrackIds = new Set();
19
22
  const visitedOutboundVideoTrackIds = new Set();
23
+ const { remoteTrackIds, remotePeerConnectionIds, remoteClientIds } = !findRemoteMatches ? {
24
+ remoteTrackIds: emptyMap,
25
+ remotePeerConnectionIds: emptyMap,
26
+ remoteClientIds: emptyMap,
27
+ } : await (0, findRemoteMatches_1.findRemoteMatches)(storages, clients, new Map([...updatedInboundAudioTracks, ...updatedInboundVideoTracks]));
28
+ const now = BigInt(Date.now());
29
+ const fakeTouched = { touched: BigInt(0) };
20
30
  for (const observedCall of observedCalls.observedCalls()) {
21
31
  const { callId, serviceId, roomId } = observedCall;
22
32
  for (const observedClient of observedCall.observedClients()) {
23
33
  const { clientId } = observedClient;
24
34
  const storedClient = clients.get(clientId);
25
- // console.warn("dskfjhdkfhsdkf", observedClient, storedClient);
26
35
  if (!storedClient) {
27
36
  // should not happen as client joined must have run before this
28
37
  exports.logger.warn('Client has not been registered');
@@ -38,115 +47,35 @@ function createVisitObservedCallsMiddleware(reports, fetchSamples) {
38
47
  exports.logger.warn(`PeerConnection ${peerConnectionId} has not been registered for client: ${clientId}, call ${callId}, room: ${roomId}, service: ${serviceId}`);
39
48
  continue;
40
49
  }
50
+ storedPeerConnection.touched = now;
41
51
  visitedPeerConnectionIds.add(peerConnectionId);
42
52
  for (const observedInboundAudioTrack of observedPeerConnection.inboundAudioTracks()) {
43
53
  const { trackId } = observedInboundAudioTrack;
44
- (0, visitInboundAudioTrack_1.visitInboundAudioTrack)(observedInboundAudioTrack, storedPeerConnection, updatedInboundAudioTracks, reports, fetchSamples);
54
+ (0, visitInboundAudioTrack_1.visitInboundAudioTrack)(observedInboundAudioTrack, storedPeerConnection, updatedInboundAudioTracks, reports, fetchSamples, remoteTrackIds.get(trackId), remotePeerConnectionIds.get(trackId), remoteClientIds.get(trackId));
45
55
  visitedInboundAudioTrackIds.add(trackId);
56
+ ((_a = updatedInboundAudioTracks.get(trackId)) !== null && _a !== void 0 ? _a : fakeTouched).touched = now;
46
57
  }
47
58
  for (const observedInboundVideoTrack of observedPeerConnection.inboundVideoTracks()) {
48
59
  const { trackId } = observedInboundVideoTrack;
49
- (0, visitInboundVideoTrack_1.visitInboundVideoTrack)(observedInboundVideoTrack, storedPeerConnection, updatedInboundVideoTracks, reports, fetchSamples);
60
+ (0, visitInboundVideoTrack_1.visitInboundVideoTrack)(observedInboundVideoTrack, storedPeerConnection, updatedInboundVideoTracks, reports, fetchSamples, remoteTrackIds.get(trackId), remotePeerConnectionIds.get(trackId), remoteClientIds.get(trackId));
50
61
  visitedInboundVideoTrackIds.add(trackId);
62
+ ((_b = updatedInboundVideoTracks.get(trackId)) !== null && _b !== void 0 ? _b : fakeTouched).touched = now;
51
63
  }
52
64
  for (const observedOutboundAudioTrack of observedPeerConnection.outboundAudioTracks()) {
53
65
  const { trackId } = observedOutboundAudioTrack;
54
66
  (0, visitOutboundAudioTrack_1.visitOutboundAudioTrack)(observedOutboundAudioTrack, storedPeerConnection, updatedOutboundAudioTracks, reports, fetchSamples);
55
67
  visitedOutboundAudioTrackIds.add(trackId);
68
+ ((_c = updatedOutboundAudioTracks.get(trackId)) !== null && _c !== void 0 ? _c : fakeTouched).touched = now;
56
69
  }
57
70
  for (const observedOutboundVideoTrack of observedPeerConnection.outboundVideoTracks()) {
58
71
  const { trackId } = observedOutboundVideoTrack;
59
72
  (0, visitOutboundVideoTarck_1.visitOutboundVideoTrack)(observedOutboundVideoTrack, storedPeerConnection, updatedOutboundVideoTracks, reports, fetchSamples);
60
73
  visitedOutboundVideoTrackIds.add(trackId);
74
+ ((_d = updatedOutboundVideoTracks.get(trackId)) !== null && _d !== void 0 ? _d : fakeTouched).touched = now;
61
75
  }
62
76
  }
63
77
  }
64
78
  }
65
- for (const [peerConnectionId, peerConnection] of Array.from(updatedPeerConnections.entries())) {
66
- if (visitedPeerConnectionIds.has(peerConnectionId)) {
67
- continue;
68
- }
69
- // delete PeerConnection
70
- const { serviceId, callId, clientId } = peerConnection;
71
- if (!serviceId || !callId || !clientId) {
72
- continue;
73
- }
74
- const storedClient = clients.get(clientId);
75
- updatedPeerConnections.delete(peerConnectionId);
76
- deletedPeerConnections.add(peerConnectionId);
77
- // also update the client model
78
- if (storedClient) {
79
- storedClient.peerConnectionIds = storedClient.peerConnectionIds.filter((pcId) => pcId !== peerConnectionId);
80
- }
81
- }
82
- for (const [trackId, inboundAudioTrack] of Array.from(updatedInboundAudioTracks.entries())) {
83
- if (visitedInboundAudioTrackIds.has(trackId)) {
84
- continue;
85
- }
86
- // delete PeerConnection
87
- const { serviceId, callId, clientId, peerConnectionId } = inboundAudioTrack;
88
- if (!serviceId || !callId || !clientId || !peerConnectionId) {
89
- continue;
90
- }
91
- const storedPeerConnection = updatedPeerConnections.get(peerConnectionId);
92
- updatedInboundAudioTracks.delete(peerConnectionId);
93
- deletedInboundAudioTracks.add(peerConnectionId);
94
- // also update the peer connection model
95
- if (storedPeerConnection) {
96
- storedPeerConnection.inboundTrackIds = storedPeerConnection.inboundTrackIds.filter((tId) => tId !== trackId);
97
- }
98
- }
99
- for (const [trackId, inboundVideoTrack] of Array.from(updatedInboundVideoTracks.entries())) {
100
- if (visitedInboundVideoTrackIds.has(trackId)) {
101
- continue;
102
- }
103
- // delete PeerConnection
104
- const { serviceId, callId, clientId, peerConnectionId } = inboundVideoTrack;
105
- if (!serviceId || !callId || !clientId || !peerConnectionId) {
106
- continue;
107
- }
108
- const storedPeerConnection = updatedPeerConnections.get(peerConnectionId);
109
- updatedInboundVideoTracks.delete(peerConnectionId);
110
- deletedInboundVideoTracks.add(peerConnectionId);
111
- // also update the peer connection model
112
- if (storedPeerConnection) {
113
- storedPeerConnection.inboundTrackIds = storedPeerConnection.inboundTrackIds.filter((tId) => tId !== trackId);
114
- }
115
- }
116
- for (const [trackId, OutboundAudioTrack] of Array.from(updatedOutboundAudioTracks.entries())) {
117
- if (visitedOutboundAudioTrackIds.has(trackId)) {
118
- continue;
119
- }
120
- // delete PeerConnection
121
- const { serviceId, callId, clientId, peerConnectionId } = OutboundAudioTrack;
122
- if (!serviceId || !callId || !clientId || !peerConnectionId) {
123
- continue;
124
- }
125
- const storedPeerConnection = updatedPeerConnections.get(peerConnectionId);
126
- updatedOutboundAudioTracks.delete(peerConnectionId);
127
- deletedOutboundAudioTracks.add(peerConnectionId);
128
- // also update the peer connection model
129
- if (storedPeerConnection) {
130
- storedPeerConnection.outboundTrackIds = storedPeerConnection.outboundTrackIds.filter((tId) => tId !== trackId);
131
- }
132
- }
133
- for (const [trackId, OutboundVideoTrack] of Array.from(updatedOutboundVideoTracks.entries())) {
134
- if (visitedOutboundVideoTrackIds.has(trackId)) {
135
- continue;
136
- }
137
- // delete PeerConnection
138
- const { serviceId, callId, clientId, peerConnectionId } = OutboundVideoTrack;
139
- if (!serviceId || !callId || !clientId || !peerConnectionId) {
140
- continue;
141
- }
142
- const storedPeerConnection = updatedPeerConnections.get(peerConnectionId);
143
- updatedOutboundVideoTracks.delete(peerConnectionId);
144
- deletedOutboundVideoTracks.add(peerConnectionId);
145
- // also update the peer connection model
146
- if (storedPeerConnection) {
147
- storedPeerConnection.outboundTrackIds = storedPeerConnection.outboundTrackIds.filter((tId) => tId !== trackId);
148
- }
149
- }
150
79
  };
151
80
  const result = async (context, next) => {
152
81
  await process(context);
@@ -1 +1 @@
1
- {"version":3,"file":"visitClient.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AASjE,wBAAgB,WAAW,CAC1B,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QA2LrB"}
1
+ {"version":3,"file":"visitClient.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AASjE,wBAAgB,WAAW,CAC1B,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QA6LrB"}
@@ -5,7 +5,7 @@ const callMetaReports_1 = require("../../common/callMetaReports");
5
5
  const samples_pb_1 = require("../../models/samples_pb");
6
6
  function visitClient(observedClient, client, reports, fetchSamples) {
7
7
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
8
- const { mediaUnitId, clientId } = observedClient;
8
+ const { mediaUnitId, clientId, userId } = observedClient;
9
9
  const { callId, serviceId, roomId } = observedClient.call;
10
10
  for (const clientSample of observedClient.samples()) {
11
11
  if (clientSample.os && (((_a = client.operationSystem) === null || _a === void 0 ? void 0 : _a.name) !== clientSample.os.name ||
@@ -19,7 +19,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
19
19
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
20
20
  type: callMetaReports_1.CallMetaType.OPERATION_SYSTEM,
21
21
  payload: clientSample.os,
22
- });
22
+ }, userId);
23
23
  reports.addCallMetaReport(callMetaReport);
24
24
  }
25
25
  if (clientSample.engine && (((_d = client.engine) === null || _d === void 0 ? void 0 : _d.name) !== clientSample.engine.name ||
@@ -32,7 +32,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
32
32
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
33
33
  type: callMetaReports_1.CallMetaType.ENGINE,
34
34
  payload: clientSample.engine,
35
- });
35
+ }, userId);
36
36
  reports.addCallMetaReport(callMetaReport);
37
37
  }
38
38
  if (clientSample.platform && (((_f = client.platform) === null || _f === void 0 ? void 0 : _f.model) !== clientSample.platform.model ||
@@ -46,7 +46,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
46
46
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
47
47
  type: callMetaReports_1.CallMetaType.PLATFORM,
48
48
  payload: clientSample.platform,
49
- });
49
+ }, userId);
50
50
  reports.addCallMetaReport(callMetaReport);
51
51
  }
52
52
  if (clientSample.browser && (((_j = client.browser) === null || _j === void 0 ? void 0 : _j.name) !== clientSample.browser.name ||
@@ -59,7 +59,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
59
59
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
60
60
  type: callMetaReports_1.CallMetaType.BROWSER,
61
61
  payload: clientSample.browser,
62
- });
62
+ }, userId);
63
63
  reports.addCallMetaReport(callMetaReport);
64
64
  }
65
65
  if (clientSample.mediaConstraints && 0 < clientSample.mediaConstraints.length) {
@@ -67,7 +67,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
67
67
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
68
68
  type: callMetaReports_1.CallMetaType.MEDIA_CONSTRAINT,
69
69
  payload: mediaConstraint,
70
- });
70
+ }, userId);
71
71
  reports.addCallMetaReport(callMetaReport);
72
72
  }
73
73
  }
@@ -76,7 +76,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
76
76
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
77
77
  type: callMetaReports_1.CallMetaType.LOCAL_SDP,
78
78
  payload: localSDP,
79
- });
79
+ }, userId);
80
80
  reports.addCallMetaReport(callMetaReport);
81
81
  }
82
82
  }
@@ -88,6 +88,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
88
88
  roomId,
89
89
  callId,
90
90
  clientId,
91
+ userId,
91
92
  timestamp: Date.now(),
92
93
  payload: extensionStats.payload,
93
94
  extensionType: extensionStats.type,
@@ -102,6 +103,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
102
103
  roomId,
103
104
  callId,
104
105
  clientId,
106
+ userId,
105
107
  timestamp: Date.now(),
106
108
  ...callEvent,
107
109
  });
@@ -112,7 +114,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
112
114
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
113
115
  type: callMetaReports_1.CallMetaType.USER_MEDIA_ERROR,
114
116
  payload: userMediaError,
115
- });
117
+ }, userId);
116
118
  reports.addCallMetaReport(callMetaReport);
117
119
  }
118
120
  }
@@ -121,7 +123,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
121
123
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
122
124
  type: callMetaReports_1.CallMetaType.CERTIFICATE,
123
125
  payload: certificate,
124
- });
126
+ }, userId);
125
127
  reports.addCallMetaReport(callMetaReport);
126
128
  }
127
129
  }
@@ -130,7 +132,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
130
132
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
131
133
  type: callMetaReports_1.CallMetaType.CODEC,
132
134
  payload: codec,
133
- });
135
+ }, userId);
134
136
  reports.addCallMetaReport(callMetaReport);
135
137
  }
136
138
  }
@@ -139,7 +141,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
139
141
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
140
142
  type: callMetaReports_1.CallMetaType.ICE_SERVER,
141
143
  payload: iceServer,
142
- });
144
+ }, userId);
143
145
  reports.addCallMetaReport(callMetaReport);
144
146
  }
145
147
  }
@@ -148,7 +150,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
148
150
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
149
151
  type: callMetaReports_1.CallMetaType.MEDIA_DEVICE,
150
152
  payload: mediaDevice,
151
- });
153
+ }, userId);
152
154
  reports.addCallMetaReport(callMetaReport);
153
155
  }
154
156
  }
@@ -157,7 +159,7 @@ function visitClient(observedClient, client, reports, fetchSamples) {
157
159
  const callMetaReport = (0, callMetaReports_1.createCallMetaReport)(serviceId, mediaUnitId, roomId, callId, clientId, {
158
160
  type: callMetaReports_1.CallMetaType.MEDIA_SOURCE,
159
161
  payload: mediaSource,
160
- });
162
+ }, userId);
161
163
  reports.addCallMetaReport(callMetaReport);
162
164
  }
163
165
  }
@@ -1,5 +1,5 @@
1
1
  import * as Models from '../../models/Models';
2
2
  import { ReportsCollector } from '../../common/ReportsCollector';
3
3
  import { ObservedInboundAudioTrack } from '../../samples/ObservedInboundAudioTrack';
4
- export declare function visitInboundAudioTrack(observedInboundAudioTrack: ObservedInboundAudioTrack, storedPeerConnection: Models.PeerConnection, storedInboundTracks: Map<string, Models.InboundTrack>, reports: ReportsCollector, fetchSamples: boolean): void;
4
+ export declare function visitInboundAudioTrack(observedInboundAudioTrack: ObservedInboundAudioTrack, storedPeerConnection: Models.PeerConnection, storedInboundTracks: Map<string, Models.InboundTrack>, reports: ReportsCollector, fetchSamples: boolean, remoteTrackId?: string, remotePeerConnectionId?: string, remoteClientId?: string): void;
5
5
  //# sourceMappingURL=visitInboundAudioTrack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"visitInboundAudioTrack.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitInboundAudioTrack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAKpF,wBAAgB,sBAAsB,CACrC,yBAAyB,EAAE,yBAAyB,EACpD,oBAAoB,EAAE,MAAM,CAAC,cAAc,EAC3C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,EACrD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QAqFrB"}
1
+ {"version":3,"file":"visitInboundAudioTrack.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitInboundAudioTrack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAKpF,wBAAgB,sBAAsB,CACrC,yBAAyB,EAAE,yBAAyB,EACpD,oBAAoB,EAAE,MAAM,CAAC,cAAc,EAC3C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,EACrD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,cAAc,CAAC,EAAE,MAAM,QA4FvB"}
@@ -27,8 +27,8 @@ exports.visitInboundAudioTrack = void 0;
27
27
  const Models = __importStar(require("../../models/Models"));
28
28
  const VisitObservedCallsMiddleware_1 = require("../VisitObservedCallsMiddleware");
29
29
  const samples_pb_1 = require("../../models/samples_pb");
30
- function visitInboundAudioTrack(observedInboundAudioTrack, storedPeerConnection, storedInboundTracks, reports, fetchSamples) {
31
- const { trackId } = observedInboundAudioTrack;
30
+ function visitInboundAudioTrack(observedInboundAudioTrack, storedPeerConnection, storedInboundTracks, reports, fetchSamples, remoteTrackId, remotePeerConnectionId, remoteClientId) {
31
+ const { trackId, sfuStreamId, sfuSinkId } = observedInboundAudioTrack;
32
32
  const { peerConnectionId } = observedInboundAudioTrack.peerConnection;
33
33
  const { mediaUnitId, clientId, userId, marker, minTimestamp: timestamp, } = observedInboundAudioTrack.peerConnection.client;
34
34
  const { serviceId, roomId, callId } = observedInboundAudioTrack.peerConnection.client.call;
@@ -39,9 +39,12 @@ function visitInboundAudioTrack(observedInboundAudioTrack, storedPeerConnection,
39
39
  roomId,
40
40
  callId,
41
41
  clientId,
42
+ kind: 'audio',
42
43
  peerConnectionId,
43
44
  mediaUnitId,
44
45
  trackId,
46
+ sfuSinkId,
47
+ sfuStreamId,
45
48
  userId,
46
49
  marker,
47
50
  });
@@ -60,11 +63,15 @@ function visitInboundAudioTrack(observedInboundAudioTrack, storedPeerConnection,
60
63
  roomId,
61
64
  callId,
62
65
  clientId,
66
+ userId,
63
67
  mediaUnitId,
64
68
  peerConnectionId,
65
69
  ...inboundAudioSample,
66
70
  timestamp,
67
71
  sampleSeq: -1,
72
+ remoteClientId,
73
+ remotePeerConnectionId,
74
+ remoteTrackId,
68
75
  };
69
76
  reports.addInboundAudioTrackReport(report);
70
77
  if (fetchSamples) {
@@ -83,6 +90,7 @@ function visitInboundAudioTrack(observedInboundAudioTrack, storedPeerConnection,
83
90
  statsMap.set(ssrc, videoStats);
84
91
  }
85
92
  }
93
+ storedInboundAudioTrack.ssrc = [...statsMap.keys()];
86
94
  storedInboundAudioTrack.videoStats = Array.from(statsMap.values());
87
95
  }
88
96
  exports.visitInboundAudioTrack = visitInboundAudioTrack;
@@ -1,5 +1,5 @@
1
1
  import { ReportsCollector } from '../../common/ReportsCollector';
2
2
  import { ObservedInboundVideoTrack } from '../../samples/ObservedInboundVideoTrack';
3
3
  import * as Models from '../../models/Models';
4
- export declare function visitInboundVideoTrack(observedInboundVideoTrack: ObservedInboundVideoTrack, storedPeerConnection: Models.PeerConnection, storedInboundTracks: Map<string, Models.InboundTrack>, reports: ReportsCollector, fetchSamples: boolean): void;
4
+ export declare function visitInboundVideoTrack(observedInboundVideoTrack: ObservedInboundVideoTrack, storedPeerConnection: Models.PeerConnection, storedInboundTracks: Map<string, Models.InboundTrack>, reports: ReportsCollector, fetchSamples: boolean, remoteTrackId?: string, remotePeerConnectionId?: string, remoteClientId?: string): void;
5
5
  //# sourceMappingURL=visitInboundVideoTrack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"visitInboundVideoTrack.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitInboundVideoTrack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAK9C,wBAAgB,sBAAsB,CACrC,yBAAyB,EAAE,yBAAyB,EACpD,oBAAoB,EAAE,MAAM,CAAC,cAAc,EAC3C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,EACrD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QAqFrB"}
1
+ {"version":3,"file":"visitInboundVideoTrack.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitInboundVideoTrack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAK9C,wBAAgB,sBAAsB,CACrC,yBAAyB,EAAE,yBAAyB,EACpD,oBAAoB,EAAE,MAAM,CAAC,cAAc,EAC3C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,EACrD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,cAAc,CAAC,EAAE,MAAM,QA8FvB"}
@@ -28,8 +28,8 @@ const VisitObservedCallsMiddleware_1 = require("../VisitObservedCallsMiddleware"
28
28
  const Models = __importStar(require("../../models/Models"));
29
29
  const samples_pb_1 = require("../../models/samples_pb");
30
30
  // InboundVideoTrack visitor
31
- function visitInboundVideoTrack(observedInboundVideoTrack, storedPeerConnection, storedInboundTracks, reports, fetchSamples) {
32
- const { trackId } = observedInboundVideoTrack;
31
+ function visitInboundVideoTrack(observedInboundVideoTrack, storedPeerConnection, storedInboundTracks, reports, fetchSamples, remoteTrackId, remotePeerConnectionId, remoteClientId) {
32
+ const { trackId, sfuStreamId, sfuSinkId } = observedInboundVideoTrack;
33
33
  const { peerConnectionId } = observedInboundVideoTrack.peerConnection;
34
34
  const { mediaUnitId, clientId, userId, marker, minTimestamp: timestamp, } = observedInboundVideoTrack.peerConnection.client;
35
35
  const { serviceId, roomId, callId } = observedInboundVideoTrack.peerConnection.client.call;
@@ -40,9 +40,12 @@ function visitInboundVideoTrack(observedInboundVideoTrack, storedPeerConnection,
40
40
  roomId,
41
41
  callId,
42
42
  clientId,
43
+ kind: 'video',
43
44
  peerConnectionId,
44
45
  mediaUnitId,
45
46
  trackId,
47
+ sfuStreamId,
48
+ sfuSinkId,
46
49
  userId,
47
50
  marker,
48
51
  });
@@ -61,11 +64,15 @@ function visitInboundVideoTrack(observedInboundVideoTrack, storedPeerConnection,
61
64
  roomId,
62
65
  callId,
63
66
  clientId,
67
+ userId,
64
68
  mediaUnitId,
65
69
  peerConnectionId,
66
70
  ...inboundVideoSample,
67
71
  timestamp,
68
72
  sampleSeq: -1,
73
+ remoteClientId,
74
+ remotePeerConnectionId,
75
+ remoteTrackId,
69
76
  };
70
77
  reports.addInboundVideoTrackReport(report);
71
78
  if (fetchSamples) {
@@ -85,6 +92,7 @@ function visitInboundVideoTrack(observedInboundVideoTrack, storedPeerConnection,
85
92
  statsMap.set(ssrc, videoStats);
86
93
  }
87
94
  }
95
+ storedInboundVideoTrack.ssrc = [...statsMap.keys()];
88
96
  storedInboundVideoTrack.videoStats = Array.from(statsMap.values());
89
97
  }
90
98
  exports.visitInboundVideoTrack = visitInboundVideoTrack;
@@ -1 +1 @@
1
- {"version":3,"file":"visitOutboundAudioTrack.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitOutboundAudioTrack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAKtF,wBAAgB,uBAAuB,CACtC,0BAA0B,EAAE,0BAA0B,EACtD,oBAAoB,EAAE,MAAM,CAAC,cAAc,EAC3C,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,EACvD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QA+ErB"}
1
+ {"version":3,"file":"visitOutboundAudioTrack.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitOutboundAudioTrack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAKtF,wBAAgB,uBAAuB,CACtC,0BAA0B,EAAE,0BAA0B,EACtD,oBAAoB,EAAE,MAAM,CAAC,cAAc,EAC3C,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,EACvD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QAmFrB"}
@@ -28,7 +28,7 @@ const Models = __importStar(require("../../models/Models"));
28
28
  const VisitObservedCallsMiddleware_1 = require("../VisitObservedCallsMiddleware");
29
29
  const samples_pb_1 = require("../../models/samples_pb");
30
30
  function visitOutboundAudioTrack(observedOutboundAudioTrack, storedPeerConnection, storedOutboundTracks, reports, fetchSamples) {
31
- const { trackId } = observedOutboundAudioTrack;
31
+ const { trackId, sfuStreamId } = observedOutboundAudioTrack;
32
32
  const { peerConnectionId } = observedOutboundAudioTrack.peerConnection;
33
33
  const { mediaUnitId, clientId, userId, marker, minTimestamp: timestamp, } = observedOutboundAudioTrack.peerConnection.client;
34
34
  const { serviceId, roomId, callId } = observedOutboundAudioTrack.peerConnection.client.call;
@@ -39,9 +39,11 @@ function visitOutboundAudioTrack(observedOutboundAudioTrack, storedPeerConnectio
39
39
  roomId,
40
40
  callId,
41
41
  clientId,
42
+ kind: 'audio',
42
43
  peerConnectionId,
43
44
  mediaUnitId,
44
45
  trackId,
46
+ sfuStreamId,
45
47
  userId,
46
48
  marker,
47
49
  });
@@ -60,6 +62,7 @@ function visitOutboundAudioTrack(observedOutboundAudioTrack, storedPeerConnectio
60
62
  roomId,
61
63
  callId,
62
64
  clientId,
65
+ userId,
63
66
  mediaUnitId,
64
67
  peerConnectionId,
65
68
  ...outboundAudioSample,
@@ -81,6 +84,7 @@ function visitOutboundAudioTrack(observedOutboundAudioTrack, storedPeerConnectio
81
84
  statsMap.set(ssrc, audioStats);
82
85
  }
83
86
  }
87
+ storedOutboundAudioTrack.ssrc = [...statsMap.keys()];
84
88
  storedOutboundAudioTrack.audioStats = Array.from(statsMap.values());
85
89
  }
86
90
  exports.visitOutboundAudioTrack = visitOutboundAudioTrack;
@@ -1 +1 @@
1
- {"version":3,"file":"visitOutboundVideoTarck.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitOutboundVideoTarck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAKtF,wBAAgB,uBAAuB,CACtC,0BAA0B,EAAE,0BAA0B,EACtD,oBAAoB,EAAE,MAAM,CAAC,cAAc,EAC3C,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,EACvD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QAiFrB"}
1
+ {"version":3,"file":"visitOutboundVideoTarck.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitOutboundVideoTarck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAKtF,wBAAgB,uBAAuB,CACtC,0BAA0B,EAAE,0BAA0B,EACtD,oBAAoB,EAAE,MAAM,CAAC,cAAc,EAC3C,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,EACvD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QAqFrB"}
@@ -28,7 +28,7 @@ const Models = __importStar(require("../../models/Models"));
28
28
  const VisitObservedCallsMiddleware_1 = require("../VisitObservedCallsMiddleware");
29
29
  const samples_pb_1 = require("../../models/samples_pb");
30
30
  function visitOutboundVideoTrack(observedOutboundVideoTrack, storedPeerConnection, storedOutboundTracks, reports, fetchSamples) {
31
- const { trackId } = observedOutboundVideoTrack;
31
+ const { trackId, sfuStreamId } = observedOutboundVideoTrack;
32
32
  const { peerConnectionId } = observedOutboundVideoTrack.peerConnection;
33
33
  const { mediaUnitId, clientId, userId, marker, minTimestamp: timestamp, } = observedOutboundVideoTrack.peerConnection.client;
34
34
  const { serviceId, roomId, callId } = observedOutboundVideoTrack.peerConnection.client.call;
@@ -39,9 +39,11 @@ function visitOutboundVideoTrack(observedOutboundVideoTrack, storedPeerConnectio
39
39
  roomId,
40
40
  callId,
41
41
  clientId,
42
+ kind: 'video',
42
43
  peerConnectionId,
43
44
  mediaUnitId,
44
45
  trackId,
46
+ sfuStreamId,
45
47
  userId,
46
48
  marker,
47
49
  });
@@ -60,6 +62,7 @@ function visitOutboundVideoTrack(observedOutboundVideoTrack, storedPeerConnectio
60
62
  roomId,
61
63
  callId,
62
64
  clientId,
65
+ userId,
63
66
  mediaUnitId,
64
67
  peerConnectionId,
65
68
  ...outboundVideoSample,
@@ -82,6 +85,7 @@ function visitOutboundVideoTrack(observedOutboundVideoTrack, storedPeerConnectio
82
85
  statsMap.set(ssrc, videoStats);
83
86
  }
84
87
  }
88
+ storedOutboundVideoTrack.ssrc = [...statsMap.keys()];
85
89
  storedOutboundVideoTrack.videoStats = Array.from(statsMap.values());
86
90
  }
87
91
  exports.visitOutboundVideoTrack = visitOutboundVideoTrack;
@@ -1 +1 @@
1
- {"version":3,"file":"visitPeerConnection.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitPeerConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAKjE,wBAAgB,mBAAmB,CAClC,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,MAAM,CAAC,MAAM,EAC3B,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,EACzD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QAwGrB"}
1
+ {"version":3,"file":"visitPeerConnection.d.ts","sourceRoot":"","sources":["../../../src/middlewares/visitors/visitPeerConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAKjE,wBAAgB,mBAAmB,CAClC,sBAAsB,EAAE,sBAAsB,EAC9C,YAAY,EAAE,MAAM,CAAC,MAAM,EAC3B,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,EACzD,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,OAAO,QAwHrB"}
@@ -59,6 +59,7 @@ function visitPeerConnection(observedPeerConnection, storedClient, storedPeerCon
59
59
  roomId,
60
60
  callId,
61
61
  clientId,
62
+ userId,
62
63
  mediaUnitId,
63
64
  ...pcTransport,
64
65
  timestamp,
@@ -66,6 +67,20 @@ function visitPeerConnection(observedPeerConnection, storedClient, storedPeerCon
66
67
  };
67
68
  reports.addPeerConnectionTransportReports(report);
68
69
  }
70
+ for (const iceCandidatePair of observedPeerConnection.iceCandidatePairs()) {
71
+ const report = {
72
+ serviceId,
73
+ roomId,
74
+ callId,
75
+ userId,
76
+ clientId,
77
+ mediaUnitId,
78
+ ...iceCandidatePair,
79
+ timestamp,
80
+ sampleSeq: -1, // deprecated
81
+ };
82
+ reports.addIceCandidatePairReport(report);
83
+ }
69
84
  if (fetchSamples) {
70
85
  storedPeerConnection.icelocalCandidates = [];
71
86
  for (const iceLocalCandidate of observedPeerConnection.iceLocalCandidates()) {