@webex/plugin-meetings 2.60.1-next.9 → 2.60.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/README.md +8 -58
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -6
  54. package/dist/config.js +10 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +100 -234
  57. package/dist/constants.js +444 -433
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +5 -121
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +520 -705
  111. package/dist/meeting/index.js +3083 -5041
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -304
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -118
  122. package/dist/meeting/util.js +435 -676
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +20 -114
  142. package/dist/meetings/index.js +133 -540
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +95 -61
  193. package/dist/reachability/index.js +392 -304
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +232 -285
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +238 -100
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -50
  240. package/dist/statsAnalyzer/index.js +511 -436
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +90 -130
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -39
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -6
  253. package/src/constants.ts +100 -265
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -450
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2581 -4306
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -214
  273. package/src/meeting/util.ts +423 -687
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +136 -531
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +347 -246
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -96
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +645 -479
  310. package/src/statsAnalyzer/mqaUtil.ts +126 -128
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1437
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +2313 -8384
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +43 -523
  330. package/test/unit/spec/meeting/utils.js +24 -834
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +232 -1445
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -532
  347. package/test/unit/spec/reconnection-manager/index.js +24 -163
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +77 -187
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +165 -644
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interceptors/index.d.ts +0 -2
  395. package/dist/interceptors/index.js +0 -15
  396. package/dist/interceptors/index.js.map +0 -1
  397. package/dist/interceptors/locusRetry.d.ts +0 -27
  398. package/dist/interceptors/locusRetry.js +0 -94
  399. package/dist/interceptors/locusRetry.js.map +0 -1
  400. package/dist/interpretation/collection.d.ts +0 -5
  401. package/dist/interpretation/collection.js +0 -22
  402. package/dist/interpretation/collection.js.map +0 -1
  403. package/dist/interpretation/index.d.ts +0 -5
  404. package/dist/interpretation/index.js +0 -365
  405. package/dist/interpretation/index.js.map +0 -1
  406. package/dist/interpretation/siLanguage.d.ts +0 -5
  407. package/dist/interpretation/siLanguage.js +0 -24
  408. package/dist/interpretation/siLanguage.js.map +0 -1
  409. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  410. package/dist/meeting/locusMediaRequest.js +0 -291
  411. package/dist/meeting/locusMediaRequest.js.map +0 -1
  412. package/dist/meeting/request.type.d.ts +0 -11
  413. package/dist/meeting/request.type.js +0 -7
  414. package/dist/meeting/request.type.js.map +0 -1
  415. package/dist/meeting/voicea-meeting.d.ts +0 -20
  416. package/dist/meeting/voicea-meeting.js +0 -201
  417. package/dist/meeting/voicea-meeting.js.map +0 -1
  418. package/dist/meetings/meetings.types.d.ts +0 -4
  419. package/dist/meetings/meetings.types.js +0 -7
  420. package/dist/meetings/meetings.types.js.map +0 -1
  421. package/dist/member/types.d.ts +0 -32
  422. package/dist/member/types.js +0 -23
  423. package/dist/member/types.js.map +0 -1
  424. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  425. package/dist/multistream/mediaRequestManager.js +0 -344
  426. package/dist/multistream/mediaRequestManager.js.map +0 -1
  427. package/dist/multistream/receiveSlot.d.ts +0 -68
  428. package/dist/multistream/receiveSlot.js +0 -200
  429. package/dist/multistream/receiveSlot.js.map +0 -1
  430. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  431. package/dist/multistream/receiveSlotManager.js +0 -174
  432. package/dist/multistream/receiveSlotManager.js.map +0 -1
  433. package/dist/multistream/remoteMedia.d.ts +0 -72
  434. package/dist/multistream/remoteMedia.js +0 -268
  435. package/dist/multistream/remoteMedia.js.map +0 -1
  436. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  437. package/dist/multistream/remoteMediaGroup.js +0 -267
  438. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  439. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  440. package/dist/multistream/remoteMediaManager.js +0 -1211
  441. package/dist/multistream/remoteMediaManager.js.map +0 -1
  442. package/dist/multistream/sendSlotManager.d.ts +0 -61
  443. package/dist/multistream/sendSlotManager.js +0 -236
  444. package/dist/multistream/sendSlotManager.js.map +0 -1
  445. package/dist/reachability/clusterReachability.d.ts +0 -109
  446. package/dist/reachability/clusterReachability.js +0 -357
  447. package/dist/reachability/clusterReachability.js.map +0 -1
  448. package/dist/reachability/util.d.ts +0 -8
  449. package/dist/reachability/util.js +0 -29
  450. package/dist/reachability/util.js.map +0 -1
  451. package/dist/reactions/constants.d.ts +0 -3
  452. package/dist/reactions/constants.js +0 -12
  453. package/dist/reactions/constants.js.map +0 -1
  454. package/dist/rtcMetrics/constants.d.ts +0 -4
  455. package/dist/rtcMetrics/constants.js +0 -11
  456. package/dist/rtcMetrics/constants.js.map +0 -1
  457. package/dist/rtcMetrics/index.d.ts +0 -54
  458. package/dist/rtcMetrics/index.js +0 -140
  459. package/dist/rtcMetrics/index.js.map +0 -1
  460. package/dist/webinar/collection.d.ts +0 -16
  461. package/dist/webinar/collection.js +0 -43
  462. package/dist/webinar/collection.js.map +0 -1
  463. package/dist/webinar/index.d.ts +0 -5
  464. package/dist/webinar/index.js +0 -68
  465. package/dist/webinar/index.js.map +0 -1
  466. package/src/annotation/annotation.types.ts +0 -50
  467. package/src/annotation/constants.ts +0 -36
  468. package/src/annotation/index.ts +0 -328
  469. package/src/breakouts/README.md +0 -220
  470. package/src/breakouts/breakout.ts +0 -188
  471. package/src/breakouts/collection.ts +0 -19
  472. package/src/breakouts/edit-lock-error.ts +0 -25
  473. package/src/breakouts/events.ts +0 -56
  474. package/src/breakouts/index.ts +0 -925
  475. package/src/breakouts/request.ts +0 -55
  476. package/src/breakouts/utils.ts +0 -57
  477. package/src/common/errors/no-meeting-info.ts +0 -24
  478. package/src/controls-options-manager/types.ts +0 -59
  479. package/src/index.ts +0 -44
  480. package/src/interceptors/index.ts +0 -3
  481. package/src/interceptors/locusRetry.ts +0 -67
  482. package/src/interpretation/README.md +0 -60
  483. package/src/interpretation/collection.ts +0 -19
  484. package/src/interpretation/index.ts +0 -332
  485. package/src/interpretation/siLanguage.ts +0 -18
  486. package/src/meeting/locusMediaRequest.ts +0 -313
  487. package/src/meeting/request.type.ts +0 -13
  488. package/src/meeting/voicea-meeting.ts +0 -161
  489. package/src/meetings/meetings.types.ts +0 -12
  490. package/src/member/types.ts +0 -38
  491. package/src/multistream/mediaRequestManager.ts +0 -440
  492. package/src/multistream/receiveSlot.ts +0 -184
  493. package/src/multistream/receiveSlotManager.ts +0 -166
  494. package/src/multistream/remoteMedia.ts +0 -254
  495. package/src/multistream/remoteMediaGroup.ts +0 -284
  496. package/src/multistream/remoteMediaManager.ts +0 -1145
  497. package/src/multistream/sendSlotManager.ts +0 -170
  498. package/src/reachability/clusterReachability.ts +0 -320
  499. package/src/reachability/util.ts +0 -24
  500. package/src/reactions/constants.ts +0 -4
  501. package/src/rtcMetrics/constants.ts +0 -3
  502. package/src/rtcMetrics/index.ts +0 -124
  503. package/src/webinar/collection.ts +0 -31
  504. package/src/webinar/index.ts +0 -62
  505. package/test/integration/spec/converged-space-meetings.js +0 -233
  506. package/test/unit/spec/annotation/index.ts +0 -418
  507. package/test/unit/spec/breakouts/breakout.ts +0 -237
  508. package/test/unit/spec/breakouts/collection.ts +0 -15
  509. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  510. package/test/unit/spec/breakouts/events.ts +0 -89
  511. package/test/unit/spec/breakouts/index.ts +0 -1790
  512. package/test/unit/spec/breakouts/request.ts +0 -104
  513. package/test/unit/spec/breakouts/utils.js +0 -72
  514. package/test/unit/spec/interceptors/locusRetry.ts +0 -131
  515. package/test/unit/spec/interpretation/collection.ts +0 -15
  516. package/test/unit/spec/interpretation/index.ts +0 -589
  517. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  518. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  519. package/test/unit/spec/media/index.ts +0 -290
  520. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  521. package/test/unit/spec/meeting-info/index.js +0 -300
  522. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  523. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  524. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  525. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  526. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  527. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  528. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  529. package/test/unit/spec/reachability/clusterReachability.ts +0 -279
  530. package/test/unit/spec/reachability/request.js +0 -68
  531. package/test/unit/spec/reachability/util.ts +0 -40
  532. package/test/unit/spec/roap/request.ts +0 -255
  533. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  534. package/test/unit/spec/webinar/collection.ts +0 -13
  535. package/test/unit/spec/webinar/index.ts +0 -60
  536. package/test/utils/constants.js +0 -9
  537. package/test/utils/integrationTestUtils.js +0 -46
  538. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  539. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -1,170 +0,0 @@
1
- import {
2
- SendSlot,
3
- MediaType,
4
- LocalStream,
5
- MultistreamRoapMediaConnection,
6
- } from '@webex/internal-media-core';
7
-
8
- export default class SendSlotManager {
9
- private readonly slots: Map<MediaType, SendSlot> = new Map();
10
- private readonly LoggerProxy: any;
11
-
12
- constructor(LoggerProxy: any) {
13
- this.LoggerProxy = LoggerProxy;
14
- }
15
-
16
- /**
17
- * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
18
- * @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created
19
- * @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
20
- * @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true
21
- * @returns {SendSlot} slot The created sendSlot
22
- */
23
- public createSlot(
24
- mediaConnection: MultistreamRoapMediaConnection,
25
- mediaType: MediaType,
26
- active = true
27
- ): SendSlot {
28
- if (this.slots.has(mediaType)) {
29
- throw new Error(`Slot for ${mediaType} already exists`);
30
- }
31
-
32
- const slot: SendSlot = mediaConnection.createSendSlot(mediaType, active);
33
-
34
- this.slots.set(mediaType, slot);
35
-
36
- this.LoggerProxy.logger.info(
37
- `SendSlotsManager->createSlot#Created slot for ${mediaType} with active ${active}`
38
- );
39
-
40
- return slot;
41
- }
42
-
43
- /**
44
- * This method is used to retrieve the sendSlot for the given mediaType
45
- * @param {MediaType} mediaType of which the slot needs to be retrieved
46
- * @returns {SendSlot}
47
- */
48
- public getSlot(mediaType: MediaType): SendSlot {
49
- const slot = this.slots.get(mediaType);
50
-
51
- if (!slot) {
52
- throw new Error(`Slot for ${mediaType} does not exist`);
53
- }
54
-
55
- return slot;
56
- }
57
-
58
- /**
59
- * This method publishes the given stream to the sendSlot for the given mediaType
60
- * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
61
- * @param {LocalStream} stream LocalStream to be published
62
- * @returns {Promise<void>}
63
- */
64
- public async publishStream(mediaType: MediaType, stream: LocalStream): Promise<void> {
65
- const slot = this.slots.get(mediaType);
66
-
67
- if (!slot) {
68
- throw new Error(`Slot for ${mediaType} does not exist`);
69
- }
70
-
71
- await slot.publishStream(stream);
72
-
73
- this.LoggerProxy.logger.info(
74
- `SendSlotsManager->publishStream#Published stream for ${mediaType} and stream with label ${stream.label} and muted ${stream.muted}`
75
- );
76
- }
77
-
78
- /**
79
- * This method unpublishes the stream from the sendSlot of the given mediaType
80
- * @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
81
- * @returns {Promise<void>}
82
- */
83
- public async unpublishStream(mediaType: MediaType): Promise<void> {
84
- const slot = this.slots.get(mediaType);
85
-
86
- if (!slot) {
87
- throw new Error(`Slot for ${mediaType} does not exist`);
88
- }
89
-
90
- await slot.unpublishStream();
91
-
92
- this.LoggerProxy.logger.info(
93
- `SendSlotsManager->unpublishStream#Unpublished stream for ${mediaType}`
94
- );
95
- }
96
-
97
- /**
98
- * This method is used to set the active state of the sendSlot for the given mediaType
99
- * @param {MediaType} mediaType The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
100
- * @param {boolean} active The boolean to set the active state of the sendSlot. Default is true
101
- * @returns {void}
102
- */
103
- public setActive(mediaType: MediaType, active = true): void {
104
- const slot = this.slots.get(mediaType);
105
-
106
- if (!slot) {
107
- throw new Error(`Slot for ${mediaType} does not exist`);
108
- }
109
-
110
- slot.active = active;
111
-
112
- this.LoggerProxy.logger.info(
113
- `SendSlotsManager->setActive#Set active for ${mediaType} to ${active}`
114
- );
115
- }
116
-
117
- /**
118
- * This method is used to set the codec parameters for the sendSlot of the given mediaType
119
- * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
120
- * @param {Object} codecParameters
121
- * @returns {Promise<void>}
122
- */
123
- public async setCodecParameters(
124
- mediaType: MediaType,
125
- codecParameters: {
126
- [key: string]: string | undefined; // As per ts-sdp undefined is considered as a valid value to be used for codec parameters
127
- }
128
- ): Promise<void> {
129
- // These codec parameter changes underneath are SDP value changes that are taken care by WCME automatically. So no need for any change in streams from the web sdk side
130
- const slot = this.slots.get(mediaType);
131
-
132
- if (!slot) {
133
- throw new Error(`Slot for ${mediaType} does not exist`);
134
- }
135
-
136
- await slot.setCodecParameters(codecParameters);
137
-
138
- this.LoggerProxy.logger.info(
139
- `SendSlotsManager->setCodecParameters#Set codec parameters for ${mediaType} to ${codecParameters}`
140
- );
141
- }
142
-
143
- /**
144
- * This method is used to delete the codec parameters for the sendSlot of the given mediaType
145
- * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
146
- * @param {Array<String>} parameters Array of keys of the codec parameters to be deleted
147
- * @returns {Promise<void>}
148
- */
149
- public async deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void> {
150
- const slot = this.slots.get(mediaType);
151
-
152
- if (!slot) {
153
- throw new Error(`Slot for ${mediaType} does not exist`);
154
- }
155
-
156
- await slot.deleteCodecParameters(parameters);
157
-
158
- this.LoggerProxy.logger.info(
159
- `SendSlotsManager->deleteCodecParameters#Deleted the following codec parameters -> ${parameters} for ${mediaType}`
160
- );
161
- }
162
-
163
- /**
164
- * This method is used to reset the SendSlotsManager by deleting all the sendSlots
165
- * @returns {undefined}
166
- */
167
- public reset(): void {
168
- this.slots.clear();
169
- }
170
- }
@@ -1,320 +0,0 @@
1
- import {Defer} from '@webex/common';
2
-
3
- import LoggerProxy from '../common/logs/logger-proxy';
4
- import {ClusterNode} from './request';
5
- import {convertStunUrlToTurn} from './util';
6
-
7
- import {ICE_GATHERING_STATE, CONNECTION_STATE} from '../constants';
8
-
9
- const DEFAULT_TIMEOUT = 3000;
10
- const VIDEO_MESH_TIMEOUT = 1000;
11
-
12
- // result for a specific transport protocol (like udp or tcp)
13
- export type TransportResult = {
14
- result: 'reachable' | 'unreachable' | 'untested';
15
- latencyInMilliseconds?: number; // amount of time it took to get the first ICE candidate
16
- clientMediaIPs?: string[];
17
- };
18
-
19
- // reachability result for a specific media cluster
20
- export type ClusterReachabilityResult = {
21
- udp: TransportResult;
22
- tcp: TransportResult;
23
- xtls: TransportResult;
24
- };
25
-
26
- /**
27
- * A class that handles reachability checks for a single cluster.
28
- */
29
- export class ClusterReachability {
30
- private numUdpUrls: number;
31
- private numTcpUrls: number;
32
- private result: ClusterReachabilityResult;
33
- private pc?: RTCPeerConnection;
34
- private defer: Defer; // this defer is resolved once reachability checks for this cluster are completed
35
- private startTimestamp: number;
36
- public readonly isVideoMesh: boolean;
37
- public readonly name;
38
-
39
- /**
40
- * Constructor for ClusterReachability
41
- * @param {string} name cluster name
42
- * @param {ClusterNode} clusterInfo information about the media cluster
43
- */
44
- constructor(name: string, clusterInfo: ClusterNode) {
45
- this.name = name;
46
- this.isVideoMesh = clusterInfo.isVideoMesh;
47
- this.numUdpUrls = clusterInfo.udp.length;
48
- this.numTcpUrls = clusterInfo.tcp.length;
49
-
50
- this.pc = this.createPeerConnection(clusterInfo);
51
-
52
- this.defer = new Defer();
53
- this.result = {
54
- udp: {
55
- result: 'untested',
56
- },
57
- tcp: {
58
- result: 'untested',
59
- },
60
- xtls: {
61
- result: 'untested',
62
- },
63
- };
64
- }
65
-
66
- /**
67
- * Gets total elapsed time, can be called only after start() is called
68
- * @returns {Number} Milliseconds
69
- */
70
- private getElapsedTime() {
71
- return Math.round(performance.now() - this.startTimestamp);
72
- }
73
-
74
- /**
75
- * Generate peerConnection config settings
76
- * @param {ClusterNode} cluster
77
- * @returns {RTCConfiguration} peerConnectionConfig
78
- */
79
- private buildPeerConnectionConfig(cluster: ClusterNode): RTCConfiguration {
80
- const udpIceServers = cluster.udp.map((url) => ({
81
- username: '',
82
- credential: '',
83
- urls: [url],
84
- }));
85
-
86
- // STUN servers are contacted only using UDP, so in order to test TCP reachability
87
- // we pretend that Linus is a TURN server, because we can explicitly say "transport=tcp" in TURN urls.
88
- // We then check for relay candidates to know if TURN-TCP worked (see registerIceCandidateListener()).
89
- const tcpIceServers = cluster.tcp.map((urlString: string) => {
90
- return {
91
- username: 'webexturnreachuser',
92
- credential: 'webexturnreachpwd',
93
- urls: [convertStunUrlToTurn(urlString, 'tcp')],
94
- };
95
- });
96
-
97
- return {
98
- iceServers: [...udpIceServers, ...tcpIceServers],
99
- iceCandidatePoolSize: 0,
100
- iceTransportPolicy: 'all',
101
- };
102
- }
103
-
104
- /**
105
- * Creates an RTCPeerConnection
106
- * @param {ClusterNode} clusterInfo information about the media cluster
107
- * @returns {RTCPeerConnection} peerConnection
108
- */
109
- private createPeerConnection(clusterInfo: ClusterNode) {
110
- try {
111
- const config = this.buildPeerConnectionConfig(clusterInfo);
112
-
113
- const peerConnection = new RTCPeerConnection(config);
114
-
115
- return peerConnection;
116
- } catch (peerConnectionError) {
117
- LoggerProxy.logger.warn(
118
- `Reachability:index#createPeerConnection --> Error creating peerConnection:`,
119
- peerConnectionError
120
- );
121
-
122
- return undefined;
123
- }
124
- }
125
-
126
- /**
127
- * @returns {ClusterReachabilityResult} reachability result for this cluster
128
- */
129
- getResult() {
130
- return this.result;
131
- }
132
-
133
- /**
134
- * Closes the peerConnection
135
- *
136
- * @returns {void}
137
- */
138
- private closePeerConnection() {
139
- if (this.pc) {
140
- this.pc.onicecandidate = null;
141
- this.pc.onicegatheringstatechange = null;
142
- this.pc.close();
143
- }
144
- }
145
-
146
- /**
147
- * Resolves the defer, indicating that reachability checks for this cluster are completed
148
- *
149
- * @returns {void}
150
- */
151
- private finishReachabilityCheck() {
152
- this.defer.resolve();
153
- }
154
-
155
- /**
156
- * Adds public IP (client media IPs)
157
- * @param {string} protocol
158
- * @param {string} publicIP
159
- * @returns {void}
160
- */
161
- private addPublicIP(protocol: 'udp' | 'tcp', publicIP?: string | null) {
162
- const result = this.result[protocol];
163
-
164
- if (publicIP) {
165
- if (result.clientMediaIPs) {
166
- if (!result.clientMediaIPs.includes(publicIP)) {
167
- result.clientMediaIPs.push(publicIP);
168
- }
169
- } else {
170
- result.clientMediaIPs = [publicIP];
171
- }
172
- }
173
- }
174
-
175
- /**
176
- * Registers a listener for the iceGatheringStateChange event
177
- *
178
- * @returns {void}
179
- */
180
- private registerIceGatheringStateChangeListener() {
181
- this.pc.onicegatheringstatechange = () => {
182
- const {COMPLETE} = ICE_GATHERING_STATE;
183
-
184
- if (this.pc.iceConnectionState === COMPLETE) {
185
- this.closePeerConnection();
186
- this.finishReachabilityCheck();
187
- }
188
- };
189
- }
190
-
191
- /**
192
- * Checks if we have the results for all the protocols (UDP and TCP)
193
- *
194
- * @returns {boolean} true if we have all results, false otherwise
195
- */
196
- private haveWeGotAllResults(): boolean {
197
- return ['udp', 'tcp'].every(
198
- (protocol) =>
199
- this.result[protocol].result === 'reachable' || this.result[protocol].result === 'untested'
200
- );
201
- }
202
-
203
- /**
204
- * Stores the latency in the result for the given protocol and marks it as reachable
205
- *
206
- * @param {string} protocol
207
- * @param {number} latency
208
- * @returns {void}
209
- */
210
- private storeLatencyResult(protocol: 'udp' | 'tcp', latency: number) {
211
- const result = this.result[protocol];
212
-
213
- if (result.latencyInMilliseconds === undefined) {
214
- LoggerProxy.logger.log(
215
- // @ts-ignore
216
- `Reachability:index#storeLatencyResult --> Successfully reached ${this.name} over ${protocol}: ${latency}ms`
217
- );
218
- result.latencyInMilliseconds = latency;
219
- result.result = 'reachable';
220
- }
221
- }
222
-
223
- /**
224
- * Registers a listener for the icecandidate event
225
- *
226
- * @returns {void}
227
- */
228
- private registerIceCandidateListener() {
229
- this.pc.onicecandidate = (e) => {
230
- const CANDIDATE_TYPES = {
231
- SERVER_REFLEXIVE: 'srflx',
232
- RELAY: 'relay',
233
- };
234
-
235
- if (e.candidate) {
236
- if (e.candidate.type === CANDIDATE_TYPES.SERVER_REFLEXIVE) {
237
- this.storeLatencyResult('udp', this.getElapsedTime());
238
- this.addPublicIP('udp', e.candidate.address);
239
- }
240
-
241
- if (e.candidate.type === CANDIDATE_TYPES.RELAY) {
242
- this.storeLatencyResult('tcp', this.getElapsedTime());
243
- // we don't add public IP for TCP, because in the case of relay candidates
244
- // e.candidate.address is the TURN server address, not the client's public IP
245
- }
246
-
247
- if (this.haveWeGotAllResults()) {
248
- this.closePeerConnection();
249
- this.finishReachabilityCheck();
250
- }
251
- }
252
- };
253
- }
254
-
255
- /**
256
- * Starts the process of doing UDP and TCP reachability checks on the media cluster.
257
- * XTLS reachability checking is not supported.
258
- *
259
- * @returns {Promise}
260
- */
261
- async start(): Promise<ClusterReachabilityResult> {
262
- if (!this.pc) {
263
- LoggerProxy.logger.warn(
264
- `Reachability:ClusterReachability#start --> Error: peerConnection is undefined`
265
- );
266
-
267
- return this.result;
268
- }
269
-
270
- // Initialize this.result as saying that nothing is reachable.
271
- // It will get updated as we go along and successfully gather ICE candidates.
272
- this.result.udp = {
273
- result: this.numUdpUrls > 0 ? 'unreachable' : 'untested',
274
- };
275
- this.result.tcp = {
276
- result: this.numTcpUrls > 0 ? 'unreachable' : 'untested',
277
- };
278
-
279
- try {
280
- const offer = await this.pc.createOffer({offerToReceiveAudio: true});
281
-
282
- this.startTimestamp = performance.now();
283
-
284
- // not awaiting the next call on purpose, because we're not sending the offer anywhere and there won't be any answer
285
- // we just need to make this call to trigger the ICE gathering process
286
- this.pc.setLocalDescription(offer);
287
-
288
- await this.gatherIceCandidates();
289
- } catch (error) {
290
- LoggerProxy.logger.warn(`Reachability:ClusterReachability#start --> Error: `, error);
291
- }
292
-
293
- return this.result;
294
- }
295
-
296
- /**
297
- * Starts the process of gathering ICE candidates
298
- *
299
- * @returns {Promise} promise that's resolved once reachability checks for this cluster are completed or timeout is reached
300
- */
301
- private gatherIceCandidates() {
302
- const timeout = this.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT;
303
-
304
- this.registerIceGatheringStateChangeListener();
305
- this.registerIceCandidateListener();
306
-
307
- // Set maximum timeout
308
- setTimeout(() => {
309
- const {CLOSED} = CONNECTION_STATE;
310
-
311
- // Close any open peerConnections
312
- if (this.pc.connectionState !== CLOSED) {
313
- this.closePeerConnection();
314
- this.finishReachabilityCheck();
315
- }
316
- }, timeout);
317
-
318
- return this.defer.promise;
319
- }
320
- }
@@ -1,24 +0,0 @@
1
- /* eslint-disable import/prefer-default-export */
2
- /**
3
- * Converts a stun url to a turn url
4
- *
5
- * @param {string} stunUrl url of a stun server
6
- * @param {'tcp'|'udp'} protocol what protocol to use for the turn server
7
- * @returns {string} url of a turn server
8
- */
9
- export function convertStunUrlToTurn(stunUrl: string, protocol: 'udp' | 'tcp') {
10
- // stunUrl looks like this: "stun:external-media91.public.wjfkm-a-10.prod.infra.webex.com:5004"
11
- // and we need it to be like this: "turn:external-media91.public.wjfkm-a-10.prod.infra.webex.com:5004?transport=tcp"
12
- const url = new URL(stunUrl);
13
-
14
- if (url.protocol !== 'stun:') {
15
- throw new Error(`Not a STUN URL: ${stunUrl}`);
16
- }
17
-
18
- url.protocol = 'turn:';
19
- if (protocol === 'tcp') {
20
- url.searchParams.append('transport', 'tcp');
21
- }
22
-
23
- return url.toString();
24
- }
@@ -1,4 +0,0 @@
1
- // eslint-disable-next-line import/prefer-default-export
2
- export const REACTION_RELAY_TYPES = {
3
- REACTION: 'react',
4
- } as const;
@@ -1,3 +0,0 @@
1
- const RTC_METRICS = {APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'};
2
-
3
- export {RTC_METRICS as default};
@@ -1,124 +0,0 @@
1
- /* eslint-disable class-methods-use-this */
2
- import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
3
- import RTC_METRICS from './constants';
4
-
5
- /**
6
- * Rtc Metrics
7
- */
8
- export default class RtcMetrics {
9
- /**
10
- * Array of MetricData items to be sent to the metrics service.
11
- */
12
- metricsQueue = [];
13
-
14
- intervalId: number;
15
-
16
- webex: any;
17
-
18
- meetingId: string;
19
-
20
- correlationId: string;
21
-
22
- /**
23
- * Initialize the interval.
24
- *
25
- * @param {object} webex - The main `webex` object.
26
- * @param {string} meetingId - The meeting id.
27
- * @param {string} correlationId - The correlation id.
28
- */
29
- constructor(webex, meetingId, correlationId) {
30
- // `window` is used to prevent typescript from returning a NodeJS.Timer.
31
- this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);
32
- this.meetingId = meetingId;
33
- this.webex = webex;
34
- this.correlationId = correlationId;
35
- // Send the first set of metrics at 5 seconds in the case of a user leaving the call shortly after joining.
36
- setTimeout(this.sendMetricsInQueue.bind(this), 5 * 1000);
37
- }
38
-
39
- /**
40
- * Check to see if the metrics queue has any items.
41
- *
42
- * @returns {void}
43
- */
44
- public sendMetricsInQueue() {
45
- if (this.metricsQueue.length) {
46
- this.sendMetrics();
47
- this.metricsQueue = [];
48
- }
49
- }
50
-
51
- /**
52
- * Add metrics items to the metrics queue.
53
- *
54
- * @param {object} data - An object with a payload array of metrics items.
55
- *
56
- * @returns {void}
57
- */
58
- addMetrics(data) {
59
- if (data.payload.length) {
60
- if (data.name === 'stats-report') {
61
- data.payload = data.payload.map(this.anonymizeIp);
62
- }
63
- this.metricsQueue.push(data);
64
- }
65
- }
66
-
67
- /**
68
- * Clear the metrics interval.
69
- *
70
- * @returns {void}
71
- */
72
- closeMetrics() {
73
- this.sendMetricsInQueue();
74
- clearInterval(this.intervalId);
75
- }
76
-
77
- /**
78
- * Anonymize IP addresses.
79
- *
80
- * @param {array} stats - An RTCStatsReport organized into an array of strings.
81
- * @returns {string}
82
- */
83
- anonymizeIp(stats: string): string {
84
- const data = JSON.parse(stats);
85
- // on local and remote candidates, anonymize the last 4 bits.
86
- if (data.type === 'local-candidate' || data.type === 'remote-candidate') {
87
- data.ip = CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;
88
- data.address = CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;
89
- data.relatedAddress =
90
- CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;
91
- }
92
-
93
- return JSON.stringify(data);
94
- }
95
-
96
- /**
97
- * Send metrics to the metrics service.
98
- *
99
- * @returns {void}
100
- */
101
- private sendMetrics() {
102
- this.webex.request({
103
- method: 'POST',
104
- service: 'unifiedTelemetry',
105
- resource: 'metric/v2',
106
- headers: {
107
- type: 'webrtcMedia',
108
- appId: RTC_METRICS.APP_ID,
109
- },
110
- body: {
111
- metrics: [
112
- {
113
- type: 'webrtc',
114
- version: '1.0.1',
115
- userId: this.webex.internal.device.userId,
116
- meetingId: this.meetingId,
117
- correlationId: this.correlationId,
118
- data: this.metricsQueue,
119
- },
120
- ],
121
- },
122
- });
123
- }
124
- }
@@ -1,31 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
- */
4
-
5
- import {MEETINGS} from '../constants';
6
-
7
- class WebinarCollection {
8
- webinarInfo: any;
9
-
10
- namespace = MEETINGS;
11
-
12
- mainIndex = 'sessionId';
13
-
14
- constructor() {
15
- this.webinarInfo = {};
16
- }
17
-
18
- set(id, info) {
19
- this.webinarInfo[id] = info;
20
- }
21
-
22
- /**
23
- * @param {String} id
24
- * @returns {Member}
25
- */
26
- get(id: string) {
27
- return this.webinarInfo[id];
28
- }
29
- }
30
-
31
- export default WebinarCollection;