@webex/plugin-meetings 2.60.0 → 2.60.1-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 (535) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.d.ts +31 -0
  6. package/dist/annotation/constants.js +41 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.d.ts +117 -0
  9. package/dist/annotation/index.js +357 -0
  10. package/dist/annotation/index.js.map +1 -0
  11. package/dist/breakouts/breakout.d.ts +8 -0
  12. package/dist/breakouts/breakout.js +215 -0
  13. package/dist/breakouts/breakout.js.map +1 -0
  14. package/dist/breakouts/collection.d.ts +5 -0
  15. package/dist/breakouts/collection.js +22 -0
  16. package/dist/breakouts/collection.js.map +1 -0
  17. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  18. package/dist/breakouts/edit-lock-error.js +51 -0
  19. package/dist/breakouts/edit-lock-error.js.map +1 -0
  20. package/dist/breakouts/events.d.ts +8 -0
  21. package/dist/breakouts/events.js +44 -0
  22. package/dist/breakouts/events.js.map +1 -0
  23. package/dist/breakouts/index.d.ts +5 -0
  24. package/dist/breakouts/index.js +1047 -0
  25. package/dist/breakouts/index.js.map +1 -0
  26. package/dist/breakouts/request.d.ts +22 -0
  27. package/dist/breakouts/request.js +77 -0
  28. package/dist/breakouts/request.js.map +1 -0
  29. package/dist/breakouts/utils.d.ts +15 -0
  30. package/dist/breakouts/utils.js +64 -0
  31. package/dist/breakouts/utils.js.map +1 -0
  32. package/dist/common/browser-detection.js +2 -3
  33. package/dist/common/browser-detection.js.map +1 -1
  34. package/dist/common/collection.js +3 -4
  35. package/dist/common/collection.js.map +1 -1
  36. package/dist/common/config.js +1 -2
  37. package/dist/common/config.js.map +1 -1
  38. package/dist/common/errors/captcha-error.js +1 -2
  39. package/dist/common/errors/captcha-error.js.map +1 -1
  40. package/dist/common/errors/intent-to-join.js +1 -2
  41. package/dist/common/errors/intent-to-join.js.map +1 -1
  42. package/dist/common/errors/join-meeting.js +1 -2
  43. package/dist/common/errors/join-meeting.js.map +1 -1
  44. package/dist/common/errors/media.js +1 -2
  45. package/dist/common/errors/media.js.map +1 -1
  46. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  47. package/dist/common/errors/no-meeting-info.js +50 -0
  48. package/dist/common/errors/no-meeting-info.js.map +1 -0
  49. package/dist/common/errors/parameter.js +3 -4
  50. package/dist/common/errors/parameter.js.map +1 -1
  51. package/dist/common/errors/password-error.js +1 -2
  52. package/dist/common/errors/password-error.js.map +1 -1
  53. package/dist/common/errors/permission.js +1 -2
  54. package/dist/common/errors/permission.js.map +1 -1
  55. package/dist/common/errors/{reclaim-host-role-error.js → reclaim-host-role-errors.js} +7 -11
  56. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  57. package/dist/common/errors/reconnection-in-progress.js +1 -2
  58. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  59. package/dist/common/errors/reconnection.js +1 -2
  60. package/dist/common/errors/reconnection.js.map +1 -1
  61. package/dist/common/errors/stats.js +1 -2
  62. package/dist/common/errors/stats.js.map +1 -1
  63. package/dist/common/errors/webex-errors.d.ts +20 -8
  64. package/dist/common/errors/webex-errors.js +48 -28
  65. package/dist/common/errors/webex-errors.js.map +1 -1
  66. package/dist/common/errors/webex-meetings-error.js +1 -2
  67. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  68. package/dist/common/events/events-scope.js +1 -2
  69. package/dist/common/events/events-scope.js.map +1 -1
  70. package/dist/common/events/events.js +1 -2
  71. package/dist/common/events/events.js.map +1 -1
  72. package/dist/common/events/trigger-proxy.js +1 -2
  73. package/dist/common/events/trigger-proxy.js.map +1 -1
  74. package/dist/common/events/util.js +1 -2
  75. package/dist/common/events/util.js.map +1 -1
  76. package/dist/common/logs/logger-config.js +1 -2
  77. package/dist/common/logs/logger-config.js.map +1 -1
  78. package/dist/common/logs/logger-proxy.js +2 -3
  79. package/dist/common/logs/logger-proxy.js.map +1 -1
  80. package/dist/common/logs/request.d.ts +3 -1
  81. package/dist/common/logs/request.js +8 -5
  82. package/dist/common/logs/request.js.map +1 -1
  83. package/dist/common/queue.d.ts +9 -7
  84. package/dist/common/queue.js +22 -9
  85. package/dist/common/queue.js.map +1 -1
  86. package/dist/config.d.ts +6 -7
  87. package/dist/config.js +8 -10
  88. package/dist/config.js.map +1 -1
  89. package/dist/constants.d.ts +217 -97
  90. package/dist/constants.js +416 -441
  91. package/dist/constants.js.map +1 -1
  92. package/dist/controls-options-manager/constants.js +3 -6
  93. package/dist/controls-options-manager/constants.js.map +1 -1
  94. package/dist/controls-options-manager/enums.d.ts +11 -1
  95. package/dist/controls-options-manager/enums.js +15 -6
  96. package/dist/controls-options-manager/enums.js.map +1 -1
  97. package/dist/controls-options-manager/index.d.ts +17 -1
  98. package/dist/controls-options-manager/index.js +127 -38
  99. package/dist/controls-options-manager/index.js.map +1 -1
  100. package/dist/controls-options-manager/types.d.ts +43 -0
  101. package/dist/controls-options-manager/types.js +7 -0
  102. package/dist/controls-options-manager/types.js.map +1 -0
  103. package/dist/controls-options-manager/util.d.ts +1 -7
  104. package/dist/controls-options-manager/util.js +309 -19
  105. package/dist/controls-options-manager/util.js.map +1 -1
  106. package/dist/index.d.ts +6 -3
  107. package/dist/index.js +121 -5
  108. package/dist/index.js.map +1 -1
  109. package/dist/interceptors/index.d.ts +2 -0
  110. package/dist/interceptors/index.js +15 -0
  111. package/dist/interceptors/index.js.map +1 -0
  112. package/dist/interceptors/locusRetry.d.ts +27 -0
  113. package/dist/interceptors/locusRetry.js +94 -0
  114. package/dist/interceptors/locusRetry.js.map +1 -0
  115. package/dist/interpretation/collection.d.ts +5 -0
  116. package/dist/interpretation/collection.js +22 -0
  117. package/dist/interpretation/collection.js.map +1 -0
  118. package/dist/interpretation/index.d.ts +5 -0
  119. package/dist/interpretation/index.js +365 -0
  120. package/dist/interpretation/index.js.map +1 -0
  121. package/dist/interpretation/siLanguage.d.ts +5 -0
  122. package/dist/interpretation/siLanguage.js +24 -0
  123. package/dist/interpretation/siLanguage.js.map +1 -0
  124. package/dist/locus-info/controlsUtils.js +100 -11
  125. package/dist/locus-info/controlsUtils.js.map +1 -1
  126. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  127. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  128. package/dist/locus-info/fullState.js +1 -2
  129. package/dist/locus-info/fullState.js.map +1 -1
  130. package/dist/locus-info/hostUtils.js +1 -2
  131. package/dist/locus-info/hostUtils.js.map +1 -1
  132. package/dist/locus-info/index.d.ts +57 -4
  133. package/dist/locus-info/index.js +425 -84
  134. package/dist/locus-info/index.js.map +1 -1
  135. package/dist/locus-info/infoUtils.js +13 -5
  136. package/dist/locus-info/infoUtils.js.map +1 -1
  137. package/dist/locus-info/mediaSharesUtils.js +58 -3
  138. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  139. package/dist/locus-info/parser.d.ts +66 -6
  140. package/dist/locus-info/parser.js +253 -80
  141. package/dist/locus-info/parser.js.map +1 -1
  142. package/dist/locus-info/selfUtils.js +97 -13
  143. package/dist/locus-info/selfUtils.js.map +1 -1
  144. package/dist/media/index.d.ts +2 -0
  145. package/dist/media/index.js +107 -319
  146. package/dist/media/index.js.map +1 -1
  147. package/dist/media/properties.d.ts +38 -53
  148. package/dist/media/properties.js +96 -153
  149. package/dist/media/properties.js.map +1 -1
  150. package/dist/media/util.js +1 -22
  151. package/dist/media/util.js.map +1 -1
  152. package/dist/mediaQualityMetrics/config.d.ts +234 -230
  153. package/dist/mediaQualityMetrics/config.js +302 -498
  154. package/dist/mediaQualityMetrics/config.js.map +1 -1
  155. package/dist/meeting/in-meeting-actions.d.ts +88 -0
  156. package/dist/meeting/in-meeting-actions.js +94 -3
  157. package/dist/meeting/in-meeting-actions.js.map +1 -1
  158. package/dist/meeting/index.d.ts +591 -494
  159. package/dist/meeting/index.js +4732 -2990
  160. package/dist/meeting/index.js.map +1 -1
  161. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  162. package/dist/meeting/locusMediaRequest.js +291 -0
  163. package/dist/meeting/locusMediaRequest.js.map +1 -0
  164. package/dist/meeting/muteState.d.ts +93 -25
  165. package/dist/meeting/muteState.js +224 -133
  166. package/dist/meeting/muteState.js.map +1 -1
  167. package/dist/meeting/request.d.ts +82 -47
  168. package/dist/meeting/request.js +297 -199
  169. package/dist/meeting/request.js.map +1 -1
  170. package/dist/meeting/request.type.d.ts +11 -0
  171. package/dist/meeting/request.type.js +7 -0
  172. package/dist/meeting/request.type.js.map +1 -0
  173. package/dist/meeting/state.js +1 -2
  174. package/dist/meeting/state.js.map +1 -1
  175. package/dist/meeting/util.d.ts +102 -1
  176. package/dist/meeting/util.js +605 -435
  177. package/dist/meeting/util.js.map +1 -1
  178. package/dist/meeting-info/collection.js +3 -4
  179. package/dist/meeting-info/collection.js.map +1 -1
  180. package/dist/meeting-info/index.d.ts +13 -1
  181. package/dist/meeting-info/index.js +74 -7
  182. package/dist/meeting-info/index.js.map +1 -1
  183. package/dist/meeting-info/meeting-info-v2.d.ts +31 -1
  184. package/dist/meeting-info/meeting-info-v2.js +200 -63
  185. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  186. package/dist/meeting-info/request.js +1 -2
  187. package/dist/meeting-info/request.js.map +1 -1
  188. package/dist/meeting-info/util.js +2 -3
  189. package/dist/meeting-info/util.js.map +1 -1
  190. package/dist/meeting-info/utilv2.js +39 -41
  191. package/dist/meeting-info/utilv2.js.map +1 -1
  192. package/dist/meetings/collection.d.ts +17 -0
  193. package/dist/meetings/collection.js +42 -4
  194. package/dist/meetings/collection.js.map +1 -1
  195. package/dist/meetings/index.d.ts +93 -21
  196. package/dist/meetings/index.js +490 -127
  197. package/dist/meetings/index.js.map +1 -1
  198. package/dist/meetings/meetings.types.d.ts +4 -0
  199. package/dist/meetings/meetings.types.js +7 -0
  200. package/dist/meetings/meetings.types.js.map +1 -0
  201. package/dist/meetings/request.js +4 -3
  202. package/dist/meetings/request.js.map +1 -1
  203. package/dist/meetings/util.js +107 -6
  204. package/dist/meetings/util.js.map +1 -1
  205. package/dist/member/index.d.ts +13 -1
  206. package/dist/member/index.js +45 -2
  207. package/dist/member/index.js.map +1 -1
  208. package/dist/member/member.types.js +3 -4
  209. package/dist/member/member.types.js.map +1 -1
  210. package/dist/member/types.d.ts +32 -0
  211. package/dist/member/types.js +23 -0
  212. package/dist/member/types.js.map +1 -0
  213. package/dist/member/util.js +120 -29
  214. package/dist/member/util.js.map +1 -1
  215. package/dist/members/collection.d.ts +5 -0
  216. package/dist/members/collection.js +11 -2
  217. package/dist/members/collection.js.map +1 -1
  218. package/dist/members/index.d.ts +56 -11
  219. package/dist/members/index.js +174 -47
  220. package/dist/members/index.js.map +1 -1
  221. package/dist/members/request.d.ts +67 -11
  222. package/dist/members/request.js +102 -54
  223. package/dist/members/request.js.map +1 -1
  224. package/dist/members/types.js +3 -4
  225. package/dist/members/types.js.map +1 -1
  226. package/dist/members/util.d.ts +214 -1
  227. package/dist/members/util.js +327 -284
  228. package/dist/members/util.js.map +1 -1
  229. package/dist/metrics/constants.d.ts +15 -6
  230. package/dist/metrics/constants.js +17 -9
  231. package/dist/metrics/constants.js.map +1 -1
  232. package/dist/metrics/index.d.ts +4 -111
  233. package/dist/metrics/index.js +4 -452
  234. package/dist/metrics/index.js.map +1 -1
  235. package/dist/multistream/mediaRequestManager.d.ts +118 -0
  236. package/dist/multistream/mediaRequestManager.js +344 -0
  237. package/dist/multistream/mediaRequestManager.js.map +1 -0
  238. package/dist/multistream/receiveSlot.d.ts +68 -0
  239. package/dist/multistream/receiveSlot.js +200 -0
  240. package/dist/multistream/receiveSlot.js.map +1 -0
  241. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  242. package/dist/multistream/receiveSlotManager.js +174 -0
  243. package/dist/multistream/receiveSlotManager.js.map +1 -0
  244. package/dist/multistream/remoteMedia.d.ts +72 -0
  245. package/dist/multistream/remoteMedia.js +268 -0
  246. package/dist/multistream/remoteMedia.js.map +1 -0
  247. package/dist/multistream/remoteMediaGroup.d.ts +47 -0
  248. package/dist/multistream/remoteMediaGroup.js +267 -0
  249. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  250. package/dist/multistream/remoteMediaManager.d.ts +285 -0
  251. package/dist/multistream/remoteMediaManager.js +1211 -0
  252. package/dist/multistream/remoteMediaManager.js.map +1 -0
  253. package/dist/multistream/sendSlotManager.d.ts +61 -0
  254. package/dist/multistream/sendSlotManager.js +236 -0
  255. package/dist/multistream/sendSlotManager.js.map +1 -0
  256. package/dist/networkQualityMonitor/index.js +5 -4
  257. package/dist/networkQualityMonitor/index.js.map +1 -1
  258. package/dist/personal-meeting-room/index.js +2 -3
  259. package/dist/personal-meeting-room/index.js.map +1 -1
  260. package/dist/personal-meeting-room/request.js +2 -3
  261. package/dist/personal-meeting-room/request.js.map +1 -1
  262. package/dist/personal-meeting-room/util.js +1 -2
  263. package/dist/personal-meeting-room/util.js.map +1 -1
  264. package/dist/reachability/clusterReachability.d.ts +109 -0
  265. package/dist/reachability/clusterReachability.js +357 -0
  266. package/dist/reachability/clusterReachability.js.map +1 -0
  267. package/dist/reachability/index.d.ts +61 -95
  268. package/dist/reachability/index.js +300 -393
  269. package/dist/reachability/index.js.map +1 -1
  270. package/dist/reachability/request.d.ts +7 -3
  271. package/dist/reachability/request.js +18 -10
  272. package/dist/reachability/request.js.map +1 -1
  273. package/dist/reachability/util.d.ts +8 -0
  274. package/dist/reachability/util.js +29 -0
  275. package/dist/reachability/util.js.map +1 -0
  276. package/dist/reactions/constants.d.ts +3 -0
  277. package/dist/reactions/constants.js +12 -0
  278. package/dist/reactions/constants.js.map +1 -0
  279. package/dist/reactions/reactions.d.ts +2 -2
  280. package/dist/reactions/reactions.js +4 -6
  281. package/dist/reactions/reactions.js.map +1 -1
  282. package/dist/reactions/reactions.type.d.ts +23 -3
  283. package/dist/reactions/reactions.type.js +21 -23
  284. package/dist/reactions/reactions.type.js.map +1 -1
  285. package/dist/reconnection-manager/index.d.ts +32 -8
  286. package/dist/reconnection-manager/index.js +282 -231
  287. package/dist/reconnection-manager/index.js.map +1 -1
  288. package/dist/recording-controller/enums.js +4 -5
  289. package/dist/recording-controller/enums.js.map +1 -1
  290. package/dist/recording-controller/index.d.ts +15 -1
  291. package/dist/recording-controller/index.js +57 -46
  292. package/dist/recording-controller/index.js.map +1 -1
  293. package/dist/recording-controller/util.d.ts +5 -4
  294. package/dist/recording-controller/util.js +10 -10
  295. package/dist/recording-controller/util.js.map +1 -1
  296. package/dist/roap/index.d.ts +9 -47
  297. package/dist/roap/index.js +101 -235
  298. package/dist/roap/index.js.map +1 -1
  299. package/dist/roap/request.d.ts +18 -12
  300. package/dist/roap/request.js +126 -180
  301. package/dist/roap/request.js.map +1 -1
  302. package/dist/roap/turnDiscovery.d.ts +27 -16
  303. package/dist/roap/turnDiscovery.js +115 -105
  304. package/dist/roap/turnDiscovery.js.map +1 -1
  305. package/dist/rtcMetrics/constants.d.ts +4 -0
  306. package/dist/rtcMetrics/constants.js +11 -0
  307. package/dist/rtcMetrics/constants.js.map +1 -0
  308. package/dist/rtcMetrics/index.d.ts +54 -0
  309. package/dist/rtcMetrics/index.js +140 -0
  310. package/dist/rtcMetrics/index.js.map +1 -0
  311. package/dist/statsAnalyzer/global.d.ts +1 -83
  312. package/dist/statsAnalyzer/global.js +2 -85
  313. package/dist/statsAnalyzer/global.js.map +1 -1
  314. package/dist/statsAnalyzer/index.d.ts +50 -30
  315. package/dist/statsAnalyzer/index.js +435 -510
  316. package/dist/statsAnalyzer/index.js.map +1 -1
  317. package/dist/statsAnalyzer/mqaUtil.d.ts +8 -6
  318. package/dist/statsAnalyzer/mqaUtil.js +120 -83
  319. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  320. package/dist/transcription/index.js +1 -2
  321. package/dist/transcription/index.js.map +1 -1
  322. package/dist/webinar/collection.d.ts +16 -0
  323. package/dist/webinar/collection.js +43 -0
  324. package/dist/webinar/collection.js.map +1 -0
  325. package/dist/webinar/index.d.ts +5 -0
  326. package/dist/webinar/index.js +68 -0
  327. package/dist/webinar/index.js.map +1 -0
  328. package/package.json +38 -26
  329. package/src/annotation/annotation.types.ts +50 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +328 -0
  332. package/src/breakouts/README.md +220 -0
  333. package/src/breakouts/breakout.ts +188 -0
  334. package/src/breakouts/collection.ts +19 -0
  335. package/src/breakouts/edit-lock-error.ts +25 -0
  336. package/src/breakouts/events.ts +56 -0
  337. package/src/breakouts/index.ts +925 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/errors/no-meeting-info.ts +24 -0
  341. package/src/common/errors/webex-errors.ts +36 -12
  342. package/src/common/logs/logger-proxy.ts +1 -1
  343. package/src/common/logs/request.ts +5 -1
  344. package/src/common/queue.ts +22 -8
  345. package/src/config.ts +6 -7
  346. package/src/constants.ts +244 -97
  347. package/src/controls-options-manager/enums.ts +12 -0
  348. package/src/controls-options-manager/index.ts +116 -21
  349. package/src/controls-options-manager/types.ts +59 -0
  350. package/src/controls-options-manager/util.ts +294 -14
  351. package/src/index.ts +44 -0
  352. package/src/interceptors/index.ts +3 -0
  353. package/src/interceptors/locusRetry.ts +67 -0
  354. package/src/interpretation/README.md +60 -0
  355. package/src/interpretation/collection.ts +19 -0
  356. package/src/interpretation/index.ts +332 -0
  357. package/src/interpretation/siLanguage.ts +18 -0
  358. package/src/locus-info/controlsUtils.ts +110 -0
  359. package/src/locus-info/index.ts +449 -61
  360. package/src/locus-info/infoUtils.ts +14 -2
  361. package/src/locus-info/mediaSharesUtils.ts +64 -0
  362. package/src/locus-info/parser.ts +258 -47
  363. package/src/locus-info/selfUtils.ts +85 -2
  364. package/src/media/index.ts +153 -370
  365. package/src/media/properties.ts +106 -136
  366. package/src/media/util.ts +0 -21
  367. package/src/mediaQualityMetrics/config.ts +244 -377
  368. package/src/meeting/in-meeting-actions.ts +176 -0
  369. package/src/meeting/index.ts +3944 -2489
  370. package/src/meeting/locusMediaRequest.ts +313 -0
  371. package/src/meeting/muteState.ts +224 -138
  372. package/src/meeting/request.ts +207 -127
  373. package/src/meeting/request.type.ts +13 -0
  374. package/src/meeting/util.ts +590 -423
  375. package/src/meeting-info/index.ts +81 -8
  376. package/src/meeting-info/meeting-info-v2.ts +163 -13
  377. package/src/meeting-info/util.ts +1 -1
  378. package/src/meeting-info/utilv2.ts +28 -28
  379. package/src/meetings/collection.ts +33 -0
  380. package/src/meetings/index.ts +487 -126
  381. package/src/meetings/meetings.types.ts +12 -0
  382. package/src/meetings/request.ts +2 -0
  383. package/src/meetings/util.ts +116 -5
  384. package/src/member/index.ts +43 -1
  385. package/src/member/types.ts +38 -0
  386. package/src/member/util.ts +125 -28
  387. package/src/members/collection.ts +8 -0
  388. package/src/members/index.ts +187 -52
  389. package/src/members/request.ts +87 -27
  390. package/src/members/util.ts +332 -291
  391. package/src/metrics/constants.ts +15 -6
  392. package/src/metrics/index.ts +1 -471
  393. package/src/multistream/mediaRequestManager.ts +440 -0
  394. package/src/multistream/receiveSlot.ts +184 -0
  395. package/src/multistream/receiveSlotManager.ts +166 -0
  396. package/src/multistream/remoteMedia.ts +254 -0
  397. package/src/multistream/remoteMediaGroup.ts +284 -0
  398. package/src/multistream/remoteMediaManager.ts +1145 -0
  399. package/src/multistream/sendSlotManager.ts +170 -0
  400. package/src/networkQualityMonitor/index.ts +6 -6
  401. package/src/reachability/clusterReachability.ts +320 -0
  402. package/src/reachability/index.ts +243 -347
  403. package/src/reachability/request.ts +17 -8
  404. package/src/reachability/util.ts +24 -0
  405. package/src/reactions/constants.ts +4 -0
  406. package/src/reactions/reactions.ts +4 -4
  407. package/src/reactions/reactions.type.ts +30 -4
  408. package/src/reconnection-manager/index.ts +168 -156
  409. package/src/recording-controller/index.ts +20 -3
  410. package/src/recording-controller/util.ts +26 -9
  411. package/src/roap/index.ts +98 -241
  412. package/src/roap/request.ts +74 -148
  413. package/src/roap/turnDiscovery.ts +62 -56
  414. package/src/rtcMetrics/constants.ts +3 -0
  415. package/src/rtcMetrics/index.ts +124 -0
  416. package/src/statsAnalyzer/global.ts +1 -84
  417. package/src/statsAnalyzer/index.ts +477 -643
  418. package/src/statsAnalyzer/mqaUtil.ts +115 -114
  419. package/src/webinar/collection.ts +31 -0
  420. package/src/webinar/index.ts +62 -0
  421. package/test/integration/spec/converged-space-meetings.js +233 -0
  422. package/test/integration/spec/journey.js +320 -264
  423. package/test/integration/spec/space-meeting.js +77 -4
  424. package/test/unit/spec/annotation/index.ts +418 -0
  425. package/test/unit/spec/breakouts/breakout.ts +237 -0
  426. package/test/unit/spec/breakouts/collection.ts +15 -0
  427. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  428. package/test/unit/spec/breakouts/events.ts +89 -0
  429. package/test/unit/spec/breakouts/index.ts +1790 -0
  430. package/test/unit/spec/breakouts/request.ts +104 -0
  431. package/test/unit/spec/breakouts/utils.js +72 -0
  432. package/test/unit/spec/common/queue.js +31 -2
  433. package/test/unit/spec/controls-options-manager/index.js +163 -0
  434. package/test/unit/spec/controls-options-manager/util.js +576 -60
  435. package/test/unit/spec/fixture/locus.js +1 -0
  436. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  437. package/test/unit/spec/interpretation/collection.ts +15 -0
  438. package/test/unit/spec/interpretation/index.ts +589 -0
  439. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  440. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  441. package/test/unit/spec/locus-info/index.js +1390 -16
  442. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  443. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  444. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  445. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  446. package/test/unit/spec/locus-info/parser.js +116 -35
  447. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  448. package/test/unit/spec/media/index.ts +290 -0
  449. package/test/unit/spec/media/properties.ts +75 -84
  450. package/test/unit/spec/meeting/in-meeting-actions.ts +86 -0
  451. package/test/unit/spec/meeting/index.js +8187 -2769
  452. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  453. package/test/unit/spec/meeting/muteState.js +409 -213
  454. package/test/unit/spec/meeting/request.js +512 -42
  455. package/test/unit/spec/meeting/utils.js +741 -24
  456. package/test/unit/spec/meeting-info/index.js +300 -0
  457. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  458. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  459. package/test/unit/spec/meetings/collection.js +26 -0
  460. package/test/unit/spec/meetings/index.js +1313 -243
  461. package/test/unit/spec/meetings/utils.js +202 -2
  462. package/test/unit/spec/member/index.js +32 -9
  463. package/test/unit/spec/member/util.js +499 -61
  464. package/test/unit/spec/members/index.js +394 -5
  465. package/test/unit/spec/members/request.js +206 -27
  466. package/test/unit/spec/members/utils.js +173 -38
  467. package/test/unit/spec/metrics/index.js +1 -50
  468. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  469. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  470. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  471. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  472. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  473. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  474. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  475. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  476. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  477. package/test/unit/spec/reachability/index.ts +531 -24
  478. package/test/unit/spec/reachability/request.js +68 -0
  479. package/test/unit/spec/reachability/util.ts +40 -0
  480. package/test/unit/spec/reconnection-manager/index.js +162 -24
  481. package/test/unit/spec/recording-controller/index.js +293 -218
  482. package/test/unit/spec/recording-controller/util.js +223 -96
  483. package/test/unit/spec/roap/index.ts +200 -76
  484. package/test/unit/spec/roap/request.ts +255 -0
  485. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  486. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  487. package/test/unit/spec/stats-analyzer/index.js +261 -167
  488. package/test/unit/spec/webinar/collection.ts +13 -0
  489. package/test/unit/spec/webinar/index.ts +60 -0
  490. package/test/utils/constants.js +9 -0
  491. package/test/utils/integrationTestUtils.js +46 -0
  492. package/test/utils/testUtils.js +0 -45
  493. package/test/utils/webex-config.js +4 -0
  494. package/test/utils/webex-test-users.js +7 -3
  495. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  496. package/dist/meeting/effectsState.d.ts +0 -42
  497. package/dist/meeting/effectsState.js +0 -260
  498. package/dist/meeting/effectsState.js.map +0 -1
  499. package/dist/metrics/config.d.ts +0 -169
  500. package/dist/metrics/config.js +0 -289
  501. package/dist/metrics/config.js.map +0 -1
  502. package/dist/peer-connection-manager/index.d.ts +0 -6
  503. package/dist/peer-connection-manager/index.js +0 -671
  504. package/dist/peer-connection-manager/index.js.map +0 -1
  505. package/dist/peer-connection-manager/util.d.ts +0 -6
  506. package/dist/peer-connection-manager/util.js +0 -110
  507. package/dist/peer-connection-manager/util.js.map +0 -1
  508. package/dist/roap/collection.d.ts +0 -10
  509. package/dist/roap/collection.js +0 -63
  510. package/dist/roap/collection.js.map +0 -1
  511. package/dist/roap/handler.d.ts +0 -47
  512. package/dist/roap/handler.js +0 -279
  513. package/dist/roap/handler.js.map +0 -1
  514. package/dist/roap/state.d.ts +0 -9
  515. package/dist/roap/state.js +0 -127
  516. package/dist/roap/state.js.map +0 -1
  517. package/dist/roap/util.d.ts +0 -2
  518. package/dist/roap/util.js +0 -76
  519. package/dist/roap/util.js.map +0 -1
  520. package/src/index.js +0 -15
  521. package/src/meeting/effectsState.ts +0 -209
  522. package/src/metrics/config.ts +0 -485
  523. package/src/peer-connection-manager/index.ts +0 -847
  524. package/src/peer-connection-manager/util.ts +0 -119
  525. package/src/roap/collection.ts +0 -62
  526. package/src/roap/handler.ts +0 -294
  527. package/src/roap/state.ts +0 -156
  528. package/src/roap/util.ts +0 -100
  529. package/test/unit/spec/meeting/effectsState.js +0 -281
  530. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  531. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  532. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  533. package/test/unit/spec/roap/util.js +0 -30
  534. /package/dist/common/errors/{reclaim-host-role-error.d.ts → reclaim-host-role-errors.d.ts} +0 -0
  535. /package/src/common/errors/{reclaim-host-role-error.ts → reclaim-host-role-errors.ts} +0 -0
@@ -1,25 +1,34 @@
1
+ import { LocalCameraStream, LocalMicrophoneStream, LocalDisplayStream, LocalSystemAudioStream, RemoteStream } from '@webex/media-helpers';
2
+ export type MediaDirection = {
3
+ sendAudio: boolean;
4
+ sendVideo: boolean;
5
+ sendShare: boolean;
6
+ receiveAudio: boolean;
7
+ receiveVideo: boolean;
8
+ receiveShare: boolean;
9
+ };
1
10
  /**
2
11
  * @class MediaProperties
3
12
  */
4
13
  export default class MediaProperties {
5
- audioTrack: any;
6
- localQualityLevel: any;
7
- mediaDirection: any;
14
+ audioStream?: LocalMicrophoneStream;
15
+ mediaDirection: MediaDirection;
8
16
  mediaSettings: any;
9
- peerConnection: any;
10
- remoteAudioTrack: any;
17
+ webrtcMediaConnection: any;
18
+ remoteAudioStream: RemoteStream;
11
19
  remoteQualityLevel: any;
12
- remoteShare: any;
13
- remoteVideoTrack: any;
14
- shareTrack: any;
20
+ remoteShareStream: RemoteStream;
21
+ remoteVideoStream: RemoteStream;
22
+ shareVideoStream?: LocalDisplayStream;
23
+ shareAudioStream?: LocalSystemAudioStream;
15
24
  videoDeviceId: any;
16
- videoTrack: any;
25
+ videoStream?: LocalCameraStream;
17
26
  namespace: string;
18
27
  /**
19
28
  * @param {Object} [options] -- to auto construct
20
29
  * @returns {MediaProperties}
21
30
  */
22
- constructor(options?: any);
31
+ constructor();
23
32
  /**
24
33
  * Retrieves the preferred video input device
25
34
  * @returns {Object|null}
@@ -27,25 +36,25 @@ export default class MediaProperties {
27
36
  getVideoDeviceId(): any;
28
37
  setMediaDirection(mediaDirection: any): void;
29
38
  setMediaSettings(type: any, values: any): void;
30
- setMediaPeerConnection(peerConnection: any): void;
31
- setLocalVideoTrack(videoTrack: any): void;
32
- setLocalAudioTrack(audioTrack: any): void;
33
- setLocalQualityLevel(localQualityLevel: any): void;
34
- setLocalShareTrack(shareTrack: any): void;
39
+ setMediaPeerConnection(mediaPeerConnection: any): void;
40
+ setLocalVideoStream(videoStream?: LocalCameraStream): void;
41
+ setLocalAudioStream(audioStream?: LocalMicrophoneStream): void;
42
+ setLocalShareVideoStream(shareVideoStream?: LocalDisplayStream): void;
43
+ setLocalShareAudioStream(shareAudioStream?: LocalSystemAudioStream): void;
35
44
  setRemoteQualityLevel(remoteQualityLevel: any): void;
36
- setRemoteShare(remoteShare: any): void;
45
+ setRemoteShareStream(remoteShareStream: RemoteStream): void;
37
46
  /**
38
- * Sets the remote audio track
39
- * @param {MediaTrack} remoteAudioTrack MediaTrack to save
47
+ * Sets the remote audio stream
48
+ * @param {RemoteStream} remoteAudioStream RemoteStream to save
40
49
  * @returns {void}
41
50
  */
42
- setRemoteAudioTrack(remoteAudioTrack: any): void;
51
+ setRemoteAudioStream(remoteAudioStream: RemoteStream): void;
43
52
  /**
44
- * Sets the remote video track
45
- * @param {MediaTrack} remoteVideoTrack MediaTrack to save
53
+ * Sets the remote video stream
54
+ * @param {RemoteStream} remoteVideoStream RemoteStream to save
46
55
  * @returns {void}
47
56
  */
48
- setRemoteVideoTrack(remoteVideoTrack: any): void;
57
+ setRemoteVideoStream(remoteVideoStream: RemoteStream): void;
49
58
  /**
50
59
  * Stores the preferred video input device
51
60
  * @param {string} deviceId Preferred video input device
@@ -53,52 +62,28 @@ export default class MediaProperties {
53
62
  */
54
63
  setVideoDeviceId(deviceId: string): void;
55
64
  unsetPeerConnection(): void;
56
- reInitiatePeerconnection(turnServerInfo: any): void;
57
- unsetLocalVideoTrack(): void;
58
- unsetLocalShareTrack(): void;
59
- unsetLocalAudioTrack(): void;
60
- /**
61
- * Removes remote stream from class instance
62
- * @deprecated after v1.89.3
63
- * @returns {void}
64
- */
65
- unsetRemoteStream(): void;
66
65
  /**
67
66
  * Removes both remote audio and video from class instance
68
67
  * @returns {void}
69
68
  */
70
69
  unsetRemoteMedia(): void;
71
- unsetRemoteShare(): void;
72
- unsetLocalVideoTracks(): void;
70
+ unsetRemoteShareStream(): void;
73
71
  /**
74
- * Removes remote stream and remote share from class instance
75
- * @deprecated after v1.89.3
72
+ * Unsets all remote streams
76
73
  * @returns {void}
77
74
  */
78
75
  unsetRemoteStreams(): void;
79
76
  /**
80
- * Unsets all remote tracks
81
- * @returns {void}
82
- */
83
- unsetRemoteTracks(): void;
84
- unsetShareStreams(): void;
85
- /**
86
- * Removes both local and remote video stream from class instance
87
- * @deprecated after v1.89.3
88
- * @returns {void}
89
- */
90
- unsetMediaStreams(): void;
91
- /**
92
- * Removes both local and remote video stream from class instance
93
- * @returns {void}
77
+ * Returns if we have at least one local share stream or not.
78
+ * @returns {Boolean}
94
79
  */
95
- unsetMediaTracks(): void;
80
+ hasLocalShareStream(): boolean;
96
81
  /**
97
- * Waits until ice connection is established
82
+ * Waits for the webrtc media connection to be connected.
98
83
  *
99
84
  * @returns {Promise<void>}
100
85
  */
101
- waitForIceConnectedState(): Promise<void>;
86
+ waitForMediaConnectionConnected(): Promise<void>;
102
87
  /**
103
88
  * Returns the type of a connection that has been established
104
89
  *
@@ -8,47 +8,54 @@ _Object$defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
10
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
11
+ var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
11
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
12
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
13
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
14
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
16
+ var _internalMediaCore = require("@webex/internal-media-core");
15
17
  var _constants = require("../constants");
16
18
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
17
- var _util = _interopRequireDefault(require("./util"));
18
19
  /**
19
20
  * @class MediaProperties
20
21
  */
21
- var MediaProperties = /*#__PURE__*/function () {
22
+ var MediaProperties = exports.default = /*#__PURE__*/function () {
22
23
  /**
23
24
  * @param {Object} [options] -- to auto construct
24
25
  * @returns {MediaProperties}
25
26
  */
26
27
  function MediaProperties() {
27
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
28
28
  (0, _classCallCheck2.default)(this, MediaProperties);
29
- (0, _defineProperty2.default)(this, "audioTrack", void 0);
30
- (0, _defineProperty2.default)(this, "localQualityLevel", void 0);
29
+ (0, _defineProperty2.default)(this, "audioStream", void 0);
31
30
  (0, _defineProperty2.default)(this, "mediaDirection", void 0);
32
31
  (0, _defineProperty2.default)(this, "mediaSettings", void 0);
33
- (0, _defineProperty2.default)(this, "peerConnection", void 0);
34
- (0, _defineProperty2.default)(this, "remoteAudioTrack", void 0);
32
+ (0, _defineProperty2.default)(this, "webrtcMediaConnection", void 0);
33
+ (0, _defineProperty2.default)(this, "remoteAudioStream", void 0);
35
34
  (0, _defineProperty2.default)(this, "remoteQualityLevel", void 0);
36
- (0, _defineProperty2.default)(this, "remoteShare", void 0);
37
- (0, _defineProperty2.default)(this, "remoteVideoTrack", void 0);
38
- (0, _defineProperty2.default)(this, "shareTrack", void 0);
35
+ (0, _defineProperty2.default)(this, "remoteShareStream", void 0);
36
+ (0, _defineProperty2.default)(this, "remoteVideoStream", void 0);
37
+ (0, _defineProperty2.default)(this, "shareVideoStream", void 0);
38
+ (0, _defineProperty2.default)(this, "shareAudioStream", void 0);
39
39
  (0, _defineProperty2.default)(this, "videoDeviceId", void 0);
40
- (0, _defineProperty2.default)(this, "videoTrack", void 0);
40
+ (0, _defineProperty2.default)(this, "videoStream", void 0);
41
41
  (0, _defineProperty2.default)(this, "namespace", _constants.MEETINGS);
42
- this.peerConnection = _util.default.createPeerConnection();
43
- this.mediaDirection = options.mediaDirection;
44
- this.videoTrack = options.videoTrack;
45
- this.audioTrack = options.audioTrack;
46
- this.shareTrack = options.shareTrack;
47
- this.remoteShare = options.remoteShare;
48
- this.remoteAudioTrack = options.remoteAudioTrack;
49
- this.remoteVideoTrack = options.remoteVideoTrack;
50
- this.localQualityLevel = options.localQualityLevel || _constants.QUALITY_LEVELS['720p'];
51
- this.remoteQualityLevel = options.remoteQualityLevel || _constants.QUALITY_LEVELS.HIGH;
42
+ this.webrtcMediaConnection = null;
43
+ this.mediaDirection = {
44
+ receiveAudio: false,
45
+ receiveVideo: false,
46
+ receiveShare: false,
47
+ sendAudio: false,
48
+ sendVideo: false,
49
+ sendShare: false
50
+ };
51
+ this.videoStream = null;
52
+ this.audioStream = null;
53
+ this.shareVideoStream = null;
54
+ this.shareAudioStream = null;
55
+ this.remoteShareStream = undefined;
56
+ this.remoteAudioStream = undefined;
57
+ this.remoteVideoStream = undefined;
58
+ this.remoteQualityLevel = _constants.QUALITY_LEVELS.HIGH;
52
59
  this.mediaSettings = {};
53
60
  this.videoDeviceId = null;
54
61
  }
@@ -74,28 +81,28 @@ var MediaProperties = /*#__PURE__*/function () {
74
81
  }
75
82
  }, {
76
83
  key: "setMediaPeerConnection",
77
- value: function setMediaPeerConnection(peerConnection) {
78
- this.peerConnection = peerConnection;
84
+ value: function setMediaPeerConnection(mediaPeerConnection) {
85
+ this.webrtcMediaConnection = mediaPeerConnection;
79
86
  }
80
87
  }, {
81
- key: "setLocalVideoTrack",
82
- value: function setLocalVideoTrack(videoTrack) {
83
- this.videoTrack = videoTrack;
88
+ key: "setLocalVideoStream",
89
+ value: function setLocalVideoStream(videoStream) {
90
+ this.videoStream = videoStream;
84
91
  }
85
92
  }, {
86
- key: "setLocalAudioTrack",
87
- value: function setLocalAudioTrack(audioTrack) {
88
- this.audioTrack = audioTrack;
93
+ key: "setLocalAudioStream",
94
+ value: function setLocalAudioStream(audioStream) {
95
+ this.audioStream = audioStream;
89
96
  }
90
97
  }, {
91
- key: "setLocalQualityLevel",
92
- value: function setLocalQualityLevel(localQualityLevel) {
93
- this.localQualityLevel = localQualityLevel;
98
+ key: "setLocalShareVideoStream",
99
+ value: function setLocalShareVideoStream(shareVideoStream) {
100
+ this.shareVideoStream = shareVideoStream;
94
101
  }
95
102
  }, {
96
- key: "setLocalShareTrack",
97
- value: function setLocalShareTrack(shareTrack) {
98
- this.shareTrack = shareTrack;
103
+ key: "setLocalShareAudioStream",
104
+ value: function setLocalShareAudioStream(shareAudioStream) {
105
+ this.shareAudioStream = shareAudioStream;
99
106
  }
100
107
  }, {
101
108
  key: "setRemoteQualityLevel",
@@ -103,31 +110,31 @@ var MediaProperties = /*#__PURE__*/function () {
103
110
  this.remoteQualityLevel = remoteQualityLevel;
104
111
  }
105
112
  }, {
106
- key: "setRemoteShare",
107
- value: function setRemoteShare(remoteShare) {
108
- this.remoteShare = remoteShare;
113
+ key: "setRemoteShareStream",
114
+ value: function setRemoteShareStream(remoteShareStream) {
115
+ this.remoteShareStream = remoteShareStream;
109
116
  }
110
117
 
111
118
  /**
112
- * Sets the remote audio track
113
- * @param {MediaTrack} remoteAudioTrack MediaTrack to save
119
+ * Sets the remote audio stream
120
+ * @param {RemoteStream} remoteAudioStream RemoteStream to save
114
121
  * @returns {void}
115
122
  */
116
123
  }, {
117
- key: "setRemoteAudioTrack",
118
- value: function setRemoteAudioTrack(remoteAudioTrack) {
119
- this.remoteAudioTrack = remoteAudioTrack;
124
+ key: "setRemoteAudioStream",
125
+ value: function setRemoteAudioStream(remoteAudioStream) {
126
+ this.remoteAudioStream = remoteAudioStream;
120
127
  }
121
128
 
122
129
  /**
123
- * Sets the remote video track
124
- * @param {MediaTrack} remoteVideoTrack MediaTrack to save
130
+ * Sets the remote video stream
131
+ * @param {RemoteStream} remoteVideoStream RemoteStream to save
125
132
  * @returns {void}
126
133
  */
127
134
  }, {
128
- key: "setRemoteVideoTrack",
129
- value: function setRemoteVideoTrack(remoteVideoTrack) {
130
- this.remoteVideoTrack = remoteVideoTrack;
135
+ key: "setRemoteVideoStream",
136
+ value: function setRemoteVideoStream(remoteVideoStream) {
137
+ this.remoteVideoStream = remoteVideoStream;
131
138
  }
132
139
 
133
140
  /**
@@ -143,40 +150,7 @@ var MediaProperties = /*#__PURE__*/function () {
143
150
  }, {
144
151
  key: "unsetPeerConnection",
145
152
  value: function unsetPeerConnection() {
146
- this.peerConnection = null;
147
- }
148
- }, {
149
- key: "reInitiatePeerconnection",
150
- value: function reInitiatePeerconnection(turnServerInfo) {
151
- this.peerConnection = _util.default.createPeerConnection(turnServerInfo);
152
- }
153
- }, {
154
- key: "unsetLocalVideoTrack",
155
- value: function unsetLocalVideoTrack() {
156
- this.videoTrack = null;
157
- }
158
- }, {
159
- key: "unsetLocalShareTrack",
160
- value: function unsetLocalShareTrack() {
161
- this.shareTrack = null;
162
- }
163
- }, {
164
- key: "unsetLocalAudioTrack",
165
- value: function unsetLocalAudioTrack() {
166
- this.audioTrack = null;
167
- }
168
-
169
- /**
170
- * Removes remote stream from class instance
171
- * @deprecated after v1.89.3
172
- * @returns {void}
173
- */
174
- }, {
175
- key: "unsetRemoteStream",
176
- value: function unsetRemoteStream() {
177
- _loggerProxy.default.logger.warn('Media:properties#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3 (use unsetRemoteTracks instead)');
178
- // unsets audio and video only
179
- this.unsetRemoteMedia();
153
+ this.webrtcMediaConnection = null;
180
154
  }
181
155
 
182
156
  /**
@@ -186,105 +160,66 @@ var MediaProperties = /*#__PURE__*/function () {
186
160
  }, {
187
161
  key: "unsetRemoteMedia",
188
162
  value: function unsetRemoteMedia() {
189
- this.remoteAudioTrack = null;
190
- this.remoteVideoTrack = null;
191
- }
192
- }, {
193
- key: "unsetRemoteShare",
194
- value: function unsetRemoteShare() {
195
- this.remoteShare = null;
163
+ this.remoteAudioStream = null;
164
+ this.remoteVideoStream = null;
196
165
  }
197
166
  }, {
198
- key: "unsetLocalVideoTracks",
199
- value: function unsetLocalVideoTracks() {
200
- this.unsetLocalVideoTrack();
201
- this.unsetLocalShareTrack();
167
+ key: "unsetRemoteShareStream",
168
+ value: function unsetRemoteShareStream() {
169
+ this.remoteShareStream = null;
202
170
  }
203
171
 
204
172
  /**
205
- * Removes remote stream and remote share from class instance
206
- * @deprecated after v1.89.3
173
+ * Unsets all remote streams
207
174
  * @returns {void}
208
175
  */
209
176
  }, {
210
177
  key: "unsetRemoteStreams",
211
178
  value: function unsetRemoteStreams() {
212
- _loggerProxy.default.logger.warn('Media:properties#unsetRemoteStreams --> [DEPRECATION WARNING]: unsetRemoteStreams has been deprecated after v1.89.3 (use unsetRemoteTracks instead)');
213
- this.unsetRemoteStream();
214
- this.unsetRemoteShare();
215
- }
216
-
217
- /**
218
- * Unsets all remote tracks
219
- * @returns {void}
220
- */
221
- }, {
222
- key: "unsetRemoteTracks",
223
- value: function unsetRemoteTracks() {
224
179
  this.unsetRemoteMedia();
225
- this.unsetRemoteShare();
226
- }
227
- }, {
228
- key: "unsetShareStreams",
229
- value: function unsetShareStreams() {
230
- this.unsetLocalShareTrack();
231
- this.unsetRemoteShare();
180
+ this.unsetRemoteShareStream();
232
181
  }
233
182
 
234
183
  /**
235
- * Removes both local and remote video stream from class instance
236
- * @deprecated after v1.89.3
237
- * @returns {void}
184
+ * Returns if we have at least one local share stream or not.
185
+ * @returns {Boolean}
238
186
  */
239
187
  }, {
240
- key: "unsetMediaStreams",
241
- value: function unsetMediaStreams() {
242
- _loggerProxy.default.logger.warn('Media:properties#unsetMediaStreams --> [DEPRECATION WARNING]: unsetMediaStreams has been deprecated after v1.89.3 (use unsetMediaTracks instead)');
243
- this.unsetLocalVideoTrack();
244
- this.unsetRemoteStream();
188
+ key: "hasLocalShareStream",
189
+ value: function hasLocalShareStream() {
190
+ return !!(this.shareAudioStream || this.shareVideoStream);
245
191
  }
246
192
 
247
193
  /**
248
- * Removes both local and remote video stream from class instance
249
- * @returns {void}
250
- */
251
- }, {
252
- key: "unsetMediaTracks",
253
- value: function unsetMediaTracks() {
254
- this.unsetLocalVideoTrack();
255
- this.unsetRemoteMedia();
256
- }
257
-
258
- /**
259
- * Waits until ice connection is established
194
+ * Waits for the webrtc media connection to be connected.
260
195
  *
261
196
  * @returns {Promise<void>}
262
197
  */
263
198
  }, {
264
- key: "waitForIceConnectedState",
265
- value: function waitForIceConnectedState() {
199
+ key: "waitForMediaConnectionConnected",
200
+ value: function waitForMediaConnectionConnected() {
266
201
  var _this = this;
267
- var isIceConnected = function isIceConnected() {
268
- return _this.peerConnection.iceConnectionState === _constants.ICE_STATE.CONNECTED || _this.peerConnection.iceConnectionState === _constants.ICE_STATE.COMPLETED;
202
+ var isConnected = function isConnected() {
203
+ return _this.webrtcMediaConnection.getConnectionState() === _internalMediaCore.ConnectionState.Connected;
269
204
  };
270
- if (isIceConnected()) {
205
+ if (isConnected()) {
271
206
  return _promise.default.resolve();
272
207
  }
273
208
  return new _promise.default(function (resolve, reject) {
274
209
  var timer;
275
- var iceListener = function iceListener() {
276
- _loggerProxy.default.logger.log("Media:properties#waitForIceConnectedState --> ice state: ".concat(_this.peerConnection.iceConnectionState, ", conn state: ").concat(_this.peerConnection.connectionState));
277
- if (isIceConnected()) {
210
+ var connectionStateListener = function connectionStateListener() {
211
+ _loggerProxy.default.logger.log("Media:properties#waitForMediaConnectionConnected --> connection state: ".concat(_this.webrtcMediaConnection.getConnectionState()));
212
+ if (isConnected()) {
278
213
  clearTimeout(timer);
279
- _this.peerConnection.removeEventListener('iceconnectionstatechange', iceListener);
214
+ _this.webrtcMediaConnection.off(_internalMediaCore.Event.CONNECTION_STATE_CHANGED, connectionStateListener);
280
215
  resolve();
281
216
  }
282
217
  };
283
218
  timer = setTimeout(function () {
284
- _this.peerConnection.removeEventListener('iceconnectionstatechange', iceListener);
219
+ _this.webrtcMediaConnection.off(_internalMediaCore.Event.CONNECTION_STATE_CHANGED, connectionStateListener);
285
220
  reject();
286
- }, _constants.PC_BAIL_TIMEOUT);
287
- _this.peerConnection.addEventListener('iceconnectionstatechange', iceListener);
221
+ }, _constants.ICE_AND_DTLS_CONNECTION_TIMEOUT);
222
+ _this.webrtcMediaConnection.on(_internalMediaCore.Event.CONNECTION_STATE_CHANGED, connectionStateListener);
288
223
  });
289
224
  }
290
225
 
@@ -295,19 +230,19 @@ var MediaProperties = /*#__PURE__*/function () {
295
230
  */
296
231
  }, {
297
232
  key: "getCurrentConnectionType",
298
- value: function () {
233
+ value: (function () {
299
234
  var _getCurrentConnectionType = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
300
- var allStatsReports, statsResult, successfulCandidatePairs, foundConnectionType;
235
+ var allStatsReports, statsResult, successfulCandidatePairs, foundConnectionType, candidatePairStates;
301
236
  return _regenerator.default.wrap(function _callee$(_context) {
302
237
  while (1) switch (_context.prev = _context.next) {
303
238
  case 0:
304
239
  _context.next = 2;
305
- return this.waitForIceConnectedState();
240
+ return this.waitForMediaConnectionConnected();
306
241
  case 2:
307
242
  allStatsReports = [];
308
243
  _context.prev = 3;
309
244
  _context.next = 6;
310
- return this.peerConnection.getStats();
245
+ return this.webrtcMediaConnection.getStats();
311
246
  case 6:
312
247
  statsResult = _context.sent;
313
248
  statsResult.forEach(function (report) {
@@ -345,10 +280,19 @@ var MediaProperties = /*#__PURE__*/function () {
345
280
  foundConnectionType = connectionType;
346
281
  return true;
347
282
  }
283
+ _loggerProxy.default.logger.warn("Media:properties#getCurrentConnectionType --> missing localCandidate.protocol, candidateType=".concat(localCandidate.candidateType));
348
284
  return false;
349
285
  });
286
+ if (foundConnectionType === 'unknown') {
287
+ candidatePairStates = allStatsReports.filter(function (report) {
288
+ return report.type === 'candidate-pair';
289
+ }).map(function (report) {
290
+ return report.state;
291
+ });
292
+ _loggerProxy.default.logger.warn("Media:properties#getCurrentConnectionType --> all candidate pair states: ".concat((0, _stringify.default)(candidatePairStates)));
293
+ }
350
294
  return _context.abrupt("return", foundConnectionType);
351
- case 17:
295
+ case 18:
352
296
  case "end":
353
297
  return _context.stop();
354
298
  }
@@ -358,9 +302,8 @@ var MediaProperties = /*#__PURE__*/function () {
358
302
  return _getCurrentConnectionType.apply(this, arguments);
359
303
  }
360
304
  return getCurrentConnectionType;
361
- }()
305
+ }())
362
306
  }]);
363
307
  return MediaProperties;
364
308
  }();
365
- exports.default = MediaProperties;
366
309
  //# sourceMappingURL=properties.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_loggerProxy","_interopRequireDefault","_util","MediaProperties","options","arguments","length","undefined","_classCallCheck2","default","_defineProperty2","MEETINGS","peerConnection","MediaUtil","createPeerConnection","mediaDirection","videoTrack","audioTrack","shareTrack","remoteShare","remoteAudioTrack","remoteVideoTrack","localQualityLevel","QUALITY_LEVELS","remoteQualityLevel","HIGH","mediaSettings","videoDeviceId","_createClass2","key","value","getVideoDeviceId","setMediaDirection","setMediaSettings","type","values","setMediaPeerConnection","setLocalVideoTrack","setLocalAudioTrack","setLocalQualityLevel","setLocalShareTrack","setRemoteQualityLevel","setRemoteShare","setRemoteAudioTrack","setRemoteVideoTrack","setVideoDeviceId","deviceId","unsetPeerConnection","reInitiatePeerconnection","turnServerInfo","unsetLocalVideoTrack","unsetLocalShareTrack","unsetLocalAudioTrack","unsetRemoteStream","LoggerProxy","logger","warn","unsetRemoteMedia","unsetRemoteShare","unsetLocalVideoTracks","unsetRemoteStreams","unsetRemoteTracks","unsetShareStreams","unsetMediaStreams","unsetMediaTracks","waitForIceConnectedState","_this","isIceConnected","iceConnectionState","ICE_STATE","CONNECTED","COMPLETED","_promise","resolve","reject","timer","iceListener","log","concat","connectionState","clearTimeout","removeEventListener","setTimeout","PC_BAIL_TIMEOUT","addEventListener","_getCurrentConnectionType","_asyncToGenerator2","_regenerator","mark","_callee","allStatsReports","statsResult","successfulCandidatePairs","foundConnectionType","wrap","_callee$","_context","prev","next","getStats","sent","forEach","report","push","t0","filter","_report$state","state","toLowerCase","some","pair","localCandidate","find","id","localCandidateId","connectionType","relayProtocol","toUpperCase","_localCandidate$proto","protocol","abrupt","stop","getCurrentConnectionType","apply","exports"],"sources":["properties.ts"],"sourcesContent":["import {ICE_STATE, MEETINGS, PC_BAIL_TIMEOUT, QUALITY_LEVELS} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport MediaUtil from './util';\n\n/**\n * @class MediaProperties\n */\nexport default class MediaProperties {\n audioTrack: any;\n localQualityLevel: any;\n mediaDirection: any;\n mediaSettings: any;\n peerConnection: any;\n remoteAudioTrack: any;\n remoteQualityLevel: any;\n remoteShare: any;\n remoteVideoTrack: any;\n shareTrack: any;\n videoDeviceId: any;\n videoTrack: any;\n namespace = MEETINGS;\n\n /**\n * @param {Object} [options] -- to auto construct\n * @returns {MediaProperties}\n */\n constructor(options: any = {}) {\n this.peerConnection = MediaUtil.createPeerConnection();\n this.mediaDirection = options.mediaDirection;\n this.videoTrack = options.videoTrack;\n this.audioTrack = options.audioTrack;\n this.shareTrack = options.shareTrack;\n this.remoteShare = options.remoteShare;\n this.remoteAudioTrack = options.remoteAudioTrack;\n this.remoteVideoTrack = options.remoteVideoTrack;\n this.localQualityLevel = options.localQualityLevel || QUALITY_LEVELS['720p'];\n this.remoteQualityLevel = options.remoteQualityLevel || QUALITY_LEVELS.HIGH;\n this.mediaSettings = {};\n this.videoDeviceId = null;\n }\n\n /**\n * Retrieves the preferred video input device\n * @returns {Object|null}\n */\n getVideoDeviceId() {\n return this.videoDeviceId || null;\n }\n\n setMediaDirection(mediaDirection) {\n this.mediaDirection = mediaDirection;\n }\n\n setMediaSettings(type, values) {\n this.mediaSettings[type] = values;\n }\n\n setMediaPeerConnection(peerConnection) {\n this.peerConnection = peerConnection;\n }\n\n setLocalVideoTrack(videoTrack) {\n this.videoTrack = videoTrack;\n }\n\n setLocalAudioTrack(audioTrack) {\n this.audioTrack = audioTrack;\n }\n\n setLocalQualityLevel(localQualityLevel) {\n this.localQualityLevel = localQualityLevel;\n }\n\n setLocalShareTrack(shareTrack) {\n this.shareTrack = shareTrack;\n }\n\n setRemoteQualityLevel(remoteQualityLevel) {\n this.remoteQualityLevel = remoteQualityLevel;\n }\n\n setRemoteShare(remoteShare) {\n this.remoteShare = remoteShare;\n }\n\n /**\n * Sets the remote audio track\n * @param {MediaTrack} remoteAudioTrack MediaTrack to save\n * @returns {void}\n */\n setRemoteAudioTrack(remoteAudioTrack: any) {\n this.remoteAudioTrack = remoteAudioTrack;\n }\n\n /**\n * Sets the remote video track\n * @param {MediaTrack} remoteVideoTrack MediaTrack to save\n * @returns {void}\n */\n setRemoteVideoTrack(remoteVideoTrack: any) {\n this.remoteVideoTrack = remoteVideoTrack;\n }\n\n /**\n * Stores the preferred video input device\n * @param {string} deviceId Preferred video input device\n * @returns {void}\n */\n setVideoDeviceId(deviceId: string) {\n this.videoDeviceId = deviceId;\n }\n\n unsetPeerConnection() {\n this.peerConnection = null;\n }\n\n reInitiatePeerconnection(turnServerInfo) {\n this.peerConnection = MediaUtil.createPeerConnection(turnServerInfo);\n }\n\n unsetLocalVideoTrack() {\n this.videoTrack = null;\n }\n\n unsetLocalShareTrack() {\n this.shareTrack = null;\n }\n\n unsetLocalAudioTrack() {\n this.audioTrack = null;\n }\n\n /**\n * Removes remote stream from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetRemoteStream() {\n LoggerProxy.logger.warn(\n 'Media:properties#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3 (use unsetRemoteTracks instead)'\n );\n // unsets audio and video only\n this.unsetRemoteMedia();\n }\n\n /**\n * Removes both remote audio and video from class instance\n * @returns {void}\n */\n unsetRemoteMedia() {\n this.remoteAudioTrack = null;\n this.remoteVideoTrack = null;\n }\n\n unsetRemoteShare() {\n this.remoteShare = null;\n }\n\n unsetLocalVideoTracks() {\n this.unsetLocalVideoTrack();\n this.unsetLocalShareTrack();\n }\n\n /**\n * Removes remote stream and remote share from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetRemoteStreams() {\n LoggerProxy.logger.warn(\n 'Media:properties#unsetRemoteStreams --> [DEPRECATION WARNING]: unsetRemoteStreams has been deprecated after v1.89.3 (use unsetRemoteTracks instead)'\n );\n this.unsetRemoteStream();\n this.unsetRemoteShare();\n }\n\n /**\n * Unsets all remote tracks\n * @returns {void}\n */\n unsetRemoteTracks() {\n this.unsetRemoteMedia();\n this.unsetRemoteShare();\n }\n\n unsetShareStreams() {\n this.unsetLocalShareTrack();\n this.unsetRemoteShare();\n }\n\n /**\n * Removes both local and remote video stream from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetMediaStreams() {\n LoggerProxy.logger.warn(\n 'Media:properties#unsetMediaStreams --> [DEPRECATION WARNING]: unsetMediaStreams has been deprecated after v1.89.3 (use unsetMediaTracks instead)'\n );\n this.unsetLocalVideoTrack();\n this.unsetRemoteStream();\n }\n\n /**\n * Removes both local and remote video stream from class instance\n * @returns {void}\n */\n unsetMediaTracks() {\n this.unsetLocalVideoTrack();\n this.unsetRemoteMedia();\n }\n\n /**\n * Waits until ice connection is established\n *\n * @returns {Promise<void>}\n */\n waitForIceConnectedState() {\n const isIceConnected = () =>\n this.peerConnection.iceConnectionState === ICE_STATE.CONNECTED ||\n this.peerConnection.iceConnectionState === ICE_STATE.COMPLETED;\n\n if (isIceConnected()) {\n return Promise.resolve();\n }\n\n return new Promise<void>((resolve, reject) => {\n let timer;\n\n const iceListener = () => {\n LoggerProxy.logger.log(\n `Media:properties#waitForIceConnectedState --> ice state: ${this.peerConnection.iceConnectionState}, conn state: ${this.peerConnection.connectionState}`\n );\n\n if (isIceConnected()) {\n clearTimeout(timer);\n this.peerConnection.removeEventListener('iceconnectionstatechange', iceListener);\n resolve();\n }\n };\n\n timer = setTimeout(() => {\n this.peerConnection.removeEventListener('iceconnectionstatechange', iceListener);\n reject();\n }, PC_BAIL_TIMEOUT);\n\n this.peerConnection.addEventListener('iceconnectionstatechange', iceListener);\n });\n }\n\n /**\n * Returns the type of a connection that has been established\n *\n * @returns {Promise<'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'>}\n */\n async getCurrentConnectionType() {\n // we can only get the connection type after ICE connection has been established\n await this.waitForIceConnectedState();\n\n const allStatsReports = [];\n\n try {\n // eslint-disable-next-line no-await-in-loop\n const statsResult = await this.peerConnection.getStats();\n\n statsResult.forEach((report) => allStatsReports.push(report));\n } catch (error) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> getStats() failed: ${error}`\n );\n }\n\n const successfulCandidatePairs = allStatsReports.filter(\n (report) => report.type === 'candidate-pair' && report.state?.toLowerCase() === 'succeeded'\n );\n\n let foundConnectionType = 'unknown';\n\n // all of the successful pairs should have the same connection type, so just return the type for the first one\n successfulCandidatePairs.some((pair) => {\n const localCandidate = allStatsReports.find(\n (report) => report.type === 'local-candidate' && report.id === pair.localCandidateId\n );\n\n if (localCandidate === undefined) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> failed to find local candidate \"${pair.localCandidateId}\" in getStats() results`\n );\n\n return false;\n }\n\n let connectionType;\n\n if (localCandidate.relayProtocol) {\n connectionType = `TURN-${localCandidate.relayProtocol.toUpperCase()}`;\n } else {\n connectionType = localCandidate.protocol?.toUpperCase(); // it will be UDP or TCP\n }\n\n if (connectionType) {\n foundConnectionType = connectionType;\n\n return true;\n }\n\n return false;\n });\n\n return foundConnectionType;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_internalMediaCore","require","_constants","_loggerProxy","_interopRequireDefault","MediaProperties","exports","default","_classCallCheck2","_defineProperty2","MEETINGS","webrtcMediaConnection","mediaDirection","receiveAudio","receiveVideo","receiveShare","sendAudio","sendVideo","sendShare","videoStream","audioStream","shareVideoStream","shareAudioStream","remoteShareStream","undefined","remoteAudioStream","remoteVideoStream","remoteQualityLevel","QUALITY_LEVELS","HIGH","mediaSettings","videoDeviceId","_createClass2","key","value","getVideoDeviceId","setMediaDirection","setMediaSettings","type","values","setMediaPeerConnection","mediaPeerConnection","setLocalVideoStream","setLocalAudioStream","setLocalShareVideoStream","setLocalShareAudioStream","setRemoteQualityLevel","setRemoteShareStream","setRemoteAudioStream","setRemoteVideoStream","setVideoDeviceId","deviceId","unsetPeerConnection","unsetRemoteMedia","unsetRemoteShareStream","unsetRemoteStreams","hasLocalShareStream","waitForMediaConnectionConnected","_this","isConnected","getConnectionState","ConnectionState","Connected","_promise","resolve","reject","timer","connectionStateListener","LoggerProxy","logger","log","concat","clearTimeout","off","Event","CONNECTION_STATE_CHANGED","setTimeout","ICE_AND_DTLS_CONNECTION_TIMEOUT","on","_getCurrentConnectionType","_asyncToGenerator2","_regenerator","mark","_callee","allStatsReports","statsResult","successfulCandidatePairs","foundConnectionType","candidatePairStates","wrap","_callee$","_context","prev","next","getStats","sent","forEach","report","push","t0","warn","filter","_report$state","state","toLowerCase","some","pair","localCandidate","find","id","localCandidateId","connectionType","relayProtocol","toUpperCase","_localCandidate$proto","protocol","candidateType","map","_stringify","abrupt","stop","getCurrentConnectionType","apply","arguments"],"sources":["properties.ts"],"sourcesContent":["import {ConnectionState, Event} from '@webex/internal-media-core';\n\nimport {\n LocalCameraStream,\n LocalMicrophoneStream,\n LocalDisplayStream,\n LocalSystemAudioStream,\n RemoteStream,\n} from '@webex/media-helpers';\n\nimport {MEETINGS, ICE_AND_DTLS_CONNECTION_TIMEOUT, QUALITY_LEVELS} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nexport type MediaDirection = {\n sendAudio: boolean;\n sendVideo: boolean;\n sendShare: boolean;\n receiveAudio: boolean;\n receiveVideo: boolean;\n receiveShare: boolean;\n};\n\n/**\n * @class MediaProperties\n */\nexport default class MediaProperties {\n audioStream?: LocalMicrophoneStream;\n mediaDirection: MediaDirection;\n mediaSettings: any;\n webrtcMediaConnection: any;\n remoteAudioStream: RemoteStream;\n remoteQualityLevel: any;\n remoteShareStream: RemoteStream;\n remoteVideoStream: RemoteStream;\n shareVideoStream?: LocalDisplayStream;\n shareAudioStream?: LocalSystemAudioStream;\n videoDeviceId: any;\n videoStream?: LocalCameraStream;\n namespace = MEETINGS;\n\n /**\n * @param {Object} [options] -- to auto construct\n * @returns {MediaProperties}\n */\n constructor() {\n this.webrtcMediaConnection = null;\n this.mediaDirection = {\n receiveAudio: false,\n receiveVideo: false,\n receiveShare: false,\n sendAudio: false,\n sendVideo: false,\n sendShare: false,\n };\n this.videoStream = null;\n this.audioStream = null;\n this.shareVideoStream = null;\n this.shareAudioStream = null;\n this.remoteShareStream = undefined;\n this.remoteAudioStream = undefined;\n this.remoteVideoStream = undefined;\n this.remoteQualityLevel = QUALITY_LEVELS.HIGH;\n this.mediaSettings = {};\n this.videoDeviceId = null;\n }\n\n /**\n * Retrieves the preferred video input device\n * @returns {Object|null}\n */\n getVideoDeviceId() {\n return this.videoDeviceId || null;\n }\n\n setMediaDirection(mediaDirection) {\n this.mediaDirection = mediaDirection;\n }\n\n setMediaSettings(type, values) {\n this.mediaSettings[type] = values;\n }\n\n setMediaPeerConnection(mediaPeerConnection) {\n this.webrtcMediaConnection = mediaPeerConnection;\n }\n\n setLocalVideoStream(videoStream?: LocalCameraStream) {\n this.videoStream = videoStream;\n }\n\n setLocalAudioStream(audioStream?: LocalMicrophoneStream) {\n this.audioStream = audioStream;\n }\n\n setLocalShareVideoStream(shareVideoStream?: LocalDisplayStream) {\n this.shareVideoStream = shareVideoStream;\n }\n\n setLocalShareAudioStream(shareAudioStream?: LocalSystemAudioStream) {\n this.shareAudioStream = shareAudioStream;\n }\n\n setRemoteQualityLevel(remoteQualityLevel) {\n this.remoteQualityLevel = remoteQualityLevel;\n }\n\n setRemoteShareStream(remoteShareStream: RemoteStream) {\n this.remoteShareStream = remoteShareStream;\n }\n\n /**\n * Sets the remote audio stream\n * @param {RemoteStream} remoteAudioStream RemoteStream to save\n * @returns {void}\n */\n setRemoteAudioStream(remoteAudioStream: RemoteStream) {\n this.remoteAudioStream = remoteAudioStream;\n }\n\n /**\n * Sets the remote video stream\n * @param {RemoteStream} remoteVideoStream RemoteStream to save\n * @returns {void}\n */\n setRemoteVideoStream(remoteVideoStream: RemoteStream) {\n this.remoteVideoStream = remoteVideoStream;\n }\n\n /**\n * Stores the preferred video input device\n * @param {string} deviceId Preferred video input device\n * @returns {void}\n */\n setVideoDeviceId(deviceId: string) {\n this.videoDeviceId = deviceId;\n }\n\n unsetPeerConnection() {\n this.webrtcMediaConnection = null;\n }\n\n /**\n * Removes both remote audio and video from class instance\n * @returns {void}\n */\n unsetRemoteMedia() {\n this.remoteAudioStream = null;\n this.remoteVideoStream = null;\n }\n\n unsetRemoteShareStream() {\n this.remoteShareStream = null;\n }\n\n /**\n * Unsets all remote streams\n * @returns {void}\n */\n unsetRemoteStreams() {\n this.unsetRemoteMedia();\n this.unsetRemoteShareStream();\n }\n\n /**\n * Returns if we have at least one local share stream or not.\n * @returns {Boolean}\n */\n hasLocalShareStream() {\n return !!(this.shareAudioStream || this.shareVideoStream);\n }\n\n /**\n * Waits for the webrtc media connection to be connected.\n *\n * @returns {Promise<void>}\n */\n waitForMediaConnectionConnected(): Promise<void> {\n const isConnected = () =>\n this.webrtcMediaConnection.getConnectionState() === ConnectionState.Connected;\n\n if (isConnected()) {\n return Promise.resolve();\n }\n\n return new Promise<void>((resolve, reject) => {\n let timer;\n\n const connectionStateListener = () => {\n LoggerProxy.logger.log(\n `Media:properties#waitForMediaConnectionConnected --> connection state: ${this.webrtcMediaConnection.getConnectionState()}`\n );\n\n if (isConnected()) {\n clearTimeout(timer);\n this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n resolve();\n }\n };\n\n timer = setTimeout(() => {\n this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n reject();\n }, ICE_AND_DTLS_CONNECTION_TIMEOUT);\n\n this.webrtcMediaConnection.on(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n });\n }\n\n /**\n * Returns the type of a connection that has been established\n *\n * @returns {Promise<'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'>}\n */\n async getCurrentConnectionType() {\n // we can only get the connection type after ICE connection has been established\n await this.waitForMediaConnectionConnected();\n\n const allStatsReports = [];\n\n try {\n const statsResult = await this.webrtcMediaConnection.getStats();\n statsResult.forEach((report) => allStatsReports.push(report));\n } catch (error) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> getStats() failed: ${error}`\n );\n }\n\n const successfulCandidatePairs = allStatsReports.filter(\n (report) => report.type === 'candidate-pair' && report.state?.toLowerCase() === 'succeeded'\n );\n\n let foundConnectionType = 'unknown';\n\n // all of the successful pairs should have the same connection type, so just return the type for the first one\n successfulCandidatePairs.some((pair) => {\n const localCandidate = allStatsReports.find(\n (report) => report.type === 'local-candidate' && report.id === pair.localCandidateId\n );\n\n if (localCandidate === undefined) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> failed to find local candidate \"${pair.localCandidateId}\" in getStats() results`\n );\n\n return false;\n }\n\n let connectionType;\n\n if (localCandidate.relayProtocol) {\n connectionType = `TURN-${localCandidate.relayProtocol.toUpperCase()}`;\n } else {\n connectionType = localCandidate.protocol?.toUpperCase(); // it will be UDP or TCP\n }\n\n if (connectionType) {\n foundConnectionType = connectionType;\n\n return true;\n }\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> missing localCandidate.protocol, candidateType=${localCandidate.candidateType}`\n );\n\n return false;\n });\n\n if (foundConnectionType === 'unknown') {\n const candidatePairStates = allStatsReports\n .filter((report) => report.type === 'candidate-pair')\n .map((report) => report.state);\n\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> all candidate pair states: ${JSON.stringify(\n candidatePairStates\n )}`\n );\n }\n\n return foundConnectionType;\n }\n}\n"],"mappings":"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"}