@observertc/observer-js 1.0.1-c3edea3.0 → 1.0.1-c665f5a.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 (204) hide show
  1. package/README.md +535 -1
  2. package/lib/ObservedCall.d.ts +45 -7
  3. package/lib/ObservedCall.d.ts.map +1 -1
  4. package/lib/ObservedCall.js +156 -14
  5. package/lib/ObservedCallEventMonitor.d.ts +104 -0
  6. package/lib/ObservedCallEventMonitor.d.ts.map +1 -0
  7. package/lib/ObservedCallEventMonitor.js +314 -0
  8. package/lib/ObservedCallSummary.d.ts +18 -0
  9. package/lib/ObservedCallSummary.d.ts.map +1 -0
  10. package/lib/ObservedClient.d.ts +78 -19
  11. package/lib/ObservedClient.d.ts.map +1 -1
  12. package/lib/ObservedClient.js +537 -80
  13. package/lib/ObservedClientEventMonitor.d.ts +91 -0
  14. package/lib/ObservedClientEventMonitor.d.ts.map +1 -0
  15. package/lib/ObservedClientEventMonitor.js +254 -0
  16. package/lib/ObservedClientSummary.d.ts +23 -0
  17. package/lib/ObservedClientSummary.d.ts.map +1 -0
  18. package/lib/ObservedClientSummary.js +2 -0
  19. package/lib/ObservedTURN.d.ts +31 -0
  20. package/lib/ObservedTURN.d.ts.map +1 -0
  21. package/lib/ObservedTURN.js +59 -0
  22. package/lib/ObservedTurnServer.d.ts +25 -0
  23. package/lib/ObservedTurnServer.d.ts.map +1 -0
  24. package/lib/ObservedTurnServer.js +59 -0
  25. package/lib/Observer.d.ts +42 -22
  26. package/lib/Observer.d.ts.map +1 -1
  27. package/lib/Observer.js +115 -40
  28. package/lib/ObserverEventMonitor.d.ts +138 -0
  29. package/lib/ObserverEventMonitor.d.ts.map +1 -0
  30. package/lib/ObserverEventMonitor.js +433 -0
  31. package/lib/ObserverSummary.d.ts +13 -0
  32. package/lib/ObserverSummary.d.ts.map +1 -0
  33. package/lib/ObserverSummary.js +2 -0
  34. package/lib/common/utils.d.ts +2 -1
  35. package/lib/common/utils.d.ts.map +1 -1
  36. package/lib/common/utils.js +11 -3
  37. package/lib/index.d.ts +22 -16
  38. package/lib/index.d.ts.map +1 -1
  39. package/lib/index.js +25 -17
  40. package/lib/mediasoup/ObservedMediasoupRouter.d.ts +7 -0
  41. package/lib/mediasoup/ObservedMediasoupRouter.d.ts.map +1 -0
  42. package/lib/mediasoup/ObservedMediasoupRouter.js +12 -0
  43. package/lib/schema/ClientEventTypes.d.ts +228 -0
  44. package/lib/schema/ClientEventTypes.d.ts.map +1 -0
  45. package/lib/schema/ClientEventTypes.js +41 -0
  46. package/lib/schema/{metaTypes.d.ts → ClientMetaTypes.d.ts} +2 -2
  47. package/lib/schema/ClientMetaTypes.d.ts.map +1 -0
  48. package/lib/schema/ClientMetaTypes.js +16 -0
  49. package/lib/schema/ClientSample.d.ts +1 -1
  50. package/lib/schema/ClientSample.d.ts.map +1 -1
  51. package/lib/updaters/CallUpdater.d.ts.map +1 -0
  52. package/lib/updaters/CallUpdater.js +2 -0
  53. package/lib/updaters/ObserverUpdater.d.ts +5 -0
  54. package/lib/updaters/ObserverUpdater.d.ts.map +1 -0
  55. package/lib/updaters/ObserverUpdater.js +2 -0
  56. package/lib/updaters/OnAllCallObserverUpdater.d.ts +15 -0
  57. package/lib/updaters/OnAllCallObserverUpdater.d.ts.map +1 -0
  58. package/lib/updaters/OnAllCallObserverUpdater.js +50 -0
  59. package/lib/updaters/OnAllClientCallUpdater.d.ts +15 -0
  60. package/lib/updaters/OnAllClientCallUpdater.d.ts.map +1 -0
  61. package/lib/updaters/OnAllClientCallUpdater.js +53 -0
  62. package/lib/updaters/OnAnyCallObserverUpdater.d.ts +12 -0
  63. package/lib/updaters/OnAnyCallObserverUpdater.d.ts.map +1 -0
  64. package/lib/updaters/OnAnyCallObserverUpdater.js +37 -0
  65. package/lib/updaters/OnAnyClientCallUpdater.d.ts +12 -0
  66. package/lib/updaters/OnAnyClientCallUpdater.d.ts.map +1 -0
  67. package/lib/updaters/OnAnyClientCallUpdater.js +36 -0
  68. package/lib/updaters/OnIntervalUpdater.d.ts +10 -0
  69. package/lib/updaters/OnIntervalUpdater.d.ts.map +1 -0
  70. package/lib/updaters/OnIntervalUpdater.js +17 -0
  71. package/lib/updaters/Updater.d.ts +6 -0
  72. package/lib/updaters/Updater.d.ts.map +1 -0
  73. package/lib/updaters/Updater.js +2 -0
  74. package/lib/utils/MediasoupRemoteTrackResolver.d.ts +25 -0
  75. package/lib/utils/MediasoupRemoteTrackResolver.d.ts.map +1 -0
  76. package/lib/utils/MediasoupRemoteTrackResolver.js +110 -0
  77. package/lib/utils/RemoteTrackResolver.d.ts +2 -2
  78. package/lib/utils/RemoteTrackResolver.d.ts.map +1 -1
  79. package/lib/{ObservedCertificate.d.ts → webrtc/ObservedCertificate.d.ts} +1 -1
  80. package/lib/webrtc/ObservedCertificate.d.ts.map +1 -0
  81. package/lib/{ObservedCodec.d.ts → webrtc/ObservedCodec.d.ts} +1 -1
  82. package/lib/webrtc/ObservedCodec.d.ts.map +1 -0
  83. package/lib/{ObservedDataChannel.d.ts → webrtc/ObservedDataChannel.d.ts} +7 -1
  84. package/lib/webrtc/ObservedDataChannel.d.ts.map +1 -0
  85. package/lib/{ObservedDataChannel.js → webrtc/ObservedDataChannel.js} +30 -0
  86. package/lib/{ObservedIceCandidate.d.ts → webrtc/ObservedIceCandidate.d.ts} +1 -1
  87. package/lib/webrtc/ObservedIceCandidate.d.ts.map +1 -0
  88. package/lib/{ObservedIceCandidatePair.d.ts → webrtc/ObservedIceCandidatePair.d.ts} +7 -2
  89. package/lib/webrtc/ObservedIceCandidatePair.d.ts.map +1 -0
  90. package/lib/{ObservedIceCandidatePair.js → webrtc/ObservedIceCandidatePair.js} +45 -1
  91. package/lib/{ObservedIceTransport.d.ts → webrtc/ObservedIceTransport.d.ts} +5 -1
  92. package/lib/webrtc/ObservedIceTransport.d.ts.map +1 -0
  93. package/lib/{ObservedIceTransport.js → webrtc/ObservedIceTransport.js} +28 -0
  94. package/lib/{ObservedInboundRtp.d.ts → webrtc/ObservedInboundRtp.d.ts} +2 -2
  95. package/lib/webrtc/ObservedInboundRtp.d.ts.map +1 -0
  96. package/lib/{ObservedInboundTrack.d.ts → webrtc/ObservedInboundTrack.d.ts} +7 -4
  97. package/lib/webrtc/ObservedInboundTrack.d.ts.map +1 -0
  98. package/lib/{ObservedInboundTrack.js → webrtc/ObservedInboundTrack.js} +4 -1
  99. package/lib/{ObservedMediaPlayout.d.ts → webrtc/ObservedMediaPlayout.d.ts} +2 -2
  100. package/lib/webrtc/ObservedMediaPlayout.d.ts.map +1 -0
  101. package/lib/{ObservedMediaSource.d.ts → webrtc/ObservedMediaSource.d.ts} +2 -2
  102. package/lib/webrtc/ObservedMediaSource.d.ts.map +1 -0
  103. package/lib/{ObservedOutboundRtp.d.ts → webrtc/ObservedOutboundRtp.d.ts} +2 -2
  104. package/lib/webrtc/ObservedOutboundRtp.d.ts.map +1 -0
  105. package/lib/{ObservedOutboundTrack.d.ts → webrtc/ObservedOutboundTrack.d.ts} +7 -4
  106. package/lib/webrtc/ObservedOutboundTrack.d.ts.map +1 -0
  107. package/lib/{ObservedOutboundTrack.js → webrtc/ObservedOutboundTrack.js} +4 -1
  108. package/lib/{ObservedPeerConnection.d.ts → webrtc/ObservedPeerConnection.d.ts} +39 -5
  109. package/lib/webrtc/ObservedPeerConnection.d.ts.map +1 -0
  110. package/lib/{ObservedPeerConnection.js → webrtc/ObservedPeerConnection.js} +185 -30
  111. package/lib/{ObservedPeerConnectionTransport.d.ts → webrtc/ObservedPeerConnectionTransport.d.ts} +1 -1
  112. package/lib/webrtc/ObservedPeerConnectionTransport.d.ts.map +1 -0
  113. package/lib/{ObservedRemoteInboundRtp.d.ts → webrtc/ObservedRemoteInboundRtp.d.ts} +2 -2
  114. package/lib/webrtc/ObservedRemoteInboundRtp.d.ts.map +1 -0
  115. package/lib/{ObservedRemoteOutboundRtp.d.ts → webrtc/ObservedRemoteOutboundRtp.d.ts} +2 -2
  116. package/lib/webrtc/ObservedRemoteOutboundRtp.d.ts.map +1 -0
  117. package/package.json +1 -1
  118. package/src/ObservedCall.ts +233 -17
  119. package/src/ObservedCallEventMonitor.ts +392 -0
  120. package/src/ObservedCallSummary.ts +22 -0
  121. package/src/ObservedClient.ts +644 -92
  122. package/src/ObservedClientEventMonitor.ts +309 -0
  123. package/src/ObservedClientSummary.ts +24 -0
  124. package/src/ObservedTURN.ts +87 -0
  125. package/src/ObservedTurnServer.ts +72 -0
  126. package/src/Observer.ts +168 -64
  127. package/src/ObserverEventMonitor.ts +551 -0
  128. package/src/ObserverSummary.ts +15 -0
  129. package/src/common/utils.ts +12 -2
  130. package/src/index.ts +22 -17
  131. package/src/mediasoup/ObservedMediasoupRouter.ts +12 -0
  132. package/src/schema/ClientEventTypes.ts +280 -0
  133. package/src/schema/{metaTypes.ts → ClientMetaTypes.ts} +1 -1
  134. package/src/schema/ClientSample.ts +1 -1
  135. package/src/updaters/ObserverUpdater.ts +5 -0
  136. package/src/updaters/OnAllCallObserverUpdater.ts +59 -0
  137. package/src/updaters/OnAllClientCallUpdater.ts +61 -0
  138. package/src/updaters/OnAnyCallObserverUpdater.ts +41 -0
  139. package/src/updaters/OnAnyClientCallUpdater.ts +39 -0
  140. package/src/updaters/OnIntervalUpdater.ts +19 -0
  141. package/src/updaters/Updater.ts +5 -0
  142. package/src/utils/MediasoupRemoteTrackResolver.ts +155 -0
  143. package/src/utils/RemoteTrackResolver.ts +2 -2
  144. package/src/{ObservedCertificate.ts → webrtc/ObservedCertificate.ts} +1 -1
  145. package/src/{ObservedCodec.ts → webrtc/ObservedCodec.ts} +1 -1
  146. package/src/{ObservedDataChannel.ts → webrtc/ObservedDataChannel.ts} +33 -1
  147. package/src/{ObservedIceCandidate.ts → webrtc/ObservedIceCandidate.ts} +1 -1
  148. package/src/{ObservedIceCandidatePair.ts → webrtc/ObservedIceCandidatePair.ts} +45 -3
  149. package/src/{ObservedIceTransport.ts → webrtc/ObservedIceTransport.ts} +30 -1
  150. package/src/{ObservedInboundRtp.ts → webrtc/ObservedInboundRtp.ts} +2 -2
  151. package/src/{ObservedInboundTrack.ts → webrtc/ObservedInboundTrack.ts} +9 -4
  152. package/src/{ObservedMediaPlayout.ts → webrtc/ObservedMediaPlayout.ts} +2 -2
  153. package/src/{ObservedMediaSource.ts → webrtc/ObservedMediaSource.ts} +2 -2
  154. package/src/{ObservedOutboundRtp.ts → webrtc/ObservedOutboundRtp.ts} +2 -2
  155. package/src/{ObservedOutboundTrack.ts → webrtc/ObservedOutboundTrack.ts} +9 -4
  156. package/src/{ObservedPeerConnection.ts → webrtc/ObservedPeerConnection.ts} +240 -51
  157. package/src/{ObservedPeerConnectionTransport.ts → webrtc/ObservedPeerConnectionTransport.ts} +1 -1
  158. package/src/{ObservedRemoteInboundRtp.ts → webrtc/ObservedRemoteInboundRtp.ts} +2 -2
  159. package/src/{ObservedRemoteOutboundRtp.ts → webrtc/ObservedRemoteOutboundRtp.ts} +2 -2
  160. package/tsconfig.json +1 -1
  161. package/lib/ObservedCertificate.d.ts.map +0 -1
  162. package/lib/ObservedCodec.d.ts.map +0 -1
  163. package/lib/ObservedDataChannel.d.ts.map +0 -1
  164. package/lib/ObservedIceCandidate.d.ts.map +0 -1
  165. package/lib/ObservedIceCandidatePair.d.ts.map +0 -1
  166. package/lib/ObservedIceTransport.d.ts.map +0 -1
  167. package/lib/ObservedInboundRtp.d.ts.map +0 -1
  168. package/lib/ObservedInboundTrack.d.ts.map +0 -1
  169. package/lib/ObservedMediaPlayout.d.ts.map +0 -1
  170. package/lib/ObservedMediaSource.d.ts.map +0 -1
  171. package/lib/ObservedOutboundRtp.d.ts.map +0 -1
  172. package/lib/ObservedOutboundTrack.d.ts.map +0 -1
  173. package/lib/ObservedPeerConnection.d.ts.map +0 -1
  174. package/lib/ObservedPeerConnectionTransport.d.ts.map +0 -1
  175. package/lib/ObservedRemoteInboundRtp.d.ts.map +0 -1
  176. package/lib/ObservedRemoteOutboundRtp.d.ts.map +0 -1
  177. package/lib/schema/eventTypes.d.ts +0 -33
  178. package/lib/schema/eventTypes.d.ts.map +0 -1
  179. package/lib/schema/eventTypes.js +0 -38
  180. package/lib/schema/metaTypes.d.ts.map +0 -1
  181. package/lib/schema/metaTypes.js +0 -16
  182. package/lib/utils/CallUpdater.d.ts.map +0 -1
  183. package/lib/utils/OnAllClientCallUpdater.d.ts +0 -16
  184. package/lib/utils/OnAllClientCallUpdater.d.ts.map +0 -1
  185. package/lib/utils/OnAllClientCallUpdater.js +0 -58
  186. package/lib/utils/onAnyClientCallUpdater.d.ts +0 -14
  187. package/lib/utils/onAnyClientCallUpdater.d.ts.map +0 -1
  188. package/lib/utils/onAnyClientCallUpdater.js +0 -51
  189. package/src/schema/eventTypes.ts +0 -36
  190. package/src/utils/OnAllClientCallUpdater.ts +0 -68
  191. package/src/utils/onAnyClientCallUpdater.ts +0 -59
  192. /package/lib/{utils/CallUpdater.js → ObservedCallSummary.js} +0 -0
  193. /package/lib/{utils → updaters}/CallUpdater.d.ts +0 -0
  194. /package/lib/{ObservedCertificate.js → webrtc/ObservedCertificate.js} +0 -0
  195. /package/lib/{ObservedCodec.js → webrtc/ObservedCodec.js} +0 -0
  196. /package/lib/{ObservedIceCandidate.js → webrtc/ObservedIceCandidate.js} +0 -0
  197. /package/lib/{ObservedInboundRtp.js → webrtc/ObservedInboundRtp.js} +0 -0
  198. /package/lib/{ObservedMediaPlayout.js → webrtc/ObservedMediaPlayout.js} +0 -0
  199. /package/lib/{ObservedMediaSource.js → webrtc/ObservedMediaSource.js} +0 -0
  200. /package/lib/{ObservedOutboundRtp.js → webrtc/ObservedOutboundRtp.js} +0 -0
  201. /package/lib/{ObservedPeerConnectionTransport.js → webrtc/ObservedPeerConnectionTransport.js} +0 -0
  202. /package/lib/{ObservedRemoteInboundRtp.js → webrtc/ObservedRemoteInboundRtp.js} +0 -0
  203. /package/lib/{ObservedRemoteOutboundRtp.js → webrtc/ObservedRemoteOutboundRtp.js} +0 -0
  204. /package/src/{utils → updaters}/CallUpdater.ts +0 -0
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ObservedPeerConnection = void 0;
4
4
  const events_1 = require("events");
5
5
  const ObservedInboundRtp_1 = require("./ObservedInboundRtp");
6
- const logger_1 = require("./common/logger");
6
+ const logger_1 = require("../common/logger");
7
7
  const ObservedOutboundRtp_1 = require("./ObservedOutboundRtp");
8
8
  const ObservedCertificate_1 = require("./ObservedCertificate");
9
9
  const ObservedCodec_1 = require("./ObservedCodec");
@@ -18,6 +18,7 @@ const ObservedRemoteInboundRtp_1 = require("./ObservedRemoteInboundRtp");
18
18
  const ObservedRemoteOutboundRtp_1 = require("./ObservedRemoteOutboundRtp");
19
19
  const ObservedInboundTrack_1 = require("./ObservedInboundTrack");
20
20
  const ObservedOutboundTrack_1 = require("./ObservedOutboundTrack");
21
+ const utils_1 = require("../common/utils");
21
22
  const logger = (0, logger_1.createLogger)('ObservedPeerConnection');
22
23
  class ObservedPeerConnection extends events_1.EventEmitter {
23
24
  peerConnectionId;
@@ -34,11 +35,18 @@ class ObservedPeerConnection extends events_1.EventEmitter {
34
35
  // timestamp of the PEER_CONNECTION_CLOSED event
35
36
  closedAt;
36
37
  updated = Date.now();
38
+ connectionState;
39
+ iceConnectionState;
40
+ iceGatheringState;
41
+ availableIncomingBitrate = 0;
42
+ availableOutgoingBitrate = 0;
37
43
  totalInboundPacketsLost = 0;
38
44
  totalInboundPacketsReceived = 0;
39
45
  totalOutboundPacketsSent = 0;
40
46
  totalDataChannelBytesSent = 0;
41
47
  totalDataChannelBytesReceived = 0;
48
+ totalDataChannelMessagesSent = 0;
49
+ totalDataChannelMessagesReceived = 0;
42
50
  totalSentAudioBytes = 0;
43
51
  totalSentVideoBytes = 0;
44
52
  totalSentAudioPackets = 0;
@@ -52,6 +60,8 @@ class ObservedPeerConnection extends events_1.EventEmitter {
52
60
  deltaOutboundPacketsSent = 0;
53
61
  deltaDataChannelBytesSent = 0;
54
62
  deltaDataChannelBytesReceived = 0;
63
+ deltaDataChannelMessagesSent = 0;
64
+ deltaDataChannelMessagesReceived = 0;
55
65
  deltaInboundReceivedBytes = 0;
56
66
  deltaOutboundSentBytes = 0;
57
67
  deltaReceivedAudioBytes = 0;
@@ -60,16 +70,19 @@ class ObservedPeerConnection extends events_1.EventEmitter {
60
70
  deltaReceivedVideoPackets = 0;
61
71
  deltaSentAudioBytes = 0;
62
72
  deltaSentVideoBytes = 0;
73
+ deltaTransportSentBytes = 0;
74
+ deltaTransportReceivedBytes = 0;
63
75
  receivingPacketsPerSecond = 0;
64
76
  sendingPacketsPerSecond = 0;
65
77
  sendingAudioBitrate = 0;
66
78
  sendingVideoBitrate = 0;
67
79
  receivingAudioBitrate = 0;
68
80
  receivingVideoBitrate = 0;
69
- avgRttInMs;
70
- avgJitter;
81
+ currentRttInMs;
82
+ currentJitter;
71
83
  usingTCP = false;
72
84
  usingTURN = false;
85
+ observedTurnServer;
73
86
  observedCertificates = new Map();
74
87
  observedCodecs = new Map();
75
88
  observedDataChannels = new Map();
@@ -142,6 +155,11 @@ class ObservedPeerConnection extends events_1.EventEmitter {
142
155
  return this.iceTransports.map((iceTransport) => iceTransport.getSelectedCandidatePair())
143
156
  .filter((pair) => pair !== undefined);
144
157
  }
158
+ get selectedIceCandiadtePairForTurn() {
159
+ return this.selectedIceCandidatePairs
160
+ .filter((pair) => pair.getLocalCandidate()?.candidateType === 'relay' &&
161
+ pair.getRemoteCandidate()?.url?.startsWith('turn:'));
162
+ }
145
163
  close() {
146
164
  if (this.closed)
147
165
  return;
@@ -161,12 +179,17 @@ class ObservedPeerConnection extends events_1.EventEmitter {
161
179
  this.observedPeerConnectionTransports.clear();
162
180
  this.observedRemoteInboundRtps.clear();
163
181
  this.observedRemoteOutboundRtps.clear();
182
+ this.client.call.observer.observedTURN.removePeerConnection(this);
183
+ if (!this.closedAt)
184
+ this.closedAt = Date.now();
164
185
  this.emit('close');
165
186
  }
166
187
  accept(sample) {
167
188
  if (this.closed)
168
189
  return;
169
190
  this._visited = true;
191
+ this.availableIncomingBitrate = 0;
192
+ this.availableOutgoingBitrate = 0;
170
193
  this.deltaInboundPacketsLost = 0;
171
194
  this.deltaInboundPacketsReceived = 0;
172
195
  this.deltaOutboundPacketsSent = 0;
@@ -180,6 +203,8 @@ class ObservedPeerConnection extends events_1.EventEmitter {
180
203
  this.deltaReceivedVideoPackets = 0;
181
204
  this.deltaSentAudioBytes = 0;
182
205
  this.deltaSentVideoBytes = 0;
206
+ this.deltaTransportReceivedBytes = 0;
207
+ this.deltaTransportSentBytes = 0;
183
208
  this.sendingAudioBitrate = 0;
184
209
  this.sendingVideoBitrate = 0;
185
210
  this.receivingAudioBitrate = 0;
@@ -187,6 +212,8 @@ class ObservedPeerConnection extends events_1.EventEmitter {
187
212
  const now = Date.now();
188
213
  const elapsedTimeInMs = now - this.updated;
189
214
  const elapsedTimeInSec = elapsedTimeInMs / 1000;
215
+ const rttMeasurementsInSec = [];
216
+ const jitterMeasurements = [];
190
217
  if (sample.certificates) {
191
218
  for (const certificate of sample.certificates) {
192
219
  this._updateCertificateStats(certificate);
@@ -199,7 +226,13 @@ class ObservedPeerConnection extends events_1.EventEmitter {
199
226
  }
200
227
  if (sample.dataChannels) {
201
228
  for (const dataChannel of sample.dataChannels) {
202
- this._updateDataChannelStats(dataChannel);
229
+ const observedDataChannel = this._updateDataChannelStats(dataChannel);
230
+ if (!observedDataChannel)
231
+ continue;
232
+ this.deltaDataChannelBytesSent += observedDataChannel.deltaBytesSent;
233
+ this.deltaDataChannelBytesReceived += observedDataChannel.deltaBytesReceived;
234
+ this.deltaDataChannelMessagesSent += observedDataChannel.deltaMessagesSent;
235
+ this.deltaDataChannelMessagesReceived += observedDataChannel.deltaMessagesReceived;
203
236
  }
204
237
  }
205
238
  if (sample.iceCandidates) {
@@ -209,12 +242,26 @@ class ObservedPeerConnection extends events_1.EventEmitter {
209
242
  }
210
243
  if (sample.iceCandidatePairs) {
211
244
  for (const iceCandidatePair of sample.iceCandidatePairs) {
212
- this._updateIceCandidatePairStats(iceCandidatePair);
245
+ const observedCandidatePair = this._updateIceCandidatePairStats(iceCandidatePair);
246
+ if (!observedCandidatePair)
247
+ continue;
248
+ if (observedCandidatePair.currentRoundTripTime) {
249
+ rttMeasurementsInSec.push(observedCandidatePair.currentRoundTripTime);
250
+ }
251
+ if (observedCandidatePair.availableIncomingBitrate) {
252
+ this.availableIncomingBitrate += observedCandidatePair.availableIncomingBitrate;
253
+ }
254
+ if (observedCandidatePair.availableOutgoingBitrate) {
255
+ this.availableOutgoingBitrate += observedCandidatePair.availableOutgoingBitrate;
256
+ }
213
257
  }
214
258
  }
215
259
  if (sample.iceTransports) {
216
260
  for (const iceTransport of sample.iceTransports) {
217
- this._updateIceTransportStats(iceTransport);
261
+ const observedIceTransport = this._updateIceTransportStats(iceTransport);
262
+ if (!observedIceTransport)
263
+ return;
264
+ observedIceTransport.bytesReceived;
218
265
  }
219
266
  }
220
267
  if (sample.inboundRtps) {
@@ -235,6 +282,9 @@ class ObservedPeerConnection extends events_1.EventEmitter {
235
282
  this.deltaReceivedVideoPackets += observedInboundRtp.deltaReceivedPackets;
236
283
  break;
237
284
  }
285
+ if (observedInboundRtp.jitter) {
286
+ jitterMeasurements.push(observedInboundRtp.jitter);
287
+ }
238
288
  }
239
289
  }
240
290
  if (sample.mediaPlayouts) {
@@ -268,12 +318,19 @@ class ObservedPeerConnection extends events_1.EventEmitter {
268
318
  }
269
319
  if (sample.peerConnectionTransports) {
270
320
  for (const peerConnectionTransport of sample.peerConnectionTransports) {
271
- this._updatePeerConnectionTransportStats(peerConnectionTransport);
321
+ const observedTransport = this._updatePeerConnectionTransportStats(peerConnectionTransport);
322
+ if (!observedTransport)
323
+ continue;
272
324
  }
273
325
  }
274
326
  if (sample.remoteInboundRtps) {
275
327
  for (const remoteInboundRtp of sample.remoteInboundRtps) {
276
- this._updateRemoteInboundRtpStats(remoteInboundRtp);
328
+ const observedRemoteInboundRtp = this._updateRemoteInboundRtpStats(remoteInboundRtp);
329
+ if (!observedRemoteInboundRtp)
330
+ continue;
331
+ if (observedRemoteInboundRtp.roundTripTime) {
332
+ rttMeasurementsInSec.push(observedRemoteInboundRtp.roundTripTime);
333
+ }
277
334
  }
278
335
  }
279
336
  if (sample.remoteOutboundRtps) {
@@ -300,6 +357,8 @@ class ObservedPeerConnection extends events_1.EventEmitter {
300
357
  this.totalOutboundPacketsSent += this.deltaOutboundPacketsSent;
301
358
  this.totalDataChannelBytesSent += this.deltaDataChannelBytesSent;
302
359
  this.totalDataChannelBytesReceived += this.deltaDataChannelBytesReceived;
360
+ this.totalDataChannelMessagesSent += this.deltaDataChannelMessagesSent;
361
+ this.totalDataChannelMessagesReceived += this.deltaDataChannelMessagesReceived;
303
362
  this.totalReceivedAudioBytes += this.deltaReceivedAudioBytes;
304
363
  this.totalReceivedVideoBytes += this.deltaReceivedVideoBytes;
305
364
  this.totalSentAudioBytes += this.deltaSentAudioBytes;
@@ -310,17 +369,53 @@ class ObservedPeerConnection extends events_1.EventEmitter {
310
369
  this.totalSentVideoPackets += this.deltaSentVideoBytes;
311
370
  this.receivingPacketsPerSecond = this.deltaInboundPacketsReceived / elapsedTimeInSec;
312
371
  this.sendingPacketsPerSecond = this.deltaOutboundPacketsSent / elapsedTimeInSec;
313
- this.sendingAudioBitrate = this.deltaSentAudioBytes * 8 / elapsedTimeInSec;
314
- this.sendingVideoBitrate = this.deltaSentVideoBytes * 8 / elapsedTimeInSec;
315
- this.receivingAudioBitrate = this.deltaReceivedAudioBytes * 8 / elapsedTimeInSec;
316
- this.receivingVideoBitrate = this.deltaReceivedVideoBytes * 8 / elapsedTimeInSec;
372
+ this.sendingAudioBitrate = (this.deltaSentAudioBytes * 8) / elapsedTimeInSec;
373
+ this.sendingVideoBitrate = (this.deltaSentVideoBytes * 8) / elapsedTimeInSec;
374
+ this.receivingAudioBitrate = (this.deltaReceivedAudioBytes * 8) / elapsedTimeInSec;
375
+ this.receivingVideoBitrate = (this.deltaReceivedVideoBytes * 8) / elapsedTimeInSec;
376
+ if (rttMeasurementsInSec.length > 0) {
377
+ this.currentRttInMs = (0, utils_1.getMedian)(rttMeasurementsInSec, false) * 1000;
378
+ }
379
+ else {
380
+ this.currentRttInMs = undefined;
381
+ }
382
+ if (jitterMeasurements.length > 0) {
383
+ this.currentJitter = (0, utils_1.getMedian)(jitterMeasurements, false);
384
+ }
385
+ else {
386
+ this.currentJitter = undefined;
387
+ }
388
+ const wasUsingTURN = this.usingTURN;
317
389
  const selectedIceCandidatePairs = this.selectedIceCandidatePairs;
318
- this.usingTCP = selectedIceCandidatePairs.some((pair) => pair.getLocalCandidate()?.protocol === 'tcp');
319
- this.usingTURN = selectedIceCandidatePairs.some((pair) => pair.getLocalCandidate()?.candidateType === 'relay') &&
320
- selectedIceCandidatePairs.some((pair) => pair.getRemoteCandidate()?.url?.startsWith('turn:'));
390
+ const selectedCandidatePairForTurn = [];
391
+ this.usingTCP = false;
392
+ this.usingTURN = false;
393
+ for (const selectedCandidatePair of selectedIceCandidatePairs) {
394
+ if (selectedCandidatePair.getLocalCandidate()?.protocol === 'tcp') {
395
+ this.usingTCP = true;
396
+ }
397
+ if (selectedCandidatePair.getLocalCandidate()?.candidateType === 'relay' && selectedCandidatePair.getRemoteCandidate()?.url?.startsWith('turn:')) {
398
+ selectedCandidatePairForTurn.push(selectedCandidatePair);
399
+ this.usingTURN = true;
400
+ }
401
+ this.deltaTransportReceivedBytes += selectedCandidatePair.deltaBytesReceived;
402
+ this.deltaTransportSentBytes += selectedCandidatePair.deltaBytesSent;
403
+ }
404
+ if (this.usingTURN) {
405
+ if (!this.observedTurnServer) {
406
+ this.observedTurnServer = this.client.call.observer.observedTURN.addPeerConnection(this);
407
+ }
408
+ this.observedTurnServer?.updateTurnUsage(...selectedCandidatePairForTurn);
409
+ }
410
+ else if (wasUsingTURN) {
411
+ if (!this.usingTURN) {
412
+ this.client.call.observer.observedTURN.removePeerConnection(this);
413
+ }
414
+ }
321
415
  this.calculatedScore.value = sample.score;
322
416
  this.updated = now;
323
417
  this._checkVisited();
418
+ this.emit('update');
324
419
  }
325
420
  _checkVisited() {
326
421
  for (const certificate of [...this.observedCertificates.values()]) {
@@ -420,10 +515,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
420
515
  return logger.warn(`ObservedPeerConnection received an invalid CertificateStats (missing timestamp OR id OR fingerprint field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
421
516
  }
422
517
  observedCertificate = new ObservedCertificate_1.ObservedCertificate(stats.timestamp, stats.id, this);
518
+ observedCertificate.update(stats);
423
519
  this.observedCertificates.set(stats.id, observedCertificate);
424
520
  this.emit('added-certificate', observedCertificate);
425
521
  }
426
- observedCertificate.update(stats);
522
+ else {
523
+ observedCertificate.update(stats);
524
+ this.emit('updated-certificate', observedCertificate);
525
+ }
427
526
  return observedCertificate;
428
527
  }
429
528
  _updateCodecStats(stats) {
@@ -433,10 +532,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
433
532
  return logger.warn(`ObservedPeerConnection received an invalid CodecStats (missing timestamp OR id OR mimeType field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
434
533
  }
435
534
  observedCodec = new ObservedCodec_1.ObservedCodec(stats.timestamp, stats.id, stats.mimeType, this);
535
+ observedCodec.update(stats);
436
536
  this.observedCodecs.set(stats.id, observedCodec);
437
537
  this.emit('added-codec', observedCodec);
438
538
  }
439
- observedCodec.update(stats);
539
+ else {
540
+ observedCodec.update(stats);
541
+ }
542
+ this.emit('updated-codec', observedCodec);
440
543
  return observedCodec;
441
544
  }
442
545
  _updateDataChannelStats(stats) {
@@ -446,10 +549,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
446
549
  return logger.warn(`ObservedPeerConnection received an invalid DataChannelStats (missing timestamp OR id field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
447
550
  }
448
551
  observedDataChannel = new ObservedDataChannel_1.ObservedDataChannel(stats.timestamp, stats.id, this);
552
+ observedDataChannel.update(stats);
449
553
  this.observedDataChannels.set(stats.id, observedDataChannel);
450
554
  this.emit('added-data-channel', observedDataChannel);
451
555
  }
452
- observedDataChannel.update(stats);
556
+ else {
557
+ observedDataChannel.update(stats);
558
+ }
559
+ this.emit('updated-data-channel', observedDataChannel);
453
560
  return observedDataChannel;
454
561
  }
455
562
  _updateIceCandidateStats(stats) {
@@ -459,10 +566,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
459
566
  return logger.warn(`ObservedPeerConnection received an invalid IceCandidateStats (missing timestamp OR id field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
460
567
  }
461
568
  observedIceCandidate = new ObservedIceCandidate_1.ObservedIceCandidate(stats.timestamp, stats.id, this);
569
+ observedIceCandidate.update(stats);
462
570
  this.observedIceCandidates.set(stats.id, observedIceCandidate);
463
571
  this.emit('added-ice-candidate', observedIceCandidate);
464
572
  }
465
- observedIceCandidate.update(stats);
573
+ else {
574
+ observedIceCandidate.update(stats);
575
+ }
576
+ this.emit('updated-ice-candidate', observedIceCandidate);
466
577
  return observedIceCandidate;
467
578
  }
468
579
  _updateIceCandidatePairStats(stats) {
@@ -472,10 +583,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
472
583
  return logger.warn(`ObservedPeerConnection received an invalid IceCandidateStats (missing timestamp OR id field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
473
584
  }
474
585
  observedIceCandidatePair = new ObservedIceCandidatePair_1.ObservedIceCandidatePair(stats.timestamp, stats.id, this);
586
+ observedIceCandidatePair.update(stats);
475
587
  this.observedIceCandidatesPair.set(stats.id, observedIceCandidatePair);
476
588
  this.emit('added-ice-candidate-pair', observedIceCandidatePair);
477
589
  }
478
- observedIceCandidatePair.update(stats);
590
+ else {
591
+ observedIceCandidatePair.update(stats);
592
+ }
593
+ this.emit('updated-ice-candidate-pair', observedIceCandidatePair);
479
594
  return observedIceCandidatePair;
480
595
  }
481
596
  _updateIceTransportStats(stats) {
@@ -485,10 +600,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
485
600
  return logger.warn(`ObservedPeerConnection received an invalid IceCandidateStats (missing timestamp OR id field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
486
601
  }
487
602
  observedIceTransport = new ObservedIceTransport_1.ObservedIceTransport(stats.timestamp, stats.id, this);
603
+ observedIceTransport.update(stats);
488
604
  this.observedIceTransports.set(stats.id, observedIceTransport);
489
605
  this.emit('added-ice-transport', observedIceTransport);
490
606
  }
491
- observedIceTransport.update(stats);
607
+ else {
608
+ observedIceTransport.update(stats);
609
+ }
610
+ this.emit('updated-ice-transport', observedIceTransport);
492
611
  return observedIceTransport;
493
612
  }
494
613
  _updateInboundRtpStats(stats) {
@@ -498,10 +617,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
498
617
  return logger.warn(`ObservedPeerConnection received an invalid InboundRtpStats (missing timestamp OR id OR ssrc OR kind OR trackIdentifier field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
499
618
  }
500
619
  observedInboundRtp = new ObservedInboundRtp_1.ObservedInboundRtp(stats.timestamp, stats.id, stats.ssrc, stats.kind, stats.trackIdentifier, this);
620
+ observedInboundRtp.update(stats);
501
621
  this.observedInboundRtps.set(stats.ssrc, observedInboundRtp);
502
622
  this.emit('added-inbound-rtp', observedInboundRtp);
503
623
  }
504
- observedInboundRtp.update(stats);
624
+ else {
625
+ observedInboundRtp.update(stats);
626
+ }
627
+ this.emit('updated-inbound-rtp', observedInboundRtp);
505
628
  return observedInboundRtp;
506
629
  }
507
630
  _updateInboundTrackSample(stats) {
@@ -514,10 +637,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
514
637
  const mediaPlayout = inboundRtp ?
515
638
  [...this.observedMediaPlayouts.values()].find((mp) => mp.id === inboundRtp.playoutId) : undefined;
516
639
  observedInboundTrack = new ObservedInboundTrack_1.ObservedInboundTrack(stats.timestamp, stats.id, stats.kind, this, inboundRtp, mediaPlayout);
640
+ observedInboundTrack.update(stats);
517
641
  this.observedInboundTracks.set(stats.id, observedInboundTrack);
518
642
  this.emit('added-inbound-track', observedInboundTrack);
519
643
  }
520
- observedInboundTrack.update(stats);
644
+ else {
645
+ observedInboundTrack.update(stats);
646
+ }
647
+ this.emit('updated-inbound-track', observedInboundTrack);
521
648
  return observedInboundTrack;
522
649
  }
523
650
  _updateMediaPlayoutStats(stats) {
@@ -527,10 +654,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
527
654
  return logger.warn(`ObservedPeerConnection received an invalid InboundRtpStats (missing timestamp OR id OR kind OR trackIdentifier field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
528
655
  }
529
656
  observedMediaPlayout = new ObservedMediaPlayout_1.ObservedMediaPlayout(stats.timestamp, stats.id, stats.kind, this);
657
+ observedMediaPlayout.update(stats);
530
658
  this.observedMediaPlayouts.set(stats.id, observedMediaPlayout);
531
659
  this.emit('added-media-playout', observedMediaPlayout);
532
660
  }
533
- observedMediaPlayout.update(stats);
661
+ else {
662
+ observedMediaPlayout.update(stats);
663
+ }
664
+ this.emit('updated-media-playout', observedMediaPlayout);
534
665
  return observedMediaPlayout;
535
666
  }
536
667
  _updateMediaSourceStats(stats) {
@@ -540,10 +671,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
540
671
  return logger.warn(`ObservedPeerConnection received an invalid InboundRtpStats (missing timestamp OR id OR kind field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
541
672
  }
542
673
  observedMediaSource = new ObservedMediaSource_1.ObservedMediaSource(stats.timestamp, stats.id, stats.kind, this);
674
+ observedMediaSource.update(stats);
543
675
  this.observedMediaSources.set(stats.id, observedMediaSource);
544
676
  this.emit('added-media-source', observedMediaSource);
545
677
  }
546
- observedMediaSource.update(stats);
678
+ else {
679
+ observedMediaSource.update(stats);
680
+ }
681
+ this.emit('updated-media-source', observedMediaSource);
547
682
  return observedMediaSource;
548
683
  }
549
684
  _updateOutboundRtpStats(stats) {
@@ -553,10 +688,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
553
688
  return logger.warn(`ObservedPeerConnection received an invalid OutboundRtpStats (missing timestamp OR id OR ssrc OR kind field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
554
689
  }
555
690
  observedOutboundRtp = new ObservedOutboundRtp_1.ObservedOutboundRtp(stats.timestamp, stats.id, stats.ssrc, stats.kind, this);
691
+ observedOutboundRtp.update(stats);
556
692
  this.observedOutboundRtps.set(stats.ssrc, observedOutboundRtp);
557
693
  this.emit('added-outbound-rtp', observedOutboundRtp);
558
694
  }
559
- observedOutboundRtp.update(stats);
695
+ else {
696
+ observedOutboundRtp.update(stats);
697
+ }
698
+ this.emit('updated-outbound-rtp', observedOutboundRtp);
560
699
  return observedOutboundRtp;
561
700
  }
562
701
  _updateOutboundTrackSample(stats) {
@@ -569,10 +708,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
569
708
  const outboundRtps = observedMediaSource
570
709
  ? [...this.observedOutboundRtps.values()].filter((outboundRtp) => outboundRtp.mediaSourceId === observedMediaSource?.id) : undefined;
571
710
  observedOutboundTrack = new ObservedOutboundTrack_1.ObservedOutboundTrack(stats.timestamp, stats.id, stats.kind, this, outboundRtps, observedMediaSource);
711
+ observedOutboundTrack.update(stats);
572
712
  this.observedOutboundTracks.set(stats.id, observedOutboundTrack);
573
713
  this.emit('added-outbound-track', observedOutboundTrack);
574
714
  }
575
- observedOutboundTrack.update(stats);
715
+ else {
716
+ observedOutboundTrack.update(stats);
717
+ }
718
+ this.emit('updated-outbound-track', observedOutboundTrack);
576
719
  return observedOutboundTrack;
577
720
  }
578
721
  _updatePeerConnectionTransportStats(stats) {
@@ -582,10 +725,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
582
725
  return logger.warn(`ObservedPeerConnection received an invalid PeerConnectionTransportStats (missing timestamp OR id field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
583
726
  }
584
727
  observedPeerConnectionTransport = new ObservedPeerConnectionTransport_1.ObservedPeerConnectionTransport(stats.timestamp, stats.id, this);
728
+ observedPeerConnectionTransport.update(stats);
585
729
  this.observedPeerConnectionTransports.set(stats.id, observedPeerConnectionTransport);
586
730
  this.emit('added-peer-connection-transport', observedPeerConnectionTransport);
587
731
  }
588
- observedPeerConnectionTransport.update(stats);
732
+ else {
733
+ observedPeerConnectionTransport.update(stats);
734
+ }
735
+ this.emit('updated-peer-connection-transport', observedPeerConnectionTransport);
589
736
  return observedPeerConnectionTransport;
590
737
  }
591
738
  _updateRemoteInboundRtpStats(stats) {
@@ -595,10 +742,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
595
742
  return logger.warn(`ObservedPeerConnection received an invalid RemoteInboundRtpStats (missing timestamp OR id OR ssrc OR kind field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
596
743
  }
597
744
  observedRemoteInboundRtp = new ObservedRemoteInboundRtp_1.ObservedRemoteInboundRtp(stats.timestamp, stats.id, stats.ssrc, stats.kind, this);
745
+ observedRemoteInboundRtp.update(stats);
598
746
  this.observedRemoteInboundRtps.set(stats.ssrc, observedRemoteInboundRtp);
599
747
  this.emit('added-remote-inbound-rtp', observedRemoteInboundRtp);
600
748
  }
601
- observedRemoteInboundRtp.update(stats);
749
+ else {
750
+ observedRemoteInboundRtp.update(stats);
751
+ }
752
+ this.emit('updated-remote-inbound-rtp', observedRemoteInboundRtp);
602
753
  return observedRemoteInboundRtp;
603
754
  }
604
755
  _updateRemoteOutboundRtpStats(stats) {
@@ -608,10 +759,14 @@ class ObservedPeerConnection extends events_1.EventEmitter {
608
759
  return logger.warn(`ObservedPeerConnection received an invalid RemoteOutboundRtpStats (missing timestamp OR id OR ssrc OR kind field). PeerConnectionId: ${this.peerConnectionId} ClientId: ${this.client.clientId}, CallId: ${this.client.call.callId}`, stats);
609
760
  }
610
761
  observedRemoteOutboundRtp = new ObservedRemoteOutboundRtp_1.ObservedRemoteOutboundRtp(stats.timestamp, stats.id, stats.ssrc, stats.kind, this);
762
+ observedRemoteOutboundRtp.update(stats);
611
763
  this.observedRemoteOutboundRtps.set(stats.ssrc, observedRemoteOutboundRtp);
612
764
  this.emit('added-remote-outbound-rtp', observedRemoteOutboundRtp);
613
765
  }
614
- observedRemoteOutboundRtp.update(stats);
766
+ else {
767
+ observedRemoteOutboundRtp.update(stats);
768
+ }
769
+ this.emit('updated-remote-outbound-rtp', observedRemoteOutboundRtp);
615
770
  return observedRemoteOutboundRtp;
616
771
  }
617
772
  }
@@ -1,5 +1,5 @@
1
1
  import { ObservedPeerConnection } from './ObservedPeerConnection';
2
- import { PeerConnectionTransportStats } from './schema/ClientSample';
2
+ import { PeerConnectionTransportStats } from '../schema/ClientSample';
3
3
  export declare class ObservedPeerConnectionTransport implements PeerConnectionTransportStats {
4
4
  timestamp: number;
5
5
  id: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservedPeerConnectionTransport.d.ts","sourceRoot":"","sources":["../../src/webrtc/ObservedPeerConnectionTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAEtE,qBAAa,+BAAgC,YAAW,4BAA4B;IAS3E,SAAS,EAAE,MAAM;IACjB,EAAE,EAAE,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAVjC,OAAO,CAAC,QAAQ,CAAS;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;gBAG1C,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACA,eAAe,EAAE,sBAAsB;IAGzD,IAAW,OAAO,YAMjB;IAEM,iBAAiB;IAIjB,MAAM,CAAC,KAAK,EAAE,4BAA4B;CAQjD"}
@@ -1,6 +1,6 @@
1
- import { MediaKind } from './common/types';
1
+ import { MediaKind } from '../common/types';
2
2
  import { ObservedPeerConnection } from './ObservedPeerConnection';
3
- import { RemoteInboundRtpStats } from './schema/ClientSample';
3
+ import { RemoteInboundRtpStats } from '../schema/ClientSample';
4
4
  export declare class ObservedRemoteInboundRtp implements RemoteInboundRtpStats {
5
5
  timestamp: number;
6
6
  id: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservedRemoteInboundRtp.d.ts","sourceRoot":"","sources":["../../src/webrtc/ObservedRemoteInboundRtp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,qBAAa,wBAAyB,YAAW,qBAAqB;IAgB7D,SAAS,EAAE,MAAM;IACjB,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAnBjC,OAAO,CAAC,QAAQ,CAAS;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;gBAG1C,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,EACL,eAAe,EAAE,sBAAsB;IAGzD,IAAW,OAAO,YAMjB;IAEM,iBAAiB;IAIjB,cAAc;IAId,QAAQ;IAIR,MAAM,CAAC,KAAK,EAAE,qBAAqB;CAgB1C"}
@@ -1,6 +1,6 @@
1
- import { MediaKind } from './common/types';
1
+ import { MediaKind } from '../common/types';
2
2
  import { ObservedPeerConnection } from './ObservedPeerConnection';
3
- import { RemoteOutboundRtpStats } from './schema/ClientSample';
3
+ import { RemoteOutboundRtpStats } from '../schema/ClientSample';
4
4
  export declare class ObservedRemoteOutboundRtp implements RemoteOutboundRtpStats {
5
5
  timestamp: number;
6
6
  id: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservedRemoteOutboundRtp.d.ts","sourceRoot":"","sources":["../../src/webrtc/ObservedRemoteOutboundRtp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,qBAAa,yBAA0B,YAAW,sBAAsB;IAiB/D,SAAS,EAAE,MAAM;IACjB,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,eAAe;IApBjC,OAAO,CAAC,QAAQ,CAAS;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;gBAG1C,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,EACL,eAAe,EAAE,sBAAsB;IAGzD,IAAW,OAAO,YAMjB;IAEM,iBAAiB;IAIjB,aAAa;IAIb,QAAQ;IAIR,MAAM,CAAC,KAAK,EAAE,sBAAsB;CAgB3C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@observertc/observer-js",
3
- "version": "1.0.1-c3edea3.0",
3
+ "version": "1.0.1-c665f5a.0",
4
4
  "description": "Server Side NodeJS Library for processing ObserveRTC Samples",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",