@observertc/observer-js 0.9.26-beta → 0.30.0-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 (298) hide show
  1. package/lib/ObservedCall.d.ts +54 -0
  2. package/lib/ObservedCall.d.ts.map +1 -0
  3. package/lib/ObservedCall.js +166 -0
  4. package/lib/ObservedClient.d.ts +73 -0
  5. package/lib/ObservedClient.d.ts.map +1 -0
  6. package/lib/ObservedClient.js +487 -0
  7. package/lib/ObservedInboundTrack.d.ts +65 -0
  8. package/lib/ObservedInboundTrack.d.ts.map +1 -0
  9. package/lib/ObservedInboundTrack.js +192 -0
  10. package/lib/ObservedOutboundTrack.d.ts +55 -0
  11. package/lib/ObservedOutboundTrack.d.ts.map +1 -0
  12. package/lib/ObservedOutboundTrack.js +166 -0
  13. package/lib/ObservedPeerConnection.d.ts +57 -0
  14. package/lib/ObservedPeerConnection.d.ts.map +1 -0
  15. package/lib/ObservedPeerConnection.js +217 -0
  16. package/lib/Observer.d.ts +26 -1465
  17. package/lib/Observer.d.ts.map +1 -1
  18. package/lib/Observer.js +53 -605
  19. package/lib/{sinks/ObserverSink.d.ts → ReportsCollector.d.ts} +7 -23
  20. package/lib/ReportsCollector.d.ts.map +1 -0
  21. package/lib/{sinks/ObserverSink.js → ReportsCollector.js} +27 -85
  22. package/lib/common/ReportsCollector.d.ts +21 -24
  23. package/lib/common/ReportsCollector.d.ts.map +1 -1
  24. package/lib/common/ReportsCollector.js +24 -0
  25. package/lib/common/SingleExecutor.d.ts +3 -0
  26. package/lib/common/SingleExecutor.d.ts.map +1 -0
  27. package/lib/common/SingleExecutor.js +31 -0
  28. package/lib/common/TypedEventEmitter.d.ts +22 -0
  29. package/lib/common/TypedEventEmitter.d.ts.map +1 -0
  30. package/lib/common/TypedEventEmitter.js +11 -0
  31. package/lib/common/callEventReports.d.ts.map +1 -0
  32. package/lib/common/logger.d.ts +3 -9
  33. package/lib/common/logger.d.ts.map +1 -1
  34. package/lib/common/logger.js +58 -141
  35. package/lib/common/types.d.ts +2 -14
  36. package/lib/common/types.d.ts.map +1 -1
  37. package/lib/common/utils.d.ts +1 -0
  38. package/lib/common/utils.d.ts.map +1 -1
  39. package/lib/common/utils.js +6 -1
  40. package/lib/index.d.ts +8 -19
  41. package/lib/index.d.ts.map +1 -1
  42. package/lib/index.js +7 -2
  43. package/package.json +1 -1
  44. package/src/ObservedCall.ts +201 -0
  45. package/src/ObservedClient.ts +681 -0
  46. package/src/ObservedInboundTrack.ts +238 -0
  47. package/src/ObservedOutboundTrack.ts +205 -0
  48. package/src/ObservedPeerConnection.ts +249 -0
  49. package/src/Observer.ts +86 -442
  50. package/src/{sinks/ObserverSink.ts → ReportsCollector.ts} +29 -94
  51. package/src/common/ReportsCollector.ts +48 -23
  52. package/src/common/SingleExecutor.ts +36 -0
  53. package/src/common/TypedEventEmitter.ts +32 -0
  54. package/src/common/logger.ts +58 -161
  55. package/src/common/types.ts +4 -24
  56. package/src/common/utils.ts +6 -0
  57. package/src/index.ts +12 -23
  58. package/lib/Evaluator.d.ts +0 -43
  59. package/lib/Evaluator.d.ts.map +0 -1
  60. package/lib/Evaluator.js +0 -171
  61. package/lib/common/Semaphore.d.ts +0 -31
  62. package/lib/common/Semaphore.d.ts.map +0 -1
  63. package/lib/common/Semaphore.js +0 -16
  64. package/lib/entries/CallEntry.d.ts +0 -619
  65. package/lib/entries/CallEntry.d.ts.map +0 -1
  66. package/lib/entries/CallEntry.js +0 -75
  67. package/lib/entries/ClientEntry.d.ts +0 -478
  68. package/lib/entries/ClientEntry.d.ts.map +0 -1
  69. package/lib/entries/ClientEntry.js +0 -114
  70. package/lib/entries/InboundTrackEntry.d.ts +0 -682
  71. package/lib/entries/InboundTrackEntry.d.ts.map +0 -1
  72. package/lib/entries/InboundTrackEntry.js +0 -76
  73. package/lib/entries/OutboundTrackEntry.d.ts +0 -682
  74. package/lib/entries/OutboundTrackEntry.d.ts.map +0 -1
  75. package/lib/entries/OutboundTrackEntry.js +0 -73
  76. package/lib/entries/PeerConnectionEntry.d.ts +0 -505
  77. package/lib/entries/PeerConnectionEntry.d.ts.map +0 -1
  78. package/lib/entries/PeerConnectionEntry.js +0 -144
  79. package/lib/entries/SfuEntry.d.ts +0 -150
  80. package/lib/entries/SfuEntry.d.ts.map +0 -1
  81. package/lib/entries/SfuEntry.js +0 -77
  82. package/lib/entries/SfuInboundRtpPadEntry.d.ts +0 -14
  83. package/lib/entries/SfuInboundRtpPadEntry.d.ts.map +0 -1
  84. package/lib/entries/SfuInboundRtpPadEntry.js +0 -49
  85. package/lib/entries/SfuOutboundRtpPadEntry.d.ts +0 -14
  86. package/lib/entries/SfuOutboundRtpPadEntry.d.ts.map +0 -1
  87. package/lib/entries/SfuOutboundRtpPadEntry.js +0 -47
  88. package/lib/entries/SfuSctpChannelEntry.d.ts +0 -12
  89. package/lib/entries/SfuSctpChannelEntry.d.ts.map +0 -1
  90. package/lib/entries/SfuSctpChannelEntry.js +0 -43
  91. package/lib/entries/SfuTransportEntry.d.ts +0 -82
  92. package/lib/entries/SfuTransportEntry.d.ts.map +0 -1
  93. package/lib/entries/SfuTransportEntry.js +0 -122
  94. package/lib/evaluators/SetClientsCoordinateEvaluator.d.ts +0 -9
  95. package/lib/evaluators/SetClientsCoordinateEvaluator.d.ts.map +0 -1
  96. package/lib/evaluators/SetClientsCoordinateEvaluator.js +0 -95
  97. package/lib/middlewares/CallOperationsContext.d.ts +0 -18
  98. package/lib/middlewares/CallOperationsContext.d.ts.map +0 -1
  99. package/lib/middlewares/CallOperationsContext.js +0 -27
  100. package/lib/middlewares/CallProcessor.d.ts +0 -6
  101. package/lib/middlewares/CallProcessor.d.ts.map +0 -1
  102. package/lib/middlewares/CallProcessor.js +0 -36
  103. package/lib/middlewares/CommitTransactionMiddleware.d.ts +0 -6
  104. package/lib/middlewares/CommitTransactionMiddleware.d.ts.map +0 -1
  105. package/lib/middlewares/CommitTransactionMiddleware.js +0 -179
  106. package/lib/middlewares/DeleteOutdatedCallEntries.d.ts +0 -6
  107. package/lib/middlewares/DeleteOutdatedCallEntries.d.ts.map +0 -1
  108. package/lib/middlewares/DeleteOutdatedCallEntries.js +0 -121
  109. package/lib/middlewares/DeleteOutdatedSfuEntries.d.ts +0 -6
  110. package/lib/middlewares/DeleteOutdatedSfuEntries.d.ts.map +0 -1
  111. package/lib/middlewares/DeleteOutdatedSfuEntries.js +0 -127
  112. package/lib/middlewares/Middleware.d.ts +0 -3
  113. package/lib/middlewares/Middleware.d.ts.map +0 -1
  114. package/lib/middlewares/Middleware.js +0 -21
  115. package/lib/middlewares/Processor.d.ts +0 -9
  116. package/lib/middlewares/Processor.d.ts.map +0 -1
  117. package/lib/middlewares/Processor.js +0 -54
  118. package/lib/middlewares/TransactionContext.d.ts +0 -35
  119. package/lib/middlewares/TransactionContext.d.ts.map +0 -1
  120. package/lib/middlewares/TransactionContext.js +0 -90
  121. package/lib/middlewares/TransactoinProcessor.d.ts +0 -6
  122. package/lib/middlewares/TransactoinProcessor.d.ts.map +0 -1
  123. package/lib/middlewares/TransactoinProcessor.js +0 -17
  124. package/lib/middlewares/VisitObservedCallsMiddleware.d.ts +0 -7
  125. package/lib/middlewares/VisitObservedCallsMiddleware.d.ts.map +0 -1
  126. package/lib/middlewares/VisitObservedCallsMiddleware.js +0 -96
  127. package/lib/middlewares/VisitObservedSfusMiddleware.d.ts +0 -6
  128. package/lib/middlewares/VisitObservedSfusMiddleware.d.ts.map +0 -1
  129. package/lib/middlewares/VisitObservedSfusMiddleware.js +0 -151
  130. package/lib/middlewares/visitors/visitClient.d.ts +0 -5
  131. package/lib/middlewares/visitors/visitClient.d.ts.map +0 -1
  132. package/lib/middlewares/visitors/visitClient.js +0 -174
  133. package/lib/middlewares/visitors/visitInboundAudioTrack.d.ts +0 -5
  134. package/lib/middlewares/visitors/visitInboundAudioTrack.d.ts.map +0 -1
  135. package/lib/middlewares/visitors/visitInboundAudioTrack.js +0 -93
  136. package/lib/middlewares/visitors/visitInboundVideoTrack.d.ts +0 -5
  137. package/lib/middlewares/visitors/visitInboundVideoTrack.d.ts.map +0 -1
  138. package/lib/middlewares/visitors/visitInboundVideoTrack.js +0 -94
  139. package/lib/middlewares/visitors/visitOutboundAudioTrack.d.ts +0 -5
  140. package/lib/middlewares/visitors/visitOutboundAudioTrack.d.ts.map +0 -1
  141. package/lib/middlewares/visitors/visitOutboundAudioTrack.js +0 -90
  142. package/lib/middlewares/visitors/visitOutboundVideoTarck.d.ts +0 -5
  143. package/lib/middlewares/visitors/visitOutboundVideoTarck.d.ts.map +0 -1
  144. package/lib/middlewares/visitors/visitOutboundVideoTarck.js +0 -90
  145. package/lib/middlewares/visitors/visitPeerConnection.d.ts +0 -5
  146. package/lib/middlewares/visitors/visitPeerConnection.d.ts.map +0 -1
  147. package/lib/middlewares/visitors/visitPeerConnection.js +0 -111
  148. package/lib/middlewares/visitors/visitSfu.d.ts +0 -5
  149. package/lib/middlewares/visitors/visitSfu.d.ts.map +0 -1
  150. package/lib/middlewares/visitors/visitSfu.js +0 -78
  151. package/lib/middlewares/visitors/visitSfuInboundRtpPad.d.ts +0 -5
  152. package/lib/middlewares/visitors/visitSfuInboundRtpPad.d.ts.map +0 -1
  153. package/lib/middlewares/visitors/visitSfuInboundRtpPad.js +0 -56
  154. package/lib/middlewares/visitors/visitSfuOutboundRtpPad.d.ts +0 -5
  155. package/lib/middlewares/visitors/visitSfuOutboundRtpPad.d.ts.map +0 -1
  156. package/lib/middlewares/visitors/visitSfuOutboundRtpPad.js +0 -56
  157. package/lib/middlewares/visitors/visitSfuSctpChannel.d.ts +0 -5
  158. package/lib/middlewares/visitors/visitSfuSctpChannel.d.ts.map +0 -1
  159. package/lib/middlewares/visitors/visitSfuSctpChannel.js +0 -55
  160. package/lib/middlewares/visitors/visitSfuTransport.d.ts +0 -5
  161. package/lib/middlewares/visitors/visitSfuTransport.d.ts.map +0 -1
  162. package/lib/middlewares/visitors/visitSfuTransport.js +0 -56
  163. package/lib/processes/closePeerConnectionProcess.d.ts +0 -10
  164. package/lib/processes/closePeerConnectionProcess.d.ts.map +0 -1
  165. package/lib/processes/closePeerConnectionProcess.js +0 -51
  166. package/lib/processes/detachClientProcess.d.ts +0 -14
  167. package/lib/processes/detachClientProcess.d.ts.map +0 -1
  168. package/lib/processes/detachClientProcess.js +0 -106
  169. package/lib/processes/findRemoteMatches.d.ts +0 -9
  170. package/lib/processes/findRemoteMatches.d.ts.map +0 -1
  171. package/lib/processes/findRemoteMatches.js +0 -96
  172. package/lib/processes/inboundTrackRemoved.d.ts +0 -9
  173. package/lib/processes/inboundTrackRemoved.d.ts.map +0 -1
  174. package/lib/processes/inboundTrackRemoved.js +0 -22
  175. package/lib/processes/joinClientProcess.d.ts +0 -11
  176. package/lib/processes/joinClientProcess.d.ts.map +0 -1
  177. package/lib/processes/joinClientProcess.js +0 -120
  178. package/lib/processes/outboundTrackRemoved.d.ts +0 -9
  179. package/lib/processes/outboundTrackRemoved.d.ts.map +0 -1
  180. package/lib/processes/outboundTrackRemoved.js +0 -22
  181. package/lib/samples/ObservedCall.d.ts +0 -17
  182. package/lib/samples/ObservedCall.d.ts.map +0 -1
  183. package/lib/samples/ObservedCall.js +0 -29
  184. package/lib/samples/ObservedCalls.d.ts +0 -19
  185. package/lib/samples/ObservedCalls.d.ts.map +0 -1
  186. package/lib/samples/ObservedCalls.js +0 -113
  187. package/lib/samples/ObservedClient.d.ts +0 -28
  188. package/lib/samples/ObservedClient.d.ts.map +0 -1
  189. package/lib/samples/ObservedClient.js +0 -110
  190. package/lib/samples/ObservedInboundAudioTrack.d.ts +0 -17
  191. package/lib/samples/ObservedInboundAudioTrack.d.ts.map +0 -1
  192. package/lib/samples/ObservedInboundAudioTrack.js +0 -17
  193. package/lib/samples/ObservedInboundVideoTrack.d.ts +0 -17
  194. package/lib/samples/ObservedInboundVideoTrack.d.ts.map +0 -1
  195. package/lib/samples/ObservedInboundVideoTrack.js +0 -17
  196. package/lib/samples/ObservedOutboundAudioTrack.d.ts +0 -16
  197. package/lib/samples/ObservedOutboundAudioTrack.d.ts.map +0 -1
  198. package/lib/samples/ObservedOutboundAudioTrack.js +0 -17
  199. package/lib/samples/ObservedOutboundVideoTrack.d.ts +0 -16
  200. package/lib/samples/ObservedOutboundVideoTrack.d.ts.map +0 -1
  201. package/lib/samples/ObservedOutboundVideoTrack.js +0 -17
  202. package/lib/samples/ObservedPeerConnection.d.ts +0 -47
  203. package/lib/samples/ObservedPeerConnection.d.ts.map +0 -1
  204. package/lib/samples/ObservedPeerConnection.js +0 -130
  205. package/lib/samples/ObservedSfu.d.ts +0 -27
  206. package/lib/samples/ObservedSfu.d.ts.map +0 -1
  207. package/lib/samples/ObservedSfu.js +0 -65
  208. package/lib/samples/ObservedSfuInboundRtpPad.d.ts +0 -15
  209. package/lib/samples/ObservedSfuInboundRtpPad.d.ts.map +0 -1
  210. package/lib/samples/ObservedSfuInboundRtpPad.js +0 -17
  211. package/lib/samples/ObservedSfuOutboundRtpPad.d.ts +0 -15
  212. package/lib/samples/ObservedSfuOutboundRtpPad.d.ts.map +0 -1
  213. package/lib/samples/ObservedSfuOutboundRtpPad.js +0 -17
  214. package/lib/samples/ObservedSfuSctpChannel.d.ts +0 -15
  215. package/lib/samples/ObservedSfuSctpChannel.d.ts.map +0 -1
  216. package/lib/samples/ObservedSfuSctpChannel.js +0 -17
  217. package/lib/samples/ObservedSfuTransport.d.ts +0 -30
  218. package/lib/samples/ObservedSfuTransport.d.ts.map +0 -1
  219. package/lib/samples/ObservedSfuTransport.js +0 -86
  220. package/lib/samples/ObservedSfus.d.ts +0 -16
  221. package/lib/samples/ObservedSfus.d.ts.map +0 -1
  222. package/lib/samples/ObservedSfus.js +0 -72
  223. package/lib/sinks/ObserverSink.d.ts.map +0 -1
  224. package/lib/sinks/callEventReports.d.ts.map +0 -1
  225. package/lib/sources/ObservedCallSource.d.ts +0 -18
  226. package/lib/sources/ObservedCallSource.d.ts.map +0 -1
  227. package/lib/sources/ObservedCallSource.js +0 -2
  228. package/lib/sources/ObservedClientSource.d.ts +0 -19
  229. package/lib/sources/ObservedClientSource.d.ts.map +0 -1
  230. package/lib/sources/ObservedClientSource.js +0 -2
  231. package/lib/sources/ObservedSfuSource.d.ts +0 -15
  232. package/lib/sources/ObservedSfuSource.d.ts.map +0 -1
  233. package/lib/sources/ObservedSfuSource.js +0 -2
  234. package/lib/sources/Sources.d.ts +0 -47
  235. package/lib/sources/Sources.d.ts.map +0 -1
  236. package/lib/sources/Sources.js +0 -211
  237. package/src/Evaluator.ts +0 -229
  238. package/src/common/Semaphore.ts +0 -45
  239. package/src/entries/CallEntry.ts +0 -62
  240. package/src/entries/ClientEntry.ts +0 -106
  241. package/src/entries/InboundTrackEntry.ts +0 -74
  242. package/src/entries/OutboundTrackEntry.ts +0 -72
  243. package/src/entries/PeerConnectionEntry.ts +0 -133
  244. package/src/entries/SfuEntry.ts +0 -62
  245. package/src/entries/SfuInboundRtpPadEntry.ts +0 -46
  246. package/src/entries/SfuOutboundRtpPadEntry.ts +0 -44
  247. package/src/entries/SfuSctpChannelEntry.ts +0 -39
  248. package/src/entries/SfuTransportEntry.ts +0 -109
  249. package/src/evaluators/SetClientsCoordinateEvaluator.ts +0 -78
  250. package/src/middlewares/CallOperationsContext.ts +0 -56
  251. package/src/middlewares/CallProcessor.ts +0 -38
  252. package/src/middlewares/CommitTransactionMiddleware.ts +0 -328
  253. package/src/middlewares/DeleteOutdatedCallEntries.ts +0 -159
  254. package/src/middlewares/DeleteOutdatedSfuEntries.ts +0 -168
  255. package/src/middlewares/Middleware.ts +0 -10
  256. package/src/middlewares/Processor.ts +0 -59
  257. package/src/middlewares/TransactionContext.ts +0 -176
  258. package/src/middlewares/TransactoinProcessor.ts +0 -28
  259. package/src/middlewares/VisitObservedCallsMiddleware.ts +0 -172
  260. package/src/middlewares/VisitObservedSfusMiddleware.ts +0 -203
  261. package/src/middlewares/visitors/visitClient.ts +0 -239
  262. package/src/middlewares/visitors/visitInboundAudioTrack.ts +0 -113
  263. package/src/middlewares/visitors/visitInboundVideoTrack.ts +0 -117
  264. package/src/middlewares/visitors/visitOutboundAudioTrack.ts +0 -100
  265. package/src/middlewares/visitors/visitOutboundVideoTarck.ts +0 -102
  266. package/src/middlewares/visitors/visitPeerConnection.ts +0 -151
  267. package/src/middlewares/visitors/visitSfu.ts +0 -70
  268. package/src/middlewares/visitors/visitSfuInboundRtpPad.ts +0 -52
  269. package/src/middlewares/visitors/visitSfuOutboundRtpPad.ts +0 -53
  270. package/src/middlewares/visitors/visitSfuSctpChannel.ts +0 -50
  271. package/src/middlewares/visitors/visitSfuTransport.ts +0 -50
  272. package/src/processes/closePeerConnectionProcess.ts +0 -54
  273. package/src/processes/detachClientProcess.ts +0 -136
  274. package/src/processes/findRemoteMatches.ts +0 -104
  275. package/src/processes/inboundTrackRemoved.ts +0 -22
  276. package/src/processes/joinClientProcess.ts +0 -138
  277. package/src/processes/outboundTrackRemoved.ts +0 -22
  278. package/src/samples/ObservedCall.ts +0 -49
  279. package/src/samples/ObservedCalls.ts +0 -143
  280. package/src/samples/ObservedClient.ts +0 -172
  281. package/src/samples/ObservedInboundAudioTrack.ts +0 -35
  282. package/src/samples/ObservedInboundVideoTrack.ts +0 -36
  283. package/src/samples/ObservedOutboundAudioTrack.ts +0 -35
  284. package/src/samples/ObservedOutboundVideoTrack.ts +0 -35
  285. package/src/samples/ObservedPeerConnection.ts +0 -227
  286. package/src/samples/ObservedSfu.ts +0 -115
  287. package/src/samples/ObservedSfuInboundRtpPad.ts +0 -35
  288. package/src/samples/ObservedSfuOutboundRtpPad.ts +0 -35
  289. package/src/samples/ObservedSfuSctpChannel.ts +0 -35
  290. package/src/samples/ObservedSfuTransport.ts +0 -142
  291. package/src/samples/ObservedSfus.ts +0 -95
  292. package/src/sources/ObservedCallSource.ts +0 -26
  293. package/src/sources/ObservedClientSource.ts +0 -28
  294. package/src/sources/ObservedSfuSource.ts +0 -19
  295. package/src/sources/Sources.ts +0 -294
  296. /package/lib/{sinks → common}/callEventReports.d.ts +0 -0
  297. /package/lib/{sinks → common}/callEventReports.js +0 -0
  298. /package/src/{sinks → common}/callEventReports.ts +0 -0
@@ -1,56 +0,0 @@
1
- import { EvaluatorContext } from '../common/types';
2
- import { Writable } from '../common/utils';
3
- import { ObservedClientSourceConfig } from '../sources/ObservedClientSource';
4
-
5
- export type CallOperationsContext = {
6
- joinedClients: ObservedClientSourceConfig[];
7
- detachedClients: (ObservedClientSourceConfig & {
8
- detached: number;
9
- })[];
10
-
11
- evaluatorContext?: Writable<EvaluatorContext>;
12
- };
13
-
14
- export type CallOperation =
15
- | (ObservedClientSourceConfig & {
16
- type: 'join';
17
- }) | (ObservedClientSourceConfig & {
18
- type: 'detach';
19
- detached: number;
20
- });
21
-
22
- export function createCallOperationContext(
23
- clientOperations: Map<string, CallOperation>,
24
- evaluatorContext?: Writable<EvaluatorContext>
25
- ): CallOperationsContext {
26
- const joinedClients: CallOperationsContext['joinedClients'] = [];
27
- const detachedClients: CallOperationsContext['detachedClients'] = [];
28
-
29
- for (const clientOperation of clientOperations.values()) {
30
- switch (clientOperation.type) {
31
- case 'join': {
32
- const joinedClient: CallOperationsContext['joinedClients'][number] = {
33
- ...clientOperation,
34
- };
35
-
36
- joinedClients.push(joinedClient);
37
- break;
38
- }
39
- case 'detach': {
40
- const detachedClient: CallOperationsContext['detachedClients'][number] = {
41
- ...clientOperation,
42
- };
43
-
44
- detachedClients.push(detachedClient);
45
- break;
46
- }
47
- }
48
- }
49
-
50
- return {
51
- joinedClients,
52
- detachedClients,
53
-
54
- evaluatorContext,
55
- };
56
- }
@@ -1,38 +0,0 @@
1
- import { ReportsCollector } from '../common/ReportsCollector';
2
- import { createDetachClientProcess, DetachClientProcessInput } from '../processes/detachClientProcess';
3
- import { createJoinClientProcess, JoinClientProcessInput } from '../processes/joinClientProcess';
4
- import { StorageProvider } from '../storages/StorageProvider';
5
- import { CallOperationsContext } from './CallOperationsContext';
6
- import { Middleware } from './Middleware';
7
- import { createProcessor, Processor } from './Processor';
8
-
9
- export function createCallProcessor(
10
- storageProvider: StorageProvider,
11
- reportsCollector: ReportsCollector
12
- ): Processor<CallOperationsContext> {
13
- const joinClientProcess = createJoinClientProcess(storageProvider, reportsCollector);
14
- const detachClientProcess = createDetachClientProcess(storageProvider, reportsCollector);
15
-
16
- const joinClientMiddleware: Middleware<CallOperationsContext> = async (context, next) => {
17
- const input: JoinClientProcessInput = {
18
- clients: context.joinedClients,
19
-
20
- evaluatorContext: context.evaluatorContext,
21
- };
22
-
23
- await Promise.all([ joinClientProcess(input), next ? next(context) : Promise.resolve() ]);
24
- };
25
-
26
- const detachClientMiddleware: Middleware<CallOperationsContext> = async (context, next) => {
27
- const input: DetachClientProcessInput = {
28
- clients: context.detachedClients,
29
-
30
- evaluatorContext: context.evaluatorContext,
31
- recursive: true,
32
- };
33
-
34
- await Promise.all([ detachClientProcess(input), next ? next(context) : Promise.resolve() ]);
35
- };
36
-
37
- return createProcessor(joinClientMiddleware, detachClientMiddleware);
38
- }
@@ -1,328 +0,0 @@
1
- import { createLogger } from '../common/logger';
2
- import { ReportsCollector } from '../common/ReportsCollector';
3
- import { ObserverStorage } from '../storages/ObserverStorage';
4
- import { StorageProvider } from '../storages/StorageProvider';
5
- import { Middleware } from './Middleware';
6
- import { TransactionContext } from './TransactionContext';
7
-
8
- const logger = createLogger('CallUpdateMiddleware');
9
-
10
- export function createCommitTransactionMiddleware(
11
- storageProvider: StorageProvider,
12
- reports: ReportsCollector,
13
- ): Middleware<TransactionContext> {
14
- const process = async (transaction: TransactionContext) => {
15
- const {
16
- clientStorage,
17
- peerConnectionStorage,
18
- inboundTrackStorage,
19
- outboundTrackStorage,
20
- sfuStorage,
21
- sfuTransportStorage,
22
- sfuInboundRtpPadStorage,
23
- sfuOutboundRtpPadStorage,
24
- sfuSctpChannelStorage,
25
- } = storageProvider;
26
-
27
- const {
28
- clients,
29
- updatedPeerConnections,
30
- deletedPeerConnections,
31
- updatedInboundAudioTracks,
32
- deletedInboundAudioTracks,
33
- updatedInboundVideoTracks,
34
- deletedInboundVideoTracks,
35
- updatedOutboundAudioTracks,
36
- deletedOutboundAudioTracks,
37
- updatedOutboundVideoTracks,
38
- deletedOutboundVideoTracks,
39
- updatedSfus,
40
- deletedSfus,
41
- updatedSfuTransports,
42
- deletedSfuTransports,
43
- updatedSfuInboundRtpPads,
44
- deletedSfuInboundRtpPads,
45
- updatedSfuOutboundRtpPads,
46
- deletedSfuOutboundRtpPads,
47
- updatedSfuSctpChannels,
48
- deletedSfuSctpChannels,
49
-
50
- evaluatorContext,
51
- } = transaction;
52
-
53
- const emptyMap = new Map();
54
-
55
- // Ensure updates are disjointed!
56
-
57
- for (const deletedPeerConnectionId of deletedPeerConnections) {
58
- if (updatedPeerConnections.has(deletedPeerConnectionId)) {
59
- logger.warn(
60
- `Updated PeerConnection held a peerConnectionId for deletedPeerConnections. Transaction ${transaction.id}`
61
- );
62
- updatedPeerConnections.delete(deletedPeerConnectionId);
63
- }
64
- }
65
-
66
- for (const deletedInboundTrackId of deletedInboundAudioTracks) {
67
- if (updatedInboundAudioTracks.has(deletedInboundTrackId)) {
68
- logger.warn(
69
- `Updated InboundAudioTrack held an inboundAudioTrackId for deletedInboundAudioTracks. Transaction ${transaction.id}`
70
- );
71
- updatedInboundAudioTracks.delete(deletedInboundTrackId);
72
- }
73
- }
74
-
75
- for (const deletedInboundTrackId of deletedInboundVideoTracks) {
76
- if (updatedInboundVideoTracks.has(deletedInboundTrackId)) {
77
- logger.warn(
78
- `Updated InboundVideoTrack held an inboundVideoTrackId for deletedInboundVideoTracks. Transaction ${transaction.id}`
79
- );
80
- updatedInboundVideoTracks.delete(deletedInboundTrackId);
81
- }
82
- }
83
-
84
- for (const deletedOutboundTrackId of deletedOutboundAudioTracks) {
85
- if (updatedOutboundAudioTracks.has(deletedOutboundTrackId)) {
86
- logger.warn(
87
- `Updated OutboundAudioTrack held an outboundAudioTrackId for deletedOutboundAudioTracks. Transaction ${transaction.id}`
88
- );
89
- updatedOutboundAudioTracks.delete(deletedOutboundTrackId);
90
- }
91
- }
92
-
93
- for (const deletedOutboundTrackId of deletedOutboundVideoTracks) {
94
- if (updatedOutboundVideoTracks.has(deletedOutboundTrackId)) {
95
- logger.warn(
96
- `Updated OutboundVideoTrack held an outboundVideoTrackId for deletedOutboundVideoTracks. Transaction ${transaction.id}`
97
- );
98
- updatedOutboundVideoTracks.delete(deletedOutboundTrackId);
99
- }
100
- }
101
-
102
- for (const deletedSfuId of deletedSfus) {
103
- if (updatedSfus.has(deletedSfuId)) {
104
- logger.warn(`Updated Sfu held an sfuId for deletedSfus. Transaction ${transaction.id}`);
105
- updatedSfus.delete(deletedSfuId);
106
- }
107
- }
108
-
109
- for (const deletedSfuTransportId of deletedSfuTransports) {
110
- if (updatedSfuTransports.has(deletedSfuTransportId)) {
111
- logger.warn(
112
- `Updated SfuTransport held an sfuTransportId for deletedSfuTransports. Transaction ${transaction.id}`
113
- );
114
- updatedSfuTransports.delete(deletedSfuTransportId);
115
- }
116
- }
117
-
118
- for (const deletedSfuInboundRtpPadId of deletedSfuInboundRtpPads) {
119
- if (updatedSfuInboundRtpPads.has(deletedSfuInboundRtpPadId)) {
120
- logger.warn(
121
- `Updated SfuInboundRtpPad held an updatedSfuInboundRtpPadId for deletedSfuInboundRtpPads. Transaction ${transaction.id}`
122
- );
123
- updatedSfuInboundRtpPads.delete(deletedSfuInboundRtpPadId);
124
- }
125
- }
126
-
127
- for (const deletedSfuOutboundRtpPadId of deletedSfuOutboundRtpPads) {
128
- if (updatedSfuOutboundRtpPads.has(deletedSfuOutboundRtpPadId)) {
129
- logger.warn(
130
- `Updated SfuOutboundRtpPad held an updatedSfuOutboundRtpPadId for deletedSfuOutboundRtpPads. Transaction ${transaction.id}`
131
- );
132
- updatedSfuOutboundRtpPads.delete(deletedSfuOutboundRtpPadId);
133
- }
134
- }
135
-
136
- for (const deletedSfuSctpChannelId of deletedSfuSctpChannels) {
137
- if (updatedSfuSctpChannels.has(deletedSfuSctpChannelId)) {
138
- logger.warn(
139
- `Updated SfuSctpChannelId held an deletedSfuSctpChannelId for deletedSfuSctpChannels. Transaction ${transaction.id}`
140
- );
141
- updatedSfuSctpChannels.delete(deletedSfuSctpChannelId);
142
- }
143
- }
144
-
145
- const promiseSetAll = <K, V>(storage: ObserverStorage<K, V>, input: ReadonlyMap<K, V>) => {
146
- if (0 < input.size) {
147
- return storage.setAll(input);
148
- } else {
149
- return Promise.resolve<ReadonlyMap<K, V>>(emptyMap);
150
- }
151
- };
152
-
153
- const promiseRemoveAll = <K, V>(storage: ObserverStorage<K, V>, input: ReadonlySet<K>) => {
154
- if (0 < input.size) {
155
- return storage.removeAll(input);
156
- } else {
157
- return Promise.resolve<ReadonlyMap<K, V>>(emptyMap);
158
- }
159
- };
160
-
161
- const [
162
- [
163
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
164
- oldClientModels,
165
- oldPeerConnectionModels,
166
- oldInboundAudioTrackModels,
167
- oldInboundVideoTrackModels,
168
- oldOutboundAudioTrackModels,
169
- oldOutboundVideoTrackModels,
170
- ],
171
- [
172
- removedPeerConnectionModels,
173
- removedInboundAudioTrackModels,
174
- removedInboundVideoTrackModels,
175
- removedOutboundAudioTrackModels,
176
- removedOutboundVideoTrackModels,
177
- ],
178
- [
179
- oldSfuModels,
180
- oldSfuTransportModels,
181
- oldSfuInboundRtpPadModels,
182
- oldSfuOutboundRtpPadModels,
183
- oldSfuSctpChannelModels,
184
- ],
185
- [
186
- removedSfuModels,
187
- removedSfuTransportModels,
188
- removedSfuInboundRtpPadModels,
189
- removedSfuOutboundRtpPadModels,
190
- removedSfuSctpChannelModels,
191
- ],
192
- ] = await Promise.all([
193
- // Call related updates
194
- Promise.all([
195
- promiseSetAll(clientStorage, clients),
196
- promiseSetAll(peerConnectionStorage, updatedPeerConnections),
197
- promiseSetAll(inboundTrackStorage, updatedInboundAudioTracks),
198
- promiseSetAll(inboundTrackStorage, updatedInboundVideoTracks),
199
- promiseSetAll(outboundTrackStorage, updatedOutboundAudioTracks),
200
- promiseSetAll(outboundTrackStorage, updatedOutboundVideoTracks),
201
- ]),
202
- Promise.all([
203
- promiseRemoveAll(peerConnectionStorage, deletedPeerConnections),
204
- promiseRemoveAll(inboundTrackStorage, deletedInboundAudioTracks),
205
- promiseRemoveAll(inboundTrackStorage, deletedInboundVideoTracks),
206
- promiseRemoveAll(outboundTrackStorage, deletedOutboundAudioTracks),
207
- promiseRemoveAll(outboundTrackStorage, deletedOutboundVideoTracks),
208
- ]),
209
-
210
- // Sfu related updates
211
- Promise.all([
212
- promiseSetAll(sfuStorage, updatedSfus),
213
- promiseSetAll(sfuTransportStorage, updatedSfuTransports),
214
- promiseSetAll(sfuInboundRtpPadStorage, updatedSfuInboundRtpPads),
215
- promiseSetAll(sfuOutboundRtpPadStorage, updatedSfuOutboundRtpPads),
216
- promiseSetAll(sfuSctpChannelStorage, updatedSfuSctpChannels),
217
- ]),
218
- Promise.all([
219
- promiseRemoveAll(sfuStorage, deletedSfus),
220
- promiseRemoveAll(sfuTransportStorage, deletedSfuTransports),
221
- promiseRemoveAll(sfuInboundRtpPadStorage, deletedSfuInboundRtpPads),
222
- promiseRemoveAll(sfuOutboundRtpPadStorage, deletedSfuOutboundRtpPads),
223
- promiseRemoveAll(sfuSctpChannelStorage, deletedSfuSctpChannels),
224
- ]),
225
- ]);
226
-
227
- const removedUnits = <K, V>(removedModels: ReadonlyMap<K, V>) => {
228
- return Array.from(removedModels.values()).map((o) => {
229
- return {
230
- ...o,
231
- removed: Date.now(),
232
- };
233
- });
234
- };
235
- const addedUnits = <K, V>(oldItems: ReadonlyMap<K, V>, updatedItems: ReadonlyMap<K, V>) => {
236
- const oldSet = new Set<K>(oldItems.keys());
237
-
238
- return Array.from(updatedItems.keys()).filter((updatedKey) => !oldSet.has(updatedKey));
239
- };
240
-
241
- evaluatorContext.openedPeerConnectionIds.push(...addedUnits(oldPeerConnectionModels, updatedPeerConnections));
242
- evaluatorContext.closedPeerConnections.push(
243
- ...Array.from(removedPeerConnectionModels.values()).map((o) => {
244
- return {
245
- ...o,
246
- closed: Date.now(),
247
- };
248
- })
249
- );
250
-
251
- evaluatorContext.removedInboundAudioTracks.push(...removedUnits(removedInboundAudioTrackModels));
252
- evaluatorContext.addedInboundAudioTrackIds.push(
253
- ...addedUnits(oldInboundAudioTrackModels, updatedInboundAudioTracks)
254
- );
255
-
256
- evaluatorContext.removedInboundVideoTracks.push(...removedUnits(removedInboundVideoTrackModels));
257
- evaluatorContext.addedInboundVideoTrackIds.push(
258
- ...addedUnits(oldInboundVideoTrackModels, updatedInboundVideoTracks)
259
- );
260
-
261
- evaluatorContext.removedOutboundAudioTracks.push(...removedUnits(removedOutboundAudioTrackModels));
262
- evaluatorContext.addedOutboundAudioTrackIds.push(
263
- ...addedUnits(oldOutboundAudioTrackModels, updatedOutboundAudioTracks)
264
- );
265
-
266
- evaluatorContext.removedOutboundVideoTracks.push(...removedUnits(removedOutboundVideoTrackModels));
267
- evaluatorContext.addedOutboundVideoTrackIds.push(
268
- ...addedUnits(oldOutboundVideoTrackModels, updatedOutboundVideoTracks)
269
- );
270
-
271
- evaluatorContext.joinedSfuIds.push(
272
- ...addedUnits(oldSfuModels, updatedSfus)
273
- );
274
- evaluatorContext.detachedSfus.push(
275
- ...Array.from(removedSfuModels.values()).map((o) => {
276
- return {
277
- ...o,
278
- detached: Date.now(),
279
- };
280
- })
281
- );
282
-
283
- evaluatorContext.openedSfuTransportIds.push(
284
- ...addedUnits(oldSfuTransportModels, updatedSfuTransports)
285
- );
286
- evaluatorContext.closedSfuTransports.push(
287
- ...Array.from(removedSfuTransportModels.values()).map((o) => {
288
- return {
289
- ...o,
290
- closed: Date.now(),
291
- };
292
- })
293
- );
294
-
295
- evaluatorContext.removedSfuInbounRtpPadIds.push(...removedUnits(removedSfuInboundRtpPadModels));
296
- evaluatorContext.addedSfuInbounRtpPadIds.push(
297
- ...addedUnits(oldSfuInboundRtpPadModels, updatedSfuInboundRtpPads)
298
- );
299
-
300
- evaluatorContext.removedSfuOutbounRtpPadIds.push(...removedUnits(removedSfuOutboundRtpPadModels));
301
- evaluatorContext.addedSfuOutbounRtpPadIds.push(
302
- ...addedUnits(oldSfuOutboundRtpPadModels, updatedSfuOutboundRtpPads)
303
- );
304
-
305
- evaluatorContext.openedSfuSctpChannelIds.push(
306
- ...addedUnits(oldSfuSctpChannelModels, updatedSfuSctpChannels)
307
- );
308
- evaluatorContext.closedSfuSctpChannels.push(
309
- ...Array.from(removedSfuSctpChannelModels.values()).map((o) => {
310
- return {
311
- ...o,
312
- closed: Date.now(),
313
- };
314
- })
315
- );
316
-
317
- evaluatorContext.callEvents = [ ...reports.getCallEventReports() ];
318
- evaluatorContext.clientExtensionStats = [ ...reports.getClientExtensionReports() ];
319
- evaluatorContext.sfuEvents = [ ...reports.getSfuEventReports() ];
320
- evaluatorContext.sfuExtensionStats = [ ...reports.getSfuExtensionReports() ];
321
- };
322
-
323
- const result = async (context: TransactionContext, next?: Middleware<TransactionContext>) => {
324
- await Promise.all([ process(context), next ? next(context) : Promise.resolve() ]);
325
- };
326
-
327
- return result;
328
- }
@@ -1,159 +0,0 @@
1
- import { Middleware } from './Middleware';
2
- import { TransactionContext } from './TransactionContext';
3
- import { createLogger } from '../common/logger';
4
- import { StorageProvider } from '..';
5
-
6
- export const logger = createLogger('DeleteOutdatedCallEntries');
7
-
8
- export function createDeleteOutdatedCallEntries(
9
- storages: StorageProvider,
10
- maxIdleTimeInMs: bigint,
11
- ): Middleware<TransactionContext> {
12
- const process = async (transaction: TransactionContext) => {
13
- const {
14
- clients,
15
-
16
- evaluatorContext,
17
-
18
- updatedPeerConnections,
19
- deletedPeerConnections,
20
-
21
- updatedInboundAudioTracks,
22
- deletedInboundAudioTracks,
23
-
24
- updatedInboundVideoTracks,
25
- deletedInboundVideoTracks,
26
-
27
- updatedOutboundAudioTracks,
28
- deletedOutboundAudioTracks,
29
-
30
- updatedOutboundVideoTracks,
31
- deletedOutboundVideoTracks,
32
- } = transaction;
33
-
34
- const now = BigInt(Date.now());
35
- const deletedCallIds = new Set(evaluatorContext.endedCalls.map((c) => c.callId).filter((id) => Boolean(id)));
36
- const deletedClientIds = new Set(evaluatorContext.detachedClients.map((c) => c.clientId).filter((id) => Boolean(id)));
37
-
38
- for (const [ peerConnectionId, peerConnection ] of storages.peerConnectionStorage.localEntries()) {
39
- if (updatedPeerConnections.has(peerConnectionId)) {
40
- continue;
41
- }
42
-
43
- const { touched, clientId, callId } = peerConnection;
44
-
45
- if (touched && now - touched < maxIdleTimeInMs) {
46
- if (
47
- !deletedCallIds.has(callId ?? 'not exists') &&
48
- !deletedClientIds.has(clientId ?? 'not exists')
49
- ) {
50
- continue;
51
- }
52
- }
53
-
54
- deletedPeerConnections.add(peerConnectionId);
55
-
56
- if (clientId) {
57
- let storedClient = clients.get(clientId);
58
-
59
- if (storedClient) {
60
- storedClient.peerConnectionIds = storedClient.peerConnectionIds.filter((pcId) => pcId !== peerConnectionId);
61
- } else {
62
- storedClient = await storages.clientStorage.get(clientId);
63
- if (storedClient) {
64
- storedClient.peerConnectionIds = storedClient.peerConnectionIds.filter((pcId) => pcId !== peerConnectionId);
65
- await storages.clientStorage.set(clientId, storedClient);
66
- }
67
- }
68
- }
69
- }
70
-
71
- for (const [ trackId, inboundTrack ] of storages.inboundTrackStorage.localEntries()) {
72
- if (updatedInboundAudioTracks.has(trackId) || updatedInboundVideoTracks.has(trackId)) {
73
- continue;
74
- }
75
-
76
- const { touched, clientId, callId, peerConnectionId } = inboundTrack;
77
-
78
- if (touched && now - touched < maxIdleTimeInMs) {
79
- if (
80
- !deletedCallIds.has(callId ?? 'not exists') &&
81
- !deletedClientIds.has(clientId ?? 'not exists') &&
82
- !deletedPeerConnections.has(peerConnectionId ?? 'not exists')
83
- ) {
84
- continue;
85
- }
86
- }
87
-
88
- switch (inboundTrack.kind) {
89
- case 'audio':
90
- deletedInboundAudioTracks.add(trackId);
91
- break;
92
- case 'video':
93
- deletedInboundVideoTracks.add(trackId);
94
- }
95
-
96
- if (peerConnectionId) {
97
- let storedPeerConnection = updatedPeerConnections.get(peerConnectionId);
98
-
99
- if (!storedPeerConnection) {
100
- storedPeerConnection = await storages.peerConnectionStorage.get(peerConnectionId);
101
- if (storedPeerConnection) {
102
- updatedPeerConnections.set(peerConnectionId, storedPeerConnection);
103
- }
104
- }
105
- if (storedPeerConnection) {
106
- storedPeerConnection.inboundTrackIds = storedPeerConnection.inboundTrackIds.filter((tId) => tId !== trackId);
107
- }
108
- }
109
- }
110
-
111
- // console.warn("auodiaussdoi", updatedOutboundAudioTracks, updatedOutboundVideoTracks);
112
- for (const [ trackId, outboundTrack ] of storages.outboundTrackStorage.localEntries()) {
113
- if (updatedOutboundAudioTracks.has(trackId) || updatedOutboundVideoTracks.has(trackId)) {
114
- continue;
115
- }
116
-
117
- const { touched, clientId, callId, peerConnectionId } = outboundTrack;
118
- // console.warn("deprecated outb tracks", outboundTrack, now, touched, maxIdleTimeInMs, touched && now - touched < maxIdleTimeInMs, callId)
119
-
120
- if (touched && now - touched < maxIdleTimeInMs) {
121
- if (
122
- !deletedCallIds.has(callId ?? 'not exists') &&
123
- !deletedClientIds.has(clientId ?? 'not exists') &&
124
- !deletedPeerConnections.has(peerConnectionId ?? 'not exists')
125
- ) {
126
- continue;
127
- }
128
- }
129
-
130
- switch (outboundTrack.kind) {
131
- case 'audio':
132
- deletedOutboundAudioTracks.add(trackId);
133
- break;
134
- case 'video':
135
- deletedOutboundVideoTracks.add(trackId);
136
- }
137
-
138
- if (peerConnectionId) {
139
- let storedPeerConnection = updatedPeerConnections.get(peerConnectionId);
140
-
141
- if (!storedPeerConnection) {
142
- storedPeerConnection = await storages.peerConnectionStorage.get(peerConnectionId);
143
- if (storedPeerConnection) {
144
- updatedPeerConnections.set(peerConnectionId, storedPeerConnection);
145
- }
146
- }
147
- if (storedPeerConnection) {
148
- storedPeerConnection.outboundTrackIds = storedPeerConnection.outboundTrackIds.filter((tId) => tId !== trackId);
149
- }
150
- }
151
- }
152
- };
153
- const result = async (context: TransactionContext, next?: Middleware<TransactionContext>) => {
154
- await process(context);
155
- if (next) await next(context);
156
- };
157
-
158
- return result;
159
- }