@webex/plugin-meetings 2.60.0-next.9 → 2.60.1

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 (516) hide show
  1. package/README.md +8 -46
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -5
  54. package/dist/config.js +11 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +97 -217
  57. package/dist/constants.js +441 -416
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +4 -116
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +494 -591
  111. package/dist/meeting/index.js +2969 -4707
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -297
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -102
  122. package/dist/meeting/util.js +435 -605
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +21 -103
  142. package/dist/meetings/index.js +124 -486
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +7 -62
  193. package/dist/reachability/index.js +72 -265
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +231 -282
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +235 -101
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -28
  240. package/dist/statsAnalyzer/index.js +509 -374
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +83 -116
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -35
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -5
  253. package/src/constants.ts +97 -244
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -449
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2482 -3929
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -207
  273. package/src/meeting/util.ts +423 -590
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +126 -486
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +45 -238
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -98
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +642 -413
  310. package/src/statsAnalyzer/mqaUtil.ts +114 -111
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1389
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +3136 -8547
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +42 -512
  330. package/test/unit/spec/meeting/utils.js +24 -741
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +211 -1278
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -598
  347. package/test/unit/spec/reconnection-manager/index.js +24 -162
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +76 -200
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +174 -188
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interpretation/collection.d.ts +0 -5
  395. package/dist/interpretation/collection.js +0 -22
  396. package/dist/interpretation/collection.js.map +0 -1
  397. package/dist/interpretation/index.d.ts +0 -5
  398. package/dist/interpretation/index.js +0 -365
  399. package/dist/interpretation/index.js.map +0 -1
  400. package/dist/interpretation/siLanguage.d.ts +0 -5
  401. package/dist/interpretation/siLanguage.js +0 -24
  402. package/dist/interpretation/siLanguage.js.map +0 -1
  403. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  404. package/dist/meeting/locusMediaRequest.js +0 -291
  405. package/dist/meeting/locusMediaRequest.js.map +0 -1
  406. package/dist/meeting/request.type.d.ts +0 -11
  407. package/dist/meeting/request.type.js +0 -7
  408. package/dist/meeting/request.type.js.map +0 -1
  409. package/dist/meetings/meetings.types.d.ts +0 -4
  410. package/dist/meetings/meetings.types.js +0 -7
  411. package/dist/meetings/meetings.types.js.map +0 -1
  412. package/dist/member/types.d.ts +0 -32
  413. package/dist/member/types.js +0 -23
  414. package/dist/member/types.js.map +0 -1
  415. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  416. package/dist/multistream/mediaRequestManager.js +0 -344
  417. package/dist/multistream/mediaRequestManager.js.map +0 -1
  418. package/dist/multistream/receiveSlot.d.ts +0 -68
  419. package/dist/multistream/receiveSlot.js +0 -200
  420. package/dist/multistream/receiveSlot.js.map +0 -1
  421. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  422. package/dist/multistream/receiveSlotManager.js +0 -174
  423. package/dist/multistream/receiveSlotManager.js.map +0 -1
  424. package/dist/multistream/remoteMedia.d.ts +0 -72
  425. package/dist/multistream/remoteMedia.js +0 -268
  426. package/dist/multistream/remoteMedia.js.map +0 -1
  427. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  428. package/dist/multistream/remoteMediaGroup.js +0 -267
  429. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  430. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  431. package/dist/multistream/remoteMediaManager.js +0 -1211
  432. package/dist/multistream/remoteMediaManager.js.map +0 -1
  433. package/dist/multistream/sendSlotManager.d.ts +0 -61
  434. package/dist/multistream/sendSlotManager.js +0 -236
  435. package/dist/multistream/sendSlotManager.js.map +0 -1
  436. package/dist/reactions/constants.d.ts +0 -3
  437. package/dist/reactions/constants.js +0 -12
  438. package/dist/reactions/constants.js.map +0 -1
  439. package/dist/rtcMetrics/constants.d.ts +0 -4
  440. package/dist/rtcMetrics/constants.js +0 -11
  441. package/dist/rtcMetrics/constants.js.map +0 -1
  442. package/dist/rtcMetrics/index.d.ts +0 -54
  443. package/dist/rtcMetrics/index.js +0 -140
  444. package/dist/rtcMetrics/index.js.map +0 -1
  445. package/dist/webinar/collection.d.ts +0 -16
  446. package/dist/webinar/collection.js +0 -43
  447. package/dist/webinar/collection.js.map +0 -1
  448. package/dist/webinar/index.d.ts +0 -5
  449. package/dist/webinar/index.js +0 -68
  450. package/dist/webinar/index.js.map +0 -1
  451. package/src/annotation/annotation.types.ts +0 -50
  452. package/src/annotation/constants.ts +0 -36
  453. package/src/annotation/index.ts +0 -328
  454. package/src/breakouts/README.md +0 -220
  455. package/src/breakouts/breakout.ts +0 -188
  456. package/src/breakouts/collection.ts +0 -19
  457. package/src/breakouts/edit-lock-error.ts +0 -25
  458. package/src/breakouts/events.ts +0 -56
  459. package/src/breakouts/index.ts +0 -925
  460. package/src/breakouts/request.ts +0 -55
  461. package/src/breakouts/utils.ts +0 -57
  462. package/src/common/errors/no-meeting-info.ts +0 -24
  463. package/src/controls-options-manager/types.ts +0 -59
  464. package/src/index.ts +0 -40
  465. package/src/interpretation/README.md +0 -60
  466. package/src/interpretation/collection.ts +0 -19
  467. package/src/interpretation/index.ts +0 -332
  468. package/src/interpretation/siLanguage.ts +0 -18
  469. package/src/meeting/locusMediaRequest.ts +0 -313
  470. package/src/meeting/request.type.ts +0 -13
  471. package/src/meetings/meetings.types.ts +0 -12
  472. package/src/member/types.ts +0 -38
  473. package/src/multistream/mediaRequestManager.ts +0 -440
  474. package/src/multistream/receiveSlot.ts +0 -184
  475. package/src/multistream/receiveSlotManager.ts +0 -166
  476. package/src/multistream/remoteMedia.ts +0 -254
  477. package/src/multistream/remoteMediaGroup.ts +0 -284
  478. package/src/multistream/remoteMediaManager.ts +0 -1145
  479. package/src/multistream/sendSlotManager.ts +0 -170
  480. package/src/reactions/constants.ts +0 -4
  481. package/src/rtcMetrics/constants.ts +0 -3
  482. package/src/rtcMetrics/index.ts +0 -124
  483. package/src/webinar/collection.ts +0 -31
  484. package/src/webinar/index.ts +0 -62
  485. package/test/integration/spec/converged-space-meetings.js +0 -233
  486. package/test/unit/spec/annotation/index.ts +0 -418
  487. package/test/unit/spec/breakouts/breakout.ts +0 -237
  488. package/test/unit/spec/breakouts/collection.ts +0 -15
  489. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  490. package/test/unit/spec/breakouts/events.ts +0 -89
  491. package/test/unit/spec/breakouts/index.ts +0 -1790
  492. package/test/unit/spec/breakouts/request.ts +0 -104
  493. package/test/unit/spec/breakouts/utils.js +0 -72
  494. package/test/unit/spec/interpretation/collection.ts +0 -15
  495. package/test/unit/spec/interpretation/index.ts +0 -589
  496. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  497. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  498. package/test/unit/spec/media/index.ts +0 -290
  499. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  500. package/test/unit/spec/meeting-info/index.js +0 -300
  501. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  502. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  503. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  504. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  505. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  506. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  507. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  508. package/test/unit/spec/reachability/request.js +0 -68
  509. package/test/unit/spec/roap/request.ts +0 -232
  510. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  511. package/test/unit/spec/webinar/collection.ts +0 -13
  512. package/test/unit/spec/webinar/index.ts +0 -60
  513. package/test/utils/constants.js +0 -9
  514. package/test/utils/integrationTestUtils.js +0 -46
  515. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  516. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -2,12 +2,10 @@ import 'jsdom-global/register';
2
2
  import chai from 'chai';
3
3
  import chaiAsPromised from 'chai-as-promised';
4
4
  import sinon from 'sinon';
5
- import {ConnectionState} from '@webex/internal-media-core';
6
5
 
7
6
  import {StatsAnalyzer, EVENTS} from '../../../../src/statsAnalyzer';
8
7
  import NetworkQualityMonitor from '../../../../src/networkQualityMonitor';
9
8
  import testUtils from '../../../utils/testUtils';
10
- import {MEDIA_DEVICES, _UNKNOWN_} from '@webex/plugin-meetings/src/constants';
11
9
 
12
10
  const {assert} = chai;
13
11
 
@@ -25,15 +23,14 @@ describe('plugin-meetings', () => {
25
23
  };
26
24
 
27
25
  const defaultStats = {
28
- resolutions: {},
29
26
  internal: {
30
- 'video-send-1': {
27
+ video: {
31
28
  send: {
32
29
  totalPacketsLostOnReceiver: 10,
33
30
  },
34
31
  },
35
32
  },
36
- 'video-send-1': {
33
+ video: {
37
34
  send: {
38
35
  packetsSent: 2,
39
36
  meanRemoteJitter: [],
@@ -54,12 +51,7 @@ describe('plugin-meetings', () => {
54
51
  beforeEach(() => {
55
52
  const networkQualityMonitor = new NetworkQualityMonitor(initialConfig);
56
53
 
57
- statsAnalyzer = new StatsAnalyzer(
58
- initialConfig,
59
- () => ({}),
60
- networkQualityMonitor,
61
- defaultStats
62
- );
54
+ statsAnalyzer = new StatsAnalyzer(initialConfig, networkQualityMonitor, defaultStats);
63
55
 
64
56
  sandBoxSpy = sandbox.spy(
65
57
  statsAnalyzer.networkQualityMonitor,
@@ -72,12 +64,12 @@ describe('plugin-meetings', () => {
72
64
  });
73
65
 
74
66
  it('should trigger determineUplinkNetworkQuality with specific arguments', async () => {
75
- await statsAnalyzer.parseGetStatsResult(statusResult, 'video-send-1', true);
67
+ await statsAnalyzer.parseGetStatsResult(statusResult, 'video');
76
68
 
77
69
  assert.calledOnce(statsAnalyzer.networkQualityMonitor.determineUplinkNetworkQuality);
78
70
  assert(
79
71
  sandBoxSpy.calledWith({
80
- mediaType: 'video-send-1',
72
+ mediaType: 'video',
81
73
  remoteRtpResults: statusResult,
82
74
  statsAnalyzerCurrentStats: statsAnalyzer.statsResults,
83
75
  })
@@ -90,7 +82,22 @@ describe('plugin-meetings', () => {
90
82
  let pc;
91
83
  let networkQualityMonitor;
92
84
  let statsAnalyzer;
93
- let mqeData;
85
+ const statusResultOutboundRTP = {
86
+ type: 'outbound-rtp',
87
+ frameHeight: 720,
88
+ frameWidth: 1280,
89
+ packetsLost: 11,
90
+ framesSent: 105,
91
+ hugeFramesSent: 1,
92
+ framesEncoded: 102,
93
+ rttThreshold: 501,
94
+ jitterThreshold: 501,
95
+ jitterBufferDelay: 288.131459,
96
+ jitterBufferEmittedCount: 4013,
97
+ trackIdentifier: '6bbf5506-6a7e-4397-951c-c05b72ab0ace',
98
+ bytesSent: 1233,
99
+ totalPacketsSent: 100,
100
+ };
94
101
 
95
102
  let receivedEventsData = {
96
103
  local: {},
@@ -118,145 +125,61 @@ describe('plugin-meetings', () => {
118
125
  // bytesReceived and bytesSent need to be non-zero in order for StatsAnalyzer to parse any other values
119
126
  fakeStats = {
120
127
  audio: {
121
- senders: [
122
- {
123
- localTrackLabel: 'fake-microphone',
124
- report: [
125
- {
126
- type: 'outbound-rtp',
127
- packetsSent: 0,
128
- bytesSent: 1,
129
- },
130
- {
131
- type: 'candidate-pair',
132
- state: 'succeeded',
133
- localCandidateId: 'fake-candidate-id'
134
- },
135
- {
136
- type: 'candidate-pair',
137
- state: 'failed',
138
- localCandidateId: 'bad-candidate-id'
139
- },
140
- {
141
- type: 'local-candidate',
142
- id: 'fake-candidate-id',
143
- protocol: 'tcp'
144
- },
145
- ],
146
- },
147
- ],
148
- receivers: [
149
- {
150
- report: [
151
- {
152
- type: 'inbound-rtp',
153
- packetsReceived: 0,
154
- bytesReceived: 1,
155
- },
156
- {
157
- type: 'candidate-pair',
158
- state: 'succeeded',
159
- localCandidateId: 'fake-candidate-id'
160
- },
161
- {
162
- type: 'candidate-pair',
163
- state: 'failed',
164
- localCandidateId: 'bad-candidate-id'
165
- },
166
- {
167
- type: 'local-candidate',
168
- id: 'fake-candidate-id',
169
- protocol: 'tcp'
170
- },
171
- ],
172
- },
173
- ],
128
+ receiver: {
129
+ type: 'inbound-rtp',
130
+ packetsReceived: 0,
131
+ bytesReceived: 1,
132
+ },
133
+ sender: {
134
+ type: 'outbound-rtp',
135
+ packetsSent: 0,
136
+ bytesSent: 1,
137
+ },
174
138
  },
175
139
  video: {
176
- senders: [
177
- {
178
- localTrackLabel: 'fake-camera',
179
- report: [
180
- {
181
- type: 'outbound-rtp',
182
- framesSent: 1500,
183
- bytesSent: 1,
184
- },
185
- {
186
- type: 'candidate-pair',
187
- state: 'succeeded',
188
- localCandidateId: 'fake-candidate-id'
189
- },
190
- {
191
- type: 'candidate-pair',
192
- state: 'failed',
193
- localCandidateId: 'bad-candidate-id'
194
- },
195
- {
196
- type: 'local-candidate',
197
- id: 'fake-candidate-id',
198
- protocol: 'tcp'
199
- },
200
- ],
201
- },
202
- ],
203
- receivers: [
204
- {
205
- report: [
206
- {
207
- type: 'inbound-rtp',
208
- framesDecoded: 0,
209
- bytesReceived: 1,
210
- frameHeight: 720,
211
- frameWidth: 1280,
212
- framesReceived: 1500,
213
- },
214
- {
215
- type: 'candidate-pair',
216
- state: 'succeeded',
217
- localCandidateId: 'fake-candidate-id'
218
- },
219
- {
220
- type: 'candidate-pair',
221
- state: 'failed',
222
- localCandidateId: 'bad-candidate-id'
223
- },
224
- {
225
- type: 'local-candidate',
226
- id: 'fake-candidate-id',
227
- protocol: 'tcp'
228
- },
229
- ],
230
- },
231
- ],
140
+ receiver: {
141
+ type: 'inbound-rtp',
142
+ framesDecoded: 0,
143
+ bytesReceived: 1,
144
+ },
145
+ sender: {
146
+ type: 'outbound-rtp',
147
+ framesSent: 0,
148
+ bytesSent: 1,
149
+ },
232
150
  },
233
151
  };
234
152
 
235
153
  pc = {
236
- getConnectionState: sinon.stub().returns(ConnectionState.Connected),
237
- getTransceiverStats: sinon.stub().resolves({
238
- audio: {
239
- senders: [fakeStats.audio.senders[0]],
240
- receivers: [fakeStats.audio.receivers[0]],
154
+ audioTransceiver: {
155
+ sender: {
156
+ getStats: sinon.stub().resolves([fakeStats.audio.sender]),
241
157
  },
242
- video: {
243
- senders: [fakeStats.video.senders[0]],
244
- receivers: [fakeStats.video.receivers[0]],
158
+ receiver: {
159
+ getStats: sinon.stub().resolves([fakeStats.audio.receiver]),
245
160
  },
246
- screenShareAudio: {
247
- senders: [],
248
- receivers: [],
161
+ },
162
+ videoTransceiver: {
163
+ sender: {
164
+ getStats: sinon.stub().resolves([fakeStats.video.sender]),
165
+ },
166
+ receiver: {
167
+ getStats: sinon.stub().resolves([fakeStats.video.receiver]),
249
168
  },
250
- screenShareVideo: {
251
- senders: [],
252
- receivers: [],
169
+ },
170
+ shareTransceiver: {
171
+ sender: {
172
+ getStats: sinon.stub().resolves([]),
253
173
  },
254
- }),
174
+ receiver: {
175
+ getStats: sinon.stub().resolves([]),
176
+ },
177
+ },
255
178
  };
256
179
 
257
180
  networkQualityMonitor = new NetworkQualityMonitor(initialConfig);
258
181
 
259
- statsAnalyzer = new StatsAnalyzer(initialConfig, () => ({}), networkQualityMonitor);
182
+ statsAnalyzer = new StatsAnalyzer(initialConfig, networkQualityMonitor);
260
183
 
261
184
  statsAnalyzer.on(EVENTS.LOCAL_MEDIA_STARTED, (data) => {
262
185
  receivedEventsData.local.started = data;
@@ -270,8 +193,11 @@ describe('plugin-meetings', () => {
270
193
  statsAnalyzer.on(EVENTS.REMOTE_MEDIA_STOPPED, (data) => {
271
194
  receivedEventsData.remote.stopped = data;
272
195
  });
273
- statsAnalyzer.on(EVENTS.MEDIA_QUALITY, ({data}) => {
274
- mqeData = data;
196
+ statsAnalyzer.on(EVENTS.NO_FRAMES_SENT, (data) => {
197
+ receivedEventsData.noFramesSent = data;
198
+ });
199
+ statsAnalyzer.on(EVENTS.NO_VIDEO_ENCODED, (data) => {
200
+ receivedEventsData.noVideoEncoded = data;
275
201
  });
276
202
  });
277
203
 
@@ -299,12 +225,6 @@ describe('plugin-meetings', () => {
299
225
  assert.deepEqual(receivedEventsData.remote.stopped, expected.remote?.stopped);
300
226
  };
301
227
 
302
- const checkMqeData = () => {
303
- assert.strictEqual(mqeData.videoReceive[0].streams[0].receivedFrameSize, 3600);
304
- assert.strictEqual(mqeData.videoReceive[0].streams[0].receivedHeight, 720);
305
- assert.strictEqual(mqeData.videoReceive[0].streams[0].receivedWidth, 1280);
306
- };
307
-
308
228
  it('emits LOCAL_MEDIA_STARTED and LOCAL_MEDIA_STOPPED events for audio', async () => {
309
229
  await startStatsAnalyzer({expected: {sendAudio: true}});
310
230
 
@@ -312,7 +232,7 @@ describe('plugin-meetings', () => {
312
232
  checkReceivedEvent({expected: {}});
313
233
 
314
234
  // setup a mock to return some values higher the previous ones
315
- fakeStats.audio.senders[0].report[0].packetsSent += 10;
235
+ fakeStats.audio.sender.packetsSent += 10;
316
236
 
317
237
  await progressTime();
318
238
 
@@ -332,7 +252,7 @@ describe('plugin-meetings', () => {
332
252
  checkReceivedEvent({expected: {}});
333
253
 
334
254
  // setup a mock to return some values higher the previous ones
335
- fakeStats.video.senders[0].report[0].framesSent += 1;
255
+ fakeStats.video.sender.framesSent += 1;
336
256
 
337
257
  await progressTime();
338
258
 
@@ -352,7 +272,7 @@ describe('plugin-meetings', () => {
352
272
  checkReceivedEvent({expected: {}});
353
273
 
354
274
  // setup a mock to return some values higher the previous ones
355
- fakeStats.audio.receivers[0].report[0].packetsReceived += 5;
275
+ fakeStats.audio.receiver.packetsReceived += 5;
356
276
 
357
277
  await progressTime();
358
278
  // check that we got the REMOTE_MEDIA_STARTED event for audio
@@ -372,7 +292,7 @@ describe('plugin-meetings', () => {
372
292
  checkReceivedEvent({expected: {}});
373
293
 
374
294
  // setup a mock to return some values higher the previous ones
375
- fakeStats.video.receivers[0].report[0].framesDecoded += 1;
295
+ fakeStats.video.receiver.framesDecoded += 1;
376
296
 
377
297
  await progressTime();
378
298
  // check that we got the REMOTE_MEDIA_STARTED event for video
@@ -385,67 +305,133 @@ describe('plugin-meetings', () => {
385
305
  checkReceivedEvent({expected: {remote: {stopped: {type: 'video'}}}});
386
306
  });
387
307
 
388
- it('emits the correct MEDIA_QUALITY events', async () => {
308
+ const checkStats = (type) => {
309
+ const statsResult = {
310
+ height: 720,
311
+ width: 1280,
312
+ jitterBufferDelay: 288.131459,
313
+ jitterBufferEmittedCount: 4013,
314
+ trackIdentifier: '6bbf5506-6a7e-4397-951c-c05b72ab0ace',
315
+ avgJitterDelay: 0.07179951632195365,
316
+ };
317
+ if (type === 'inbound-rtp') {
318
+ statsResult.framesDecoded = 4013;
319
+ statsResult.framesDropped = 0;
320
+ statsResult.framesReceived = 4016;
321
+ assert.deepEqual(statsAnalyzer.statsResults.resolutions.video.recv, statsResult);
322
+ } else if (type === 'outbound-rtp') {
323
+ statsResult.framesSent = 105;
324
+ statsResult.hugeFramesSent = 1;
325
+ assert.deepEqual(statsAnalyzer.statsResults.resolutions.video.send, statsResult);
326
+ }
327
+ };
328
+
329
+ it('processes track results and populate statsResults.resolutions object when type is inbound-rtp with video', async () => {
330
+ await startStatsAnalyzer({expected: {receiveVideo: true}});
331
+ const statusResultInboundRTP = {
332
+ type: 'inbound-rtp',
333
+ frameHeight: 720,
334
+ frameWidth: 1280,
335
+ packetsLost: 11,
336
+ rttThreshold: 501,
337
+ jitterThreshold: 501,
338
+ framesDecoded: 4013,
339
+ framesDropped: 0,
340
+ framesReceived: 4016,
341
+ jitterBufferDelay: 288.131459,
342
+ jitterBufferEmittedCount: 4013,
343
+ trackIdentifier: '6bbf5506-6a7e-4397-951c-c05b72ab0ace',
344
+ };
345
+ await statsAnalyzer.parseGetStatsResult(statusResultInboundRTP, 'video');
346
+ checkStats('inbound-rtp');
347
+ });
348
+ it('processes track results and populate statsResults.resolutions object when type is outbound-rtp with video', async () => {
389
349
  await startStatsAnalyzer({expected: {receiveVideo: true}});
390
350
 
391
- await progressTime();
351
+ await statsAnalyzer.parseGetStatsResult(statusResultOutboundRTP, 'video');
352
+ checkStats('outbound-rtp');
353
+ });
392
354
 
393
- // Check that the mqe data has been emitted and is correctly computed.
394
- checkMqeData();
355
+ it('doesnot processes track results with audio', async () => {
356
+ await startStatsAnalyzer({expected: {receiveAudio: true}});
357
+ await statsAnalyzer.parseGetStatsResult(statusResultOutboundRTP, 'audio');
358
+ assert.deepEqual(statsAnalyzer.statsResults.resolutions.audio, undefined);
395
359
  });
396
360
 
397
- it('emits the correct transportType in MEDIA_QUALITY events', async () => {
398
- await startStatsAnalyzer({expected: {receiveVideo: true}});
361
+ it('emits NO_FRAMES_ENCODED when frames are not being encoded', async () => {
362
+ const expected = {mediaType: 'video'};
363
+ await startStatsAnalyzer({expected: {sendVideo: true}});
399
364
 
400
- await progressTime();
365
+ statsAnalyzer.lastStatsResults.video.send = {framesEncoded: 102, totalPacketsSent: 106};
366
+
367
+ await statsAnalyzer.parseGetStatsResult(statusResultOutboundRTP, 'video');
401
368
 
402
- assert.strictEqual(mqeData.audioTransmit[0].common.transportType, 'TCP');
403
- assert.strictEqual(mqeData.videoReceive[0].common.transportType, 'TCP');
369
+ statsAnalyzer.compareLastStatsResult();
370
+ assert.deepEqual(receivedEventsData.noVideoEncoded, expected);
404
371
  });
405
372
 
406
- it('emits the correct transportType in MEDIA_QUALITY events when using a TURN server', async () => {
407
- fakeStats.audio.senders[0].report[3].relayProtocol = 'tls';
408
- fakeStats.video.senders[0].report[3].relayProtocol = 'tls';
409
- fakeStats.audio.receivers[0].report[3].relayProtocol = 'tls';
410
- fakeStats.video.receivers[0].report[3].relayProtocol = 'tls';
373
+ it('emits NO_FRAMES_SENT when frames are not being sent but frames are being encoded', async () => {
374
+ await startStatsAnalyzer({expected: {sendVideo: true}});
411
375
 
412
- await startStatsAnalyzer({expected: {receiveVideo: true}});
376
+ const expected = {mediaType: 'video'};
413
377
 
414
- await progressTime();
378
+ statsAnalyzer.lastStatsResults.video.send = {
379
+ framesEncoded: 10,
380
+ framesSent: 105,
381
+ totalPacketsSent: 106,
382
+ };
383
+ await statsAnalyzer.parseGetStatsResult(statusResultOutboundRTP, 'video');
415
384
 
416
- assert.strictEqual(mqeData.audioTransmit[0].common.transportType, 'TLS');
417
- assert.strictEqual(mqeData.videoReceive[0].common.transportType, 'TLS');
385
+ statsAnalyzer.compareLastStatsResult();
386
+ assert.deepEqual(receivedEventsData.noFramesSent, expected);
418
387
  });
419
388
 
420
- it('emits the correct peripherals in MEDIA_QUALITY events', async () => {
421
- await startStatsAnalyzer({expected: {receiveVideo: true}});
389
+ it('doesnot emits NO_FRAMES_SENT when last emitted event is LOCAL_MEDIA_STOPPED', async () => {
390
+ statsAnalyzer.lastEmittedStartStopEvent.video.local = EVENTS.LOCAL_MEDIA_STOPPED;
422
391
 
423
- await progressTime();
392
+ await startStatsAnalyzer({expected: {sendVideo: true}});
393
+ await statsAnalyzer.parseGetStatsResult(statusResultOutboundRTP, 'video');
424
394
 
425
- assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.MICROPHONE).information, 'fake-microphone');
426
- assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.CAMERA).information, 'fake-camera');
395
+ statsAnalyzer.compareLastStatsResult();
396
+ assert.deepEqual(receivedEventsData.noFramesSent, undefined);
427
397
  });
428
398
 
429
- it('emits the correct peripherals in MEDIA_QUALITY events when localTrackLabel is undefined', async () => {
430
- fakeStats.audio.senders[0].localTrackLabel = undefined;
431
- fakeStats.video.senders[0].localTrackLabel = undefined;
399
+ it('emits NO_FRAMES_ENCODED when frames are not being encoded for share', async () => {
400
+ const expected = {mediaType: 'share'};
401
+ await startStatsAnalyzer({expected: {sendShare: true}});
432
402
 
433
- await startStatsAnalyzer({expected: {receiveVideo: true}});
403
+ statsAnalyzer.lastStatsResults.share.send = {framesEncoded: 102, totalPacketsSent: 106};
434
404
 
435
- await progressTime();
405
+ await statsAnalyzer.parseGetStatsResult(statusResultOutboundRTP, 'share');
436
406
 
437
- assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.MICROPHONE).information, _UNKNOWN_);
438
- assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.CAMERA).information, _UNKNOWN_);
407
+ statsAnalyzer.compareLastStatsResult();
408
+ assert.deepEqual(receivedEventsData.noVideoEncoded, expected);
439
409
  });
440
410
 
441
- it('emits the correct frameRate', async () => {
442
- await startStatsAnalyzer({expected: {receiveVideo: true}});
411
+ it('emits NO_FRAMES_SENT when frames are not being sent but frames are being encoded for share', async () => {
412
+ const expected = {mediaType: 'share'};
413
+ await startStatsAnalyzer({expected: {sendShare: true}});
443
414
 
444
- await progressTime();
445
- assert.strictEqual(mqeData.videoReceive[0].streams[0].common.receivedFrameRate, 25);
446
- fakeStats.video.receivers[0].framesReceived = 3000;
447
- await progressTime();
448
- assert.strictEqual(mqeData.videoReceive[0].streams[0].common.receivedFrameRate, 25);
415
+ statsAnalyzer.lastStatsResults.share.send = {
416
+ framesEncoded: 10,
417
+ framesSent: 105,
418
+ totalPacketsSent: 106,
419
+ };
420
+
421
+ await statsAnalyzer.parseGetStatsResult(statusResultOutboundRTP, 'share');
422
+
423
+ statsAnalyzer.compareLastStatsResult();
424
+ assert.deepEqual(receivedEventsData.noFramesSent, expected);
425
+ });
426
+
427
+ it('doesnot emits NO_FRAMES_SENT when last emitted event is LOCAL_MEDIA_STOPPED for share', async () => {
428
+ statsAnalyzer.lastEmittedStartStopEvent.video.local = EVENTS.LOCAL_MEDIA_STOPPED;
429
+
430
+ await startStatsAnalyzer({expected: {sendShare: true}});
431
+ await statsAnalyzer.parseGetStatsResult(statusResultOutboundRTP, 'share');
432
+
433
+ statsAnalyzer.compareLastStatsResult();
434
+ assert.deepEqual(receivedEventsData.noFramesSent, undefined);
449
435
  });
450
436
  });
451
437
  });
@@ -1,3 +1,5 @@
1
+ import {assert} from '@webex/test-helper-chai';
2
+ import {Defer} from '@webex/common';
1
3
 
2
4
  const max = 30000;
3
5
  const waitForSpy = (spy, event) => {
@@ -193,7 +195,49 @@ const delayedTest = (callback, timeout) =>
193
195
  }, timeout);
194
196
  });
195
197
 
198
+ const addMedia = (user) => {
199
+ const mediaReadyPromises = {
200
+ local: new Defer(),
201
+ remoteAudio: new Defer(),
202
+ remoteVideo: new Defer(),
203
+ };
204
+ const mediaReady = (media) => {
205
+ if (!media) {
206
+ return;
207
+ }
208
+ if (mediaReadyPromises[media.type]) {
209
+ mediaReadyPromises[media.type].resolve();
210
+ }
211
+ };
212
+
213
+ user.meeting.on('media:ready', mediaReady);
196
214
 
215
+ return user.meeting
216
+ .getMediaStreams({
217
+ sendAudio: true,
218
+ sendVideo: true,
219
+ sendShare: false,
220
+ })
221
+ .then(([localStream, localShare]) =>
222
+ user.meeting.addMedia({
223
+ mediaSettings: {
224
+ sendAudio: true,
225
+ sendVideo: true,
226
+ sendShare: false,
227
+ receiveShare: true,
228
+ receiveAudio: true,
229
+ receiveVideo: true,
230
+ },
231
+ localShare,
232
+ localStream,
233
+ })
234
+ )
235
+ .then(() => Promise.all(Object.values(mediaReadyPromises).map((defer) => defer.promise)))
236
+ .then(() => {
237
+ assert.exists(user.meeting.mediaProperties.audioTrack, 'audioTrack not present');
238
+ assert.exists(user.meeting.mediaProperties.videoTrack, 'videoTrack not present');
239
+ });
240
+ };
197
241
 
198
242
  const waitUntil = (waitTime) =>
199
243
  new Promise((resolve) => {
@@ -235,6 +279,7 @@ export default {
235
279
  waitForEvents,
236
280
  checkParticipantUpdatedStatus,
237
281
  delayedPromise,
282
+ addMedia,
238
283
  waitUntil,
239
284
  delayedTest,
240
285
  flushPromises,
@@ -57,10 +57,6 @@ Config.webex = {
57
57
  enabled: true,
58
58
  },
59
59
  enableRtx: true,
60
- experimental: {
61
- enableMediaNegotiatedEvent: true,
62
- enableUnifiedMeetings: true,
63
- },
64
60
  },
65
61
  people: {
66
62
  showAllTypes: true,
@@ -8,7 +8,6 @@ const config = require('./webex-config');
8
8
 
9
9
  // Include the plugins which you feel will be used by the webex instance
10
10
  require('@webex/internal-plugin-mercury');
11
- require('@webex/internal-plugin-llm');
12
11
  require('@webex/internal-plugin-user');
13
12
  require('@webex/internal-plugin-device');
14
13
  require('@webex/internal-plugin-conversation');
@@ -17,11 +16,9 @@ require('@webex/plugin-people');
17
16
  require('@webex/plugin-rooms');
18
17
  require('@webex/plugin-meetings');
19
18
 
20
- const generateTestUsers = (options = {}) => {
21
- options.config = options.config || {};
22
- options.config.orgId = options.config.orgId || process.env.WEBEX_CONVERGED_ORG_ID;
23
-
24
- return testUser.create(options)
19
+ const generateTestUsers = (options) =>
20
+ testUser
21
+ .create({count: options.count})
25
22
  .then(async (userSet) => {
26
23
  if (userSet.length !== options.count) {
27
24
  return Promise.reject(new Error('Test users not created'));
@@ -54,7 +51,6 @@ const generateTestUsers = (options = {}) => {
54
51
  .catch((error) => {
55
52
  console.error('#generateTestUsers=>ERROR', error);
56
53
  });
57
- };
58
54
 
59
55
  const reserveCMR = (user) =>
60
56
  user.webex
@@ -1,42 +0,0 @@
1
- import { ANNOTATION_POLICY } from './constants';
2
- /**
3
- * Type for an StrokeData Object
4
- */
5
- type StrokeData = {
6
- deviceId: string;
7
- toUserId: string;
8
- requesterId: string;
9
- content: string;
10
- shareInstanceId: string;
11
- encryptionKeyUrl: string;
12
- version: string;
13
- };
14
- type RequestData = {
15
- toUserId: string;
16
- toDeviceUrl: string;
17
- shareInstanceId: string;
18
- };
19
- type CommandRequestBody = {
20
- actionType: string;
21
- resourceType: string;
22
- shareInstanceId: string;
23
- receivers?: any[];
24
- };
25
- /**
26
- * Type for an annotation Object include annotation version and privilege
27
- */
28
- type AnnotationInfo = {
29
- version: string;
30
- policy: ANNOTATION_POLICY;
31
- };
32
- interface IAnnotationChannel {
33
- acceptRequest: (approval: any) => undefined | Promise<void>;
34
- declineRequest: (approval: any) => undefined | Promise<void>;
35
- closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;
36
- approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;
37
- cancelApproveAnnotation: (requestData: RequestData, approval: any) => undefined | Promise<void>;
38
- sendStrokeData: (strokeData: StrokeData) => void;
39
- approvalUrlUpdate: (approvalUrl: string) => void;
40
- locusUrlUpdate: (locusUrl: string) => void;
41
- }
42
- export type { StrokeData, RequestData, CommandRequestBody, IAnnotationChannel, AnnotationInfo };
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
- _Object$defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- //# sourceMappingURL=annotation.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["annotation.types.ts"],"sourcesContent":["import {ANNOTATION_POLICY} from './constants';\n\n/**\n * Type for an StrokeData Object\n */\ntype StrokeData = {\n deviceId: string;\n toUserId: string;\n requesterId: string;\n content: string;\n shareInstanceId: string;\n encryptionKeyUrl: string;\n version: string;\n};\n\ntype RequestData = {\n toUserId: string;\n toDeviceUrl: string;\n shareInstanceId: string;\n};\n\ntype CommandRequestBody = {\n actionType: string;\n resourceType: string;\n shareInstanceId: string;\n receivers?: any[];\n};\n/**\n * Type for an annotation Object include annotation version and privilege\n */\ntype AnnotationInfo = {\n version: string;\n policy: ANNOTATION_POLICY;\n};\n\ninterface IAnnotationChannel {\n // === below is for presenter\n acceptRequest: (approval) => undefined | Promise<void>;\n declineRequest: (approval) => undefined | Promise<void>;\n closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n // === below is for attendee\n approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n cancelApproveAnnotation: (requestData: RequestData, approval) => undefined | Promise<void>;\n sendStrokeData: (strokeData: StrokeData) => void;\n // =====\n approvalUrlUpdate: (approvalUrl: string) => void;\n locusUrlUpdate: (locusUrl: string) => void;\n}\n\nexport type {StrokeData, RequestData, CommandRequestBody, IAnnotationChannel, AnnotationInfo};\n"],"mappings":""}