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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/README.md +8 -58
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -6
  54. package/dist/config.js +10 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +100 -234
  57. package/dist/constants.js +444 -433
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +5 -121
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +520 -705
  111. package/dist/meeting/index.js +3083 -5041
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -304
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -118
  122. package/dist/meeting/util.js +435 -676
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +20 -114
  142. package/dist/meetings/index.js +133 -540
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +95 -61
  193. package/dist/reachability/index.js +392 -304
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +232 -285
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +238 -100
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -50
  240. package/dist/statsAnalyzer/index.js +511 -436
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +90 -130
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -39
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -6
  253. package/src/constants.ts +100 -265
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -450
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2581 -4306
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -214
  273. package/src/meeting/util.ts +423 -687
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +136 -531
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +347 -246
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -96
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +645 -479
  310. package/src/statsAnalyzer/mqaUtil.ts +126 -128
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1437
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +2313 -8384
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +43 -523
  330. package/test/unit/spec/meeting/utils.js +24 -834
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +232 -1445
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -532
  347. package/test/unit/spec/reconnection-manager/index.js +24 -163
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +77 -187
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +165 -644
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interceptors/index.d.ts +0 -2
  395. package/dist/interceptors/index.js +0 -15
  396. package/dist/interceptors/index.js.map +0 -1
  397. package/dist/interceptors/locusRetry.d.ts +0 -27
  398. package/dist/interceptors/locusRetry.js +0 -94
  399. package/dist/interceptors/locusRetry.js.map +0 -1
  400. package/dist/interpretation/collection.d.ts +0 -5
  401. package/dist/interpretation/collection.js +0 -22
  402. package/dist/interpretation/collection.js.map +0 -1
  403. package/dist/interpretation/index.d.ts +0 -5
  404. package/dist/interpretation/index.js +0 -365
  405. package/dist/interpretation/index.js.map +0 -1
  406. package/dist/interpretation/siLanguage.d.ts +0 -5
  407. package/dist/interpretation/siLanguage.js +0 -24
  408. package/dist/interpretation/siLanguage.js.map +0 -1
  409. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  410. package/dist/meeting/locusMediaRequest.js +0 -291
  411. package/dist/meeting/locusMediaRequest.js.map +0 -1
  412. package/dist/meeting/request.type.d.ts +0 -11
  413. package/dist/meeting/request.type.js +0 -7
  414. package/dist/meeting/request.type.js.map +0 -1
  415. package/dist/meeting/voicea-meeting.d.ts +0 -20
  416. package/dist/meeting/voicea-meeting.js +0 -201
  417. package/dist/meeting/voicea-meeting.js.map +0 -1
  418. package/dist/meetings/meetings.types.d.ts +0 -4
  419. package/dist/meetings/meetings.types.js +0 -7
  420. package/dist/meetings/meetings.types.js.map +0 -1
  421. package/dist/member/types.d.ts +0 -32
  422. package/dist/member/types.js +0 -23
  423. package/dist/member/types.js.map +0 -1
  424. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  425. package/dist/multistream/mediaRequestManager.js +0 -344
  426. package/dist/multistream/mediaRequestManager.js.map +0 -1
  427. package/dist/multistream/receiveSlot.d.ts +0 -68
  428. package/dist/multistream/receiveSlot.js +0 -200
  429. package/dist/multistream/receiveSlot.js.map +0 -1
  430. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  431. package/dist/multistream/receiveSlotManager.js +0 -174
  432. package/dist/multistream/receiveSlotManager.js.map +0 -1
  433. package/dist/multistream/remoteMedia.d.ts +0 -72
  434. package/dist/multistream/remoteMedia.js +0 -268
  435. package/dist/multistream/remoteMedia.js.map +0 -1
  436. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  437. package/dist/multistream/remoteMediaGroup.js +0 -267
  438. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  439. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  440. package/dist/multistream/remoteMediaManager.js +0 -1211
  441. package/dist/multistream/remoteMediaManager.js.map +0 -1
  442. package/dist/multistream/sendSlotManager.d.ts +0 -61
  443. package/dist/multistream/sendSlotManager.js +0 -236
  444. package/dist/multistream/sendSlotManager.js.map +0 -1
  445. package/dist/reachability/clusterReachability.d.ts +0 -109
  446. package/dist/reachability/clusterReachability.js +0 -357
  447. package/dist/reachability/clusterReachability.js.map +0 -1
  448. package/dist/reachability/util.d.ts +0 -8
  449. package/dist/reachability/util.js +0 -29
  450. package/dist/reachability/util.js.map +0 -1
  451. package/dist/reactions/constants.d.ts +0 -3
  452. package/dist/reactions/constants.js +0 -12
  453. package/dist/reactions/constants.js.map +0 -1
  454. package/dist/rtcMetrics/constants.d.ts +0 -4
  455. package/dist/rtcMetrics/constants.js +0 -11
  456. package/dist/rtcMetrics/constants.js.map +0 -1
  457. package/dist/rtcMetrics/index.d.ts +0 -54
  458. package/dist/rtcMetrics/index.js +0 -140
  459. package/dist/rtcMetrics/index.js.map +0 -1
  460. package/dist/webinar/collection.d.ts +0 -16
  461. package/dist/webinar/collection.js +0 -43
  462. package/dist/webinar/collection.js.map +0 -1
  463. package/dist/webinar/index.d.ts +0 -5
  464. package/dist/webinar/index.js +0 -68
  465. package/dist/webinar/index.js.map +0 -1
  466. package/src/annotation/annotation.types.ts +0 -50
  467. package/src/annotation/constants.ts +0 -36
  468. package/src/annotation/index.ts +0 -328
  469. package/src/breakouts/README.md +0 -220
  470. package/src/breakouts/breakout.ts +0 -188
  471. package/src/breakouts/collection.ts +0 -19
  472. package/src/breakouts/edit-lock-error.ts +0 -25
  473. package/src/breakouts/events.ts +0 -56
  474. package/src/breakouts/index.ts +0 -925
  475. package/src/breakouts/request.ts +0 -55
  476. package/src/breakouts/utils.ts +0 -57
  477. package/src/common/errors/no-meeting-info.ts +0 -24
  478. package/src/controls-options-manager/types.ts +0 -59
  479. package/src/index.ts +0 -44
  480. package/src/interceptors/index.ts +0 -3
  481. package/src/interceptors/locusRetry.ts +0 -67
  482. package/src/interpretation/README.md +0 -60
  483. package/src/interpretation/collection.ts +0 -19
  484. package/src/interpretation/index.ts +0 -332
  485. package/src/interpretation/siLanguage.ts +0 -18
  486. package/src/meeting/locusMediaRequest.ts +0 -313
  487. package/src/meeting/request.type.ts +0 -13
  488. package/src/meeting/voicea-meeting.ts +0 -161
  489. package/src/meetings/meetings.types.ts +0 -12
  490. package/src/member/types.ts +0 -38
  491. package/src/multistream/mediaRequestManager.ts +0 -440
  492. package/src/multistream/receiveSlot.ts +0 -184
  493. package/src/multistream/receiveSlotManager.ts +0 -166
  494. package/src/multistream/remoteMedia.ts +0 -254
  495. package/src/multistream/remoteMediaGroup.ts +0 -284
  496. package/src/multistream/remoteMediaManager.ts +0 -1145
  497. package/src/multistream/sendSlotManager.ts +0 -170
  498. package/src/reachability/clusterReachability.ts +0 -320
  499. package/src/reachability/util.ts +0 -24
  500. package/src/reactions/constants.ts +0 -4
  501. package/src/rtcMetrics/constants.ts +0 -3
  502. package/src/rtcMetrics/index.ts +0 -124
  503. package/src/webinar/collection.ts +0 -31
  504. package/src/webinar/index.ts +0 -62
  505. package/test/integration/spec/converged-space-meetings.js +0 -233
  506. package/test/unit/spec/annotation/index.ts +0 -418
  507. package/test/unit/spec/breakouts/breakout.ts +0 -237
  508. package/test/unit/spec/breakouts/collection.ts +0 -15
  509. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  510. package/test/unit/spec/breakouts/events.ts +0 -89
  511. package/test/unit/spec/breakouts/index.ts +0 -1790
  512. package/test/unit/spec/breakouts/request.ts +0 -104
  513. package/test/unit/spec/breakouts/utils.js +0 -72
  514. package/test/unit/spec/interceptors/locusRetry.ts +0 -131
  515. package/test/unit/spec/interpretation/collection.ts +0 -15
  516. package/test/unit/spec/interpretation/index.ts +0 -589
  517. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  518. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  519. package/test/unit/spec/media/index.ts +0 -290
  520. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  521. package/test/unit/spec/meeting-info/index.js +0 -300
  522. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  523. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  524. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  525. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  526. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  527. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  528. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  529. package/test/unit/spec/reachability/clusterReachability.ts +0 -279
  530. package/test/unit/spec/reachability/request.js +0 -68
  531. package/test/unit/spec/reachability/util.ts +0 -40
  532. package/test/unit/spec/roap/request.ts +0 -255
  533. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  534. package/test/unit/spec/webinar/collection.ts +0 -13
  535. package/test/unit/spec/webinar/index.ts +0 -60
  536. package/test/utils/constants.js +0 -9
  537. package/test/utils/integrationTestUtils.js +0 -46
  538. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  539. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -5,187 +5,121 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
5
5
  _Object$defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createMuteState = exports.MuteState = void 0;
8
+ exports.default = void 0;
9
9
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
13
13
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
14
14
  var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
15
+ var _permission = _interopRequireDefault(require("../common/errors/permission"));
16
+ var _media = _interopRequireDefault(require("../media"));
15
17
  var _util = _interopRequireDefault(require("./util"));
16
18
  var _constants = require("../constants");
17
- // eslint-disable-next-line import/prefer-default-export
18
- var createMuteState = exports.createMuteState = function createMuteState(type, meeting, enabled) {
19
- // todo: remove the meeting argument (SPARK-399695)
19
+ /* Certain aspects of server interaction for video muting are not implemented as we currently don't support remote muting of video.
20
+ If we ever need to support it, search for REMOTE_MUTE_VIDEO_MISSING_IMPLEMENTATION string to find the places that need updating
21
+ */
20
22
 
23
+ var createMuteState = function createMuteState(type, meeting, mediaDirection) {
24
+ if (type === _constants.AUDIO && !mediaDirection.sendAudio) {
25
+ return null;
26
+ }
27
+ if (type === _constants.VIDEO && !mediaDirection.sendVideo) {
28
+ return null;
29
+ }
21
30
  _loggerProxy.default.logger.info("Meeting:muteState#createMuteState --> ".concat(type, ": creating MuteState for meeting id ").concat(meeting === null || meeting === void 0 ? void 0 : meeting.id));
22
- var muteState = new MuteState(type, meeting, enabled);
23
- return muteState;
31
+ return new MuteState(type, meeting);
24
32
  };
25
33
 
26
34
  /** The purpose of this class is to manage the local and remote mute state and make sure that the server state always matches
27
35
  the last requested state by the client.
28
36
 
29
37
  More info about Locus muting API: https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html#
30
-
31
- This class is exported only for unit tests. It should never be instantiated directly with new MuteState(), instead createMuteState() should be called
32
38
  */
33
- var MuteState = exports.MuteState = /*#__PURE__*/function () {
39
+ var MuteState = /*#__PURE__*/function () {
34
40
  /**
35
41
  * Constructor
36
42
  *
37
43
  * @param {String} type - audio or video
38
44
  * @param {Object} meeting - the meeting object (used for reading current remote mute status)
39
- * @param {boolean} enabled - whether the client audio/video is enabled at all
40
45
  */
41
- function MuteState(type, meeting, enabled) {
42
- var _meeting$remoteVideoM, _meeting$unmuteVideoA;
46
+ function MuteState(type, meeting) {
43
47
  (0, _classCallCheck2.default)(this, MuteState);
48
+ (0, _defineProperty2.default)(this, "pendingPromiseReject", void 0);
49
+ (0, _defineProperty2.default)(this, "pendingPromiseResolve", void 0);
44
50
  (0, _defineProperty2.default)(this, "state", void 0);
45
51
  (0, _defineProperty2.default)(this, "type", void 0);
46
- (0, _defineProperty2.default)(this, "ignoreMuteStateChange", void 0);
47
52
  if (type !== _constants.AUDIO && type !== _constants.VIDEO) {
48
53
  throw new _parameter.default('Mute state is designed for handling audio or video only');
49
54
  }
50
55
  this.type = type;
51
- this.ignoreMuteStateChange = false;
52
56
  this.state = {
53
57
  client: {
54
- enabled: enabled,
55
- localMute: true
58
+ localMute: false
56
59
  },
57
60
  server: {
58
- localMute: true,
59
- // because remoteVideoMuted and unmuteVideoAllowed are updated seperately, they might be undefined
60
- remoteMute: type === _constants.AUDIO ? meeting.remoteMuted : (_meeting$remoteVideoM = meeting.remoteVideoMuted) !== null && _meeting$remoteVideoM !== void 0 ? _meeting$remoteVideoM : false,
61
- unmuteAllowed: type === _constants.AUDIO ? meeting.unmuteAllowed : (_meeting$unmuteVideoA = meeting.unmuteVideoAllowed) !== null && _meeting$unmuteVideoA !== void 0 ? _meeting$unmuteVideoA : true
61
+ localMute: false,
62
+ // initial values available only for audio (REMOTE_MUTE_VIDEO_MISSING_IMPLEMENTATION)
63
+ remoteMute: type === _constants.AUDIO ? meeting.remoteMuted : false,
64
+ unmuteAllowed: type === _constants.AUDIO ? meeting.unmuteAllowed : true
62
65
  },
63
66
  syncToServerInProgress: false
64
67
  };
68
+ // these 2 hold the resolve, reject methods for the promise we returned to the client in last handleClientRequest() call
69
+ this.pendingPromiseResolve = null;
70
+ this.pendingPromiseReject = null;
65
71
  }
66
72
 
67
73
  /**
68
- * Starts the mute state machine. Needs to be called after a new MuteState instance is created.
74
+ * Handles mute/unmute request from the client/user. Returns a promise that's resolved once the server update is completed or
75
+ * at the point that this request becomese superseded by another client request.
76
+ *
77
+ * The client doesn't have to wait for the returned promise to resolve before calling handleClientRequest() again. If
78
+ * handleClientRequest() is called again before the previous one resolved, the MuteState class will make sure that eventually
79
+ * the server state will match the last requested state from the client.
69
80
  *
70
- * @param {Object} meeting - the meeting object
71
- * @returns {void}
81
+ * @public
82
+ * @memberof MuteState
83
+ * @param {Object} [meeting] the meeting object
84
+ * @param {Boolean} [mute] true for muting, false for unmuting request
85
+ * @returns {Promise}
72
86
  */
73
87
  (0, _createClass2.default)(MuteState, [{
74
- key: "init",
75
- value: function init(meeting) {
76
- var _meeting$mediaPropert, _meeting$mediaPropert2;
77
- this.applyUnmuteAllowedToStream(meeting);
78
-
79
- // if we are remotely muted, we need to apply that to the local stream now (mute on-entry)
80
- if (this.state.server.remoteMute) {
81
- this.muteLocalStream(meeting, this.state.server.remoteMute, 'remotelyMuted');
82
- }
83
- var initialMute = this.type === _constants.AUDIO ? (_meeting$mediaPropert = meeting.mediaProperties.audioStream) === null || _meeting$mediaPropert === void 0 ? void 0 : _meeting$mediaPropert.muted : (_meeting$mediaPropert2 = meeting.mediaProperties.videoStream) === null || _meeting$mediaPropert2 === void 0 ? void 0 : _meeting$mediaPropert2.muted;
84
- _loggerProxy.default.logger.info("Meeting:muteState#init --> ".concat(this.type, ": local stream initial mute state: ").concat(initialMute));
85
- if (initialMute !== undefined) {
86
- this.state.client.localMute = initialMute;
87
- } else {
88
- // there is no stream, so it's like we are locally muted
89
- // (this is important especially for transcoded meetings, in which the SDP m-line direction always stays "sendrecv")
90
- this.state.client.localMute = true;
91
- }
92
- this.applyClientStateToServer(meeting);
93
- }
94
-
95
- /**
96
- * This method needs to be called whenever the local audio/video stream has changed.
97
- * It reapplies the remote mute state onto the new stream and also reads the current
98
- * local mute state from the stream and updates the internal state machine and sends
99
- * any required requests to the server.
100
- *
101
- * @param {Object} meeting - the meeting object
102
- * @returns {void}
103
- */
104
- }, {
105
- key: "handleLocalStreamChange",
106
- value: function handleLocalStreamChange(meeting) {
107
- return this.init(meeting);
108
- }
109
-
110
- /**
111
- * Enables/disables audio/video
112
- *
113
- * @param {Object} meeting - the meeting object
114
- * @param {boolean} enable
115
- * @returns {void}
116
- */
117
- }, {
118
- key: "enable",
119
- value: function enable(meeting, _enable) {
120
- this.state.client.enabled = _enable;
121
- this.applyClientStateToServer(meeting);
122
- }
123
-
124
- /**
125
- * Mutes/unmutes local stream
126
- *
127
- * @param {Object} meeting - the meeting object
128
- * @param {Boolean} mute - true to mute the stream, false to unmute it
129
- * @param {ServerMuteReason} reason - reason for muting/unmuting
130
- * @returns {void}
131
- */
132
- }, {
133
- key: "muteLocalStream",
134
- value: function muteLocalStream(meeting, mute, reason) {
135
- this.ignoreMuteStateChange = true;
136
- if (this.type === _constants.AUDIO) {
137
- var _meeting$mediaPropert3;
138
- (_meeting$mediaPropert3 = meeting.mediaProperties.audioStream) === null || _meeting$mediaPropert3 === void 0 ? void 0 : _meeting$mediaPropert3.setServerMuted(mute, reason);
139
- } else {
140
- var _meeting$mediaPropert4;
141
- (_meeting$mediaPropert4 = meeting.mediaProperties.videoStream) === null || _meeting$mediaPropert4 === void 0 ? void 0 : _meeting$mediaPropert4.setServerMuted(mute, reason);
88
+ key: "handleClientRequest",
89
+ value: function handleClientRequest(meeting, mute) {
90
+ var _this = this;
91
+ _loggerProxy.default.logger.info("Meeting:muteState#handleClientRequest --> ".concat(this.type, ": user requesting new mute state: ").concat(mute));
92
+ if (!mute && this.state.server.unmuteAllowed !== null && !this.state.server.unmuteAllowed) {
93
+ return _promise.default.reject(new _permission.default('User is not allowed to unmute self (hard mute feature is being used)'));
142
94
  }
143
- this.ignoreMuteStateChange = false;
144
- }
145
95
 
146
- /**
147
- * This method should be called when the local stream mute state is changed
148
- * @public
149
- * @memberof MuteState
150
- * @param {Object} [meeting] the meeting object
151
- * @param {Boolean} [mute] true for muting, false for unmuting request
152
- * @returns {void}
153
- */
154
- }, {
155
- key: "handleLocalStreamMuteStateChange",
156
- value: function handleLocalStreamMuteStateChange(meeting, mute) {
157
- if (this.ignoreMuteStateChange) {
158
- return;
159
- }
160
- _loggerProxy.default.logger.info("Meeting:muteState#handleLocalStreamMuteStateChange --> ".concat(this.type, ": local stream new mute state: ").concat(mute));
96
+ // we don't check if we're already in the same state, because even if we were, we would still have to apply the mute state locally,
97
+ // because the client may have changed the audio/vidoe tracks
161
98
  this.state.client.localMute = mute;
162
- this.applyClientStateToServer(meeting);
99
+ this.applyClientStateLocally(meeting);
100
+ return new _promise.default(function (resolve, reject) {
101
+ if (_this.pendingPromiseResolve) {
102
+ // resolve the last promise we returned to the client as the client has issued a new request that has superseded the previous one
103
+ _this.pendingPromiseResolve();
104
+ }
105
+ _this.pendingPromiseResolve = resolve;
106
+ _this.pendingPromiseReject = reject;
107
+ _this.applyClientStateToServer(meeting);
108
+ });
163
109
  }
164
110
 
165
111
  /**
166
- * Applies the current mute state to the local stream (by enabling or disabling it accordingly)
112
+ * Applies the current mute state to the local track (by enabling or disabling it accordingly)
167
113
  *
168
114
  * @public
169
115
  * @param {Object} [meeting] the meeting object
170
- * @param {ServerMuteReason} reason - reason why we're applying our client state to the local stream
171
116
  * @memberof MuteState
172
117
  * @returns {void}
173
118
  */
174
119
  }, {
175
120
  key: "applyClientStateLocally",
176
- value: function applyClientStateLocally(meeting, reason) {
177
- this.muteLocalStream(meeting, this.state.client.localMute, reason);
178
- }
179
-
180
- /** Returns true if client is locally muted - it takes into account not just the client local mute state,
181
- * but also whether audio/video is enabled at all
182
- *
183
- * @returns {boolean}
184
- */
185
- }, {
186
- key: "getClientLocalMuteState",
187
- value: function getClientLocalMuteState() {
188
- return this.state.client.enabled ? this.state.client.localMute : true;
121
+ value: function applyClientStateLocally(meeting) {
122
+ _media.default.setLocalTrack(!this.state.client.localMute, this.type === _constants.AUDIO ? meeting.mediaProperties.audioTrack : meeting.mediaProperties.videoTrack);
189
123
  }
190
124
 
191
125
  /**
@@ -199,18 +133,22 @@ var MuteState = exports.MuteState = /*#__PURE__*/function () {
199
133
  }, {
200
134
  key: "applyClientStateToServer",
201
135
  value: function applyClientStateToServer(meeting) {
202
- var _this = this;
136
+ var _this2 = this;
203
137
  if (this.state.syncToServerInProgress) {
204
138
  _loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(this.type, ": request to server in progress, we need to wait for it to complete"));
205
139
  return;
206
140
  }
207
- var localMuteState = this.getClientLocalMuteState();
208
- var localMuteRequiresSync = localMuteState !== this.state.server.localMute;
209
- var remoteMuteRequiresSync = !localMuteState && this.state.server.remoteMute;
210
- _loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(this.type, ": localMuteRequiresSync: ").concat(localMuteRequiresSync, " (").concat(localMuteState, " ?= ").concat(this.state.server.localMute, ")"));
141
+ var localMuteRequiresSync = this.state.client.localMute !== this.state.server.localMute;
142
+ var remoteMuteRequiresSync = !this.state.client.localMute && this.state.server.remoteMute;
143
+ _loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(this.type, ": localMuteRequiresSync: ").concat(localMuteRequiresSync, " (").concat(this.state.client.localMute, " ?= ").concat(this.state.server.localMute, ")"));
211
144
  _loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(this.type, ": remoteMuteRequiresSync: ").concat(remoteMuteRequiresSync));
212
145
  if (!localMuteRequiresSync && !remoteMuteRequiresSync) {
213
146
  _loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(this.type, ": client state already matching server state, nothing to do"));
147
+ if (this.pendingPromiseResolve) {
148
+ this.pendingPromiseResolve();
149
+ }
150
+ this.pendingPromiseResolve = null;
151
+ this.pendingPromiseReject = null;
214
152
  return;
215
153
  }
216
154
  this.state.syncToServerInProgress = true;
@@ -220,18 +158,21 @@ var MuteState = exports.MuteState = /*#__PURE__*/function () {
220
158
  localMuteSyncPromise.then(function () {
221
159
  return (
222
160
  // then follow it up with remote mute sync
223
- remoteMuteRequiresSync ? _this.sendRemoteMuteRequestToServer(meeting) : _promise.default.resolve()
161
+ remoteMuteRequiresSync ? _this2.sendRemoteMuteRequestToServer(meeting) : _promise.default.resolve()
224
162
  );
225
163
  }).then(function () {
226
- _this.state.syncToServerInProgress = false;
227
- _loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(_this.type, ": sync with server completed"));
164
+ _this2.state.syncToServerInProgress = false;
165
+ _loggerProxy.default.logger.info("Meeting:muteState#applyClientStateToServer --> ".concat(_this2.type, ": sync with server completed"));
228
166
 
229
167
  // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync
230
- _this.applyClientStateToServer(meeting);
168
+ _this2.applyClientStateToServer(meeting);
231
169
  }).catch(function (e) {
232
- _this.state.syncToServerInProgress = false;
233
- _loggerProxy.default.logger.warn("Meeting:muteState#applyClientStateToServer --> ".concat(_this.type, ": error: ").concat(e));
234
- _this.applyServerMuteToLocalStream(meeting, 'clientRequestFailed');
170
+ _this2.state.syncToServerInProgress = false;
171
+ if (_this2.pendingPromiseReject) {
172
+ _this2.pendingPromiseReject(e);
173
+ }
174
+ _this2.pendingPromiseResolve = null;
175
+ _this2.pendingPromiseReject = null;
235
176
  });
236
177
  }
237
178
 
@@ -246,19 +187,19 @@ var MuteState = exports.MuteState = /*#__PURE__*/function () {
246
187
  }, {
247
188
  key: "sendLocalMuteRequestToServer",
248
189
  value: function sendLocalMuteRequestToServer(meeting) {
249
- var _this2 = this;
250
- var audioMuted = this.type === _constants.AUDIO ? this.getClientLocalMuteState() : undefined;
251
- var videoMuted = this.type === _constants.VIDEO ? this.getClientLocalMuteState() : undefined;
190
+ var _meeting$audio,
191
+ _meeting$video,
192
+ _this3 = this;
193
+ var audioMuted = this.type === _constants.AUDIO ? this.state.client.localMute : (_meeting$audio = meeting.audio) === null || _meeting$audio === void 0 ? void 0 : _meeting$audio.state.client.localMute;
194
+ var videoMuted = this.type === _constants.VIDEO ? this.state.client.localMute : (_meeting$video = meeting.video) === null || _meeting$video === void 0 ? void 0 : _meeting$video.state.client.localMute;
252
195
  _loggerProxy.default.logger.info("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(this.type, ": sending local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") to server"));
253
- return _util.default.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted).then(function (locus) {
254
- _loggerProxy.default.logger.info("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this2.type, ": local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") applied to server"));
255
- _this2.state.server.localMute = _this2.type === _constants.AUDIO ? audioMuted : videoMuted;
256
- if (locus) {
257
- meeting.locusInfo.handleLocusDelta(locus, meeting);
258
- }
196
+ return _util.default.remoteUpdateAudioVideo(audioMuted, videoMuted, meeting).then(function (locus) {
197
+ _loggerProxy.default.logger.info("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this3.type, ": local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") applied to server"));
198
+ _this3.state.server.localMute = _this3.type === _constants.AUDIO ? audioMuted : videoMuted;
199
+ meeting.locusInfo.onFullLocus(locus);
259
200
  return locus;
260
201
  }).catch(function (remoteUpdateError) {
261
- _loggerProxy.default.logger.warn("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this2.type, ": failed to apply local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") to server: ").concat(remoteUpdateError));
202
+ _loggerProxy.default.logger.warn("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this3.type, ": failed to apply local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") to server: ").concat(remoteUpdateError));
262
203
  return _promise.default.reject(remoteUpdateError);
263
204
  });
264
205
  }
@@ -274,48 +215,22 @@ var MuteState = exports.MuteState = /*#__PURE__*/function () {
274
215
  }, {
275
216
  key: "sendRemoteMuteRequestToServer",
276
217
  value: function sendRemoteMuteRequestToServer(meeting) {
277
- var _this3 = this;
278
- var remoteMute = this.getClientLocalMuteState();
279
- _loggerProxy.default.logger.info("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(this.type, ": sending remote mute:").concat(remoteMute, " to server"));
280
- return meeting.members.muteMember(meeting.members.selfId, remoteMute, this.type === _constants.AUDIO).then(function () {
281
- _loggerProxy.default.logger.info("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(_this3.type, ": remote mute:").concat(remoteMute, " applied to server"));
282
- _this3.state.server.remoteMute = remoteMute;
283
- }).catch(function (remoteUpdateError) {
284
- _loggerProxy.default.logger.warn("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(_this3.type, ": failed to apply remote mute ").concat(remoteMute, " to server: ").concat(remoteUpdateError));
285
- return _promise.default.reject(remoteUpdateError);
286
- });
287
- }
288
-
289
- /** Sets the mute state of the local stream according to what server thinks is our state
290
- * @param {Object} meeting - the meeting object
291
- * @param {ServerMuteReason} serverMuteReason - reason why we're applying server mute to the local stream
292
- * @returns {void}
293
- */
294
- }, {
295
- key: "applyServerMuteToLocalStream",
296
- value: function applyServerMuteToLocalStream(meeting, serverMuteReason) {
297
- var muted = this.state.server.localMute || this.state.server.remoteMute;
298
-
299
- // update the local stream mute state, but not this.state.client.localMute
300
- this.muteLocalStream(meeting, muted, serverMuteReason);
301
- }
302
-
303
- /** Applies the current value for unmute allowed to the underlying stream
304
- *
305
- * @param {Meeting} meeting
306
- * @returns {void}
307
- */
308
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
309
- }, {
310
- key: "applyUnmuteAllowedToStream",
311
- value: function applyUnmuteAllowedToStream(meeting) {
218
+ var _this4 = this;
312
219
  if (this.type === _constants.AUDIO) {
313
- var _meeting$mediaPropert5;
314
- (_meeting$mediaPropert5 = meeting.mediaProperties.audioStream) === null || _meeting$mediaPropert5 === void 0 ? void 0 : _meeting$mediaPropert5.setUnmuteAllowed(this.state.server.unmuteAllowed);
315
- } else {
316
- var _meeting$mediaPropert6;
317
- (_meeting$mediaPropert6 = meeting.mediaProperties.videoStream) === null || _meeting$mediaPropert6 === void 0 ? void 0 : _meeting$mediaPropert6.setUnmuteAllowed(this.state.server.unmuteAllowed);
220
+ var remoteMute = this.state.client.localMute;
221
+ _loggerProxy.default.logger.info("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(this.type, ": sending remote mute:").concat(remoteMute, " to server"));
222
+ return meeting.members.muteMember(meeting.members.selfId, remoteMute).then(function () {
223
+ _loggerProxy.default.logger.info("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(_this4.type, ": remote mute:").concat(remoteMute, " applied to server"));
224
+ _this4.state.server.remoteMute = remoteMute;
225
+ }).catch(function (remoteUpdateError) {
226
+ _loggerProxy.default.logger.warn("Meeting:muteState#sendRemoteMuteRequestToServer --> ".concat(_this4.type, ": failed to apply remote mute ").concat(remoteMute, " to server: ").concat(remoteUpdateError));
227
+ return _promise.default.reject(remoteUpdateError);
228
+ });
318
229
  }
230
+
231
+ // for now we don't need to support remote muting of video (REMOTE_MUTE_VIDEO_MISSING_IMPLEMENTATION)
232
+ this.state.server.remoteMute = this.state.client.localMute;
233
+ return _promise.default.resolve();
319
234
  }
320
235
 
321
236
  /**
@@ -323,23 +238,16 @@ var MuteState = exports.MuteState = /*#__PURE__*/function () {
323
238
  *
324
239
  * @public
325
240
  * @memberof MuteState
326
- * @param {Meeting} meeting
327
241
  * @param {Boolean} [muted] true if user is remotely muted, false otherwise
328
242
  * @param {Boolean} [unmuteAllowed] indicates if user is allowed to unmute self (false when "hard mute" feature is used)
329
243
  * @returns {undefined}
330
244
  */
331
245
  }, {
332
246
  key: "handleServerRemoteMuteUpdate",
333
- value: function handleServerRemoteMuteUpdate(meeting, muted, unmuteAllowed) {
247
+ value: function handleServerRemoteMuteUpdate(muted, unmuteAllowed) {
334
248
  _loggerProxy.default.logger.info("Meeting:muteState#handleServerRemoteMuteUpdate --> ".concat(this.type, ": updating server remoteMute to (").concat(muted, ")"));
335
- if (unmuteAllowed !== undefined) {
336
- this.state.server.unmuteAllowed = unmuteAllowed;
337
- this.applyUnmuteAllowedToStream(meeting);
338
- }
339
- if (muted !== undefined) {
340
- this.state.server.remoteMute = muted;
341
- this.applyServerMuteToLocalStream(meeting, 'remotelyMuted');
342
- }
249
+ this.state.server.remoteMute = muted;
250
+ this.state.server.unmuteAllowed = unmuteAllowed;
343
251
  }
344
252
 
345
253
  /**
@@ -353,22 +261,20 @@ var MuteState = exports.MuteState = /*#__PURE__*/function () {
353
261
  }, {
354
262
  key: "handleServerLocalUnmuteRequired",
355
263
  value: function handleServerLocalUnmuteRequired(meeting) {
356
- if (!this.state.client.enabled) {
357
- _loggerProxy.default.logger.warn("Meeting:muteState#handleServerLocalUnmuteRequired --> ".concat(this.type, ": localAudioUnmuteRequired received while ").concat(this.type, " is disabled -> local unmute will not result in ").concat(this.type, " being sent"));
358
- } else {
359
- _loggerProxy.default.logger.info("Meeting:muteState#handleServerLocalUnmuteRequired --> ".concat(this.type, ": localAudioUnmuteRequired received -> doing local unmute"));
360
- }
361
-
362
- // todo: I'm seeing "you can now unmute yourself " popup when this happens - but same thing happens on web.w.c so we can ignore for now
264
+ _loggerProxy.default.logger.info("Meeting:muteState#handleServerLocalUnmuteRequired --> ".concat(this.type, ": localAudioUnmuteRequired received -> doing local unmute"));
363
265
  this.state.server.remoteMute = false;
364
266
  this.state.client.localMute = false;
365
- this.applyClientStateLocally(meeting, 'localUnmuteRequired');
267
+ if (this.pendingPromiseReject) {
268
+ this.pendingPromiseReject(new Error('Server requested local unmute - this overrides any client request in progress'));
269
+ this.pendingPromiseResolve = null;
270
+ this.pendingPromiseReject = null;
271
+ }
272
+ this.applyClientStateLocally(meeting);
366
273
  this.applyClientStateToServer(meeting);
367
274
  }
368
275
 
369
276
  /**
370
- * Returns true if the user is locally or remotely muted.
371
- * It only checks the mute status, ignoring the fact whether audio/video is enabled.
277
+ * Returns true if the user is locally or remotely muted
372
278
  *
373
279
  * @public
374
280
  * @memberof MuteState
@@ -381,44 +287,47 @@ var MuteState = exports.MuteState = /*#__PURE__*/function () {
381
287
  }
382
288
 
383
289
  /**
384
- * Returns true if the user is remotely muted
290
+ * Returns true if the user is locally muted
385
291
  *
386
292
  * @public
387
293
  * @memberof MuteState
388
294
  * @returns {Boolean}
389
295
  */
390
296
  }, {
391
- key: "isRemotelyMuted",
392
- value: function isRemotelyMuted() {
393
- return this.state.server.remoteMute;
297
+ key: "isLocallyMuted",
298
+ value: function isLocallyMuted() {
299
+ return this.state.client.localMute || this.state.server.localMute;
394
300
  }
395
301
 
396
302
  /**
397
- * Returns true if unmute is allowed
303
+ * Returns true if the user is muted as a result of the client request (and not remotely muted)
398
304
  *
399
305
  * @public
400
306
  * @memberof MuteState
401
307
  * @returns {Boolean}
402
308
  */
403
309
  }, {
404
- key: "isUnmuteAllowed",
405
- value: function isUnmuteAllowed() {
406
- return this.state.server.unmuteAllowed;
310
+ key: "isSelf",
311
+ value: function isSelf() {
312
+ return this.state.client.localMute && !this.state.server.remoteMute;
407
313
  }
408
314
 
409
- /**
410
- * Returns true if the user is locally muted or audio/video is disabled
411
- *
412
- * @public
413
- * @memberof MuteState
414
- * @returns {Boolean}
415
- */
315
+ // defined for backwards compatibility with the old AudioStateMachine/VideoStateMachine classes
416
316
  }, {
417
- key: "isLocallyMuted",
418
- value: function isLocallyMuted() {
419
- return this.getClientLocalMuteState();
317
+ key: "muted",
318
+ get: function get() {
319
+ return this.isMuted();
320
+ }
321
+
322
+ // defined for backwards compatibility with the old AudioStateMachine/VideoStateMachine classes
323
+ }, {
324
+ key: "self",
325
+ get: function get() {
326
+ return this.isSelf();
420
327
  }
421
328
  }]);
422
329
  return MuteState;
423
330
  }();
331
+ var _default = createMuteState;
332
+ exports.default = _default;
424
333
  //# sourceMappingURL=muteState.js.map