@webex/plugin-meetings 2.59.1 → 2.59.3-next.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 (417) hide show
  1. package/.eslintrc.js +6 -6
  2. package/LICENSE +1 -1
  3. package/README.md +1204 -1204
  4. package/UPGRADING.md +287 -287
  5. package/babel.config.js +3 -3
  6. package/browsers.js +108 -108
  7. package/dist/common/browser-detection.d.ts +9 -9
  8. package/dist/common/browser-detection.js.map +1 -1
  9. package/dist/common/collection.d.ts +48 -48
  10. package/dist/common/collection.js +43 -43
  11. package/dist/common/collection.js.map +1 -1
  12. package/dist/common/config.d.ts +2 -2
  13. package/dist/common/config.js.map +1 -1
  14. package/dist/common/errors/captcha-error.d.ts +15 -15
  15. package/dist/common/errors/captcha-error.js +7 -7
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.d.ts +16 -16
  18. package/dist/common/errors/intent-to-join.js +7 -7
  19. package/dist/common/errors/intent-to-join.js.map +1 -1
  20. package/dist/common/errors/join-meeting.d.ts +17 -17
  21. package/dist/common/errors/join-meeting.js +8 -8
  22. package/dist/common/errors/join-meeting.js.map +1 -1
  23. package/dist/common/errors/media.d.ts +15 -15
  24. package/dist/common/errors/media.js +7 -7
  25. package/dist/common/errors/media.js.map +1 -1
  26. package/dist/common/errors/parameter.d.ts +15 -15
  27. package/dist/common/errors/parameter.js +7 -7
  28. package/dist/common/errors/parameter.js.map +1 -1
  29. package/dist/common/errors/password-error.d.ts +15 -15
  30. package/dist/common/errors/password-error.js +7 -7
  31. package/dist/common/errors/password-error.js.map +1 -1
  32. package/dist/common/errors/permission.d.ts +14 -14
  33. package/dist/common/errors/permission.js +6 -6
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.d.ts +9 -9
  36. package/dist/common/errors/reconnection-in-progress.js +6 -6
  37. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  38. package/dist/common/errors/reconnection.d.ts +15 -15
  39. package/dist/common/errors/reconnection.js +7 -7
  40. package/dist/common/errors/reconnection.js.map +1 -1
  41. package/dist/common/errors/stats.d.ts +15 -15
  42. package/dist/common/errors/stats.js +7 -7
  43. package/dist/common/errors/stats.js.map +1 -1
  44. package/dist/common/errors/webex-errors.d.ts +81 -81
  45. package/dist/common/errors/webex-errors.js +42 -42
  46. package/dist/common/errors/webex-errors.js.map +1 -1
  47. package/dist/common/errors/webex-meetings-error.d.ts +20 -20
  48. package/dist/common/errors/webex-meetings-error.js +12 -12
  49. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  50. package/dist/common/events/events-scope.d.ts +17 -17
  51. package/dist/common/events/events-scope.js +10 -10
  52. package/dist/common/events/events-scope.js.map +1 -1
  53. package/dist/common/events/events.d.ts +12 -12
  54. package/dist/common/events/events.js +4 -4
  55. package/dist/common/events/events.js.map +1 -1
  56. package/dist/common/events/trigger-proxy.d.ts +2 -2
  57. package/dist/common/events/trigger-proxy.js.map +1 -1
  58. package/dist/common/events/util.d.ts +2 -2
  59. package/dist/common/events/util.js.map +1 -1
  60. package/dist/common/logs/logger-config.d.ts +2 -2
  61. package/dist/common/logs/logger-config.js.map +1 -1
  62. package/dist/common/logs/logger-proxy.d.ts +2 -2
  63. package/dist/common/logs/logger-proxy.js.map +1 -1
  64. package/dist/common/logs/request.d.ts +34 -34
  65. package/dist/common/logs/request.js +18 -18
  66. package/dist/common/logs/request.js.map +1 -1
  67. package/dist/common/queue.d.ts +32 -32
  68. package/dist/common/queue.js +18 -18
  69. package/dist/common/queue.js.map +1 -1
  70. package/dist/config.d.ts +73 -73
  71. package/dist/config.js.map +1 -1
  72. package/dist/constants.d.ts +924 -924
  73. package/dist/constants.js +9 -9
  74. package/dist/constants.js.map +1 -1
  75. package/dist/controls-options-manager/constants.d.ts +4 -4
  76. package/dist/controls-options-manager/constants.js.map +1 -1
  77. package/dist/controls-options-manager/enums.d.ts +5 -5
  78. package/dist/controls-options-manager/enums.js.map +1 -1
  79. package/dist/controls-options-manager/index.d.ts +120 -120
  80. package/dist/controls-options-manager/index.js +81 -81
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/util.d.ts +7 -7
  83. package/dist/controls-options-manager/util.js.map +1 -1
  84. package/dist/index.d.ts +4 -4
  85. package/dist/index.js.map +1 -1
  86. package/dist/locus-info/controlsUtils.d.ts +2 -2
  87. package/dist/locus-info/controlsUtils.js +21 -21
  88. package/dist/locus-info/controlsUtils.js.map +1 -1
  89. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -2
  90. package/dist/locus-info/embeddedAppsUtils.js +14 -14
  91. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  92. package/dist/locus-info/fullState.d.ts +2 -2
  93. package/dist/locus-info/fullState.js.map +1 -1
  94. package/dist/locus-info/hostUtils.d.ts +2 -2
  95. package/dist/locus-info/hostUtils.js +19 -19
  96. package/dist/locus-info/hostUtils.js.map +1 -1
  97. package/dist/locus-info/index.d.ts +269 -269
  98. package/dist/locus-info/index.js +180 -180
  99. package/dist/locus-info/index.js.map +1 -1
  100. package/dist/locus-info/infoUtils.d.ts +2 -2
  101. package/dist/locus-info/infoUtils.js.map +1 -1
  102. package/dist/locus-info/mediaSharesUtils.d.ts +2 -2
  103. package/dist/locus-info/mediaSharesUtils.js +50 -50
  104. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  105. package/dist/locus-info/parser.d.ts +212 -212
  106. package/dist/locus-info/parser.js +136 -136
  107. package/dist/locus-info/parser.js.map +1 -1
  108. package/dist/locus-info/selfUtils.d.ts +2 -2
  109. package/dist/locus-info/selfUtils.js +52 -52
  110. package/dist/locus-info/selfUtils.js.map +1 -1
  111. package/dist/media/index.d.ts +32 -32
  112. package/dist/media/index.js +145 -145
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.d.ts +108 -108
  115. package/dist/media/properties.js +49 -49
  116. package/dist/media/properties.js.map +1 -1
  117. package/dist/media/util.d.ts +2 -2
  118. package/dist/media/util.js.map +1 -1
  119. package/dist/mediaQualityMetrics/config.d.ts +233 -233
  120. package/dist/mediaQualityMetrics/config.js.map +1 -1
  121. package/dist/meeting/effectsState.d.ts +42 -42
  122. package/dist/meeting/effectsState.js +24 -24
  123. package/dist/meeting/effectsState.js.map +1 -1
  124. package/dist/meeting/in-meeting-actions.d.ts +79 -79
  125. package/dist/meeting/in-meeting-actions.js +11 -11
  126. package/dist/meeting/in-meeting-actions.js.map +1 -1
  127. package/dist/meeting/index.d.ts +1621 -1621
  128. package/dist/meeting/index.js +1502 -1505
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/muteState.d.ts +116 -116
  131. package/dist/meeting/muteState.js +85 -85
  132. package/dist/meeting/muteState.js.map +1 -1
  133. package/dist/meeting/request.d.ts +255 -255
  134. package/dist/meeting/request.js +141 -141
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/state.d.ts +9 -9
  137. package/dist/meeting/state.js +30 -30
  138. package/dist/meeting/state.js.map +1 -1
  139. package/dist/meeting/util.d.ts +2 -2
  140. package/dist/meeting/util.js.map +1 -1
  141. package/dist/meeting-info/collection.d.ts +20 -20
  142. package/dist/meeting-info/collection.js +11 -11
  143. package/dist/meeting-info/collection.js.map +1 -1
  144. package/dist/meeting-info/index.d.ts +57 -57
  145. package/dist/meeting-info/index.js +50 -50
  146. package/dist/meeting-info/index.js.map +1 -1
  147. package/dist/meeting-info/meeting-info-v2.d.ts +93 -93
  148. package/dist/meeting-info/meeting-info-v2.js +52 -52
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.d.ts +22 -22
  151. package/dist/meeting-info/request.js +14 -14
  152. package/dist/meeting-info/request.js.map +1 -1
  153. package/dist/meeting-info/util.d.ts +2 -2
  154. package/dist/meeting-info/util.js +9 -9
  155. package/dist/meeting-info/util.js.map +1 -1
  156. package/dist/meeting-info/utilv2.d.ts +2 -2
  157. package/dist/meeting-info/utilv2.js +20 -20
  158. package/dist/meeting-info/utilv2.js.map +1 -1
  159. package/dist/meetings/collection.d.ts +23 -23
  160. package/dist/meetings/collection.js +14 -14
  161. package/dist/meetings/collection.js.map +1 -1
  162. package/dist/meetings/index.d.ts +296 -296
  163. package/dist/meetings/index.js +259 -259
  164. package/dist/meetings/index.js.map +1 -1
  165. package/dist/meetings/request.d.ts +27 -27
  166. package/dist/meetings/request.js +15 -15
  167. package/dist/meetings/request.js.map +1 -1
  168. package/dist/meetings/util.d.ts +18 -18
  169. package/dist/meetings/util.js +29 -29
  170. package/dist/meetings/util.js.map +1 -1
  171. package/dist/member/index.d.ts +147 -147
  172. package/dist/member/index.js +214 -214
  173. package/dist/member/index.js.map +1 -1
  174. package/dist/member/member.types.d.ts +11 -11
  175. package/dist/member/member.types.js.map +1 -1
  176. package/dist/member/util.d.ts +2 -2
  177. package/dist/member/util.js +60 -60
  178. package/dist/member/util.js.map +1 -1
  179. package/dist/members/collection.d.ts +24 -24
  180. package/dist/members/collection.js +11 -11
  181. package/dist/members/collection.js.map +1 -1
  182. package/dist/members/index.d.ts +298 -298
  183. package/dist/members/index.js +275 -275
  184. package/dist/members/index.js.map +1 -1
  185. package/dist/members/request.d.ts +50 -50
  186. package/dist/members/request.js +27 -27
  187. package/dist/members/request.js.map +1 -1
  188. package/dist/members/util.d.ts +2 -2
  189. package/dist/members/util.js +21 -21
  190. package/dist/members/util.js.map +1 -1
  191. package/dist/metrics/config.d.ts +169 -169
  192. package/dist/metrics/config.js.map +1 -1
  193. package/dist/metrics/constants.d.ts +57 -57
  194. package/dist/metrics/constants.js.map +1 -1
  195. package/dist/metrics/index.d.ts +152 -152
  196. package/dist/metrics/index.js +90 -90
  197. package/dist/metrics/index.js.map +1 -1
  198. package/dist/networkQualityMonitor/index.d.ts +70 -70
  199. package/dist/networkQualityMonitor/index.js +65 -65
  200. package/dist/networkQualityMonitor/index.js.map +1 -1
  201. package/dist/peer-connection-manager/index.d.ts +6 -6
  202. package/dist/peer-connection-manager/index.js +87 -87
  203. package/dist/peer-connection-manager/index.js.map +1 -1
  204. package/dist/peer-connection-manager/util.d.ts +6 -6
  205. package/dist/peer-connection-manager/util.js +9 -9
  206. package/dist/peer-connection-manager/util.js.map +1 -1
  207. package/dist/personal-meeting-room/index.d.ts +47 -47
  208. package/dist/personal-meeting-room/index.js +67 -67
  209. package/dist/personal-meeting-room/index.js.map +1 -1
  210. package/dist/personal-meeting-room/request.d.ts +14 -14
  211. package/dist/personal-meeting-room/request.js +7 -7
  212. package/dist/personal-meeting-room/request.js.map +1 -1
  213. package/dist/personal-meeting-room/util.d.ts +2 -2
  214. package/dist/personal-meeting-room/util.js.map +1 -1
  215. package/dist/reachability/index.d.ts +139 -139
  216. package/dist/reachability/index.js +110 -110
  217. package/dist/reachability/index.js.map +1 -1
  218. package/dist/reachability/request.d.ts +35 -35
  219. package/dist/reachability/request.js +15 -15
  220. package/dist/reachability/request.js.map +1 -1
  221. package/dist/reactions/reactions.d.ts +4 -4
  222. package/dist/reactions/reactions.js.map +1 -1
  223. package/dist/reactions/reactions.type.d.ts +32 -32
  224. package/dist/reactions/reactions.type.js.map +1 -1
  225. package/dist/reconnection-manager/index.d.ts +112 -112
  226. package/dist/reconnection-manager/index.js +112 -112
  227. package/dist/reconnection-manager/index.js.map +1 -1
  228. package/dist/recording-controller/enums.d.ts +7 -7
  229. package/dist/recording-controller/enums.js.map +1 -1
  230. package/dist/recording-controller/index.d.ts +193 -193
  231. package/dist/recording-controller/index.js +127 -127
  232. package/dist/recording-controller/index.js.map +1 -1
  233. package/dist/recording-controller/util.d.ts +13 -13
  234. package/dist/recording-controller/util.js.map +1 -1
  235. package/dist/roap/collection.d.ts +10 -10
  236. package/dist/roap/collection.js.map +1 -1
  237. package/dist/roap/handler.d.ts +47 -47
  238. package/dist/roap/handler.js +27 -27
  239. package/dist/roap/handler.js.map +1 -1
  240. package/dist/roap/index.d.ts +116 -116
  241. package/dist/roap/index.js +111 -111
  242. package/dist/roap/index.js.map +1 -1
  243. package/dist/roap/request.d.ts +35 -35
  244. package/dist/roap/request.js +17 -17
  245. package/dist/roap/request.js.map +1 -1
  246. package/dist/roap/state.d.ts +9 -9
  247. package/dist/roap/state.js +14 -14
  248. package/dist/roap/state.js.map +1 -1
  249. package/dist/roap/turnDiscovery.d.ts +67 -67
  250. package/dist/roap/turnDiscovery.js +46 -46
  251. package/dist/roap/turnDiscovery.js.map +1 -1
  252. package/dist/roap/util.d.ts +2 -2
  253. package/dist/roap/util.js.map +1 -1
  254. package/dist/statsAnalyzer/global.d.ts +126 -126
  255. package/dist/statsAnalyzer/global.js.map +1 -1
  256. package/dist/statsAnalyzer/index.d.ts +190 -190
  257. package/dist/statsAnalyzer/index.js +128 -128
  258. package/dist/statsAnalyzer/index.js.map +1 -1
  259. package/dist/statsAnalyzer/mqaUtil.d.ts +22 -22
  260. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  261. package/dist/transcription/index.d.ts +64 -64
  262. package/dist/transcription/index.js +42 -42
  263. package/dist/transcription/index.js.map +1 -1
  264. package/internal-README.md +172 -172
  265. package/jest.config.js +3 -3
  266. package/package.json +22 -21
  267. package/process +1 -1
  268. package/src/common/browser-detection.ts +39 -39
  269. package/src/common/collection.ts +94 -94
  270. package/src/common/config.ts +9 -9
  271. package/src/common/errors/captcha-error.ts +25 -25
  272. package/src/common/errors/intent-to-join.ts +27 -27
  273. package/src/common/errors/join-meeting.ts +32 -32
  274. package/src/common/errors/media.ts +25 -25
  275. package/src/common/errors/parameter.ts +33 -33
  276. package/src/common/errors/password-error.ts +25 -25
  277. package/src/common/errors/permission.ts +24 -24
  278. package/src/common/errors/reconnection-in-progress.ts +8 -8
  279. package/src/common/errors/reconnection.ts +25 -25
  280. package/src/common/errors/stats.ts +25 -25
  281. package/src/common/errors/webex-errors.ts +140 -140
  282. package/src/common/errors/webex-meetings-error.ts +35 -35
  283. package/src/common/events/events-scope.ts +30 -30
  284. package/src/common/events/events.ts +25 -25
  285. package/src/common/events/trigger-proxy.ts +25 -25
  286. package/src/common/events/util.ts +39 -39
  287. package/src/common/logs/logger-config.ts +8 -8
  288. package/src/common/logs/logger-proxy.ts +44 -44
  289. package/src/common/logs/request.ts +65 -65
  290. package/src/common/queue.ts +50 -50
  291. package/src/config.ts +96 -96
  292. package/src/constants.ts +1121 -1121
  293. package/src/controls-options-manager/constants.ts +5 -5
  294. package/src/controls-options-manager/enums.ts +6 -6
  295. package/src/controls-options-manager/index.ts +183 -183
  296. package/src/controls-options-manager/util.ts +20 -20
  297. package/src/index.js +15 -15
  298. package/src/locus-info/controlsUtils.ts +112 -112
  299. package/src/locus-info/embeddedAppsUtils.ts +57 -57
  300. package/src/locus-info/fullState.ts +69 -69
  301. package/src/locus-info/hostUtils.ts +60 -60
  302. package/src/locus-info/index.ts +1303 -1303
  303. package/src/locus-info/infoUtils.ts +101 -101
  304. package/src/locus-info/mediaSharesUtils.ts +173 -173
  305. package/src/locus-info/parser.ts +680 -680
  306. package/src/locus-info/selfUtils.ts +428 -428
  307. package/src/media/index.ts +675 -675
  308. package/src/media/properties.ts +313 -313
  309. package/src/media/util.ts +37 -37
  310. package/src/mediaQualityMetrics/config.ts +382 -382
  311. package/src/meeting/effectsState.ts +209 -209
  312. package/src/meeting/in-meeting-actions.ts +153 -153
  313. package/src/meeting/index.ts +6537 -6543
  314. package/src/meeting/muteState.ts +365 -365
  315. package/src/meeting/request.ts +810 -810
  316. package/src/meeting/state.ts +194 -194
  317. package/src/meeting/util.ts +530 -530
  318. package/src/meeting-info/collection.ts +41 -41
  319. package/src/meeting-info/index.ts +137 -137
  320. package/src/meeting-info/meeting-info-v2.ts +273 -273
  321. package/src/meeting-info/request.ts +46 -46
  322. package/src/meeting-info/util.ts +314 -314
  323. package/src/meeting-info/utilv2.ts +324 -324
  324. package/src/meetings/collection.ts +43 -43
  325. package/src/meetings/index.ts +1128 -1128
  326. package/src/meetings/request.ts +81 -81
  327. package/src/meetings/util.ts +181 -181
  328. package/src/member/index.ts +446 -446
  329. package/src/member/member.types.ts +13 -13
  330. package/src/member/util.ts +286 -286
  331. package/src/members/collection.ts +40 -40
  332. package/src/members/index.ts +900 -900
  333. package/src/members/request.ts +175 -175
  334. package/src/members/util.ts +260 -260
  335. package/src/metrics/config.ts +485 -485
  336. package/src/metrics/constants.ts +61 -61
  337. package/src/metrics/index.ts +543 -543
  338. package/src/networkQualityMonitor/index.ts +211 -211
  339. package/src/peer-connection-manager/index.ts +847 -847
  340. package/src/peer-connection-manager/util.ts +119 -119
  341. package/src/personal-meeting-room/index.ts +157 -157
  342. package/src/personal-meeting-room/request.ts +48 -48
  343. package/src/personal-meeting-room/util.ts +49 -49
  344. package/src/reachability/index.ts +478 -478
  345. package/src/reachability/request.ts +81 -81
  346. package/src/reactions/reactions.ts +104 -104
  347. package/src/reactions/reactions.type.ts +36 -36
  348. package/src/reconnection-manager/index.ts +622 -622
  349. package/src/recording-controller/enums.ts +8 -8
  350. package/src/recording-controller/index.ts +315 -315
  351. package/src/recording-controller/util.ts +58 -58
  352. package/src/roap/collection.ts +62 -62
  353. package/src/roap/handler.ts +294 -294
  354. package/src/roap/index.ts +413 -413
  355. package/src/roap/request.ts +229 -229
  356. package/src/roap/state.ts +156 -156
  357. package/src/roap/turnDiscovery.ts +283 -283
  358. package/src/roap/util.ts +100 -100
  359. package/src/statsAnalyzer/global.ts +128 -128
  360. package/src/statsAnalyzer/index.ts +1266 -1266
  361. package/src/statsAnalyzer/mqaUtil.ts +290 -290
  362. package/src/transcription/index.ts +154 -154
  363. package/test/integration/spec/journey.js +941 -941
  364. package/test/integration/spec/space-meeting.js +457 -457
  365. package/test/integration/spec/transcription.js +55 -55
  366. package/test/unit/spec/common/browser-detection.js +119 -119
  367. package/test/unit/spec/common/queue.js +69 -69
  368. package/test/unit/spec/controls-options-manager/index.js +123 -123
  369. package/test/unit/spec/controls-options-manager/util.js +65 -65
  370. package/test/unit/spec/fixture/locus.js +406 -406
  371. package/test/unit/spec/locus-info/controlsUtils.js +82 -82
  372. package/test/unit/spec/locus-info/embeddedAppsUtils.js +104 -104
  373. package/test/unit/spec/locus-info/index.js +1272 -1272
  374. package/test/unit/spec/locus-info/infoUtils.js +138 -138
  375. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +975 -975
  376. package/test/unit/spec/locus-info/lib/SeqCmp.json +522 -522
  377. package/test/unit/spec/locus-info/lib/selfConstant.js +286 -286
  378. package/test/unit/spec/locus-info/parser.js +298 -298
  379. package/test/unit/spec/locus-info/selfUtils.js +185 -185
  380. package/test/unit/spec/media/properties.ts +305 -305
  381. package/test/unit/spec/meeting/effectsState.js +281 -281
  382. package/test/unit/spec/meeting/in-meeting-actions.ts +90 -90
  383. package/test/unit/spec/meeting/index.js +5227 -5227
  384. package/test/unit/spec/meeting/muteState.js +430 -430
  385. package/test/unit/spec/meeting/request.js +317 -317
  386. package/test/unit/spec/meeting/utils.js +319 -319
  387. package/test/unit/spec/meeting-info/meetinginfov2.js +376 -376
  388. package/test/unit/spec/meeting-info/request.js +64 -64
  389. package/test/unit/spec/meeting-info/util.js +37 -37
  390. package/test/unit/spec/meeting-info/utilv2.js +330 -330
  391. package/test/unit/spec/meetings/collection.js +52 -52
  392. package/test/unit/spec/meetings/index.js +1375 -1375
  393. package/test/unit/spec/meetings/utils.js +66 -66
  394. package/test/unit/spec/member/index.js +47 -47
  395. package/test/unit/spec/member/util.js +80 -80
  396. package/test/unit/spec/members/index.js +364 -364
  397. package/test/unit/spec/members/request.js +200 -200
  398. package/test/unit/spec/members/utils.js +42 -42
  399. package/test/unit/spec/metrics/index.js +111 -111
  400. package/test/unit/spec/networkQualityMonitor/index.js +99 -99
  401. package/test/unit/spec/peerconnection-manager/index.js +218 -218
  402. package/test/unit/spec/peerconnection-manager/utils.js +49 -49
  403. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -388
  404. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +29 -29
  405. package/test/unit/spec/reachability/index.ts +50 -50
  406. package/test/unit/spec/reconnection-manager/index.js +206 -206
  407. package/test/unit/spec/recording-controller/index.js +230 -230
  408. package/test/unit/spec/recording-controller/util.js +101 -101
  409. package/test/unit/spec/roap/index.ts +128 -128
  410. package/test/unit/spec/roap/turnDiscovery.ts +372 -372
  411. package/test/unit/spec/roap/util.js +30 -30
  412. package/test/unit/spec/stats-analyzer/index.js +287 -287
  413. package/test/utils/cmr.js +104 -104
  414. package/test/utils/testUtils.js +287 -287
  415. package/test/utils/webex-config.js +77 -77
  416. package/test/utils/webex-test-users.js +82 -82
  417. package/tsconfig.json +5 -5
@@ -1,281 +1,281 @@
1
- /* eslint-disable camelcase */
2
- import {assert} from '@webex/test-helper-chai';
3
- import sinon from 'sinon';
4
- import MockWebex from '@webex/test-helper-mock-webex';
5
- import {BNR_STATUS} from '@webex/plugin-meetings/src/constants';
6
-
7
- import BEHAVIORAL_METRICS from '@webex/plugin-meetings/src/metrics/constants';
8
- import Meeting from '@webex/plugin-meetings/src/meeting';
9
- import Meetings from '@webex/plugin-meetings';
10
- import Metrics from '@webex/plugin-meetings/src/metrics';
11
- import MediaUtil from '@webex/plugin-meetings/src/media/util';
12
- import MeetingUtil from '@webex/plugin-meetings/src/meeting/util';
13
- import createEffectsState from '@webex/plugin-meetings/src/meeting/effectsState';
14
- import LoggerProxy from '@webex/plugin-meetings/src/common/logs/logger-proxy';
15
- import LoggerConfig from '@webex/plugin-meetings/src/common/logs/logger-config';
16
-
17
- describe('plugin-meetings', () => {
18
- const logger = {
19
- info: () => {},
20
- log: () => {},
21
- error: () => {},
22
- warn: () => {},
23
- trace: () => {},
24
- debug: () => {},
25
- };
26
-
27
- beforeEach(() => {
28
- sinon.stub(Metrics, 'sendBehavioralMetric');
29
- });
30
- afterEach(() => {
31
- sinon.restore();
32
- });
33
-
34
- Object.defineProperty(global.window.navigator, 'mediaDevices', {
35
- writable: true,
36
- value: {
37
- getSupportedConstraints: sinon.stub().returns({
38
- sampleRate: true,
39
- }),
40
- },
41
- });
42
- LoggerConfig.set({verboseEvents: true, enable: false});
43
- LoggerProxy.set(logger);
44
-
45
- let webex;
46
- let meeting;
47
- let uuid1;
48
-
49
- const fakeMediaTrack = () => ({
50
- id: Date.now().toString(),
51
- stop: () => {},
52
- readyState: 'live',
53
- enabled: true,
54
- getSettings: () => ({
55
- sampleRate: 48000,
56
- }),
57
- });
58
-
59
- class FakeMediaStream {
60
- constructor(tracks) {
61
- this.active = false;
62
- this.id = '5146425f-c240-48cc-b86b-27d422988fb7';
63
- this.tracks = tracks;
64
- }
65
-
66
- addTrack = () => undefined;
67
-
68
- getAudioTracks = () => this.tracks;
69
- }
70
-
71
- class FakeAudioContext {
72
- constructor() {
73
- this.state = 'running';
74
- this.baseLatency = 0.005333333333333333;
75
- this.currentTime = 2.7946666666666666;
76
- this.sampleRate = 48000;
77
- this.audioWorklet = {
78
- addModule: async () => undefined,
79
- };
80
- }
81
-
82
- onstatechange = null;
83
-
84
- createMediaStreamSource() {
85
- return {
86
- connect: () => undefined,
87
- mediaStream: {
88
- getAudioTracks() {
89
- // eslint-disable-next-line no-undef
90
- return [new MediaStreamTrack()];
91
- },
92
- },
93
- };
94
- }
95
-
96
- createMediaStreamDestination() {
97
- return {
98
- stream: {
99
- getAudioTracks() {
100
- // eslint-disable-next-line no-undef
101
- return [new MediaStreamTrack()];
102
- },
103
- },
104
- };
105
- }
106
- }
107
-
108
- class FakeAudioWorkletNode {
109
- constructor() {
110
- this.port = {
111
- postMessage: () => undefined,
112
- };
113
- }
114
-
115
- connect() {
116
- /* placeholder method */
117
- }
118
- }
119
-
120
- class FakeMediaStreamTrack {
121
- constructor() {
122
- this.kind = 'audio';
123
- this.enabled = true;
124
- this.label = 'Default - MacBook Pro Microphone (Built-in)';
125
- this.muted = false;
126
- this.readyState = 'live';
127
- this.contentHint = '';
128
- }
129
-
130
- getSettings() {
131
- return {
132
- sampleRate: 48000,
133
- };
134
- }
135
- }
136
- Object.defineProperty(global, 'MediaStream', {
137
- writable: true,
138
- value: FakeMediaStream,
139
- });
140
-
141
- Object.defineProperty(global, 'AudioContext', {
142
- writable: true,
143
- value: FakeAudioContext,
144
- });
145
-
146
- Object.defineProperty(global, 'AudioWorkletNode', {
147
- writable: true,
148
- value: FakeAudioWorkletNode,
149
- });
150
-
151
- Object.defineProperty(global, 'MediaStreamTrack', {
152
- writable: true,
153
- value: FakeMediaStreamTrack,
154
- });
155
-
156
- let effects;
157
-
158
- beforeEach(() => {
159
- webex = new MockWebex({
160
- children: {
161
- meetings: Meetings,
162
- },
163
- });
164
- MediaUtil.createPeerConnection = sinon.stub().returns({});
165
- meeting = new Meeting(
166
- {
167
- userId: uuid1,
168
- },
169
- {
170
- parent: webex,
171
- }
172
- );
173
-
174
- effects = createEffectsState('BNR');
175
- meeting.canUpdateMedia = sinon.stub().returns(true);
176
- MeetingUtil.validateOptions = sinon.stub().returns(Promise.resolve());
177
- MeetingUtil.updateTransceiver = sinon.stub();
178
-
179
- meeting.addMedia = sinon.stub().returns(Promise.resolve());
180
- meeting.getMediaStreams = sinon.stub().returns(Promise.resolve());
181
- sinon.stub(meeting, 'effects').value(effects);
182
- sinon.replace(meeting, 'addMedia', () => {
183
- sinon.stub(meeting.mediaProperties, 'audioTrack').value(fakeMediaTrack());
184
- sinon.stub(meeting.mediaProperties, 'mediaDirection').value({
185
- receiveAudio: true,
186
- });
187
- });
188
- });
189
-
190
- describe('bnr effect library', () => {
191
- beforeEach(async () => {
192
- await meeting.getMediaStreams();
193
- await meeting.addMedia();
194
- });
195
- describe('#enableBNR', () => {
196
- it('should have #enableBnr', () => {
197
- assert.exists(effects.enableBNR);
198
- });
199
-
200
- it('does bnr effect enable on audio track', async () => {
201
- assert.isTrue(await effects.handleClientRequest(true, meeting));
202
- assert.equal(effects.state.bnr.enabled, BNR_STATUS.ENABLED);
203
-
204
- assert(Metrics.sendBehavioralMetric.calledOnce);
205
- assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.ENABLE_BNR_SUCCESS);
206
- });
207
-
208
- it('does resolve request if bnr is already enabled', async () => {
209
- effects.state.bnr.enabled = BNR_STATUS.ENABLED;
210
- assert.isTrue(await effects.handleClientRequest(true, meeting));
211
- assert.equal(effects.state.bnr.enabled, BNR_STATUS.ENABLED);
212
- });
213
-
214
- it('if called twice, does bnr effect enable on audio track for the first request and resolves second', async () => {
215
- Promise.all([
216
- effects.handleClientRequest(true, meeting),
217
- effects.handleClientRequest(true, meeting),
218
- ]).then((resolveFirst, resolveSecond) => {
219
- assert.isTrue(resolveFirst);
220
- assert.isTrue(resolveSecond);
221
- assert.calledOnce(MediaUtil.createMediaStream);
222
- });
223
- });
224
-
225
- it('should throw error for inappropriate sample rate and send error metrics', async () => {
226
- const fakeMediaTrack1 = () => ({
227
- id: Date.now().toString(),
228
- stop: () => {},
229
- readyState: 'live',
230
- getSettings: () => ({
231
- sampleRate: 49000,
232
- }),
233
- });
234
-
235
- sinon.stub(meeting.mediaProperties, 'audioTrack').value(fakeMediaTrack1());
236
-
237
- // eslint-disable-next-line no-undef
238
- MediaUtil.createMediaStream = sinon.stub().returns(new MediaStream([fakeMediaTrack1()]));
239
- try {
240
- await effects.handleClientRequest(true, meeting);
241
- } catch (err) {
242
- assert(Metrics.sendBehavioralMetric.calledOnce);
243
- assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.ENABLE_BNR_FAILURE, {
244
- reason: err.message,
245
- stack: err.stack,
246
- });
247
- assert.equal(err.message, 'Sample rate of 49000 is not supported.');
248
- }
249
- });
250
- });
251
-
252
- describe('#disableBNR', () => {
253
- beforeEach(() => {
254
- effects.state.bnr.enabled = BNR_STATUS.ENABLED;
255
- });
256
- it('should have #disableBnr', () => {
257
- assert.exists(effects.disableBNR);
258
- });
259
-
260
- it('does bnr disable on audio track', async () => {
261
- assert.isTrue(await effects.handleClientRequest(false, meeting));
262
- assert.equal(effects.state.bnr.enabled, BNR_STATUS.NOT_ENABLED);
263
-
264
- assert(Metrics.sendBehavioralMetric.calledOnce);
265
- assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.DISABLE_BNR_SUCCESS);
266
- });
267
-
268
- it('reject request for disable bnr if not enabled', async () => {
269
- try {
270
- await effects.handleClientRequest(false, meeting);
271
- } catch (e) {
272
- assert.equal(e.message, 'Can not disable as BNR is not enabled');
273
- assert.equal(effects.state.bnr.enabled, BNR_STATUS.ENABLED);
274
-
275
- assert(Metrics.sendBehavioralMetric.calledOnce);
276
- assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.DISABLE_BNR_FAILURE);
277
- }
278
- });
279
- });
280
- });
281
- });
1
+ /* eslint-disable camelcase */
2
+ import {assert} from '@webex/test-helper-chai';
3
+ import sinon from 'sinon';
4
+ import MockWebex from '@webex/test-helper-mock-webex';
5
+ import {BNR_STATUS} from '@webex/plugin-meetings/src/constants';
6
+
7
+ import BEHAVIORAL_METRICS from '@webex/plugin-meetings/src/metrics/constants';
8
+ import Meeting from '@webex/plugin-meetings/src/meeting';
9
+ import Meetings from '@webex/plugin-meetings';
10
+ import Metrics from '@webex/plugin-meetings/src/metrics';
11
+ import MediaUtil from '@webex/plugin-meetings/src/media/util';
12
+ import MeetingUtil from '@webex/plugin-meetings/src/meeting/util';
13
+ import createEffectsState from '@webex/plugin-meetings/src/meeting/effectsState';
14
+ import LoggerProxy from '@webex/plugin-meetings/src/common/logs/logger-proxy';
15
+ import LoggerConfig from '@webex/plugin-meetings/src/common/logs/logger-config';
16
+
17
+ describe('plugin-meetings', () => {
18
+ const logger = {
19
+ info: () => {},
20
+ log: () => {},
21
+ error: () => {},
22
+ warn: () => {},
23
+ trace: () => {},
24
+ debug: () => {},
25
+ };
26
+
27
+ beforeEach(() => {
28
+ sinon.stub(Metrics, 'sendBehavioralMetric');
29
+ });
30
+ afterEach(() => {
31
+ sinon.restore();
32
+ });
33
+
34
+ Object.defineProperty(global.window.navigator, 'mediaDevices', {
35
+ writable: true,
36
+ value: {
37
+ getSupportedConstraints: sinon.stub().returns({
38
+ sampleRate: true,
39
+ }),
40
+ },
41
+ });
42
+ LoggerConfig.set({verboseEvents: true, enable: false});
43
+ LoggerProxy.set(logger);
44
+
45
+ let webex;
46
+ let meeting;
47
+ let uuid1;
48
+
49
+ const fakeMediaTrack = () => ({
50
+ id: Date.now().toString(),
51
+ stop: () => {},
52
+ readyState: 'live',
53
+ enabled: true,
54
+ getSettings: () => ({
55
+ sampleRate: 48000,
56
+ }),
57
+ });
58
+
59
+ class FakeMediaStream {
60
+ constructor(tracks) {
61
+ this.active = false;
62
+ this.id = '5146425f-c240-48cc-b86b-27d422988fb7';
63
+ this.tracks = tracks;
64
+ }
65
+
66
+ addTrack = () => undefined;
67
+
68
+ getAudioTracks = () => this.tracks;
69
+ }
70
+
71
+ class FakeAudioContext {
72
+ constructor() {
73
+ this.state = 'running';
74
+ this.baseLatency = 0.005333333333333333;
75
+ this.currentTime = 2.7946666666666666;
76
+ this.sampleRate = 48000;
77
+ this.audioWorklet = {
78
+ addModule: async () => undefined,
79
+ };
80
+ }
81
+
82
+ onstatechange = null;
83
+
84
+ createMediaStreamSource() {
85
+ return {
86
+ connect: () => undefined,
87
+ mediaStream: {
88
+ getAudioTracks() {
89
+ // eslint-disable-next-line no-undef
90
+ return [new MediaStreamTrack()];
91
+ },
92
+ },
93
+ };
94
+ }
95
+
96
+ createMediaStreamDestination() {
97
+ return {
98
+ stream: {
99
+ getAudioTracks() {
100
+ // eslint-disable-next-line no-undef
101
+ return [new MediaStreamTrack()];
102
+ },
103
+ },
104
+ };
105
+ }
106
+ }
107
+
108
+ class FakeAudioWorkletNode {
109
+ constructor() {
110
+ this.port = {
111
+ postMessage: () => undefined,
112
+ };
113
+ }
114
+
115
+ connect() {
116
+ /* placeholder method */
117
+ }
118
+ }
119
+
120
+ class FakeMediaStreamTrack {
121
+ constructor() {
122
+ this.kind = 'audio';
123
+ this.enabled = true;
124
+ this.label = 'Default - MacBook Pro Microphone (Built-in)';
125
+ this.muted = false;
126
+ this.readyState = 'live';
127
+ this.contentHint = '';
128
+ }
129
+
130
+ getSettings() {
131
+ return {
132
+ sampleRate: 48000,
133
+ };
134
+ }
135
+ }
136
+ Object.defineProperty(global, 'MediaStream', {
137
+ writable: true,
138
+ value: FakeMediaStream,
139
+ });
140
+
141
+ Object.defineProperty(global, 'AudioContext', {
142
+ writable: true,
143
+ value: FakeAudioContext,
144
+ });
145
+
146
+ Object.defineProperty(global, 'AudioWorkletNode', {
147
+ writable: true,
148
+ value: FakeAudioWorkletNode,
149
+ });
150
+
151
+ Object.defineProperty(global, 'MediaStreamTrack', {
152
+ writable: true,
153
+ value: FakeMediaStreamTrack,
154
+ });
155
+
156
+ let effects;
157
+
158
+ beforeEach(() => {
159
+ webex = new MockWebex({
160
+ children: {
161
+ meetings: Meetings,
162
+ },
163
+ });
164
+ MediaUtil.createPeerConnection = sinon.stub().returns({});
165
+ meeting = new Meeting(
166
+ {
167
+ userId: uuid1,
168
+ },
169
+ {
170
+ parent: webex,
171
+ }
172
+ );
173
+
174
+ effects = createEffectsState('BNR');
175
+ meeting.canUpdateMedia = sinon.stub().returns(true);
176
+ MeetingUtil.validateOptions = sinon.stub().returns(Promise.resolve());
177
+ MeetingUtil.updateTransceiver = sinon.stub();
178
+
179
+ meeting.addMedia = sinon.stub().returns(Promise.resolve());
180
+ meeting.getMediaStreams = sinon.stub().returns(Promise.resolve());
181
+ sinon.stub(meeting, 'effects').value(effects);
182
+ sinon.replace(meeting, 'addMedia', () => {
183
+ sinon.stub(meeting.mediaProperties, 'audioTrack').value(fakeMediaTrack());
184
+ sinon.stub(meeting.mediaProperties, 'mediaDirection').value({
185
+ receiveAudio: true,
186
+ });
187
+ });
188
+ });
189
+
190
+ describe('bnr effect library', () => {
191
+ beforeEach(async () => {
192
+ await meeting.getMediaStreams();
193
+ await meeting.addMedia();
194
+ });
195
+ describe('#enableBNR', () => {
196
+ it('should have #enableBnr', () => {
197
+ assert.exists(effects.enableBNR);
198
+ });
199
+
200
+ it('does bnr effect enable on audio track', async () => {
201
+ assert.isTrue(await effects.handleClientRequest(true, meeting));
202
+ assert.equal(effects.state.bnr.enabled, BNR_STATUS.ENABLED);
203
+
204
+ assert(Metrics.sendBehavioralMetric.calledOnce);
205
+ assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.ENABLE_BNR_SUCCESS);
206
+ });
207
+
208
+ it('does resolve request if bnr is already enabled', async () => {
209
+ effects.state.bnr.enabled = BNR_STATUS.ENABLED;
210
+ assert.isTrue(await effects.handleClientRequest(true, meeting));
211
+ assert.equal(effects.state.bnr.enabled, BNR_STATUS.ENABLED);
212
+ });
213
+
214
+ it('if called twice, does bnr effect enable on audio track for the first request and resolves second', async () => {
215
+ Promise.all([
216
+ effects.handleClientRequest(true, meeting),
217
+ effects.handleClientRequest(true, meeting),
218
+ ]).then((resolveFirst, resolveSecond) => {
219
+ assert.isTrue(resolveFirst);
220
+ assert.isTrue(resolveSecond);
221
+ assert.calledOnce(MediaUtil.createMediaStream);
222
+ });
223
+ });
224
+
225
+ it('should throw error for inappropriate sample rate and send error metrics', async () => {
226
+ const fakeMediaTrack1 = () => ({
227
+ id: Date.now().toString(),
228
+ stop: () => {},
229
+ readyState: 'live',
230
+ getSettings: () => ({
231
+ sampleRate: 49000,
232
+ }),
233
+ });
234
+
235
+ sinon.stub(meeting.mediaProperties, 'audioTrack').value(fakeMediaTrack1());
236
+
237
+ // eslint-disable-next-line no-undef
238
+ MediaUtil.createMediaStream = sinon.stub().returns(new MediaStream([fakeMediaTrack1()]));
239
+ try {
240
+ await effects.handleClientRequest(true, meeting);
241
+ } catch (err) {
242
+ assert(Metrics.sendBehavioralMetric.calledOnce);
243
+ assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.ENABLE_BNR_FAILURE, {
244
+ reason: err.message,
245
+ stack: err.stack,
246
+ });
247
+ assert.equal(err.message, 'Sample rate of 49000 is not supported.');
248
+ }
249
+ });
250
+ });
251
+
252
+ describe('#disableBNR', () => {
253
+ beforeEach(() => {
254
+ effects.state.bnr.enabled = BNR_STATUS.ENABLED;
255
+ });
256
+ it('should have #disableBnr', () => {
257
+ assert.exists(effects.disableBNR);
258
+ });
259
+
260
+ it('does bnr disable on audio track', async () => {
261
+ assert.isTrue(await effects.handleClientRequest(false, meeting));
262
+ assert.equal(effects.state.bnr.enabled, BNR_STATUS.NOT_ENABLED);
263
+
264
+ assert(Metrics.sendBehavioralMetric.calledOnce);
265
+ assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.DISABLE_BNR_SUCCESS);
266
+ });
267
+
268
+ it('reject request for disable bnr if not enabled', async () => {
269
+ try {
270
+ await effects.handleClientRequest(false, meeting);
271
+ } catch (e) {
272
+ assert.equal(e.message, 'Can not disable as BNR is not enabled');
273
+ assert.equal(effects.state.bnr.enabled, BNR_STATUS.ENABLED);
274
+
275
+ assert(Metrics.sendBehavioralMetric.calledOnce);
276
+ assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.DISABLE_BNR_FAILURE);
277
+ }
278
+ });
279
+ });
280
+ });
281
+ });