@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.20

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 (365) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +116 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/index.js +226 -0
  8. package/dist/breakouts/index.js.map +1 -0
  9. package/dist/common/browser-detection.js +1 -20
  10. package/dist/common/browser-detection.js.map +1 -1
  11. package/dist/common/collection.js +5 -20
  12. package/dist/common/collection.js.map +1 -1
  13. package/dist/common/config.js +0 -7
  14. package/dist/common/config.js.map +1 -1
  15. package/dist/common/errors/captcha-error.js +10 -24
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.js +11 -24
  18. package/dist/common/errors/intent-to-join.js.map +1 -1
  19. package/dist/common/errors/join-meeting.js +12 -25
  20. package/dist/common/errors/join-meeting.js.map +1 -1
  21. package/dist/common/errors/media.js +10 -24
  22. package/dist/common/errors/media.js.map +1 -1
  23. package/dist/common/errors/parameter.js +5 -33
  24. package/dist/common/errors/parameter.js.map +1 -1
  25. package/dist/common/errors/password-error.js +10 -24
  26. package/dist/common/errors/password-error.js.map +1 -1
  27. package/dist/common/errors/permission.js +9 -23
  28. package/dist/common/errors/permission.js.map +1 -1
  29. package/dist/common/errors/reconnection-in-progress.js +0 -17
  30. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  31. package/dist/common/errors/reconnection.js +10 -24
  32. package/dist/common/errors/reconnection.js.map +1 -1
  33. package/dist/common/errors/stats.js +10 -24
  34. package/dist/common/errors/stats.js.map +1 -1
  35. package/dist/common/errors/webex-errors.js +6 -41
  36. package/dist/common/errors/webex-errors.js.map +1 -1
  37. package/dist/common/errors/webex-meetings-error.js +5 -25
  38. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  39. package/dist/common/events/events-scope.js +0 -22
  40. package/dist/common/events/events-scope.js.map +1 -1
  41. package/dist/common/events/events.js +0 -23
  42. package/dist/common/events/events.js.map +1 -1
  43. package/dist/common/events/trigger-proxy.js +0 -12
  44. package/dist/common/events/trigger-proxy.js.map +1 -1
  45. package/dist/common/events/util.js +0 -15
  46. package/dist/common/events/util.js.map +1 -1
  47. package/dist/common/logs/logger-config.js +0 -4
  48. package/dist/common/logs/logger-config.js.map +1 -1
  49. package/dist/common/logs/logger-proxy.js +1 -8
  50. package/dist/common/logs/logger-proxy.js.map +1 -1
  51. package/dist/common/logs/request.js +37 -60
  52. package/dist/common/logs/request.js.map +1 -1
  53. package/dist/common/queue.js +4 -14
  54. package/dist/common/queue.js.map +1 -1
  55. package/dist/config.js +6 -6
  56. package/dist/config.js.map +1 -1
  57. package/dist/constants.js +88 -46
  58. package/dist/constants.js.map +1 -1
  59. package/dist/index.js +1 -17
  60. package/dist/index.js.map +1 -1
  61. package/dist/locus-info/controlsUtils.js +12 -29
  62. package/dist/locus-info/controlsUtils.js.map +1 -1
  63. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  64. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  65. package/dist/locus-info/fullState.js +0 -15
  66. package/dist/locus-info/fullState.js.map +1 -1
  67. package/dist/locus-info/hostUtils.js +4 -12
  68. package/dist/locus-info/hostUtils.js.map +1 -1
  69. package/dist/locus-info/index.js +184 -190
  70. package/dist/locus-info/index.js.map +1 -1
  71. package/dist/locus-info/infoUtils.js +3 -37
  72. package/dist/locus-info/infoUtils.js.map +1 -1
  73. package/dist/locus-info/mediaSharesUtils.js +12 -38
  74. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  75. package/dist/locus-info/parser.js +92 -118
  76. package/dist/locus-info/parser.js.map +1 -1
  77. package/dist/locus-info/selfUtils.js +34 -91
  78. package/dist/locus-info/selfUtils.js.map +1 -1
  79. package/dist/media/index.js +67 -111
  80. package/dist/media/index.js.map +1 -1
  81. package/dist/media/properties.js +80 -114
  82. package/dist/media/properties.js.map +1 -1
  83. package/dist/media/util.js +2 -9
  84. package/dist/media/util.js.map +1 -1
  85. package/dist/mediaQualityMetrics/config.js +10 -12
  86. package/dist/mediaQualityMetrics/config.js.map +1 -1
  87. package/dist/meeting/effectsState.js +125 -190
  88. package/dist/meeting/effectsState.js.map +1 -1
  89. package/dist/meeting/in-meeting-actions.js +5 -14
  90. package/dist/meeting/in-meeting-actions.js.map +1 -1
  91. package/dist/meeting/index.js +1692 -1925
  92. package/dist/meeting/index.js.map +1 -1
  93. package/dist/meeting/muteState.js +36 -77
  94. package/dist/meeting/muteState.js.map +1 -1
  95. package/dist/meeting/request.js +224 -230
  96. package/dist/meeting/request.js.map +1 -1
  97. package/dist/meeting/request.type.js +7 -0
  98. package/dist/meeting/request.type.js.map +1 -0
  99. package/dist/meeting/state.js +21 -31
  100. package/dist/meeting/state.js.map +1 -1
  101. package/dist/meeting/util.js +43 -215
  102. package/dist/meeting/util.js.map +1 -1
  103. package/dist/meeting-info/collection.js +6 -25
  104. package/dist/meeting-info/collection.js.map +1 -1
  105. package/dist/meeting-info/index.js +14 -32
  106. package/dist/meeting-info/index.js.map +1 -1
  107. package/dist/meeting-info/meeting-info-v2.js +193 -268
  108. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  109. package/dist/meeting-info/request.js +3 -15
  110. package/dist/meeting-info/request.js.map +1 -1
  111. package/dist/meeting-info/util.js +98 -183
  112. package/dist/meeting-info/util.js.map +1 -1
  113. package/dist/meeting-info/utilv2.js +137 -228
  114. package/dist/meeting-info/utilv2.js.map +1 -1
  115. package/dist/meetings/collection.js +5 -20
  116. package/dist/meetings/collection.js.map +1 -1
  117. package/dist/meetings/index.js +490 -560
  118. package/dist/meetings/index.js.map +1 -1
  119. package/dist/meetings/request.js +24 -41
  120. package/dist/meetings/request.js.map +1 -1
  121. package/dist/meetings/util.js +99 -155
  122. package/dist/meetings/util.js.map +1 -1
  123. package/dist/member/index.js +78 -86
  124. package/dist/member/index.js.map +1 -1
  125. package/dist/member/util.js +31 -68
  126. package/dist/member/util.js.map +1 -1
  127. package/dist/members/collection.js +3 -12
  128. package/dist/members/collection.js.map +1 -1
  129. package/dist/members/index.js +93 -200
  130. package/dist/members/index.js.map +1 -1
  131. package/dist/members/request.js +16 -39
  132. package/dist/members/request.js.map +1 -1
  133. package/dist/members/util.js +9 -38
  134. package/dist/members/util.js.map +1 -1
  135. package/dist/metrics/config.js +0 -2
  136. package/dist/metrics/config.js.map +1 -1
  137. package/dist/metrics/constants.js +1 -2
  138. package/dist/metrics/constants.js.map +1 -1
  139. package/dist/metrics/index.js +55 -135
  140. package/dist/metrics/index.js.map +1 -1
  141. package/dist/multistream/mediaRequestManager.js +57 -32
  142. package/dist/multistream/mediaRequestManager.js.map +1 -1
  143. package/dist/multistream/multistreamMedia.js +15 -21
  144. package/dist/multistream/multistreamMedia.js.map +1 -1
  145. package/dist/multistream/receiveSlot.js +10 -50
  146. package/dist/multistream/receiveSlot.js.map +1 -1
  147. package/dist/multistream/receiveSlotManager.js +45 -82
  148. package/dist/multistream/receiveSlotManager.js.map +1 -1
  149. package/dist/multistream/remoteMedia.js +18 -58
  150. package/dist/multistream/remoteMedia.js.map +1 -1
  151. package/dist/multistream/remoteMediaGroup.js +6 -40
  152. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  153. package/dist/multistream/remoteMediaManager.js +362 -416
  154. package/dist/multistream/remoteMediaManager.js.map +1 -1
  155. package/dist/networkQualityMonitor/index.js +36 -57
  156. package/dist/networkQualityMonitor/index.js.map +1 -1
  157. package/dist/personal-meeting-room/index.js +21 -45
  158. package/dist/personal-meeting-room/index.js.map +1 -1
  159. package/dist/personal-meeting-room/request.js +1 -31
  160. package/dist/personal-meeting-room/request.js.map +1 -1
  161. package/dist/personal-meeting-room/util.js +0 -13
  162. package/dist/personal-meeting-room/util.js.map +1 -1
  163. package/dist/reachability/index.js +138 -182
  164. package/dist/reachability/index.js.map +1 -1
  165. package/dist/reachability/request.js +3 -18
  166. package/dist/reachability/request.js.map +1 -1
  167. package/dist/reactions/constants.js +13 -0
  168. package/dist/reactions/constants.js.map +1 -0
  169. package/dist/reactions/reactions.js +109 -0
  170. package/dist/reactions/reactions.js.map +1 -0
  171. package/dist/reactions/reactions.type.js +36 -0
  172. package/dist/reactions/reactions.type.js.map +1 -0
  173. package/dist/reconnection-manager/index.js +322 -455
  174. package/dist/reconnection-manager/index.js.map +1 -1
  175. package/dist/recording-controller/enums.js +17 -0
  176. package/dist/recording-controller/enums.js.map +1 -0
  177. package/dist/recording-controller/index.js +343 -0
  178. package/dist/recording-controller/index.js.map +1 -0
  179. package/dist/recording-controller/util.js +63 -0
  180. package/dist/recording-controller/util.js.map +1 -0
  181. package/dist/roap/index.js +39 -64
  182. package/dist/roap/index.js.map +1 -1
  183. package/dist/roap/request.js +94 -113
  184. package/dist/roap/request.js.map +1 -1
  185. package/dist/roap/turnDiscovery.js +85 -94
  186. package/dist/roap/turnDiscovery.js.map +1 -1
  187. package/dist/statsAnalyzer/global.js +0 -2
  188. package/dist/statsAnalyzer/global.js.map +1 -1
  189. package/dist/statsAnalyzer/index.js +85 -175
  190. package/dist/statsAnalyzer/index.js.map +1 -1
  191. package/dist/statsAnalyzer/mqaUtil.js +72 -53
  192. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  193. package/dist/transcription/index.js +22 -47
  194. package/dist/transcription/index.js.map +1 -1
  195. package/internal-README.md +7 -6
  196. package/package.json +25 -20
  197. package/src/breakouts/README.md +190 -0
  198. package/src/breakouts/breakout.ts +110 -0
  199. package/src/breakouts/collection.ts +19 -0
  200. package/src/breakouts/index.ts +225 -0
  201. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  202. package/src/common/collection.ts +9 -7
  203. package/src/common/{config.js → config.ts} +1 -1
  204. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  205. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  206. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  207. package/src/common/errors/{media.js → media.ts} +11 -7
  208. package/src/common/errors/parameter.ts +11 -7
  209. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  210. package/src/common/errors/{permission.js → permission.ts} +10 -6
  211. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  212. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  213. package/src/common/errors/{stats.js → stats.ts} +11 -7
  214. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  215. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  216. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  217. package/src/common/events/{events.js → events.ts} +5 -1
  218. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  219. package/src/common/events/{util.js → util.ts} +2 -3
  220. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  221. package/src/common/logs/logger-proxy.ts +44 -0
  222. package/src/common/logs/{request.js → request.ts} +22 -9
  223. package/src/common/queue.ts +1 -2
  224. package/src/{config.js → config.ts} +17 -12
  225. package/src/constants.ts +40 -1
  226. package/src/index.js +1 -1
  227. package/src/locus-info/controlsUtils.ts +114 -0
  228. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  229. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  230. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  231. package/src/locus-info/{index.js → index.ts} +148 -64
  232. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  233. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  234. package/src/locus-info/{parser.js → parser.ts} +67 -79
  235. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  236. package/src/media/{index.js → index.ts} +181 -131
  237. package/src/media/{properties.js → properties.ts} +47 -28
  238. package/src/media/{util.js → util.ts} +2 -2
  239. package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
  240. package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
  241. package/src/meeting/in-meeting-actions.ts +15 -3
  242. package/src/meeting/{index.js → index.ts} +2263 -1427
  243. package/src/meeting/{muteState.js → muteState.ts} +78 -42
  244. package/src/meeting/{request.js → request.ts} +292 -142
  245. package/src/meeting/request.type.ts +13 -0
  246. package/src/meeting/{state.js → state.ts} +50 -35
  247. package/src/meeting/{util.js → util.ts} +112 -115
  248. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  249. package/src/meeting-info/{index.js → index.ts} +42 -36
  250. package/src/meeting-info/meeting-info-v2.ts +273 -0
  251. package/src/meeting-info/{request.js → request.ts} +14 -4
  252. package/src/meeting-info/{util.js → util.ts} +60 -51
  253. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  254. package/src/meetings/{collection.js → collection.ts} +6 -3
  255. package/src/meetings/index.ts +1159 -0
  256. package/src/meetings/{request.js → request.ts} +32 -25
  257. package/src/meetings/{util.js → util.ts} +34 -32
  258. package/src/member/{index.js → index.ts} +102 -56
  259. package/src/member/{util.js → util.ts} +52 -25
  260. package/src/members/{collection.js → collection.ts} +2 -2
  261. package/src/members/{index.js → index.ts} +219 -142
  262. package/src/members/{request.js → request.ts} +60 -16
  263. package/src/members/{util.js → util.ts} +50 -48
  264. package/src/metrics/{config.js → config.ts} +254 -83
  265. package/src/metrics/{constants.js → constants.ts} +0 -2
  266. package/src/metrics/{index.js → index.ts} +106 -74
  267. package/src/multistream/mediaRequestManager.ts +81 -15
  268. package/src/multistream/multistreamMedia.ts +5 -0
  269. package/src/multistream/receiveSlot.ts +18 -12
  270. package/src/multistream/receiveSlotManager.ts +23 -21
  271. package/src/multistream/remoteMedia.ts +15 -5
  272. package/src/multistream/remoteMediaGroup.ts +4 -3
  273. package/src/multistream/remoteMediaManager.ts +153 -37
  274. package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
  275. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  276. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  277. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  278. package/src/reachability/{index.js → index.ts} +99 -83
  279. package/src/reachability/request.ts +39 -33
  280. package/src/reactions/constants.ts +4 -0
  281. package/src/reactions/reactions.ts +104 -0
  282. package/src/reactions/reactions.type.ts +62 -0
  283. package/src/reconnection-manager/{index.js → index.ts} +195 -102
  284. package/src/recording-controller/enums.ts +8 -0
  285. package/src/recording-controller/index.ts +315 -0
  286. package/src/recording-controller/util.ts +58 -0
  287. package/src/roap/{index.js → index.ts} +73 -56
  288. package/src/roap/request.ts +157 -0
  289. package/src/roap/turnDiscovery.ts +77 -37
  290. package/src/statsAnalyzer/{global.js → global.ts} +30 -33
  291. package/src/statsAnalyzer/{index.js → index.ts} +468 -192
  292. package/src/statsAnalyzer/mqaUtil.ts +290 -0
  293. package/src/transcription/{index.js → index.ts} +46 -39
  294. package/test/integration/spec/journey.js +664 -463
  295. package/test/integration/spec/space-meeting.js +320 -206
  296. package/test/integration/spec/transcription.js +7 -8
  297. package/test/unit/spec/breakouts/breakout.ts +119 -0
  298. package/test/unit/spec/breakouts/collection.ts +15 -0
  299. package/test/unit/spec/breakouts/index.ts +293 -0
  300. package/test/unit/spec/common/browser-detection.js +9 -28
  301. package/test/unit/spec/fixture/locus.js +92 -90
  302. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  303. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  304. package/test/unit/spec/locus-info/index.js +104 -2
  305. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  306. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  307. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  308. package/test/unit/spec/locus-info/parser.js +3 -9
  309. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  310. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  311. package/test/unit/spec/media/index.ts +31 -47
  312. package/test/unit/spec/media/properties.ts +9 -9
  313. package/test/unit/spec/meeting/effectsState.js +39 -45
  314. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
  315. package/test/unit/spec/meeting/index.js +2017 -742
  316. package/test/unit/spec/meeting/muteState.js +42 -33
  317. package/test/unit/spec/meeting/request.js +115 -44
  318. package/test/unit/spec/meeting/utils.js +104 -171
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  320. package/test/unit/spec/meeting-info/request.js +7 -9
  321. package/test/unit/spec/meeting-info/util.js +11 -12
  322. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  323. package/test/unit/spec/meetings/collection.js +1 -1
  324. package/test/unit/spec/meetings/index.js +439 -257
  325. package/test/unit/spec/meetings/utils.js +14 -12
  326. package/test/unit/spec/member/index.js +0 -1
  327. package/test/unit/spec/member/util.js +31 -7
  328. package/test/unit/spec/members/index.js +104 -54
  329. package/test/unit/spec/members/request.js +29 -20
  330. package/test/unit/spec/members/utils.js +8 -5
  331. package/test/unit/spec/metrics/index.js +16 -21
  332. package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
  333. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  334. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  335. package/test/unit/spec/multistream/remoteMedia.ts +10 -2
  336. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  337. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  338. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  339. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  340. package/test/unit/spec/reachability/index.ts +58 -26
  341. package/test/unit/spec/reconnection-manager/index.js +102 -9
  342. package/test/unit/spec/recording-controller/index.js +231 -0
  343. package/test/unit/spec/recording-controller/util.js +102 -0
  344. package/test/unit/spec/roap/index.ts +2 -1
  345. package/test/unit/spec/roap/request.ts +114 -0
  346. package/test/unit/spec/roap/turnDiscovery.ts +64 -45
  347. package/test/unit/spec/stats-analyzer/index.js +27 -22
  348. package/test/utils/cmr.js +44 -42
  349. package/test/utils/testUtils.js +83 -74
  350. package/test/utils/webex-config.js +18 -18
  351. package/test/utils/webex-test-users.js +54 -50
  352. package/tsconfig.json +6 -0
  353. package/dist/media/internal-media-core-wrapper.js +0 -22
  354. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  355. package/dist/peer-connection-manager/util.js +0 -124
  356. package/dist/peer-connection-manager/util.js.map +0 -1
  357. package/src/common/logs/logger-proxy.js +0 -33
  358. package/src/locus-info/controlsUtils.js +0 -102
  359. package/src/media/internal-media-core-wrapper.ts +0 -9
  360. package/src/meeting-info/meeting-info-v2.js +0 -255
  361. package/src/meetings/index.js +0 -1015
  362. package/src/peer-connection-manager/util.ts +0 -117
  363. package/src/roap/request.js +0 -127
  364. package/src/statsAnalyzer/mqaUtil.js +0 -173
  365. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
@@ -1,11 +1,8 @@
1
+ // @ts-ignore
1
2
  import {StatelessWebexPlugin} from '@webex/webex-core';
2
3
 
3
4
  import LoggerProxy from '../common/logs/logger-proxy';
4
- import {
5
- HTTP_VERBS,
6
- API,
7
- RESOURCE
8
- } from '../constants';
5
+ import {HTTP_VERBS, API, RESOURCE} from '../constants';
9
6
 
10
7
  /**
11
8
  * @class MeetingRequest
@@ -14,15 +11,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
14
11
  /**
15
12
  * get all the active meetings for the user
16
13
  * @returns {Array} return locus array
17
- */
14
+ */
18
15
  getActiveMeetings() {
16
+ // @ts-ignore
19
17
  return this.request({
20
18
  api: API.LOCUS,
21
- resource: RESOURCE.LOCI
19
+ resource: RESOURCE.LOCI,
22
20
  })
23
21
  .then((res) => this.determineRedirections(res.body))
24
22
  .catch((error) => {
25
- LoggerProxy.logger.error(`Meetings:request#getActiveMeetings --> failed to get locus details, ${error}`);
23
+ LoggerProxy.logger.error(
24
+ `Meetings:request#getActiveMeetings --> failed to get locus details, ${error}`
25
+ );
26
26
  });
27
27
  }
28
28
 
@@ -31,18 +31,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
31
31
  * @returns {Promise<object>} geoHintInfo
32
32
  */
33
33
  fetchGeoHint() {
34
+ // @ts-ignore
34
35
  return this.webex.internal.services.fetchClientRegionInfo();
35
36
  }
36
37
 
37
38
  /**
38
39
  * get user meeting preference information
39
40
  * @returns {Promise<object>} getMeetingPreferences
40
- */
41
+ */
41
42
  getMeetingPreferences() {
43
+ // @ts-ignore
42
44
  return this.webex.internal.services.getMeetingPreferences();
43
45
  }
44
46
 
45
-
46
47
  // locus federation, determines and populate locus if the responseBody has remote URLs to fetch locus details
47
48
 
48
49
  /**
@@ -50,23 +51,29 @@ export default class MeetingRequest extends StatelessWebexPlugin {
50
51
  * @param {object} responseBody determine the locus and fetch them if a remoteUrl is given
51
52
  * @returns {Promise} returns locusObject array
52
53
  */
53
- determineRedirections(responseBody) {
54
+ determineRedirections(responseBody: any) {
54
55
  if (responseBody.remoteLocusClusterUrls && responseBody.remoteLocusClusterUrls.length) {
55
- return Promise.all(responseBody.remoteLocusClusterUrls.map((url) => this.request({
56
- method: HTTP_VERBS.GET,
57
- url,
58
- runWhitelistedDomains: true // allows auth token for whitelisted domain
59
- })
60
- .then((res) => {
61
- responseBody.loci = responseBody.loci.concat(res.body.loci);
62
- responseBody.locusUrls = responseBody.locusUrls.concat(res.body.locusUrls);
56
+ return Promise.all(
57
+ responseBody.remoteLocusClusterUrls.map((url) =>
58
+ // @ts-ignore
59
+ this.request({
60
+ method: HTTP_VERBS.GET,
61
+ url,
62
+ runWhitelistedDomains: true, // allows auth token for whitelisted domain
63
+ })
64
+ .then((res) => {
65
+ responseBody.loci = responseBody.loci.concat(res.body.loci);
66
+ responseBody.locusUrls = responseBody.locusUrls.concat(res.body.locusUrls);
63
67
 
64
- return Promise.resolve(responseBody);
65
- })
66
- .catch((error) => {
67
- LoggerProxy.logger.error(`Meetings:request#determineRedirections --> failed to get locus details from url: ${url}, reason: ${error}`);
68
- })))
69
- .then(() => Promise.resolve(responseBody));
68
+ return Promise.resolve(responseBody);
69
+ })
70
+ .catch((error) => {
71
+ LoggerProxy.logger.error(
72
+ `Meetings:request#determineRedirections --> failed to get locus details from url: ${url}, reason: ${error}`
73
+ );
74
+ })
75
+ )
76
+ ).then(() => Promise.resolve(responseBody));
70
77
  }
71
78
 
72
79
  return Promise.resolve(responseBody);
@@ -7,30 +7,30 @@ import {
7
7
  LOCUSEVENT,
8
8
  CORRELATION_ID,
9
9
  EVENT_TRIGGERS,
10
- ROAP
10
+ ROAP,
11
11
  } from '../constants';
12
12
  import LoggerProxy from '../common/logs/logger-proxy';
13
13
  import Trigger from '../common/events/trigger-proxy';
14
14
 
15
15
  /**
16
- * Meetings Media Codec Missing Event
17
- * Emitted when H.264 codec is not
18
- * found in the browser.
19
- * @event media:codec:missing
20
- * @instance
21
- * @memberof MeetingsUtil
22
- */
16
+ * Meetings Media Codec Missing Event
17
+ * Emitted when H.264 codec is not
18
+ * found in the browser.
19
+ * @event media:codec:missing
20
+ * @instance
21
+ * @memberof MeetingsUtil
22
+ */
23
23
 
24
24
  /**
25
- * Meetings Media Codec Loaded Event
26
- * Emitted when H.264 codec has been
27
- * loaded in the browser.
28
- * @event media:codec:loaded
29
- * @instance
30
- * @memberof MeetingsUtil
31
- */
25
+ * Meetings Media Codec Loaded Event
26
+ * Emitted when H.264 codec has been
27
+ * loaded in the browser.
28
+ * @event media:codec:loaded
29
+ * @instance
30
+ * @memberof MeetingsUtil
31
+ */
32
32
 
33
- const MeetingsUtil = {};
33
+ const MeetingsUtil: any = {};
34
34
 
35
35
  MeetingsUtil.getMeetingAddedType = (type) => (type === _LOCUS_ID_ ? _INCOMING_ : _CREATED_);
36
36
 
@@ -42,23 +42,20 @@ MeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {
42
42
  const meeting = meetingCollection.getByKey(CORRELATION_ID, data.correlationId);
43
43
 
44
44
  if (meeting) {
45
- const {
46
- seq, messageType, tieBreaker, errorType, errorCause
47
- } = data.message;
45
+ const {seq, messageType, tieBreaker, errorType, errorCause} = data.message;
48
46
 
49
47
  if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
50
48
  // turn discovery is not part of normal roap protocol and so we are not handling it
51
49
  // through the usual roap state machine
52
50
  meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message);
53
- }
54
- else {
51
+ } else {
55
52
  const roapMessage = {
56
53
  seq,
57
54
  messageType,
58
55
  sdp: data.message.sdps?.length > 0 ? data.message.sdps[0] : undefined,
59
56
  tieBreaker,
60
57
  errorType,
61
- errorCause
58
+ errorCause,
62
59
  };
63
60
 
64
61
  meeting.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);
@@ -116,15 +113,15 @@ MeetingsUtil.hasH264Codec = async () => {
116
113
  hasCodec = true;
117
114
  }
118
115
  pc.close();
119
- }
120
- catch (error) {
121
- LoggerProxy.logger.warn('Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.');
116
+ } catch (error) {
117
+ LoggerProxy.logger.warn(
118
+ 'Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.'
119
+ );
122
120
  }
123
121
 
124
122
  return hasCodec;
125
123
  };
126
124
 
127
-
128
125
  /**
129
126
  * Notifies the user whether or not the H.264
130
127
  * codec is present. Will continuously check
@@ -136,13 +133,16 @@ MeetingsUtil.hasH264Codec = async () => {
136
133
  * @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events
137
134
  * @returns {undefined}
138
135
  */
139
- MeetingsUtil.checkH264Support = async function checkH264Support(options) {
136
+ MeetingsUtil.checkH264Support = async function checkH264Support(options: {
137
+ firstChecked: number;
138
+ disableNotifications: boolean;
139
+ }) {
140
140
  const {hasH264Codec} = MeetingsUtil;
141
141
  const {firstChecked, disableNotifications} = options || {};
142
142
  const delay = 5e3; // ms
143
143
  const maxDuration = 3e5; // ms
144
- const shouldTrigger = (firstChecked === undefined);
145
- const shouldStopChecking = firstChecked && (Date.now() - firstChecked) >= maxDuration;
144
+ const shouldTrigger = firstChecked === undefined;
145
+ const shouldStopChecking = firstChecked && Date.now() - firstChecked >= maxDuration;
146
146
 
147
147
  // Disable notifications and start H.264 download only
148
148
  if (disableNotifications) {
@@ -157,7 +157,7 @@ MeetingsUtil.checkH264Support = async function checkH264Support(options) {
157
157
  this,
158
158
  {
159
159
  file: 'meetings/util',
160
- function: 'checkH264Support'
160
+ function: 'checkH264Support',
161
161
  },
162
162
  EVENT_TRIGGERS.MEDIA_CODEC_LOADED
163
163
  );
@@ -168,7 +168,9 @@ MeetingsUtil.checkH264Support = async function checkH264Support(options) {
168
168
 
169
169
  // Stop checking if past the timelimit
170
170
  if (shouldStopChecking) {
171
- LoggerProxy.logger.error('Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.');
171
+ LoggerProxy.logger.error(
172
+ 'Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.'
173
+ );
172
174
 
173
175
  return;
174
176
  }
@@ -179,7 +181,7 @@ MeetingsUtil.checkH264Support = async function checkH264Support(options) {
179
181
  this,
180
182
  {
181
183
  file: 'meetings/util',
182
- function: 'checkH264Support'
184
+ function: 'checkH264Support',
183
185
  },
184
186
  EVENT_TRIGGERS.MEDIA_CODEC_MISSING
185
187
  );
@@ -1,19 +1,38 @@
1
1
  /*!
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
- import {
5
- MEETINGS,
6
- _IN_LOBBY_,
7
- _NOT_IN_MEETING_,
8
- _IN_MEETING_
9
- } from '../constants';
4
+ import {MEETINGS, _IN_LOBBY_, _NOT_IN_MEETING_, _IN_MEETING_} from '../constants';
10
5
 
11
- import MemberUtil from './util.js';
6
+ import MemberUtil from './util';
12
7
 
13
8
  /**
14
9
  * @class Member
15
10
  */
16
11
  export default class Member {
12
+ associatedUser: any;
13
+ id: any;
14
+ isAudioMuted: any;
15
+ isContentSharing: any;
16
+ isDevice: any;
17
+ isGuest: any;
18
+ isHandRaised: any;
19
+ isHost: any;
20
+ isInLobby: any;
21
+ isInMeeting: any;
22
+ isModerator: any;
23
+ isModeratorAssignmentProhibited: any;
24
+ isMutable: any;
25
+ isNotAdmitted: any;
26
+ isRecording: any;
27
+ isRemovable: any;
28
+ isSelf: any;
29
+ isUser: any;
30
+ isVideoMuted: any;
31
+ name: any;
32
+ participant: any;
33
+ status: any;
34
+ supportsBreakouts: boolean;
35
+ type: any;
17
36
  namespace = MEETINGS;
18
37
 
19
38
  /**
@@ -26,14 +45,24 @@ export default class Member {
26
45
  * @returns {Member}
27
46
  * @memberof Member
28
47
  */
29
- constructor(participant, options = {}) {
48
+ constructor(
49
+ participant: object,
50
+ options:
51
+ | {
52
+ selfId: string;
53
+ hostId: string;
54
+ contentSharingId: string;
55
+ type: string;
56
+ }
57
+ | any = {}
58
+ ) {
30
59
  /**
31
60
  * The server participant object
32
61
  * @instance
33
62
  * @type {Object}
34
63
  * @private
35
64
  * @memberof Member
36
- */
65
+ */
37
66
  this.participant = null;
38
67
  /**
39
68
  * The member id
@@ -41,7 +70,7 @@ export default class Member {
41
70
  * @type {String}
42
71
  * @public
43
72
  * @memberof Member
44
- */
73
+ */
45
74
  this.id = null;
46
75
  /**
47
76
  * The member name
@@ -49,34 +78,41 @@ export default class Member {
49
78
  * @type {String}
50
79
  * @public
51
80
  * @memberof Member
52
- */
81
+ */
53
82
  this.name = null;
54
83
  /**
55
84
  * @instance
56
85
  * @type {Boolean}
57
86
  * @public
58
87
  * @memberof Member
59
- */
88
+ */
60
89
  this.isAudioMuted = null;
61
90
  /**
62
91
  * @instance
63
92
  * @type {Boolean}
64
93
  * @public
65
94
  * @memberof Member
66
- */
95
+ */
67
96
  this.isVideoMuted = null;
68
97
  /**
69
98
  * @instance
70
99
  * @type {Boolean}
71
100
  * @public
72
101
  * @memberof Member
73
- */
102
+ */
74
103
  this.isHandRaised = null;
75
104
  /**
76
- * @instance
77
- * @type {Boolean}
78
- * @public
79
- * @memberof Member
105
+ * @instance
106
+ * @type {Boolean}
107
+ * @public
108
+ * @memberof Member
109
+ */
110
+ this.supportsBreakouts = null;
111
+ /**
112
+ * @instance
113
+ * @type {Boolean}
114
+ * @public
115
+ * @memberof Member
80
116
  */
81
117
  this.isSelf = null;
82
118
  /**
@@ -84,113 +120,113 @@ export default class Member {
84
120
  * @type {Boolean}
85
121
  * @public
86
122
  * @memberof Member
87
- */
123
+ */
88
124
  this.isHost = null;
89
125
  /**
90
126
  * @instance
91
127
  * @type {Boolean}
92
128
  * @public
93
129
  * @memberof Member
94
- */
130
+ */
95
131
  this.isGuest = null;
96
132
  /**
97
133
  * @instance
98
134
  * @type {Boolean}
99
135
  * @public
100
136
  * @memberof Member
101
- */
137
+ */
102
138
  this.isInLobby = null;
103
139
  /**
104
140
  * @instance
105
141
  * @type {Boolean}
106
142
  * @public
107
143
  * @memberof Member
108
- */
144
+ */
109
145
  this.isInMeeting = null;
110
146
  /**
111
147
  * @instance
112
148
  * @type {Boolean}
113
149
  * @public
114
150
  * @memberof Member
115
- */
151
+ */
116
152
  this.isNotAdmitted = null;
117
153
  /**
118
154
  * @instance
119
155
  * @type {Boolean}
120
156
  * @public
121
157
  * @memberof Member
122
- */
158
+ */
123
159
  this.isContentSharing = null;
124
160
  /**
125
161
  * @instance
126
162
  * @type {Boolean}
127
163
  * @public
128
164
  * @memberof Member
129
- */
165
+ */
130
166
  this.status = null;
131
167
  /**
132
168
  * @instance
133
169
  * @type {Boolean}
134
170
  * @public
135
171
  * @memberof Member
136
- */
172
+ */
137
173
  this.isDevice = null;
138
174
  /**
139
175
  * @instance
140
176
  * @type {Boolean}
141
177
  * @public
142
178
  * @memberof Member
143
- */
179
+ */
144
180
  this.isUser = null;
145
181
  /**
146
- * Is this member associated to another user by way of pairing (typical of devices)
182
+ * Is this member associated to another user by way of pairing (typical of devices)
147
183
  * @instance
148
184
  * @type {String}
149
185
  * @public
150
186
  * @memberof Member
151
- */
187
+ */
152
188
  this.associatedUser = null;
153
189
  /**
154
190
  * @instance
155
191
  * @type {Boolean}
156
192
  * @public
157
193
  * @memberof Member
158
- */
194
+ */
159
195
  this.isRecording = null;
160
196
  /**
161
197
  * @instance
162
198
  * @type {Boolean}
163
199
  * @public
164
200
  * @memberof Member
165
- */
201
+ */
166
202
  this.isMutable = null;
167
203
  /**
168
204
  * @instance
169
205
  * @type {Boolean}
170
206
  * @public
171
207
  * @memberof Member
172
- */
208
+ */
173
209
  this.isRemovable = null;
174
210
  /**
175
211
  * @instance
176
212
  * @type {String}
177
213
  * @private
178
214
  * @memberof Member
179
- */
215
+ */
180
216
  this.type = null;
181
217
  /**
182
218
  * @instance
183
219
  * @type {Boolean}
184
220
  * @public
185
221
  * @memberof Member
186
- */
222
+ */
187
223
  this.isModerator = null;
188
224
  /**
189
225
  * @instance
190
226
  * @type {Boolean}
191
227
  * @public
192
228
  * @memberof Member
193
- */
229
+ */
194
230
  this.isModeratorAssignmentProhibited = null;
195
231
  // TODO: more participant types
196
232
  // such as native client, web client, is a device, what type of phone, etc
@@ -206,7 +242,7 @@ export default class Member {
206
242
  * @private
207
243
  * @memberof Member
208
244
  */
209
- processParticipant(participant) {
245
+ private processParticipant(participant: object) {
210
246
  this.participant = participant;
211
247
  if (participant) {
212
248
  this.id = MemberUtil.extractId(participant);
@@ -214,11 +250,13 @@ export default class Member {
214
250
  this.isAudioMuted = MemberUtil.isAudioMuted(participant);
215
251
  this.isVideoMuted = MemberUtil.isVideoMuted(participant);
216
252
  this.isHandRaised = MemberUtil.isHandRaised(participant);
253
+ this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);
217
254
  this.isGuest = MemberUtil.isGuest(participant);
218
255
  this.isUser = MemberUtil.isUser(participant);
219
256
  this.isDevice = MemberUtil.isDevice(participant);
220
257
  this.isModerator = MemberUtil.isModerator(participant);
221
- this.isModeratorAssignmentProhibited = MemberUtil.isModeratorAssignmentProhibited(participant);
258
+ this.isModeratorAssignmentProhibited =
259
+ MemberUtil.isModeratorAssignmentProhibited(participant);
222
260
  this.processStatus(participant);
223
261
  // must be done last
224
262
  this.isNotAdmitted = MemberUtil.isNotAdmitted(participant, this.isGuest, this.status);
@@ -233,7 +271,7 @@ export default class Member {
233
271
  * @private
234
272
  * @memberof Member
235
273
  */
236
- processParticipantOptions(participant, options) {
274
+ private processParticipantOptions(participant: object, options: any) {
237
275
  if (participant && options) {
238
276
  this.processIsSelf(participant, options.selfId);
239
277
  this.processIsHost(participant, options.hostId);
@@ -249,11 +287,22 @@ export default class Member {
249
287
  * @private
250
288
  * @memberof Member
251
289
  */
252
- processMember() {
290
+ private processMember() {
253
291
  // must occur after self, guest, meeting, and type properties are calculated
254
- this.isRemovable = MemberUtil.isRemovable(this.isSelf, this.isGuest, this.isInMeeting, this.type);
292
+ this.isRemovable = MemberUtil.isRemovable(
293
+ this.isSelf,
294
+ this.isGuest,
295
+ this.isInMeeting,
296
+ this.type
297
+ );
255
298
  // must occur after self, device, meeting, mute status, and type properties are calculated
256
- this.isMutable = MemberUtil.isMutable(this.isSelf, this.isDevice, this.isInMeeting, this.isAudioMuted, this.type);
299
+ this.isMutable = MemberUtil.isMutable(
300
+ this.isSelf,
301
+ this.isDevice,
302
+ this.isInMeeting,
303
+ this.isAudioMuted,
304
+ this.type
305
+ );
257
306
  }
258
307
 
259
308
  /**
@@ -263,7 +312,7 @@ export default class Member {
263
312
  * @private
264
313
  * @memberof Member
265
314
  */
266
- processStatus(participant) {
315
+ private processStatus(participant: object) {
267
316
  this.status = MemberUtil.extractStatus(participant);
268
317
  switch (this.status) {
269
318
  case _IN_LOBBY_:
@@ -291,7 +340,7 @@ export default class Member {
291
340
  * @public
292
341
  * @memberof Member
293
342
  */
294
- setIsContentSharing(flag) {
343
+ public setIsContentSharing(flag: boolean) {
295
344
  this.isContentSharing = flag;
296
345
  }
297
346
 
@@ -302,7 +351,7 @@ export default class Member {
302
351
  * @public
303
352
  * @memberof Member
304
353
  */
305
- setIsHost(flag) {
354
+ public setIsHost(flag: boolean) {
306
355
  this.isHost = flag;
307
356
  }
308
357
 
@@ -313,7 +362,7 @@ export default class Member {
313
362
  * @public
314
363
  * @memberof Member
315
364
  */
316
- setIsSelf(flag) {
365
+ public setIsSelf(flag: boolean) {
317
366
  this.isSelf = flag;
318
367
  }
319
368
 
@@ -325,11 +374,10 @@ export default class Member {
325
374
  * @public
326
375
  * @memberof Member
327
376
  */
328
- processIsContentSharing(participant, sharingId) {
377
+ public processIsContentSharing(participant: object, sharingId: string) {
329
378
  if (MemberUtil.isUser(participant)) {
330
379
  this.isContentSharing = MemberUtil.isSame(participant, sharingId);
331
- }
332
- else if (MemberUtil.isDevice(participant)) {
380
+ } else if (MemberUtil.isDevice(participant)) {
333
381
  this.isContentSharing = MemberUtil.isAssociatedSame(participant, sharingId);
334
382
  }
335
383
  }
@@ -342,7 +390,7 @@ export default class Member {
342
390
  * @public
343
391
  * @memberof Member
344
392
  */
345
- processIsRecording(participant, recordingId) {
393
+ public processIsRecording(participant: object, recordingId: string) {
346
394
  this.isRecording = MemberUtil.isSame(participant, recordingId);
347
395
  }
348
396
 
@@ -354,11 +402,10 @@ export default class Member {
354
402
  * @private
355
403
  * @memberof Member
356
404
  */
357
- processIsSelf(participant, selfId) {
405
+ private processIsSelf(participant: object, selfId: string) {
358
406
  if (MemberUtil.isUser(participant)) {
359
407
  this.isSelf = MemberUtil.isSame(participant, selfId);
360
- }
361
- else if (MemberUtil.isDevice(participant)) {
408
+ } else if (MemberUtil.isDevice(participant)) {
362
409
  this.isSelf = MemberUtil.isAssociatedSame(participant, selfId);
363
410
  this.associatedUser = selfId;
364
411
  }
@@ -372,11 +419,10 @@ export default class Member {
372
419
  * @private
373
420
  * @memberof Member
374
421
  */
375
- processIsHost(participant, hostId) {
422
+ private processIsHost(participant: object, hostId: string) {
376
423
  if (MemberUtil.isUser(participant)) {
377
424
  this.isHost = MemberUtil.isSame(participant, hostId);
378
- }
379
- else if (MemberUtil.isDevice(participant)) {
425
+ } else if (MemberUtil.isDevice(participant)) {
380
426
  this.isHost = MemberUtil.isAssociatedSame(participant, hostId);
381
427
  }
382
428
  }
@@ -388,7 +434,7 @@ export default class Member {
388
434
  * @private
389
435
  * @memberof Member
390
436
  */
391
- processType(type) {
437
+ private processType(type: string) {
392
438
  this.type = type;
393
439
  }
394
440
  }