@webex/plugin-meetings 3.0.0-beta.11 → 3.0.0-beta.111

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