@webex/plugin-meetings 3.0.0-beta.11 → 3.0.0-beta.111

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 (512) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.js +48 -0
  6. package/dist/annotation/constants.js.map +1 -0
  7. package/dist/annotation/index.js +357 -0
  8. package/dist/annotation/index.js.map +1 -0
  9. package/dist/breakouts/breakout.js +176 -0
  10. package/dist/breakouts/breakout.js.map +1 -0
  11. package/dist/breakouts/collection.js +23 -0
  12. package/dist/breakouts/collection.js.map +1 -0
  13. package/dist/breakouts/edit-lock-error.js +52 -0
  14. package/dist/breakouts/edit-lock-error.js.map +1 -0
  15. package/dist/breakouts/events.js +43 -0
  16. package/dist/breakouts/events.js.map +1 -0
  17. package/dist/breakouts/index.js +944 -0
  18. package/dist/breakouts/index.js.map +1 -0
  19. package/dist/breakouts/request.js +78 -0
  20. package/dist/breakouts/request.js.map +1 -0
  21. package/dist/breakouts/utils.js +67 -0
  22. package/dist/breakouts/utils.js.map +1 -0
  23. package/dist/common/browser-detection.js +1 -20
  24. package/dist/common/browser-detection.js.map +1 -1
  25. package/dist/common/collection.js +5 -20
  26. package/dist/common/collection.js.map +1 -1
  27. package/dist/common/config.js +0 -7
  28. package/dist/common/config.js.map +1 -1
  29. package/dist/common/errors/captcha-error.js +5 -26
  30. package/dist/common/errors/captcha-error.js.map +1 -1
  31. package/dist/common/errors/intent-to-join.js +5 -26
  32. package/dist/common/errors/intent-to-join.js.map +1 -1
  33. package/dist/common/errors/join-meeting.js +6 -27
  34. package/dist/common/errors/join-meeting.js.map +1 -1
  35. package/dist/common/errors/media.js +5 -26
  36. package/dist/common/errors/media.js.map +1 -1
  37. package/dist/common/errors/parameter.js +5 -33
  38. package/dist/common/errors/parameter.js.map +1 -1
  39. package/dist/common/errors/password-error.js +5 -26
  40. package/dist/common/errors/password-error.js.map +1 -1
  41. package/dist/common/errors/permission.js +4 -25
  42. package/dist/common/errors/permission.js.map +1 -1
  43. package/dist/common/errors/reconnection-in-progress.js +0 -17
  44. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  45. package/dist/common/errors/reconnection.js +5 -26
  46. package/dist/common/errors/reconnection.js.map +1 -1
  47. package/dist/common/errors/stats.js +5 -26
  48. package/dist/common/errors/stats.js.map +1 -1
  49. package/dist/common/errors/webex-errors.js +6 -41
  50. package/dist/common/errors/webex-errors.js.map +1 -1
  51. package/dist/common/errors/webex-meetings-error.js +1 -24
  52. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  53. package/dist/common/events/events-scope.js +0 -22
  54. package/dist/common/events/events-scope.js.map +1 -1
  55. package/dist/common/events/events.js +0 -23
  56. package/dist/common/events/events.js.map +1 -1
  57. package/dist/common/events/trigger-proxy.js +0 -12
  58. package/dist/common/events/trigger-proxy.js.map +1 -1
  59. package/dist/common/events/util.js +0 -15
  60. package/dist/common/events/util.js.map +1 -1
  61. package/dist/common/logs/logger-config.js +0 -4
  62. package/dist/common/logs/logger-config.js.map +1 -1
  63. package/dist/common/logs/logger-proxy.js +1 -8
  64. package/dist/common/logs/logger-proxy.js.map +1 -1
  65. package/dist/common/logs/request.js +35 -61
  66. package/dist/common/logs/request.js.map +1 -1
  67. package/dist/common/queue.js +4 -14
  68. package/dist/common/queue.js.map +1 -1
  69. package/dist/config.js +6 -6
  70. package/dist/config.js.map +1 -1
  71. package/dist/constants.js +193 -53
  72. package/dist/constants.js.map +1 -1
  73. package/dist/controls-options-manager/constants.js +14 -0
  74. package/dist/controls-options-manager/constants.js.map +1 -0
  75. package/dist/controls-options-manager/enums.js +27 -0
  76. package/dist/controls-options-manager/enums.js.map +1 -0
  77. package/dist/controls-options-manager/index.js +297 -0
  78. package/dist/controls-options-manager/index.js.map +1 -0
  79. package/dist/controls-options-manager/types.js +7 -0
  80. package/dist/controls-options-manager/types.js.map +1 -0
  81. package/dist/controls-options-manager/util.js +286 -0
  82. package/dist/controls-options-manager/util.js.map +1 -0
  83. package/dist/index.js +72 -17
  84. package/dist/index.js.map +1 -1
  85. package/dist/locus-info/controlsUtils.js +94 -29
  86. package/dist/locus-info/controlsUtils.js.map +1 -1
  87. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  88. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  89. package/dist/locus-info/fullState.js +0 -15
  90. package/dist/locus-info/fullState.js.map +1 -1
  91. package/dist/locus-info/hostUtils.js +4 -12
  92. package/dist/locus-info/hostUtils.js.map +1 -1
  93. package/dist/locus-info/index.js +383 -212
  94. package/dist/locus-info/index.js.map +1 -1
  95. package/dist/locus-info/infoUtils.js +0 -38
  96. package/dist/locus-info/infoUtils.js.map +1 -1
  97. package/dist/locus-info/mediaSharesUtils.js +12 -38
  98. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  99. package/dist/locus-info/parser.js +88 -123
  100. package/dist/locus-info/parser.js.map +1 -1
  101. package/dist/locus-info/selfUtils.js +99 -91
  102. package/dist/locus-info/selfUtils.js.map +1 -1
  103. package/dist/media/index.js +62 -147
  104. package/dist/media/index.js.map +1 -1
  105. package/dist/media/properties.js +71 -117
  106. package/dist/media/properties.js.map +1 -1
  107. package/dist/media/util.js +2 -9
  108. package/dist/media/util.js.map +1 -1
  109. package/dist/mediaQualityMetrics/config.js +505 -495
  110. package/dist/mediaQualityMetrics/config.js.map +1 -1
  111. package/dist/meeting/in-meeting-actions.js +67 -14
  112. package/dist/meeting/in-meeting-actions.js.map +1 -1
  113. package/dist/meeting/index.js +2477 -2417
  114. package/dist/meeting/index.js.map +1 -1
  115. package/dist/meeting/muteState.js +252 -113
  116. package/dist/meeting/muteState.js.map +1 -1
  117. package/dist/meeting/request.js +296 -289
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/request.type.js +7 -0
  120. package/dist/meeting/request.type.js.map +1 -0
  121. package/dist/meeting/state.js +21 -31
  122. package/dist/meeting/state.js.map +1 -1
  123. package/dist/meeting/util.js +58 -217
  124. package/dist/meeting/util.js.map +1 -1
  125. package/dist/meeting-info/collection.js +3 -25
  126. package/dist/meeting-info/collection.js.map +1 -1
  127. package/dist/meeting-info/index.js +10 -33
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.js +278 -281
  130. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  131. package/dist/meeting-info/request.js +1 -16
  132. package/dist/meeting-info/request.js.map +1 -1
  133. package/dist/meeting-info/util.js +98 -183
  134. package/dist/meeting-info/util.js.map +1 -1
  135. package/dist/meeting-info/utilv2.js +155 -232
  136. package/dist/meeting-info/utilv2.js.map +1 -1
  137. package/dist/meetings/collection.js +24 -20
  138. package/dist/meetings/collection.js.map +1 -1
  139. package/dist/meetings/index.js +675 -593
  140. package/dist/meetings/index.js.map +1 -1
  141. package/dist/meetings/request.js +23 -42
  142. package/dist/meetings/request.js.map +1 -1
  143. package/dist/meetings/util.js +177 -155
  144. package/dist/meetings/util.js.map +1 -1
  145. package/dist/member/index.js +89 -88
  146. package/dist/member/index.js.map +1 -1
  147. package/dist/member/types.js +15 -0
  148. package/dist/member/types.js.map +1 -0
  149. package/dist/member/util.js +101 -69
  150. package/dist/member/util.js.map +1 -1
  151. package/dist/members/collection.js +12 -12
  152. package/dist/members/collection.js.map +1 -1
  153. package/dist/members/index.js +162 -204
  154. package/dist/members/index.js.map +1 -1
  155. package/dist/members/request.js +58 -53
  156. package/dist/members/request.js.map +1 -1
  157. package/dist/members/types.js +15 -0
  158. package/dist/members/types.js.map +1 -0
  159. package/dist/members/util.js +107 -44
  160. package/dist/members/util.js.map +1 -1
  161. package/dist/metrics/config.js +50 -16
  162. package/dist/metrics/config.js.map +1 -1
  163. package/dist/metrics/constants.js +3 -7
  164. package/dist/metrics/constants.js.map +1 -1
  165. package/dist/metrics/index.js +93 -162
  166. package/dist/metrics/index.js.map +1 -1
  167. package/dist/multistream/mediaRequestManager.js +167 -50
  168. package/dist/multistream/mediaRequestManager.js.map +1 -1
  169. package/dist/multistream/receiveSlot.js +58 -65
  170. package/dist/multistream/receiveSlot.js.map +1 -1
  171. package/dist/multistream/receiveSlotManager.js +74 -93
  172. package/dist/multistream/receiveSlotManager.js.map +1 -1
  173. package/dist/multistream/remoteMedia.js +55 -74
  174. package/dist/multistream/remoteMedia.js.map +1 -1
  175. package/dist/multistream/remoteMediaGroup.js +6 -40
  176. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  177. package/dist/multistream/remoteMediaManager.js +466 -442
  178. package/dist/multistream/remoteMediaManager.js.map +1 -1
  179. package/dist/networkQualityMonitor/index.js +32 -59
  180. package/dist/networkQualityMonitor/index.js.map +1 -1
  181. package/dist/personal-meeting-room/index.js +10 -45
  182. package/dist/personal-meeting-room/index.js.map +1 -1
  183. package/dist/personal-meeting-room/request.js +2 -33
  184. package/dist/personal-meeting-room/request.js.map +1 -1
  185. package/dist/personal-meeting-room/util.js +0 -13
  186. package/dist/personal-meeting-room/util.js.map +1 -1
  187. package/dist/reachability/index.js +190 -199
  188. package/dist/reachability/index.js.map +1 -1
  189. package/dist/reachability/request.js +14 -23
  190. package/dist/reachability/request.js.map +1 -1
  191. package/dist/reactions/constants.js +13 -0
  192. package/dist/reactions/constants.js.map +1 -0
  193. package/dist/reactions/reactions.js +2 -4
  194. package/dist/reactions/reactions.js.map +1 -1
  195. package/dist/reactions/reactions.type.js +19 -23
  196. package/dist/reactions/reactions.type.js.map +1 -1
  197. package/dist/reconnection-manager/index.js +326 -465
  198. package/dist/reconnection-manager/index.js.map +1 -1
  199. package/dist/recording-controller/enums.js +17 -0
  200. package/dist/recording-controller/enums.js.map +1 -0
  201. package/dist/recording-controller/index.js +343 -0
  202. package/dist/recording-controller/index.js.map +1 -0
  203. package/dist/recording-controller/util.js +63 -0
  204. package/dist/recording-controller/util.js.map +1 -0
  205. package/dist/roap/index.js +38 -67
  206. package/dist/roap/index.js.map +1 -1
  207. package/dist/roap/request.js +143 -134
  208. package/dist/roap/request.js.map +1 -1
  209. package/dist/roap/turnDiscovery.js +149 -101
  210. package/dist/roap/turnDiscovery.js.map +1 -1
  211. package/dist/statsAnalyzer/global.js +1 -95
  212. package/dist/statsAnalyzer/global.js.map +1 -1
  213. package/dist/statsAnalyzer/index.js +369 -461
  214. package/dist/statsAnalyzer/index.js.map +1 -1
  215. package/dist/statsAnalyzer/mqaUtil.js +144 -94
  216. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  217. package/dist/transcription/index.js +13 -45
  218. package/dist/transcription/index.js.map +1 -1
  219. package/dist/types/annotation/annotation.types.d.ts +34 -0
  220. package/dist/types/annotation/constants.d.ts +31 -0
  221. package/dist/types/annotation/index.d.ts +124 -0
  222. package/dist/types/breakouts/breakout.d.ts +8 -0
  223. package/dist/types/breakouts/collection.d.ts +5 -0
  224. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  225. package/dist/types/breakouts/events.d.ts +2 -0
  226. package/dist/types/breakouts/index.d.ts +5 -0
  227. package/dist/types/breakouts/request.d.ts +22 -0
  228. package/dist/types/breakouts/utils.d.ts +15 -0
  229. package/dist/types/common/browser-detection.d.ts +9 -0
  230. package/dist/types/common/collection.d.ts +48 -0
  231. package/dist/types/common/config.d.ts +2 -0
  232. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  233. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  234. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  235. package/dist/types/common/errors/media.d.ts +15 -0
  236. package/dist/types/common/errors/parameter.d.ts +15 -0
  237. package/dist/types/common/errors/password-error.d.ts +15 -0
  238. package/dist/types/common/errors/permission.d.ts +14 -0
  239. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  240. package/dist/types/common/errors/reconnection.d.ts +15 -0
  241. package/dist/types/common/errors/stats.d.ts +15 -0
  242. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  243. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  244. package/dist/types/common/events/events-scope.d.ts +17 -0
  245. package/dist/types/common/events/events.d.ts +12 -0
  246. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  247. package/dist/types/common/events/util.d.ts +2 -0
  248. package/dist/types/common/logs/logger-config.d.ts +2 -0
  249. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  250. package/dist/types/common/logs/request.d.ts +34 -0
  251. package/dist/types/common/queue.d.ts +32 -0
  252. package/dist/types/config.d.ts +78 -0
  253. package/dist/types/constants.d.ts +984 -0
  254. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  255. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  256. package/dist/types/controls-options-manager/index.d.ts +136 -0
  257. package/dist/types/controls-options-manager/types.d.ts +43 -0
  258. package/dist/types/controls-options-manager/util.d.ts +1 -0
  259. package/dist/types/index.d.ts +7 -0
  260. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  261. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  262. package/dist/types/locus-info/fullState.d.ts +2 -0
  263. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  264. package/dist/types/locus-info/index.d.ts +315 -0
  265. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  266. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  267. package/dist/types/locus-info/parser.d.ts +212 -0
  268. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  269. package/dist/types/media/index.d.ts +34 -0
  270. package/dist/types/media/properties.d.ts +108 -0
  271. package/dist/types/media/util.d.ts +2 -0
  272. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  273. package/dist/types/meeting/in-meeting-actions.d.ts +137 -0
  274. package/dist/types/meeting/index.d.ts +1753 -0
  275. package/dist/types/meeting/muteState.d.ts +185 -0
  276. package/dist/types/meeting/request.d.ts +275 -0
  277. package/dist/types/meeting/request.type.d.ts +11 -0
  278. package/dist/types/meeting/state.d.ts +9 -0
  279. package/dist/types/meeting/util.d.ts +2 -0
  280. package/dist/types/meeting-info/collection.d.ts +20 -0
  281. package/dist/types/meeting-info/index.d.ts +57 -0
  282. package/dist/types/meeting-info/meeting-info-v2.d.ts +115 -0
  283. package/dist/types/meeting-info/request.d.ts +22 -0
  284. package/dist/types/meeting-info/util.d.ts +2 -0
  285. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  286. package/dist/types/meetings/collection.d.ts +31 -0
  287. package/dist/types/meetings/index.d.ts +345 -0
  288. package/dist/types/meetings/request.d.ts +27 -0
  289. package/dist/types/meetings/util.d.ts +18 -0
  290. package/dist/types/member/index.d.ts +157 -0
  291. package/dist/types/member/types.d.ts +21 -0
  292. package/dist/types/member/util.d.ts +2 -0
  293. package/dist/types/members/collection.d.ts +29 -0
  294. package/dist/types/members/index.d.ts +353 -0
  295. package/dist/types/members/request.d.ts +69 -0
  296. package/dist/types/members/types.d.ts +24 -0
  297. package/dist/types/members/util.d.ts +2 -0
  298. package/dist/types/metrics/config.d.ts +195 -0
  299. package/dist/types/metrics/constants.d.ts +54 -0
  300. package/dist/types/metrics/index.d.ts +169 -0
  301. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  302. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  303. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  304. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  305. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  306. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  307. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  308. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  309. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  310. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  311. package/dist/types/reachability/index.d.ts +152 -0
  312. package/dist/types/reachability/request.d.ts +37 -0
  313. package/dist/types/reactions/constants.d.ts +3 -0
  314. package/dist/types/reactions/reactions.d.ts +4 -0
  315. package/dist/types/reactions/reactions.type.d.ts +52 -0
  316. package/dist/types/reconnection-manager/index.d.ts +126 -0
  317. package/dist/types/recording-controller/enums.d.ts +7 -0
  318. package/dist/types/recording-controller/index.d.ts +193 -0
  319. package/dist/types/recording-controller/util.d.ts +13 -0
  320. package/dist/types/roap/index.d.ts +77 -0
  321. package/dist/types/roap/request.d.ts +38 -0
  322. package/dist/types/roap/turnDiscovery.d.ts +88 -0
  323. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  324. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  325. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  326. package/dist/types/transcription/index.d.ts +64 -0
  327. package/internal-README.md +7 -6
  328. package/package.json +28 -21
  329. package/src/annotation/annotation.types.ts +41 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +339 -0
  332. package/src/breakouts/README.md +220 -0
  333. package/src/breakouts/breakout.ts +141 -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 +37 -0
  337. package/src/breakouts/index.ts +835 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/browser-detection.ts +9 -6
  341. package/src/common/collection.ts +3 -1
  342. package/src/common/errors/captcha-error.ts +6 -6
  343. package/src/common/errors/intent-to-join.ts +6 -6
  344. package/src/common/errors/join-meeting.ts +12 -8
  345. package/src/common/errors/media.ts +6 -6
  346. package/src/common/errors/parameter.ts +9 -6
  347. package/src/common/errors/password-error.ts +6 -6
  348. package/src/common/errors/permission.ts +5 -5
  349. package/src/common/errors/reconnection.ts +6 -6
  350. package/src/common/errors/stats.ts +6 -6
  351. package/src/common/errors/webex-errors.ts +7 -5
  352. package/src/common/errors/webex-meetings-error.ts +1 -1
  353. package/src/common/events/events-scope.ts +5 -1
  354. package/src/common/events/events.ts +5 -1
  355. package/src/common/events/trigger-proxy.ts +8 -3
  356. package/src/common/events/util.ts +1 -2
  357. package/src/common/logs/logger-proxy.ts +21 -10
  358. package/src/common/logs/request.ts +11 -8
  359. package/src/config.ts +16 -12
  360. package/src/constants.ts +141 -6
  361. package/src/controls-options-manager/constants.ts +5 -0
  362. package/src/controls-options-manager/enums.ts +18 -0
  363. package/src/controls-options-manager/index.ts +278 -0
  364. package/src/controls-options-manager/types.ts +59 -0
  365. package/src/controls-options-manager/util.ts +274 -0
  366. package/src/index.ts +33 -0
  367. package/src/locus-info/controlsUtils.ts +145 -24
  368. package/src/locus-info/fullState.ts +15 -11
  369. package/src/locus-info/hostUtils.ts +4 -3
  370. package/src/locus-info/index.ts +326 -55
  371. package/src/locus-info/infoUtils.ts +12 -4
  372. package/src/locus-info/mediaSharesUtils.ts +4 -4
  373. package/src/locus-info/parser.ts +46 -68
  374. package/src/locus-info/selfUtils.ts +187 -56
  375. package/src/media/index.ts +142 -172
  376. package/src/media/properties.ts +43 -36
  377. package/src/media/util.ts +1 -1
  378. package/src/mediaQualityMetrics/config.ts +380 -378
  379. package/src/meeting/in-meeting-actions.ts +139 -3
  380. package/src/meeting/index.ts +2674 -1543
  381. package/src/meeting/muteState.ts +271 -68
  382. package/src/meeting/request.ts +231 -135
  383. package/src/meeting/request.type.ts +13 -0
  384. package/src/meeting/state.ts +45 -30
  385. package/src/meeting/util.ts +119 -110
  386. package/src/meeting-info/collection.ts +2 -1
  387. package/src/meeting-info/index.ts +32 -30
  388. package/src/meeting-info/meeting-info-v2.ts +201 -113
  389. package/src/meeting-info/request.ts +9 -3
  390. package/src/meeting-info/util.ts +54 -46
  391. package/src/meeting-info/utilv2.ts +70 -55
  392. package/src/meetings/collection.ts +21 -1
  393. package/src/meetings/index.ts +749 -437
  394. package/src/meetings/request.ts +29 -25
  395. package/src/meetings/util.ts +122 -33
  396. package/src/member/index.ts +95 -49
  397. package/src/member/types.ts +24 -0
  398. package/src/member/util.ts +106 -13
  399. package/src/members/collection.ts +8 -1
  400. package/src/members/index.ts +281 -129
  401. package/src/members/request.ts +87 -14
  402. package/src/members/types.ts +28 -0
  403. package/src/members/util.ts +140 -49
  404. package/src/metrics/config.ts +302 -90
  405. package/src/metrics/constants.ts +1 -6
  406. package/src/metrics/index.ts +124 -95
  407. package/src/multistream/mediaRequestManager.ts +203 -45
  408. package/src/multistream/receiveSlot.ts +69 -26
  409. package/src/multistream/receiveSlotManager.ts +62 -38
  410. package/src/multistream/remoteMedia.ts +30 -4
  411. package/src/multistream/remoteMediaGroup.ts +4 -3
  412. package/src/multistream/remoteMediaManager.ts +230 -66
  413. package/src/networkQualityMonitor/index.ts +24 -27
  414. package/src/personal-meeting-room/index.ts +12 -16
  415. package/src/personal-meeting-room/request.ts +10 -3
  416. package/src/personal-meeting-room/util.ts +3 -3
  417. package/src/reachability/index.ts +131 -79
  418. package/src/reachability/request.ts +43 -34
  419. package/src/reactions/constants.ts +4 -0
  420. package/src/reactions/reactions.ts +8 -8
  421. package/src/reactions/reactions.type.ts +31 -5
  422. package/src/reconnection-manager/index.ts +193 -111
  423. package/src/recording-controller/enums.ts +8 -0
  424. package/src/recording-controller/index.ts +315 -0
  425. package/src/recording-controller/util.ts +58 -0
  426. package/src/roap/index.ts +63 -51
  427. package/src/roap/request.ts +86 -53
  428. package/src/roap/turnDiscovery.ts +105 -46
  429. package/src/statsAnalyzer/global.ts +8 -104
  430. package/src/statsAnalyzer/index.ts +624 -376
  431. package/src/statsAnalyzer/mqaUtil.ts +203 -90
  432. package/src/transcription/index.ts +34 -32
  433. package/test/integration/spec/converged-space-meetings.js +177 -0
  434. package/test/integration/spec/journey.js +670 -466
  435. package/test/integration/spec/space-meeting.js +320 -204
  436. package/test/integration/spec/transcription.js +7 -8
  437. package/test/unit/spec/annotation/index.ts +435 -0
  438. package/test/unit/spec/breakouts/breakout.ts +184 -0
  439. package/test/unit/spec/breakouts/collection.ts +15 -0
  440. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  441. package/test/unit/spec/breakouts/events.ts +77 -0
  442. package/test/unit/spec/breakouts/index.ts +1542 -0
  443. package/test/unit/spec/breakouts/request.ts +104 -0
  444. package/test/unit/spec/breakouts/utils.js +72 -0
  445. package/test/unit/spec/common/browser-detection.js +9 -28
  446. package/test/unit/spec/controls-options-manager/index.js +287 -0
  447. package/test/unit/spec/controls-options-manager/util.js +504 -0
  448. package/test/unit/spec/fixture/locus.js +93 -90
  449. package/test/unit/spec/locus-info/controlsUtils.js +289 -32
  450. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  451. package/test/unit/spec/locus-info/index.js +585 -5
  452. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  453. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  454. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  455. package/test/unit/spec/locus-info/parser.js +3 -9
  456. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  457. package/test/unit/spec/locus-info/selfUtils.js +236 -12
  458. package/test/unit/spec/media/index.ts +104 -8
  459. package/test/unit/spec/media/properties.ts +9 -9
  460. package/test/unit/spec/meeting/in-meeting-actions.ts +66 -3
  461. package/test/unit/spec/meeting/index.js +2934 -946
  462. package/test/unit/spec/meeting/muteState.js +368 -70
  463. package/test/unit/spec/meeting/request.js +194 -44
  464. package/test/unit/spec/meeting/utils.js +146 -165
  465. package/test/unit/spec/meeting-info/meetinginfov2.js +333 -74
  466. package/test/unit/spec/meeting-info/request.js +7 -9
  467. package/test/unit/spec/meeting-info/util.js +11 -12
  468. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  469. package/test/unit/spec/meetings/collection.js +15 -1
  470. package/test/unit/spec/meetings/index.js +1052 -329
  471. package/test/unit/spec/meetings/utils.js +163 -14
  472. package/test/unit/spec/member/index.js +24 -1
  473. package/test/unit/spec/member/util.js +383 -32
  474. package/test/unit/spec/members/index.js +402 -54
  475. package/test/unit/spec/members/request.js +76 -20
  476. package/test/unit/spec/members/utils.js +191 -4
  477. package/test/unit/spec/metrics/index.js +104 -20
  478. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  479. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  480. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  481. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  482. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  483. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  484. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  485. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  486. package/test/unit/spec/reachability/index.ts +176 -27
  487. package/test/unit/spec/reachability/request.js +66 -0
  488. package/test/unit/spec/reconnection-manager/index.js +62 -31
  489. package/test/unit/spec/recording-controller/index.js +231 -0
  490. package/test/unit/spec/recording-controller/util.js +102 -0
  491. package/test/unit/spec/roap/index.ts +21 -16
  492. package/test/unit/spec/roap/request.ts +217 -0
  493. package/test/unit/spec/roap/turnDiscovery.ts +93 -49
  494. package/test/unit/spec/stats-analyzer/index.js +116 -60
  495. package/test/utils/cmr.js +44 -42
  496. package/test/utils/constants.js +9 -0
  497. package/test/utils/integrationTestUtils.js +64 -0
  498. package/test/utils/testUtils.js +63 -99
  499. package/test/utils/webex-config.js +22 -18
  500. package/test/utils/webex-test-users.js +57 -50
  501. package/tsconfig.json +6 -0
  502. package/dist/media/internal-media-core-wrapper.js +0 -22
  503. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  504. package/dist/meeting/effectsState.js +0 -334
  505. package/dist/meeting/effectsState.js.map +0 -1
  506. package/dist/multistream/multistreamMedia.js +0 -116
  507. package/dist/multistream/multistreamMedia.js.map +0 -1
  508. package/src/index.js +0 -15
  509. package/src/media/internal-media-core-wrapper.ts +0 -9
  510. package/src/meeting/effectsState.ts +0 -211
  511. package/src/multistream/multistreamMedia.ts +0 -92
  512. package/test/unit/spec/meeting/effectsState.js +0 -291
@@ -0,0 +1,315 @@
1
+ import PermissionError from '../common/errors/permission';
2
+ import {CONTROLS, HTTP_VERBS} from '../constants';
3
+ import MeetingRequest from '../meeting/request';
4
+ import RecordingAction from './enums';
5
+ import Util from './util';
6
+ import LoggerProxy from '../common/logs/logger-proxy';
7
+
8
+ /**
9
+ * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting
10
+ * @export
11
+ * @private
12
+ * @class Recording
13
+ */
14
+ export default class RecordingController {
15
+ /**
16
+ * @instance
17
+ * @type {MeetingRequest}
18
+ * @private
19
+ * @memberof RecordingController
20
+ */
21
+ private request: MeetingRequest;
22
+
23
+ /**
24
+ * @instance
25
+ * @type {Array}
26
+ * @private
27
+ * @memberof RecordingInfo
28
+ */
29
+ private displayHints: Array<string> = [];
30
+
31
+ /**
32
+ * @instance
33
+ * @type {string}
34
+ * @private
35
+ * @memberof RecordingInfo
36
+ */
37
+ private serviceUrl: string;
38
+
39
+ /**
40
+ * @instance
41
+ * @type {string}
42
+ * @private
43
+ * @memberof RecordingInfo
44
+ */
45
+ private sessionId: string;
46
+
47
+ /**
48
+ * @instance
49
+ * @type {string}
50
+ * @private
51
+ * @memberof RecordingInfo
52
+ */
53
+ private locusUrl: string;
54
+
55
+ /**
56
+ * @instance
57
+ * @type {string}
58
+ * @private
59
+ * @memberof RecordingInfo
60
+ */
61
+ private locusId: string;
62
+
63
+ /**
64
+ * @param {MeetingRequest} request
65
+ * @param {Object} options
66
+ * @constructor
67
+ * @memberof RecordingController
68
+ */
69
+ constructor(
70
+ request: MeetingRequest,
71
+ options?: {
72
+ serviceUrl?: string;
73
+ sessionId: string;
74
+ locusUrl: string;
75
+ displayHints?: Array<string>;
76
+ }
77
+ ) {
78
+ this.initialize(request);
79
+ this.set(options);
80
+ }
81
+
82
+ /**
83
+ * @param {MeetingRequest} request
84
+ * @param {LocusInfo} info
85
+ * @returns {void}
86
+ * @private
87
+ * @memberof RecordingController
88
+ */
89
+ private initialize(request: MeetingRequest) {
90
+ this.request = request;
91
+ }
92
+
93
+ /**
94
+ * @param {Object} options
95
+ * @returns {void}
96
+ * @public
97
+ * @memberof RecordingController
98
+ */
99
+ public set(options?: {
100
+ serviceUrl?: string;
101
+ sessionId: string;
102
+ locusUrl: string;
103
+ displayHints?: Array<string>;
104
+ }) {
105
+ this.extract(options);
106
+ }
107
+
108
+ /**
109
+ * @param {string} url
110
+ * @returns {void}
111
+ * @public
112
+ * @memberof RecordingController
113
+ */
114
+ public setLocusUrl(url: string) {
115
+ this.locusUrl = url;
116
+ this.locusId = Util.extractLocusId(this.locusUrl);
117
+ }
118
+
119
+ /**
120
+ * @param {Array} hints
121
+ * @returns {void}
122
+ * @public
123
+ * @memberof RecordingController
124
+ */
125
+ public setDisplayHints(hints: Array<string>) {
126
+ this.displayHints = hints;
127
+ }
128
+
129
+ /**
130
+ * @param {string} id
131
+ * @returns {void}
132
+ * @public
133
+ * @memberof RecordingController
134
+ */
135
+ public setSessionId(id: string) {
136
+ this.sessionId = id;
137
+ }
138
+
139
+ /**
140
+ * @param {string} url
141
+ * @returns {void}
142
+ * @public
143
+ * @memberof RecordingController
144
+ */
145
+ public setServiceUrl(url: string) {
146
+ this.serviceUrl = url;
147
+ }
148
+
149
+ /**
150
+ * @returns {string}
151
+ * @public
152
+ * @memberof RecordingController
153
+ */
154
+ public getLocusUrl() {
155
+ return this.locusUrl;
156
+ }
157
+
158
+ /**
159
+ * @returns {string}
160
+ * @public
161
+ * @memberof RecordingController
162
+ */
163
+ public getLocusId() {
164
+ return this.locusId;
165
+ }
166
+
167
+ /**
168
+ * @returns {string}
169
+ * @public
170
+ * @memberof RecordingController
171
+ */
172
+ public getSessionId() {
173
+ return this.sessionId;
174
+ }
175
+
176
+ /**
177
+ * @returns {string}
178
+ * @public
179
+ * @memberof RecordingController
180
+ */
181
+ public getServiceUrl() {
182
+ return this.serviceUrl;
183
+ }
184
+
185
+ /**
186
+ * @returns {Array}
187
+ * @public
188
+ * @memberof RecordingController
189
+ */
190
+ public getDisplayHints() {
191
+ return this.displayHints;
192
+ }
193
+
194
+ /**
195
+ * @param {Object} options
196
+ * @returns {void}
197
+ * @private
198
+ * @memberof RecordingController
199
+ */
200
+ private extract(options?: {
201
+ serviceUrl?: string;
202
+ sessionId: string;
203
+ locusUrl: string;
204
+ displayHints?: Array<string>;
205
+ }) {
206
+ this.setServiceUrl(options?.serviceUrl);
207
+ this.setSessionId(options?.sessionId);
208
+ this.setDisplayHints(options?.displayHints);
209
+ this.setLocusUrl(options?.locusUrl);
210
+ }
211
+
212
+ /**
213
+ * @param {RecordingAction} action
214
+ * @private
215
+ * @memberof RecordingController
216
+ * @returns {Promise}
217
+ */
218
+ private recordingService(action: RecordingAction): Promise<any> {
219
+ // @ts-ignore
220
+ return this.request.request({
221
+ body: {
222
+ meetingInfo: {
223
+ locusSessionId: this.sessionId,
224
+ },
225
+ recording: {
226
+ action: action.toLowerCase(),
227
+ },
228
+ },
229
+ uri: `${this.serviceUrl}/loci/${this.locusId}/recording`,
230
+ method: HTTP_VERBS.PUT,
231
+ });
232
+ }
233
+
234
+ /**
235
+ * @param {RecordingAction} action
236
+ * @private
237
+ * @memberof RecordingController
238
+ * @returns {Promise}
239
+ */
240
+ private recordingControls(action: RecordingAction): Promise<any> {
241
+ const record = Util.deriveRecordingStates(action);
242
+
243
+ LoggerProxy.logger.log(`RecordingController:index#recordingControls --> ${record}`);
244
+
245
+ // @ts-ignore
246
+ return this.request.request({
247
+ uri: `${this.locusUrl}/${CONTROLS}`,
248
+ body: {
249
+ record,
250
+ },
251
+ method: HTTP_VERBS.PATCH,
252
+ });
253
+ }
254
+
255
+ /**
256
+ * @param {RecordingAction} action
257
+ * @private
258
+ * @memberof RecordingController
259
+ * @returns {Promise}
260
+ */
261
+ private recordingFacade(action: RecordingAction): Promise<any> {
262
+ LoggerProxy.logger.log(
263
+ `RecordingController:index#recordingFacade --> recording action [${action}]`
264
+ );
265
+
266
+ // assumes action is proper cased (i.e., Example)
267
+ if (Util?.[`canUser${action}`](this.displayHints)) {
268
+ if (this.serviceUrl) {
269
+ return this.recordingService(action);
270
+ }
271
+
272
+ return this.recordingControls(action);
273
+ }
274
+
275
+ return Promise.reject(
276
+ new PermissionError(`${action} recording not allowed, due to moderator property.`)
277
+ );
278
+ }
279
+
280
+ /**
281
+ * @private
282
+ * @memberof RecordingController
283
+ * @returns {Promise}
284
+ */
285
+ public startRecording(): Promise<any> {
286
+ return this.recordingFacade(RecordingAction.Start);
287
+ }
288
+
289
+ /**
290
+ * @private
291
+ * @memberof RecordingController
292
+ * @returns {Promise}
293
+ */
294
+ public stopRecording(): Promise<any> {
295
+ return this.recordingFacade(RecordingAction.Stop);
296
+ }
297
+
298
+ /**
299
+ * @private
300
+ * @memberof RecordingController
301
+ * @returns {Promise}
302
+ */
303
+ public pauseRecording(): Promise<any> {
304
+ return this.recordingFacade(RecordingAction.Pause);
305
+ }
306
+
307
+ /**
308
+ * @private
309
+ * @memberof RecordingController
310
+ * @returns {Promise}
311
+ */
312
+ public resumeRecording(): Promise<any> {
313
+ return this.recordingFacade(RecordingAction.Resume);
314
+ }
315
+ }
@@ -0,0 +1,58 @@
1
+ import {DISPLAY_HINTS} from '../constants';
2
+ import RecordingAction from './enums';
3
+
4
+ const canUserStart = (displayHints: Array<string>): boolean =>
5
+ displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START);
6
+
7
+ const canUserPause = (displayHints: Array<string>): boolean =>
8
+ displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE);
9
+
10
+ const canUserResume = (displayHints: Array<string>): boolean =>
11
+ displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME);
12
+
13
+ const canUserStop = (displayHints: Array<string>): boolean =>
14
+ displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP);
15
+
16
+ const extractLocusId = (url: string) => {
17
+ return url?.split('/').pop();
18
+ };
19
+
20
+ const deriveRecordingStates = (action: RecordingAction): {recording: boolean; paused: boolean} => {
21
+ let recording;
22
+ let paused;
23
+
24
+ switch (action) {
25
+ case RecordingAction.Start:
26
+ recording = true;
27
+ paused = false;
28
+ break;
29
+ case RecordingAction.Stop:
30
+ recording = false;
31
+ paused = false;
32
+ break;
33
+ case RecordingAction.Resume:
34
+ recording = true;
35
+ paused = false;
36
+ break;
37
+ case RecordingAction.Pause:
38
+ recording = true;
39
+ paused = true;
40
+ break;
41
+ default:
42
+ throw new Error(`Recording state cannot be derived from invalid action: ${action}`);
43
+ }
44
+
45
+ return {
46
+ recording,
47
+ paused,
48
+ };
49
+ };
50
+
51
+ export default {
52
+ canUserStart,
53
+ canUserPause,
54
+ canUserResume,
55
+ canUserStop,
56
+ deriveRecordingStates,
57
+ extractLocusId,
58
+ };
package/src/roap/index.ts CHANGED
@@ -19,11 +19,11 @@ import Meeting from '../meeting';
19
19
  */
20
20
 
21
21
  /**
22
- * @typedef {Object} SeqOptions
23
- * @property {String} correlationId
24
- * @property {String} mediaId
25
- * @property {Number} seq
26
- */
22
+ * @typedef {Object} SeqOptions
23
+ * @property {String} correlationId
24
+ * @property {String} mediaId
25
+ * @property {Number} seq
26
+ */
27
27
 
28
28
  /**
29
29
  * @class Roap
@@ -81,11 +81,14 @@ export default class Roap extends StatelessWebexPlugin {
81
81
  public sendRoapOK(options: any) {
82
82
  return Promise.resolve().then(() => {
83
83
  // @ts-ignore
84
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
84
+ const meeting = this.webex.meetings.meetingCollection.getByKey(
85
+ 'correlationId',
86
+ options.correlationId
87
+ );
85
88
  const roapMessage = {
86
89
  messageType: ROAP.ROAP_TYPES.OK,
87
90
  version: ROAP.ROAP_VERSION,
88
- seq: options.seq
91
+ seq: options.seq,
89
92
  };
90
93
 
91
94
  LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sending with seq ${options.seq}`);
@@ -96,8 +99,8 @@ export default class Roap extends StatelessWebexPlugin {
96
99
  locusSelfUrl: meeting.selfUrl,
97
100
  mediaId: options.mediaId,
98
101
  correlationId: options.correlationId,
99
- audioMuted: meeting.isAudioMuted(),
100
- videoMuted: meeting.isVideoMuted(),
102
+ audioMuted: meeting.audio?.isLocallyMuted(),
103
+ videoMuted: meeting.video?.isLocallyMuted(),
101
104
  meetingId: meeting.id,
102
105
  preferTranscoding: !meeting.isMultistream,
103
106
  })
@@ -117,25 +120,27 @@ export default class Roap extends StatelessWebexPlugin {
117
120
  */
118
121
  public sendRoapAnswer(options: any) {
119
122
  // @ts-ignore
120
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
123
+ const meeting = this.webex.meetings.meetingCollection.getByKey(
124
+ 'correlationId',
125
+ options.correlationId
126
+ );
121
127
  const roapMessage = {
122
128
  messageType: ROAP.ROAP_TYPES.ANSWER,
123
129
  sdps: [options.sdp],
124
130
  version: ROAP.ROAP_VERSION,
125
- seq: options.seq
131
+ seq: options.seq,
126
132
  };
127
133
 
128
- return this.roapRequest
129
- .sendRoap({
130
- roapMessage,
131
- locusSelfUrl: meeting.selfUrl,
132
- mediaId: options.mediaId,
133
- correlationId: options.correlationId,
134
- audioMuted: meeting.isAudioMuted(),
135
- videoMuted: meeting.isVideoMuted(),
136
- meetingId: meeting.id,
137
- preferTranscoding: !meeting.isMultistream,
138
- });
134
+ return this.roapRequest.sendRoap({
135
+ roapMessage,
136
+ locusSelfUrl: meeting.selfUrl,
137
+ mediaId: options.mediaId,
138
+ correlationId: options.correlationId,
139
+ audioMuted: meeting.isAudioMuted(),
140
+ videoMuted: meeting.isVideoMuted(),
141
+ meetingId: meeting.id,
142
+ preferTranscoding: !meeting.isMultistream,
143
+ });
139
144
  }
140
145
 
141
146
  /**
@@ -146,27 +151,32 @@ export default class Roap extends StatelessWebexPlugin {
146
151
  */
147
152
  sendRoapError(options) {
148
153
  // @ts-ignore
149
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
154
+ const meeting = this.webex.meetings.meetingCollection.getByKey(
155
+ 'correlationId',
156
+ options.correlationId
157
+ );
150
158
  const roapMessage = {
151
159
  messageType: ROAP.ROAP_TYPES.ERROR,
152
160
  version: ROAP.ROAP_VERSION,
153
161
  errorType: options.errorType,
154
- seq: options.seq
155
-
162
+ seq: options.seq,
156
163
  };
157
164
 
158
- return this.roapRequest.sendRoap({
159
- roapMessage,
160
- locusSelfUrl: meeting.selfUrl,
161
- mediaId: options.mediaId,
162
- correlationId: options.correlationId,
163
- audioMuted: meeting.isAudioMuted(),
164
- videoMuted: meeting.isVideoMuted(),
165
- meetingId: meeting.id,
166
- preferTranscoding: !meeting.isMultistream,
167
- })
165
+ return this.roapRequest
166
+ .sendRoap({
167
+ roapMessage,
168
+ locusSelfUrl: meeting.selfUrl,
169
+ mediaId: options.mediaId,
170
+ correlationId: options.correlationId,
171
+ audioMuted: meeting.audio?.isLocallyMuted(),
172
+ videoMuted: meeting.video?.isLocallyMuted(),
173
+ meetingId: meeting.id,
174
+ preferTranscoding: !meeting.isMultistream,
175
+ })
168
176
  .then(() => {
169
- LoggerProxy.logger.log(`Roap:index#sendRoapError --> ROAP ERROR sent with seq ${options.seq}`);
177
+ LoggerProxy.logger.log(
178
+ `Roap:index#sendRoapError --> ROAP ERROR sent with seq ${options.seq}`
179
+ );
170
180
  });
171
181
  }
172
182
 
@@ -177,33 +187,35 @@ export default class Roap extends StatelessWebexPlugin {
177
187
  * @memberof Roap
178
188
  */
179
189
  sendRoapMediaRequest(options: any) {
180
- const {
181
- meeting, seq, sdp, reconnect, tieBreaker
182
- } = options;
190
+ const {meeting, seq, sdp, reconnect, tieBreaker} = options;
183
191
  const roapMessage = {
184
192
  messageType: ROAP.ROAP_TYPES.OFFER,
185
193
  sdps: [sdp],
186
194
  version: ROAP.ROAP_VERSION,
187
195
  seq,
188
- tieBreaker
196
+ tieBreaker,
189
197
  };
190
198
 
191
199
  // When reconnecting, it's important that the first roap message being sent out has empty media id.
192
200
  // Normally this is the roap offer, but when TURN discovery is enabled,
193
201
  // then this is the TURN discovery request message
194
- const sendEmptyMediaId = reconnect && !meeting.config.experimental.enableTurnDiscovery;
202
+ return this.turnDiscovery
203
+ .isSkipped(meeting)
204
+ .then((isTurnDiscoverySkipped) => {
205
+ const sendEmptyMediaId = reconnect && isTurnDiscoverySkipped;
195
206
 
196
- return this.roapRequest
197
- .sendRoap({
198
- roapMessage,
199
- correlationId: meeting.correlationId,
200
- locusSelfUrl: meeting.selfUrl,
201
- mediaId: sendEmptyMediaId ? '' : meeting.mediaId,
202
- audioMuted: meeting.isAudioMuted(),
203
- videoMuted: meeting.isVideoMuted(),
204
- meetingId: meeting.id,
205
- preferTranscoding: !meeting.isMultistream,
207
+ return this.roapRequest.sendRoap({
208
+ roapMessage,
209
+ correlationId: meeting.correlationId,
210
+ locusSelfUrl: meeting.selfUrl,
211
+ mediaId: sendEmptyMediaId ? '' : meeting.mediaId,
212
+ audioMuted: meeting.audio?.isLocallyMuted(),
213
+ videoMuted: meeting.video?.isLocallyMuted(),
214
+ meetingId: meeting.id,
215
+ preferTranscoding: !meeting.isMultistream,
216
+ });
206
217
  })
218
+
207
219
  .then(({locus, mediaConnections}) => {
208
220
  if (mediaConnections) {
209
221
  meeting.updateMediaConnections(mediaConnections);