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

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 (539) hide show
  1. package/README.md +8 -58
  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 -6
  54. package/dist/config.js +10 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +100 -234
  57. package/dist/constants.js +444 -433
  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 +5 -121
  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 +520 -705
  111. package/dist/meeting/index.js +3083 -5041
  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 -304
  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 -118
  122. package/dist/meeting/util.js +435 -676
  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 +20 -114
  142. package/dist/meetings/index.js +133 -540
  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 +95 -61
  193. package/dist/reachability/index.js +392 -304
  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 +232 -285
  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 +238 -100
  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 -50
  240. package/dist/statsAnalyzer/index.js +511 -436
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +90 -130
  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 -39
  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 -6
  253. package/src/constants.ts +100 -265
  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 -450
  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 +2581 -4306
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -214
  273. package/src/meeting/util.ts +423 -687
  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 +136 -531
  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 +347 -246
  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 -96
  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 +645 -479
  310. package/src/statsAnalyzer/mqaUtil.ts +126 -128
  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 -1437
  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 +2313 -8384
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +43 -523
  330. package/test/unit/spec/meeting/utils.js +24 -834
  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 +232 -1445
  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 -532
  347. package/test/unit/spec/reconnection-manager/index.js +24 -163
  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 +77 -187
  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 +165 -644
  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/interceptors/index.d.ts +0 -2
  395. package/dist/interceptors/index.js +0 -15
  396. package/dist/interceptors/index.js.map +0 -1
  397. package/dist/interceptors/locusRetry.d.ts +0 -27
  398. package/dist/interceptors/locusRetry.js +0 -94
  399. package/dist/interceptors/locusRetry.js.map +0 -1
  400. package/dist/interpretation/collection.d.ts +0 -5
  401. package/dist/interpretation/collection.js +0 -22
  402. package/dist/interpretation/collection.js.map +0 -1
  403. package/dist/interpretation/index.d.ts +0 -5
  404. package/dist/interpretation/index.js +0 -365
  405. package/dist/interpretation/index.js.map +0 -1
  406. package/dist/interpretation/siLanguage.d.ts +0 -5
  407. package/dist/interpretation/siLanguage.js +0 -24
  408. package/dist/interpretation/siLanguage.js.map +0 -1
  409. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  410. package/dist/meeting/locusMediaRequest.js +0 -291
  411. package/dist/meeting/locusMediaRequest.js.map +0 -1
  412. package/dist/meeting/request.type.d.ts +0 -11
  413. package/dist/meeting/request.type.js +0 -7
  414. package/dist/meeting/request.type.js.map +0 -1
  415. package/dist/meeting/voicea-meeting.d.ts +0 -20
  416. package/dist/meeting/voicea-meeting.js +0 -201
  417. package/dist/meeting/voicea-meeting.js.map +0 -1
  418. package/dist/meetings/meetings.types.d.ts +0 -4
  419. package/dist/meetings/meetings.types.js +0 -7
  420. package/dist/meetings/meetings.types.js.map +0 -1
  421. package/dist/member/types.d.ts +0 -32
  422. package/dist/member/types.js +0 -23
  423. package/dist/member/types.js.map +0 -1
  424. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  425. package/dist/multistream/mediaRequestManager.js +0 -344
  426. package/dist/multistream/mediaRequestManager.js.map +0 -1
  427. package/dist/multistream/receiveSlot.d.ts +0 -68
  428. package/dist/multistream/receiveSlot.js +0 -200
  429. package/dist/multistream/receiveSlot.js.map +0 -1
  430. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  431. package/dist/multistream/receiveSlotManager.js +0 -174
  432. package/dist/multistream/receiveSlotManager.js.map +0 -1
  433. package/dist/multistream/remoteMedia.d.ts +0 -72
  434. package/dist/multistream/remoteMedia.js +0 -268
  435. package/dist/multistream/remoteMedia.js.map +0 -1
  436. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  437. package/dist/multistream/remoteMediaGroup.js +0 -267
  438. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  439. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  440. package/dist/multistream/remoteMediaManager.js +0 -1211
  441. package/dist/multistream/remoteMediaManager.js.map +0 -1
  442. package/dist/multistream/sendSlotManager.d.ts +0 -61
  443. package/dist/multistream/sendSlotManager.js +0 -236
  444. package/dist/multistream/sendSlotManager.js.map +0 -1
  445. package/dist/reachability/clusterReachability.d.ts +0 -109
  446. package/dist/reachability/clusterReachability.js +0 -357
  447. package/dist/reachability/clusterReachability.js.map +0 -1
  448. package/dist/reachability/util.d.ts +0 -8
  449. package/dist/reachability/util.js +0 -29
  450. package/dist/reachability/util.js.map +0 -1
  451. package/dist/reactions/constants.d.ts +0 -3
  452. package/dist/reactions/constants.js +0 -12
  453. package/dist/reactions/constants.js.map +0 -1
  454. package/dist/rtcMetrics/constants.d.ts +0 -4
  455. package/dist/rtcMetrics/constants.js +0 -11
  456. package/dist/rtcMetrics/constants.js.map +0 -1
  457. package/dist/rtcMetrics/index.d.ts +0 -54
  458. package/dist/rtcMetrics/index.js +0 -140
  459. package/dist/rtcMetrics/index.js.map +0 -1
  460. package/dist/webinar/collection.d.ts +0 -16
  461. package/dist/webinar/collection.js +0 -43
  462. package/dist/webinar/collection.js.map +0 -1
  463. package/dist/webinar/index.d.ts +0 -5
  464. package/dist/webinar/index.js +0 -68
  465. package/dist/webinar/index.js.map +0 -1
  466. package/src/annotation/annotation.types.ts +0 -50
  467. package/src/annotation/constants.ts +0 -36
  468. package/src/annotation/index.ts +0 -328
  469. package/src/breakouts/README.md +0 -220
  470. package/src/breakouts/breakout.ts +0 -188
  471. package/src/breakouts/collection.ts +0 -19
  472. package/src/breakouts/edit-lock-error.ts +0 -25
  473. package/src/breakouts/events.ts +0 -56
  474. package/src/breakouts/index.ts +0 -925
  475. package/src/breakouts/request.ts +0 -55
  476. package/src/breakouts/utils.ts +0 -57
  477. package/src/common/errors/no-meeting-info.ts +0 -24
  478. package/src/controls-options-manager/types.ts +0 -59
  479. package/src/index.ts +0 -44
  480. package/src/interceptors/index.ts +0 -3
  481. package/src/interceptors/locusRetry.ts +0 -67
  482. package/src/interpretation/README.md +0 -60
  483. package/src/interpretation/collection.ts +0 -19
  484. package/src/interpretation/index.ts +0 -332
  485. package/src/interpretation/siLanguage.ts +0 -18
  486. package/src/meeting/locusMediaRequest.ts +0 -313
  487. package/src/meeting/request.type.ts +0 -13
  488. package/src/meeting/voicea-meeting.ts +0 -161
  489. package/src/meetings/meetings.types.ts +0 -12
  490. package/src/member/types.ts +0 -38
  491. package/src/multistream/mediaRequestManager.ts +0 -440
  492. package/src/multistream/receiveSlot.ts +0 -184
  493. package/src/multistream/receiveSlotManager.ts +0 -166
  494. package/src/multistream/remoteMedia.ts +0 -254
  495. package/src/multistream/remoteMediaGroup.ts +0 -284
  496. package/src/multistream/remoteMediaManager.ts +0 -1145
  497. package/src/multistream/sendSlotManager.ts +0 -170
  498. package/src/reachability/clusterReachability.ts +0 -320
  499. package/src/reachability/util.ts +0 -24
  500. package/src/reactions/constants.ts +0 -4
  501. package/src/rtcMetrics/constants.ts +0 -3
  502. package/src/rtcMetrics/index.ts +0 -124
  503. package/src/webinar/collection.ts +0 -31
  504. package/src/webinar/index.ts +0 -62
  505. package/test/integration/spec/converged-space-meetings.js +0 -233
  506. package/test/unit/spec/annotation/index.ts +0 -418
  507. package/test/unit/spec/breakouts/breakout.ts +0 -237
  508. package/test/unit/spec/breakouts/collection.ts +0 -15
  509. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  510. package/test/unit/spec/breakouts/events.ts +0 -89
  511. package/test/unit/spec/breakouts/index.ts +0 -1790
  512. package/test/unit/spec/breakouts/request.ts +0 -104
  513. package/test/unit/spec/breakouts/utils.js +0 -72
  514. package/test/unit/spec/interceptors/locusRetry.ts +0 -131
  515. package/test/unit/spec/interpretation/collection.ts +0 -15
  516. package/test/unit/spec/interpretation/index.ts +0 -589
  517. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  518. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  519. package/test/unit/spec/media/index.ts +0 -290
  520. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  521. package/test/unit/spec/meeting-info/index.js +0 -300
  522. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  523. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  524. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  525. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  526. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  527. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  528. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  529. package/test/unit/spec/reachability/clusterReachability.ts +0 -279
  530. package/test/unit/spec/reachability/request.js +0 -68
  531. package/test/unit/spec/reachability/util.ts +0 -40
  532. package/test/unit/spec/roap/request.ts +0 -255
  533. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  534. package/test/unit/spec/webinar/collection.ts +0 -13
  535. package/test/unit/spec/webinar/index.ts +0 -60
  536. package/test/utils/constants.js +0 -9
  537. package/test/utils/integrationTestUtils.js +0 -46
  538. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  539. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -33,24 +33,6 @@ describe('plugin-meetings', () => {
33
33
  assert.calledWith(getRolesSpy, self);
34
34
 
35
35
  assert.deepEqual(parsedSelf.roles, ['PRESENTER']);
36
- assert.deepEqual(parsedSelf.breakoutSessions, {
37
- active: [
38
- {
39
- name: 'Breakout session 2',
40
- groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
41
- sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
42
- sessionType: 'BREAKOUT',
43
- },
44
- ],
45
- allowed: [
46
- {
47
- name: 'Breakout session 2',
48
- groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
49
- sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
50
- sessionType: 'BREAKOUT',
51
- },
52
- ],
53
- });
54
36
  });
55
37
 
56
38
  it('calls getLayout and returns the resulting layout', () => {
@@ -76,101 +58,6 @@ describe('plugin-meetings', () => {
76
58
  });
77
59
  });
78
60
 
79
- describe('getBreakoutSessions', () => {
80
- it('should return breakout sessions', () => {
81
- assert.deepEqual(
82
- SelfUtils.getBreakoutSessions({controls: {breakout: {sessions: 'SESSIONS'}}}),
83
- 'SESSIONS'
84
- );
85
- });
86
- });
87
-
88
- describe('breakoutsChanged', () => {
89
- it('should return true if breakouts have changed', () => {
90
- const current = {
91
- breakoutSessions: {
92
- allowed: [
93
- {
94
- name: 'Breakout session 2',
95
- groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
96
- sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
97
- sessionType: 'BREAKOUT',
98
- },
99
- ],
100
- },
101
- breakout: {},
102
- };
103
- const previous = {
104
- breakoutSessions: {
105
- active: [
106
- {
107
- name: 'Breakout session 2',
108
- groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
109
- sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
110
- sessionType: 'BREAKOUT',
111
- },
112
- ],
113
- },
114
- breakout: {},
115
- };
116
-
117
- assert.isTrue(SelfUtils.breakoutsChanged(previous, current));
118
- });
119
-
120
- it('should return false if breakouts have not changed', () => {
121
- const current = {
122
- breakoutSessions: {
123
- active: [
124
- {
125
- name: 'Breakout session 2',
126
- groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
127
- sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
128
- sessionType: 'BREAKOUT',
129
- },
130
- ],
131
- },
132
- breakout: {},
133
- };
134
- const previous = {
135
- breakoutSessions: {
136
- active: [
137
- {
138
- name: 'Breakout session 2',
139
- groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
140
- sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
141
- sessionType: 'BREAKOUT',
142
- },
143
- ],
144
- },
145
- breakout: {},
146
- };
147
-
148
- assert.isFalse(SelfUtils.breakoutsChanged(previous, current));
149
- });
150
-
151
- it('should return false if no breakouts in current', () => {
152
- const current = {
153
- breakoutSessions: {
154
- },
155
- };
156
- const previous = {
157
- breakoutSessions: {
158
- active: [
159
- {
160
- name: 'Breakout session 2',
161
- groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
162
- sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
163
- sessionType: 'BREAKOUT',
164
- },
165
- ],
166
- },
167
- breakout: {},
168
- };
169
-
170
- assert.isFalse(SelfUtils.breakoutsChanged(previous, current));
171
- });
172
- });
173
-
174
61
  describe('canNotViewTheParticipantList', () => {
175
62
  it('should return the correct value', () => {
176
63
  assert.equal(
@@ -251,55 +138,6 @@ describe('plugin-meetings', () => {
251
138
  assert.equal(updates.canNotViewTheParticipantListChanged, false);
252
139
  });
253
140
  });
254
-
255
- describe('localAudioUnmuteRequestedByServer', () => {
256
- it('should return localAudioUnmuteRequestedByServer = false when requestedToUnmute = false', () => {
257
- const clonedSelf = cloneDeep(self);
258
-
259
- const {updates} = SelfUtils.getSelves(self, clonedSelf);
260
-
261
- assert.equal(updates.localAudioUnmuteRequestedByServer, false);
262
- });
263
-
264
- it('should return localAudioUnmuteRequestedByServer = true when first request is made with requestedToUnmute = true', () => {
265
- const clonedSelf = cloneDeep(self);
266
-
267
- //request to unmute with timestamp
268
- clonedSelf.controls.audio.requestedToUnmute = true;
269
- clonedSelf.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z';
270
-
271
- const {updates} = SelfUtils.getSelves(self, clonedSelf);
272
-
273
- assert.equal(updates.localAudioUnmuteRequestedByServer, true);
274
- });
275
-
276
- it('should return localAudioUnmuteRequestedByServer = true when requestedToUnmute = true and new requests lastModifiedRequestedToUnmute timestamp is greater than old one', () => {
277
- self.controls.audio.requestedToUnmute = true;
278
- self.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z';
279
- const clonedSelf = cloneDeep(self);
280
-
281
- //request to unmute with timestamp
282
- clonedSelf.controls.audio.requestedToUnmute = true;
283
- clonedSelf.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T19:25:04.369Z';
284
-
285
- const {updates} = SelfUtils.getSelves(self, clonedSelf);
286
-
287
- assert.equal(updates.localAudioUnmuteRequestedByServer, true);
288
- });
289
-
290
- it('should return localAudioUnmuteRequestedByServer = false when requestedToUnmute but lastModifiedRequestedToUnmute timestamps are same', () => {
291
- self.controls.audio.requestedToUnmute = true;
292
- self.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z';
293
- const clonedSelf = cloneDeep(self);
294
-
295
- clonedSelf.controls.audio.requestedToUnmute = true;
296
- clonedSelf.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z'
297
-
298
- const {updates} = SelfUtils.getSelves(self, clonedSelf);
299
-
300
- assert.equal(updates.localAudioUnmuteRequestedByServer, false);
301
- });
302
- });
303
141
  });
304
142
 
305
143
  describe('isSharingBlocked', () => {
@@ -344,117 +182,4 @@ describe('plugin-meetings', () => {
344
182
  assert.deepEqual(SelfUtils.isJoined(customSelf), false);
345
183
  });
346
184
  });
347
-
348
- describe('videoMutedByOthersChanged', () => {
349
- it('returns true if changed', () => {
350
- assert.equal(
351
- SelfUtils.videoMutedByOthersChanged({remoteVideoMuted: true}, {remoteVideoMuted: false}),
352
- true
353
- );
354
- });
355
-
356
- it('returns true if changed from undefined', () => {
357
- assert.equal(SelfUtils.videoMutedByOthersChanged({}, {remoteVideoMuted: false}), true);
358
- });
359
-
360
- it('returns false if not changed', () => {
361
- assert.equal(
362
- SelfUtils.videoMutedByOthersChanged({remoteVideoMuted: false}, {remoteVideoMuted: false}),
363
- false
364
- );
365
- });
366
- });
367
-
368
- describe('getReplacedBreakoutMoveId', () => {
369
- const deviceId = 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24';
370
- const breakoutMoveId = 'e5caeb2c-ffcc-4e06-a08a-1122e7710398';
371
- const clonedSelf = cloneDeep(self);
372
-
373
- it('get breakoutMoveId works', () => {
374
-
375
- assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(self, deviceId), breakoutMoveId);
376
-
377
- });
378
-
379
- it('replaces is empty', () => {
380
-
381
- clonedSelf.devices[0].replaces = undefined;
382
- assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(clonedSelf, deviceId), null);
383
-
384
- });
385
-
386
- it('no self or self.devices is not array', () => {
387
-
388
- assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(undefined, deviceId), null);
389
-
390
- clonedSelf.devices = {
391
- url: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
392
- deviceType: 'WEB',
393
- mediaSessionsExternal: false,
394
- replaces: [
395
- {
396
- breakoutMoveId: 'e5caeb2c-ffcc-4e06-a08a-1122e7710398',
397
- lastActive: '2023-05-04T07:14:32.068Z',
398
- locusUrl: 'https://locus-alpha-apdx.prod.meetapi.webex.com/locus/api/v1/loci/495061ca-7b3c-3b77-85ff-4e1bd58600d1',
399
- replacedAt: '2023-05-04T07:16:04.905Z',
400
- sessionId: 'be3147d4-c318-86d8-7611-8d24beaaca8d',
401
- }
402
- ],
403
- state: 'JOINED',
404
- };
405
- assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(clonedSelf, deviceId), null);
406
- });
407
- });
408
-
409
- describe('isRolesChanged', () => {
410
- it('should return false if new self is null', () => {
411
- const parsedSelf = SelfUtils.parse(self);
412
-
413
- assert.deepEqual(SelfUtils.isRolesChanged(parsedSelf, null), false);
414
- });
415
-
416
- it('should return true if self roles has changed', () => {
417
- const parsedSelf = SelfUtils.parse(self);
418
- const clonedSelf = cloneDeep(parsedSelf);
419
-
420
- clonedSelf.roles = ['COHOST'];
421
-
422
- assert.deepEqual(SelfUtils.isRolesChanged(parsedSelf, clonedSelf), true);
423
- });
424
-
425
- it('should return false if self roles has not changed', () => {
426
- const parsedSelf = SelfUtils.parse(self);
427
- const clonedSelf = cloneDeep(parsedSelf);
428
-
429
- clonedSelf.roles = ['PRESENTER'];
430
-
431
- assert.deepEqual(SelfUtils.isRolesChanged(parsedSelf, clonedSelf), false);
432
- });
433
- });
434
-
435
- describe('interpretationChanged', () => {
436
- it('should return false if new self is null', () => {
437
- const parsedSelf = SelfUtils.parse(self);
438
-
439
- assert.deepEqual(SelfUtils.interpretationChanged(parsedSelf, null), false);
440
- });
441
-
442
- it('should return true if interpretation info has changed', () => {
443
- const parsedSelf = SelfUtils.parse(self);
444
- const clonedSelf = cloneDeep(parsedSelf);
445
-
446
- clonedSelf.interpretation.sourceLanguage = 'ja';
447
-
448
- assert.deepEqual(SelfUtils.interpretationChanged(parsedSelf, clonedSelf), true);
449
- });
450
-
451
- it('should return false if interpretation info has not changed', () => {
452
- const parsedSelf = SelfUtils.parse(self);
453
- const clonedSelf = cloneDeep(parsedSelf);
454
-
455
- clonedSelf.interpretation.sourceLanguage = 'en';
456
-
457
- assert.deepEqual(SelfUtils.interpretationChanged(parsedSelf, clonedSelf), false);
458
- });
459
- });
460
185
  });
@@ -1,47 +1,54 @@
1
1
  import {assert} from '@webex/test-helper-chai';
2
2
  import sinon from 'sinon';
3
- import {ConnectionState, Event} from '@webex/internal-media-core';
4
3
  import MediaProperties from '@webex/plugin-meetings/src/media/properties';
5
4
  import MediaUtil from '@webex/plugin-meetings/src/media/util';
6
5
  import testUtils from '../../../utils/testUtils';
7
- import {ICE_AND_DTLS_CONNECTION_TIMEOUT} from '@webex/plugin-meetings/src/constants';
6
+ import {PC_BAIL_TIMEOUT} from '@webex/plugin-meetings/src/constants';
8
7
  import {Defer} from '@webex/common';
9
8
 
10
9
  describe('MediaProperties', () => {
11
10
  let mediaProperties;
12
- let mockMC;
11
+ let mockPc;
13
12
  let clock;
14
13
 
15
14
  beforeEach(() => {
16
15
  clock = sinon.useFakeTimers();
17
16
 
18
- mockMC = {
17
+ mockPc = {
19
18
  getStats: sinon.stub().resolves([]),
20
- on: sinon.stub(),
21
- off: sinon.stub(),
22
- getConnectionState: sinon.stub().returns(ConnectionState.Connected),
19
+ addEventListener: sinon.stub(),
20
+ removeEventListener: sinon.stub(),
21
+ iceConnectionState: 'connected',
23
22
  };
24
23
 
24
+ sinon.stub(MediaUtil, 'createPeerConnection').returns(mockPc);
25
+
25
26
  mediaProperties = new MediaProperties();
26
- mediaProperties.setMediaPeerConnection(mockMC);
27
27
  });
28
28
 
29
29
  afterEach(() => {
30
30
  clock.restore();
31
31
  sinon.restore();
32
32
  });
33
- describe('waitForMediaConnectionConnected', () => {
33
+ describe('waitForIceConnectedState', () => {
34
34
  it('resolves immediately if ice state is connected', async () => {
35
- await mediaProperties.waitForMediaConnectionConnected();
35
+ mockPc.iceConnectionState = 'connected';
36
+
37
+ await mediaProperties.waitForIceConnectedState();
38
+ });
39
+ it('resolves immediately if ice state is completed', async () => {
40
+ mockPc.iceConnectionState = 'completed';
41
+
42
+ await mediaProperties.waitForIceConnectedState();
36
43
  });
37
44
  it('rejects after timeout if ice state does not reach connected/completed', async () => {
38
- mockMC.getConnectionState.returns(ConnectionState.Connecting);
45
+ mockPc.iceConnectionState = 'connecting';
39
46
 
40
47
  let promiseResolved = false;
41
48
  let promiseRejected = false;
42
49
 
43
50
  mediaProperties
44
- .waitForMediaConnectionConnected()
51
+ .waitForIceConnectedState()
45
52
  .then(() => {
46
53
  promiseResolved = true;
47
54
  })
@@ -52,133 +59,135 @@ describe('MediaProperties', () => {
52
59
  assert.equal(promiseResolved, false);
53
60
  assert.equal(promiseRejected, false);
54
61
 
55
- await clock.tickAsync(ICE_AND_DTLS_CONNECTION_TIMEOUT);
62
+ await clock.tickAsync(PC_BAIL_TIMEOUT);
56
63
  await testUtils.flushPromises();
57
64
 
58
65
  assert.equal(promiseResolved, false);
59
66
  assert.equal(promiseRejected, true);
60
67
 
61
68
  // check that listener was registered and removed
62
- assert.calledOnce(mockMC.on);
63
- assert.equal(mockMC.on.getCall(0).args[0], Event.CONNECTION_STATE_CHANGED);
64
- const listener = mockMC.on.getCall(0).args[1];
69
+ assert.calledOnce(mockPc.addEventListener);
70
+ assert.equal(mockPc.addEventListener.getCall(0).args[0], 'iceconnectionstatechange');
71
+ const listener = mockPc.addEventListener.getCall(0).args[1];
65
72
 
66
- assert.calledOnce(mockMC.off);
67
- assert.calledWith(mockMC.off, Event.CONNECTION_STATE_CHANGED, listener);
73
+ assert.calledOnce(mockPc.removeEventListener);
74
+ assert.calledWith(mockPc.removeEventListener, 'iceconnectionstatechange', listener);
68
75
  });
69
76
 
70
- it(`resolves when media connection reaches "connected" state`, async () => {
71
- mockMC.getConnectionState.returns(ConnectionState.Connecting);
77
+ ['connected', 'completed'].forEach((successIceState) =>
78
+ it(`resolves when ice state reaches ${successIceState}`, async () => {
79
+ mockPc.iceConnectionState = 'connecting';
72
80
 
73
- const clearTimeoutSpy = sinon.spy(clock, 'clearTimeout');
81
+ const clearTimeoutSpy = sinon.spy(clock, 'clearTimeout');
74
82
 
75
- let promiseResolved = false;
76
- let promiseRejected = false;
83
+ let promiseResolved = false;
84
+ let promiseRejected = false;
77
85
 
78
- mediaProperties
79
- .waitForMediaConnectionConnected()
80
- .then(() => {
81
- promiseResolved = true;
82
- })
83
- .catch(() => {
84
- promiseRejected = true;
85
- });
86
+ mediaProperties
87
+ .waitForIceConnectedState()
88
+ .then(() => {
89
+ promiseResolved = true;
90
+ })
91
+ .catch(() => {
92
+ promiseRejected = true;
93
+ });
86
94
 
87
- assert.equal(promiseResolved, false);
88
- assert.equal(promiseRejected, false);
95
+ assert.equal(promiseResolved, false);
96
+ assert.equal(promiseRejected, false);
89
97
 
90
- // check the right listener was registered
91
- assert.calledOnce(mockMC.on);
92
- assert.equal(mockMC.on.getCall(0).args[0], Event.CONNECTION_STATE_CHANGED);
93
- const listener = mockMC.on.getCall(0).args[1];
98
+ // check the right listener was registered
99
+ assert.calledOnce(mockPc.addEventListener);
100
+ assert.equal(mockPc.addEventListener.getCall(0).args[0], 'iceconnectionstatechange');
101
+ const listener = mockPc.addEventListener.getCall(0).args[1];
94
102
 
95
- // call the listener and pretend we are now connected
96
- mockMC.getConnectionState.returns(ConnectionState.Connected);
97
- listener();
98
- await testUtils.flushPromises();
103
+ // call the listener and pretend we are now connected
104
+ mockPc.iceConnectionState = successIceState;
105
+ listener();
106
+ await testUtils.flushPromises();
99
107
 
100
- assert.equal(promiseResolved, true);
101
- assert.equal(promiseRejected, false);
108
+ assert.equal(promiseResolved, true);
109
+ assert.equal(promiseRejected, false);
102
110
 
103
- // check that listener was removed
104
- assert.calledOnce(mockMC.off);
105
- assert.calledWith(mockMC.off, Event.CONNECTION_STATE_CHANGED, listener);
111
+ // check that listener was removed
112
+ assert.calledOnce(mockPc.removeEventListener);
113
+ assert.calledWith(mockPc.removeEventListener, 'iceconnectionstatechange', listener);
106
114
 
107
- assert.calledOnce(clearTimeoutSpy);
108
- });
115
+ assert.calledOnce(clearTimeoutSpy);
116
+ })
117
+ );
109
118
  });
110
119
 
111
120
  describe('getCurrentConnectionType', () => {
112
- it('calls waitForMediaConnectionConnected', async () => {
113
- const spy = sinon.stub(mediaProperties, 'waitForMediaConnectionConnected');
121
+ it('calls waitForIceConnectedState', async () => {
122
+ const spy = sinon.stub(mediaProperties, 'waitForIceConnectedState');
114
123
 
115
124
  await mediaProperties.getCurrentConnectionType();
116
125
 
117
126
  assert.calledOnce(spy);
118
127
  });
119
- it('calls getStats() only after waitForMediaConnectionConnected resolves', async () => {
120
- const waitForMediaConnectionConnectedResult = new Defer();
128
+ it('calls getStats() only after waitForIceConnectedState resolves', async () => {
129
+ const waitForIceConnectedStateResult = new Defer();
121
130
 
122
- const waitForMediaConnectionConnectedStub = sinon
123
- .stub(mediaProperties, 'waitForMediaConnectionConnected')
124
- .returns(waitForMediaConnectionConnectedResult.promise);
131
+ const waitForIceConnectedStateStub = sinon
132
+ .stub(mediaProperties, 'waitForIceConnectedState')
133
+ .returns(waitForIceConnectedStateResult.promise);
125
134
 
126
135
  const result = mediaProperties.getCurrentConnectionType();
127
136
 
128
137
  await testUtils.flushPromises();
129
138
 
130
- assert.called(waitForMediaConnectionConnectedStub);
131
- assert.notCalled(mockMC.getStats);
139
+ assert.called(waitForIceConnectedStateStub);
140
+ assert.notCalled(mockPc.getStats);
132
141
 
133
- waitForMediaConnectionConnectedResult.resolve();
142
+ waitForIceConnectedStateResult.resolve();
134
143
  await testUtils.flushPromises();
135
144
 
136
- assert.called(mockMC.getStats);
145
+ assert.called(mockPc.getStats);
137
146
  await result;
138
147
  });
139
- it('rejects if waitForMediaConnectionConnected rejects', async () => {
140
- const waitForMediaConnectionConnectedResult = new Defer();
148
+ it('rejects if waitForIceConnectedState rejects', async () => {
149
+ const waitForIceConnectedStateResult = new Defer();
141
150
 
142
- const waitForMediaConnectionConnectedStub = sinon
143
- .stub(mediaProperties, 'waitForMediaConnectionConnected')
144
- .returns(waitForMediaConnectionConnectedResult.promise);
151
+ const waitForIceConnectedStateStub = sinon
152
+ .stub(mediaProperties, 'waitForIceConnectedState')
153
+ .returns(waitForIceConnectedStateResult.promise);
145
154
 
146
155
  const result = mediaProperties.getCurrentConnectionType();
147
156
 
148
157
  await testUtils.flushPromises();
149
158
 
150
- assert.called(waitForMediaConnectionConnectedStub);
159
+ assert.called(waitForIceConnectedStateStub);
151
160
 
152
- waitForMediaConnectionConnectedResult.reject(new Error('fake error'));
161
+ waitForIceConnectedStateResult.reject(new Error('fake error'));
153
162
  await testUtils.flushPromises();
154
163
 
155
- assert.notCalled(mockMC.getStats);
164
+ assert.notCalled(mockPc.getStats);
156
165
 
157
166
  await assert.isRejected(result);
158
167
  });
159
168
  it('returns "unknown" if getStats() fails', async () => {
160
- mockMC.getStats.rejects(new Error());
169
+ mockPc.getStats.rejects(new Error());
161
170
 
162
171
  const connectionType = await mediaProperties.getCurrentConnectionType();
163
172
  assert.equal(connectionType, 'unknown');
164
173
  });
165
174
 
166
175
  it('returns "unknown" if getStats() returns no candidate pairs', async () => {
167
- mockMC.getStats.resolves([{type: 'something', id: '1234'}]);
176
+ mockPc.getStats.resolves([{type: 'something', id: '1234'}]);
168
177
 
169
178
  const connectionType = await mediaProperties.getCurrentConnectionType();
170
179
  assert.equal(connectionType, 'unknown');
171
180
  });
172
181
 
173
182
  it('returns "unknown" if getStats() returns no successful candidate pair', async () => {
174
- mockMC.getStats.resolves([{type: 'candidate-pair', id: '1234', state: 'inprogress'}]);
183
+ mockPc.getStats.resolves([{type: 'candidate-pair', id: '1234', state: 'inprogress'}]);
175
184
 
176
185
  const connectionType = await mediaProperties.getCurrentConnectionType();
177
186
  assert.equal(connectionType, 'unknown');
178
187
  });
179
188
 
180
189
  it('returns "unknown" if getStats() returns a successful candidate pair but local candidate is missing', async () => {
181
- mockMC.getStats.resolves([
190
+ mockPc.getStats.resolves([
182
191
  {type: 'candidate-pair', id: '1234', state: 'succeeded', localCandidateId: 'wrong id'},
183
192
  ]);
184
193
 
@@ -187,7 +196,7 @@ describe('MediaProperties', () => {
187
196
  });
188
197
 
189
198
  it('returns "UDP" if getStats() returns a successful candidate pair with udp local candidate', async () => {
190
- mockMC.getStats.resolves([
199
+ mockPc.getStats.resolves([
191
200
  {
192
201
  type: 'candidate-pair',
193
202
  id: 'some candidate pair id',
@@ -203,7 +212,7 @@ describe('MediaProperties', () => {
203
212
  });
204
213
 
205
214
  it('returns "TCP" if getStats() returns a successful candidate pair with tcp local candidate', async () => {
206
- mockMC.getStats.resolves([
215
+ mockPc.getStats.resolves([
207
216
  {
208
217
  type: 'candidate-pair',
209
218
  id: 'some candidate pair id',
@@ -224,7 +233,7 @@ describe('MediaProperties', () => {
224
233
  {relayProtocol: 'udp', expectedConnectionType: 'TURN-UDP'},
225
234
  ].forEach(({relayProtocol, expectedConnectionType}) =>
226
235
  it(`returns "${expectedConnectionType}" if getStats() returns a successful candidate pair with a local candidate with relayProtocol=${relayProtocol}`, async () => {
227
- mockMC.getStats.resolves([
236
+ mockPc.getStats.resolves([
228
237
  {
229
238
  type: 'candidate-pair',
230
239
  id: 'some candidate pair id',
@@ -256,7 +265,7 @@ describe('MediaProperties', () => {
256
265
  // in real life this will never happen and all active candidate pairs will have same transport,
257
266
  // but here we're simulating a situation where they have different transports and just checking
258
267
  // that the code still works and just returns the first one
259
- mockMC.getStats.resolves([
268
+ mockPc.getStats.resolves([
260
269
  {
261
270
  type: 'inbound-rtp',
262
271
  id: 'whatever',