@webex/plugin-meetings 3.0.0-beta.10 → 3.0.0-beta.104

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 (512) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.js +48 -0
  6. package/dist/annotation/constants.js.map +1 -0
  7. package/dist/annotation/index.js +357 -0
  8. package/dist/annotation/index.js.map +1 -0
  9. package/dist/breakouts/breakout.js +176 -0
  10. package/dist/breakouts/breakout.js.map +1 -0
  11. package/dist/breakouts/collection.js +23 -0
  12. package/dist/breakouts/collection.js.map +1 -0
  13. package/dist/breakouts/edit-lock-error.js +52 -0
  14. package/dist/breakouts/edit-lock-error.js.map +1 -0
  15. package/dist/breakouts/events.js +43 -0
  16. package/dist/breakouts/events.js.map +1 -0
  17. package/dist/breakouts/index.js +919 -0
  18. package/dist/breakouts/index.js.map +1 -0
  19. package/dist/breakouts/request.js +78 -0
  20. package/dist/breakouts/request.js.map +1 -0
  21. package/dist/breakouts/utils.js +67 -0
  22. package/dist/breakouts/utils.js.map +1 -0
  23. package/dist/common/browser-detection.js +1 -20
  24. package/dist/common/browser-detection.js.map +1 -1
  25. package/dist/common/collection.js +5 -20
  26. package/dist/common/collection.js.map +1 -1
  27. package/dist/common/config.js +0 -7
  28. package/dist/common/config.js.map +1 -1
  29. package/dist/common/errors/captcha-error.js +5 -26
  30. package/dist/common/errors/captcha-error.js.map +1 -1
  31. package/dist/common/errors/intent-to-join.js +5 -26
  32. package/dist/common/errors/intent-to-join.js.map +1 -1
  33. package/dist/common/errors/join-meeting.js +6 -27
  34. package/dist/common/errors/join-meeting.js.map +1 -1
  35. package/dist/common/errors/media.js +5 -26
  36. package/dist/common/errors/media.js.map +1 -1
  37. package/dist/common/errors/parameter.js +5 -33
  38. package/dist/common/errors/parameter.js.map +1 -1
  39. package/dist/common/errors/password-error.js +5 -26
  40. package/dist/common/errors/password-error.js.map +1 -1
  41. package/dist/common/errors/permission.js +4 -25
  42. package/dist/common/errors/permission.js.map +1 -1
  43. package/dist/common/errors/reconnection-in-progress.js +0 -17
  44. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  45. package/dist/common/errors/reconnection.js +5 -26
  46. package/dist/common/errors/reconnection.js.map +1 -1
  47. package/dist/common/errors/stats.js +5 -26
  48. package/dist/common/errors/stats.js.map +1 -1
  49. package/dist/common/errors/webex-errors.js +6 -41
  50. package/dist/common/errors/webex-errors.js.map +1 -1
  51. package/dist/common/errors/webex-meetings-error.js +1 -24
  52. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  53. package/dist/common/events/events-scope.js +0 -22
  54. package/dist/common/events/events-scope.js.map +1 -1
  55. package/dist/common/events/events.js +0 -23
  56. package/dist/common/events/events.js.map +1 -1
  57. package/dist/common/events/trigger-proxy.js +0 -12
  58. package/dist/common/events/trigger-proxy.js.map +1 -1
  59. package/dist/common/events/util.js +0 -15
  60. package/dist/common/events/util.js.map +1 -1
  61. package/dist/common/logs/logger-config.js +0 -4
  62. package/dist/common/logs/logger-config.js.map +1 -1
  63. package/dist/common/logs/logger-proxy.js +1 -8
  64. package/dist/common/logs/logger-proxy.js.map +1 -1
  65. package/dist/common/logs/request.js +35 -61
  66. package/dist/common/logs/request.js.map +1 -1
  67. package/dist/common/queue.js +4 -14
  68. package/dist/common/queue.js.map +1 -1
  69. package/dist/config.js +6 -6
  70. package/dist/config.js.map +1 -1
  71. package/dist/constants.js +173 -52
  72. package/dist/constants.js.map +1 -1
  73. package/dist/controls-options-manager/constants.js +14 -0
  74. package/dist/controls-options-manager/constants.js.map +1 -0
  75. package/dist/controls-options-manager/enums.js +25 -0
  76. package/dist/controls-options-manager/enums.js.map +1 -0
  77. package/dist/controls-options-manager/index.js +297 -0
  78. package/dist/controls-options-manager/index.js.map +1 -0
  79. package/dist/controls-options-manager/types.js +7 -0
  80. package/dist/controls-options-manager/types.js.map +1 -0
  81. package/dist/controls-options-manager/util.js +250 -0
  82. package/dist/controls-options-manager/util.js.map +1 -0
  83. package/dist/index.js +72 -17
  84. package/dist/index.js.map +1 -1
  85. package/dist/locus-info/controlsUtils.js +56 -29
  86. package/dist/locus-info/controlsUtils.js.map +1 -1
  87. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  88. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  89. package/dist/locus-info/fullState.js +0 -15
  90. package/dist/locus-info/fullState.js.map +1 -1
  91. package/dist/locus-info/hostUtils.js +4 -12
  92. package/dist/locus-info/hostUtils.js.map +1 -1
  93. package/dist/locus-info/index.js +327 -211
  94. package/dist/locus-info/index.js.map +1 -1
  95. package/dist/locus-info/infoUtils.js +0 -38
  96. package/dist/locus-info/infoUtils.js.map +1 -1
  97. package/dist/locus-info/mediaSharesUtils.js +12 -38
  98. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  99. package/dist/locus-info/parser.js +88 -123
  100. package/dist/locus-info/parser.js.map +1 -1
  101. package/dist/locus-info/selfUtils.js +99 -91
  102. package/dist/locus-info/selfUtils.js.map +1 -1
  103. package/dist/media/index.js +62 -147
  104. package/dist/media/index.js.map +1 -1
  105. package/dist/media/properties.js +71 -117
  106. package/dist/media/properties.js.map +1 -1
  107. package/dist/media/util.js +2 -9
  108. package/dist/media/util.js.map +1 -1
  109. package/dist/mediaQualityMetrics/config.js +505 -495
  110. package/dist/mediaQualityMetrics/config.js.map +1 -1
  111. package/dist/meeting/in-meeting-actions.js +59 -14
  112. package/dist/meeting/in-meeting-actions.js.map +1 -1
  113. package/dist/meeting/index.js +2396 -2388
  114. package/dist/meeting/index.js.map +1 -1
  115. package/dist/meeting/muteState.js +252 -113
  116. package/dist/meeting/muteState.js.map +1 -1
  117. package/dist/meeting/request.js +318 -283
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/request.type.js +7 -0
  120. package/dist/meeting/request.type.js.map +1 -0
  121. package/dist/meeting/state.js +21 -31
  122. package/dist/meeting/state.js.map +1 -1
  123. package/dist/meeting/util.js +58 -217
  124. package/dist/meeting/util.js.map +1 -1
  125. package/dist/meeting-info/collection.js +3 -25
  126. package/dist/meeting-info/collection.js.map +1 -1
  127. package/dist/meeting-info/index.js +10 -33
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.js +263 -282
  130. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  131. package/dist/meeting-info/request.js +1 -16
  132. package/dist/meeting-info/request.js.map +1 -1
  133. package/dist/meeting-info/util.js +98 -183
  134. package/dist/meeting-info/util.js.map +1 -1
  135. package/dist/meeting-info/utilv2.js +155 -232
  136. package/dist/meeting-info/utilv2.js.map +1 -1
  137. package/dist/meetings/collection.js +24 -20
  138. package/dist/meetings/collection.js.map +1 -1
  139. package/dist/meetings/index.js +675 -593
  140. package/dist/meetings/index.js.map +1 -1
  141. package/dist/meetings/request.js +23 -42
  142. package/dist/meetings/request.js.map +1 -1
  143. package/dist/meetings/util.js +177 -155
  144. package/dist/meetings/util.js.map +1 -1
  145. package/dist/member/index.js +80 -88
  146. package/dist/member/index.js.map +1 -1
  147. package/dist/member/types.js +15 -0
  148. package/dist/member/types.js.map +1 -0
  149. package/dist/member/util.js +90 -69
  150. package/dist/member/util.js.map +1 -1
  151. package/dist/members/collection.js +12 -12
  152. package/dist/members/collection.js.map +1 -1
  153. package/dist/members/index.js +162 -204
  154. package/dist/members/index.js.map +1 -1
  155. package/dist/members/request.js +58 -53
  156. package/dist/members/request.js.map +1 -1
  157. package/dist/members/types.js +15 -0
  158. package/dist/members/types.js.map +1 -0
  159. package/dist/members/util.js +107 -44
  160. package/dist/members/util.js.map +1 -1
  161. package/dist/metrics/config.js +5 -14
  162. package/dist/metrics/config.js.map +1 -1
  163. package/dist/metrics/constants.js +3 -7
  164. package/dist/metrics/constants.js.map +1 -1
  165. package/dist/metrics/index.js +61 -161
  166. package/dist/metrics/index.js.map +1 -1
  167. package/dist/multistream/mediaRequestManager.js +167 -50
  168. package/dist/multistream/mediaRequestManager.js.map +1 -1
  169. package/dist/multistream/receiveSlot.js +58 -65
  170. package/dist/multistream/receiveSlot.js.map +1 -1
  171. package/dist/multistream/receiveSlotManager.js +74 -93
  172. package/dist/multistream/receiveSlotManager.js.map +1 -1
  173. package/dist/multistream/remoteMedia.js +55 -74
  174. package/dist/multistream/remoteMedia.js.map +1 -1
  175. package/dist/multistream/remoteMediaGroup.js +6 -40
  176. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  177. package/dist/multistream/remoteMediaManager.js +466 -442
  178. package/dist/multistream/remoteMediaManager.js.map +1 -1
  179. package/dist/networkQualityMonitor/index.js +32 -59
  180. package/dist/networkQualityMonitor/index.js.map +1 -1
  181. package/dist/personal-meeting-room/index.js +10 -45
  182. package/dist/personal-meeting-room/index.js.map +1 -1
  183. package/dist/personal-meeting-room/request.js +2 -33
  184. package/dist/personal-meeting-room/request.js.map +1 -1
  185. package/dist/personal-meeting-room/util.js +0 -13
  186. package/dist/personal-meeting-room/util.js.map +1 -1
  187. package/dist/reachability/index.js +190 -199
  188. package/dist/reachability/index.js.map +1 -1
  189. package/dist/reachability/request.js +14 -23
  190. package/dist/reachability/request.js.map +1 -1
  191. package/dist/reactions/constants.js +13 -0
  192. package/dist/reactions/constants.js.map +1 -0
  193. package/dist/reactions/reactions.js +109 -0
  194. package/dist/reactions/reactions.js.map +1 -0
  195. package/dist/reactions/reactions.type.js +36 -0
  196. package/dist/reactions/reactions.type.js.map +1 -0
  197. package/dist/reconnection-manager/index.js +326 -465
  198. package/dist/reconnection-manager/index.js.map +1 -1
  199. package/dist/recording-controller/enums.js +17 -0
  200. package/dist/recording-controller/enums.js.map +1 -0
  201. package/dist/recording-controller/index.js +343 -0
  202. package/dist/recording-controller/index.js.map +1 -0
  203. package/dist/recording-controller/util.js +63 -0
  204. package/dist/recording-controller/util.js.map +1 -0
  205. package/dist/roap/index.js +38 -67
  206. package/dist/roap/index.js.map +1 -1
  207. package/dist/roap/request.js +143 -134
  208. package/dist/roap/request.js.map +1 -1
  209. package/dist/roap/turnDiscovery.js +149 -101
  210. package/dist/roap/turnDiscovery.js.map +1 -1
  211. package/dist/statsAnalyzer/global.js +1 -95
  212. package/dist/statsAnalyzer/global.js.map +1 -1
  213. package/dist/statsAnalyzer/index.js +369 -461
  214. package/dist/statsAnalyzer/index.js.map +1 -1
  215. package/dist/statsAnalyzer/mqaUtil.js +144 -94
  216. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  217. package/dist/transcription/index.js +13 -45
  218. package/dist/transcription/index.js.map +1 -1
  219. package/dist/types/annotation/annotation.types.d.ts +34 -0
  220. package/dist/types/annotation/constants.d.ts +31 -0
  221. package/dist/types/annotation/index.d.ts +124 -0
  222. package/dist/types/breakouts/breakout.d.ts +8 -0
  223. package/dist/types/breakouts/collection.d.ts +5 -0
  224. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  225. package/dist/types/breakouts/events.d.ts +2 -0
  226. package/dist/types/breakouts/index.d.ts +5 -0
  227. package/dist/types/breakouts/request.d.ts +22 -0
  228. package/dist/types/breakouts/utils.d.ts +15 -0
  229. package/dist/types/common/browser-detection.d.ts +9 -0
  230. package/dist/types/common/collection.d.ts +48 -0
  231. package/dist/types/common/config.d.ts +2 -0
  232. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  233. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  234. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  235. package/dist/types/common/errors/media.d.ts +15 -0
  236. package/dist/types/common/errors/parameter.d.ts +15 -0
  237. package/dist/types/common/errors/password-error.d.ts +15 -0
  238. package/dist/types/common/errors/permission.d.ts +14 -0
  239. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  240. package/dist/types/common/errors/reconnection.d.ts +15 -0
  241. package/dist/types/common/errors/stats.d.ts +15 -0
  242. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  243. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  244. package/dist/types/common/events/events-scope.d.ts +17 -0
  245. package/dist/types/common/events/events.d.ts +12 -0
  246. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  247. package/dist/types/common/events/util.d.ts +2 -0
  248. package/dist/types/common/logs/logger-config.d.ts +2 -0
  249. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  250. package/dist/types/common/logs/request.d.ts +34 -0
  251. package/dist/types/common/queue.d.ts +32 -0
  252. package/dist/types/config.d.ts +78 -0
  253. package/dist/types/constants.d.ts +968 -0
  254. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  255. package/dist/types/controls-options-manager/enums.d.ts +13 -0
  256. package/dist/types/controls-options-manager/index.d.ts +136 -0
  257. package/dist/types/controls-options-manager/types.d.ts +37 -0
  258. package/dist/types/controls-options-manager/util.d.ts +1 -0
  259. package/dist/types/index.d.ts +7 -0
  260. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  261. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  262. package/dist/types/locus-info/fullState.d.ts +2 -0
  263. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  264. package/dist/types/locus-info/index.d.ts +315 -0
  265. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  266. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  267. package/dist/types/locus-info/parser.d.ts +212 -0
  268. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  269. package/dist/types/media/index.d.ts +34 -0
  270. package/dist/types/media/properties.d.ts +108 -0
  271. package/dist/types/media/util.d.ts +2 -0
  272. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  273. package/dist/types/meeting/in-meeting-actions.d.ts +129 -0
  274. package/dist/types/meeting/index.d.ts +1748 -0
  275. package/dist/types/meeting/muteState.d.ts +185 -0
  276. package/dist/types/meeting/request.d.ts +275 -0
  277. package/dist/types/meeting/request.type.d.ts +11 -0
  278. package/dist/types/meeting/state.d.ts +9 -0
  279. package/dist/types/meeting/util.d.ts +2 -0
  280. package/dist/types/meeting-info/collection.d.ts +20 -0
  281. package/dist/types/meeting-info/index.d.ts +57 -0
  282. package/dist/types/meeting-info/meeting-info-v2.d.ts +112 -0
  283. package/dist/types/meeting-info/request.d.ts +22 -0
  284. package/dist/types/meeting-info/util.d.ts +2 -0
  285. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  286. package/dist/types/meetings/collection.d.ts +31 -0
  287. package/dist/types/meetings/index.d.ts +345 -0
  288. package/dist/types/meetings/request.d.ts +27 -0
  289. package/dist/types/meetings/util.d.ts +18 -0
  290. package/dist/types/member/index.d.ts +156 -0
  291. package/dist/types/member/types.d.ts +21 -0
  292. package/dist/types/member/util.d.ts +2 -0
  293. package/dist/types/members/collection.d.ts +29 -0
  294. package/dist/types/members/index.d.ts +353 -0
  295. package/dist/types/members/request.d.ts +69 -0
  296. package/dist/types/members/types.d.ts +24 -0
  297. package/dist/types/members/util.d.ts +2 -0
  298. package/dist/types/metrics/config.d.ts +172 -0
  299. package/dist/types/metrics/constants.d.ts +54 -0
  300. package/dist/types/metrics/index.d.ts +152 -0
  301. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  302. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  303. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  304. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  305. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  306. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  307. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  308. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  309. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  310. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  311. package/dist/types/reachability/index.d.ts +152 -0
  312. package/dist/types/reachability/request.d.ts +37 -0
  313. package/dist/types/reactions/constants.d.ts +3 -0
  314. package/dist/types/reactions/reactions.d.ts +4 -0
  315. package/dist/types/reactions/reactions.type.d.ts +52 -0
  316. package/dist/types/reconnection-manager/index.d.ts +126 -0
  317. package/dist/types/recording-controller/enums.d.ts +7 -0
  318. package/dist/types/recording-controller/index.d.ts +193 -0
  319. package/dist/types/recording-controller/util.d.ts +13 -0
  320. package/dist/types/roap/index.d.ts +77 -0
  321. package/dist/types/roap/request.d.ts +38 -0
  322. package/dist/types/roap/turnDiscovery.d.ts +88 -0
  323. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  324. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  325. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  326. package/dist/types/transcription/index.d.ts +64 -0
  327. package/internal-README.md +7 -6
  328. package/package.json +28 -21
  329. package/src/annotation/annotation.types.ts +41 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +339 -0
  332. package/src/breakouts/README.md +219 -0
  333. package/src/breakouts/breakout.ts +141 -0
  334. package/src/breakouts/collection.ts +19 -0
  335. package/src/breakouts/edit-lock-error.ts +25 -0
  336. package/src/breakouts/events.ts +37 -0
  337. package/src/breakouts/index.ts +823 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/browser-detection.ts +9 -6
  341. package/src/common/collection.ts +3 -1
  342. package/src/common/errors/captcha-error.ts +6 -6
  343. package/src/common/errors/intent-to-join.ts +6 -6
  344. package/src/common/errors/join-meeting.ts +12 -8
  345. package/src/common/errors/media.ts +6 -6
  346. package/src/common/errors/parameter.ts +9 -6
  347. package/src/common/errors/password-error.ts +6 -6
  348. package/src/common/errors/permission.ts +5 -5
  349. package/src/common/errors/reconnection.ts +6 -6
  350. package/src/common/errors/stats.ts +6 -6
  351. package/src/common/errors/webex-errors.ts +7 -5
  352. package/src/common/errors/webex-meetings-error.ts +1 -1
  353. package/src/common/events/events-scope.ts +5 -1
  354. package/src/common/events/events.ts +5 -1
  355. package/src/common/events/trigger-proxy.ts +8 -3
  356. package/src/common/events/util.ts +1 -2
  357. package/src/common/logs/logger-proxy.ts +21 -10
  358. package/src/common/logs/request.ts +11 -8
  359. package/src/config.ts +16 -12
  360. package/src/constants.ts +119 -6
  361. package/src/controls-options-manager/constants.ts +5 -0
  362. package/src/controls-options-manager/enums.ts +16 -0
  363. package/src/controls-options-manager/index.ts +278 -0
  364. package/src/controls-options-manager/types.ts +49 -0
  365. package/src/controls-options-manager/util.ts +229 -0
  366. package/src/index.ts +33 -0
  367. package/src/locus-info/controlsUtils.ts +91 -24
  368. package/src/locus-info/fullState.ts +15 -11
  369. package/src/locus-info/hostUtils.ts +4 -3
  370. package/src/locus-info/index.ts +270 -54
  371. package/src/locus-info/infoUtils.ts +12 -4
  372. package/src/locus-info/mediaSharesUtils.ts +4 -4
  373. package/src/locus-info/parser.ts +46 -68
  374. package/src/locus-info/selfUtils.ts +187 -56
  375. package/src/media/index.ts +142 -172
  376. package/src/media/properties.ts +43 -36
  377. package/src/media/util.ts +1 -1
  378. package/src/mediaQualityMetrics/config.ts +380 -378
  379. package/src/meeting/in-meeting-actions.ts +123 -3
  380. package/src/meeting/index.ts +2617 -1545
  381. package/src/meeting/muteState.ts +271 -68
  382. package/src/meeting/request.ts +251 -132
  383. package/src/meeting/request.type.ts +13 -0
  384. package/src/meeting/state.ts +45 -30
  385. package/src/meeting/util.ts +119 -110
  386. package/src/meeting-info/collection.ts +2 -1
  387. package/src/meeting-info/index.ts +32 -30
  388. package/src/meeting-info/meeting-info-v2.ts +181 -109
  389. package/src/meeting-info/request.ts +9 -3
  390. package/src/meeting-info/util.ts +54 -46
  391. package/src/meeting-info/utilv2.ts +70 -55
  392. package/src/meetings/collection.ts +21 -1
  393. package/src/meetings/index.ts +749 -437
  394. package/src/meetings/request.ts +29 -25
  395. package/src/meetings/util.ts +122 -33
  396. package/src/member/index.ts +86 -49
  397. package/src/member/types.ts +24 -0
  398. package/src/member/util.ts +92 -13
  399. package/src/members/collection.ts +8 -1
  400. package/src/members/index.ts +281 -129
  401. package/src/members/request.ts +87 -14
  402. package/src/members/types.ts +28 -0
  403. package/src/members/util.ts +140 -49
  404. package/src/metrics/config.ts +256 -90
  405. package/src/metrics/constants.ts +1 -6
  406. package/src/metrics/index.ts +96 -96
  407. package/src/multistream/mediaRequestManager.ts +203 -45
  408. package/src/multistream/receiveSlot.ts +69 -26
  409. package/src/multistream/receiveSlotManager.ts +62 -38
  410. package/src/multistream/remoteMedia.ts +30 -4
  411. package/src/multistream/remoteMediaGroup.ts +4 -3
  412. package/src/multistream/remoteMediaManager.ts +230 -66
  413. package/src/networkQualityMonitor/index.ts +24 -27
  414. package/src/personal-meeting-room/index.ts +12 -16
  415. package/src/personal-meeting-room/request.ts +10 -3
  416. package/src/personal-meeting-room/util.ts +3 -3
  417. package/src/reachability/index.ts +131 -79
  418. package/src/reachability/request.ts +43 -34
  419. package/src/reactions/constants.ts +4 -0
  420. package/src/reactions/reactions.ts +104 -0
  421. package/src/reactions/reactions.type.ts +62 -0
  422. package/src/reconnection-manager/index.ts +193 -111
  423. package/src/recording-controller/enums.ts +8 -0
  424. package/src/recording-controller/index.ts +315 -0
  425. package/src/recording-controller/util.ts +58 -0
  426. package/src/roap/index.ts +63 -51
  427. package/src/roap/request.ts +86 -53
  428. package/src/roap/turnDiscovery.ts +105 -46
  429. package/src/statsAnalyzer/global.ts +8 -104
  430. package/src/statsAnalyzer/index.ts +624 -376
  431. package/src/statsAnalyzer/mqaUtil.ts +203 -90
  432. package/src/transcription/index.ts +34 -32
  433. package/test/integration/spec/converged-space-meetings.js +177 -0
  434. package/test/integration/spec/journey.js +666 -464
  435. package/test/integration/spec/space-meeting.js +320 -204
  436. package/test/integration/spec/transcription.js +7 -8
  437. package/test/unit/spec/annotation/index.ts +435 -0
  438. package/test/unit/spec/breakouts/breakout.ts +184 -0
  439. package/test/unit/spec/breakouts/collection.ts +15 -0
  440. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  441. package/test/unit/spec/breakouts/events.ts +77 -0
  442. package/test/unit/spec/breakouts/index.ts +1504 -0
  443. package/test/unit/spec/breakouts/request.ts +104 -0
  444. package/test/unit/spec/breakouts/utils.js +72 -0
  445. package/test/unit/spec/common/browser-detection.js +9 -28
  446. package/test/unit/spec/controls-options-manager/index.js +287 -0
  447. package/test/unit/spec/controls-options-manager/util.js +403 -0
  448. package/test/unit/spec/fixture/locus.js +92 -90
  449. package/test/unit/spec/locus-info/controlsUtils.js +177 -32
  450. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  451. package/test/unit/spec/locus-info/index.js +493 -3
  452. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  453. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  454. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  455. package/test/unit/spec/locus-info/parser.js +3 -9
  456. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  457. package/test/unit/spec/locus-info/selfUtils.js +236 -12
  458. package/test/unit/spec/media/index.ts +104 -8
  459. package/test/unit/spec/media/properties.ts +9 -9
  460. package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
  461. package/test/unit/spec/meeting/index.js +2649 -837
  462. package/test/unit/spec/meeting/muteState.js +368 -70
  463. package/test/unit/spec/meeting/request.js +217 -43
  464. package/test/unit/spec/meeting/utils.js +146 -165
  465. package/test/unit/spec/meeting-info/meetinginfov2.js +268 -74
  466. package/test/unit/spec/meeting-info/request.js +7 -9
  467. package/test/unit/spec/meeting-info/util.js +11 -12
  468. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  469. package/test/unit/spec/meetings/collection.js +15 -1
  470. package/test/unit/spec/meetings/index.js +1052 -329
  471. package/test/unit/spec/meetings/utils.js +163 -14
  472. package/test/unit/spec/member/index.js +24 -1
  473. package/test/unit/spec/member/util.js +359 -32
  474. package/test/unit/spec/members/index.js +402 -54
  475. package/test/unit/spec/members/request.js +76 -20
  476. package/test/unit/spec/members/utils.js +191 -4
  477. package/test/unit/spec/metrics/index.js +46 -20
  478. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  479. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  480. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  481. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  482. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  483. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  484. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  485. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  486. package/test/unit/spec/reachability/index.ts +176 -27
  487. package/test/unit/spec/reachability/request.js +66 -0
  488. package/test/unit/spec/reconnection-manager/index.js +62 -31
  489. package/test/unit/spec/recording-controller/index.js +231 -0
  490. package/test/unit/spec/recording-controller/util.js +102 -0
  491. package/test/unit/spec/roap/index.ts +21 -16
  492. package/test/unit/spec/roap/request.ts +217 -0
  493. package/test/unit/spec/roap/turnDiscovery.ts +93 -49
  494. package/test/unit/spec/stats-analyzer/index.js +116 -60
  495. package/test/utils/cmr.js +44 -42
  496. package/test/utils/constants.js +9 -0
  497. package/test/utils/integrationTestUtils.js +64 -0
  498. package/test/utils/testUtils.js +63 -99
  499. package/test/utils/webex-config.js +22 -18
  500. package/test/utils/webex-test-users.js +57 -50
  501. package/tsconfig.json +6 -0
  502. package/dist/media/internal-media-core-wrapper.js +0 -22
  503. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  504. package/dist/meeting/effectsState.js +0 -334
  505. package/dist/meeting/effectsState.js.map +0 -1
  506. package/dist/multistream/multistreamMedia.js +0 -116
  507. package/dist/multistream/multistreamMedia.js.map +0 -1
  508. package/src/index.js +0 -15
  509. package/src/media/internal-media-core-wrapper.ts +0 -9
  510. package/src/meeting/effectsState.ts +0 -211
  511. package/src/multistream/multistreamMedia.ts +0 -92
  512. 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;
@@ -0,0 +1,104 @@
1
+ import {Reaction, ReactionServerType, SkinTone, SkinToneType} from './reactions.type';
2
+
3
+ const Reactions: Record<ReactionServerType, Reaction> = {
4
+ smile: {
5
+ type: 'smile',
6
+ codepoints: '1F642',
7
+ shortcodes: ':slightly_smiling_face:',
8
+ },
9
+ sad: {
10
+ type: 'sad',
11
+ codepoints: '1F625',
12
+ shortcodes: ':sad_but_relieved_face:',
13
+ },
14
+ wow: {
15
+ type: 'wow',
16
+ codepoints: '1F62E',
17
+ shortcodes: ':open_mouth:',
18
+ },
19
+ haha: {
20
+ type: 'haha',
21
+ codepoints: '1F603',
22
+ shortcodes: ':smiley:',
23
+ },
24
+ celebrate: {
25
+ type: 'celebrate',
26
+ codepoints: '1F389',
27
+ shortcodes: ':party_popper:',
28
+ },
29
+ clap: {
30
+ type: 'clap',
31
+ codepoints: '1F44F',
32
+ shortcodes: ':clap:',
33
+ },
34
+ thumb_up: {
35
+ type: 'thumb_up',
36
+ codepoints: '1F44D',
37
+ shortcodes: ':thumbsup:',
38
+ },
39
+ thumb_down: {
40
+ type: 'thumb_down',
41
+ codepoints: '1F44E',
42
+ shortcodes: ':thumbsdown:',
43
+ },
44
+ heart: {
45
+ type: 'heart',
46
+ codepoints: '2764',
47
+ shortcodes: ':heart:',
48
+ },
49
+ fire: {
50
+ type: 'fire',
51
+ codepoints: '1F525',
52
+ shortcodes: ':fire:',
53
+ },
54
+ prayer: {
55
+ type: 'prayer',
56
+ codepoints: '1F64F',
57
+ shortcodes: ':pray:',
58
+ },
59
+ speed_up: {
60
+ type: 'speed_up',
61
+ codepoints: '1F407',
62
+ shortcodes: ':rabbit:',
63
+ },
64
+ slow_down: {
65
+ type: 'slow_down',
66
+ codepoints: '1F422',
67
+ shortcodes: ':turtle:',
68
+ },
69
+ };
70
+
71
+ const SkinTones: Record<SkinToneType, SkinTone> = {
72
+ normal: {
73
+ type: 'normal_skin_tone',
74
+ codepoints: '',
75
+ shortcodes: '',
76
+ },
77
+ light: {
78
+ type: 'light_skin_tone',
79
+ codepoints: '1F3FB',
80
+ shortcodes: ':skin-tone-2:',
81
+ },
82
+ medium_light: {
83
+ type: 'medium_light_skin_tone',
84
+ codepoints: '1F3FC',
85
+ shortcodes: ':skin-tone-3:',
86
+ },
87
+ medium: {
88
+ type: 'medium_skin_tone',
89
+ codepoints: '1F3FD',
90
+ shortcodes: ':skin-tone-4:',
91
+ },
92
+ medium_dark: {
93
+ type: 'medium_dark_skin_tone',
94
+ codepoints: '1F3FE',
95
+ shortcodes: ':skin-tone-5:',
96
+ },
97
+ dark: {
98
+ type: 'dark_skin_tone',
99
+ codepoints: '1F3FF',
100
+ shortcodes: ':skin-tone-6:',
101
+ },
102
+ };
103
+
104
+ export {Reactions, SkinTones};