@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.40

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 (498) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +137 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +546 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +48 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +109 -49
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +15 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +203 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +28 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +12 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +186 -192
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +34 -91
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +66 -153
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +13 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2141 -2210
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +59 -82
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +45 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +5 -20
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +490 -560
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +24 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +116 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +78 -86
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/util.js +31 -68
  138. package/dist/member/util.js.map +1 -1
  139. package/dist/members/collection.js +3 -12
  140. package/dist/members/collection.js.map +1 -1
  141. package/dist/members/index.js +95 -200
  142. package/dist/members/index.js.map +1 -1
  143. package/dist/members/request.js +16 -39
  144. package/dist/members/request.js.map +1 -1
  145. package/dist/members/util.js +9 -38
  146. package/dist/members/util.js.map +1 -1
  147. package/dist/metrics/config.js +1 -13
  148. package/dist/metrics/config.js.map +1 -1
  149. package/dist/metrics/constants.js +1 -6
  150. package/dist/metrics/constants.js.map +1 -1
  151. package/dist/metrics/index.js +54 -156
  152. package/dist/metrics/index.js.map +1 -1
  153. package/dist/multistream/mediaRequestManager.js +74 -52
  154. package/dist/multistream/mediaRequestManager.js.map +1 -1
  155. package/dist/multistream/receiveSlot.js +48 -65
  156. package/dist/multistream/receiveSlot.js.map +1 -1
  157. package/dist/multistream/receiveSlotManager.js +60 -82
  158. package/dist/multistream/receiveSlotManager.js.map +1 -1
  159. package/dist/multistream/remoteMedia.js +60 -76
  160. package/dist/multistream/remoteMedia.js.map +1 -1
  161. package/dist/multistream/remoteMediaGroup.js +6 -40
  162. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  163. package/dist/multistream/remoteMediaManager.js +360 -413
  164. package/dist/multistream/remoteMediaManager.js.map +1 -1
  165. package/dist/networkQualityMonitor/index.js +40 -59
  166. package/dist/networkQualityMonitor/index.js.map +1 -1
  167. package/dist/personal-meeting-room/index.js +21 -45
  168. package/dist/personal-meeting-room/index.js.map +1 -1
  169. package/dist/personal-meeting-room/request.js +1 -31
  170. package/dist/personal-meeting-room/request.js.map +1 -1
  171. package/dist/personal-meeting-room/util.js +0 -13
  172. package/dist/personal-meeting-room/util.js.map +1 -1
  173. package/dist/reachability/index.js +147 -183
  174. package/dist/reachability/index.js.map +1 -1
  175. package/dist/reachability/request.js +15 -23
  176. package/dist/reachability/request.js.map +1 -1
  177. package/dist/reactions/constants.js +13 -0
  178. package/dist/reactions/constants.js.map +1 -0
  179. package/dist/reactions/reactions.js +109 -0
  180. package/dist/reactions/reactions.js.map +1 -0
  181. package/dist/reactions/reactions.type.js +36 -0
  182. package/dist/reactions/reactions.type.js.map +1 -0
  183. package/dist/reconnection-manager/index.js +322 -456
  184. package/dist/reconnection-manager/index.js.map +1 -1
  185. package/dist/recording-controller/enums.js +17 -0
  186. package/dist/recording-controller/enums.js.map +1 -0
  187. package/dist/recording-controller/index.js +343 -0
  188. package/dist/recording-controller/index.js.map +1 -0
  189. package/dist/recording-controller/util.js +63 -0
  190. package/dist/recording-controller/util.js.map +1 -0
  191. package/dist/roap/index.js +48 -70
  192. package/dist/roap/index.js.map +1 -1
  193. package/dist/roap/request.js +143 -131
  194. package/dist/roap/request.js.map +1 -1
  195. package/dist/roap/turnDiscovery.js +91 -98
  196. package/dist/roap/turnDiscovery.js.map +1 -1
  197. package/dist/statsAnalyzer/global.js +1 -95
  198. package/dist/statsAnalyzer/global.js.map +1 -1
  199. package/dist/statsAnalyzer/index.js +361 -449
  200. package/dist/statsAnalyzer/index.js.map +1 -1
  201. package/dist/statsAnalyzer/mqaUtil.js +137 -81
  202. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  203. package/dist/transcription/index.js +22 -47
  204. package/dist/transcription/index.js.map +1 -1
  205. package/dist/types/breakouts/breakout.d.ts +8 -0
  206. package/dist/types/breakouts/collection.d.ts +5 -0
  207. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  208. package/dist/types/breakouts/index.d.ts +5 -0
  209. package/dist/types/breakouts/request.d.ts +22 -0
  210. package/dist/types/breakouts/utils.d.ts +8 -0
  211. package/dist/types/common/browser-detection.d.ts +9 -0
  212. package/dist/types/common/collection.d.ts +48 -0
  213. package/dist/types/common/config.d.ts +2 -0
  214. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  215. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  216. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  217. package/dist/types/common/errors/media.d.ts +15 -0
  218. package/dist/types/common/errors/parameter.d.ts +15 -0
  219. package/dist/types/common/errors/password-error.d.ts +15 -0
  220. package/dist/types/common/errors/permission.d.ts +14 -0
  221. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  222. package/dist/types/common/errors/reconnection.d.ts +15 -0
  223. package/dist/types/common/errors/stats.d.ts +15 -0
  224. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  225. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  226. package/dist/types/common/events/events-scope.d.ts +17 -0
  227. package/dist/types/common/events/events.d.ts +12 -0
  228. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  229. package/dist/types/common/events/util.d.ts +2 -0
  230. package/dist/types/common/logs/logger-config.d.ts +2 -0
  231. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  232. package/dist/types/common/logs/request.d.ts +34 -0
  233. package/dist/types/common/queue.d.ts +32 -0
  234. package/dist/types/config.d.ts +77 -0
  235. package/dist/types/constants.d.ts +916 -0
  236. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  237. package/dist/types/controls-options-manager/enums.d.ts +5 -0
  238. package/dist/types/controls-options-manager/index.d.ts +120 -0
  239. package/dist/types/controls-options-manager/util.d.ts +7 -0
  240. package/dist/types/index.d.ts +6 -0
  241. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  242. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  243. package/dist/types/locus-info/fullState.d.ts +2 -0
  244. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  245. package/dist/types/locus-info/index.d.ts +269 -0
  246. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  247. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  248. package/dist/types/locus-info/parser.d.ts +212 -0
  249. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  250. package/dist/types/media/index.d.ts +32 -0
  251. package/dist/types/media/properties.d.ts +108 -0
  252. package/dist/types/media/util.d.ts +2 -0
  253. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  254. package/dist/types/meeting/in-meeting-actions.d.ts +83 -0
  255. package/dist/types/meeting/index.d.ts +1699 -0
  256. package/dist/types/meeting/muteState.d.ts +116 -0
  257. package/dist/types/meeting/request.d.ts +271 -0
  258. package/dist/types/meeting/request.type.d.ts +11 -0
  259. package/dist/types/meeting/state.d.ts +9 -0
  260. package/dist/types/meeting/util.d.ts +2 -0
  261. package/dist/types/meeting-info/collection.d.ts +20 -0
  262. package/dist/types/meeting-info/index.d.ts +57 -0
  263. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  264. package/dist/types/meeting-info/request.d.ts +22 -0
  265. package/dist/types/meeting-info/util.d.ts +2 -0
  266. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  267. package/dist/types/meetings/collection.d.ts +23 -0
  268. package/dist/types/meetings/index.d.ts +297 -0
  269. package/dist/types/meetings/request.d.ts +27 -0
  270. package/dist/types/meetings/util.d.ts +18 -0
  271. package/dist/types/member/index.d.ts +146 -0
  272. package/dist/types/member/util.d.ts +2 -0
  273. package/dist/types/members/collection.d.ts +24 -0
  274. package/dist/types/members/index.d.ts +320 -0
  275. package/dist/types/members/request.d.ts +50 -0
  276. package/dist/types/members/util.d.ts +2 -0
  277. package/dist/types/metrics/config.d.ts +169 -0
  278. package/dist/types/metrics/constants.d.ts +53 -0
  279. package/dist/types/metrics/index.d.ts +152 -0
  280. package/dist/types/multistream/mediaRequestManager.d.ts +51 -0
  281. package/dist/types/multistream/receiveSlot.d.ts +64 -0
  282. package/dist/types/multistream/receiveSlotManager.d.ts +46 -0
  283. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  284. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  285. package/dist/types/multistream/remoteMediaManager.d.ts +241 -0
  286. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  287. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  288. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  289. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  290. package/dist/types/reachability/index.d.ts +140 -0
  291. package/dist/types/reachability/request.d.ts +37 -0
  292. package/dist/types/reactions/constants.d.ts +3 -0
  293. package/dist/types/reactions/reactions.d.ts +4 -0
  294. package/dist/types/reactions/reactions.type.d.ts +52 -0
  295. package/dist/types/reconnection-manager/index.d.ts +117 -0
  296. package/dist/types/recording-controller/enums.d.ts +7 -0
  297. package/dist/types/recording-controller/index.d.ts +193 -0
  298. package/dist/types/recording-controller/util.d.ts +13 -0
  299. package/dist/types/roap/index.d.ts +77 -0
  300. package/dist/types/roap/request.d.ts +38 -0
  301. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  302. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  303. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  304. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  305. package/dist/types/transcription/index.d.ts +64 -0
  306. package/internal-README.md +7 -6
  307. package/package.json +27 -21
  308. package/src/breakouts/README.md +199 -0
  309. package/src/breakouts/breakout.ts +130 -0
  310. package/src/breakouts/collection.ts +19 -0
  311. package/src/breakouts/edit-lock-error.ts +25 -0
  312. package/src/breakouts/index.ts +504 -0
  313. package/src/breakouts/request.ts +55 -0
  314. package/src/breakouts/utils.ts +39 -0
  315. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  316. package/src/common/collection.ts +9 -7
  317. package/src/common/{config.js → config.ts} +1 -1
  318. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  319. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  320. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  321. package/src/common/errors/{media.js → media.ts} +11 -7
  322. package/src/common/errors/parameter.ts +11 -7
  323. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  324. package/src/common/errors/{permission.js → permission.ts} +10 -6
  325. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  326. package/src/common/errors/{stats.js → stats.ts} +11 -7
  327. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  328. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  329. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  330. package/src/common/events/{events.js → events.ts} +5 -1
  331. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  332. package/src/common/events/{util.js → util.ts} +2 -3
  333. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  334. package/src/common/logs/logger-proxy.ts +44 -0
  335. package/src/common/logs/{request.js → request.ts} +22 -9
  336. package/src/common/queue.ts +1 -2
  337. package/src/{config.js → config.ts} +17 -12
  338. package/src/constants.ts +62 -5
  339. package/src/controls-options-manager/constants.ts +5 -0
  340. package/src/controls-options-manager/enums.ts +6 -0
  341. package/src/controls-options-manager/index.ts +183 -0
  342. package/src/controls-options-manager/util.ts +20 -0
  343. package/src/index.js +4 -1
  344. package/src/locus-info/controlsUtils.ts +114 -0
  345. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  346. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  347. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  348. package/src/locus-info/{index.js → index.ts} +150 -66
  349. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  350. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  351. package/src/locus-info/{parser.js → parser.ts} +67 -79
  352. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  353. package/src/media/{index.js → index.ts} +182 -173
  354. package/src/media/{properties.js → properties.ts} +60 -37
  355. package/src/media/{util.js → util.ts} +2 -2
  356. package/src/mediaQualityMetrics/config.ts +384 -0
  357. package/src/meeting/in-meeting-actions.ts +31 -3
  358. package/src/meeting/{index.js → index.ts} +2512 -1579
  359. package/src/meeting/{muteState.js → muteState.ts} +95 -49
  360. package/src/meeting/{request.js → request.ts} +326 -142
  361. package/src/meeting/request.type.ts +13 -0
  362. package/src/meeting/{state.js → state.ts} +50 -35
  363. package/src/meeting/{util.js → util.ts} +117 -119
  364. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  365. package/src/meeting-info/{index.js → index.ts} +42 -36
  366. package/src/meeting-info/meeting-info-v2.ts +273 -0
  367. package/src/meeting-info/{request.js → request.ts} +14 -4
  368. package/src/meeting-info/{util.js → util.ts} +60 -51
  369. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  370. package/src/meetings/{collection.js → collection.ts} +6 -3
  371. package/src/meetings/index.ts +1159 -0
  372. package/src/meetings/{request.js → request.ts} +32 -25
  373. package/src/meetings/{util.js → util.ts} +58 -32
  374. package/src/member/{index.js → index.ts} +102 -56
  375. package/src/member/{util.js → util.ts} +52 -25
  376. package/src/members/{collection.js → collection.ts} +2 -2
  377. package/src/members/{index.js → index.ts} +221 -142
  378. package/src/members/{request.js → request.ts} +60 -16
  379. package/src/members/{util.js → util.ts} +50 -48
  380. package/src/metrics/{config.js → config.ts} +253 -92
  381. package/src/metrics/{constants.js → constants.ts} +0 -6
  382. package/src/metrics/{index.js → index.ts} +105 -94
  383. package/src/multistream/mediaRequestManager.ts +101 -39
  384. package/src/multistream/receiveSlot.ts +62 -26
  385. package/src/multistream/receiveSlotManager.ts +35 -21
  386. package/src/multistream/remoteMedia.ts +38 -5
  387. package/src/multistream/remoteMediaGroup.ts +4 -3
  388. package/src/multistream/remoteMediaManager.ts +152 -36
  389. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  390. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  391. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  392. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  393. package/src/reachability/{index.js → index.ts} +109 -85
  394. package/src/reachability/request.ts +46 -35
  395. package/src/reactions/constants.ts +4 -0
  396. package/src/reactions/reactions.ts +104 -0
  397. package/src/reactions/reactions.type.ts +62 -0
  398. package/src/reconnection-manager/{index.js → index.ts} +196 -103
  399. package/src/recording-controller/enums.ts +8 -0
  400. package/src/recording-controller/index.ts +315 -0
  401. package/src/recording-controller/util.ts +58 -0
  402. package/src/roap/{index.js → index.ts} +77 -60
  403. package/src/roap/request.ts +172 -0
  404. package/src/roap/turnDiscovery.ts +81 -41
  405. package/src/statsAnalyzer/global.ts +37 -0
  406. package/src/statsAnalyzer/index.ts +1234 -0
  407. package/src/statsAnalyzer/mqaUtil.ts +293 -0
  408. package/src/transcription/{index.js → index.ts} +46 -39
  409. package/test/integration/spec/converged-space-meetings.js +176 -0
  410. package/test/integration/spec/journey.js +665 -464
  411. package/test/integration/spec/space-meeting.js +320 -206
  412. package/test/integration/spec/transcription.js +7 -8
  413. package/test/unit/spec/breakouts/breakout.ts +147 -0
  414. package/test/unit/spec/breakouts/collection.ts +15 -0
  415. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  416. package/test/unit/spec/breakouts/index.ts +707 -0
  417. package/test/unit/spec/breakouts/request.ts +104 -0
  418. package/test/unit/spec/breakouts/utils.js +47 -0
  419. package/test/unit/spec/common/browser-detection.js +9 -28
  420. package/test/unit/spec/controls-options-manager/index.js +124 -0
  421. package/test/unit/spec/controls-options-manager/util.js +66 -0
  422. package/test/unit/spec/fixture/locus.js +92 -90
  423. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  424. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  425. package/test/unit/spec/locus-info/index.js +104 -2
  426. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  427. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  428. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  429. package/test/unit/spec/locus-info/parser.js +3 -9
  430. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  431. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  432. package/test/unit/spec/media/index.ts +39 -53
  433. package/test/unit/spec/media/properties.ts +9 -9
  434. package/test/unit/spec/meeting/in-meeting-actions.ts +13 -2
  435. package/test/unit/spec/meeting/index.js +2253 -811
  436. package/test/unit/spec/meeting/muteState.js +74 -55
  437. package/test/unit/spec/meeting/request.js +141 -43
  438. package/test/unit/spec/meeting/utils.js +106 -171
  439. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  440. package/test/unit/spec/meeting-info/request.js +7 -9
  441. package/test/unit/spec/meeting-info/util.js +11 -12
  442. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  443. package/test/unit/spec/meetings/collection.js +1 -1
  444. package/test/unit/spec/meetings/index.js +439 -257
  445. package/test/unit/spec/meetings/utils.js +14 -12
  446. package/test/unit/spec/member/index.js +0 -1
  447. package/test/unit/spec/member/util.js +31 -7
  448. package/test/unit/spec/members/index.js +104 -54
  449. package/test/unit/spec/members/request.js +29 -20
  450. package/test/unit/spec/members/utils.js +8 -5
  451. package/test/unit/spec/metrics/index.js +16 -21
  452. package/test/unit/spec/multistream/mediaRequestManager.ts +318 -64
  453. package/test/unit/spec/multistream/receiveSlot.ts +68 -17
  454. package/test/unit/spec/multistream/receiveSlotManager.ts +41 -13
  455. package/test/unit/spec/multistream/remoteMedia.ts +38 -2
  456. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  457. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  458. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  459. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  460. package/test/unit/spec/reachability/index.ts +70 -27
  461. package/test/unit/spec/reachability/request.js +66 -0
  462. package/test/unit/spec/reconnection-manager/index.js +58 -30
  463. package/test/unit/spec/recording-controller/index.js +231 -0
  464. package/test/unit/spec/recording-controller/util.js +102 -0
  465. package/test/unit/spec/roap/index.ts +12 -8
  466. package/test/unit/spec/roap/request.ts +217 -0
  467. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  468. package/test/unit/spec/stats-analyzer/index.js +86 -57
  469. package/test/utils/cmr.js +44 -42
  470. package/test/utils/constants.js +9 -0
  471. package/test/utils/testUtils.js +98 -77
  472. package/test/utils/webex-config.js +22 -18
  473. package/test/utils/webex-test-users.js +57 -50
  474. package/tsconfig.json +6 -0
  475. package/dist/media/internal-media-core-wrapper.js +0 -22
  476. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  477. package/dist/meeting/effectsState.js +0 -327
  478. package/dist/meeting/effectsState.js.map +0 -1
  479. package/dist/multistream/multistreamMedia.js +0 -116
  480. package/dist/multistream/multistreamMedia.js.map +0 -1
  481. package/dist/peer-connection-manager/util.js +0 -124
  482. package/dist/peer-connection-manager/util.js.map +0 -1
  483. package/src/common/logs/logger-proxy.js +0 -33
  484. package/src/locus-info/controlsUtils.js +0 -102
  485. package/src/media/internal-media-core-wrapper.ts +0 -9
  486. package/src/mediaQualityMetrics/config.js +0 -382
  487. package/src/meeting/effectsState.js +0 -205
  488. package/src/meeting-info/meeting-info-v2.js +0 -255
  489. package/src/meetings/index.js +0 -1015
  490. package/src/multistream/multistreamMedia.ts +0 -92
  491. package/src/peer-connection-manager/util.ts +0 -117
  492. package/src/roap/request.js +0 -127
  493. package/src/statsAnalyzer/global.js +0 -133
  494. package/src/statsAnalyzer/index.js +0 -1006
  495. package/src/statsAnalyzer/mqaUtil.js +0 -173
  496. package/test/unit/spec/meeting/effectsState.js +0 -291
  497. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  498. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -7,11 +7,7 @@
7
7
  import _ from 'lodash';
8
8
 
9
9
  import LoggerProxy from '../common/logs/logger-proxy';
10
- import {
11
- ICE_GATHERING_STATE,
12
- CONNECTION_STATE,
13
- REACHABILITY
14
- } from '../constants';
10
+ import {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';
15
11
 
16
12
  import ReachabilityRequest from './request';
17
13
 
@@ -23,12 +19,17 @@ const VIDEO_MESH_TIMEOUT = 1000;
23
19
  * @export
24
20
  */
25
21
  export default class Reachability {
22
+ namespace = REACHABILITY.namespace;
23
+ webex: object;
24
+ reachabilityRequest: any;
25
+ clusterLatencyResults: any;
26
+
26
27
  /**
27
28
  * Creates an instance of Reachability.
28
29
  * @param {object} webex
29
30
  * @memberof Reachability
30
31
  */
31
- constructor(webex) {
32
+ constructor(webex: object) {
32
33
  this.webex = webex;
33
34
 
34
35
  /**
@@ -50,7 +51,6 @@ export default class Reachability {
50
51
  this.clusterLatencyResults = {};
51
52
  }
52
53
 
53
-
54
54
  /**
55
55
  * fetches reachability data
56
56
  * @returns {Object} reachability data
@@ -58,34 +58,44 @@ export default class Reachability {
58
58
  * @async
59
59
  * @memberof Reachability
60
60
  */
61
- async gatherReachability() {
61
+ public async gatherReachability() {
62
62
  this.setup();
63
63
 
64
64
  // Remove stored reachability results to ensure no stale data
65
- if (window?.localStorage?.removeItem) {
66
- window.localStorage.removeItem(REACHABILITY.localStorage);
67
- }
68
- else {
69
- LoggerProxy.logger.error('Reachability:index#gatherReachability --> Error in accessing LocalStorage.');
70
-
71
- return {};
72
- }
65
+ // @ts-ignore
66
+ await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageResult);
67
+ // @ts-ignore
68
+ await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageJoinCookie);
73
69
 
74
70
  // Fetch clusters and measure latency
75
71
  try {
76
- const clusters = await this.reachabilityRequest.getClusters();
72
+ const {clusters, joinCookie} = await this.reachabilityRequest.getClusters();
77
73
 
78
74
  // Perform Reachability Check
79
75
  const results = await this.performReachabilityCheck(clusters);
80
76
 
81
- window.localStorage.setItem(REACHABILITY.localStorage, JSON.stringify(results));
82
-
83
- LoggerProxy.logger.log('Reachability:index#gatherReachability --> Reachability checks completed');
77
+ // @ts-ignore
78
+ await this.webex.boundedStorage.put(
79
+ this.namespace,
80
+ REACHABILITY.localStorageResult,
81
+ JSON.stringify(results)
82
+ );
83
+ // @ts-ignore
84
+ await this.webex.boundedStorage.put(
85
+ this.namespace,
86
+ REACHABILITY.localStorageJoinCookie,
87
+ JSON.stringify(joinCookie)
88
+ );
89
+
90
+ LoggerProxy.logger.log(
91
+ 'Reachability:index#gatherReachability --> Reachability checks completed'
92
+ );
84
93
 
85
94
  return results;
86
- }
87
- catch (getClusterError) {
88
- LoggerProxy.logger.error(`Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`);
95
+ } catch (getClusterError) {
96
+ LoggerProxy.logger.error(
97
+ `Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`
98
+ );
89
99
 
90
100
  return {};
91
101
  }
@@ -97,25 +107,30 @@ export default class Reachability {
97
107
  * @public
98
108
  * @memberof Reachability
99
109
  */
100
- isAnyClusterReachable() {
110
+ async isAnyClusterReachable() {
101
111
  let reachable = false;
102
- const reachabilityData = window.localStorage.getItem(REACHABILITY.localStorage);
112
+ // @ts-ignore
113
+ const reachabilityData = await this.webex.boundedStorage
114
+ .get(this.namespace, REACHABILITY.localStorageResult)
115
+ .catch(() => {});
103
116
 
104
117
  if (reachabilityData) {
105
118
  try {
106
119
  const reachabilityResults = JSON.parse(reachabilityData);
107
120
 
108
- reachable = Object.values(reachabilityResults).some((result) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true');
109
- }
110
- catch (e) {
111
- LoggerProxy.logger.error(`Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`);
121
+ reachable = Object.values(reachabilityResults).some(
122
+ (result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true'
123
+ );
124
+ } catch (e) {
125
+ LoggerProxy.logger.error(
126
+ `Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`
127
+ );
112
128
  }
113
129
  }
114
130
 
115
131
  return reachable;
116
132
  }
117
133
 
118
-
119
134
  /**
120
135
  * Generate peerConnection config settings
121
136
  * @param {object} cluster
@@ -123,26 +138,20 @@ export default class Reachability {
123
138
  * @private
124
139
  * @memberof Reachability
125
140
  */
126
- buildPeerConnectionConfig(cluster) {
127
- const iceServers = _.uniq([
128
- ...cluster.udp,
129
- ...cluster.tcp
130
- ]).map((url) => ({
141
+ private buildPeerConnectionConfig(cluster: any) {
142
+ const iceServers = _.uniq([...cluster.udp, ...cluster.tcp]).map((url) => ({
131
143
  username: '',
132
144
  credential: '',
133
- urls: [url]
145
+ urls: [url],
134
146
  }));
135
147
 
136
148
  return {
137
- iceServers: [
138
- ...iceServers
139
- ],
149
+ iceServers: [...iceServers],
140
150
  iceCandidatePoolSize: '0',
141
- iceTransportPolicy: 'all'
151
+ iceTransportPolicy: 'all',
142
152
  };
143
153
  }
144
154
 
145
-
146
155
  /**
147
156
  * Creates an RTCPeerConnection
148
157
  * @param {object} cluster
@@ -150,24 +159,25 @@ export default class Reachability {
150
159
  * @private
151
160
  * @memberof Reachability
152
161
  */
153
- createPeerConnection(cluster) {
162
+ private createPeerConnection(cluster: any) {
154
163
  const {key, config} = cluster;
155
164
 
156
165
  try {
157
166
  const peerConnection = new window.RTCPeerConnection(config);
158
167
 
168
+ // @ts-ignore
159
169
  peerConnection.key = key;
160
170
 
161
171
  return peerConnection;
162
- }
163
- catch (peerConnectionError) {
164
- LoggerProxy.logger.log(`Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`);
172
+ } catch (peerConnectionError) {
173
+ LoggerProxy.logger.log(
174
+ `Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`
175
+ );
165
176
 
166
177
  return null;
167
178
  }
168
179
  }
169
180
 
170
-
171
181
  /**
172
182
  * Gets total elapsed time
173
183
  * @param {RTCPeerConnection} peerConnection
@@ -175,7 +185,7 @@ export default class Reachability {
175
185
  * @private
176
186
  * @memberof Reachability
177
187
  */
178
- getElapsedTime(peerConnection) {
188
+ private getElapsedTime(peerConnection: any) {
179
189
  const startTime = peerConnection.begin;
180
190
 
181
191
  delete peerConnection.begin;
@@ -183,7 +193,6 @@ export default class Reachability {
183
193
  return Date.now() - startTime;
184
194
  }
185
195
 
186
-
187
196
  /**
188
197
  * creates offer and generates localSDP
189
198
  * @param {object} clusterList cluster List
@@ -191,8 +200,8 @@ export default class Reachability {
191
200
  * @private
192
201
  * @memberof Reachability
193
202
  */
194
- getLocalSDPForClusters(clusterList) {
195
- let clusters = [...Object.keys(clusterList)];
203
+ private getLocalSDPForClusters(clusterList: object) {
204
+ let clusters: any[] = [...Object.keys(clusterList)];
196
205
 
197
206
  clusters = clusters.map(async (key) => {
198
207
  const cluster = clusterList[key];
@@ -200,13 +209,18 @@ export default class Reachability {
200
209
  const peerConnection = this.createPeerConnection({key, config});
201
210
  const description = await peerConnection.createOffer({offerToReceiveAudio: true});
202
211
 
212
+ // @ts-ignore
203
213
  peerConnection.begin = Date.now();
204
214
  peerConnection.setLocalDescription(description);
205
215
 
206
- return this.iceGatheringState(peerConnection, cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT)
207
- .catch((iceGatheringStateError) => {
208
- LoggerProxy.logger.log(`Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`);
209
- });
216
+ return this.iceGatheringState(
217
+ peerConnection,
218
+ cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT
219
+ ).catch((iceGatheringStateError) => {
220
+ LoggerProxy.logger.log(
221
+ `Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`
222
+ );
223
+ });
210
224
  });
211
225
 
212
226
  return Promise.all(clusters)
@@ -219,14 +233,13 @@ export default class Reachability {
219
233
  });
220
234
  }
221
235
 
222
-
223
236
  /**
224
237
  * Get list of all unreachable clusters
225
238
  * @returns {array} Unreachable clusters
226
239
  * @private
227
240
  * @memberof Reachability
228
241
  */
229
- getUnreachablClusters() {
242
+ private getUnreachablClusters() {
230
243
  const unreachableList = [];
231
244
  const clusters = this.clusterLatencyResults;
232
245
 
@@ -241,7 +254,6 @@ export default class Reachability {
241
254
  return unreachableList;
242
255
  }
243
256
 
244
-
245
257
  /**
246
258
  * Attach an event handler for the icegatheringstatechange
247
259
  * event and measure latency.
@@ -250,20 +262,24 @@ export default class Reachability {
250
262
  * @private
251
263
  * @memberof Reachability
252
264
  */
253
- handleIceGatheringStateChange(peerConnection) {
265
+ private handleIceGatheringStateChange(peerConnection: RTCPeerConnection) {
254
266
  peerConnection.onicegatheringstatechange = () => {
255
267
  const {COMPLETE} = ICE_GATHERING_STATE;
256
268
 
257
269
  if (peerConnection.iceConnectionState === COMPLETE) {
258
270
  const elapsed = this.getElapsedTime(peerConnection);
259
271
 
260
- LoggerProxy.logger.log(`Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`, elapsed);
272
+ // @ts-ignore
273
+ LoggerProxy.logger.log(
274
+ // @ts-ignore
275
+ `Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,
276
+ elapsed
277
+ );
261
278
  this.setLatencyAndClose(peerConnection, elapsed);
262
279
  }
263
280
  };
264
281
  }
265
282
 
266
-
267
283
  /**
268
284
  * Attach an event handler for the icecandidate
269
285
  * event and measure latency.
@@ -272,14 +288,18 @@ export default class Reachability {
272
288
  * @private
273
289
  * @memberof Reachability
274
290
  */
275
- handleOnIceCandidate(peerConnection) {
291
+ private handleOnIceCandidate(peerConnection: RTCPeerConnection) {
276
292
  peerConnection.onicecandidate = (e) => {
277
293
  const SERVER_REFLEXIVE = 'srflx';
278
294
 
279
295
  if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {
280
296
  const elapsed = this.getElapsedTime(peerConnection);
281
297
 
282
- LoggerProxy.logger.log(`Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`, elapsed);
298
+ LoggerProxy.logger.log(
299
+ // @ts-ignore
300
+ `Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,
301
+ elapsed
302
+ );
283
303
  this.setLatencyAndClose(peerConnection, elapsed);
284
304
  }
285
305
  };
@@ -294,7 +314,7 @@ export default class Reachability {
294
314
  * @param {number} timeout
295
315
  * @returns {Promise}
296
316
  */
297
- iceGatheringState(peerConnection, timeout) {
317
+ private iceGatheringState(peerConnection: RTCPeerConnection, timeout: number) {
298
318
  const ELAPSED = 'elapsed';
299
319
 
300
320
  return new Promise((resolve) => {
@@ -302,7 +322,7 @@ export default class Reachability {
302
322
  get(target, property) {
303
323
  const targetMember = target[property];
304
324
 
305
- if (typeof (targetMember) === 'function') {
325
+ if (typeof targetMember === 'function') {
306
326
  return targetMember.bind(target);
307
327
  }
308
328
 
@@ -311,6 +331,7 @@ export default class Reachability {
311
331
  set: (target, property, value) => {
312
332
  // only intercept elapsed property
313
333
  if (property === ELAPSED) {
334
+ // @ts-ignore
314
335
  resolve({clusterId: peerConnection.key, elapsed: value});
315
336
 
316
337
  return true;
@@ -318,7 +339,7 @@ export default class Reachability {
318
339
 
319
340
  // pass thru
320
341
  return window.Reflect.set(target, property, value);
321
- }
342
+ },
322
343
  });
323
344
 
324
345
  // Using peerConnection proxy so handle functions below
@@ -338,22 +359,22 @@ export default class Reachability {
338
359
  });
339
360
  }
340
361
 
341
-
342
362
  /**
343
363
  * Make a log of unreachable clusters.
344
364
  * @returns {undefined}
345
365
  * @private
346
366
  * @memberof Reachability
347
367
  */
348
- logUnreachableClusters() {
368
+ private logUnreachableClusters() {
349
369
  const list = this.getUnreachablClusters();
350
370
 
351
371
  list.forEach((cluster) => {
352
- LoggerProxy.logger.log(`Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`);
372
+ LoggerProxy.logger.log(
373
+ `Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`
374
+ );
353
375
  });
354
376
  }
355
377
 
356
-
357
378
  /**
358
379
  * Calculates time to establish connection
359
380
  * @param {array} iceResults iceResults
@@ -361,7 +382,7 @@ export default class Reachability {
361
382
  * @private
362
383
  * @memberof Reachability
363
384
  */
364
- parseIceResultsToReachabilityResults(iceResults) {
385
+ private parseIceResultsToReachabilityResults(iceResults: Array<any>) {
365
386
  const reachabilityMap = {};
366
387
 
367
388
  iceResults.forEach(({clusterId, elapsed}) => {
@@ -369,24 +390,22 @@ export default class Reachability {
369
390
 
370
391
  if (elapsed === null) {
371
392
  latencyResult = {reachable: 'false'};
372
- }
373
- else {
393
+ } else {
374
394
  latencyResult = {
375
395
  reachable: 'true',
376
- latencyInMilliseconds: (elapsed).toString()
396
+ latencyInMilliseconds: elapsed.toString(),
377
397
  };
378
398
  }
379
399
 
380
400
  reachabilityMap[clusterId] = {
381
401
  udp: latencyResult,
382
- tcp: latencyResult
402
+ tcp: latencyResult,
383
403
  };
384
404
  });
385
405
 
386
406
  return reachabilityMap;
387
407
  }
388
408
 
389
-
390
409
  /**
391
410
  * fetches reachability data
392
411
  * @param {object} clusterList
@@ -394,7 +413,7 @@ export default class Reachability {
394
413
  * @private
395
414
  * @memberof Reachability
396
415
  */
397
- performReachabilityCheck(clusterList) {
416
+ private performReachabilityCheck(clusterList: object) {
398
417
  if (!clusterList || !Object.keys(clusterList).length) {
399
418
  return Promise.resolve({});
400
419
  }
@@ -404,21 +423,23 @@ export default class Reachability {
404
423
  .then((localSDPData) => {
405
424
  if (!localSDPData || !Object.keys(localSDPData).length) {
406
425
  // TODO: handle the error condition properly and try retry
407
- LoggerProxy.logger.log('Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning');
426
+ LoggerProxy.logger.log(
427
+ 'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'
428
+ );
408
429
  resolve({});
409
- }
410
- else {
430
+ } else {
411
431
  resolve(localSDPData);
412
432
  }
413
433
  })
414
434
  .catch((error) => {
415
- LoggerProxy.logger.error(`Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`);
435
+ LoggerProxy.logger.error(
436
+ `Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`
437
+ );
416
438
  resolve({});
417
439
  });
418
440
  });
419
441
  }
420
442
 
421
-
422
443
  /**
423
444
  * Records latency and closes the peerConnection
424
445
  * @param {RTCPeerConnection} peerConnection
@@ -427,16 +448,19 @@ export default class Reachability {
427
448
  * @private
428
449
  * @memberof Reachability
429
450
  */
430
- setLatencyAndClose(peerConnection, elapsed) {
451
+ private setLatencyAndClose(peerConnection: RTCPeerConnection, elapsed: number) {
431
452
  const REACHABLE = 'reachable';
432
453
  const UNREACHABLE = 'unreachable';
433
454
  const {CLOSED} = CONNECTION_STATE;
455
+ // @ts-ignore
434
456
  const {key} = peerConnection;
435
457
  const resultKey = elapsed === null ? UNREACHABLE : REACHABLE;
436
458
  const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};
437
459
 
438
460
  if (peerConnection.connectionState === CLOSED) {
439
- LoggerProxy.logger.log(`Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`);
461
+ LoggerProxy.logger.log(
462
+ `Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`
463
+ );
440
464
 
441
465
  return;
442
466
  }
@@ -448,17 +472,17 @@ export default class Reachability {
448
472
  // an event other than onIceCandidate
449
473
  peerConnection.onicecandidate = null;
450
474
  peerConnection.close();
475
+ // @ts-ignore
451
476
  peerConnection.elapsed = elapsed;
452
477
  }
453
478
 
454
-
455
479
  /**
456
480
  * utility function
457
481
  * @returns {undefined}
458
482
  * @private
459
483
  * @memberof Reachability
460
484
  */
461
- setup() {
485
+ private setup() {
462
486
  this.clusterLatencyResults = {};
463
487
  }
464
488
  }
@@ -1,9 +1,5 @@
1
1
  import LoggerProxy from '../common/logs/logger-proxy';
2
- import {
3
- HTTP_VERBS,
4
- RESOURCE,
5
- API
6
- } from '../constants';
2
+ import {HTTP_VERBS, RESOURCE, API} from '../constants';
7
3
 
8
4
  export interface ClusterNode {
9
5
  isVideoMesh: boolean;
@@ -13,63 +9,78 @@ export interface ClusterNode {
13
9
  }
14
10
 
15
11
  export type ClusterList = {
16
- [key:string]: ClusterNode;
17
- }
12
+ [key: string]: ClusterNode;
13
+ };
18
14
 
19
15
  /**
20
16
  * @class ReachabilityRequest
21
17
  */
22
18
  class ReachabilityRequest {
19
+ webex: any;
20
+
23
21
  /**
24
22
  * Creates an instance of ReachabilityRequest.
25
23
  * @param {object} webex
26
24
  * @memberof ReachabilityRequest
27
25
  */
28
- constructor(webex) {
26
+ constructor(webex: object) {
29
27
  this.webex = webex;
30
28
  }
31
29
 
32
30
  /**
33
- * gets the cluster information
31
+ * Gets the cluster information
34
32
  *
35
- * @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
36
33
  * @returns {Promise}
37
34
  */
38
- getClusters = (): Promise<ClusterList> => this.webex.request({
39
- method: HTTP_VERBS.GET,
40
- shouldRefreshAccessToken: false,
41
- api: API.CALLIOPEDISCOVERY,
42
- resource: RESOURCE.CLUSTERS
43
- })
44
- .then((res) => {
45
- const {clusters} = res.body;
35
+ getClusters = (): Promise<{clusters: ClusterList; joinCookie: any}> =>
36
+ this.webex
37
+ .request({
38
+ method: HTTP_VERBS.GET,
39
+ shouldRefreshAccessToken: false,
40
+ api: API.CALLIOPEDISCOVERY,
41
+ resource: RESOURCE.CLUSTERS,
42
+ qs: {
43
+ JCSupport: 1,
44
+ },
45
+ })
46
+ .then((res) => {
47
+ const {clusters, joinCookie} = res.body;
46
48
 
47
- Object.keys(clusters).forEach((key) => {
48
- clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);
49
- });
49
+ Object.keys(clusters).forEach((key) => {
50
+ clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);
51
+ });
50
52
 
51
- LoggerProxy.logger.log(`Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`);
53
+ LoggerProxy.logger.log(
54
+ `Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`
55
+ );
52
56
 
53
- return clusters;
54
- });
57
+ return {
58
+ clusters,
59
+ joinCookie,
60
+ };
61
+ });
55
62
 
56
63
  /**
57
64
  * gets remote SDP For Clusters
58
65
  * @param {Object} localSDPList localSDPs for the cluster
59
66
  * @returns {Object}
60
67
  */
61
- remoteSDPForClusters = (localSDPList) => this.webex.request({
62
- method: HTTP_VERBS.POST,
63
- shouldRefreshAccessToken: false,
64
- api: API.CALLIOPEDISCOVERY,
65
- resource: RESOURCE.REACHABILITY,
66
- body: {offers: localSDPList}
67
- })
68
- .then((res) => {
69
- LoggerProxy.logger.log('Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully');
68
+ remoteSDPForClusters = (localSDPList: object) =>
69
+ this.webex
70
+ .request({
71
+ method: HTTP_VERBS.POST,
72
+ shouldRefreshAccessToken: false,
73
+ api: API.CALLIOPEDISCOVERY,
74
+ resource: RESOURCE.REACHABILITY,
75
+ body: {offers: localSDPList},
76
+ })
77
+ .then((res) => {
78
+ LoggerProxy.logger.log(
79
+ 'Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully'
80
+ );
70
81
 
71
- return res.body;
72
- });
82
+ return res.body;
83
+ });
73
84
  }
74
85
 
75
86
  export default ReachabilityRequest;
@@ -0,0 +1,4 @@
1
+ // eslint-disable-next-line import/prefer-default-export
2
+ export const REACTION_RELAY_TYPES = {
3
+ REACTION: 'react',
4
+ } as const;