@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.131

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