@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.200

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