@webex/plugin-meetings 3.0.0-beta.12 → 3.0.0-beta.121

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