@webex/plugin-meetings 3.0.0-beta.14 → 3.0.0-beta.141

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