@webex/plugin-meetings 3.0.0-beta.1 → 3.0.0-beta.104

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