@webex/plugin-meetings 2.59.1 → 2.59.3-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/.eslintrc.js +6 -6
  2. package/LICENSE +1 -1
  3. package/README.md +1204 -1204
  4. package/UPGRADING.md +287 -287
  5. package/babel.config.js +3 -3
  6. package/browsers.js +108 -108
  7. package/dist/common/browser-detection.d.ts +9 -9
  8. package/dist/common/browser-detection.js.map +1 -1
  9. package/dist/common/collection.d.ts +48 -48
  10. package/dist/common/collection.js +43 -43
  11. package/dist/common/collection.js.map +1 -1
  12. package/dist/common/config.d.ts +2 -2
  13. package/dist/common/config.js.map +1 -1
  14. package/dist/common/errors/captcha-error.d.ts +15 -15
  15. package/dist/common/errors/captcha-error.js +7 -7
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.d.ts +16 -16
  18. package/dist/common/errors/intent-to-join.js +7 -7
  19. package/dist/common/errors/intent-to-join.js.map +1 -1
  20. package/dist/common/errors/join-meeting.d.ts +17 -17
  21. package/dist/common/errors/join-meeting.js +8 -8
  22. package/dist/common/errors/join-meeting.js.map +1 -1
  23. package/dist/common/errors/media.d.ts +15 -15
  24. package/dist/common/errors/media.js +7 -7
  25. package/dist/common/errors/media.js.map +1 -1
  26. package/dist/common/errors/parameter.d.ts +15 -15
  27. package/dist/common/errors/parameter.js +7 -7
  28. package/dist/common/errors/parameter.js.map +1 -1
  29. package/dist/common/errors/password-error.d.ts +15 -15
  30. package/dist/common/errors/password-error.js +7 -7
  31. package/dist/common/errors/password-error.js.map +1 -1
  32. package/dist/common/errors/permission.d.ts +14 -14
  33. package/dist/common/errors/permission.js +6 -6
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.d.ts +9 -9
  36. package/dist/common/errors/reconnection-in-progress.js +6 -6
  37. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  38. package/dist/common/errors/reconnection.d.ts +15 -15
  39. package/dist/common/errors/reconnection.js +7 -7
  40. package/dist/common/errors/reconnection.js.map +1 -1
  41. package/dist/common/errors/stats.d.ts +15 -15
  42. package/dist/common/errors/stats.js +7 -7
  43. package/dist/common/errors/stats.js.map +1 -1
  44. package/dist/common/errors/webex-errors.d.ts +81 -81
  45. package/dist/common/errors/webex-errors.js +42 -42
  46. package/dist/common/errors/webex-errors.js.map +1 -1
  47. package/dist/common/errors/webex-meetings-error.d.ts +20 -20
  48. package/dist/common/errors/webex-meetings-error.js +12 -12
  49. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  50. package/dist/common/events/events-scope.d.ts +17 -17
  51. package/dist/common/events/events-scope.js +10 -10
  52. package/dist/common/events/events-scope.js.map +1 -1
  53. package/dist/common/events/events.d.ts +12 -12
  54. package/dist/common/events/events.js +4 -4
  55. package/dist/common/events/events.js.map +1 -1
  56. package/dist/common/events/trigger-proxy.d.ts +2 -2
  57. package/dist/common/events/trigger-proxy.js.map +1 -1
  58. package/dist/common/events/util.d.ts +2 -2
  59. package/dist/common/events/util.js.map +1 -1
  60. package/dist/common/logs/logger-config.d.ts +2 -2
  61. package/dist/common/logs/logger-config.js.map +1 -1
  62. package/dist/common/logs/logger-proxy.d.ts +2 -2
  63. package/dist/common/logs/logger-proxy.js.map +1 -1
  64. package/dist/common/logs/request.d.ts +34 -34
  65. package/dist/common/logs/request.js +18 -18
  66. package/dist/common/logs/request.js.map +1 -1
  67. package/dist/common/queue.d.ts +32 -32
  68. package/dist/common/queue.js +18 -18
  69. package/dist/common/queue.js.map +1 -1
  70. package/dist/config.d.ts +73 -73
  71. package/dist/config.js.map +1 -1
  72. package/dist/constants.d.ts +924 -924
  73. package/dist/constants.js +9 -9
  74. package/dist/constants.js.map +1 -1
  75. package/dist/controls-options-manager/constants.d.ts +4 -4
  76. package/dist/controls-options-manager/constants.js.map +1 -1
  77. package/dist/controls-options-manager/enums.d.ts +5 -5
  78. package/dist/controls-options-manager/enums.js.map +1 -1
  79. package/dist/controls-options-manager/index.d.ts +120 -120
  80. package/dist/controls-options-manager/index.js +81 -81
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/util.d.ts +7 -7
  83. package/dist/controls-options-manager/util.js.map +1 -1
  84. package/dist/index.d.ts +4 -4
  85. package/dist/index.js.map +1 -1
  86. package/dist/locus-info/controlsUtils.d.ts +2 -2
  87. package/dist/locus-info/controlsUtils.js +21 -21
  88. package/dist/locus-info/controlsUtils.js.map +1 -1
  89. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -2
  90. package/dist/locus-info/embeddedAppsUtils.js +14 -14
  91. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  92. package/dist/locus-info/fullState.d.ts +2 -2
  93. package/dist/locus-info/fullState.js.map +1 -1
  94. package/dist/locus-info/hostUtils.d.ts +2 -2
  95. package/dist/locus-info/hostUtils.js +19 -19
  96. package/dist/locus-info/hostUtils.js.map +1 -1
  97. package/dist/locus-info/index.d.ts +269 -269
  98. package/dist/locus-info/index.js +180 -180
  99. package/dist/locus-info/index.js.map +1 -1
  100. package/dist/locus-info/infoUtils.d.ts +2 -2
  101. package/dist/locus-info/infoUtils.js.map +1 -1
  102. package/dist/locus-info/mediaSharesUtils.d.ts +2 -2
  103. package/dist/locus-info/mediaSharesUtils.js +50 -50
  104. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  105. package/dist/locus-info/parser.d.ts +212 -212
  106. package/dist/locus-info/parser.js +136 -136
  107. package/dist/locus-info/parser.js.map +1 -1
  108. package/dist/locus-info/selfUtils.d.ts +2 -2
  109. package/dist/locus-info/selfUtils.js +52 -52
  110. package/dist/locus-info/selfUtils.js.map +1 -1
  111. package/dist/media/index.d.ts +32 -32
  112. package/dist/media/index.js +145 -145
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.d.ts +108 -108
  115. package/dist/media/properties.js +49 -49
  116. package/dist/media/properties.js.map +1 -1
  117. package/dist/media/util.d.ts +2 -2
  118. package/dist/media/util.js.map +1 -1
  119. package/dist/mediaQualityMetrics/config.d.ts +233 -233
  120. package/dist/mediaQualityMetrics/config.js.map +1 -1
  121. package/dist/meeting/effectsState.d.ts +42 -42
  122. package/dist/meeting/effectsState.js +24 -24
  123. package/dist/meeting/effectsState.js.map +1 -1
  124. package/dist/meeting/in-meeting-actions.d.ts +79 -79
  125. package/dist/meeting/in-meeting-actions.js +11 -11
  126. package/dist/meeting/in-meeting-actions.js.map +1 -1
  127. package/dist/meeting/index.d.ts +1621 -1621
  128. package/dist/meeting/index.js +1502 -1505
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/muteState.d.ts +116 -116
  131. package/dist/meeting/muteState.js +85 -85
  132. package/dist/meeting/muteState.js.map +1 -1
  133. package/dist/meeting/request.d.ts +255 -255
  134. package/dist/meeting/request.js +141 -141
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/state.d.ts +9 -9
  137. package/dist/meeting/state.js +30 -30
  138. package/dist/meeting/state.js.map +1 -1
  139. package/dist/meeting/util.d.ts +2 -2
  140. package/dist/meeting/util.js.map +1 -1
  141. package/dist/meeting-info/collection.d.ts +20 -20
  142. package/dist/meeting-info/collection.js +11 -11
  143. package/dist/meeting-info/collection.js.map +1 -1
  144. package/dist/meeting-info/index.d.ts +57 -57
  145. package/dist/meeting-info/index.js +50 -50
  146. package/dist/meeting-info/index.js.map +1 -1
  147. package/dist/meeting-info/meeting-info-v2.d.ts +93 -93
  148. package/dist/meeting-info/meeting-info-v2.js +52 -52
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.d.ts +22 -22
  151. package/dist/meeting-info/request.js +14 -14
  152. package/dist/meeting-info/request.js.map +1 -1
  153. package/dist/meeting-info/util.d.ts +2 -2
  154. package/dist/meeting-info/util.js +9 -9
  155. package/dist/meeting-info/util.js.map +1 -1
  156. package/dist/meeting-info/utilv2.d.ts +2 -2
  157. package/dist/meeting-info/utilv2.js +20 -20
  158. package/dist/meeting-info/utilv2.js.map +1 -1
  159. package/dist/meetings/collection.d.ts +23 -23
  160. package/dist/meetings/collection.js +14 -14
  161. package/dist/meetings/collection.js.map +1 -1
  162. package/dist/meetings/index.d.ts +296 -296
  163. package/dist/meetings/index.js +259 -259
  164. package/dist/meetings/index.js.map +1 -1
  165. package/dist/meetings/request.d.ts +27 -27
  166. package/dist/meetings/request.js +15 -15
  167. package/dist/meetings/request.js.map +1 -1
  168. package/dist/meetings/util.d.ts +18 -18
  169. package/dist/meetings/util.js +29 -29
  170. package/dist/meetings/util.js.map +1 -1
  171. package/dist/member/index.d.ts +147 -147
  172. package/dist/member/index.js +214 -214
  173. package/dist/member/index.js.map +1 -1
  174. package/dist/member/member.types.d.ts +11 -11
  175. package/dist/member/member.types.js.map +1 -1
  176. package/dist/member/util.d.ts +2 -2
  177. package/dist/member/util.js +60 -60
  178. package/dist/member/util.js.map +1 -1
  179. package/dist/members/collection.d.ts +24 -24
  180. package/dist/members/collection.js +11 -11
  181. package/dist/members/collection.js.map +1 -1
  182. package/dist/members/index.d.ts +298 -298
  183. package/dist/members/index.js +275 -275
  184. package/dist/members/index.js.map +1 -1
  185. package/dist/members/request.d.ts +50 -50
  186. package/dist/members/request.js +27 -27
  187. package/dist/members/request.js.map +1 -1
  188. package/dist/members/util.d.ts +2 -2
  189. package/dist/members/util.js +21 -21
  190. package/dist/members/util.js.map +1 -1
  191. package/dist/metrics/config.d.ts +169 -169
  192. package/dist/metrics/config.js.map +1 -1
  193. package/dist/metrics/constants.d.ts +57 -57
  194. package/dist/metrics/constants.js.map +1 -1
  195. package/dist/metrics/index.d.ts +152 -152
  196. package/dist/metrics/index.js +90 -90
  197. package/dist/metrics/index.js.map +1 -1
  198. package/dist/networkQualityMonitor/index.d.ts +70 -70
  199. package/dist/networkQualityMonitor/index.js +65 -65
  200. package/dist/networkQualityMonitor/index.js.map +1 -1
  201. package/dist/peer-connection-manager/index.d.ts +6 -6
  202. package/dist/peer-connection-manager/index.js +87 -87
  203. package/dist/peer-connection-manager/index.js.map +1 -1
  204. package/dist/peer-connection-manager/util.d.ts +6 -6
  205. package/dist/peer-connection-manager/util.js +9 -9
  206. package/dist/peer-connection-manager/util.js.map +1 -1
  207. package/dist/personal-meeting-room/index.d.ts +47 -47
  208. package/dist/personal-meeting-room/index.js +67 -67
  209. package/dist/personal-meeting-room/index.js.map +1 -1
  210. package/dist/personal-meeting-room/request.d.ts +14 -14
  211. package/dist/personal-meeting-room/request.js +7 -7
  212. package/dist/personal-meeting-room/request.js.map +1 -1
  213. package/dist/personal-meeting-room/util.d.ts +2 -2
  214. package/dist/personal-meeting-room/util.js.map +1 -1
  215. package/dist/reachability/index.d.ts +139 -139
  216. package/dist/reachability/index.js +110 -110
  217. package/dist/reachability/index.js.map +1 -1
  218. package/dist/reachability/request.d.ts +35 -35
  219. package/dist/reachability/request.js +15 -15
  220. package/dist/reachability/request.js.map +1 -1
  221. package/dist/reactions/reactions.d.ts +4 -4
  222. package/dist/reactions/reactions.js.map +1 -1
  223. package/dist/reactions/reactions.type.d.ts +32 -32
  224. package/dist/reactions/reactions.type.js.map +1 -1
  225. package/dist/reconnection-manager/index.d.ts +112 -112
  226. package/dist/reconnection-manager/index.js +112 -112
  227. package/dist/reconnection-manager/index.js.map +1 -1
  228. package/dist/recording-controller/enums.d.ts +7 -7
  229. package/dist/recording-controller/enums.js.map +1 -1
  230. package/dist/recording-controller/index.d.ts +193 -193
  231. package/dist/recording-controller/index.js +127 -127
  232. package/dist/recording-controller/index.js.map +1 -1
  233. package/dist/recording-controller/util.d.ts +13 -13
  234. package/dist/recording-controller/util.js.map +1 -1
  235. package/dist/roap/collection.d.ts +10 -10
  236. package/dist/roap/collection.js.map +1 -1
  237. package/dist/roap/handler.d.ts +47 -47
  238. package/dist/roap/handler.js +27 -27
  239. package/dist/roap/handler.js.map +1 -1
  240. package/dist/roap/index.d.ts +116 -116
  241. package/dist/roap/index.js +111 -111
  242. package/dist/roap/index.js.map +1 -1
  243. package/dist/roap/request.d.ts +35 -35
  244. package/dist/roap/request.js +17 -17
  245. package/dist/roap/request.js.map +1 -1
  246. package/dist/roap/state.d.ts +9 -9
  247. package/dist/roap/state.js +14 -14
  248. package/dist/roap/state.js.map +1 -1
  249. package/dist/roap/turnDiscovery.d.ts +67 -67
  250. package/dist/roap/turnDiscovery.js +46 -46
  251. package/dist/roap/turnDiscovery.js.map +1 -1
  252. package/dist/roap/util.d.ts +2 -2
  253. package/dist/roap/util.js.map +1 -1
  254. package/dist/statsAnalyzer/global.d.ts +126 -126
  255. package/dist/statsAnalyzer/global.js.map +1 -1
  256. package/dist/statsAnalyzer/index.d.ts +190 -190
  257. package/dist/statsAnalyzer/index.js +128 -128
  258. package/dist/statsAnalyzer/index.js.map +1 -1
  259. package/dist/statsAnalyzer/mqaUtil.d.ts +22 -22
  260. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  261. package/dist/transcription/index.d.ts +64 -64
  262. package/dist/transcription/index.js +42 -42
  263. package/dist/transcription/index.js.map +1 -1
  264. package/internal-README.md +172 -172
  265. package/jest.config.js +3 -3
  266. package/package.json +22 -21
  267. package/process +1 -1
  268. package/src/common/browser-detection.ts +39 -39
  269. package/src/common/collection.ts +94 -94
  270. package/src/common/config.ts +9 -9
  271. package/src/common/errors/captcha-error.ts +25 -25
  272. package/src/common/errors/intent-to-join.ts +27 -27
  273. package/src/common/errors/join-meeting.ts +32 -32
  274. package/src/common/errors/media.ts +25 -25
  275. package/src/common/errors/parameter.ts +33 -33
  276. package/src/common/errors/password-error.ts +25 -25
  277. package/src/common/errors/permission.ts +24 -24
  278. package/src/common/errors/reconnection-in-progress.ts +8 -8
  279. package/src/common/errors/reconnection.ts +25 -25
  280. package/src/common/errors/stats.ts +25 -25
  281. package/src/common/errors/webex-errors.ts +140 -140
  282. package/src/common/errors/webex-meetings-error.ts +35 -35
  283. package/src/common/events/events-scope.ts +30 -30
  284. package/src/common/events/events.ts +25 -25
  285. package/src/common/events/trigger-proxy.ts +25 -25
  286. package/src/common/events/util.ts +39 -39
  287. package/src/common/logs/logger-config.ts +8 -8
  288. package/src/common/logs/logger-proxy.ts +44 -44
  289. package/src/common/logs/request.ts +65 -65
  290. package/src/common/queue.ts +50 -50
  291. package/src/config.ts +96 -96
  292. package/src/constants.ts +1121 -1121
  293. package/src/controls-options-manager/constants.ts +5 -5
  294. package/src/controls-options-manager/enums.ts +6 -6
  295. package/src/controls-options-manager/index.ts +183 -183
  296. package/src/controls-options-manager/util.ts +20 -20
  297. package/src/index.js +15 -15
  298. package/src/locus-info/controlsUtils.ts +112 -112
  299. package/src/locus-info/embeddedAppsUtils.ts +57 -57
  300. package/src/locus-info/fullState.ts +69 -69
  301. package/src/locus-info/hostUtils.ts +60 -60
  302. package/src/locus-info/index.ts +1303 -1303
  303. package/src/locus-info/infoUtils.ts +101 -101
  304. package/src/locus-info/mediaSharesUtils.ts +173 -173
  305. package/src/locus-info/parser.ts +680 -680
  306. package/src/locus-info/selfUtils.ts +428 -428
  307. package/src/media/index.ts +675 -675
  308. package/src/media/properties.ts +313 -313
  309. package/src/media/util.ts +37 -37
  310. package/src/mediaQualityMetrics/config.ts +382 -382
  311. package/src/meeting/effectsState.ts +209 -209
  312. package/src/meeting/in-meeting-actions.ts +153 -153
  313. package/src/meeting/index.ts +6537 -6543
  314. package/src/meeting/muteState.ts +365 -365
  315. package/src/meeting/request.ts +810 -810
  316. package/src/meeting/state.ts +194 -194
  317. package/src/meeting/util.ts +530 -530
  318. package/src/meeting-info/collection.ts +41 -41
  319. package/src/meeting-info/index.ts +137 -137
  320. package/src/meeting-info/meeting-info-v2.ts +273 -273
  321. package/src/meeting-info/request.ts +46 -46
  322. package/src/meeting-info/util.ts +314 -314
  323. package/src/meeting-info/utilv2.ts +324 -324
  324. package/src/meetings/collection.ts +43 -43
  325. package/src/meetings/index.ts +1128 -1128
  326. package/src/meetings/request.ts +81 -81
  327. package/src/meetings/util.ts +181 -181
  328. package/src/member/index.ts +446 -446
  329. package/src/member/member.types.ts +13 -13
  330. package/src/member/util.ts +286 -286
  331. package/src/members/collection.ts +40 -40
  332. package/src/members/index.ts +900 -900
  333. package/src/members/request.ts +175 -175
  334. package/src/members/util.ts +260 -260
  335. package/src/metrics/config.ts +485 -485
  336. package/src/metrics/constants.ts +61 -61
  337. package/src/metrics/index.ts +543 -543
  338. package/src/networkQualityMonitor/index.ts +211 -211
  339. package/src/peer-connection-manager/index.ts +847 -847
  340. package/src/peer-connection-manager/util.ts +119 -119
  341. package/src/personal-meeting-room/index.ts +157 -157
  342. package/src/personal-meeting-room/request.ts +48 -48
  343. package/src/personal-meeting-room/util.ts +49 -49
  344. package/src/reachability/index.ts +478 -478
  345. package/src/reachability/request.ts +81 -81
  346. package/src/reactions/reactions.ts +104 -104
  347. package/src/reactions/reactions.type.ts +36 -36
  348. package/src/reconnection-manager/index.ts +622 -622
  349. package/src/recording-controller/enums.ts +8 -8
  350. package/src/recording-controller/index.ts +315 -315
  351. package/src/recording-controller/util.ts +58 -58
  352. package/src/roap/collection.ts +62 -62
  353. package/src/roap/handler.ts +294 -294
  354. package/src/roap/index.ts +413 -413
  355. package/src/roap/request.ts +229 -229
  356. package/src/roap/state.ts +156 -156
  357. package/src/roap/turnDiscovery.ts +283 -283
  358. package/src/roap/util.ts +100 -100
  359. package/src/statsAnalyzer/global.ts +128 -128
  360. package/src/statsAnalyzer/index.ts +1266 -1266
  361. package/src/statsAnalyzer/mqaUtil.ts +290 -290
  362. package/src/transcription/index.ts +154 -154
  363. package/test/integration/spec/journey.js +941 -941
  364. package/test/integration/spec/space-meeting.js +457 -457
  365. package/test/integration/spec/transcription.js +55 -55
  366. package/test/unit/spec/common/browser-detection.js +119 -119
  367. package/test/unit/spec/common/queue.js +69 -69
  368. package/test/unit/spec/controls-options-manager/index.js +123 -123
  369. package/test/unit/spec/controls-options-manager/util.js +65 -65
  370. package/test/unit/spec/fixture/locus.js +406 -406
  371. package/test/unit/spec/locus-info/controlsUtils.js +82 -82
  372. package/test/unit/spec/locus-info/embeddedAppsUtils.js +104 -104
  373. package/test/unit/spec/locus-info/index.js +1272 -1272
  374. package/test/unit/spec/locus-info/infoUtils.js +138 -138
  375. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +975 -975
  376. package/test/unit/spec/locus-info/lib/SeqCmp.json +522 -522
  377. package/test/unit/spec/locus-info/lib/selfConstant.js +286 -286
  378. package/test/unit/spec/locus-info/parser.js +298 -298
  379. package/test/unit/spec/locus-info/selfUtils.js +185 -185
  380. package/test/unit/spec/media/properties.ts +305 -305
  381. package/test/unit/spec/meeting/effectsState.js +281 -281
  382. package/test/unit/spec/meeting/in-meeting-actions.ts +90 -90
  383. package/test/unit/spec/meeting/index.js +5227 -5227
  384. package/test/unit/spec/meeting/muteState.js +430 -430
  385. package/test/unit/spec/meeting/request.js +317 -317
  386. package/test/unit/spec/meeting/utils.js +319 -319
  387. package/test/unit/spec/meeting-info/meetinginfov2.js +376 -376
  388. package/test/unit/spec/meeting-info/request.js +64 -64
  389. package/test/unit/spec/meeting-info/util.js +37 -37
  390. package/test/unit/spec/meeting-info/utilv2.js +330 -330
  391. package/test/unit/spec/meetings/collection.js +52 -52
  392. package/test/unit/spec/meetings/index.js +1375 -1375
  393. package/test/unit/spec/meetings/utils.js +66 -66
  394. package/test/unit/spec/member/index.js +47 -47
  395. package/test/unit/spec/member/util.js +80 -80
  396. package/test/unit/spec/members/index.js +364 -364
  397. package/test/unit/spec/members/request.js +200 -200
  398. package/test/unit/spec/members/utils.js +42 -42
  399. package/test/unit/spec/metrics/index.js +111 -111
  400. package/test/unit/spec/networkQualityMonitor/index.js +99 -99
  401. package/test/unit/spec/peerconnection-manager/index.js +218 -218
  402. package/test/unit/spec/peerconnection-manager/utils.js +49 -49
  403. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -388
  404. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +29 -29
  405. package/test/unit/spec/reachability/index.ts +50 -50
  406. package/test/unit/spec/reconnection-manager/index.js +206 -206
  407. package/test/unit/spec/recording-controller/index.js +230 -230
  408. package/test/unit/spec/recording-controller/util.js +101 -101
  409. package/test/unit/spec/roap/index.ts +128 -128
  410. package/test/unit/spec/roap/turnDiscovery.ts +372 -372
  411. package/test/unit/spec/roap/util.js +30 -30
  412. package/test/unit/spec/stats-analyzer/index.js +287 -287
  413. package/test/utils/cmr.js +104 -104
  414. package/test/utils/testUtils.js +287 -287
  415. package/test/utils/webex-config.js +77 -77
  416. package/test/utils/webex-test-users.js +82 -82
  417. package/tsconfig.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_eventsScope","_constants","_metrics","_config","_infoUtils","_fullState","_selfUtils","_hostUtils","_controlsUtils","_embeddedAppsUtils","_mediaSharesUtils","_parser","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","LocusInfo","_EventsScope","_inherits2","_super","updateMeeting","webex","meetingId","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","parsedLocus","states","emitChange","compareAndUpdateFlags","locusParser","LocusDeltaParser","_createClass2","key","value","applyLocusDeltaData","action","locus","meeting","_this2","_LocusDeltaParser$loc","loci","DESYNC","USE_CURRENT","USE_INCOMING","locusInfo","onDeltaLocus","locusDesync","needToGetFullLocus","meetingRequest","getFullLocus","desync","locusUrl","then","res","onFullLocus","body","resume","LoggerProxy","logger","info","concat","handleLocusDelta","_this3","onDeltaAction","parsedLoci","onDeltaEvent","init","_locus$links","length","undefined","created","scheduledMeeting","participantsUrl","replaces","aclUrl","baseSequence","sequence","membership","identities","participants","deltaParticipants","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","updateLocusUrl","url","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","self","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","initialSetup","parse","data","eventType","LOCUSEVENT","PARTICIPANT_JOIN","PARTICIPANT_LEFT","CONTROLS_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","SELF_CHANGED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_DECLINED","FLOOR_GRANTED","FLOOR_RELEASED","DIFFERENCE","emitScoped","scope","eventName","args","emit","error","updateParticipantDeltas","updateLocusInfo","isMeetingActive","handleOneOnOneEvent","workingCopy","type","_CALL_","_SIP_BRIDGE_","file","function","EVENTS","REMOTE_RESPONSE","remoteDeclined","remoteAnswered","_locus$links2","updateCreated","updateParticipantsUrl","updateReplace","replace","updateAclUrl","updateBasequence","updateSequence","updateMemberShip","updateIdentifiers","compareAndUpdate","getLocusPartner","find","participant","identity","_USER_","removed","partner","state","LOCUS","STATE","INACTIVE","warn","Metrics","postEvent","event","REMOTE_ENDED","DESTROY_MEETING","reason","CALL_REMOVED_REASON","CALL_INACTIVE","shouldLeave","MEETING_STATE","STATES","LEFT","DECLINED","NOTIFIED","JOINED","PARTNER_LEFT","joinedWith","_LEFT_","IDLE","SELF_LEFT","_MEETING_","TERMINATING","MEETING_REMOVED_REASON","MEETING_INACTIVE_TERMINATING","FULLSTATE_REMOVED","SELF_REMOVED","compareSelfAndHost","compareHostAndSelf","_this$parsedLocus$hos","selfIdentity","hostId","moderator","LOCUS_INFO_CAN_ASSIGN_HOST","canAssignHost","_this4","findParticipant","collection","item","person","id","generateDelta","prevState","newState","deltas","audioStatus","videoSlidesStatus","videoStatus","_keys","forEach","reduce","existingParticipant","delta","status","changed","push","_this$parsedLocus$con","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","_isEqual2","ControlsUtils","_ControlsUtils$getCon","getControls","_ControlsUtils$getCon2","updates","hasRecordingChanged","hasRecordingPausedChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasEntryExitToneChanged","current","paused","RECORDING_STATE","PAUSED","recording","RESUMED","RECORDING","LOCUSINFO","CONTROLS_RECORDING_UPDATED","lastModified","meetingContainerUrl","meetingContainer","CONTROLS_MEETING_CONTAINER_UPDATED","_current$transcribe","transcribe","transcribing","caption","CONTROLS_MEETING_TRANSCRIBE_UPDATED","entryExitTone","CONTROLS_ENTRY_EXIT_TONE_UPDATED","LINKS_SERVICES","FullState","getFullState","meetingStateChangedTo","FULL_STATE_MEETING_STATE_CHANGE","previousState","previous","meetingState","currentState","meetingTypeChangedTo","FULL_STATE_TYPE_UPDATE","parsedHosts","HostUtils","getHosts","isNewHost","LOCUS_INFO_UPDATE_HOST","newHost","oldHost","_this$parsedLocus$sel","roles","SelfUtils","getRoles","isJoined","parsedInfo","InfoUtils","getInfos","MEETING_INFO_UPDATED","isLocked","MEETING_LOCKED","isUnlocked","MEETING_UNLOCKED","EmbeddedAppsUtils","areSimilar","parsedEmbeddedApps","EMBEDDED_APPS_UPDATED","parsedMediaShares","MediaSharesUtils","getMediaShares","LOCUS_INFO_UPDATE_MEDIA_SHARES","parsedSelves","getSelves","internal","device","element","getSipUrl","sipUri","moderatorChanged","layoutChanged","CONTROLS_MEETING_LAYOUT_UPDATED","layout","isMediaInactiveOrReleased","DISCONNECT_DUE_TO_INACTIVITY","SELF_MODERATOR_CHANGED","localAudioUnmuteRequiredByServer","LOCAL_UNMUTE_REQUIRED","muted","remoteMuted","unmuteAllowed","isMutedByOthersChanged","SELF_REMOTE_MUTE_STATUS_UPDATED","localAudioUnmuteRequestedByServer","LOCAL_UNMUTE_REQUESTED","isUserUnadmitted","SELF_UNADMITTED_GUEST","isUserAdmitted","SELF_ADMITTED_GUEST","isMediaInactive","MEDIA_INACTIVITY","getMediaStatus","mediaSessions","audioStateChange","videoStateChange","shareStateChange","_parsedSelves$current","_parsedSelves$current2","_parsedSelves$current3","MEDIA_STATUS_CHANGE","currentMediaStatus","audio","video","shareStatus","share","isUserObserving","SELF_OBSERVING","canNotViewTheParticipantListChanged","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","canNotViewTheParticipantList","isSharingBlockedChanged","SELF_IS_SHARING_BLOCKED_CHANGE","isSharingBlocked","LOCUS_INFO_UPDATE_SELF","oldSelf","newSelf","LOCUS_INFO_UPDATE_URL","EventsScope","exports"],"sources":["index.ts"],"sourcesContent":["import {isEqual} from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\nimport {\n EVENTS,\n LOCUSEVENT,\n _USER_,\n _CALL_,\n _SIP_BRIDGE_,\n MEETING_STATE,\n _MEETING_,\n LOCUSINFO,\n LOCUS,\n _LEFT_,\n MEETING_REMOVED_REASON,\n CALL_REMOVED_REASON,\n RECORDING_STATE,\n} from '../constants';\nimport Metrics from '../metrics';\nimport {eventType} from '../metrics/config';\nimport InfoUtils from './infoUtils';\nimport FullState from './fullState';\nimport SelfUtils from './selfUtils';\nimport HostUtils from './hostUtils';\nimport ControlsUtils from './controlsUtils';\nimport EmbeddedAppsUtils from './embeddedAppsUtils';\nimport MediaSharesUtils from './mediaSharesUtils';\nimport LocusDeltaParser from './parser';\n\n/**\n * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object\n * @export\n * @private\n * @class LocusInfo\n */\nexport default class LocusInfo extends EventsScope {\n compareAndUpdateFlags: any;\n emitChange: any;\n locusParser: any;\n meetingId: any;\n parsedLocus: any;\n updateMeeting: any;\n webex: any;\n aclUrl: any;\n baseSequence: any;\n created: any;\n deltaParticipants: any;\n identities: any;\n membership: any;\n participants: any;\n participantsUrl: any;\n replaces: any;\n scheduledMeeting: any;\n sequence: any;\n controls: any;\n conversationUrl: any;\n embeddedApps: any;\n fullState: any;\n host: any;\n info: any;\n mediaShares: any;\n replace: any;\n url: any;\n services: any;\n\n constructor(updateMeeting, webex, meetingId) {\n super();\n this.parsedLocus = {\n states: [],\n };\n this.webex = webex;\n this.emitChange = false;\n this.compareAndUpdateFlags = {};\n this.meetingId = meetingId;\n this.updateMeeting = updateMeeting;\n this.locusParser = new LocusDeltaParser();\n }\n\n /**\n * Apply locus delta data to meeting\n * @param {string} action Locus delta action\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n applyLocusDeltaData(action: string, locus: any, meeting: any) {\n const {DESYNC, USE_CURRENT, USE_INCOMING} = LocusDeltaParser.loci;\n\n switch (action) {\n case USE_INCOMING:\n meeting.locusInfo.onDeltaLocus(locus);\n break;\n case USE_CURRENT:\n meeting.locusDesync = false;\n meeting.needToGetFullLocus = false;\n break;\n case DESYNC:\n meeting.meetingRequest\n .getFullLocus({\n desync: true,\n locusUrl: meeting.locusUrl,\n })\n .then((res) => {\n meeting.locusInfo.onFullLocus(res.body);\n // Notify parser to resume processing delta events\n // now that we have full locus from DESYNC.\n this.locusParser.resume();\n });\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ${action}`\n );\n }\n }\n\n /**\n * Adds locus delta to parser's queue\n * and registers a function handler\n * to recieve parsed actions from queue.\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n handleLocusDelta(locus: any, meeting: any) {\n // register a function to process delta actions\n if (!this.locusParser.onDeltaAction) {\n // delta action, along with associated loci\n // is passed into the function.\n this.locusParser.onDeltaAction = (action, parsedLoci) => {\n this.applyLocusDeltaData(action, parsedLoci, meeting);\n };\n }\n // queue delta event with parser\n this.locusParser.onDeltaEvent(locus);\n }\n\n /**\n * @param {Locus} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n init(locus: any = {}) {\n this.created = locus.created || null;\n this.scheduledMeeting = locus.meeting || null;\n this.participantsUrl = locus.participantsUrl || null;\n this.replaces = locus.replaces || null;\n this.aclUrl = locus.aclUrl || null;\n this.baseSequence = locus.baseSequence || null;\n this.sequence = locus.sequence || null;\n this.membership = locus.membership || null;\n this.identities = locus.identities || null;\n this.participants = locus.participants || null;\n\n /**\n * Stores the delta values for a changed participant.\n *\n * @typedef {Object} DeltaParticipant\n * @property {Record<string, boolean>} delta - Contains changed streams.\n * @property {Object} person - Contains person data.\n */\n\n /**\n * Stored participant changes between the last event and the current event.\n * All previously stored events are overwritten between events.\n *\n * @instance\n * @type {Array<DeltaParticipant>}\n * @private\n * @member LocusInfo\n */\n this.deltaParticipants = [];\n\n // above section only updates the locusInfo object\n // The below section makes sure it updates the locusInfo as well as updates the meeting object\n this.updateParticipants(locus.participants);\n // For 1:1 space meeting the conversation Url does not exist in locus.conversation\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateControls(locus.controls);\n this.updateLocusUrl(locus.url);\n this.updateFullState(locus.fullState);\n this.updateMeetingInfo(locus.info);\n this.updateEmbeddedApps(locus.embeddedApps);\n // self and participants generate sipUrl for 1:1 meeting\n this.updateSelf(locus.self, locus.participants);\n this.updateHostInfo(locus.host);\n this.updateMediaShares(locus.mediaShares);\n this.updateServices(locus.links?.services);\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n initialSetup(locus: object) {\n this.onFullLocus(locus);\n\n // Change it to true after it receives it first locus object\n this.emitChange = true;\n }\n\n /**\n * @param {Meeting} meeting\n * @param {Object} data\n * @returns {undefined}\n * @memberof LocusInfo\n */\n parse(meeting: any, data: any) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {eventType} = data;\n\n LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);\n\n switch (eventType) {\n case LOCUSEVENT.PARTICIPANT_JOIN:\n case LOCUSEVENT.PARTICIPANT_LEFT:\n case LOCUSEVENT.CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:\n case LOCUSEVENT.SELF_CHANGED:\n case LOCUSEVENT.PARTICIPANT_UPDATED:\n case LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:\n case LOCUSEVENT.PARTICIPANT_DECLINED:\n case LOCUSEVENT.FLOOR_GRANTED:\n case LOCUSEVENT.FLOOR_RELEASED:\n this.onFullLocus(data.locus, eventType);\n break;\n case LOCUSEVENT.DIFFERENCE:\n this.handleLocusDelta(data.locus, meeting);\n break;\n\n default:\n // Why will there be a event with no eventType ????\n // we may not need this, we can get full locus\n this.handleLocusDelta(data.locus, meeting);\n }\n }\n\n /**\n * @param {String} scope\n * @param {String} eventName\n * @param {Array} args\n * @returns {undefined}\n * @memberof LocusInfo\n */\n emitScoped(scope?: any, eventName?: string, args?: any) {\n return this.emit(scope, eventName, args);\n }\n\n /**\n * updates the locus with full locus object\n * @param {object} locus locus object\n * @param {string} eventType particulat locus event\n * @returns {object} null\n * @memberof LocusInfo\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n onFullLocus(locus: any, eventType?: string) {\n if (!locus) {\n LoggerProxy.logger.error(\n 'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'\n );\n }\n this.updateParticipantDeltas(locus.participants);\n this.scheduledMeeting = locus.meeting || null;\n this.participants = locus.participants;\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants);\n this.isMeetingActive();\n this.handleOneOnOneEvent(eventType);\n this.updateEmbeddedApps(locus.embeddedApps);\n // set current (working copy) for parser\n this.locusParser.workingCopy = locus;\n }\n\n // used for ringing stops on one on one\n /**\n * @param {String} eventType\n * @returns {undefined}\n * @memberof LocusInfo\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n handleOneOnOneEvent(eventType: string) {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // for 1:1 bob calls alice and alice declines, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_DECLINED) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: true,\n remoteAnswered: false,\n }\n );\n }\n // for 1:1 bob calls alice and alice answers, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_JOIN) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: false,\n remoteAnswered: true,\n }\n );\n }\n }\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n onDeltaLocus(locus: any) {\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants);\n this.isMeetingActive();\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusInfo(locus: any) {\n this.updateControls(locus.controls);\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateCreated(locus.created);\n this.updateFullState(locus.fullState);\n this.updateHostInfo(locus.host);\n this.updateMeetingInfo(locus.info, locus.self);\n this.updateMediaShares(locus.mediaShares);\n this.updateParticipantsUrl(locus.participantsUrl);\n this.updateReplace(locus.replace);\n this.updateSelf(locus.self, locus.participants);\n this.updateLocusUrl(locus.url);\n this.updateAclUrl(locus.aclUrl);\n this.updateBasequence(locus.baseSequence);\n this.updateSequence(locus.sequence);\n this.updateMemberShip(locus.membership);\n this.updateIdentifiers(locus.identities);\n this.updateEmbeddedApps(locus.embeddedApps);\n this.updateServices(locus.links?.services);\n this.compareAndUpdate();\n // update which required to compare different objects from locus\n }\n\n /**\n * @param {Array} participants\n * @param {Object} self\n * @returns {Array}\n * @memberof LocusInfo\n */\n getLocusPartner(participants: Array<any>, self: any) {\n if (!participants || participants.length === 0) {\n return null;\n }\n\n return (\n participants.find(\n (participant) =>\n self &&\n participant.identity !== self.identity &&\n (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))\n // @ts-ignore\n ) || this.partner\n );\n }\n\n // TODO: all the leave states need to be checked\n /**\n * @returns {undefined}\n * @memberof LocusInfo\n */\n isMeetingActive() {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // @ts-ignore\n const partner = this.getLocusPartner(this.participants, this.self);\n\n this.updateMeeting({partner});\n\n // Check if guest user needs to be checked here\n\n // 1) when bob declines call from bob, (bob='DECLINED')\n // 2) When alice rejects call to bob , (bob='NOTIFIED')\n\n // When we dont add MEDIA for condition 2. The state of bob='IDLE'\n\n if (this.fullState && this.fullState.state === LOCUS.STATE.INACTIVE) {\n // TODO: update the meeting state\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.'\n );\n Metrics.postEvent({\n event: eventType.REMOTE_ENDED,\n meetingId: this.meetingId,\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.CALL_INACTIVE,\n shouldLeave: false,\n }\n );\n } else if (\n partner.state === MEETING_STATE.STATES.LEFT &&\n this.parsedLocus.self &&\n (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.NOTIFIED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.JOINED)\n ) {\n Metrics.postEvent({\n event: eventType.REMOTE_ENDED,\n meetingId: this.meetingId,\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.PARTNER_LEFT,\n shouldLeave:\n this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,\n }\n );\n } else if (\n this.parsedLocus.self &&\n this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&\n (partner.state === MEETING_STATE.STATES.LEFT ||\n partner.state === MEETING_STATE.STATES.DECLINED ||\n partner.state === MEETING_STATE.STATES.NOTIFIED ||\n partner.state === MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media\n ) {\n Metrics.postEvent({\n event: eventType.REMOTE_ENDED,\n meetingId: this.meetingId,\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.SELF_LEFT,\n shouldLeave: false,\n }\n );\n }\n } else if (this.parsedLocus.fullState.type === _MEETING_) {\n if (\n this.fullState &&\n (this.fullState.state === LOCUS.STATE.INACTIVE ||\n // @ts-ignore\n this.fullState.state === LOCUS.STATE.TERMINATING)\n ) {\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating'\n );\n Metrics.postEvent({\n event: eventType.REMOTE_ENDED,\n meetingId: this.meetingId,\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.MEETING_INACTIVE_TERMINATING,\n shouldLeave: false,\n }\n );\n } else if (this.fullState && this.fullState.removed) {\n // user has been dropped from a meeting\n Metrics.postEvent({\n event: eventType.REMOTE_ENDED,\n meetingId: this.meetingId,\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.FULLSTATE_REMOVED,\n shouldLeave: false,\n }\n );\n }\n // If you are guest and you are removed from the meeting\n // You wont get any further events\n else if (this.parsedLocus.self && this.parsedLocus.self.removed) {\n // Check if we need to send an event\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.SELF_REMOVED,\n shouldLeave: false,\n }\n );\n }\n } else {\n LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');\n }\n }\n\n /**\n * checks if the host permissions have changed while in the meeting\n * This would be the case if your role as host or moderator has been updated\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareAndUpdate() {\n // TODO: check with locus team on host and moderator doc\n // use host as a validator if needed\n if (\n this.compareAndUpdateFlags.compareSelfAndHost ||\n this.compareAndUpdateFlags.compareHostAndSelf\n ) {\n this.compareSelfAndHost();\n }\n }\n\n /**\n * compared the self object to check if the user has host permissions\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareSelfAndHost() {\n // In some cases the host info is not present but the moderator values changes from null to false so it triggers an update\n if (\n this.parsedLocus.self.selfIdentity === this.parsedLocus.host?.hostId &&\n this.parsedLocus.self.moderator\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: true,\n }\n );\n } else {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: false,\n }\n );\n }\n }\n\n /**\n * Update the deltaParticipants property of this object based on a list of\n * provided participants.\n *\n * @param {Array} [participants] - The participants to update against.\n * @returns {void}\n */\n updateParticipantDeltas(participants: Array<any> = []) {\n // Used to find a participant within a participants collection.\n const findParticipant = (participant, collection) =>\n collection.find((item) => item.person.id === participant.person.id);\n\n // Generates an object that indicates which state properties have changed.\n const generateDelta = (prevState: any = {}, newState: any = {}) => {\n // Setup deltas.\n const deltas = {\n audioStatus: prevState.audioStatus !== newState.audioStatus,\n videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,\n videoStatus: prevState.videoStatus !== newState.videoStatus,\n };\n\n // Clean the object\n Object.keys(deltas).forEach((key) => {\n if (deltas[key] !== true) {\n delete deltas[key];\n }\n });\n\n return deltas;\n };\n\n this.deltaParticipants = participants.reduce((collection, participant) => {\n const existingParticipant = findParticipant(participant, this.participants || []) || {};\n\n const delta = generateDelta(existingParticipant.status, participant.status);\n\n const changed = Object.keys(delta).length > 0;\n\n if (changed) {\n collection.push({\n person: participant.person,\n delta,\n });\n }\n\n return collection;\n }, []);\n }\n\n /**\n *\n * @param {Object} participants new participants object\n * @param {boolen} deltaParticpantFlag delta event\n * @returns {Array} updatedParticipants\n * @memberof LocusInfo\n */\n updateParticipants(participants: object) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS,\n {\n participants,\n recordingId: this.parsedLocus.controls && this.parsedLocus.controls.record?.modifiedBy,\n selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,\n selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,\n hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,\n }\n );\n }\n\n /**\n * @param {Object} controls\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateControls(controls: object) {\n if (controls && !isEqual(this.controls, controls)) {\n this.parsedLocus.controls = ControlsUtils.parse(controls);\n const {\n updates: {\n hasRecordingChanged,\n hasRecordingPausedChanged,\n hasMeetingContainerChanged,\n hasTranscribeChanged,\n hasEntryExitToneChanged,\n },\n current,\n } = ControlsUtils.getControls(this.controls, controls);\n\n if (hasRecordingChanged || hasRecordingPausedChanged) {\n let state = null;\n\n if (hasRecordingPausedChanged) {\n if (current.record.paused) {\n state = RECORDING_STATE.PAUSED;\n } else {\n // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.\n state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;\n }\n } else if (hasRecordingChanged) {\n state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\n {\n state,\n modifiedBy: current.record.modifiedBy,\n lastModified: current.record.lastModified,\n }\n );\n }\n\n if (hasMeetingContainerChanged) {\n const {meetingContainerUrl} = current.meetingContainer;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\n {\n meetingContainerUrl,\n }\n );\n }\n\n if (hasTranscribeChanged) {\n const {transcribing, caption} = current.transcribe;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\n {\n transcribing,\n caption,\n }\n );\n }\n\n if (hasEntryExitToneChanged) {\n const {entryExitTone} = current;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,\n {\n entryExitTone,\n }\n );\n\n this.updateMeeting({entryExitTone});\n }\n\n this.controls = controls;\n }\n }\n\n /**\n * @param {String} conversationUrl\n * @param {Object} info\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateConversationUrl(conversationUrl: string, info: any) {\n if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {\n this.conversationUrl = conversationUrl;\n this.updateMeeting({conversationUrl});\n } else if (\n info &&\n info.conversationUrl &&\n !isEqual(this.conversationUrl, info.conversationUrl)\n ) {\n this.conversationUrl = info.conversationUrl;\n this.updateMeeting({conversationUrl: info.conversationUrl});\n }\n }\n\n /**\n * @param {Object} created\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateCreated(created: object) {\n if (created && !isEqual(this.created, created)) {\n this.created = created;\n }\n }\n\n /**\n * @param {Object} services\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateServices(services: Record<'breakout' | 'record', {url: string}>) {\n if (services && !isEqual(this.services, services)) {\n this.services = services;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateServices',\n },\n LOCUSINFO.EVENTS.LINKS_SERVICES,\n {\n services,\n }\n );\n }\n }\n\n /**\n * @param {Object} fullState\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateFullState(fullState: object) {\n if (fullState && !isEqual(this.fullState, fullState)) {\n const result = FullState.getFullState(this.fullState, fullState);\n\n this.updateMeeting(result.current);\n\n if (result.updates.meetingStateChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE,\n {\n previousState: result.previous && result.previous.meetingState,\n currentState: result.current.meetingState,\n }\n );\n }\n\n if (result.updates.meetingTypeChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE,\n {\n type: result.current.type,\n }\n );\n }\n this.parsedLocus.fullState = result.current;\n this.fullState = fullState;\n }\n }\n\n /**\n * handles when the locus.host is updated\n * @param {Object} host the locus.host property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_host\n */\n updateHostInfo(host: object) {\n if (host && !isEqual(this.host, host)) {\n const parsedHosts = HostUtils.getHosts(this.host, host);\n\n this.updateMeeting(parsedHosts.current);\n this.parsedLocus.host = parsedHosts.current;\n if (parsedHosts.updates.isNewHost) {\n this.compareAndUpdateFlags.compareSelfAndHost = true;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateHostInfo',\n },\n EVENTS.LOCUS_INFO_UPDATE_HOST,\n {\n newHost: parsedHosts.current,\n oldHost: parsedHosts.previous,\n }\n );\n }\n this.host = host;\n } else {\n this.compareAndUpdateFlags.compareSelfAndHost = false;\n }\n }\n\n /**\n * @param {Object} info\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMeetingInfo(info: object, self?: object) {\n if (info && !isEqual(this.info, info)) {\n const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];\n const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);\n const parsedInfo = InfoUtils.getInfos(this.parsedLocus.info, info, roles, isJoined);\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,\n {info: parsedInfo.current, self}\n );\n\n if (parsedInfo.updates.isLocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_LOCKED,\n info\n );\n }\n if (parsedInfo.updates.isUnlocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_UNLOCKED,\n info\n );\n }\n\n this.info = info;\n this.parsedLocus.info = parsedInfo.current;\n // Parses the info and adds necessary values\n this.updateMeeting(parsedInfo.current);\n }\n }\n\n /**\n * @param {Object} embeddedApps\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateEmbeddedApps(embeddedApps: object) {\n // don't do anything if the arrays of apps haven't changed significantly\n if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {\n return;\n }\n\n const parsedEmbeddedApps = EmbeddedAppsUtils.parse(embeddedApps);\n\n this.updateMeeting({embeddedApps: parsedEmbeddedApps});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateEmbeddedApps',\n },\n LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED,\n parsedEmbeddedApps\n );\n this.embeddedApps = embeddedApps;\n }\n\n /**\n * handles when the locus.mediaShares is updated\n * @param {Object} mediaShares the locus.mediaShares property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_media_shares\n */\n updateMediaShares(mediaShares: object) {\n if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {\n const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);\n\n this.updateMeeting(parsedMediaShares.current);\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMediaShares',\n },\n EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,\n {\n current: parsedMediaShares.current,\n previous: parsedMediaShares.previous,\n }\n );\n this.parsedLocus.mediaShares = parsedMediaShares.current;\n this.mediaShares = mediaShares;\n }\n }\n\n /**\n * @param {String} participantsUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateParticipantsUrl(participantsUrl: string) {\n if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {\n this.participantsUrl = participantsUrl;\n }\n }\n\n /**\n * @param {Object} replace\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateReplace(replace: object) {\n if (replace && !isEqual(this.replace, replace)) {\n this.replace = replace;\n }\n }\n\n /**\n * handles when the locus.self is updated\n * @param {Object} self the locus.mediaShares property\n * @param {Array} participants the locus.participants property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self\n */\n updateSelf(self: any, participants: Array<any>) {\n // @ts-ignore - check where this.self come from\n if (self && !isEqual(this.self, self)) {\n // @ts-ignore\n const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);\n\n this.updateMeeting(parsedSelves.current);\n this.parsedLocus.self = parsedSelves.current;\n\n const element = this.parsedLocus.states[this.parsedLocus.states.length - 1];\n\n if (element !== parsedSelves.current.state) {\n this.parsedLocus.states.push(parsedSelves.current.state);\n }\n\n // TODO: check if we need to save the sipUri here as well\n // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));\n const result = SelfUtils.getSipUrl(\n this.getLocusPartner(participants, self),\n this.parsedLocus.fullState.type,\n this.parsedLocus.info.sipUri\n );\n\n if (result.sipUri) {\n this.updateMeeting(result);\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.compareAndUpdateFlags.compareHostAndSelf = true;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n\n if (parsedSelves.updates.layoutChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED,\n {layout: parsedSelves.current.layout}\n );\n }\n\n if (parsedSelves.updates.isMediaInactiveOrReleased) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.DISCONNECT_DUE_TO_INACTIVITY,\n {reason: self.reason}\n );\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED,\n self\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.isMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequestedByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED,\n {}\n );\n }\n if (parsedSelves.updates.isUserUnadmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST,\n self\n );\n }\n if (parsedSelves.updates.isUserAdmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST,\n self\n );\n }\n\n if (parsedSelves.updates.isMediaInactive) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n // @ts-ignore\n LOCUSINFO.EVENTS.MEDIA_INACTIVITY,\n SelfUtils.getMediaStatus(self.mediaSessions)\n );\n }\n\n if (\n parsedSelves.updates.audioStateChange ||\n parsedSelves.updates.videoStateChange ||\n parsedSelves.updates.shareStateChange\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE,\n {\n audioStatus: parsedSelves.current.currentMediaStatus?.audio,\n videoStatus: parsedSelves.current.currentMediaStatus?.video,\n shareStatus: parsedSelves.current.currentMediaStatus?.share,\n }\n );\n }\n\n if (parsedSelves.updates.isUserObserving) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_OBSERVING\n );\n }\n\n if (parsedSelves.updates.canNotViewTheParticipantListChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE,\n {canNotViewTheParticipantList: parsedSelves.current.canNotViewTheParticipantList}\n );\n }\n\n if (parsedSelves.updates.isSharingBlockedChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE,\n {isSharingBlocked: parsedSelves.current.isSharingBlocked}\n );\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n EVENTS.LOCUS_INFO_UPDATE_SELF,\n {\n oldSelf: parsedSelves.previous,\n newSelf: parsedSelves.current,\n }\n );\n this.parsedLocus.self = parsedSelves.current;\n // @ts-ignore\n this.self = self;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n }\n\n /**\n * handles when the locus.url is updated\n * @param {String} url\n * @returns {undefined}\n * emits internal event locus_info_update_url\n */\n updateLocusUrl(url: string) {\n if (url && this.url !== url) {\n this.url = url;\n this.updateMeeting({locusUrl: url});\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateLocusUrl',\n },\n EVENTS.LOCUS_INFO_UPDATE_URL,\n url\n );\n }\n }\n\n /**\n * @param {String} aclUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateAclUrl(aclUrl: string) {\n if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {\n this.aclUrl = aclUrl;\n }\n }\n\n /**\n * @param {Number} baseSequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateBasequence(baseSequence: number) {\n if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {\n this.baseSequence = baseSequence;\n }\n }\n\n /**\n * @param {Number} sequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateSequence(sequence: number) {\n if (sequence && !isEqual(this.sequence, sequence)) {\n this.sequence = sequence;\n }\n }\n\n /**\n * @param {Object} membership\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMemberShip(membership: object) {\n if (membership && !isEqual(this.membership, membership)) {\n this.membership = membership;\n }\n }\n\n /**\n * @param {Array} identities\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateIdentifiers(identities: Array<any>) {\n if (identities && !isEqual(this.identities, identities)) {\n this.identities = identities;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_eventsScope","_constants","_metrics","_config","_infoUtils","_fullState","_selfUtils","_hostUtils","_controlsUtils","_embeddedAppsUtils","_mediaSharesUtils","_parser","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","LocusInfo","_EventsScope","_inherits2","_super","updateMeeting","webex","meetingId","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","parsedLocus","states","emitChange","compareAndUpdateFlags","locusParser","LocusDeltaParser","_createClass2","key","value","applyLocusDeltaData","action","locus","meeting","_this2","_LocusDeltaParser$loc","loci","DESYNC","USE_CURRENT","USE_INCOMING","locusInfo","onDeltaLocus","locusDesync","needToGetFullLocus","meetingRequest","getFullLocus","desync","locusUrl","then","res","onFullLocus","body","resume","LoggerProxy","logger","info","concat","handleLocusDelta","_this3","onDeltaAction","parsedLoci","onDeltaEvent","init","_locus$links","length","undefined","created","scheduledMeeting","participantsUrl","replaces","aclUrl","baseSequence","sequence","membership","identities","participants","deltaParticipants","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","updateLocusUrl","url","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","self","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","initialSetup","parse","data","eventType","LOCUSEVENT","PARTICIPANT_JOIN","PARTICIPANT_LEFT","CONTROLS_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","SELF_CHANGED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_DECLINED","FLOOR_GRANTED","FLOOR_RELEASED","DIFFERENCE","emitScoped","scope","eventName","args","emit","error","updateParticipantDeltas","updateLocusInfo","isMeetingActive","handleOneOnOneEvent","workingCopy","type","_CALL_","_SIP_BRIDGE_","file","function","EVENTS","REMOTE_RESPONSE","remoteDeclined","remoteAnswered","_locus$links2","updateCreated","updateParticipantsUrl","updateReplace","replace","updateAclUrl","updateBasequence","updateSequence","updateMemberShip","updateIdentifiers","compareAndUpdate","getLocusPartner","find","participant","identity","_USER_","removed","partner","state","LOCUS","STATE","INACTIVE","warn","Metrics","postEvent","event","REMOTE_ENDED","DESTROY_MEETING","reason","CALL_REMOVED_REASON","CALL_INACTIVE","shouldLeave","MEETING_STATE","STATES","LEFT","DECLINED","NOTIFIED","JOINED","PARTNER_LEFT","joinedWith","_LEFT_","IDLE","SELF_LEFT","_MEETING_","TERMINATING","MEETING_REMOVED_REASON","MEETING_INACTIVE_TERMINATING","FULLSTATE_REMOVED","SELF_REMOVED","compareSelfAndHost","compareHostAndSelf","_this$parsedLocus$hos","selfIdentity","hostId","moderator","LOCUS_INFO_CAN_ASSIGN_HOST","canAssignHost","_this4","findParticipant","collection","item","person","id","generateDelta","prevState","newState","deltas","audioStatus","videoSlidesStatus","videoStatus","_keys","forEach","reduce","existingParticipant","delta","status","changed","push","_this$parsedLocus$con","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","_isEqual2","ControlsUtils","_ControlsUtils$getCon","getControls","_ControlsUtils$getCon2","updates","hasRecordingChanged","hasRecordingPausedChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasEntryExitToneChanged","current","paused","RECORDING_STATE","PAUSED","recording","RESUMED","RECORDING","LOCUSINFO","CONTROLS_RECORDING_UPDATED","lastModified","meetingContainerUrl","meetingContainer","CONTROLS_MEETING_CONTAINER_UPDATED","_current$transcribe","transcribe","transcribing","caption","CONTROLS_MEETING_TRANSCRIBE_UPDATED","entryExitTone","CONTROLS_ENTRY_EXIT_TONE_UPDATED","LINKS_SERVICES","FullState","getFullState","meetingStateChangedTo","FULL_STATE_MEETING_STATE_CHANGE","previousState","previous","meetingState","currentState","meetingTypeChangedTo","FULL_STATE_TYPE_UPDATE","parsedHosts","HostUtils","getHosts","isNewHost","LOCUS_INFO_UPDATE_HOST","newHost","oldHost","_this$parsedLocus$sel","roles","SelfUtils","getRoles","isJoined","parsedInfo","InfoUtils","getInfos","MEETING_INFO_UPDATED","isLocked","MEETING_LOCKED","isUnlocked","MEETING_UNLOCKED","EmbeddedAppsUtils","areSimilar","parsedEmbeddedApps","EMBEDDED_APPS_UPDATED","parsedMediaShares","MediaSharesUtils","getMediaShares","LOCUS_INFO_UPDATE_MEDIA_SHARES","parsedSelves","getSelves","internal","device","element","getSipUrl","sipUri","moderatorChanged","layoutChanged","CONTROLS_MEETING_LAYOUT_UPDATED","layout","isMediaInactiveOrReleased","DISCONNECT_DUE_TO_INACTIVITY","SELF_MODERATOR_CHANGED","localAudioUnmuteRequiredByServer","LOCAL_UNMUTE_REQUIRED","muted","remoteMuted","unmuteAllowed","isMutedByOthersChanged","SELF_REMOTE_MUTE_STATUS_UPDATED","localAudioUnmuteRequestedByServer","LOCAL_UNMUTE_REQUESTED","isUserUnadmitted","SELF_UNADMITTED_GUEST","isUserAdmitted","SELF_ADMITTED_GUEST","isMediaInactive","MEDIA_INACTIVITY","getMediaStatus","mediaSessions","audioStateChange","videoStateChange","shareStateChange","_parsedSelves$current","_parsedSelves$current2","_parsedSelves$current3","MEDIA_STATUS_CHANGE","currentMediaStatus","audio","video","shareStatus","share","isUserObserving","SELF_OBSERVING","canNotViewTheParticipantListChanged","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","canNotViewTheParticipantList","isSharingBlockedChanged","SELF_IS_SHARING_BLOCKED_CHANGE","isSharingBlocked","LOCUS_INFO_UPDATE_SELF","oldSelf","newSelf","LOCUS_INFO_UPDATE_URL","EventsScope","exports"],"sources":["index.ts"],"sourcesContent":["import {isEqual} from 'lodash';\r\n\r\nimport LoggerProxy from '../common/logs/logger-proxy';\r\nimport EventsScope from '../common/events/events-scope';\r\nimport {\r\n EVENTS,\r\n LOCUSEVENT,\r\n _USER_,\r\n _CALL_,\r\n _SIP_BRIDGE_,\r\n MEETING_STATE,\r\n _MEETING_,\r\n LOCUSINFO,\r\n LOCUS,\r\n _LEFT_,\r\n MEETING_REMOVED_REASON,\r\n CALL_REMOVED_REASON,\r\n RECORDING_STATE,\r\n} from '../constants';\r\nimport Metrics from '../metrics';\r\nimport {eventType} from '../metrics/config';\r\nimport InfoUtils from './infoUtils';\r\nimport FullState from './fullState';\r\nimport SelfUtils from './selfUtils';\r\nimport HostUtils from './hostUtils';\r\nimport ControlsUtils from './controlsUtils';\r\nimport EmbeddedAppsUtils from './embeddedAppsUtils';\r\nimport MediaSharesUtils from './mediaSharesUtils';\r\nimport LocusDeltaParser from './parser';\r\n\r\n/**\r\n * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object\r\n * @export\r\n * @private\r\n * @class LocusInfo\r\n */\r\nexport default class LocusInfo extends EventsScope {\r\n compareAndUpdateFlags: any;\r\n emitChange: any;\r\n locusParser: any;\r\n meetingId: any;\r\n parsedLocus: any;\r\n updateMeeting: any;\r\n webex: any;\r\n aclUrl: any;\r\n baseSequence: any;\r\n created: any;\r\n deltaParticipants: any;\r\n identities: any;\r\n membership: any;\r\n participants: any;\r\n participantsUrl: any;\r\n replaces: any;\r\n scheduledMeeting: any;\r\n sequence: any;\r\n controls: any;\r\n conversationUrl: any;\r\n embeddedApps: any;\r\n fullState: any;\r\n host: any;\r\n info: any;\r\n mediaShares: any;\r\n replace: any;\r\n url: any;\r\n services: any;\r\n\r\n constructor(updateMeeting, webex, meetingId) {\r\n super();\r\n this.parsedLocus = {\r\n states: [],\r\n };\r\n this.webex = webex;\r\n this.emitChange = false;\r\n this.compareAndUpdateFlags = {};\r\n this.meetingId = meetingId;\r\n this.updateMeeting = updateMeeting;\r\n this.locusParser = new LocusDeltaParser();\r\n }\r\n\r\n /**\r\n * Apply locus delta data to meeting\r\n * @param {string} action Locus delta action\r\n * @param {Locus} locus\r\n * @param {Meeting} meeting\r\n * @returns {undefined}\r\n */\r\n applyLocusDeltaData(action: string, locus: any, meeting: any) {\r\n const {DESYNC, USE_CURRENT, USE_INCOMING} = LocusDeltaParser.loci;\r\n\r\n switch (action) {\r\n case USE_INCOMING:\r\n meeting.locusInfo.onDeltaLocus(locus);\r\n break;\r\n case USE_CURRENT:\r\n meeting.locusDesync = false;\r\n meeting.needToGetFullLocus = false;\r\n break;\r\n case DESYNC:\r\n meeting.meetingRequest\r\n .getFullLocus({\r\n desync: true,\r\n locusUrl: meeting.locusUrl,\r\n })\r\n .then((res) => {\r\n meeting.locusInfo.onFullLocus(res.body);\r\n // Notify parser to resume processing delta events\r\n // now that we have full locus from DESYNC.\r\n this.locusParser.resume();\r\n });\r\n break;\r\n default:\r\n LoggerProxy.logger.info(\r\n `Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ${action}`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Adds locus delta to parser's queue\r\n * and registers a function handler\r\n * to recieve parsed actions from queue.\r\n * @param {Locus} locus\r\n * @param {Meeting} meeting\r\n * @returns {undefined}\r\n */\r\n handleLocusDelta(locus: any, meeting: any) {\r\n // register a function to process delta actions\r\n if (!this.locusParser.onDeltaAction) {\r\n // delta action, along with associated loci\r\n // is passed into the function.\r\n this.locusParser.onDeltaAction = (action, parsedLoci) => {\r\n this.applyLocusDeltaData(action, parsedLoci, meeting);\r\n };\r\n }\r\n // queue delta event with parser\r\n this.locusParser.onDeltaEvent(locus);\r\n }\r\n\r\n /**\r\n * @param {Locus} locus\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n init(locus: any = {}) {\r\n this.created = locus.created || null;\r\n this.scheduledMeeting = locus.meeting || null;\r\n this.participantsUrl = locus.participantsUrl || null;\r\n this.replaces = locus.replaces || null;\r\n this.aclUrl = locus.aclUrl || null;\r\n this.baseSequence = locus.baseSequence || null;\r\n this.sequence = locus.sequence || null;\r\n this.membership = locus.membership || null;\r\n this.identities = locus.identities || null;\r\n this.participants = locus.participants || null;\r\n\r\n /**\r\n * Stores the delta values for a changed participant.\r\n *\r\n * @typedef {Object} DeltaParticipant\r\n * @property {Record<string, boolean>} delta - Contains changed streams.\r\n * @property {Object} person - Contains person data.\r\n */\r\n\r\n /**\r\n * Stored participant changes between the last event and the current event.\r\n * All previously stored events are overwritten between events.\r\n *\r\n * @instance\r\n * @type {Array<DeltaParticipant>}\r\n * @private\r\n * @member LocusInfo\r\n */\r\n this.deltaParticipants = [];\r\n\r\n // above section only updates the locusInfo object\r\n // The below section makes sure it updates the locusInfo as well as updates the meeting object\r\n this.updateParticipants(locus.participants);\r\n // For 1:1 space meeting the conversation Url does not exist in locus.conversation\r\n this.updateConversationUrl(locus.conversationUrl, locus.info);\r\n this.updateControls(locus.controls);\r\n this.updateLocusUrl(locus.url);\r\n this.updateFullState(locus.fullState);\r\n this.updateMeetingInfo(locus.info);\r\n this.updateEmbeddedApps(locus.embeddedApps);\r\n // self and participants generate sipUrl for 1:1 meeting\r\n this.updateSelf(locus.self, locus.participants);\r\n this.updateHostInfo(locus.host);\r\n this.updateMediaShares(locus.mediaShares);\r\n this.updateServices(locus.links?.services);\r\n }\r\n\r\n /**\r\n * @param {Object} locus\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n initialSetup(locus: object) {\r\n this.onFullLocus(locus);\r\n\r\n // Change it to true after it receives it first locus object\r\n this.emitChange = true;\r\n }\r\n\r\n /**\r\n * @param {Meeting} meeting\r\n * @param {Object} data\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n parse(meeting: any, data: any) {\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n const {eventType} = data;\r\n\r\n LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);\r\n\r\n switch (eventType) {\r\n case LOCUSEVENT.PARTICIPANT_JOIN:\r\n case LOCUSEVENT.PARTICIPANT_LEFT:\r\n case LOCUSEVENT.CONTROLS_UPDATED:\r\n case LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:\r\n case LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:\r\n case LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:\r\n case LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:\r\n case LOCUSEVENT.SELF_CHANGED:\r\n case LOCUSEVENT.PARTICIPANT_UPDATED:\r\n case LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:\r\n case LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:\r\n case LOCUSEVENT.PARTICIPANT_DECLINED:\r\n case LOCUSEVENT.FLOOR_GRANTED:\r\n case LOCUSEVENT.FLOOR_RELEASED:\r\n this.onFullLocus(data.locus, eventType);\r\n break;\r\n case LOCUSEVENT.DIFFERENCE:\r\n this.handleLocusDelta(data.locus, meeting);\r\n break;\r\n\r\n default:\r\n // Why will there be a event with no eventType ????\r\n // we may not need this, we can get full locus\r\n this.handleLocusDelta(data.locus, meeting);\r\n }\r\n }\r\n\r\n /**\r\n * @param {String} scope\r\n * @param {String} eventName\r\n * @param {Array} args\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n emitScoped(scope?: any, eventName?: string, args?: any) {\r\n return this.emit(scope, eventName, args);\r\n }\r\n\r\n /**\r\n * updates the locus with full locus object\r\n * @param {object} locus locus object\r\n * @param {string} eventType particulat locus event\r\n * @returns {object} null\r\n * @memberof LocusInfo\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n onFullLocus(locus: any, eventType?: string) {\r\n if (!locus) {\r\n LoggerProxy.logger.error(\r\n 'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'\r\n );\r\n }\r\n this.updateParticipantDeltas(locus.participants);\r\n this.scheduledMeeting = locus.meeting || null;\r\n this.participants = locus.participants;\r\n this.updateLocusInfo(locus);\r\n this.updateParticipants(locus.participants);\r\n this.isMeetingActive();\r\n this.handleOneOnOneEvent(eventType);\r\n this.updateEmbeddedApps(locus.embeddedApps);\r\n // set current (working copy) for parser\r\n this.locusParser.workingCopy = locus;\r\n }\r\n\r\n // used for ringing stops on one on one\r\n /**\r\n * @param {String} eventType\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n handleOneOnOneEvent(eventType: string) {\r\n if (\r\n this.parsedLocus.fullState.type === _CALL_ ||\r\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\r\n ) {\r\n // for 1:1 bob calls alice and alice declines, notify the meeting state\r\n if (eventType === LOCUSEVENT.PARTICIPANT_DECLINED) {\r\n // trigger the event for stop ringing\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'handleOneonOneEvent',\r\n },\r\n EVENTS.REMOTE_RESPONSE,\r\n {\r\n remoteDeclined: true,\r\n remoteAnswered: false,\r\n }\r\n );\r\n }\r\n // for 1:1 bob calls alice and alice answers, notify the meeting state\r\n if (eventType === LOCUSEVENT.PARTICIPANT_JOIN) {\r\n // trigger the event for stop ringing\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'handleOneonOneEvent',\r\n },\r\n EVENTS.REMOTE_RESPONSE,\r\n {\r\n remoteDeclined: false,\r\n remoteAnswered: true,\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param {Object} locus\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n onDeltaLocus(locus: any) {\r\n this.updateLocusInfo(locus);\r\n this.updateParticipants(locus.participants);\r\n this.isMeetingActive();\r\n }\r\n\r\n /**\r\n * @param {Object} locus\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateLocusInfo(locus: any) {\r\n this.updateControls(locus.controls);\r\n this.updateConversationUrl(locus.conversationUrl, locus.info);\r\n this.updateCreated(locus.created);\r\n this.updateFullState(locus.fullState);\r\n this.updateHostInfo(locus.host);\r\n this.updateMeetingInfo(locus.info, locus.self);\r\n this.updateMediaShares(locus.mediaShares);\r\n this.updateParticipantsUrl(locus.participantsUrl);\r\n this.updateReplace(locus.replace);\r\n this.updateSelf(locus.self, locus.participants);\r\n this.updateLocusUrl(locus.url);\r\n this.updateAclUrl(locus.aclUrl);\r\n this.updateBasequence(locus.baseSequence);\r\n this.updateSequence(locus.sequence);\r\n this.updateMemberShip(locus.membership);\r\n this.updateIdentifiers(locus.identities);\r\n this.updateEmbeddedApps(locus.embeddedApps);\r\n this.updateServices(locus.links?.services);\r\n this.compareAndUpdate();\r\n // update which required to compare different objects from locus\r\n }\r\n\r\n /**\r\n * @param {Array} participants\r\n * @param {Object} self\r\n * @returns {Array}\r\n * @memberof LocusInfo\r\n */\r\n getLocusPartner(participants: Array<any>, self: any) {\r\n if (!participants || participants.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n participants.find(\r\n (participant) =>\r\n self &&\r\n participant.identity !== self.identity &&\r\n (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))\r\n // @ts-ignore\r\n ) || this.partner\r\n );\r\n }\r\n\r\n // TODO: all the leave states need to be checked\r\n /**\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n isMeetingActive() {\r\n if (\r\n this.parsedLocus.fullState.type === _CALL_ ||\r\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\r\n ) {\r\n // @ts-ignore\r\n const partner = this.getLocusPartner(this.participants, this.self);\r\n\r\n this.updateMeeting({partner});\r\n\r\n // Check if guest user needs to be checked here\r\n\r\n // 1) when bob declines call from bob, (bob='DECLINED')\r\n // 2) When alice rejects call to bob , (bob='NOTIFIED')\r\n\r\n // When we dont add MEDIA for condition 2. The state of bob='IDLE'\r\n\r\n if (this.fullState && this.fullState.state === LOCUS.STATE.INACTIVE) {\r\n // TODO: update the meeting state\r\n LoggerProxy.logger.warn(\r\n 'Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.'\r\n );\r\n Metrics.postEvent({\r\n event: eventType.REMOTE_ENDED,\r\n meetingId: this.meetingId,\r\n });\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'isMeetingActive',\r\n },\r\n EVENTS.DESTROY_MEETING,\r\n {\r\n reason: CALL_REMOVED_REASON.CALL_INACTIVE,\r\n shouldLeave: false,\r\n }\r\n );\r\n } else if (\r\n partner.state === MEETING_STATE.STATES.LEFT &&\r\n this.parsedLocus.self &&\r\n (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||\r\n this.parsedLocus.self.state === MEETING_STATE.STATES.NOTIFIED ||\r\n this.parsedLocus.self.state === MEETING_STATE.STATES.JOINED)\r\n ) {\r\n Metrics.postEvent({\r\n event: eventType.REMOTE_ENDED,\r\n meetingId: this.meetingId,\r\n });\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'isMeetingActive',\r\n },\r\n EVENTS.DESTROY_MEETING,\r\n {\r\n reason: CALL_REMOVED_REASON.PARTNER_LEFT,\r\n shouldLeave:\r\n this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,\r\n }\r\n );\r\n } else if (\r\n this.parsedLocus.self &&\r\n this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&\r\n (partner.state === MEETING_STATE.STATES.LEFT ||\r\n partner.state === MEETING_STATE.STATES.DECLINED ||\r\n partner.state === MEETING_STATE.STATES.NOTIFIED ||\r\n partner.state === MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media\r\n ) {\r\n Metrics.postEvent({\r\n event: eventType.REMOTE_ENDED,\r\n meetingId: this.meetingId,\r\n });\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'isMeetingActive',\r\n },\r\n EVENTS.DESTROY_MEETING,\r\n {\r\n reason: CALL_REMOVED_REASON.SELF_LEFT,\r\n shouldLeave: false,\r\n }\r\n );\r\n }\r\n } else if (this.parsedLocus.fullState.type === _MEETING_) {\r\n if (\r\n this.fullState &&\r\n (this.fullState.state === LOCUS.STATE.INACTIVE ||\r\n // @ts-ignore\r\n this.fullState.state === LOCUS.STATE.TERMINATING)\r\n ) {\r\n LoggerProxy.logger.warn(\r\n 'Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating'\r\n );\r\n Metrics.postEvent({\r\n event: eventType.REMOTE_ENDED,\r\n meetingId: this.meetingId,\r\n });\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'isMeetingActive',\r\n },\r\n EVENTS.DESTROY_MEETING,\r\n {\r\n reason: MEETING_REMOVED_REASON.MEETING_INACTIVE_TERMINATING,\r\n shouldLeave: false,\r\n }\r\n );\r\n } else if (this.fullState && this.fullState.removed) {\r\n // user has been dropped from a meeting\r\n Metrics.postEvent({\r\n event: eventType.REMOTE_ENDED,\r\n meetingId: this.meetingId,\r\n });\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'isMeetingActive',\r\n },\r\n EVENTS.DESTROY_MEETING,\r\n {\r\n reason: MEETING_REMOVED_REASON.FULLSTATE_REMOVED,\r\n shouldLeave: false,\r\n }\r\n );\r\n }\r\n // If you are guest and you are removed from the meeting\r\n // You wont get any further events\r\n else if (this.parsedLocus.self && this.parsedLocus.self.removed) {\r\n // Check if we need to send an event\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'isMeetingActive',\r\n },\r\n EVENTS.DESTROY_MEETING,\r\n {\r\n reason: MEETING_REMOVED_REASON.SELF_REMOVED,\r\n shouldLeave: false,\r\n }\r\n );\r\n }\r\n } else {\r\n LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');\r\n }\r\n }\r\n\r\n /**\r\n * checks if the host permissions have changed while in the meeting\r\n * This would be the case if your role as host or moderator has been updated\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n compareAndUpdate() {\r\n // TODO: check with locus team on host and moderator doc\r\n // use host as a validator if needed\r\n if (\r\n this.compareAndUpdateFlags.compareSelfAndHost ||\r\n this.compareAndUpdateFlags.compareHostAndSelf\r\n ) {\r\n this.compareSelfAndHost();\r\n }\r\n }\r\n\r\n /**\r\n * compared the self object to check if the user has host permissions\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n compareSelfAndHost() {\r\n // In some cases the host info is not present but the moderator values changes from null to false so it triggers an update\r\n if (\r\n this.parsedLocus.self.selfIdentity === this.parsedLocus.host?.hostId &&\r\n this.parsedLocus.self.moderator\r\n ) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'compareSelfAndHost',\r\n },\r\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\r\n {\r\n canAssignHost: true,\r\n }\r\n );\r\n } else {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'compareSelfAndHost',\r\n },\r\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\r\n {\r\n canAssignHost: false,\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Update the deltaParticipants property of this object based on a list of\r\n * provided participants.\r\n *\r\n * @param {Array} [participants] - The participants to update against.\r\n * @returns {void}\r\n */\r\n updateParticipantDeltas(participants: Array<any> = []) {\r\n // Used to find a participant within a participants collection.\r\n const findParticipant = (participant, collection) =>\r\n collection.find((item) => item.person.id === participant.person.id);\r\n\r\n // Generates an object that indicates which state properties have changed.\r\n const generateDelta = (prevState: any = {}, newState: any = {}) => {\r\n // Setup deltas.\r\n const deltas = {\r\n audioStatus: prevState.audioStatus !== newState.audioStatus,\r\n videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,\r\n videoStatus: prevState.videoStatus !== newState.videoStatus,\r\n };\r\n\r\n // Clean the object\r\n Object.keys(deltas).forEach((key) => {\r\n if (deltas[key] !== true) {\r\n delete deltas[key];\r\n }\r\n });\r\n\r\n return deltas;\r\n };\r\n\r\n this.deltaParticipants = participants.reduce((collection, participant) => {\r\n const existingParticipant = findParticipant(participant, this.participants || []) || {};\r\n\r\n const delta = generateDelta(existingParticipant.status, participant.status);\r\n\r\n const changed = Object.keys(delta).length > 0;\r\n\r\n if (changed) {\r\n collection.push({\r\n person: participant.person,\r\n delta,\r\n });\r\n }\r\n\r\n return collection;\r\n }, []);\r\n }\r\n\r\n /**\r\n *\r\n * @param {Object} participants new participants object\r\n * @param {boolen} deltaParticpantFlag delta event\r\n * @returns {Array} updatedParticipants\r\n * @memberof LocusInfo\r\n */\r\n updateParticipants(participants: object) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateParticipants',\r\n },\r\n EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS,\r\n {\r\n participants,\r\n recordingId: this.parsedLocus.controls && this.parsedLocus.controls.record?.modifiedBy,\r\n selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,\r\n selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,\r\n hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param {Object} controls\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateControls(controls: object) {\r\n if (controls && !isEqual(this.controls, controls)) {\r\n this.parsedLocus.controls = ControlsUtils.parse(controls);\r\n const {\r\n updates: {\r\n hasRecordingChanged,\r\n hasRecordingPausedChanged,\r\n hasMeetingContainerChanged,\r\n hasTranscribeChanged,\r\n hasEntryExitToneChanged,\r\n },\r\n current,\r\n } = ControlsUtils.getControls(this.controls, controls);\r\n\r\n if (hasRecordingChanged || hasRecordingPausedChanged) {\r\n let state = null;\r\n\r\n if (hasRecordingPausedChanged) {\r\n if (current.record.paused) {\r\n state = RECORDING_STATE.PAUSED;\r\n } else {\r\n // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.\r\n state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;\r\n }\r\n } else if (hasRecordingChanged) {\r\n state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;\r\n }\r\n\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateControls',\r\n },\r\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\r\n {\r\n state,\r\n modifiedBy: current.record.modifiedBy,\r\n lastModified: current.record.lastModified,\r\n }\r\n );\r\n }\r\n\r\n if (hasMeetingContainerChanged) {\r\n const {meetingContainerUrl} = current.meetingContainer;\r\n\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateControls',\r\n },\r\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\r\n {\r\n meetingContainerUrl,\r\n }\r\n );\r\n }\r\n\r\n if (hasTranscribeChanged) {\r\n const {transcribing, caption} = current.transcribe;\r\n\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateControls',\r\n },\r\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\r\n {\r\n transcribing,\r\n caption,\r\n }\r\n );\r\n }\r\n\r\n if (hasEntryExitToneChanged) {\r\n const {entryExitTone} = current;\r\n\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateControls',\r\n },\r\n LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,\r\n {\r\n entryExitTone,\r\n }\r\n );\r\n\r\n this.updateMeeting({entryExitTone});\r\n }\r\n\r\n this.controls = controls;\r\n }\r\n }\r\n\r\n /**\r\n * @param {String} conversationUrl\r\n * @param {Object} info\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateConversationUrl(conversationUrl: string, info: any) {\r\n if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {\r\n this.conversationUrl = conversationUrl;\r\n this.updateMeeting({conversationUrl});\r\n } else if (\r\n info &&\r\n info.conversationUrl &&\r\n !isEqual(this.conversationUrl, info.conversationUrl)\r\n ) {\r\n this.conversationUrl = info.conversationUrl;\r\n this.updateMeeting({conversationUrl: info.conversationUrl});\r\n }\r\n }\r\n\r\n /**\r\n * @param {Object} created\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateCreated(created: object) {\r\n if (created && !isEqual(this.created, created)) {\r\n this.created = created;\r\n }\r\n }\r\n\r\n /**\r\n * @param {Object} services\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateServices(services: Record<'breakout' | 'record', {url: string}>) {\r\n if (services && !isEqual(this.services, services)) {\r\n this.services = services;\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateServices',\r\n },\r\n LOCUSINFO.EVENTS.LINKS_SERVICES,\r\n {\r\n services,\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * @param {Object} fullState\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateFullState(fullState: object) {\r\n if (fullState && !isEqual(this.fullState, fullState)) {\r\n const result = FullState.getFullState(this.fullState, fullState);\r\n\r\n this.updateMeeting(result.current);\r\n\r\n if (result.updates.meetingStateChangedTo) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateFullState',\r\n },\r\n LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE,\r\n {\r\n previousState: result.previous && result.previous.meetingState,\r\n currentState: result.current.meetingState,\r\n }\r\n );\r\n }\r\n\r\n if (result.updates.meetingTypeChangedTo) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateFullState',\r\n },\r\n LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE,\r\n {\r\n type: result.current.type,\r\n }\r\n );\r\n }\r\n this.parsedLocus.fullState = result.current;\r\n this.fullState = fullState;\r\n }\r\n }\r\n\r\n /**\r\n * handles when the locus.host is updated\r\n * @param {Object} host the locus.host property\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n * emits internal event locus_info_update_host\r\n */\r\n updateHostInfo(host: object) {\r\n if (host && !isEqual(this.host, host)) {\r\n const parsedHosts = HostUtils.getHosts(this.host, host);\r\n\r\n this.updateMeeting(parsedHosts.current);\r\n this.parsedLocus.host = parsedHosts.current;\r\n if (parsedHosts.updates.isNewHost) {\r\n this.compareAndUpdateFlags.compareSelfAndHost = true;\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateHostInfo',\r\n },\r\n EVENTS.LOCUS_INFO_UPDATE_HOST,\r\n {\r\n newHost: parsedHosts.current,\r\n oldHost: parsedHosts.previous,\r\n }\r\n );\r\n }\r\n this.host = host;\r\n } else {\r\n this.compareAndUpdateFlags.compareSelfAndHost = false;\r\n }\r\n }\r\n\r\n /**\r\n * @param {Object} info\r\n * @param {Object} self\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateMeetingInfo(info: object, self?: object) {\r\n if (info && !isEqual(this.info, info)) {\r\n const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];\r\n const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);\r\n const parsedInfo = InfoUtils.getInfos(this.parsedLocus.info, info, roles, isJoined);\r\n\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateMeetingInfo',\r\n },\r\n LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,\r\n {info: parsedInfo.current, self}\r\n );\r\n\r\n if (parsedInfo.updates.isLocked) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateMeetingInfo',\r\n },\r\n LOCUSINFO.EVENTS.MEETING_LOCKED,\r\n info\r\n );\r\n }\r\n if (parsedInfo.updates.isUnlocked) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateMeetingInfo',\r\n },\r\n LOCUSINFO.EVENTS.MEETING_UNLOCKED,\r\n info\r\n );\r\n }\r\n\r\n this.info = info;\r\n this.parsedLocus.info = parsedInfo.current;\r\n // Parses the info and adds necessary values\r\n this.updateMeeting(parsedInfo.current);\r\n }\r\n }\r\n\r\n /**\r\n * @param {Object} embeddedApps\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateEmbeddedApps(embeddedApps: object) {\r\n // don't do anything if the arrays of apps haven't changed significantly\r\n if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {\r\n return;\r\n }\r\n\r\n const parsedEmbeddedApps = EmbeddedAppsUtils.parse(embeddedApps);\r\n\r\n this.updateMeeting({embeddedApps: parsedEmbeddedApps});\r\n\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateEmbeddedApps',\r\n },\r\n LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED,\r\n parsedEmbeddedApps\r\n );\r\n this.embeddedApps = embeddedApps;\r\n }\r\n\r\n /**\r\n * handles when the locus.mediaShares is updated\r\n * @param {Object} mediaShares the locus.mediaShares property\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n * emits internal event locus_info_update_media_shares\r\n */\r\n updateMediaShares(mediaShares: object) {\r\n if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {\r\n const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);\r\n\r\n this.updateMeeting(parsedMediaShares.current);\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateMediaShares',\r\n },\r\n EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,\r\n {\r\n current: parsedMediaShares.current,\r\n previous: parsedMediaShares.previous,\r\n }\r\n );\r\n this.parsedLocus.mediaShares = parsedMediaShares.current;\r\n this.mediaShares = mediaShares;\r\n }\r\n }\r\n\r\n /**\r\n * @param {String} participantsUrl\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateParticipantsUrl(participantsUrl: string) {\r\n if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {\r\n this.participantsUrl = participantsUrl;\r\n }\r\n }\r\n\r\n /**\r\n * @param {Object} replace\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateReplace(replace: object) {\r\n if (replace && !isEqual(this.replace, replace)) {\r\n this.replace = replace;\r\n }\r\n }\r\n\r\n /**\r\n * handles when the locus.self is updated\r\n * @param {Object} self the locus.mediaShares property\r\n * @param {Array} participants the locus.participants property\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self\r\n */\r\n updateSelf(self: any, participants: Array<any>) {\r\n // @ts-ignore - check where this.self come from\r\n if (self && !isEqual(this.self, self)) {\r\n // @ts-ignore\r\n const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);\r\n\r\n this.updateMeeting(parsedSelves.current);\r\n this.parsedLocus.self = parsedSelves.current;\r\n\r\n const element = this.parsedLocus.states[this.parsedLocus.states.length - 1];\r\n\r\n if (element !== parsedSelves.current.state) {\r\n this.parsedLocus.states.push(parsedSelves.current.state);\r\n }\r\n\r\n // TODO: check if we need to save the sipUri here as well\r\n // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));\r\n const result = SelfUtils.getSipUrl(\r\n this.getLocusPartner(participants, self),\r\n this.parsedLocus.fullState.type,\r\n this.parsedLocus.info.sipUri\r\n );\r\n\r\n if (result.sipUri) {\r\n this.updateMeeting(result);\r\n }\r\n\r\n if (parsedSelves.updates.moderatorChanged) {\r\n this.compareAndUpdateFlags.compareHostAndSelf = true;\r\n } else {\r\n this.compareAndUpdateFlags.compareHostAndSelf = false;\r\n }\r\n\r\n if (parsedSelves.updates.layoutChanged) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED,\r\n {layout: parsedSelves.current.layout}\r\n );\r\n }\r\n\r\n if (parsedSelves.updates.isMediaInactiveOrReleased) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.DISCONNECT_DUE_TO_INACTIVITY,\r\n {reason: self.reason}\r\n );\r\n }\r\n\r\n if (parsedSelves.updates.moderatorChanged) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED,\r\n self\r\n );\r\n }\r\n if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED,\r\n {\r\n muted: parsedSelves.current.remoteMuted,\r\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\r\n }\r\n );\r\n }\r\n if (parsedSelves.updates.isMutedByOthersChanged) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED,\r\n {\r\n muted: parsedSelves.current.remoteMuted,\r\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\r\n }\r\n );\r\n }\r\n if (parsedSelves.updates.localAudioUnmuteRequestedByServer) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED,\r\n {}\r\n );\r\n }\r\n if (parsedSelves.updates.isUserUnadmitted) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST,\r\n self\r\n );\r\n }\r\n if (parsedSelves.updates.isUserAdmitted) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST,\r\n self\r\n );\r\n }\r\n\r\n if (parsedSelves.updates.isMediaInactive) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n // @ts-ignore\r\n LOCUSINFO.EVENTS.MEDIA_INACTIVITY,\r\n SelfUtils.getMediaStatus(self.mediaSessions)\r\n );\r\n }\r\n\r\n if (\r\n parsedSelves.updates.audioStateChange ||\r\n parsedSelves.updates.videoStateChange ||\r\n parsedSelves.updates.shareStateChange\r\n ) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE,\r\n {\r\n audioStatus: parsedSelves.current.currentMediaStatus?.audio,\r\n videoStatus: parsedSelves.current.currentMediaStatus?.video,\r\n shareStatus: parsedSelves.current.currentMediaStatus?.share,\r\n }\r\n );\r\n }\r\n\r\n if (parsedSelves.updates.isUserObserving) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.SELF_OBSERVING\r\n );\r\n }\r\n\r\n if (parsedSelves.updates.canNotViewTheParticipantListChanged) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE,\r\n {canNotViewTheParticipantList: parsedSelves.current.canNotViewTheParticipantList}\r\n );\r\n }\r\n\r\n if (parsedSelves.updates.isSharingBlockedChanged) {\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE,\r\n {isSharingBlocked: parsedSelves.current.isSharingBlocked}\r\n );\r\n }\r\n\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateSelf',\r\n },\r\n EVENTS.LOCUS_INFO_UPDATE_SELF,\r\n {\r\n oldSelf: parsedSelves.previous,\r\n newSelf: parsedSelves.current,\r\n }\r\n );\r\n this.parsedLocus.self = parsedSelves.current;\r\n // @ts-ignore\r\n this.self = self;\r\n } else {\r\n this.compareAndUpdateFlags.compareHostAndSelf = false;\r\n }\r\n }\r\n\r\n /**\r\n * handles when the locus.url is updated\r\n * @param {String} url\r\n * @returns {undefined}\r\n * emits internal event locus_info_update_url\r\n */\r\n updateLocusUrl(url: string) {\r\n if (url && this.url !== url) {\r\n this.url = url;\r\n this.updateMeeting({locusUrl: url});\r\n this.emitScoped(\r\n {\r\n file: 'locus-info',\r\n function: 'updateLocusUrl',\r\n },\r\n EVENTS.LOCUS_INFO_UPDATE_URL,\r\n url\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * @param {String} aclUrl\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateAclUrl(aclUrl: string) {\r\n if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {\r\n this.aclUrl = aclUrl;\r\n }\r\n }\r\n\r\n /**\r\n * @param {Number} baseSequence\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateBasequence(baseSequence: number) {\r\n if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {\r\n this.baseSequence = baseSequence;\r\n }\r\n }\r\n\r\n /**\r\n * @param {Number} sequence\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateSequence(sequence: number) {\r\n if (sequence && !isEqual(this.sequence, sequence)) {\r\n this.sequence = sequence;\r\n }\r\n }\r\n\r\n /**\r\n * @param {Object} membership\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateMemberShip(membership: object) {\r\n if (membership && !isEqual(this.membership, membership)) {\r\n this.membership = membership;\r\n }\r\n }\r\n\r\n /**\r\n * @param {Array} identities\r\n * @returns {undefined}\r\n * @memberof LocusInfo\r\n */\r\n updateIdentifiers(identities: Array<any>) {\r\n if (identities && !isEqual(this.identities, identities)) {\r\n this.identities = identities;\r\n }\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- declare const InfoUtils: any;
2
- export default InfoUtils;
1
+ declare const InfoUtils: any;
2
+ export default InfoUtils;
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","ownKeys","object","enumerableOnly","keys","_Object$keys2","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","InfoUtils","parse","info","roles","isJoined","undefined","parsed","policy","parsePolicy","moderator","parseModerator","coHost","parseCoHost","userDisplayHints","includes","SELF_ROLES","COHOST","MODERATOR","_keys","sipUri","meetingId","meetingNumber","parseDisplayHintSection","displayHintKey","displayHints","DISPLAY_HINTS","LOWER_SOMEONE_ELSES_HAND","isLocked","LOCK_STATUS_LOCKED","isUnlocked","LOCK_STATUS_UNLOCKED","getInfos","oldInfo","newInfo","previous","current","updates","_default","exports"],"sources":["infoUtils.ts"],"sourcesContent":["import {SELF_ROLES, DISPLAY_HINTS} from '../constants';\n\nconst InfoUtils: any = {};\n\nInfoUtils.parse = (info, roles, isJoined = true) => {\n const parsed: any = {\n policy: InfoUtils.parsePolicy(info),\n moderator: InfoUtils.parseModerator(info),\n coHost: InfoUtils.parseCoHost(info),\n };\n\n let userDisplayHints = isJoined ? {...parsed.policy} : {};\n\n if (roles.includes(SELF_ROLES.COHOST)) {\n userDisplayHints = {...userDisplayHints, ...parsed.coHost};\n }\n\n if (roles.includes(SELF_ROLES.MODERATOR)) {\n userDisplayHints = {...userDisplayHints, ...parsed.moderator};\n }\n\n parsed.userDisplayHints = Object.keys(userDisplayHints);\n\n if (info.sipUri) {\n parsed.sipUri = info.sipUri;\n }\n\n if (info.meetingId) {\n parsed.meetingNumber = info.meetingId;\n }\n\n return parsed;\n};\n\nInfoUtils.parseDisplayHintSection = (info, displayHintKey) => {\n const displayHints = {};\n\n if (\n info &&\n info.displayHints &&\n info.displayHints[displayHintKey] &&\n info.displayHints[displayHintKey].length > 0\n ) {\n info.displayHints[displayHintKey].forEach((key) => {\n displayHints[key] = true;\n });\n }\n\n return displayHints;\n};\n\nInfoUtils.parsePolicy = (info) => InfoUtils.parseDisplayHintSection(info, 'joined');\n\nInfoUtils.parseModerator = (info) => {\n const displayHints = InfoUtils.parseDisplayHintSection(info, 'moderator');\n\n return {...displayHints, [DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND]: true};\n};\n\nInfoUtils.parseCoHost = (info) => {\n const displayHints = InfoUtils.parseDisplayHintSection(info, 'coHost');\n\n return {...displayHints, [DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND]: true};\n};\n\nInfoUtils.isLocked = (policy) => policy.LOCK_STATUS_LOCKED || false;\n\nInfoUtils.isUnlocked = (policy) => policy.LOCK_STATUS_UNLOCKED || false;\n\nInfoUtils.getInfos = (oldInfo, newInfo, roles, isJoined) => {\n let previous = null;\n\n if (oldInfo) {\n previous = oldInfo;\n }\n const current = newInfo && InfoUtils.parse(newInfo, roles, isJoined);\n const updates: any = {};\n\n if (current) {\n current.isLocked = InfoUtils.isLocked(current.policy);\n current.isUnlocked = InfoUtils.isUnlocked(current.policy);\n\n if ((previous && previous.isUnlocked && current.isLocked) || (!previous && current.isLocked)) {\n updates.isLocked = current.isLocked;\n }\n if (\n (previous && previous.isLocked && current.isUnlocked) ||\n (!previous && current.isUnlocked)\n ) {\n updates.isUnlocked = current.isUnlocked;\n }\n }\n\n return {\n previous,\n current,\n updates,\n };\n};\n\nexport default InfoUtils;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","ownKeys","object","enumerableOnly","keys","_Object$keys2","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","InfoUtils","parse","info","roles","isJoined","undefined","parsed","policy","parsePolicy","moderator","parseModerator","coHost","parseCoHost","userDisplayHints","includes","SELF_ROLES","COHOST","MODERATOR","_keys","sipUri","meetingId","meetingNumber","parseDisplayHintSection","displayHintKey","displayHints","DISPLAY_HINTS","LOWER_SOMEONE_ELSES_HAND","isLocked","LOCK_STATUS_LOCKED","isUnlocked","LOCK_STATUS_UNLOCKED","getInfos","oldInfo","newInfo","previous","current","updates","_default","exports"],"sources":["infoUtils.ts"],"sourcesContent":["import {SELF_ROLES, DISPLAY_HINTS} from '../constants';\r\n\r\nconst InfoUtils: any = {};\r\n\r\nInfoUtils.parse = (info, roles, isJoined = true) => {\r\n const parsed: any = {\r\n policy: InfoUtils.parsePolicy(info),\r\n moderator: InfoUtils.parseModerator(info),\r\n coHost: InfoUtils.parseCoHost(info),\r\n };\r\n\r\n let userDisplayHints = isJoined ? {...parsed.policy} : {};\r\n\r\n if (roles.includes(SELF_ROLES.COHOST)) {\r\n userDisplayHints = {...userDisplayHints, ...parsed.coHost};\r\n }\r\n\r\n if (roles.includes(SELF_ROLES.MODERATOR)) {\r\n userDisplayHints = {...userDisplayHints, ...parsed.moderator};\r\n }\r\n\r\n parsed.userDisplayHints = Object.keys(userDisplayHints);\r\n\r\n if (info.sipUri) {\r\n parsed.sipUri = info.sipUri;\r\n }\r\n\r\n if (info.meetingId) {\r\n parsed.meetingNumber = info.meetingId;\r\n }\r\n\r\n return parsed;\r\n};\r\n\r\nInfoUtils.parseDisplayHintSection = (info, displayHintKey) => {\r\n const displayHints = {};\r\n\r\n if (\r\n info &&\r\n info.displayHints &&\r\n info.displayHints[displayHintKey] &&\r\n info.displayHints[displayHintKey].length > 0\r\n ) {\r\n info.displayHints[displayHintKey].forEach((key) => {\r\n displayHints[key] = true;\r\n });\r\n }\r\n\r\n return displayHints;\r\n};\r\n\r\nInfoUtils.parsePolicy = (info) => InfoUtils.parseDisplayHintSection(info, 'joined');\r\n\r\nInfoUtils.parseModerator = (info) => {\r\n const displayHints = InfoUtils.parseDisplayHintSection(info, 'moderator');\r\n\r\n return {...displayHints, [DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND]: true};\r\n};\r\n\r\nInfoUtils.parseCoHost = (info) => {\r\n const displayHints = InfoUtils.parseDisplayHintSection(info, 'coHost');\r\n\r\n return {...displayHints, [DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND]: true};\r\n};\r\n\r\nInfoUtils.isLocked = (policy) => policy.LOCK_STATUS_LOCKED || false;\r\n\r\nInfoUtils.isUnlocked = (policy) => policy.LOCK_STATUS_UNLOCKED || false;\r\n\r\nInfoUtils.getInfos = (oldInfo, newInfo, roles, isJoined) => {\r\n let previous = null;\r\n\r\n if (oldInfo) {\r\n previous = oldInfo;\r\n }\r\n const current = newInfo && InfoUtils.parse(newInfo, roles, isJoined);\r\n const updates: any = {};\r\n\r\n if (current) {\r\n current.isLocked = InfoUtils.isLocked(current.policy);\r\n current.isUnlocked = InfoUtils.isUnlocked(current.policy);\r\n\r\n if ((previous && previous.isUnlocked && current.isLocked) || (!previous && current.isLocked)) {\r\n updates.isLocked = current.isLocked;\r\n }\r\n if (\r\n (previous && previous.isLocked && current.isUnlocked) ||\r\n (!previous && current.isUnlocked)\r\n ) {\r\n updates.isUnlocked = current.isUnlocked;\r\n }\r\n }\r\n\r\n return {\r\n previous,\r\n current,\r\n updates,\r\n };\r\n};\r\n\r\nexport default InfoUtils;\r\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- declare const MediaSharesUtils: any;
2
- export default MediaSharesUtils;
1
+ declare const MediaSharesUtils: any;
2
+ export default MediaSharesUtils;