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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +137 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +546 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +48 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +109 -49
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +15 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +203 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +28 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +12 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +186 -192
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +34 -91
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +66 -153
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +13 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2141 -2210
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +59 -82
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +45 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +5 -20
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +490 -560
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +24 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +116 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +78 -86
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/util.js +31 -68
  138. package/dist/member/util.js.map +1 -1
  139. package/dist/members/collection.js +3 -12
  140. package/dist/members/collection.js.map +1 -1
  141. package/dist/members/index.js +95 -200
  142. package/dist/members/index.js.map +1 -1
  143. package/dist/members/request.js +16 -39
  144. package/dist/members/request.js.map +1 -1
  145. package/dist/members/util.js +9 -38
  146. package/dist/members/util.js.map +1 -1
  147. package/dist/metrics/config.js +1 -13
  148. package/dist/metrics/config.js.map +1 -1
  149. package/dist/metrics/constants.js +1 -6
  150. package/dist/metrics/constants.js.map +1 -1
  151. package/dist/metrics/index.js +54 -156
  152. package/dist/metrics/index.js.map +1 -1
  153. package/dist/multistream/mediaRequestManager.js +74 -52
  154. package/dist/multistream/mediaRequestManager.js.map +1 -1
  155. package/dist/multistream/receiveSlot.js +48 -65
  156. package/dist/multistream/receiveSlot.js.map +1 -1
  157. package/dist/multistream/receiveSlotManager.js +60 -82
  158. package/dist/multistream/receiveSlotManager.js.map +1 -1
  159. package/dist/multistream/remoteMedia.js +60 -76
  160. package/dist/multistream/remoteMedia.js.map +1 -1
  161. package/dist/multistream/remoteMediaGroup.js +6 -40
  162. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  163. package/dist/multistream/remoteMediaManager.js +360 -413
  164. package/dist/multistream/remoteMediaManager.js.map +1 -1
  165. package/dist/networkQualityMonitor/index.js +40 -59
  166. package/dist/networkQualityMonitor/index.js.map +1 -1
  167. package/dist/personal-meeting-room/index.js +21 -45
  168. package/dist/personal-meeting-room/index.js.map +1 -1
  169. package/dist/personal-meeting-room/request.js +1 -31
  170. package/dist/personal-meeting-room/request.js.map +1 -1
  171. package/dist/personal-meeting-room/util.js +0 -13
  172. package/dist/personal-meeting-room/util.js.map +1 -1
  173. package/dist/reachability/index.js +147 -183
  174. package/dist/reachability/index.js.map +1 -1
  175. package/dist/reachability/request.js +15 -23
  176. package/dist/reachability/request.js.map +1 -1
  177. package/dist/reactions/constants.js +13 -0
  178. package/dist/reactions/constants.js.map +1 -0
  179. package/dist/reactions/reactions.js +109 -0
  180. package/dist/reactions/reactions.js.map +1 -0
  181. package/dist/reactions/reactions.type.js +36 -0
  182. package/dist/reactions/reactions.type.js.map +1 -0
  183. package/dist/reconnection-manager/index.js +322 -456
  184. package/dist/reconnection-manager/index.js.map +1 -1
  185. package/dist/recording-controller/enums.js +17 -0
  186. package/dist/recording-controller/enums.js.map +1 -0
  187. package/dist/recording-controller/index.js +343 -0
  188. package/dist/recording-controller/index.js.map +1 -0
  189. package/dist/recording-controller/util.js +63 -0
  190. package/dist/recording-controller/util.js.map +1 -0
  191. package/dist/roap/index.js +48 -70
  192. package/dist/roap/index.js.map +1 -1
  193. package/dist/roap/request.js +143 -131
  194. package/dist/roap/request.js.map +1 -1
  195. package/dist/roap/turnDiscovery.js +91 -98
  196. package/dist/roap/turnDiscovery.js.map +1 -1
  197. package/dist/statsAnalyzer/global.js +1 -95
  198. package/dist/statsAnalyzer/global.js.map +1 -1
  199. package/dist/statsAnalyzer/index.js +361 -449
  200. package/dist/statsAnalyzer/index.js.map +1 -1
  201. package/dist/statsAnalyzer/mqaUtil.js +137 -81
  202. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  203. package/dist/transcription/index.js +22 -47
  204. package/dist/transcription/index.js.map +1 -1
  205. package/dist/types/breakouts/breakout.d.ts +8 -0
  206. package/dist/types/breakouts/collection.d.ts +5 -0
  207. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  208. package/dist/types/breakouts/index.d.ts +5 -0
  209. package/dist/types/breakouts/request.d.ts +22 -0
  210. package/dist/types/breakouts/utils.d.ts +8 -0
  211. package/dist/types/common/browser-detection.d.ts +9 -0
  212. package/dist/types/common/collection.d.ts +48 -0
  213. package/dist/types/common/config.d.ts +2 -0
  214. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  215. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  216. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  217. package/dist/types/common/errors/media.d.ts +15 -0
  218. package/dist/types/common/errors/parameter.d.ts +15 -0
  219. package/dist/types/common/errors/password-error.d.ts +15 -0
  220. package/dist/types/common/errors/permission.d.ts +14 -0
  221. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  222. package/dist/types/common/errors/reconnection.d.ts +15 -0
  223. package/dist/types/common/errors/stats.d.ts +15 -0
  224. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  225. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  226. package/dist/types/common/events/events-scope.d.ts +17 -0
  227. package/dist/types/common/events/events.d.ts +12 -0
  228. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  229. package/dist/types/common/events/util.d.ts +2 -0
  230. package/dist/types/common/logs/logger-config.d.ts +2 -0
  231. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  232. package/dist/types/common/logs/request.d.ts +34 -0
  233. package/dist/types/common/queue.d.ts +32 -0
  234. package/dist/types/config.d.ts +77 -0
  235. package/dist/types/constants.d.ts +916 -0
  236. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  237. package/dist/types/controls-options-manager/enums.d.ts +5 -0
  238. package/dist/types/controls-options-manager/index.d.ts +120 -0
  239. package/dist/types/controls-options-manager/util.d.ts +7 -0
  240. package/dist/types/index.d.ts +6 -0
  241. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  242. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  243. package/dist/types/locus-info/fullState.d.ts +2 -0
  244. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  245. package/dist/types/locus-info/index.d.ts +269 -0
  246. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  247. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  248. package/dist/types/locus-info/parser.d.ts +212 -0
  249. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  250. package/dist/types/media/index.d.ts +32 -0
  251. package/dist/types/media/properties.d.ts +108 -0
  252. package/dist/types/media/util.d.ts +2 -0
  253. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  254. package/dist/types/meeting/in-meeting-actions.d.ts +83 -0
  255. package/dist/types/meeting/index.d.ts +1699 -0
  256. package/dist/types/meeting/muteState.d.ts +116 -0
  257. package/dist/types/meeting/request.d.ts +271 -0
  258. package/dist/types/meeting/request.type.d.ts +11 -0
  259. package/dist/types/meeting/state.d.ts +9 -0
  260. package/dist/types/meeting/util.d.ts +2 -0
  261. package/dist/types/meeting-info/collection.d.ts +20 -0
  262. package/dist/types/meeting-info/index.d.ts +57 -0
  263. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  264. package/dist/types/meeting-info/request.d.ts +22 -0
  265. package/dist/types/meeting-info/util.d.ts +2 -0
  266. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  267. package/dist/types/meetings/collection.d.ts +23 -0
  268. package/dist/types/meetings/index.d.ts +297 -0
  269. package/dist/types/meetings/request.d.ts +27 -0
  270. package/dist/types/meetings/util.d.ts +18 -0
  271. package/dist/types/member/index.d.ts +146 -0
  272. package/dist/types/member/util.d.ts +2 -0
  273. package/dist/types/members/collection.d.ts +24 -0
  274. package/dist/types/members/index.d.ts +320 -0
  275. package/dist/types/members/request.d.ts +50 -0
  276. package/dist/types/members/util.d.ts +2 -0
  277. package/dist/types/metrics/config.d.ts +169 -0
  278. package/dist/types/metrics/constants.d.ts +53 -0
  279. package/dist/types/metrics/index.d.ts +152 -0
  280. package/dist/types/multistream/mediaRequestManager.d.ts +51 -0
  281. package/dist/types/multistream/receiveSlot.d.ts +64 -0
  282. package/dist/types/multistream/receiveSlotManager.d.ts +46 -0
  283. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  284. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  285. package/dist/types/multistream/remoteMediaManager.d.ts +241 -0
  286. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  287. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  288. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  289. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  290. package/dist/types/reachability/index.d.ts +140 -0
  291. package/dist/types/reachability/request.d.ts +37 -0
  292. package/dist/types/reactions/constants.d.ts +3 -0
  293. package/dist/types/reactions/reactions.d.ts +4 -0
  294. package/dist/types/reactions/reactions.type.d.ts +52 -0
  295. package/dist/types/reconnection-manager/index.d.ts +117 -0
  296. package/dist/types/recording-controller/enums.d.ts +7 -0
  297. package/dist/types/recording-controller/index.d.ts +193 -0
  298. package/dist/types/recording-controller/util.d.ts +13 -0
  299. package/dist/types/roap/index.d.ts +77 -0
  300. package/dist/types/roap/request.d.ts +38 -0
  301. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  302. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  303. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  304. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  305. package/dist/types/transcription/index.d.ts +64 -0
  306. package/internal-README.md +7 -6
  307. package/package.json +27 -21
  308. package/src/breakouts/README.md +199 -0
  309. package/src/breakouts/breakout.ts +130 -0
  310. package/src/breakouts/collection.ts +19 -0
  311. package/src/breakouts/edit-lock-error.ts +25 -0
  312. package/src/breakouts/index.ts +504 -0
  313. package/src/breakouts/request.ts +55 -0
  314. package/src/breakouts/utils.ts +39 -0
  315. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  316. package/src/common/collection.ts +9 -7
  317. package/src/common/{config.js → config.ts} +1 -1
  318. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  319. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  320. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  321. package/src/common/errors/{media.js → media.ts} +11 -7
  322. package/src/common/errors/parameter.ts +11 -7
  323. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  324. package/src/common/errors/{permission.js → permission.ts} +10 -6
  325. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  326. package/src/common/errors/{stats.js → stats.ts} +11 -7
  327. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  328. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  329. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  330. package/src/common/events/{events.js → events.ts} +5 -1
  331. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  332. package/src/common/events/{util.js → util.ts} +2 -3
  333. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  334. package/src/common/logs/logger-proxy.ts +44 -0
  335. package/src/common/logs/{request.js → request.ts} +22 -9
  336. package/src/common/queue.ts +1 -2
  337. package/src/{config.js → config.ts} +17 -12
  338. package/src/constants.ts +62 -5
  339. package/src/controls-options-manager/constants.ts +5 -0
  340. package/src/controls-options-manager/enums.ts +6 -0
  341. package/src/controls-options-manager/index.ts +183 -0
  342. package/src/controls-options-manager/util.ts +20 -0
  343. package/src/index.js +4 -1
  344. package/src/locus-info/controlsUtils.ts +114 -0
  345. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  346. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  347. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  348. package/src/locus-info/{index.js → index.ts} +150 -66
  349. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  350. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  351. package/src/locus-info/{parser.js → parser.ts} +67 -79
  352. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  353. package/src/media/{index.js → index.ts} +182 -173
  354. package/src/media/{properties.js → properties.ts} +60 -37
  355. package/src/media/{util.js → util.ts} +2 -2
  356. package/src/mediaQualityMetrics/config.ts +384 -0
  357. package/src/meeting/in-meeting-actions.ts +31 -3
  358. package/src/meeting/{index.js → index.ts} +2512 -1579
  359. package/src/meeting/{muteState.js → muteState.ts} +95 -49
  360. package/src/meeting/{request.js → request.ts} +326 -142
  361. package/src/meeting/request.type.ts +13 -0
  362. package/src/meeting/{state.js → state.ts} +50 -35
  363. package/src/meeting/{util.js → util.ts} +117 -119
  364. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  365. package/src/meeting-info/{index.js → index.ts} +42 -36
  366. package/src/meeting-info/meeting-info-v2.ts +273 -0
  367. package/src/meeting-info/{request.js → request.ts} +14 -4
  368. package/src/meeting-info/{util.js → util.ts} +60 -51
  369. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  370. package/src/meetings/{collection.js → collection.ts} +6 -3
  371. package/src/meetings/index.ts +1159 -0
  372. package/src/meetings/{request.js → request.ts} +32 -25
  373. package/src/meetings/{util.js → util.ts} +58 -32
  374. package/src/member/{index.js → index.ts} +102 -56
  375. package/src/member/{util.js → util.ts} +52 -25
  376. package/src/members/{collection.js → collection.ts} +2 -2
  377. package/src/members/{index.js → index.ts} +221 -142
  378. package/src/members/{request.js → request.ts} +60 -16
  379. package/src/members/{util.js → util.ts} +50 -48
  380. package/src/metrics/{config.js → config.ts} +253 -92
  381. package/src/metrics/{constants.js → constants.ts} +0 -6
  382. package/src/metrics/{index.js → index.ts} +105 -94
  383. package/src/multistream/mediaRequestManager.ts +101 -39
  384. package/src/multistream/receiveSlot.ts +62 -26
  385. package/src/multistream/receiveSlotManager.ts +35 -21
  386. package/src/multistream/remoteMedia.ts +38 -5
  387. package/src/multistream/remoteMediaGroup.ts +4 -3
  388. package/src/multistream/remoteMediaManager.ts +152 -36
  389. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  390. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  391. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  392. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  393. package/src/reachability/{index.js → index.ts} +109 -85
  394. package/src/reachability/request.ts +46 -35
  395. package/src/reactions/constants.ts +4 -0
  396. package/src/reactions/reactions.ts +104 -0
  397. package/src/reactions/reactions.type.ts +62 -0
  398. package/src/reconnection-manager/{index.js → index.ts} +196 -103
  399. package/src/recording-controller/enums.ts +8 -0
  400. package/src/recording-controller/index.ts +315 -0
  401. package/src/recording-controller/util.ts +58 -0
  402. package/src/roap/{index.js → index.ts} +77 -60
  403. package/src/roap/request.ts +172 -0
  404. package/src/roap/turnDiscovery.ts +81 -41
  405. package/src/statsAnalyzer/global.ts +37 -0
  406. package/src/statsAnalyzer/index.ts +1234 -0
  407. package/src/statsAnalyzer/mqaUtil.ts +293 -0
  408. package/src/transcription/{index.js → index.ts} +46 -39
  409. package/test/integration/spec/converged-space-meetings.js +176 -0
  410. package/test/integration/spec/journey.js +665 -464
  411. package/test/integration/spec/space-meeting.js +320 -206
  412. package/test/integration/spec/transcription.js +7 -8
  413. package/test/unit/spec/breakouts/breakout.ts +147 -0
  414. package/test/unit/spec/breakouts/collection.ts +15 -0
  415. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  416. package/test/unit/spec/breakouts/index.ts +707 -0
  417. package/test/unit/spec/breakouts/request.ts +104 -0
  418. package/test/unit/spec/breakouts/utils.js +47 -0
  419. package/test/unit/spec/common/browser-detection.js +9 -28
  420. package/test/unit/spec/controls-options-manager/index.js +124 -0
  421. package/test/unit/spec/controls-options-manager/util.js +66 -0
  422. package/test/unit/spec/fixture/locus.js +92 -90
  423. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  424. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  425. package/test/unit/spec/locus-info/index.js +104 -2
  426. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  427. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  428. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  429. package/test/unit/spec/locus-info/parser.js +3 -9
  430. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  431. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  432. package/test/unit/spec/media/index.ts +39 -53
  433. package/test/unit/spec/media/properties.ts +9 -9
  434. package/test/unit/spec/meeting/in-meeting-actions.ts +13 -2
  435. package/test/unit/spec/meeting/index.js +2253 -811
  436. package/test/unit/spec/meeting/muteState.js +74 -55
  437. package/test/unit/spec/meeting/request.js +141 -43
  438. package/test/unit/spec/meeting/utils.js +106 -171
  439. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  440. package/test/unit/spec/meeting-info/request.js +7 -9
  441. package/test/unit/spec/meeting-info/util.js +11 -12
  442. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  443. package/test/unit/spec/meetings/collection.js +1 -1
  444. package/test/unit/spec/meetings/index.js +439 -257
  445. package/test/unit/spec/meetings/utils.js +14 -12
  446. package/test/unit/spec/member/index.js +0 -1
  447. package/test/unit/spec/member/util.js +31 -7
  448. package/test/unit/spec/members/index.js +104 -54
  449. package/test/unit/spec/members/request.js +29 -20
  450. package/test/unit/spec/members/utils.js +8 -5
  451. package/test/unit/spec/metrics/index.js +16 -21
  452. package/test/unit/spec/multistream/mediaRequestManager.ts +318 -64
  453. package/test/unit/spec/multistream/receiveSlot.ts +68 -17
  454. package/test/unit/spec/multistream/receiveSlotManager.ts +41 -13
  455. package/test/unit/spec/multistream/remoteMedia.ts +38 -2
  456. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  457. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  458. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  459. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  460. package/test/unit/spec/reachability/index.ts +70 -27
  461. package/test/unit/spec/reachability/request.js +66 -0
  462. package/test/unit/spec/reconnection-manager/index.js +58 -30
  463. package/test/unit/spec/recording-controller/index.js +231 -0
  464. package/test/unit/spec/recording-controller/util.js +102 -0
  465. package/test/unit/spec/roap/index.ts +12 -8
  466. package/test/unit/spec/roap/request.ts +217 -0
  467. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  468. package/test/unit/spec/stats-analyzer/index.js +86 -57
  469. package/test/utils/cmr.js +44 -42
  470. package/test/utils/constants.js +9 -0
  471. package/test/utils/testUtils.js +98 -77
  472. package/test/utils/webex-config.js +22 -18
  473. package/test/utils/webex-test-users.js +57 -50
  474. package/tsconfig.json +6 -0
  475. package/dist/media/internal-media-core-wrapper.js +0 -22
  476. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  477. package/dist/meeting/effectsState.js +0 -327
  478. package/dist/meeting/effectsState.js.map +0 -1
  479. package/dist/multistream/multistreamMedia.js +0 -116
  480. package/dist/multistream/multistreamMedia.js.map +0 -1
  481. package/dist/peer-connection-manager/util.js +0 -124
  482. package/dist/peer-connection-manager/util.js.map +0 -1
  483. package/src/common/logs/logger-proxy.js +0 -33
  484. package/src/locus-info/controlsUtils.js +0 -102
  485. package/src/media/internal-media-core-wrapper.ts +0 -9
  486. package/src/mediaQualityMetrics/config.js +0 -382
  487. package/src/meeting/effectsState.js +0 -205
  488. package/src/meeting-info/meeting-info-v2.js +0 -255
  489. package/src/meetings/index.js +0 -1015
  490. package/src/multistream/multistreamMedia.ts +0 -92
  491. package/src/peer-connection-manager/util.ts +0 -117
  492. package/src/roap/request.js +0 -127
  493. package/src/statsAnalyzer/global.js +0 -133
  494. package/src/statsAnalyzer/index.js +0 -1006
  495. package/src/statsAnalyzer/mqaUtil.js +0 -173
  496. package/test/unit/spec/meeting/effectsState.js +0 -291
  497. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  498. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,12 +1,15 @@
1
1
  import uuid from 'uuid';
2
2
  import {debounce} from 'lodash';
3
+ // @ts-ignore
3
4
  import {StatelessWebexPlugin} from '@webex/webex-core';
5
+ // @ts-ignore
4
6
  import {deviceType} from '@webex/common';
5
7
 
6
8
  import LoggerProxy from '../common/logs/logger-proxy';
7
9
  import {
8
10
  ALERT,
9
11
  ALTERNATE_REDIRECT_TRUE,
12
+ BREAKOUTS,
10
13
  CALL,
11
14
  CONTROLS,
12
15
  DECLINE,
@@ -20,19 +23,57 @@ import {
20
23
  PARTICIPANT,
21
24
  PROVISIONAL_TYPE_DIAL_IN,
22
25
  PROVISIONAL_TYPE_DIAL_OUT,
26
+ REACHABILITY,
23
27
  SEND_DTMF_ENDPOINT,
24
- _SLIDES_
28
+ _SLIDES_,
25
29
  } from '../constants';
30
+ import {SendReactionOptions, ToggleReactionsOptions} from './request.type';
26
31
 
27
32
  /**
28
33
  * @class MeetingRequest
29
34
  */
30
35
  export default class MeetingRequest extends StatelessWebexPlugin {
31
- constructor(attrs, options) {
36
+ changeVideoLayoutDebounced: any;
37
+
38
+ /**
39
+ * Constructor
40
+ * @param {Object} attrs
41
+ * @param {Object} options
42
+ */
43
+ constructor(attrs: any, options: any) {
32
44
  super(attrs, options);
33
- this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {leading: true, trailing: true});
45
+ this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
46
+ leading: true,
47
+ trailing: true,
48
+ });
34
49
  }
35
50
 
51
+ /**
52
+ * Returns joinCookie from boundedStorage if present.
53
+ * @returns {Object} joinCookie
54
+ */
55
+ private getJoinCookie = async () => {
56
+ // @ts-ignore
57
+ const joinCookieRaw = await this.webex.boundedStorage
58
+ .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)
59
+ .catch(() => {});
60
+
61
+ if (joinCookieRaw) {
62
+ try {
63
+ const joinCookie = JSON.parse(joinCookieRaw);
64
+ if (joinCookie) {
65
+ return joinCookie;
66
+ }
67
+ } catch (e) {
68
+ LoggerProxy.logger.error(
69
+ `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`
70
+ );
71
+ }
72
+ }
73
+
74
+ return null;
75
+ };
76
+
36
77
  /**
37
78
  * Make a network request to join a meeting
38
79
  * @param {Object} options
@@ -46,9 +87,27 @@ export default class MeetingRequest extends StatelessWebexPlugin {
46
87
  * @param {boolean} options.pin
47
88
  * @param {boolean} options.moveToResource
48
89
  * @param {Object} options.roapMessage
90
+ * @param {boolean} options.breakoutsSupported
49
91
  * @returns {Promise}
50
92
  */
51
- async joinMeeting(options) {
93
+ async joinMeeting(options: {
94
+ sipUri: string;
95
+ deviceUrl: string;
96
+ locusUrl: string;
97
+ resourceId: string;
98
+ correlationId: string;
99
+ ensureConversation: boolean;
100
+ moderator: boolean;
101
+ pin: boolean;
102
+ moveToResource: boolean;
103
+ roapMessage: any;
104
+ asResourceOccupant: any;
105
+ inviteeAddress: any;
106
+ meetingNumber: any;
107
+ permissionToken: any;
108
+ preferTranscoding: any;
109
+ breakoutsSupported: boolean;
110
+ }) {
52
111
  const {
53
112
  asResourceOccupant,
54
113
  inviteeAddress,
@@ -63,36 +122,45 @@ export default class MeetingRequest extends StatelessWebexPlugin {
63
122
  pin,
64
123
  moveToResource,
65
124
  roapMessage,
66
- preferTranscoding
125
+ preferTranscoding,
126
+ breakoutsSupported,
67
127
  } = options;
68
128
 
69
- LoggerProxy.logger.info(
70
- 'Meeting:request#joinMeeting --> Joining a meeting',
71
- correlationId
72
- );
129
+ LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
73
130
 
74
131
  let url = '';
75
132
 
76
- const body = {
133
+ const joinCookie = await this.getJoinCookie();
134
+
135
+ const body: any = {
77
136
  asResourceOccupant,
78
137
  device: {
79
138
  url: deviceUrl,
80
- deviceType: this.config.meetings.deviceType
139
+ // @ts-ignore - config comes from registerPlugin
140
+ deviceType: this.config.meetings.deviceType,
81
141
  },
82
142
  usingResource: resourceId || null,
83
- moveMediaToResource: resourceId && moveToResource || false,
143
+ moveMediaToResource: (resourceId && moveToResource) || false,
84
144
  correlationId,
85
145
  respOnlySdp: true,
86
146
  allowMultiDevice: true,
87
147
  ensureConversation: ensureConversation || false,
88
148
  supportsNativeLobby: 1,
89
149
  clientMediaPreferences: {
90
- preferTranscoding: preferTranscoding ?? true
91
- }
150
+ preferTranscoding: preferTranscoding ?? true,
151
+ joinCookie,
152
+ },
92
153
  };
93
154
 
155
+ if (breakoutsSupported) {
156
+ body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];
157
+ }
158
+
159
+ // @ts-ignore
94
160
  if (this.webex.meetings.clientRegion) {
161
+ // @ts-ignore
95
162
  body.device.countryCode = this.webex.meetings.clientRegion.countryCode;
163
+ // @ts-ignore
96
164
  body.device.regionCode = this.webex.meetings.clientRegion.regionCode;
97
165
  }
98
166
 
@@ -110,28 +178,29 @@ export default class MeetingRequest extends StatelessWebexPlugin {
110
178
 
111
179
  if (locusUrl) {
112
180
  url = `${locusUrl}/${PARTICIPANT}`;
113
- }
114
- else if (inviteeAddress || meetingNumber) {
181
+ } else if (inviteeAddress || meetingNumber) {
115
182
  try {
183
+ // @ts-ignore
116
184
  await this.webex.internal.services.waitForCatalog('postauth');
185
+ // @ts-ignore
117
186
  url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;
118
187
  body.invitee = {
119
- address: inviteeAddress || `wbxmn:${meetingNumber}`
188
+ address: inviteeAddress || `wbxmn:${meetingNumber}`,
120
189
  };
121
- }
122
- catch (e) {
123
- LoggerProxy.logger.error(`Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`);
124
- throw (e);
190
+ } catch (e) {
191
+ LoggerProxy.logger.error(
192
+ `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`
193
+ );
194
+ throw e;
125
195
  }
126
196
  }
127
197
 
128
-
129
198
  // TODO: -- this will be resolved in SDK request
130
199
  url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);
131
200
 
132
201
  if (resourceId === inviteeAddress) {
133
202
  body.callPreferences = {
134
- requestedMedia: [_SLIDES_]
203
+ requestedMedia: [_SLIDES_],
135
204
  };
136
205
  }
137
206
 
@@ -139,10 +208,11 @@ export default class MeetingRequest extends StatelessWebexPlugin {
139
208
  body.localMedias = roapMessage.localMedias;
140
209
  }
141
210
 
211
+ /// @ts-ignore
142
212
  return this.request({
143
213
  method: HTTP_VERBS.POST,
144
214
  uri: url,
145
- body
215
+ body,
146
216
  });
147
217
  }
148
218
 
@@ -154,18 +224,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
154
224
  * @returns {Promise}
155
225
  * @private
156
226
  */
157
- refreshCaptcha({
227
+ private refreshCaptcha({
158
228
  captchaRefreshUrl,
159
- captchaId
229
+ captchaId,
230
+ }: {
231
+ captchaRefreshUrl: string;
232
+ captchaId: string;
160
233
  }) {
161
234
  const body = {
162
- captchaId
235
+ captchaId,
163
236
  };
164
237
 
238
+ // @ts-ignore
165
239
  return this.request({
166
240
  method: HTTP_VERBS.POST,
167
241
  uri: captchaRefreshUrl,
168
- body
242
+ body,
169
243
  }).catch((err) => {
170
244
  LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);
171
245
 
@@ -177,17 +251,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
177
251
  * Make a network request to add a dial in device
178
252
  * @param {Object} options
179
253
  * @param {String} options.correlationId
180
- * @param {String} options.localUrl url for the meeting
254
+ * @param {String} options.locusUrl url for the meeting
181
255
  * @param {String} options.dialInUrl identifier for the to-be provisioned device
182
256
  * @param {String} options.clientUrl identifier for the web device
183
257
  * @returns {Promise}
184
258
  * @private
185
259
  */
186
- dialIn({
260
+ private dialIn({
187
261
  locusUrl,
188
262
  dialInUrl,
189
263
  clientUrl,
190
- correlationId
264
+ correlationId,
265
+ }: {
266
+ correlationId: string;
267
+ locusUrl: string;
268
+ dialInUrl: string;
269
+ clientUrl: string;
191
270
  }) {
192
271
  LoggerProxy.logger.info(
193
272
  'Meeting:request#dialIn --> Provisioning a dial in device',
@@ -200,17 +279,20 @@ export default class MeetingRequest extends StatelessWebexPlugin {
200
279
  deviceType: deviceType.PROVISIONAL,
201
280
  provisionalType: PROVISIONAL_TYPE_DIAL_IN,
202
281
  url: dialInUrl,
203
- clientUrl
282
+ clientUrl,
204
283
  },
205
- correlationId
284
+ correlationId,
206
285
  };
207
286
 
287
+ // @ts-ignore
208
288
  return this.request({
209
289
  method: HTTP_VERBS.POST,
210
290
  uri,
211
- body
291
+ body,
212
292
  }).catch((err) => {
213
- LoggerProxy.logger.error(`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`);
293
+ LoggerProxy.logger.error(
294
+ `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`
295
+ );
214
296
 
215
297
  throw err;
216
298
  });
@@ -220,19 +302,25 @@ export default class MeetingRequest extends StatelessWebexPlugin {
220
302
  * Make a network request to add a dial out device
221
303
  * @param {Object} options
222
304
  * @param {String} options.correlationId
223
- * @param {String} options.localUrl url for the meeting
305
+ * @param {String} options.locusUrl url for the meeting
224
306
  * @param {String} options.dialOutUrl identifier for the to-be provisioned device
225
307
  * @param {String} options.phoneNumber phone number to dial out to
226
308
  * @param {String} options.clientUrl identifier for the web device
227
309
  * @returns {Promise}
228
310
  * @private
229
311
  */
230
- dialOut({
312
+ private dialOut({
231
313
  locusUrl,
232
314
  dialOutUrl,
233
315
  phoneNumber,
234
316
  clientUrl,
235
- correlationId
317
+ correlationId,
318
+ }: {
319
+ correlationId: string;
320
+ locusUrl: string;
321
+ dialOutUrl: string;
322
+ phoneNumber: string;
323
+ clientUrl: string;
236
324
  }) {
237
325
  LoggerProxy.logger.info(
238
326
  'Meeting:request#dialOut --> Provisioning a dial out device',
@@ -246,17 +334,20 @@ export default class MeetingRequest extends StatelessWebexPlugin {
246
334
  provisionalType: PROVISIONAL_TYPE_DIAL_OUT,
247
335
  url: dialOutUrl,
248
336
  dialoutAddress: phoneNumber,
249
- clientUrl
337
+ clientUrl,
250
338
  },
251
- correlationId
339
+ correlationId,
252
340
  };
253
341
 
342
+ // @ts-ignore
254
343
  return this.request({
255
344
  method: HTTP_VERBS.POST,
256
345
  uri,
257
- body
346
+ body,
258
347
  }).catch((err) => {
259
- LoggerProxy.logger.error(`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`);
348
+ LoggerProxy.logger.error(
349
+ `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`
350
+ );
260
351
 
261
352
  throw err;
262
353
  });
@@ -265,11 +356,11 @@ export default class MeetingRequest extends StatelessWebexPlugin {
265
356
  /**
266
357
  * Syns the missed delta event
267
358
  * @param {Object} options
268
- * @param {boolen} options.desync flag to get partial or whole locus object
359
+ * @param {boolean} options.desync flag to get partial or whole locus object
269
360
  * @param {String} options.syncUrl sync url to get ht elatest locus delta
270
361
  * @returns {Promise}
271
362
  */
272
- syncMeeting(options) {
363
+ syncMeeting(options: {desync: boolean; syncUrl: string}) {
273
364
  /* eslint-disable no-else-return */
274
365
  const {desync} = options;
275
366
  let {syncUrl} = options;
@@ -277,15 +368,20 @@ export default class MeetingRequest extends StatelessWebexPlugin {
277
368
  /* istanbul ignore else */
278
369
  if (desync) {
279
370
  // check for existing URL parameters
280
- syncUrl = syncUrl.concat(syncUrl.split('?')[1] ? '&' : '?').concat(`${LOCUS.SYNCDEBUG}=${desync}`);
371
+ syncUrl = syncUrl
372
+ .concat(syncUrl.split('?')[1] ? '&' : '?')
373
+ .concat(`${LOCUS.SYNCDEBUG}=${desync}`);
281
374
  }
282
375
 
376
+ // @ts-ignore
283
377
  return this.request({
284
378
  method: HTTP_VERBS.GET,
285
- uri: syncUrl
379
+ uri: syncUrl,
286
380
  }) // TODO: Handle if delta sync failed . Get the full locus object
287
381
  .catch((err) => {
288
- LoggerProxy.logger.error(`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`);
382
+ LoggerProxy.logger.error(
383
+ `Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`
384
+ );
289
385
 
290
386
  return err;
291
387
  });
@@ -294,11 +390,11 @@ export default class MeetingRequest extends StatelessWebexPlugin {
294
390
  /**
295
391
  * Request to get the complete locus object
296
392
  * @param {Object} options
297
- * @param {boolen} options.desync flag to get partial or whole locus object
393
+ * @param {boolean} options.desync flag to get partial or whole locus object
298
394
  * @param {String} options.locusUrl sync url to get ht elatest locus delta
299
395
  * @returns {Promise}
300
396
  */
301
- getFullLocus(options) {
397
+ getFullLocus(options: {desync: boolean; locusUrl: string}) {
302
398
  let {locusUrl} = options;
303
399
  const {desync} = options;
304
400
 
@@ -307,11 +403,14 @@ export default class MeetingRequest extends StatelessWebexPlugin {
307
403
  locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;
308
404
  }
309
405
 
406
+ // @ts-ignore
310
407
  return this.request({
311
408
  method: HTTP_VERBS.GET,
312
- uri: locusUrl
409
+ uri: locusUrl,
313
410
  }).catch((err) => {
314
- LoggerProxy.logger.error(`Meeting:request#getFullLocus --> Error getting full locus, error ${err}`);
411
+ LoggerProxy.logger.error(
412
+ `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`
413
+ );
315
414
 
316
415
  return err;
317
416
  });
@@ -330,11 +429,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
330
429
  * @returns {Promise}
331
430
  * @private
332
431
  */
333
- disconnectPhoneAudio({
432
+ private disconnectPhoneAudio({
334
433
  locusUrl,
335
434
  phoneUrl,
336
435
  correlationId,
337
- selfId
436
+ selfId,
437
+ }: {
438
+ locusUrl: string;
439
+ phoneUrl: string;
440
+ correlationId: string;
441
+ selfId: string;
338
442
  }) {
339
443
  LoggerProxy.logger.info(
340
444
  `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,
@@ -345,15 +449,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
345
449
  const body = {
346
450
  device: {
347
451
  deviceType: deviceType.PROVISIONAL,
348
- url: phoneUrl
452
+ url: phoneUrl,
349
453
  },
350
- correlationId
454
+ correlationId,
351
455
  };
352
456
 
457
+ // @ts-ignore
353
458
  return this.request({
354
459
  method: HTTP_VERBS.PUT,
355
460
  uri,
356
- body
461
+ body,
357
462
  }).catch((err) => {
358
463
  LoggerProxy.logger.error(
359
464
  `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`
@@ -378,27 +483,32 @@ export default class MeetingRequest extends StatelessWebexPlugin {
378
483
  selfId,
379
484
  deviceUrl: url,
380
485
  resourceId,
381
- correlationId
486
+ correlationId,
487
+ }: {
488
+ locusUrl: string;
489
+ selfId: string;
490
+ deviceUrl: string;
491
+ resourceId: string;
492
+ correlationId: string;
382
493
  }) {
383
- LoggerProxy.logger.info(
384
- 'Meeting:request#leaveMeeting --> Leaving a meeting',
385
- correlationId
386
- );
494
+ LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);
387
495
 
388
496
  const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
389
497
  const body = {
390
498
  device: {
499
+ // @ts-ignore
391
500
  deviceType: this.config.meetings.deviceType,
392
- url
501
+ url,
393
502
  },
394
503
  usingResource: resourceId || null,
395
- correlationId
504
+ correlationId,
396
505
  };
397
506
 
507
+ // @ts-ignore
398
508
  return this.request({
399
509
  method: HTTP_VERBS.PUT,
400
510
  uri,
401
- body
511
+ body,
402
512
  });
403
513
  }
404
514
 
@@ -410,44 +520,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
410
520
  * @param {String} options.correlationId
411
521
  * @returns {Promise}
412
522
  */
413
- acknowledgeMeeting(options) {
523
+ acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {
414
524
  const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;
415
525
  const body = {
416
526
  device: {
527
+ // @ts-ignore
417
528
  deviceType: this.config.meetings.deviceType,
418
- url: options.deviceUrl
529
+ url: options.deviceUrl,
419
530
  },
420
- correlationId: options.correlationId
531
+ correlationId: options.correlationId,
421
532
  };
422
533
 
534
+ // @ts-ignore
423
535
  return this.request({
424
536
  method: HTTP_VERBS.PUT,
425
537
  uri,
426
- body
427
- });
428
- }
429
-
430
- /**
431
- * Make a network request to acknowledge a meeting
432
- * @param {Object} options
433
- * @param {String} options.locusUrl
434
- * @param {String} options.deviceUrl
435
- * @param {String} options.id
436
- * @returns {Promise}
437
- */
438
- recordMeeting(options) {
439
- const uri = `${options.locusUrl}/${CONTROLS}`;
440
- const body = {
441
- record: {
442
- recording: options.recording,
443
- paused: options.paused
444
- }
445
- };
446
-
447
- return this.request({
448
- method: HTTP_VERBS.PATCH,
449
- uri,
450
- body
538
+ body,
451
539
  });
452
540
  }
453
541
 
@@ -455,14 +543,15 @@ export default class MeetingRequest extends StatelessWebexPlugin {
455
543
  const uri = `${options.locusUrl}/${CONTROLS}`;
456
544
  const body = {
457
545
  lock: {
458
- locked: options.lock
459
- }
546
+ locked: options.lock,
547
+ },
460
548
  };
461
549
 
550
+ // @ts-ignore
462
551
  return this.request({
463
552
  method: HTTP_VERBS.PATCH,
464
553
  uri,
465
- body
554
+ body,
466
555
  });
467
556
  }
468
557
 
@@ -474,20 +563,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
474
563
  * @param {String} options.reason
475
564
  * @returns {Promise}
476
565
  */
477
- declineMeeting(options) {
566
+ declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {
478
567
  const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;
479
568
  const body = {
480
569
  device: {
570
+ // @ts-ignore
481
571
  deviceType: this.config.meetings.deviceType,
482
- url: options.deviceUrl
572
+ url: options.deviceUrl,
483
573
  },
484
- ...(options.reason && {reason: options.reason})
574
+ ...(options.reason && {reason: options.reason}),
485
575
  };
486
576
 
577
+ // @ts-ignore
487
578
  return this.request({
488
579
  method: HTTP_VERBS.PUT,
489
580
  uri,
490
- body
581
+ body,
491
582
  });
492
583
  }
493
584
 
@@ -502,26 +593,38 @@ export default class MeetingRequest extends StatelessWebexPlugin {
502
593
  * @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)
503
594
  * @returns {Promise}
504
595
  */
505
- remoteAudioVideoToggle(options) {
596
+ remoteAudioVideoToggle(
597
+ options:
598
+ | {
599
+ selfId: string;
600
+ locusUrl: string;
601
+ deviceUrl: string;
602
+ resourceId: string;
603
+ localMedias: string;
604
+ }
605
+ | any
606
+ ) {
506
607
  const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;
507
608
  const body = {
508
609
  device: {
610
+ // @ts-ignore
509
611
  deviceType: this.config.meetings.deviceType,
510
- url: options.deviceUrl
612
+ url: options.deviceUrl,
511
613
  },
512
614
  usingResource: options.resourceId || null,
513
615
  correlationId: options.correlationId,
514
616
  respOnlySdp: true,
515
617
  localMedias: options.localMedias,
516
618
  clientMediaPreferences: {
517
- preferTranscoding: options.preferTranscoding ?? true
518
- }
619
+ preferTranscoding: options.preferTranscoding ?? true,
620
+ },
519
621
  };
520
622
 
623
+ // @ts-ignore
521
624
  return this.request({
522
625
  method: HTTP_VERBS.PUT,
523
626
  uri,
524
- body
627
+ body,
525
628
  });
526
629
  }
527
630
 
@@ -535,8 +638,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
535
638
  * @param {String} options.uri floor grant uri
536
639
  * @returns {Promise}
537
640
  */
538
- changeMeetingFloor(options) {
539
- let floorReq = {disposition: options.disposition};
641
+ changeMeetingFloor(
642
+ options:
643
+ | {
644
+ disposition: string;
645
+ personUrl: string;
646
+ deviceUrl: string;
647
+ resourceId: string;
648
+ uri: string;
649
+ }
650
+ | any
651
+ ) {
652
+ let floorReq: any = {disposition: options.disposition};
540
653
 
541
654
  /* istanbul ignore else */
542
655
  if (options.disposition === FLOOR_ACTION.GRANTED) {
@@ -545,31 +658,33 @@ export default class MeetingRequest extends StatelessWebexPlugin {
545
658
  url: options.personUrl,
546
659
  devices: [
547
660
  {
661
+ // @ts-ignore
548
662
  deviceType: this.config.meetings.deviceType,
549
- url: options.deviceUrl
550
- }
551
- ]
663
+ url: options.deviceUrl,
664
+ },
665
+ ],
552
666
  },
553
667
  disposition: options.disposition,
554
668
  requester: {
555
- url: options.personUrl
556
- }
669
+ url: options.personUrl,
670
+ },
557
671
  };
558
672
  }
559
673
 
560
- const body = {
674
+ const body: any = {
561
675
  floor: floorReq,
562
- resourceUrl: options.resourceUrl
676
+ resourceUrl: options.resourceUrl,
563
677
  };
564
678
 
565
679
  if (options?.resourceToken) {
566
680
  body.resourceToken = options?.resourceToken;
567
681
  }
568
682
 
683
+ // @ts-ignore
569
684
  return this.request({
570
685
  uri: options.uri,
571
686
  method: HTTP_VERBS.PUT,
572
- body
687
+ body,
573
688
  });
574
689
  }
575
690
 
@@ -581,7 +696,8 @@ export default class MeetingRequest extends StatelessWebexPlugin {
581
696
  * @param {String} options.tones a string of one or more DTMF tones to send
582
697
  * @returns {Promise}
583
698
  */
584
- sendDTMF({locusUrl, deviceUrl, tones}) {
699
+ sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
700
+ // @ts-ignore
585
701
  return this.request({
586
702
  method: HTTP_VERBS.POST,
587
703
  uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
@@ -589,9 +705,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
589
705
  deviceUrl,
590
706
  dtmf: {
591
707
  correlationId: uuid.v4(),
592
- tones
593
- }
594
- }
708
+ tones,
709
+ },
710
+ },
595
711
  });
596
712
  }
597
713
 
@@ -614,29 +730,55 @@ export default class MeetingRequest extends StatelessWebexPlugin {
614
730
  deviceUrl,
615
731
  layoutType,
616
732
  main,
617
- content
733
+ content,
734
+ }: {
735
+ locusUrl: string;
736
+ deviceUrl: string;
737
+ layoutType: string;
738
+ main: {
739
+ width: number;
740
+ height: number;
741
+ };
742
+ content: {
743
+ width: number;
744
+ height: number;
745
+ };
618
746
  }) {
619
747
  // send main/content renderInfo only if both width and height are specified
620
748
  if (main && (!main.width || !main.height)) {
621
- return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(main)}`));
749
+ return Promise.reject(
750
+ new Error(
751
+ `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(
752
+ main
753
+ )}`
754
+ )
755
+ );
622
756
  }
623
757
 
624
758
  if (content && (!content.width || !content.height)) {
625
- return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(content)}`));
759
+ return Promise.reject(
760
+ new Error(
761
+ `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(
762
+ content
763
+ )}`
764
+ )
765
+ );
626
766
  }
627
767
 
628
- const renderInfoMain = (main) ? {width: main.width, height: main.height} : undefined;
629
- const renderInfoContent = (content) ? {width: content.width, height: content.height} : undefined;
768
+ const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;
769
+ const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;
630
770
 
631
- const layoutParams = (renderInfoMain || renderInfoContent) ?
632
- {
633
- renderInfo:
634
- {
635
- main: renderInfoMain,
636
- content: renderInfoContent
637
- }
638
- } : undefined;
771
+ const layoutParams =
772
+ renderInfoMain || renderInfoContent
773
+ ? {
774
+ renderInfo: {
775
+ main: renderInfoMain,
776
+ content: renderInfoContent,
777
+ },
778
+ }
779
+ : undefined;
639
780
 
781
+ // @ts-ignore
640
782
  return this.request({
641
783
  method: HTTP_VERBS.PUT,
642
784
  uri: `${locusUrl}/${CONTROLS}`,
@@ -644,9 +786,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
644
786
  layout: {
645
787
  deviceUrl,
646
788
  type: layoutType,
647
- layoutParams
648
- }
649
- }
789
+ layoutParams,
790
+ },
791
+ },
650
792
  });
651
793
  }
652
794
 
@@ -656,14 +798,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
656
798
  * @param {Url} options.locusUrl
657
799
  * @returns {Promise}
658
800
  */
659
- endMeetingForAll({
660
- locusUrl,
661
- }) {
801
+ endMeetingForAll({locusUrl}: {locusUrl: string}) {
662
802
  const uri = `${locusUrl}/${END}`;
663
803
 
804
+ // @ts-ignore
664
805
  return this.request({
665
806
  method: HTTP_VERBS.POST,
666
- uri
807
+ uri,
667
808
  });
668
809
  }
669
810
 
@@ -673,12 +814,55 @@ export default class MeetingRequest extends StatelessWebexPlugin {
673
814
  * @param {Url} options.keepAliveUrl
674
815
  * @returns {Promise}
675
816
  */
676
- keepAlive({
677
- keepAliveUrl,
678
- }) {
817
+ keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {
818
+ // @ts-ignore
679
819
  return this.request({
680
820
  method: HTTP_VERBS.GET,
681
- uri: keepAliveUrl
821
+ uri: keepAliveUrl,
822
+ });
823
+ }
824
+
825
+ /**
826
+ * Make a network request to send a reaction.
827
+ * @param {Object} options
828
+ * @param {Url} options.reactionChannelUrl
829
+ * @param {Reaction} options.reaction
830
+ * @param {string} options.senderID
831
+ * @returns {Promise}
832
+ */
833
+ sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {
834
+ const uri = reactionChannelUrl;
835
+
836
+ // @ts-ignore
837
+ return this.request({
838
+ method: HTTP_VERBS.POST,
839
+ uri,
840
+ body: {
841
+ sender: {participantId},
842
+ reaction,
843
+ },
844
+ });
845
+ }
846
+
847
+ /**
848
+ * Make a network request to enable or disable reactions.
849
+ * @param {boolean} options.enable - determines if we need to enable or disable.
850
+ * @param {locusUrl} options.locusUrl
851
+ * @returns {Promise}
852
+ */
853
+ toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {
854
+ const uri = `${locusUrl}/${CONTROLS}`;
855
+
856
+ // @ts-ignore
857
+ return this.request({
858
+ method: HTTP_VERBS.PUT,
859
+ uri,
860
+ body: {
861
+ reactions: {
862
+ enabled: enable,
863
+ },
864
+ requestingParticipantId,
865
+ },
682
866
  });
683
867
  }
684
868
  }