@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,17 +1,20 @@
1
1
  import {isEmpty} from 'lodash';
2
+ import {LocalCameraTrack, LocalMicrophoneTrack} from '@webex/media-helpers';
2
3
 
3
4
  import {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';
4
5
  import Metrics from '../metrics';
5
6
  import {eventType, trigger} from '../metrics/config';
6
7
  import Media from '../media';
7
8
  import LoggerProxy from '../common/logs/logger-proxy';
8
- import {INTENT_TO_JOIN,
9
+ import {
10
+ INTENT_TO_JOIN,
9
11
  _LEFT_,
10
12
  _IDLE_,
11
13
  _JOINED_,
12
14
  PASSWORD_STATUS,
13
15
  DISPLAY_HINTS,
14
- FULL_STATE} from '../constants';
16
+ FULL_STATE,
17
+ } from '../constants';
15
18
  import IntentToJoinError from '../common/errors/intent-to-join';
16
19
  import JoinMeetingError from '../common/errors/join-meeting';
17
20
  import ParameterError from '../common/errors/parameter';
@@ -19,10 +22,10 @@ import PermissionError from '../common/errors/permission';
19
22
  import PasswordError from '../common/errors/password-error';
20
23
  import CaptchaError from '../common/errors/captcha-error';
21
24
 
22
- const MeetingUtil = {};
25
+ const MeetingUtil: any = {};
23
26
 
24
27
  MeetingUtil.parseLocusJoin = (response) => {
25
- const parsed = {};
28
+ const parsed: any = {};
26
29
 
27
30
  // First todo: add check for existance
28
31
  parsed.locus = response.body.locus;
@@ -48,29 +51,35 @@ MeetingUtil.remoteUpdateAudioVideo = (audioMuted, videoMuted, meeting) => {
48
51
  const localMedias = Media.generateLocalMedias(meeting.mediaId, audioMuted, videoMuted);
49
52
 
50
53
  if (isEmpty(localMedias)) {
51
- return Promise.reject(new ParameterError('You need a media id on the meeting to change remote audio.'));
54
+ return Promise.reject(
55
+ new ParameterError('You need a media id on the meeting to change remote audio.')
56
+ );
52
57
  }
53
58
 
54
59
  Metrics.postEvent({event: eventType.MEDIA_REQUEST, meeting});
55
60
 
56
- return meeting.meetingRequest.remoteAudioVideoToggle({
57
- locusUrl: meeting.locusUrl,
58
- selfId: meeting.selfId,
59
- localMedias,
60
- deviceUrl: meeting.deviceUrl,
61
- correlationId: meeting.correlationId
62
- }).then((response) => {
63
- Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});
61
+ return meeting.meetingRequest
62
+ .remoteAudioVideoToggle({
63
+ locusUrl: meeting.locusUrl,
64
+ selfId: meeting.selfId,
65
+ localMedias,
66
+ deviceUrl: meeting.deviceUrl,
67
+ correlationId: meeting.correlationId,
68
+ preferTranscoding: !meeting.isMultistream,
69
+ })
70
+ .then((response) => {
71
+ Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});
64
72
 
65
- return response.body.locus;
66
- });
73
+ return response.body.locus;
74
+ });
67
75
  };
68
76
 
69
77
  MeetingUtil.hasOwner = (info) => info && info.owner;
70
78
 
71
79
  MeetingUtil.isOwnerSelf = (owner, selfId) => owner === selfId;
72
80
 
73
- MeetingUtil.isPinOrGuest = (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode);
81
+ MeetingUtil.isPinOrGuest = (err) =>
82
+ err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode);
74
83
 
75
84
  MeetingUtil.joinMeeting = (meeting, options) => {
76
85
  if (!meeting) {
@@ -95,8 +104,9 @@ MeetingUtil.joinMeeting = (meeting, options) => {
95
104
  moderator: options.moderator,
96
105
  pin: options.pin,
97
106
  moveToResource: options.moveToResource,
98
- preferTranscoding: options.preferTranscoding,
99
- asResourceOccupant: options.asResourceOccupant
107
+ preferTranscoding: !meeting.isMultistream,
108
+ asResourceOccupant: options.asResourceOccupant,
109
+ breakoutsSupported: options.breakoutsSupported,
100
110
  })
101
111
  .then((res) => {
102
112
  Metrics.postEvent({
@@ -106,8 +116,8 @@ MeetingUtil.joinMeeting = (meeting, options) => {
106
116
  trigger: trigger.LOCI_UPDATE,
107
117
  locus: res.body.locus,
108
118
  mediaConnections: res.body.mediaConnections,
109
- trackingId: res.headers.trackingid
110
- }
119
+ trackingId: res.headers.trackingid,
120
+ },
111
121
  });
112
122
 
113
123
  return MeetingUtil.parseLocusJoin(res);
@@ -115,8 +125,12 @@ MeetingUtil.joinMeeting = (meeting, options) => {
115
125
  };
116
126
 
117
127
  MeetingUtil.cleanUp = (meeting) => {
128
+ meeting.breakouts.cleanUp();
129
+
118
130
  // make sure we send last metrics before we close the peerconnection
119
- const stopStatsAnalyzer = (meeting.statsAnalyzer) ? meeting.statsAnalyzer.stopAnalyzer() : Promise.resolve();
131
+ const stopStatsAnalyzer = meeting.statsAnalyzer
132
+ ? meeting.statsAnalyzer.stopAnalyzer()
133
+ : Promise.resolve();
120
134
 
121
135
  return stopStatsAnalyzer
122
136
  .then(() => meeting.closeLocalStream())
@@ -130,8 +144,8 @@ MeetingUtil.cleanUp = (meeting) => {
130
144
  meeting.unsetPeerConnections();
131
145
  meeting.reconnectionManager.cleanUp();
132
146
  })
133
- .then(() => meeting.roap.stop(meeting.correlationId, meeting.roapSeq))
134
- .then(() => meeting.stopKeepAlive());
147
+ .then(() => meeting.stopKeepAlive())
148
+ .then(() => meeting.updateLLMConnection());
135
149
  };
136
150
 
137
151
  MeetingUtil.disconnectPhoneAudio = (meeting, phoneUrl) => {
@@ -143,7 +157,7 @@ MeetingUtil.disconnectPhoneAudio = (meeting, phoneUrl) => {
143
157
  locusUrl: meeting.locusUrl,
144
158
  selfId: meeting.selfId,
145
159
  correlationId: meeting.correlationId,
146
- phoneUrl
160
+ phoneUrl,
147
161
  };
148
162
 
149
163
  return meeting.meetingRequest
@@ -155,9 +169,7 @@ MeetingUtil.disconnectPhoneAudio = (meeting, phoneUrl) => {
155
169
  })
156
170
  .catch((err) => {
157
171
  LoggerProxy.logger.error(
158
- `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${
159
- meeting.id
160
- }, error: ${err}`
172
+ `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`
161
173
  );
162
174
 
163
175
  return Promise.reject(err);
@@ -168,7 +180,7 @@ MeetingUtil.disconnectPhoneAudio = (meeting, phoneUrl) => {
168
180
  // if you explicity want it not to leave on resource id, pass
169
181
  // {resourceId: null}
170
182
  // TODO: chris, you can modify this however you want
171
- MeetingUtil.leaveMeeting = (meeting, options = {}) => {
183
+ MeetingUtil.leaveMeeting = (meeting, options: any = {}) => {
172
184
  if (meeting.meetingState === FULL_STATE.INACTIVE) {
173
185
  // TODO: clean up if the meeting is already inactive
174
186
  return Promise.reject(new MeetingNotActiveError());
@@ -183,7 +195,7 @@ MeetingUtil.leaveMeeting = (meeting, options = {}) => {
183
195
  selfId: meeting.selfId,
184
196
  correlationId: meeting.correlationId,
185
197
  resourceId: meeting.resourceId,
186
- deviceUrl: meeting.deviceUrl
198
+ deviceUrl: meeting.deviceUrl,
187
199
  };
188
200
 
189
201
  const leaveOptions = {...defaultOptions, ...options};
@@ -191,7 +203,8 @@ MeetingUtil.leaveMeeting = (meeting, options = {}) => {
191
203
  return meeting.meetingRequest
192
204
  .leaveMeeting(leaveOptions)
193
205
  .then((response) => {
194
- if (response && response.body && response.body.locus) { // && !options.moveMeeting) {
206
+ if (response && response.body && response.body.locus) {
207
+ // && !options.moveMeeting) {
195
208
  meeting.locusInfo.onFullLocus(response.body.locus);
196
209
  }
197
210
 
@@ -209,9 +222,7 @@ MeetingUtil.leaveMeeting = (meeting, options = {}) => {
209
222
  // 1) on leave clean up the meeting or simply do a sync on the meeting
210
223
  // 2) If the error says meeting is inactive then destroy the meeting object
211
224
  LoggerProxy.logger.error(
212
- `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${
213
- meeting.id
214
- }, error: ${err}`
225
+ `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`
215
226
  );
216
227
 
217
228
  return Promise.reject(err);
@@ -221,23 +232,20 @@ MeetingUtil.declineMeeting = (meeting, reason) =>
221
232
  meeting.meetingRequest.declineMeeting({
222
233
  locusUrl: meeting.locusUrl,
223
234
  deviceUrl: meeting.deviceUrl,
224
- reason
235
+ reason,
225
236
  });
226
237
 
227
- MeetingUtil.isUserInLeftState = (locusInfo) =>
228
- locusInfo.parsedLocus?.self?.state === _LEFT_;
238
+ MeetingUtil.isUserInLeftState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_;
229
239
 
230
- MeetingUtil.isUserInIdleState = (locusInfo) =>
231
- locusInfo.parsedLocus?.self?.state === _IDLE_;
240
+ MeetingUtil.isUserInIdleState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_;
232
241
 
233
- MeetingUtil.isUserInJoinedState = (locusInfo) =>
234
- locusInfo.parsedLocus?.self?.state === _JOINED_;
242
+ MeetingUtil.isUserInJoinedState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_;
235
243
 
236
244
  MeetingUtil.isMediaEstablished = (currentMediaStatus) =>
237
- currentMediaStatus && (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share);
238
-
245
+ currentMediaStatus &&
246
+ (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share);
239
247
 
240
- MeetingUtil.joinMeetingOptions = (meeting, options = {}) => {
248
+ MeetingUtil.joinMeetingOptions = (meeting, options: any = {}) => {
241
249
  meeting.resourceId = meeting.resourceId || options.resourceId;
242
250
 
243
251
  if (meeting.requiredCaptcha) {
@@ -250,7 +258,7 @@ MeetingUtil.joinMeetingOptions = (meeting, options = {}) => {
250
258
  if (options.pin) {
251
259
  Metrics.postEvent({
252
260
  event: eventType.PIN_COLLECTED,
253
- meeting
261
+ meeting,
254
262
  });
255
263
  }
256
264
 
@@ -266,7 +274,7 @@ MeetingUtil.joinMeetingOptions = (meeting, options = {}) => {
266
274
  if (MeetingUtil.isPinOrGuest(err)) {
267
275
  Metrics.postEvent({
268
276
  event: eventType.PIN_PROMPT,
269
- meeting
277
+ meeting,
270
278
  });
271
279
 
272
280
  // request host pin or non host for unclaimed PMR, start of Scenario C
@@ -279,53 +287,8 @@ MeetingUtil.joinMeetingOptions = (meeting, options = {}) => {
279
287
  });
280
288
  };
281
289
 
282
- MeetingUtil.updateTransceiver = (options, meetingOptions) => {
283
- const {
284
- type,
285
- sendTrack,
286
- receiveTrack,
287
- track,
288
- transceiver,
289
- peerConnection,
290
- previousMediaDirection
291
- } = options;
292
-
293
- if ((sendTrack !== undefined && sendTrack !== previousMediaDirection.sendTrack) ||
294
- (receiveTrack !== undefined && receiveTrack !== previousMediaDirection.receiveTrack)) {
295
- return Media.updateTransceiver({
296
- meetingId: meetingOptions.meeting.id,
297
- remoteQualityLevel: meetingOptions.mediaProperties.remoteQualityLevel,
298
- enableRtx: meetingOptions.meeting.config.enableRtx,
299
- enableExtmap: meetingOptions.meeting.config.enableExtmap
300
- }, peerConnection, transceiver,
301
- {
302
- track,
303
- type,
304
- receiveTrack,
305
- sendTrack
306
- })
307
- .then(() => meetingOptions.meeting.roap
308
- .sendRoapMediaRequest({
309
- sdp: meetingOptions.mediaProperties.peerConnection.sdp,
310
- roapSeq: meetingOptions.meeting.roapSeq,
311
- meeting: meetingOptions.meeting // or can pass meeting ID
312
- }))
313
- .catch((e) => {
314
- LoggerProxy.logger.error(`Meeting:util#updateTransceiver --> Error updating the ${type} streams with error: ${e}`);
315
- });
316
- } if (track) {
317
- transceiver.sender.replaceTrack(track);
318
-
319
- return Promise.resolve();
320
- }
321
-
322
- return Promise.reject(new ParameterError('update Failed: please pass valid parameter'));
323
- };
324
-
325
290
  MeetingUtil.validateOptions = (options) => {
326
- const {
327
- sendVideo, sendAudio, sendShare, localStream, localShare
328
- } = options;
291
+ const {sendVideo, sendAudio, sendShare, localStream, localShare} = options;
329
292
 
330
293
  if (sendVideo && !MeetingUtil.getTrack(localStream).videoTrack) {
331
294
  return Promise.reject(new ParameterError('please pass valid video streams'));
@@ -383,71 +346,49 @@ MeetingUtil.getPolicyFromLocusInfo = (locusInfo) =>
383
346
  locusInfo.parsedLocus.info &&
384
347
  locusInfo.parsedLocus.info.policy;
385
348
 
386
- MeetingUtil.getUserDisplayHintsFromLocusInfo = (locusInfo) => locusInfo?.parsedLocus?.info?.userDisplayHints || [];
387
-
388
- MeetingUtil.canInviteNewParticipants = (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST);
389
-
390
- MeetingUtil.canAdmitParticipant = (displayHints) => displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN);
391
-
392
- MeetingUtil.canUserLock = (displayHints) => displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) && displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED);
349
+ MeetingUtil.getUserDisplayHintsFromLocusInfo = (locusInfo) =>
350
+ locusInfo?.parsedLocus?.info?.userDisplayHints || [];
393
351
 
394
- MeetingUtil.canUserUnlock = (displayHints) => displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) && displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED);
352
+ MeetingUtil.canInviteNewParticipants = (displayHints) =>
353
+ displayHints.includes(DISPLAY_HINTS.ADD_GUEST);
395
354
 
396
- MeetingUtil.canUserRecord = (displayHints) => displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START);
355
+ MeetingUtil.canAdmitParticipant = (displayHints) =>
356
+ displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN);
397
357
 
398
- MeetingUtil.canUserPause = (displayHints) => displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE);
358
+ MeetingUtil.canUserLock = (displayHints) =>
359
+ displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&
360
+ displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED);
399
361
 
400
- MeetingUtil.canUserResume = (displayHints) => displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME);
362
+ MeetingUtil.canUserUnlock = (displayHints) =>
363
+ displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&
364
+ displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED);
401
365
 
402
- MeetingUtil.canUserStop = (displayHints) => displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP);
403
-
404
- MeetingUtil.startRecording = (request, locusUrl, locusInfo) => {
405
- const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
406
-
407
- if (MeetingUtil.canUserRecord(displayHints)) {
408
- return request.recordMeeting({locusUrl, recording: true, paused: false});
409
- }
410
-
411
- return Promise.reject(new PermissionError('Start recording not allowed, due to moderator property.'));
412
- };
413
-
414
- MeetingUtil.pauseRecording = (request, locusUrl, locusInfo) => {
415
- const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
416
-
417
- if (MeetingUtil.canUserPause(displayHints)) {
418
- return request.recordMeeting({locusUrl, recording: true, paused: true});
419
- }
420
-
421
- return Promise.reject(new PermissionError('Pause recording not allowed, due to moderator property.'));
422
- };
423
-
424
- MeetingUtil.resumeRecording = (request, locusUrl, locusInfo) => {
425
- const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
426
-
427
- if (MeetingUtil.canUserResume(displayHints)) {
428
- return request.recordMeeting({locusUrl, recording: true, paused: false});
429
- }
366
+ MeetingUtil.canUserRaiseHand = (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND);
430
367
 
431
- return Promise.reject(new PermissionError('Resume recording not allowed, due to moderator property.'));
432
- };
368
+ MeetingUtil.canUserLowerAllHands = (displayHints) =>
369
+ displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS);
433
370
 
434
- MeetingUtil.stopRecording = (request, locusUrl, locusInfo) => {
435
- const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
371
+ MeetingUtil.canUserLowerSomeoneElsesHand = (displayHints) =>
372
+ displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND);
436
373
 
437
- if (MeetingUtil.canUserStop(displayHints)) {
438
- return request.recordMeeting({locusUrl, recording: false, paused: false});
439
- }
374
+ MeetingUtil.bothLeaveAndEndMeetingAvailable = (displayHints) =>
375
+ displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||
376
+ displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING);
440
377
 
441
- return Promise.reject(new PermissionError('Stop recording not allowed, due to moderator property.'));
442
- };
378
+ MeetingUtil.canManageBreakout = (displayHints) =>
379
+ displayHints.includes(DISPLAY_HINTS.BREAKOUT_MANAGEMENT);
443
380
 
444
- MeetingUtil.canUserRaiseHand = (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND);
381
+ MeetingUtil.isSuppressBreakoutSupport = (displayHints) =>
382
+ displayHints.includes(DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT);
445
383
 
446
- MeetingUtil.canUserLowerAllHands = (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS);
384
+ MeetingUtil.canAdmitLobbyToBreakout = (displayHints) =>
385
+ !displayHints.includes(DISPLAY_HINTS.DISABLE_LOBBY_TO_BREAKOUT);
447
386
 
448
- MeetingUtil.canUserLowerSomeoneElsesHand = (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND);
387
+ MeetingUtil.isBreakoutPreassignmentsEnabled = (displayHints) =>
388
+ !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_PREASSIGNMENTS);
449
389
 
450
- MeetingUtil.bothLeaveAndEndMeetingAvailable = (displayHints) => displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) || displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING);
390
+ MeetingUtil.canUserAskForHelp = (displayHints) =>
391
+ !displayHints.includes(DISPLAY_HINTS.DISABLE_ASK_FOR_HELP);
451
392
 
452
393
  MeetingUtil.lockMeeting = (actions, request, locusUrl) => {
453
394
  if (actions && actions.canLock) {
@@ -465,11 +406,11 @@ MeetingUtil.unlockMeeting = (actions, request, locusUrl) => {
465
406
  return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));
466
407
  };
467
408
 
468
- MeetingUtil.handleAudioLogging = (audioTrack) => {
409
+ MeetingUtil.handleAudioLogging = (audioTrack: LocalMicrophoneTrack | null) => {
469
410
  const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';
470
411
 
471
412
  if (audioTrack) {
472
- const settings = audioTrack.getSettings();
413
+ const settings = audioTrack.underlyingTrack.getSettings();
473
414
  const {deviceId} = settings;
474
415
 
475
416
  LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);
@@ -477,11 +418,11 @@ MeetingUtil.handleAudioLogging = (audioTrack) => {
477
418
  }
478
419
  };
479
420
 
480
- MeetingUtil.handleVideoLogging = (videoTrack) => {
421
+ MeetingUtil.handleVideoLogging = (videoTrack: LocalCameraTrack | null) => {
481
422
  const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';
482
423
 
483
424
  if (videoTrack) {
484
- const settings = videoTrack.getSettings();
425
+ const settings = videoTrack.underlyingTrack.getSettings();
485
426
  const {deviceId} = settings;
486
427
 
487
428
  LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);
@@ -519,31 +460,57 @@ MeetingUtil.endMeetingForAll = (meeting) => {
519
460
  .then(() => MeetingUtil.cleanUp(meeting))
520
461
  .catch((err) => {
521
462
  LoggerProxy.logger.error(
522
- `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${
523
- meeting.id
524
- }, error: ${err}`
463
+ `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`
525
464
  );
526
465
 
527
466
  return Promise.reject(err);
528
467
  });
529
468
  };
530
469
 
531
- MeetingUtil.canEnableClosedCaption = (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START);
470
+ MeetingUtil.canEnableClosedCaption = (displayHints) =>
471
+ displayHints.includes(DISPLAY_HINTS.CAPTION_START);
472
+
473
+ MeetingUtil.isSaveTranscriptsEnabled = (displayHints) =>
474
+ displayHints.includes(DISPLAY_HINTS.SAVE_TRANSCRIPTS_ENABLED);
532
475
 
533
- MeetingUtil.canStartTranscribing = (displayHints) => displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START);
476
+ MeetingUtil.canStartTranscribing = (displayHints) =>
477
+ displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START);
534
478
 
535
- MeetingUtil.canStopTranscribing = (displayHints) => displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP);
479
+ MeetingUtil.canStopTranscribing = (displayHints) =>
480
+ displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP);
536
481
 
537
- MeetingUtil.isClosedCaptionActive = (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE);
482
+ MeetingUtil.isClosedCaptionActive = (displayHints) =>
483
+ displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE);
538
484
 
539
- MeetingUtil.isWebexAssistantActive = (displayHints) => displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE);
485
+ MeetingUtil.isWebexAssistantActive = (displayHints) =>
486
+ displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE);
540
487
 
541
- MeetingUtil.canViewCaptionPanel = (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL);
488
+ MeetingUtil.canViewCaptionPanel = (displayHints) =>
489
+ displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL);
542
490
 
543
- MeetingUtil.isRealTimeTranslationEnabled = (displayHints) => displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION);
491
+ MeetingUtil.isRealTimeTranslationEnabled = (displayHints) =>
492
+ displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION);
544
493
 
545
- MeetingUtil.canSelectSpokenLanguages = (displayHints) => displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR);
494
+ MeetingUtil.canSelectSpokenLanguages = (displayHints) =>
495
+ displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR);
496
+
497
+ MeetingUtil.waitingForOthersToJoin = (displayHints) =>
498
+ displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS);
499
+
500
+ MeetingUtil.canSendReactions = (originalValue, displayHints) => {
501
+ if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {
502
+ return true;
503
+ }
504
+ if (displayHints.includes(DISPLAY_HINTS.REACTIONS_INACTIVE)) {
505
+ return false;
506
+ }
507
+
508
+ return originalValue;
509
+ };
510
+ MeetingUtil.canUserRenameSelfAndObserved = (displayHints) =>
511
+ displayHints.includes(DISPLAY_HINTS.CAN_RENAME_SELF_AND_OBSERVED);
546
512
 
547
- MeetingUtil.waitingForOthersToJoin = (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS);
513
+ MeetingUtil.canUserRenameOthers = (displayHints) =>
514
+ displayHints.includes(DISPLAY_HINTS.CAN_RENAME_OTHERS);
548
515
 
549
516
  export default MeetingUtil;
@@ -24,14 +24,18 @@ export default class MeetingInfoCollection extends Collection {
24
24
  * @public
25
25
  * @memberof MeetingInfoCollection
26
26
  */
27
- get(id) {
27
+ public get(id: string) {
28
+ // @ts-ignore
28
29
  if (this.meetingInfos[id]) {
30
+ // @ts-ignore
29
31
  return this.meetingInfos[id];
30
32
  }
31
33
 
32
34
  return find(
35
+ // @ts-ignore
33
36
  this.meetingInfos,
34
- (info) => info.sipUrl === id || info.locusId === id || info.userId === id || info.meetingLink === id
37
+ (info) =>
38
+ info.sipUrl === id || info.locusId === id || info.userId === id || info.meetingLink === id
35
39
  );
36
40
  }
37
41
  }
@@ -2,11 +2,7 @@
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
4
 
5
- import {
6
- _MEETING_LINK_,
7
- _SIP_URI_,
8
- _PERSONAL_ROOM_
9
- } from '../constants';
5
+ import {_MEETING_LINK_, _SIP_URI_, _PERSONAL_ROOM_} from '../constants';
10
6
  import LoggerProxy from '../common/logs/logger-proxy';
11
7
 
12
8
  import MeetingInfoCollection from './collection';
@@ -17,11 +13,15 @@ import MeetingInfoUtil from './util';
17
13
  * @class MeetingInfo
18
14
  */
19
15
  export default class MeetingInfo {
16
+ meetingInfoCollection: any;
17
+ meetingInfoRequest: any;
18
+ webex: any;
19
+
20
20
  /**
21
21
  *
22
22
  * @param {WebexSDK} webex
23
23
  */
24
- constructor(webex) {
24
+ constructor(webex: any) {
25
25
  this.webex = webex;
26
26
 
27
27
  /**
@@ -30,7 +30,7 @@ export default class MeetingInfo {
30
30
  * @type {Object}
31
31
  * @private
32
32
  * @memberof MeetingInfo
33
- */
33
+ */
34
34
  this.meetingInfoRequest = new MeetingInfoRequest(this.webex);
35
35
  /**
36
36
  * The meeting information collection interface
@@ -38,7 +38,7 @@ export default class MeetingInfo {
38
38
  * @type {Object}
39
39
  * @private
40
40
  * @memberof MeetingInfo
41
- */
41
+ */
42
42
  this.meetingInfoCollection = new MeetingInfoCollection();
43
43
  }
44
44
 
@@ -48,7 +48,7 @@ export default class MeetingInfo {
48
48
  * @public
49
49
  * @memberof MeetingInfo
50
50
  */
51
- getMeetingInfo(id) {
51
+ public getMeetingInfo(id: string) {
52
52
  return this.meetingInfoCollection.get(id);
53
53
  }
54
54
 
@@ -59,7 +59,7 @@ export default class MeetingInfo {
59
59
  * @public
60
60
  * @memberof MeetingInfo
61
61
  */
62
- setMeetingInfo(id, info) {
62
+ public setMeetingInfo(id: string, info: object) {
63
63
  this.meetingInfoCollection.set(id, info);
64
64
  }
65
65
 
@@ -70,18 +70,23 @@ export default class MeetingInfo {
70
70
  * @private
71
71
  * @memberof MeetingInfo
72
72
  */
73
- requestFetchInfo(options) {
74
- return this.meetingInfoRequest.fetchMeetingInfo(options).then((info) => {
75
- if (info && info.body) {
76
- this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);
77
- }
73
+ private requestFetchInfo(options: object) {
74
+ return this.meetingInfoRequest
75
+ .fetchMeetingInfo(options)
76
+ .then((info) => {
77
+ if (info && info.body) {
78
+ this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);
79
+ }
78
80
 
79
- return info;
80
- }).catch((error) => {
81
- LoggerProxy.logger.error(`Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`);
81
+ return info;
82
+ })
83
+ .catch((error) => {
84
+ LoggerProxy.logger.error(
85
+ `Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`
86
+ );
82
87
 
83
- return Promise.reject(error);
84
- });
88
+ return Promise.reject(error);
89
+ });
85
90
  }
86
91
 
87
92
  /**
@@ -92,11 +97,11 @@ export default class MeetingInfo {
92
97
  * @private
93
98
  * @memberof MeetingInfo
94
99
  */
95
- fetchInfoOptions(destination, type) {
100
+ private fetchInfoOptions(destination: string, type: string) {
96
101
  return MeetingInfoUtil.generateOptions({
97
102
  destination,
98
103
  type,
99
- webex: this.webex
104
+ webex: this.webex,
100
105
  });
101
106
  }
102
107
 
@@ -108,24 +113,25 @@ export default class MeetingInfo {
108
113
  * @public
109
114
  * @memberof MeetingInfo
110
115
  */
111
- fetchMeetingInfo(destination, type = null) {
116
+ public fetchMeetingInfo(destination: string, type: string = null) {
112
117
  if (type === _PERSONAL_ROOM_ && !destination) {
113
118
  destination = this.webex.internal.device.userId;
114
119
  }
115
120
 
116
- return this.fetchInfoOptions(
117
- MeetingInfoUtil.extractDestination(destination, type),
118
- type
119
- ).then((options) =>
120
- // fetch meeting info
121
- this.requestFetchInfo(options).catch((error) => {
122
- // if it failed the first time as meeting link
123
- if (options.type === _MEETING_LINK_) {
124
- // convert the meeting link to sip URI and retry
125
- return this.requestFetchInfo(this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_));
126
- }
121
+ return this.fetchInfoOptions(MeetingInfoUtil.extractDestination(destination, type), type).then(
122
+ (options) =>
123
+ // fetch meeting info
124
+ this.requestFetchInfo(options).catch((error) => {
125
+ // if it failed the first time as meeting link
126
+ if (options.type === _MEETING_LINK_) {
127
+ // convert the meeting link to sip URI and retry
128
+ return this.requestFetchInfo(
129
+ this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_)
130
+ );
131
+ }
127
132
 
128
- return Promise.reject(error);
129
- }));
133
+ return Promise.reject(error);
134
+ })
135
+ );
130
136
  }
131
137
  }