@webex/plugin-meetings 3.0.0-beta.3 → 3.0.0-beta.300

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