@webex/plugin-meetings 3.0.0-beta.7 → 3.0.0-beta.71

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 (506) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +143 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +237 -198
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +80 -89
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2225 -2244
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +63 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +565 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +152 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +35 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +76 -46
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +1 -6
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +116 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +58 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +342 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +372 -455
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +77 -0
  239. package/dist/types/constants.d.ts +944 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +276 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
  259. package/dist/types/meeting/index.d.ts +1720 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +343 -0
  280. package/dist/types/members/request.d.ts +58 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +53 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -21
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +17 -12
  344. package/src/constants.ts +92 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +211 -71
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +67 -3
  364. package/src/meeting/{index.js → index.ts} +2605 -1605
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +131 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +273 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1275 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +281 -144
  385. package/src/members/{request.js → request.ts} +80 -16
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +108 -55
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +144 -40
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +228 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1242 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +303 -2
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +165 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
  443. package/test/unit/spec/meeting/index.js +2503 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +135 -164
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +622 -263
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +294 -54
  457. package/test/unit/spec/members/request.js +50 -20
  458. package/test/unit/spec/members/utils.js +147 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +58 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +108 -57
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/dist/peer-connection-manager/util.js +0 -124
  490. package/dist/peer-connection-manager/util.js.map +0 -1
  491. package/src/common/logs/logger-proxy.js +0 -33
  492. package/src/locus-info/controlsUtils.js +0 -102
  493. package/src/media/internal-media-core-wrapper.ts +0 -9
  494. package/src/mediaQualityMetrics/config.js +0 -382
  495. package/src/meeting/effectsState.js +0 -205
  496. package/src/meeting-info/meeting-info-v2.js +0 -255
  497. package/src/meetings/index.js +0 -1015
  498. package/src/multistream/multistreamMedia.ts +0 -92
  499. package/src/peer-connection-manager/util.ts +0 -117
  500. package/src/roap/request.js +0 -127
  501. package/src/statsAnalyzer/global.js +0 -133
  502. package/src/statsAnalyzer/index.js +0 -1006
  503. package/src/statsAnalyzer/mqaUtil.js +0 -173
  504. package/test/unit/spec/meeting/effectsState.js +0 -291
  505. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  506. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,102 +0,0 @@
1
- import {isEqual} from 'lodash';
2
-
3
- const ControlsUtils = {};
4
-
5
- /**
6
- * Controls
7
- * @typedef {Object} LocusControls
8
- * @property {Object} record
9
- * @property {Boolean} record.recording
10
- * @property {Object} record.meta
11
- * @property {String} record.meta.modifiedBy
12
- */
13
-
14
- /**
15
- * parse the relevant host values that we care about: id
16
- * @param {LocusControls} controls
17
- * @returns {Object} parsedObject - parsed host or null if host was undefined
18
- * @returns {String} parsedObject.recordingId
19
- */
20
- ControlsUtils.parse = (controls) => {
21
- const parsedControls = {...controls};
22
-
23
- if (controls && controls.record) {
24
- parsedControls.record = {
25
- modifiedBy: ControlsUtils.getId(controls),
26
- paused: controls.record.paused ? controls.record.paused : false,
27
- recording: controls.record.recording,
28
- lastModified: controls.record.meta.lastModified
29
- };
30
- }
31
-
32
- if (controls && controls.meetingContainer) {
33
- parsedControls.meetingContainer = {
34
- meetingContainerUrl: controls.meetingContainer.meetingContainerUrl
35
- };
36
- }
37
-
38
- if (controls && controls.transcribe) {
39
- parsedControls.transcribe = {
40
- transcribing: controls.transcribe.transcribing,
41
- caption: controls.transcribe.caption
42
- };
43
- }
44
-
45
- if (controls && controls.entryExitTone) {
46
- parsedControls.entryExitTone = controls.entryExitTone.enabled ? controls.entryExitTone.mode : null;
47
- }
48
-
49
- return parsedControls;
50
- };
51
-
52
- /**
53
- * parses and returns previous state vs current state and triggers the changes.
54
- * @param {LocusControls} oldControls previous state
55
- * @param {LocusControls} newControls current state
56
- * @returns {Object} combination of state plus the changes
57
- */
58
- ControlsUtils.getControls = (oldControls, newControls) => {
59
- const previous = ControlsUtils.parse(oldControls);
60
- const current = ControlsUtils.parse(newControls);
61
-
62
- return {
63
- previous,
64
- current,
65
- updates: {
66
- hasRecordingPausedChanged: current?.record &&
67
- !isEqual(previous?.record?.paused, current.record.paused) &&
68
- (previous?.record?.recording || current?.record?.recording), // see comments directly below
69
-
70
- hasRecordingChanged: current?.record &&
71
- !isEqual(previous?.record?.recording, current?.record?.recording) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true
72
- (previous?.record?.recording || current?.record?.recording), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting
73
-
74
- hasMeetingContainerChanged: current?.meetingContainer &&
75
- !isEqual(previous?.meetingContainer?.meetingContainerUrl,
76
- current?.meetingContainer?.meetingContainerUrl),
77
-
78
- hasTranscribeChanged: current?.transcribe &&
79
- !isEqual(previous?.transcribe?.transcribing, current?.transcribe?.transcribing) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true
80
- (previous?.transcribe?.transcribing || current?.transcribe?.transcribing), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting
81
-
82
- hasEntryExitToneChanged: !!(newControls.entryExitTone &&
83
- !isEqual(previous?.entryExitTone, current?.entryExitTone) &&
84
- (previous?.entryExitTone || current?.entryExitTone)),
85
- }
86
- };
87
- };
88
-
89
- /**
90
- * Extract the id from the record controls object
91
- * @param {LocusControls} controls
92
- * @returns {String|null}
93
- */
94
- ControlsUtils.getId = (controls) => {
95
- if (controls.record.meta) {
96
- return controls.record.meta.modifiedBy;
97
- }
98
-
99
- return null;
100
- };
101
-
102
- export default ControlsUtils;
@@ -1,9 +0,0 @@
1
- import {MediaConnection as MC} from '@webex/internal-media-core';
2
-
3
- /* We have this wrapper just because otherwise it's impossible to mock
4
- * RoapMediaConnection and MultistreamRoapMediaConnection constructors in unit tests,
5
- * because they are exported by @webex/internal-media-core as non-writable, non-configurable
6
- * properties of MediaConnection and sinon doesn't allow spying on them or stubbing them.
7
- */
8
- export const RoapMediaConnection = MC.RoapMediaConnection;
9
- export const MultistreamRoapMediaConnection = MC.MultistreamRoapMediaConnection;
@@ -1,382 +0,0 @@
1
-
2
- export default {
3
- intervals: [
4
- {
5
- audioReceive: [
6
- {
7
- common: {
8
- common: {
9
- direction: 'inactive',
10
- isMain: true,
11
- mariFecEnabled: false,
12
- mariQosEnabled: false,
13
- multistreamEnabled: false
14
- },
15
- dtlsBitrate: 0,
16
- dtlsPackets: 0,
17
- fecBitrate: 0,
18
- fecPackets: 0,
19
- maxBitrate: 0,
20
- mediaHopByHopLost: 0,
21
- rtcpBitrate: 0,
22
- rtcpPackets: 0,
23
- rtpBitrate: 0,
24
- rtpHopByHopLost: 0,
25
- rtpPackets: 0,
26
- rtpRecovered: 0,
27
- rtxBitrate: 0,
28
- rtxPackets: 0,
29
- srtcpUnprotectErrors: 0,
30
- srtpUnprotectErrors: 0,
31
- stunBitrate: 0,
32
- stunPackets: 0,
33
- transportType: 'UDP'
34
- },
35
- streams: [
36
- {
37
- common: {
38
- codec: 'opus',
39
- concealedFrames: 0,
40
- csi: [],
41
- maxConcealRunLength: 0,
42
- optimalBitrate: 0,
43
- optimalFrameRate: 0,
44
- receivedBitrate: 0,
45
- receivedFrameRate: 0,
46
- renderedFrameRate: 0,
47
- requestedBitrate: 0,
48
- requestedFrameRate: 0,
49
- rtpEndToEndLost: 0,
50
- maxRtpJitter: 0,
51
- meanRtpJitter: 0,
52
- rtpPackets: 0,
53
- ssci: 0
54
- }
55
- }
56
- ]
57
- }
58
- ],
59
- audioTransmit: [
60
- {
61
- common: {
62
- availableBitrate: 0,
63
- common: {
64
- direction: 'inactive',
65
- isMain: true,
66
- mariFecEnabled: false,
67
- mariQosEnabled: false,
68
- multistreamEnabled: false
69
- },
70
- dtlsBitrate: 0,
71
- dtlsPackets: 0,
72
- fecBitrate: 0,
73
- fecPackets: 0,
74
- maxBitrate: 0,
75
- queueDelay: 0,
76
- remoteJitter: 0,
77
- remoteLossRate: 0,
78
- remoteReceiveRate: 0,
79
- roundTripTime: 0,
80
- rtcpBitrate: 0,
81
- rtcpPackets: 0,
82
- rtpBitrate: 0,
83
- rtpPackets: 0,
84
- rtxBitrate: 0,
85
- rtxPackets: 0,
86
- stunBitrate: 0,
87
- stunPackets: 0,
88
- transportType: 'UDP'
89
- },
90
- streams: [
91
- {
92
- common: {
93
- codec: 'opus',
94
- requestedBitrate: 0,
95
- requestedFrames: 0,
96
- rtpPackets: 0,
97
- ssci: 0,
98
- transmittedBitrate: 0,
99
- transmittedFrameRate: 0
100
- }
101
- }
102
- ]
103
- }
104
- ],
105
- intervalMetadata: {
106
- peerReflexiveIP: '0.0.0.0',
107
- peripherals: [],
108
- processAverageCPU: 0,
109
- processMaximumCPU: 0,
110
- systemAverageCPU: 0,
111
- systemMaximumCPU: 0
112
- },
113
- intervalNumber: 0,
114
- videoReceive: [
115
- {
116
- common: {
117
- common: {
118
- direction: 'inactive',
119
- isMain: true, // Not avaliable
120
- mariFecEnabled: true, // Not avaliable
121
- mariQosEnabled: true, // Not avaliable
122
- multistreamEnabled: true// Not avaliable
123
- },
124
- dtlsBitrate: 0, // Not avaliable
125
- dtlsPackets: 0, // Not avaliable
126
- fecBitrate: 0, // Not avaliable
127
- fecPackets: 0, // Not avaliable
128
- maxBitrate: 0,
129
- mediaHopByHopLost: 0,
130
- rtcpBitrate: 0, // Not avaliable
131
- rtcpPackets: 0, // Not avaliable
132
- rtpBitrate: 0,
133
- rtpHopByHopLost: 0,
134
- rtpPackets: 0,
135
- rtpRecovered: 0, // Not avaliable
136
- rtxBitrate: 0, // Not avaliable
137
- rtxPackets: 0, // Not avaliable
138
- srtcpUnprotectErrors: 0, // Not avaliable
139
- srtpUnprotectErrors: 0, // Not avaliable
140
- stunBitrate: 0, // Not avaliable
141
- stunPackets: 0, // Not avaliable
142
- transportType: 'UDP'
143
- },
144
- streams: [
145
- {
146
- common: {
147
- codec: 'H264',
148
- concealedFrames: 0, // Not avaliable
149
- csi: [], // Not avaliable
150
- maxConcealRunLength: 0, // Not avaliable
151
- optimalBitrate: 0,
152
- optimalFrameRate: 0,
153
- receivedBitrate: 0,
154
- receivedFrameRate: 0,
155
- renderedFrameRate: 0, // Not avaliable
156
- requestedBitrate: 0,
157
- requestedFrameRate: 0,
158
- rtpEndToEndLost: 0,
159
- rtpJitter: 0,
160
- rtpPackets: 0,
161
- ssci: 0// Not avaliable
162
- },
163
- h264CodecProfile: 'BP',
164
- isActiveSpeaker: true,
165
- optimalFrameSize: 0, // Not avaliable
166
- receivedFrameSize: 0,
167
- receivedHeight: 0,
168
- receivedKeyFrames: 0,
169
- receivedKeyFramesForRequest: 0,
170
- receivedKeyFramesSourceChange: 0,
171
- receivedKeyFramesUnknown: 0,
172
- receivedWidth: 0,
173
- requestedFrameSize: 0,
174
- requestedKeyFrames: 0
175
- }
176
- ]
177
- },
178
- {
179
- common: {
180
- common: {
181
- direction: 'inactive',
182
- isMain: false, // Not avaliable
183
- mariFecEnabled: true, // Not avaliable
184
- mariQosEnabled: true, // Not avaliable
185
- multistreamEnabled: true// Not avaliable
186
- },
187
- dtlsBitrate: 0, // Not avaliable
188
- dtlsPackets: 0, // Not avaliable
189
- fecBitrate: 0, // Not avaliable
190
- fecPackets: 0, // Not avaliable
191
- maxBitrate: 0,
192
- mediaHopByHopLost: 0,
193
- rtcpBitrate: 0, // Not avaliable
194
- rtcpPackets: 0, // Not avaliable
195
- rtpBitrate: 0,
196
- rtpHopByHopLost: 0,
197
- rtpPackets: 0,
198
- rtpRecovered: 0, // Not avaliable
199
- rtxBitrate: 0, // Not avaliable
200
- rtxPackets: 0, // Not avaliable
201
- srtcpUnprotectErrors: 0, // Not avaliable
202
- srtpUnprotectErrors: 0, // Not avaliable
203
- stunBitrate: 0, // Not avaliable
204
- stunPackets: 0, // Not avaliable
205
- transportType: 'UDP'
206
- },
207
- streams: [
208
- {
209
- common: {
210
- codec: 'H264',
211
- concealedFrames: 0, // Not avaliable
212
- csi: [], // Not avaliable
213
- maxConcealRunLength: 0, // Not avaliable
214
- optimalBitrate: 0,
215
- optimalFrameRate: 0,
216
- receivedBitrate: 0,
217
- receivedFrameRate: 0,
218
- renderedFrameRate: 0, // Not avaliable
219
- requestedBitrate: 0,
220
- requestedFrameRate: 0,
221
- rtpEndToEndLost: 0,
222
- rtpJitter: 0,
223
- rtpPackets: 0,
224
- ssci: 0// Not avaliable
225
- },
226
- h264CodecProfile: 'BP',
227
- isActiveSpeaker: true,
228
- optimalFrameSize: 0, // Not avaliable
229
- receivedFrameSize: 0,
230
- receivedHeight: 0,
231
- receivedKeyFrames: 0,
232
- receivedKeyFramesForRequest: 0,
233
- receivedKeyFramesSourceChange: 0,
234
- receivedKeyFramesUnknown: 0,
235
- receivedWidth: 0,
236
- requestedFrameSize: 0,
237
- requestedKeyFrames: 0
238
- }
239
- ]
240
- }
241
- ],
242
- videoTransmit: [
243
- {
244
- common: {
245
- availableBitrate: 0, // Not avaliable currently hardcoded
246
- common: {
247
- direction: 'inactive',
248
- isMain: true,
249
- mariFecEnabled: false, // Not avaliable
250
- mariQosEnabled: false, // Not avaliable
251
- multistreamEnabled: false// Not avaliable
252
- },
253
- dtlsBitrate: 0, // Not avaliable
254
- dtlsPackets: 0, // Not avaliable
255
- fecBitrate: 0, // Not avaliable
256
- fecPackets: 0, // TODO: check inbound-rtp// Not avaliable
257
- maxBitrate: 0, // Currently hardcoded
258
- queueDelay: 0, // outboundRtp.totalPacketSentDelay // TODO: check if totalInterFrameDelay/ packetSentDelay/ jitterBufferDalay
259
- remoteJitter: 0, // remoteInboundRtp.jitter
260
- remoteLossRate: 0, // comparedResults.lossRate
261
- remoteReceiveRate: 0, // compareResults.packetsLost
262
- roundTripTime: 0, // compareResults.roundTripTime
263
- rtcpBitrate: 0, // Dont have access to it
264
- rtcpPackets: 0, // Dont have access to rtcp
265
- rtpBitrate: 0, // Dont have access
266
- rtpPackets: 0, // outboundRtp.packetsSent
267
- rtxBitrate: 0, // Dont have access to it
268
- rtxPackets: 0, // Dont have access to it
269
- stunBitrate: 0, // Dont have access to it
270
- stunPackets: 0, // Dont have access to it
271
- transportType: 'UDP' // TODO: need to calculate
272
- },
273
- streams: [
274
- {
275
- common: {
276
- codec: 'H264',
277
- duplicateSsci: 0, // Not Avaliable
278
- requestedBitrate: 0, // TODO: from remote SDP
279
- requestedFrames: 0, // TODO: from remote SDP
280
- rtpPackets: 0, // same as rtp packets
281
- ssci: 0,
282
- transmittedBitrate: 0, // TODO: get in the candidate pair
283
- transmittedFrameRate: 0 // TODO: from track info
284
- },
285
- h264CodecProfile: 'BP', // TODO: from localSDP
286
- isAvatar: false, // Not Avaliable
287
- isHardwareEncoded: false, // Not Avaliable
288
- localConfigurationChanges: 2, // Not Avaliable
289
- maxFrameQp: 0, // Not Avaliable
290
- maxNoiseLevel: 0, // Not Avaliable
291
- minRegionQp: 0, // Not Avaliable
292
- remoteConfigurationChanges: 0, // Not Avaliable
293
- requestedFrameSize: 0, // TODO: from remote SDP
294
- requestedKeyFrames: 0, // outbound Fir request
295
- transmittedFrameSize: 0, // Not Avaliable
296
- transmittedHeight: 0,
297
- transmittedKeyFrames: 0, // Key frames encoded
298
- transmittedKeyFramesClient: 0, // Not Avaliable
299
- transmittedKeyFramesConfigurationChange: 0, // Not Avaliable
300
- transmittedKeyFramesFeedback: 0, // Not Avaliable
301
- transmittedKeyFramesLocalDrop: 0, // Not Avaliable
302
- transmittedKeyFramesOtherLayer: 0, // Not Avaliable
303
- transmittedKeyFramesPeriodic: 0, // Not Avaliable
304
- transmittedKeyFramesSceneChange: 0, // Not Avaliable
305
- transmittedKeyFramesStartup: 0, // Not Avaliable
306
- transmittedKeyFramesUnknown: 0, // Not Avaliable
307
- transmittedWidth: 0
308
- }
309
- ]
310
- },
311
- { // sceen sharing
312
- common: {
313
- availableBitrate: 0, // Not avaliable currently hardcoded
314
- common: {
315
- direction: 'inactive',
316
- isMain: false,
317
- mariFecEnabled: false, // Not avaliable
318
- mariQosEnabled: false, // Not avaliable
319
- multistreamEnabled: false// Not avaliable
320
- },
321
- dtlsBitrate: 0, // Not avaliable
322
- dtlsPackets: 0, // Not avaliable
323
- fecBitrate: 0, // Not avaliable
324
- fecPackets: 0, // TODO: check inbound-rtp// Not avaliable
325
- maxBitrate: 0, // Currently hardcoded
326
- queueDelay: 0, // outboundRtp.totalPacketSentDelay // TODO: check if totalInterFrameDelay/ packetSentDelay/ jitterBufferDalay
327
- remoteJitter: 0, // remoteInboundRtp.jitter
328
- remoteLossRate: 0, // comparedResults.lossRate
329
- remoteReceiveRate: 0, // compareResults.packetsLost
330
- roundTripTime: 0, // compareResults.roundTripTime
331
- rtcpBitrate: 0, // Dont have access to it
332
- rtcpPackets: 0, // Dont have access to rtcp
333
- rtpBitrate: 0, // Dont have access
334
- rtpPackets: 0, // outboundRtp.packetsSent
335
- rtxBitrate: 0, // Dont have access to it
336
- rtxPackets: 0, // Dont have access to it
337
- stunBitrate: 0, // Dont have access to it
338
- stunPackets: 0, // Dont have access to it
339
- transportType: 'UDP' // TODO: need to calculate
340
- },
341
- streams: [
342
- {
343
- common: {
344
- codec: 'H264',
345
- duplicateSsci: 0, // Not Avaliable
346
- requestedBitrate: 0, // TODO: from remote SDP
347
- requestedFrames: 0, // TODO: from remote SDP
348
- rtpPackets: 0, // same as rtp packets
349
- ssci: 0,
350
- transmittedBitrate: 0, // TODO: get in the candidate pair
351
- transmittedFrameRate: 0 // TODO: from track info
352
- },
353
- h264CodecProfile: 'BP', // TODO: from localSDP
354
- isAvatar: false, // Not Avaliable
355
- isHardwareEncoded: false, // Not Avaliable
356
- localConfigurationChanges: 2, // Not Avaliable
357
- maxFrameQp: 0, // Not Avaliable
358
- maxNoiseLevel: 0, // Not Avaliable
359
- minRegionQp: 0, // Not Avaliable
360
- remoteConfigurationChanges: 0, // Not Avaliable
361
- requestedFrameSize: 0, // TODO: from remote SDP
362
- requestedKeyFrames: 0, // outbound Fir request
363
- transmittedFrameSize: 0, // Not Avaliable
364
- transmittedHeight: 0,
365
- transmittedKeyFrames: 0, // Key frames encoded
366
- transmittedKeyFramesClient: 0, // Not Avaliable
367
- transmittedKeyFramesConfigurationChange: 0, // Not Avaliable
368
- transmittedKeyFramesFeedback: 0, // Not Avaliable
369
- transmittedKeyFramesLocalDrop: 0, // Not Avaliable
370
- transmittedKeyFramesOtherLayer: 0, // Not Avaliable
371
- transmittedKeyFramesPeriodic: 0, // Not Avaliable
372
- transmittedKeyFramesSceneChange: 0, // Not Avaliable
373
- transmittedKeyFramesStartup: 0, // Not Avaliable
374
- transmittedKeyFramesUnknown: 0, // Not Avaliable
375
- transmittedWidth: 0
376
- }
377
- ]
378
- }
379
- ]
380
- }
381
- ]
382
- };
@@ -1,205 +0,0 @@
1
- /* eslint-disable no-param-reassign */
2
- import {Media as WebRTCMedia} from '@webex/internal-media-core';
3
-
4
- import BEHAVIORAL_METRICS from '../metrics/constants';
5
- import Metrics from '../metrics';
6
- import MediaUtil from '../media/util';
7
- import LoggerProxy from '../common/logs/logger-proxy';
8
- import {BNR_STATUS} from '../constants';
9
-
10
- const createEffectsState = (type) => {
11
- LoggerProxy.logger.info(`Meeting:effectState#createEffectsState --> creating effectsState for effect ${type}`);
12
-
13
- return new EffectsState(type);
14
- };
15
-
16
- /* The purpose of this class is to manage the effects state(for eg., BNR).
17
- */
18
- class EffectsState {
19
- constructor(type) {
20
- this.effectType = type;
21
- this.state = {
22
- bnr: {
23
- enabled: BNR_STATUS.NOT_ENABLED
24
- },
25
- callToWebrtcBNRInProgress: false
26
- };
27
- // these 2 hold the resolve, reject methods for the promise we returned to the client in last handleClientRequest() call
28
- this.pendingPromiseResolve = null;
29
- this.pendingPromiseReject = null;
30
- }
31
-
32
- /**
33
- * @memberof EffectsState
34
- * @param {Boolean} [isEnable] true for enableBNR, false for disableBNR request
35
- * @param {Object} [meeting] the meeting object
36
- * @returns {Promise}
37
- */
38
- async handleClientRequest(isEnable, meeting) {
39
- return new Promise((resolve, reject) => {
40
- if (this.pendingPromiseResolve) {
41
- // resolve the last promise we returned to the client as the client has issued a new request that has superseded the previous one
42
- this.pendingPromiseResolve();
43
- }
44
- this.pendingPromiseResolve = resolve;
45
- this.pendingPromiseReject = reject;
46
-
47
- if (isEnable) this.enableBNR(meeting);
48
- else this.disableBNR(meeting);
49
- });
50
- }
51
-
52
- /**
53
- * Internal API to return status of BNR
54
- * @memberof EffectsState
55
- * @returns {Boolean}
56
- * @public
57
- * @memberof Meeting
58
- */
59
- isBnrEnabled() {
60
- return this.state.bnr.enabled === BNR_STATUS.ENABLED;
61
- }
62
-
63
- resolvePromise() {
64
- if (this.pendingPromiseResolve) {
65
- this.pendingPromiseResolve(true);
66
- }
67
- this.pendingPromiseResolve = null;
68
- this.pendingPromiseReject = null;
69
- }
70
-
71
- rejectPromise(e) {
72
- if (this.pendingPromiseReject) {
73
- this.pendingPromiseReject(e);
74
- }
75
- this.pendingPromiseResolve = null;
76
- this.pendingPromiseReject = null;
77
- }
78
-
79
- /**
80
- * enableBNR API
81
- * @param {Object} meeting the meeting object
82
- * @returns {Promise<Boolean>}
83
- * @public
84
- * @memberof EffectsState
85
- */
86
- async enableBNR(meeting) {
87
- LoggerProxy.logger.info('Meeting:effectState#enableBNR. Enable BNR called');
88
-
89
- if (this.isBnrEnabled()) {
90
- LoggerProxy.logger.warn('Meeting:index#enableBNR. BNR is already enabled');
91
-
92
- return this.resolvePromise();
93
- }
94
-
95
- if (this.state.callToWebrtcBNRInProgress) {
96
- LoggerProxy.logger.warn('Meeting:effectState#enableBNR. Call to WebRTC in progress, we need to wait for it to complete');
97
-
98
- return this.resolvePromise();
99
- }
100
-
101
- const {bnr} = this.state;
102
-
103
- try {
104
- bnr.enabled = BNR_STATUS.SHOULD_ENABLE;
105
- this.state.callToWebrtcBNRInProgress = true;
106
- const audioStream = MediaUtil.createMediaStream([meeting.mediaProperties.audioTrack]);
107
-
108
- LoggerProxy.logger.info('Meeting:effectState#enableBNR. MediaStream created from meeting & sent to updateAudio');
109
- await meeting.updateAudio({
110
- sendAudio: true,
111
- receiveAudio: meeting.mediaProperties.mediaDirection.receiveAudio,
112
- stream: audioStream
113
- });
114
-
115
- LoggerProxy.logger.info('Meeting:effectState#enableBNR. Updated meeting audio with bnr enabled track');
116
- bnr.enabled = BNR_STATUS.ENABLED;
117
- this.state.callToWebrtcBNRInProgress = false;
118
- Metrics.sendBehavioralMetric(
119
- BEHAVIORAL_METRICS.ENABLE_BNR_SUCCESS,
120
- );
121
- }
122
- catch (error) {
123
- bnr.enabled = BNR_STATUS.NOT_ENABLED;
124
- this.state.callToWebrtcBNRInProgress = false;
125
- LoggerProxy.logger.error('Meeting:index#enableBNR.', error);
126
-
127
- Metrics.sendBehavioralMetric(
128
- BEHAVIORAL_METRICS.ENABLE_BNR_FAILURE,
129
- {
130
- reason: error.message,
131
- stack: error.stack
132
- }
133
- );
134
- this.rejectPromise(error);
135
-
136
- throw error;
137
- }
138
-
139
- return this.resolvePromise();
140
- }
141
-
142
- /**
143
- * disableBNR API
144
- * @param {Object} meeting the meeting object
145
- * @returns {Promise<Boolean>}
146
- * @public
147
- * @memberof EffectsState
148
- */
149
- async disableBNR(meeting) {
150
- LoggerProxy.logger.info('Meeting:effectState#disableBNR. Disable BNR called');
151
-
152
- const {bnr} = this.state;
153
-
154
- try {
155
- if (this.state.callToWebrtcBNRInProgress) {
156
- LoggerProxy.logger.info('Meeting:effectState#disableBNR. Call to WebRTC in progress, we need to wait for it to complete');
157
-
158
- return this.resolvePromise();
159
- }
160
-
161
- bnr.enabled = BNR_STATUS.SHOULD_DISABLE;
162
- this.state.callToWebrtcBNRInProgress = true;
163
-
164
- const audioTrack = WebRTCMedia.Effects.BNR.disableBNR(meeting.mediaProperties.audioTrack);
165
-
166
- const audioStream = MediaUtil.createMediaStream([audioTrack]);
167
-
168
- LoggerProxy.logger.info('Meeting:effectState#disableBNR. Raw media track obtained from WebRTC & sent to updateAudio');
169
-
170
- await meeting.updateAudio({
171
- sendAudio: true,
172
- receiveAudio: meeting.mediaProperties.mediaDirection.receiveAudio,
173
- stream: audioStream
174
- });
175
-
176
- bnr.enabled = BNR_STATUS.NOT_ENABLED;
177
-
178
- this.state.callToWebrtcBNRInProgress = false;
179
-
180
- Metrics.sendBehavioralMetric(
181
- BEHAVIORAL_METRICS.DISABLE_BNR_SUCCESS
182
- );
183
- }
184
- catch (error) {
185
- bnr.enabled = BNR_STATUS.ENABLED;
186
- this.state.callToWebrtcBNRInProgress = false;
187
- LoggerProxy.logger.error(`Meeting:index#disableBNR. ${error}`);
188
-
189
- Metrics.sendBehavioralMetric(
190
- BEHAVIORAL_METRICS.DISABLE_BNR_FAILURE,
191
- {
192
- reason: error.message,
193
- stack: error.stack
194
- }
195
- );
196
- this.rejectPromise(error);
197
-
198
- throw error;
199
- }
200
-
201
- return this.resolvePromise();
202
- }
203
- }
204
-
205
- export default createEffectsState;