@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.400

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 (629) hide show
  1. package/README.md +58 -8
  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/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +11 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +347 -74
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +125 -18
  89. package/dist/index.js.map +1 -1
  90. package/dist/interceptors/index.js +15 -0
  91. package/dist/interceptors/index.js.map +1 -0
  92. package/dist/interceptors/locusRetry.js +93 -0
  93. package/dist/interceptors/locusRetry.js.map +1 -0
  94. package/dist/interpretation/collection.js +23 -0
  95. package/dist/interpretation/collection.js.map +1 -0
  96. package/dist/interpretation/index.js +380 -0
  97. package/dist/interpretation/index.js.map +1 -0
  98. package/dist/interpretation/siLanguage.js +25 -0
  99. package/dist/interpretation/siLanguage.js.map +1 -0
  100. package/dist/locus-info/controlsUtils.js +101 -29
  101. package/dist/locus-info/controlsUtils.js.map +1 -1
  102. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  103. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  104. package/dist/locus-info/fullState.js +0 -15
  105. package/dist/locus-info/fullState.js.map +1 -1
  106. package/dist/locus-info/hostUtils.js +4 -12
  107. package/dist/locus-info/hostUtils.js.map +1 -1
  108. package/dist/locus-info/index.js +564 -246
  109. package/dist/locus-info/index.js.map +1 -1
  110. package/dist/locus-info/infoUtils.js +10 -38
  111. package/dist/locus-info/infoUtils.js.map +1 -1
  112. package/dist/locus-info/mediaSharesUtils.js +82 -38
  113. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  114. package/dist/locus-info/parser.js +314 -163
  115. package/dist/locus-info/parser.js.map +1 -1
  116. package/dist/locus-info/selfUtils.js +110 -92
  117. package/dist/locus-info/selfUtils.js.map +1 -1
  118. package/dist/media/index.js +107 -231
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +137 -222
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +2 -9
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +316 -501
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +97 -14
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/meeting/index.js +5311 -3871
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/locusMediaRequest.js +292 -0
  131. package/dist/meeting/locusMediaRequest.js.map +1 -0
  132. package/dist/meeting/muteState.js +260 -183
  133. package/dist/meeting/muteState.js.map +1 -1
  134. package/dist/meeting/request.js +421 -347
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/request.type.js +7 -0
  137. package/dist/meeting/request.type.js.map +1 -0
  138. package/dist/meeting/state.js +21 -31
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/meeting/util.js +672 -585
  141. package/dist/meeting/util.js.map +1 -1
  142. package/dist/meeting/voicea-meeting.js +172 -0
  143. package/dist/meeting/voicea-meeting.js.map +1 -0
  144. package/dist/meeting-info/collection.js +6 -25
  145. package/dist/meeting-info/collection.js.map +1 -1
  146. package/dist/meeting-info/index.js +87 -39
  147. package/dist/meeting-info/index.js.map +1 -1
  148. package/dist/meeting-info/meeting-info-v2.js +352 -283
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.js +3 -15
  151. package/dist/meeting-info/request.js.map +1 -1
  152. package/dist/meeting-info/util.js +99 -183
  153. package/dist/meeting-info/util.js.map +1 -1
  154. package/dist/meeting-info/utilv2.js +147 -234
  155. package/dist/meeting-info/utilv2.js.map +1 -1
  156. package/dist/meetings/collection.js +43 -19
  157. package/dist/meetings/collection.js.map +1 -1
  158. package/dist/meetings/index.js +895 -600
  159. package/dist/meetings/index.js.map +1 -1
  160. package/dist/meetings/meetings.types.js +7 -0
  161. package/dist/meetings/meetings.types.js.map +1 -0
  162. package/dist/meetings/request.js +26 -41
  163. package/dist/meetings/request.js.map +1 -1
  164. package/dist/meetings/util.js +184 -157
  165. package/dist/meetings/util.js.map +1 -1
  166. package/dist/member/index.js +134 -85
  167. package/dist/member/index.js.map +1 -1
  168. package/dist/member/types.js +25 -0
  169. package/dist/member/types.js.map +1 -0
  170. package/dist/member/util.js +158 -88
  171. package/dist/member/util.js.map +1 -1
  172. package/dist/members/collection.js +13 -12
  173. package/dist/members/collection.js.map +1 -1
  174. package/dist/members/index.js +194 -204
  175. package/dist/members/index.js.map +1 -1
  176. package/dist/members/request.js +113 -68
  177. package/dist/members/request.js.map +1 -1
  178. package/dist/members/types.js +15 -0
  179. package/dist/members/types.js.map +1 -0
  180. package/dist/members/util.js +324 -259
  181. package/dist/members/util.js.map +1 -1
  182. package/dist/metrics/constants.js +19 -7
  183. package/dist/metrics/constants.js.map +1 -1
  184. package/dist/metrics/index.js +11 -558
  185. package/dist/metrics/index.js.map +1 -1
  186. package/dist/multistream/mediaRequestManager.js +263 -50
  187. package/dist/multistream/mediaRequestManager.js.map +1 -1
  188. package/dist/multistream/receiveSlot.js +58 -65
  189. package/dist/multistream/receiveSlot.js.map +1 -1
  190. package/dist/multistream/receiveSlotManager.js +76 -95
  191. package/dist/multistream/receiveSlotManager.js.map +1 -1
  192. package/dist/multistream/remoteMedia.js +62 -76
  193. package/dist/multistream/remoteMedia.js.map +1 -1
  194. package/dist/multistream/remoteMediaGroup.js +82 -45
  195. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  196. package/dist/multistream/remoteMediaManager.js +657 -448
  197. package/dist/multistream/remoteMediaManager.js.map +1 -1
  198. package/dist/multistream/sendSlotManager.js +255 -0
  199. package/dist/multistream/sendSlotManager.js.map +1 -0
  200. package/dist/networkQualityMonitor/index.js +40 -59
  201. package/dist/networkQualityMonitor/index.js.map +1 -1
  202. package/dist/personal-meeting-room/index.js +21 -45
  203. package/dist/personal-meeting-room/index.js.map +1 -1
  204. package/dist/personal-meeting-room/request.js +1 -31
  205. package/dist/personal-meeting-room/request.js.map +1 -1
  206. package/dist/personal-meeting-room/util.js +0 -13
  207. package/dist/personal-meeting-room/util.js.map +1 -1
  208. package/dist/reachability/clusterReachability.js +356 -0
  209. package/dist/reachability/clusterReachability.js.map +1 -0
  210. package/dist/reachability/index.js +297 -460
  211. package/dist/reachability/index.js.map +1 -1
  212. package/dist/reachability/request.js +20 -26
  213. package/dist/reachability/request.js.map +1 -1
  214. package/dist/reachability/util.js +29 -0
  215. package/dist/reachability/util.js.map +1 -0
  216. package/dist/reactions/constants.js +13 -0
  217. package/dist/reactions/constants.js.map +1 -0
  218. package/dist/reactions/reactions.js +109 -0
  219. package/dist/reactions/reactions.js.map +1 -0
  220. package/dist/reactions/reactions.type.js +36 -0
  221. package/dist/reactions/reactions.type.js.map +1 -0
  222. package/dist/reconnection-manager/index.js +413 -483
  223. package/dist/reconnection-manager/index.js.map +1 -1
  224. package/dist/recording-controller/enums.js +17 -0
  225. package/dist/recording-controller/enums.js.map +1 -0
  226. package/dist/recording-controller/index.js +362 -0
  227. package/dist/recording-controller/index.js.map +1 -0
  228. package/dist/recording-controller/util.js +64 -0
  229. package/dist/recording-controller/util.js.map +1 -0
  230. package/dist/roap/index.js +102 -86
  231. package/dist/roap/index.js.map +1 -1
  232. package/dist/roap/request.js +131 -135
  233. package/dist/roap/request.js.map +1 -1
  234. package/dist/roap/turnDiscovery.js +437 -116
  235. package/dist/roap/turnDiscovery.js.map +1 -1
  236. package/dist/rtcMetrics/constants.js +12 -0
  237. package/dist/rtcMetrics/constants.js.map +1 -0
  238. package/dist/rtcMetrics/index.js +179 -0
  239. package/dist/rtcMetrics/index.js.map +1 -0
  240. package/dist/statsAnalyzer/global.js +1 -95
  241. package/dist/statsAnalyzer/global.js.map +1 -1
  242. package/dist/statsAnalyzer/index.js +557 -583
  243. package/dist/statsAnalyzer/index.js.map +1 -1
  244. package/dist/statsAnalyzer/mqaUtil.js +326 -130
  245. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  246. package/dist/transcription/index.js +22 -47
  247. package/dist/transcription/index.js.map +1 -1
  248. package/dist/types/annotation/annotation.types.d.ts +42 -0
  249. package/dist/types/annotation/constants.d.ts +31 -0
  250. package/dist/types/annotation/index.d.ts +117 -0
  251. package/dist/types/breakouts/breakout.d.ts +8 -0
  252. package/dist/types/breakouts/collection.d.ts +5 -0
  253. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  254. package/dist/types/breakouts/events.d.ts +8 -0
  255. package/dist/types/breakouts/index.d.ts +5 -0
  256. package/dist/types/breakouts/request.d.ts +22 -0
  257. package/dist/types/breakouts/utils.d.ts +15 -0
  258. package/dist/types/common/browser-detection.d.ts +9 -0
  259. package/dist/types/common/collection.d.ts +48 -0
  260. package/dist/types/common/config.d.ts +2 -0
  261. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  262. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  263. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  264. package/dist/types/common/errors/media.d.ts +15 -0
  265. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  266. package/dist/types/common/errors/parameter.d.ts +15 -0
  267. package/dist/types/common/errors/password-error.d.ts +15 -0
  268. package/dist/types/common/errors/permission.d.ts +14 -0
  269. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  270. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  271. package/dist/types/common/errors/reconnection.d.ts +15 -0
  272. package/dist/types/common/errors/stats.d.ts +15 -0
  273. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  274. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  275. package/dist/types/common/events/events-scope.d.ts +17 -0
  276. package/dist/types/common/events/events.d.ts +12 -0
  277. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  278. package/dist/types/common/events/util.d.ts +2 -0
  279. package/dist/types/common/logs/logger-config.d.ts +2 -0
  280. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  281. package/dist/types/common/logs/request.d.ts +36 -0
  282. package/dist/types/common/queue.d.ts +34 -0
  283. package/dist/types/config.d.ts +72 -0
  284. package/dist/types/constants.d.ts +1088 -0
  285. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  286. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  287. package/dist/types/controls-options-manager/index.d.ts +136 -0
  288. package/dist/types/controls-options-manager/types.d.ts +43 -0
  289. package/dist/types/controls-options-manager/util.d.ts +1 -0
  290. package/dist/types/index.d.ts +7 -0
  291. package/dist/types/interceptors/index.d.ts +2 -0
  292. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  293. package/dist/types/interpretation/collection.d.ts +5 -0
  294. package/dist/types/interpretation/index.d.ts +5 -0
  295. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  296. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  297. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  298. package/dist/types/locus-info/fullState.d.ts +2 -0
  299. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  300. package/dist/types/locus-info/index.d.ts +322 -0
  301. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  302. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  303. package/dist/types/locus-info/parser.d.ts +272 -0
  304. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  305. package/dist/types/media/index.d.ts +34 -0
  306. package/dist/types/media/properties.d.ts +93 -0
  307. package/dist/types/media/util.d.ts +2 -0
  308. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  309. package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
  310. package/dist/types/meeting/index.d.ts +1824 -0
  311. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  312. package/dist/types/meeting/muteState.d.ts +178 -0
  313. package/dist/types/meeting/request.d.ts +293 -0
  314. package/dist/types/meeting/request.type.d.ts +11 -0
  315. package/dist/types/meeting/state.d.ts +9 -0
  316. package/dist/types/meeting/util.d.ts +118 -0
  317. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  318. package/dist/types/meeting-info/collection.d.ts +20 -0
  319. package/dist/types/meeting-info/index.d.ts +69 -0
  320. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  321. package/dist/types/meeting-info/request.d.ts +22 -0
  322. package/dist/types/meeting-info/util.d.ts +2 -0
  323. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  324. package/dist/types/meetings/collection.d.ts +40 -0
  325. package/dist/types/meetings/index.d.ts +389 -0
  326. package/dist/types/meetings/meetings.types.d.ts +4 -0
  327. package/dist/types/meetings/request.d.ts +27 -0
  328. package/dist/types/meetings/util.d.ts +18 -0
  329. package/dist/types/member/index.d.ts +160 -0
  330. package/dist/types/member/types.d.ts +32 -0
  331. package/dist/types/member/util.d.ts +2 -0
  332. package/dist/types/members/collection.d.ts +29 -0
  333. package/dist/types/members/index.d.ts +353 -0
  334. package/dist/types/members/request.d.ts +114 -0
  335. package/dist/types/members/types.d.ts +25 -0
  336. package/dist/types/members/util.d.ts +215 -0
  337. package/dist/types/metrics/constants.d.ts +70 -0
  338. package/dist/types/metrics/index.d.ts +45 -0
  339. package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
  340. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  341. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  342. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  343. package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
  344. package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
  345. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  346. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  347. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  348. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  349. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  350. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  351. package/dist/types/reachability/index.d.ts +105 -0
  352. package/dist/types/reachability/request.d.ts +39 -0
  353. package/dist/types/reachability/util.d.ts +8 -0
  354. package/dist/types/reactions/constants.d.ts +3 -0
  355. package/dist/types/reactions/reactions.d.ts +4 -0
  356. package/dist/types/reactions/reactions.type.d.ts +52 -0
  357. package/dist/types/reconnection-manager/index.d.ts +136 -0
  358. package/dist/types/recording-controller/enums.d.ts +7 -0
  359. package/dist/types/recording-controller/index.d.ts +207 -0
  360. package/dist/types/recording-controller/util.d.ts +14 -0
  361. package/dist/types/roap/index.d.ts +86 -0
  362. package/dist/types/roap/request.d.ts +39 -0
  363. package/dist/types/roap/turnDiscovery.d.ts +155 -0
  364. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  365. package/dist/types/rtcMetrics/index.d.ts +61 -0
  366. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  367. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  368. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  369. package/dist/types/transcription/index.d.ts +64 -0
  370. package/dist/types/webinar/collection.d.ts +16 -0
  371. package/dist/types/webinar/index.d.ts +5 -0
  372. package/dist/webinar/collection.js +44 -0
  373. package/dist/webinar/collection.js.map +1 -0
  374. package/dist/webinar/index.js +69 -0
  375. package/dist/webinar/index.js.map +1 -0
  376. package/internal-README.md +7 -6
  377. package/package.json +30 -21
  378. package/src/annotation/annotation.types.ts +50 -0
  379. package/src/annotation/constants.ts +36 -0
  380. package/src/annotation/index.ts +328 -0
  381. package/src/breakouts/README.md +220 -0
  382. package/src/breakouts/breakout.ts +188 -0
  383. package/src/breakouts/collection.ts +19 -0
  384. package/src/breakouts/edit-lock-error.ts +25 -0
  385. package/src/breakouts/events.ts +56 -0
  386. package/src/breakouts/index.ts +925 -0
  387. package/src/breakouts/request.ts +55 -0
  388. package/src/breakouts/utils.ts +57 -0
  389. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  390. package/src/common/collection.ts +9 -7
  391. package/src/common/{config.js → config.ts} +1 -1
  392. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  393. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  394. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  395. package/src/common/errors/{media.js → media.ts} +11 -7
  396. package/src/common/errors/no-meeting-info.ts +24 -0
  397. package/src/common/errors/parameter.ts +11 -7
  398. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  399. package/src/common/errors/{permission.js → permission.ts} +10 -6
  400. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  401. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  402. package/src/common/errors/{stats.js → stats.ts} +11 -7
  403. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  404. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  405. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  406. package/src/common/events/{events.js → events.ts} +5 -1
  407. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  408. package/src/common/events/{util.js → util.ts} +2 -3
  409. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  410. package/src/common/logs/logger-proxy.ts +44 -0
  411. package/src/common/logs/{request.js → request.ts} +26 -9
  412. package/src/common/queue.ts +22 -9
  413. package/src/{config.js → config.ts} +19 -21
  414. package/src/constants.ts +296 -27
  415. package/src/controls-options-manager/constants.ts +5 -0
  416. package/src/controls-options-manager/enums.ts +18 -0
  417. package/src/controls-options-manager/index.ts +278 -0
  418. package/src/controls-options-manager/types.ts +59 -0
  419. package/src/controls-options-manager/util.ts +300 -0
  420. package/src/index.ts +45 -0
  421. package/src/interceptors/index.ts +3 -0
  422. package/src/interceptors/locusRetry.ts +67 -0
  423. package/src/interpretation/README.md +60 -0
  424. package/src/interpretation/collection.ts +19 -0
  425. package/src/interpretation/index.ts +349 -0
  426. package/src/interpretation/siLanguage.ts +18 -0
  427. package/src/locus-info/controlsUtils.ts +222 -0
  428. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  429. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  430. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  431. package/src/locus-info/{index.js → index.ts} +561 -119
  432. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  433. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
  434. package/src/locus-info/{parser.js → parser.ts} +303 -104
  435. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  436. package/src/media/index.ts +460 -0
  437. package/src/media/properties.ts +283 -0
  438. package/src/media/{util.js → util.ts} +2 -2
  439. package/src/mediaQualityMetrics/config.ts +249 -0
  440. package/src/meeting/in-meeting-actions.ts +199 -3
  441. package/src/meeting/index.ts +8494 -0
  442. package/src/meeting/locusMediaRequest.ts +313 -0
  443. package/src/meeting/muteState.ts +465 -0
  444. package/src/meeting/request.ts +912 -0
  445. package/src/meeting/request.type.ts +13 -0
  446. package/src/meeting/{state.js → state.ts} +50 -35
  447. package/src/meeting/util.ts +799 -0
  448. package/src/meeting/voicea-meeting.ts +122 -0
  449. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  450. package/src/meeting-info/index.ts +210 -0
  451. package/src/meeting-info/meeting-info-v2.ts +423 -0
  452. package/src/meeting-info/{request.js → request.ts} +14 -4
  453. package/src/meeting-info/{util.js → util.ts} +70 -58
  454. package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
  455. package/src/meetings/collection.ts +76 -0
  456. package/src/meetings/index.ts +1539 -0
  457. package/src/meetings/meetings.types.ts +12 -0
  458. package/src/meetings/{request.js → request.ts} +34 -25
  459. package/src/meetings/{util.js → util.ts} +133 -38
  460. package/src/member/{index.js → index.ts} +159 -56
  461. package/src/member/types.ts +38 -0
  462. package/src/member/util.ts +397 -0
  463. package/src/members/{collection.js → collection.ts} +10 -2
  464. package/src/members/{index.js → index.ts} +351 -146
  465. package/src/members/request.ts +255 -0
  466. package/src/members/types.ts +29 -0
  467. package/src/members/util.ts +353 -0
  468. package/src/metrics/{constants.js → constants.ts} +17 -6
  469. package/src/metrics/index.ts +73 -0
  470. package/src/multistream/mediaRequestManager.ts +341 -64
  471. package/src/multistream/receiveSlot.ts +69 -26
  472. package/src/multistream/receiveSlotManager.ts +66 -42
  473. package/src/multistream/remoteMedia.ts +40 -5
  474. package/src/multistream/remoteMediaGroup.ts +82 -3
  475. package/src/multistream/remoteMediaManager.ts +401 -81
  476. package/src/multistream/sendSlotManager.ts +199 -0
  477. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  478. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  479. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  480. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  481. package/src/reachability/clusterReachability.ts +320 -0
  482. package/src/reachability/index.ts +371 -0
  483. package/src/reachability/request.ts +50 -35
  484. package/src/reachability/util.ts +24 -0
  485. package/src/reactions/constants.ts +4 -0
  486. package/src/reactions/reactions.ts +104 -0
  487. package/src/reactions/reactions.type.ts +62 -0
  488. package/src/reconnection-manager/index.ts +643 -0
  489. package/src/recording-controller/enums.ts +8 -0
  490. package/src/recording-controller/index.ts +332 -0
  491. package/src/recording-controller/util.ts +75 -0
  492. package/src/roap/index.ts +288 -0
  493. package/src/roap/request.ts +153 -0
  494. package/src/roap/turnDiscovery.ts +374 -70
  495. package/src/rtcMetrics/constants.ts +3 -0
  496. package/src/rtcMetrics/index.ts +166 -0
  497. package/src/statsAnalyzer/global.ts +37 -0
  498. package/src/statsAnalyzer/index.ts +1275 -0
  499. package/src/statsAnalyzer/mqaUtil.ts +440 -0
  500. package/src/transcription/{index.js → index.ts} +46 -39
  501. package/src/webinar/collection.ts +31 -0
  502. package/src/webinar/index.ts +62 -0
  503. package/test/integration/spec/converged-space-meetings.js +233 -0
  504. package/test/integration/spec/journey.js +791 -531
  505. package/test/integration/spec/space-meeting.js +391 -204
  506. package/test/integration/spec/transcription.js +7 -8
  507. package/test/unit/spec/annotation/index.ts +418 -0
  508. package/test/unit/spec/breakouts/breakout.ts +238 -0
  509. package/test/unit/spec/breakouts/collection.ts +15 -0
  510. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  511. package/test/unit/spec/breakouts/events.ts +89 -0
  512. package/test/unit/spec/breakouts/index.ts +1793 -0
  513. package/test/unit/spec/breakouts/request.ts +104 -0
  514. package/test/unit/spec/breakouts/utils.js +72 -0
  515. package/test/unit/spec/common/browser-detection.js +9 -28
  516. package/test/unit/spec/common/queue.js +31 -2
  517. package/test/unit/spec/controls-options-manager/index.js +287 -0
  518. package/test/unit/spec/controls-options-manager/util.js +582 -0
  519. package/test/unit/spec/fixture/locus.js +93 -90
  520. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  521. package/test/unit/spec/interpretation/collection.ts +15 -0
  522. package/test/unit/spec/interpretation/index.ts +625 -0
  523. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  524. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  525. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  526. package/test/unit/spec/locus-info/index.js +1458 -21
  527. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  528. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  529. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  530. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  531. package/test/unit/spec/locus-info/parser.js +119 -44
  532. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  533. package/test/unit/spec/locus-info/selfUtils.js +291 -12
  534. package/test/unit/spec/media/index.ts +194 -111
  535. package/test/unit/spec/media/properties.ts +11 -11
  536. package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
  537. package/test/unit/spec/meeting/index.js +8616 -1921
  538. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  539. package/test/unit/spec/meeting/muteState.js +568 -207
  540. package/test/unit/spec/meeting/request.js +602 -82
  541. package/test/unit/spec/meeting/utils.js +867 -179
  542. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  543. package/test/unit/spec/meeting-info/index.js +300 -0
  544. package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
  545. package/test/unit/spec/meeting-info/request.js +7 -9
  546. package/test/unit/spec/meeting-info/util.js +11 -12
  547. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  548. package/test/unit/spec/meetings/collection.js +27 -1
  549. package/test/unit/spec/meetings/index.js +1826 -374
  550. package/test/unit/spec/meetings/utils.js +243 -14
  551. package/test/unit/spec/member/index.js +61 -7
  552. package/test/unit/spec/member/util.js +526 -26
  553. package/test/unit/spec/members/index.js +536 -55
  554. package/test/unit/spec/members/request.js +228 -40
  555. package/test/unit/spec/members/utils.js +217 -4
  556. package/test/unit/spec/metrics/index.js +13 -68
  557. package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
  558. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  559. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  560. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  561. package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
  562. package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
  563. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  564. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  565. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  566. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  567. package/test/unit/spec/reachability/index.ts +606 -26
  568. package/test/unit/spec/reachability/request.js +68 -0
  569. package/test/unit/spec/reachability/util.ts +40 -0
  570. package/test/unit/spec/reconnection-manager/index.js +222 -34
  571. package/test/unit/spec/recording-controller/index.js +306 -0
  572. package/test/unit/spec/recording-controller/util.js +229 -0
  573. package/test/unit/spec/roap/index.ts +238 -82
  574. package/test/unit/spec/roap/request.ts +255 -0
  575. package/test/unit/spec/roap/turnDiscovery.ts +707 -110
  576. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  577. package/test/unit/spec/stats-analyzer/index.js +1331 -62
  578. package/test/unit/spec/webinar/collection.ts +13 -0
  579. package/test/unit/spec/webinar/index.ts +60 -0
  580. package/test/utils/cmr.js +44 -42
  581. package/test/utils/constants.js +9 -0
  582. package/test/utils/integrationTestUtils.js +46 -0
  583. package/test/utils/testUtils.js +63 -99
  584. package/test/utils/webex-config.js +22 -18
  585. package/test/utils/webex-test-users.js +65 -50
  586. package/tsconfig.json +6 -0
  587. package/dist/media/internal-media-core-wrapper.js +0 -22
  588. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  589. package/dist/meeting/effectsState.js +0 -327
  590. package/dist/meeting/effectsState.js.map +0 -1
  591. package/dist/metrics/config.js +0 -301
  592. package/dist/metrics/config.js.map +0 -1
  593. package/dist/multistream/multistreamMedia.js +0 -116
  594. package/dist/multistream/multistreamMedia.js.map +0 -1
  595. package/dist/peer-connection-manager/util.js +0 -124
  596. package/dist/peer-connection-manager/util.js.map +0 -1
  597. package/src/common/logs/logger-proxy.js +0 -33
  598. package/src/index.js +0 -15
  599. package/src/locus-info/controlsUtils.js +0 -102
  600. package/src/media/index.js +0 -459
  601. package/src/media/internal-media-core-wrapper.ts +0 -9
  602. package/src/media/properties.js +0 -289
  603. package/src/mediaQualityMetrics/config.js +0 -382
  604. package/src/meeting/effectsState.js +0 -205
  605. package/src/meeting/index.js +0 -6284
  606. package/src/meeting/muteState.js +0 -318
  607. package/src/meeting/request.js +0 -684
  608. package/src/meeting/util.js +0 -506
  609. package/src/meeting-info/index.js +0 -131
  610. package/src/meeting-info/meeting-info-v2.js +0 -255
  611. package/src/meetings/collection.js +0 -40
  612. package/src/meetings/index.js +0 -1015
  613. package/src/member/util.js +0 -254
  614. package/src/members/request.js +0 -131
  615. package/src/members/util.js +0 -258
  616. package/src/metrics/config.js +0 -324
  617. package/src/metrics/index.js +0 -530
  618. package/src/multistream/multistreamMedia.ts +0 -92
  619. package/src/peer-connection-manager/util.ts +0 -117
  620. package/src/reachability/index.js +0 -464
  621. package/src/reconnection-manager/index.js +0 -519
  622. package/src/roap/index.js +0 -220
  623. package/src/roap/request.js +0 -127
  624. package/src/statsAnalyzer/global.js +0 -133
  625. package/src/statsAnalyzer/index.js +0 -1006
  626. package/src/statsAnalyzer/mqaUtil.js +0 -173
  627. package/test/unit/spec/meeting/effectsState.js +0 -291
  628. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  629. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -0,0 +1,199 @@
1
+ import {
2
+ SendSlot,
3
+ MediaType,
4
+ LocalStream,
5
+ MultistreamRoapMediaConnection,
6
+ } from '@webex/internal-media-core';
7
+
8
+ import {NamedMediaGroup} from '@webex/json-multistream';
9
+
10
+ export default class SendSlotManager {
11
+ private readonly slots: Map<MediaType, SendSlot> = new Map();
12
+ private readonly LoggerProxy: any;
13
+
14
+ constructor(LoggerProxy: any) {
15
+ this.LoggerProxy = LoggerProxy;
16
+ }
17
+
18
+ /**
19
+ * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
20
+ * @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created
21
+ * @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
22
+ * @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true
23
+ * @returns {SendSlot} slot The created sendSlot
24
+ */
25
+ public createSlot(
26
+ mediaConnection: MultistreamRoapMediaConnection,
27
+ mediaType: MediaType,
28
+ active = true
29
+ ): SendSlot {
30
+ if (this.slots.has(mediaType)) {
31
+ throw new Error(`Slot for ${mediaType} already exists`);
32
+ }
33
+
34
+ const slot: SendSlot = mediaConnection.createSendSlot(mediaType, active);
35
+
36
+ this.slots.set(mediaType, slot);
37
+
38
+ this.LoggerProxy.logger.info(
39
+ `SendSlotsManager->createSlot#Created slot for ${mediaType} with active ${active}`
40
+ );
41
+
42
+ return slot;
43
+ }
44
+
45
+ /**
46
+ * This method is used to retrieve the sendSlot for the given mediaType
47
+ * @param {MediaType} mediaType of which the slot needs to be retrieved
48
+ * @returns {SendSlot}
49
+ */
50
+ public getSlot(mediaType: MediaType): SendSlot {
51
+ const slot = this.slots.get(mediaType);
52
+
53
+ if (!slot) {
54
+ throw new Error(`Slot for ${mediaType} does not exist`);
55
+ }
56
+
57
+ return slot;
58
+ }
59
+
60
+ /**
61
+ * Allow users to specify 'namedMediaGroups' to indicate which named media group its audio should be sent to.
62
+ * @param {MediaType} mediaType MediaType of the sendSlot to which the audio stream needs to be send to the media group
63
+ * @param {[]}namedMediaGroups - Allow users to specify 'namedMediaGroups'.If the value of 'namedMediaGroups' is zero,
64
+ * named media group will be canceled and the audio stream will be sent to the floor.
65
+ * @returns {void}
66
+ */
67
+ public setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: NamedMediaGroup[]) {
68
+ if (mediaType !== MediaType.AudioMain) {
69
+ throw new Error(
70
+ `sendSlotManager cannot set named media group which media type is ${mediaType}`
71
+ );
72
+ }
73
+
74
+ const slot = this.slots.get(mediaType);
75
+
76
+ if (!slot) {
77
+ throw new Error(`Slot for ${mediaType} does not exist`);
78
+ }
79
+
80
+ slot.setNamedMediaGroups(namedMediaGroups);
81
+
82
+ this.LoggerProxy.logger.info(
83
+ `SendSlotsManager->setNamedMediaGroups#set named media group ${namedMediaGroups}`
84
+ );
85
+ }
86
+
87
+ /**
88
+ * This method publishes the given stream to the sendSlot for the given mediaType
89
+ * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
90
+ * @param {LocalStream} stream LocalStream to be published
91
+ * @returns {Promise<void>}
92
+ */
93
+ public async publishStream(mediaType: MediaType, stream: LocalStream): Promise<void> {
94
+ const slot = this.slots.get(mediaType);
95
+
96
+ if (!slot) {
97
+ throw new Error(`Slot for ${mediaType} does not exist`);
98
+ }
99
+
100
+ await slot.publishStream(stream);
101
+
102
+ this.LoggerProxy.logger.info(
103
+ `SendSlotsManager->publishStream#Published stream for ${mediaType} and stream with label ${stream.label} and muted ${stream.muted}`
104
+ );
105
+ }
106
+
107
+ /**
108
+ * This method unpublishes the stream from the sendSlot of the given mediaType
109
+ * @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
110
+ * @returns {Promise<void>}
111
+ */
112
+ public async unpublishStream(mediaType: MediaType): Promise<void> {
113
+ const slot = this.slots.get(mediaType);
114
+
115
+ if (!slot) {
116
+ throw new Error(`Slot for ${mediaType} does not exist`);
117
+ }
118
+
119
+ await slot.unpublishStream();
120
+
121
+ this.LoggerProxy.logger.info(
122
+ `SendSlotsManager->unpublishStream#Unpublished stream for ${mediaType}`
123
+ );
124
+ }
125
+
126
+ /**
127
+ * This method is used to set the active state of the sendSlot for the given mediaType
128
+ * @param {MediaType} mediaType The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
129
+ * @param {boolean} active The boolean to set the active state of the sendSlot. Default is true
130
+ * @returns {void}
131
+ */
132
+ public setActive(mediaType: MediaType, active = true): void {
133
+ const slot = this.slots.get(mediaType);
134
+
135
+ if (!slot) {
136
+ throw new Error(`Slot for ${mediaType} does not exist`);
137
+ }
138
+
139
+ slot.active = active;
140
+
141
+ this.LoggerProxy.logger.info(
142
+ `SendSlotsManager->setActive#Set active for ${mediaType} to ${active}`
143
+ );
144
+ }
145
+
146
+ /**
147
+ * This method is used to set the codec parameters for the sendSlot of the given mediaType
148
+ * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
149
+ * @param {Object} codecParameters
150
+ * @returns {Promise<void>}
151
+ */
152
+ public async setCodecParameters(
153
+ mediaType: MediaType,
154
+ codecParameters: {
155
+ [key: string]: string | undefined; // As per ts-sdp undefined is considered as a valid value to be used for codec parameters
156
+ }
157
+ ): Promise<void> {
158
+ // These codec parameter changes underneath are SDP value changes that are taken care by WCME automatically. So no need for any change in streams from the web sdk side
159
+ const slot = this.slots.get(mediaType);
160
+
161
+ if (!slot) {
162
+ throw new Error(`Slot for ${mediaType} does not exist`);
163
+ }
164
+
165
+ await slot.setCodecParameters(codecParameters);
166
+
167
+ this.LoggerProxy.logger.info(
168
+ `SendSlotsManager->setCodecParameters#Set codec parameters for ${mediaType} to ${codecParameters}`
169
+ );
170
+ }
171
+
172
+ /**
173
+ * This method is used to delete the codec parameters for the sendSlot of the given mediaType
174
+ * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
175
+ * @param {Array<String>} parameters Array of keys of the codec parameters to be deleted
176
+ * @returns {Promise<void>}
177
+ */
178
+ public async deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void> {
179
+ const slot = this.slots.get(mediaType);
180
+
181
+ if (!slot) {
182
+ throw new Error(`Slot for ${mediaType} does not exist`);
183
+ }
184
+
185
+ await slot.deleteCodecParameters(parameters);
186
+
187
+ this.LoggerProxy.logger.info(
188
+ `SendSlotsManager->deleteCodecParameters#Deleted the following codec parameters -> ${parameters} for ${mediaType}`
189
+ );
190
+ }
191
+
192
+ /**
193
+ * This method is used to reset the SendSlotsManager by deleting all the sendSlots
194
+ * @returns {undefined}
195
+ */
196
+ public reset(): void {
197
+ this.slots.clear();
198
+ }
199
+ }
@@ -1,16 +1,15 @@
1
1
  import EventsScope from '../common/events/events-scope';
2
- import {EVENT_TRIGGERS, STATS} from '../constants';
3
-
2
+ import {EVENT_TRIGGERS} from '../constants';
4
3
 
5
4
  /**
6
- * Meeting - network quality event
7
- * Emitted on each interval of retrieving stats Analyzer data
8
- * @event network:quality
9
- * @type {Object}
10
- * @property {string} mediaType {video|audio}
11
- * @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
12
- * @memberof NetworkQualityMonitor
13
- */
5
+ * Meeting - network quality event
6
+ * Emitted on each interval of retrieving stats Analyzer data
7
+ * @event network:quality
8
+ * @type {Object}
9
+ * @property {string} mediaType {video|audio}
10
+ * @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
11
+ * @memberof NetworkQualityMonitor
12
+ */
14
13
  /**
15
14
  * NetworkQualityMonitor class that will emit events based on detected quality
16
15
  *
@@ -18,6 +17,13 @@ import {EVENT_TRIGGERS, STATS} from '../constants';
18
17
  * @extends {EventsScope}
19
18
  */
20
19
  export default class NetworkQualityMonitor extends EventsScope {
20
+ config: any;
21
+ frequencyTypes: any;
22
+ indicatorTypes: any;
23
+ mediaType: any;
24
+ networkQualityScore: any;
25
+ networkQualityStatus: any;
26
+
21
27
  /**
22
28
  * Creates a new instance of NetworkQualityMonitor
23
29
  * @constructor
@@ -29,25 +35,21 @@ export default class NetworkQualityMonitor extends EventsScope {
29
35
  * @property {Object} networkQualityStatus - hash object based on indicatorTypes and frequencyTypes
30
36
  * @property {string} mediaType - audio|video
31
37
  */
32
- constructor(config) {
38
+ constructor(config: any) {
33
39
  super();
34
40
  this.config = config;
35
41
  this.indicatorTypes = Object.freeze({
36
42
  PACKETLOSS: 'packetLoss',
37
43
  LATENCY: 'latency',
38
- JITTER: 'jitter'
44
+ JITTER: 'jitter',
39
45
  });
40
46
  this.frequencyTypes = Object.freeze({
41
47
  UPLINK: 'uplink',
42
- DOWNLINK: 'downlink'
48
+ DOWNLINK: 'downlink',
43
49
  });
44
50
  this.networkQualityScore = 1;
45
51
  this.networkQualityStatus = {
46
- [this.frequencyTypes.UPLINK]: {
47
- [STATS.VIDEO_CORRELATE]: {},
48
- [STATS.AUDIO_CORRELATE]: {},
49
- [STATS.SHARE_CORRELATE]: {}
50
- }
52
+ [this.frequencyTypes.UPLINK]: {},
51
53
  };
52
54
  this.mediaType = null;
53
55
  }
@@ -62,12 +64,12 @@ export default class NetworkQualityMonitor extends EventsScope {
62
64
  this.emit(
63
65
  {
64
66
  file: 'networkQualityMonitor',
65
- function: 'emitNetworkQuality'
67
+ function: 'emitNetworkQuality',
66
68
  },
67
69
  EVENT_TRIGGERS.NETWORK_QUALITY,
68
70
  {
69
71
  mediaType: this.mediaType,
70
- networkQualityScore: this.networkQualityScore
72
+ networkQualityScore: this.networkQualityScore,
71
73
  }
72
74
  );
73
75
  }
@@ -85,7 +87,6 @@ export default class NetworkQualityMonitor extends EventsScope {
85
87
  this.mediaType = null;
86
88
  }
87
89
 
88
-
89
90
  /**
90
91
  * filter data to determine uplink network quality, invoked on same interval as stats analyzer remote-inbout-rtp
91
92
  * @param {Object} configObj
@@ -96,7 +97,15 @@ export default class NetworkQualityMonitor extends EventsScope {
96
97
  * @public
97
98
  * @memberof NetworkQualityMonitor
98
99
  */
99
- determineUplinkNetworkQuality({mediaType, remoteRtpResults, statsAnalyzerCurrentStats}) {
100
+ public determineUplinkNetworkQuality({
101
+ mediaType,
102
+ remoteRtpResults,
103
+ statsAnalyzerCurrentStats,
104
+ }: {
105
+ mediaType: string;
106
+ remoteRtpResults: any;
107
+ statsAnalyzerCurrentStats: object;
108
+ }) {
100
109
  const roundTripTimeInMilliseconds = remoteRtpResults.roundTripTime * 1000;
101
110
  const jitterInMilliseconds = remoteRtpResults.jitter * 1000;
102
111
  const {currentPacketLossRatio} = statsAnalyzerCurrentStats[mediaType].send;
@@ -112,8 +121,7 @@ export default class NetworkQualityMonitor extends EventsScope {
112
121
  * @returns {boolean}
113
122
  */
114
123
  const determinePacketLoss = () => {
115
- if (currentPacketLossRatio >
116
- this.config.videoPacketLossRatioThreshold) {
124
+ if (currentPacketLossRatio > this.config.videoPacketLossRatioThreshold) {
117
125
  this.networkQualityScore = 0;
118
126
 
119
127
  return false;
@@ -157,7 +165,12 @@ export default class NetworkQualityMonitor extends EventsScope {
157
165
  * @param {(number|undefined)} value
158
166
  * @returns {(number|null)}
159
167
  */
160
- const determineIfUndefined = (value) => (typeof value === 'undefined' ? null : value);
168
+ const determineIfUndefined = (value: number | undefined) =>
169
+ typeof value === 'undefined' ? null : value;
170
+
171
+ if (!this.networkQualityStatus[UPLINK][mediaType]) {
172
+ this.networkQualityStatus[UPLINK][mediaType] = {};
173
+ }
161
174
 
162
175
  /**
163
176
  * Values for some browsers specifically Safari will be undefined we explicitly set to null
@@ -167,20 +180,19 @@ export default class NetworkQualityMonitor extends EventsScope {
167
180
  // PACKET LOSS
168
181
  this.networkQualityStatus[UPLINK][mediaType][PACKETLOSS] = {
169
182
  acceptable: determinePacketLoss(),
170
- value: determineIfUndefined(currentPacketLossRatio)
183
+ value: determineIfUndefined(currentPacketLossRatio),
171
184
  };
172
185
 
173
-
174
186
  // LATENCY measured in Round trip time
175
187
  this.networkQualityStatus[UPLINK][mediaType][LATENCY] = {
176
188
  acceptable: determineLatency(),
177
- value: determineIfUndefined(remoteRtpResults.roundTripTime)
189
+ value: determineIfUndefined(remoteRtpResults.roundTripTime),
178
190
  };
179
191
 
180
192
  // JITTER
181
193
  this.networkQualityStatus[UPLINK][mediaType][JITTER] = {
182
194
  acceptable: deterMineJitter(),
183
- value: determineIfUndefined(remoteRtpResults.jitter)
195
+ value: determineIfUndefined(remoteRtpResults.jitter),
184
196
  };
185
197
 
186
198
  this.updateNetworkQualityStatus();
@@ -1,3 +1,4 @@
1
+ // @ts-ignore
1
2
  import {StatelessWebexPlugin} from '@webex/webex-core';
2
3
 
3
4
  import {MEETINGS, _PERSONAL_ROOM_} from '../constants';
@@ -5,11 +6,20 @@ import ParameterError from '../common/errors/parameter';
5
6
 
6
7
  import PersonalMeetingRoomRequest from './request';
7
8
 
8
-
9
9
  /**
10
10
  * @class PersonalMeetingRoom
11
11
  */
12
12
  export default class PersonalMeetingRoom extends StatelessWebexPlugin {
13
+ link: any;
14
+ meetingInfo: any;
15
+ name: any;
16
+ personalMeetingRoomRequest: any;
17
+ pmr: any;
18
+ sipUri: any;
19
+ userId: any;
20
+ meetingLink: any;
21
+ number: any;
22
+
13
23
  namespace = MEETINGS;
14
24
 
15
25
  /**
@@ -17,7 +27,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
17
27
  * @param {Object} attrs
18
28
  * @param {Object} options
19
29
  */
20
- constructor(attrs, options) {
30
+ constructor(attrs: any, options: any) {
21
31
  super({}, options);
22
32
  /**
23
33
  * The pmr server object
@@ -25,7 +35,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
25
35
  * @type {Object}
26
36
  * @public
27
37
  * @memberof PersonalMeetingRoom
28
- */
38
+ */
29
39
  this.pmr = null;
30
40
  /**
31
41
  * The pmr sip Uri
@@ -33,7 +43,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
33
43
  * @type {String}
34
44
  * @public
35
45
  * @memberof PersonalMeetingRoom
36
- */
46
+ */
37
47
  this.sipUri = null;
38
48
  /**
39
49
  * The pmr link
@@ -41,7 +51,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
41
51
  * @type {String}
42
52
  * @public
43
53
  * @memberof PersonalMeetingRoom
44
- */
54
+ */
45
55
  this.link = null;
46
56
  /**
47
57
  * The pmr server object
@@ -49,7 +59,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
49
59
  * @type {Object}
50
60
  * @public
51
61
  * @memberof PersonalMeetingRoom
52
- */
62
+ */
53
63
  this.userId = null;
54
64
  /**
55
65
  * The pmr name
@@ -57,7 +67,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
57
67
  * @type {String}
58
68
  * @public
59
69
  * @memberof PersonalMeetingRoom
60
- */
70
+ */
61
71
  this.name = null;
62
72
  /**
63
73
  * The meeting info request server interface
@@ -65,7 +75,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
65
75
  * @type {MeetingInfo}
66
76
  * @private
67
77
  * @memberof PersonalMeetingRoom
68
- */
78
+ */
69
79
  this.meetingInfo = attrs.meetingInfo;
70
80
  /**
71
81
  * The pmr server request interface
@@ -73,7 +83,8 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
73
83
  * @type {Object}
74
84
  * @private
75
85
  * @memberof PersonalMeetingRoom
76
- */
86
+ */
87
+ // @ts-ignore
77
88
  this.personalMeetingRoomRequest = new PersonalMeetingRoomRequest({}, options);
78
89
  }
79
90
 
@@ -86,19 +97,19 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
86
97
  * @public
87
98
  * @memberof PersonalMeetingRoom
88
99
  */
89
- claim(link, pin, preferred = true) {
100
+ public claim(link: string, pin: string, preferred = true) {
90
101
  const options = {
102
+ // @ts-ignore
91
103
  userId: this.webex.internal.device.userId,
92
104
  passcode: pin,
93
105
  meetingAddress: link,
94
- preferred
106
+ preferred,
95
107
  };
96
108
 
97
109
  return this.personalMeetingRoomRequest.claimPmr(options).then((pmr) => {
98
110
  if (pmr && pmr.body) {
99
111
  this.set(pmr.body);
100
- }
101
- else {
112
+ } else {
102
113
  return Promise.reject(new ParameterError('No PMR body provided. PMR values not updated.'));
103
114
  }
104
115
 
@@ -112,7 +123,7 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
112
123
  * @private
113
124
  * @memberof PersonalMeetingRoom
114
125
  */
115
- set(body) {
126
+ private set(body: any) {
116
127
  this.pmr = body;
117
128
  this.sipUri = body.sipMeetingUri;
118
129
  this.meetingLink = body.webExMeetingLink || body.meetingLink;
@@ -128,17 +139,15 @@ export default class PersonalMeetingRoom extends StatelessWebexPlugin {
128
139
  * @public
129
140
  * @memberof PersonalMeetingRoom
130
141
  */
131
- get() {
142
+ public get() {
132
143
  const options = {
133
- type: _PERSONAL_ROOM_
134
-
144
+ type: _PERSONAL_ROOM_,
135
145
  };
136
146
 
137
147
  return this.meetingInfo.fetchMeetingInfo(options).then((pmr) => {
138
148
  if (pmr && pmr.body && pmr.body.isPmr) {
139
149
  this.set(pmr.body);
140
- }
141
- else {
150
+ } else {
142
151
  return Promise.reject(new TypeError('The PMR requested is NOT a PMR. PMR values not set.'));
143
152
  }
144
153
 
@@ -1,3 +1,4 @@
1
+ // @ts-ignore
1
2
  import {StatelessWebexPlugin} from '@webex/webex-core';
2
3
 
3
4
  import {MEETINGS} from '../constants';
@@ -5,7 +6,6 @@ import ParameterError from '../common/errors/parameter';
5
6
 
6
7
  import PersonalMeetingRoomUtil from './util';
7
8
 
8
-
9
9
  /**
10
10
  * @class MeetingInfoRequest
11
11
  */
@@ -18,9 +18,17 @@ export default class PersonalMeetingRoomRequest extends StatelessWebexPlugin {
18
18
  * @returns {Promise} returns a promise that resolves/rejects the result of the request
19
19
  * @memberof PersonalMeetingRoomRequest
20
20
  */
21
- claimPmr(options) {
22
- if (!options || !options.userId || !options.passcode || !options.meetingAddress || !options.preferred) {
23
- throw new ParameterError('Claiming a PMR should be done with userId, passcode, preferred, and meetingAddress in options.');
21
+ claimPmr(options: any) {
22
+ if (
23
+ !options ||
24
+ !options.userId ||
25
+ !options.passcode ||
26
+ !options.meetingAddress ||
27
+ !options.preferred
28
+ ) {
29
+ throw new ParameterError(
30
+ 'Claiming a PMR should be done with userId, passcode, preferred, and meetingAddress in options.'
31
+ );
24
32
  }
25
33
  const validPin = PersonalMeetingRoomUtil.getClaimPmrPin(options.passcode);
26
34
 
@@ -34,6 +42,7 @@ export default class PersonalMeetingRoomRequest extends StatelessWebexPlugin {
34
42
  }
35
43
  const request = PersonalMeetingRoomUtil.getClaimedRequestParams(validLink, validPin, options);
36
44
 
45
+ // @ts-ignore
37
46
  return this.request(request);
38
47
  }
39
48
  }
@@ -6,10 +6,10 @@ import {
6
6
  CMR_MEETINGS,
7
7
  CLAIM,
8
8
  HECATE,
9
- WEBEX_DOT_COM
9
+ WEBEX_DOT_COM,
10
10
  } from '../constants';
11
11
 
12
- const PersonalMeetingRoomUtil = {};
12
+ const PersonalMeetingRoomUtil: any = {};
13
13
 
14
14
  PersonalMeetingRoomUtil.getClaimPmrLink = (pmrLink) => {
15
15
  let validator = VALID_PMR_ADDRESS.test(pmrLink);
@@ -42,8 +42,8 @@ PersonalMeetingRoomUtil.getClaimedRequestParams = (link, pin, options) => ({
42
42
  userId: options.userId,
43
43
  passcode: pin,
44
44
  preferred: options.preferred,
45
- meetingAddress: link
46
- }
45
+ meetingAddress: link,
46
+ },
47
47
  });
48
48
 
49
49
  export default PersonalMeetingRoomUtil;