@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.20

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 (365) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +116 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/index.js +226 -0
  8. package/dist/breakouts/index.js.map +1 -0
  9. package/dist/common/browser-detection.js +1 -20
  10. package/dist/common/browser-detection.js.map +1 -1
  11. package/dist/common/collection.js +5 -20
  12. package/dist/common/collection.js.map +1 -1
  13. package/dist/common/config.js +0 -7
  14. package/dist/common/config.js.map +1 -1
  15. package/dist/common/errors/captcha-error.js +10 -24
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.js +11 -24
  18. package/dist/common/errors/intent-to-join.js.map +1 -1
  19. package/dist/common/errors/join-meeting.js +12 -25
  20. package/dist/common/errors/join-meeting.js.map +1 -1
  21. package/dist/common/errors/media.js +10 -24
  22. package/dist/common/errors/media.js.map +1 -1
  23. package/dist/common/errors/parameter.js +5 -33
  24. package/dist/common/errors/parameter.js.map +1 -1
  25. package/dist/common/errors/password-error.js +10 -24
  26. package/dist/common/errors/password-error.js.map +1 -1
  27. package/dist/common/errors/permission.js +9 -23
  28. package/dist/common/errors/permission.js.map +1 -1
  29. package/dist/common/errors/reconnection-in-progress.js +0 -17
  30. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  31. package/dist/common/errors/reconnection.js +10 -24
  32. package/dist/common/errors/reconnection.js.map +1 -1
  33. package/dist/common/errors/stats.js +10 -24
  34. package/dist/common/errors/stats.js.map +1 -1
  35. package/dist/common/errors/webex-errors.js +6 -41
  36. package/dist/common/errors/webex-errors.js.map +1 -1
  37. package/dist/common/errors/webex-meetings-error.js +5 -25
  38. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  39. package/dist/common/events/events-scope.js +0 -22
  40. package/dist/common/events/events-scope.js.map +1 -1
  41. package/dist/common/events/events.js +0 -23
  42. package/dist/common/events/events.js.map +1 -1
  43. package/dist/common/events/trigger-proxy.js +0 -12
  44. package/dist/common/events/trigger-proxy.js.map +1 -1
  45. package/dist/common/events/util.js +0 -15
  46. package/dist/common/events/util.js.map +1 -1
  47. package/dist/common/logs/logger-config.js +0 -4
  48. package/dist/common/logs/logger-config.js.map +1 -1
  49. package/dist/common/logs/logger-proxy.js +1 -8
  50. package/dist/common/logs/logger-proxy.js.map +1 -1
  51. package/dist/common/logs/request.js +37 -60
  52. package/dist/common/logs/request.js.map +1 -1
  53. package/dist/common/queue.js +4 -14
  54. package/dist/common/queue.js.map +1 -1
  55. package/dist/config.js +6 -6
  56. package/dist/config.js.map +1 -1
  57. package/dist/constants.js +88 -46
  58. package/dist/constants.js.map +1 -1
  59. package/dist/index.js +1 -17
  60. package/dist/index.js.map +1 -1
  61. package/dist/locus-info/controlsUtils.js +12 -29
  62. package/dist/locus-info/controlsUtils.js.map +1 -1
  63. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  64. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  65. package/dist/locus-info/fullState.js +0 -15
  66. package/dist/locus-info/fullState.js.map +1 -1
  67. package/dist/locus-info/hostUtils.js +4 -12
  68. package/dist/locus-info/hostUtils.js.map +1 -1
  69. package/dist/locus-info/index.js +184 -190
  70. package/dist/locus-info/index.js.map +1 -1
  71. package/dist/locus-info/infoUtils.js +3 -37
  72. package/dist/locus-info/infoUtils.js.map +1 -1
  73. package/dist/locus-info/mediaSharesUtils.js +12 -38
  74. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  75. package/dist/locus-info/parser.js +92 -118
  76. package/dist/locus-info/parser.js.map +1 -1
  77. package/dist/locus-info/selfUtils.js +34 -91
  78. package/dist/locus-info/selfUtils.js.map +1 -1
  79. package/dist/media/index.js +67 -111
  80. package/dist/media/index.js.map +1 -1
  81. package/dist/media/properties.js +80 -114
  82. package/dist/media/properties.js.map +1 -1
  83. package/dist/media/util.js +2 -9
  84. package/dist/media/util.js.map +1 -1
  85. package/dist/mediaQualityMetrics/config.js +10 -12
  86. package/dist/mediaQualityMetrics/config.js.map +1 -1
  87. package/dist/meeting/effectsState.js +125 -190
  88. package/dist/meeting/effectsState.js.map +1 -1
  89. package/dist/meeting/in-meeting-actions.js +5 -14
  90. package/dist/meeting/in-meeting-actions.js.map +1 -1
  91. package/dist/meeting/index.js +1692 -1925
  92. package/dist/meeting/index.js.map +1 -1
  93. package/dist/meeting/muteState.js +36 -77
  94. package/dist/meeting/muteState.js.map +1 -1
  95. package/dist/meeting/request.js +224 -230
  96. package/dist/meeting/request.js.map +1 -1
  97. package/dist/meeting/request.type.js +7 -0
  98. package/dist/meeting/request.type.js.map +1 -0
  99. package/dist/meeting/state.js +21 -31
  100. package/dist/meeting/state.js.map +1 -1
  101. package/dist/meeting/util.js +43 -215
  102. package/dist/meeting/util.js.map +1 -1
  103. package/dist/meeting-info/collection.js +6 -25
  104. package/dist/meeting-info/collection.js.map +1 -1
  105. package/dist/meeting-info/index.js +14 -32
  106. package/dist/meeting-info/index.js.map +1 -1
  107. package/dist/meeting-info/meeting-info-v2.js +193 -268
  108. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  109. package/dist/meeting-info/request.js +3 -15
  110. package/dist/meeting-info/request.js.map +1 -1
  111. package/dist/meeting-info/util.js +98 -183
  112. package/dist/meeting-info/util.js.map +1 -1
  113. package/dist/meeting-info/utilv2.js +137 -228
  114. package/dist/meeting-info/utilv2.js.map +1 -1
  115. package/dist/meetings/collection.js +5 -20
  116. package/dist/meetings/collection.js.map +1 -1
  117. package/dist/meetings/index.js +490 -560
  118. package/dist/meetings/index.js.map +1 -1
  119. package/dist/meetings/request.js +24 -41
  120. package/dist/meetings/request.js.map +1 -1
  121. package/dist/meetings/util.js +99 -155
  122. package/dist/meetings/util.js.map +1 -1
  123. package/dist/member/index.js +78 -86
  124. package/dist/member/index.js.map +1 -1
  125. package/dist/member/util.js +31 -68
  126. package/dist/member/util.js.map +1 -1
  127. package/dist/members/collection.js +3 -12
  128. package/dist/members/collection.js.map +1 -1
  129. package/dist/members/index.js +93 -200
  130. package/dist/members/index.js.map +1 -1
  131. package/dist/members/request.js +16 -39
  132. package/dist/members/request.js.map +1 -1
  133. package/dist/members/util.js +9 -38
  134. package/dist/members/util.js.map +1 -1
  135. package/dist/metrics/config.js +0 -2
  136. package/dist/metrics/config.js.map +1 -1
  137. package/dist/metrics/constants.js +1 -2
  138. package/dist/metrics/constants.js.map +1 -1
  139. package/dist/metrics/index.js +55 -135
  140. package/dist/metrics/index.js.map +1 -1
  141. package/dist/multistream/mediaRequestManager.js +57 -32
  142. package/dist/multistream/mediaRequestManager.js.map +1 -1
  143. package/dist/multistream/multistreamMedia.js +15 -21
  144. package/dist/multistream/multistreamMedia.js.map +1 -1
  145. package/dist/multistream/receiveSlot.js +10 -50
  146. package/dist/multistream/receiveSlot.js.map +1 -1
  147. package/dist/multistream/receiveSlotManager.js +45 -82
  148. package/dist/multistream/receiveSlotManager.js.map +1 -1
  149. package/dist/multistream/remoteMedia.js +18 -58
  150. package/dist/multistream/remoteMedia.js.map +1 -1
  151. package/dist/multistream/remoteMediaGroup.js +6 -40
  152. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  153. package/dist/multistream/remoteMediaManager.js +362 -416
  154. package/dist/multistream/remoteMediaManager.js.map +1 -1
  155. package/dist/networkQualityMonitor/index.js +36 -57
  156. package/dist/networkQualityMonitor/index.js.map +1 -1
  157. package/dist/personal-meeting-room/index.js +21 -45
  158. package/dist/personal-meeting-room/index.js.map +1 -1
  159. package/dist/personal-meeting-room/request.js +1 -31
  160. package/dist/personal-meeting-room/request.js.map +1 -1
  161. package/dist/personal-meeting-room/util.js +0 -13
  162. package/dist/personal-meeting-room/util.js.map +1 -1
  163. package/dist/reachability/index.js +138 -182
  164. package/dist/reachability/index.js.map +1 -1
  165. package/dist/reachability/request.js +3 -18
  166. package/dist/reachability/request.js.map +1 -1
  167. package/dist/reactions/constants.js +13 -0
  168. package/dist/reactions/constants.js.map +1 -0
  169. package/dist/reactions/reactions.js +109 -0
  170. package/dist/reactions/reactions.js.map +1 -0
  171. package/dist/reactions/reactions.type.js +36 -0
  172. package/dist/reactions/reactions.type.js.map +1 -0
  173. package/dist/reconnection-manager/index.js +322 -455
  174. package/dist/reconnection-manager/index.js.map +1 -1
  175. package/dist/recording-controller/enums.js +17 -0
  176. package/dist/recording-controller/enums.js.map +1 -0
  177. package/dist/recording-controller/index.js +343 -0
  178. package/dist/recording-controller/index.js.map +1 -0
  179. package/dist/recording-controller/util.js +63 -0
  180. package/dist/recording-controller/util.js.map +1 -0
  181. package/dist/roap/index.js +39 -64
  182. package/dist/roap/index.js.map +1 -1
  183. package/dist/roap/request.js +94 -113
  184. package/dist/roap/request.js.map +1 -1
  185. package/dist/roap/turnDiscovery.js +85 -94
  186. package/dist/roap/turnDiscovery.js.map +1 -1
  187. package/dist/statsAnalyzer/global.js +0 -2
  188. package/dist/statsAnalyzer/global.js.map +1 -1
  189. package/dist/statsAnalyzer/index.js +85 -175
  190. package/dist/statsAnalyzer/index.js.map +1 -1
  191. package/dist/statsAnalyzer/mqaUtil.js +72 -53
  192. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  193. package/dist/transcription/index.js +22 -47
  194. package/dist/transcription/index.js.map +1 -1
  195. package/internal-README.md +7 -6
  196. package/package.json +25 -20
  197. package/src/breakouts/README.md +190 -0
  198. package/src/breakouts/breakout.ts +110 -0
  199. package/src/breakouts/collection.ts +19 -0
  200. package/src/breakouts/index.ts +225 -0
  201. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  202. package/src/common/collection.ts +9 -7
  203. package/src/common/{config.js → config.ts} +1 -1
  204. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  205. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  206. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  207. package/src/common/errors/{media.js → media.ts} +11 -7
  208. package/src/common/errors/parameter.ts +11 -7
  209. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  210. package/src/common/errors/{permission.js → permission.ts} +10 -6
  211. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  212. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  213. package/src/common/errors/{stats.js → stats.ts} +11 -7
  214. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  215. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  216. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  217. package/src/common/events/{events.js → events.ts} +5 -1
  218. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  219. package/src/common/events/{util.js → util.ts} +2 -3
  220. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  221. package/src/common/logs/logger-proxy.ts +44 -0
  222. package/src/common/logs/{request.js → request.ts} +22 -9
  223. package/src/common/queue.ts +1 -2
  224. package/src/{config.js → config.ts} +17 -12
  225. package/src/constants.ts +40 -1
  226. package/src/index.js +1 -1
  227. package/src/locus-info/controlsUtils.ts +114 -0
  228. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  229. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  230. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  231. package/src/locus-info/{index.js → index.ts} +148 -64
  232. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  233. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  234. package/src/locus-info/{parser.js → parser.ts} +67 -79
  235. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  236. package/src/media/{index.js → index.ts} +181 -131
  237. package/src/media/{properties.js → properties.ts} +47 -28
  238. package/src/media/{util.js → util.ts} +2 -2
  239. package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
  240. package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
  241. package/src/meeting/in-meeting-actions.ts +15 -3
  242. package/src/meeting/{index.js → index.ts} +2263 -1427
  243. package/src/meeting/{muteState.js → muteState.ts} +78 -42
  244. package/src/meeting/{request.js → request.ts} +292 -142
  245. package/src/meeting/request.type.ts +13 -0
  246. package/src/meeting/{state.js → state.ts} +50 -35
  247. package/src/meeting/{util.js → util.ts} +112 -115
  248. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  249. package/src/meeting-info/{index.js → index.ts} +42 -36
  250. package/src/meeting-info/meeting-info-v2.ts +273 -0
  251. package/src/meeting-info/{request.js → request.ts} +14 -4
  252. package/src/meeting-info/{util.js → util.ts} +60 -51
  253. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  254. package/src/meetings/{collection.js → collection.ts} +6 -3
  255. package/src/meetings/index.ts +1159 -0
  256. package/src/meetings/{request.js → request.ts} +32 -25
  257. package/src/meetings/{util.js → util.ts} +34 -32
  258. package/src/member/{index.js → index.ts} +102 -56
  259. package/src/member/{util.js → util.ts} +52 -25
  260. package/src/members/{collection.js → collection.ts} +2 -2
  261. package/src/members/{index.js → index.ts} +219 -142
  262. package/src/members/{request.js → request.ts} +60 -16
  263. package/src/members/{util.js → util.ts} +50 -48
  264. package/src/metrics/{config.js → config.ts} +254 -83
  265. package/src/metrics/{constants.js → constants.ts} +0 -2
  266. package/src/metrics/{index.js → index.ts} +106 -74
  267. package/src/multistream/mediaRequestManager.ts +81 -15
  268. package/src/multistream/multistreamMedia.ts +5 -0
  269. package/src/multistream/receiveSlot.ts +18 -12
  270. package/src/multistream/receiveSlotManager.ts +23 -21
  271. package/src/multistream/remoteMedia.ts +15 -5
  272. package/src/multistream/remoteMediaGroup.ts +4 -3
  273. package/src/multistream/remoteMediaManager.ts +153 -37
  274. package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
  275. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  276. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  277. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  278. package/src/reachability/{index.js → index.ts} +99 -83
  279. package/src/reachability/request.ts +39 -33
  280. package/src/reactions/constants.ts +4 -0
  281. package/src/reactions/reactions.ts +104 -0
  282. package/src/reactions/reactions.type.ts +62 -0
  283. package/src/reconnection-manager/{index.js → index.ts} +195 -102
  284. package/src/recording-controller/enums.ts +8 -0
  285. package/src/recording-controller/index.ts +315 -0
  286. package/src/recording-controller/util.ts +58 -0
  287. package/src/roap/{index.js → index.ts} +73 -56
  288. package/src/roap/request.ts +157 -0
  289. package/src/roap/turnDiscovery.ts +77 -37
  290. package/src/statsAnalyzer/{global.js → global.ts} +30 -33
  291. package/src/statsAnalyzer/{index.js → index.ts} +468 -192
  292. package/src/statsAnalyzer/mqaUtil.ts +290 -0
  293. package/src/transcription/{index.js → index.ts} +46 -39
  294. package/test/integration/spec/journey.js +664 -463
  295. package/test/integration/spec/space-meeting.js +320 -206
  296. package/test/integration/spec/transcription.js +7 -8
  297. package/test/unit/spec/breakouts/breakout.ts +119 -0
  298. package/test/unit/spec/breakouts/collection.ts +15 -0
  299. package/test/unit/spec/breakouts/index.ts +293 -0
  300. package/test/unit/spec/common/browser-detection.js +9 -28
  301. package/test/unit/spec/fixture/locus.js +92 -90
  302. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  303. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  304. package/test/unit/spec/locus-info/index.js +104 -2
  305. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  306. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  307. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  308. package/test/unit/spec/locus-info/parser.js +3 -9
  309. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  310. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  311. package/test/unit/spec/media/index.ts +31 -47
  312. package/test/unit/spec/media/properties.ts +9 -9
  313. package/test/unit/spec/meeting/effectsState.js +39 -45
  314. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
  315. package/test/unit/spec/meeting/index.js +2017 -742
  316. package/test/unit/spec/meeting/muteState.js +42 -33
  317. package/test/unit/spec/meeting/request.js +115 -44
  318. package/test/unit/spec/meeting/utils.js +104 -171
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  320. package/test/unit/spec/meeting-info/request.js +7 -9
  321. package/test/unit/spec/meeting-info/util.js +11 -12
  322. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  323. package/test/unit/spec/meetings/collection.js +1 -1
  324. package/test/unit/spec/meetings/index.js +439 -257
  325. package/test/unit/spec/meetings/utils.js +14 -12
  326. package/test/unit/spec/member/index.js +0 -1
  327. package/test/unit/spec/member/util.js +31 -7
  328. package/test/unit/spec/members/index.js +104 -54
  329. package/test/unit/spec/members/request.js +29 -20
  330. package/test/unit/spec/members/utils.js +8 -5
  331. package/test/unit/spec/metrics/index.js +16 -21
  332. package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
  333. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  334. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  335. package/test/unit/spec/multistream/remoteMedia.ts +10 -2
  336. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  337. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  338. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  339. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  340. package/test/unit/spec/reachability/index.ts +58 -26
  341. package/test/unit/spec/reconnection-manager/index.js +102 -9
  342. package/test/unit/spec/recording-controller/index.js +231 -0
  343. package/test/unit/spec/recording-controller/util.js +102 -0
  344. package/test/unit/spec/roap/index.ts +2 -1
  345. package/test/unit/spec/roap/request.ts +114 -0
  346. package/test/unit/spec/roap/turnDiscovery.ts +64 -45
  347. package/test/unit/spec/stats-analyzer/index.js +27 -22
  348. package/test/utils/cmr.js +44 -42
  349. package/test/utils/testUtils.js +83 -74
  350. package/test/utils/webex-config.js +18 -18
  351. package/test/utils/webex-test-users.js +54 -50
  352. package/tsconfig.json +6 -0
  353. package/dist/media/internal-media-core-wrapper.js +0 -22
  354. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  355. package/dist/peer-connection-manager/util.js +0 -124
  356. package/dist/peer-connection-manager/util.js.map +0 -1
  357. package/src/common/logs/logger-proxy.js +0 -33
  358. package/src/locus-info/controlsUtils.js +0 -102
  359. package/src/media/internal-media-core-wrapper.ts +0 -9
  360. package/src/meeting-info/meeting-info-v2.js +0 -255
  361. package/src/meetings/index.js +0 -1015
  362. package/src/peer-connection-manager/util.ts +0 -117
  363. package/src/roap/request.js +0 -127
  364. package/src/statsAnalyzer/mqaUtil.js +0 -173
  365. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
@@ -1,14 +1,14 @@
1
- const HostUtils = {};
1
+ const HostUtils: any = {};
2
2
 
3
3
  /**
4
4
  * parse the relevant host values that we care about: id
5
5
  * @param {Object} host
6
6
  * @returns {Object} parsed host or null if host was undefined
7
7
  */
8
- HostUtils.parse = (host) => {
8
+ HostUtils.parse = (host: object) => {
9
9
  if (host) {
10
10
  return {
11
- hostId: HostUtils.getId(host)
11
+ hostId: HostUtils.getId(host),
12
12
  };
13
13
  }
14
14
 
@@ -22,7 +22,7 @@ HostUtils.parse = (host) => {
22
22
  * @returns {Object}
23
23
  * previous: {Object} old host, current: {Object} new host, updates: {isNewHost: {boolean}} boolean update values
24
24
  */
25
- HostUtils.getHosts = (oldHost, newHost) => {
25
+ HostUtils.getHosts = (oldHost: object, newHost: object) => {
26
26
  const previous = oldHost && HostUtils.parse(oldHost);
27
27
  const current = newHost && HostUtils.parse(newHost);
28
28
 
@@ -30,8 +30,9 @@ HostUtils.getHosts = (oldHost, newHost) => {
30
30
  previous,
31
31
  current,
32
32
  updates: {
33
- isNewHost: previous && current ? HostUtils.isDifferentHosts(previous.hostId, current.hostId) : true
34
- }
33
+ isNewHost:
34
+ previous && current ? HostUtils.isDifferentHosts(previous.hostId, current.hostId) : true,
35
+ },
35
36
  };
36
37
  };
37
38
 
@@ -41,14 +42,14 @@ HostUtils.getHosts = (oldHost, newHost) => {
41
42
  * @param {String} currentId
42
43
  * @returns {Boolean}
43
44
  */
44
- HostUtils.isDifferentHosts = (previousId, currentId) => previousId !== currentId;
45
+ HostUtils.isDifferentHosts = (previousId: string, currentId: string) => previousId !== currentId;
45
46
 
46
47
  /**
47
48
  * Extract the id from the host object
48
49
  * @param {Object} host
49
50
  * @returns {String}
50
51
  */
51
- HostUtils.getId = (host) => {
52
+ HostUtils.getId = (host: any) => {
52
53
  if (!host) {
53
54
  return null;
54
55
  }
@@ -19,14 +19,14 @@ import {
19
19
  } from '../constants';
20
20
  import Metrics from '../metrics';
21
21
  import {eventType} from '../metrics/config';
22
- import InfoUtils from '../locus-info/infoUtils';
23
- import FullState from '../locus-info/fullState';
24
- import SelfUtils from '../locus-info/selfUtils';
25
- import HostUtils from '../locus-info/hostUtils';
26
- import ControlsUtils from '../locus-info/controlsUtils';
27
- import EmbeddedAppsUtils from '../locus-info/embeddedAppsUtils';
28
- import MediaSharesUtils from '../locus-info/mediaSharesUtils';
29
- import LocusDeltaParser from '../locus-info/parser';
22
+ import InfoUtils from './infoUtils';
23
+ import FullState from './fullState';
24
+ import SelfUtils from './selfUtils';
25
+ import HostUtils from './hostUtils';
26
+ import ControlsUtils from './controlsUtils';
27
+ import EmbeddedAppsUtils from './embeddedAppsUtils';
28
+ import MediaSharesUtils from './mediaSharesUtils';
29
+ import LocusDeltaParser from './parser';
30
30
 
31
31
  /**
32
32
  * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
@@ -35,6 +35,35 @@ import LocusDeltaParser from '../locus-info/parser';
35
35
  * @class LocusInfo
36
36
  */
37
37
  export default class LocusInfo extends EventsScope {
38
+ compareAndUpdateFlags: any;
39
+ emitChange: any;
40
+ locusParser: any;
41
+ meetingId: any;
42
+ parsedLocus: any;
43
+ updateMeeting: any;
44
+ webex: any;
45
+ aclUrl: any;
46
+ baseSequence: any;
47
+ created: any;
48
+ deltaParticipants: any;
49
+ identities: any;
50
+ membership: any;
51
+ participants: any;
52
+ participantsUrl: any;
53
+ replaces: any;
54
+ scheduledMeeting: any;
55
+ sequence: any;
56
+ controls: any;
57
+ conversationUrl: any;
58
+ embeddedApps: any;
59
+ fullState: any;
60
+ host: any;
61
+ info: any;
62
+ mediaShares: any;
63
+ replace: any;
64
+ url: any;
65
+ services: any;
66
+
38
67
  constructor(updateMeeting, webex, meetingId) {
39
68
  super();
40
69
  this.parsedLocus = {
@@ -55,7 +84,7 @@ export default class LocusInfo extends EventsScope {
55
84
  * @param {Meeting} meeting
56
85
  * @returns {undefined}
57
86
  */
58
- applyLocusDeltaData(action, locus, meeting) {
87
+ applyLocusDeltaData(action: string, locus: any, meeting: any) {
59
88
  const {DESYNC, USE_CURRENT, USE_INCOMING} = LocusDeltaParser.loci;
60
89
 
61
90
  switch (action) {
@@ -94,7 +123,7 @@ export default class LocusInfo extends EventsScope {
94
123
  * @param {Meeting} meeting
95
124
  * @returns {undefined}
96
125
  */
97
- handleLocusDelta(locus, meeting) {
126
+ handleLocusDelta(locus: any, meeting: any) {
98
127
  // register a function to process delta actions
99
128
  if (!this.locusParser.onDeltaAction) {
100
129
  // delta action, along with associated loci
@@ -112,7 +141,7 @@ export default class LocusInfo extends EventsScope {
112
141
  * @returns {undefined}
113
142
  * @memberof LocusInfo
114
143
  */
115
- init(locus = {}) {
144
+ init(locus: any = {}) {
116
145
  this.created = locus.created || null;
117
146
  this.scheduledMeeting = locus.meeting || null;
118
147
  this.participantsUrl = locus.participantsUrl || null;
@@ -157,6 +186,7 @@ export default class LocusInfo extends EventsScope {
157
186
  this.updateSelf(locus.self, locus.participants);
158
187
  this.updateHostInfo(locus.host);
159
188
  this.updateMediaShares(locus.mediaShares);
189
+ this.updateServices(locus.links?.services);
160
190
  }
161
191
 
162
192
  /**
@@ -164,7 +194,7 @@ export default class LocusInfo extends EventsScope {
164
194
  * @returns {undefined}
165
195
  * @memberof LocusInfo
166
196
  */
167
- initialSetup(locus) {
197
+ initialSetup(locus: object) {
168
198
  this.onFullLocus(locus);
169
199
 
170
200
  // Change it to true after it receives it first locus object
@@ -177,7 +207,8 @@ export default class LocusInfo extends EventsScope {
177
207
  * @returns {undefined}
178
208
  * @memberof LocusInfo
179
209
  */
180
- parse(meeting, data) {
210
+ parse(meeting: any, data: any) {
211
+ // eslint-disable-next-line @typescript-eslint/no-shadow
181
212
  const {eventType} = data;
182
213
 
183
214
  LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);
@@ -217,18 +248,19 @@ export default class LocusInfo extends EventsScope {
217
248
  * @returns {undefined}
218
249
  * @memberof LocusInfo
219
250
  */
220
- emitScoped(scope, eventName, args) {
251
+ emitScoped(scope?: any, eventName?: string, args?: any) {
221
252
  return this.emit(scope, eventName, args);
222
253
  }
223
254
 
224
255
  /**
225
256
  * updates the locus with full locus object
226
257
  * @param {object} locus locus object
227
- * @param {sting} eventType particulat locus event
258
+ * @param {string} eventType particulat locus event
228
259
  * @returns {object} null
229
260
  * @memberof LocusInfo
230
261
  */
231
- onFullLocus(locus, eventType) {
262
+ // eslint-disable-next-line @typescript-eslint/no-shadow
263
+ onFullLocus(locus: any, eventType?: string) {
232
264
  if (!locus) {
233
265
  LoggerProxy.logger.error(
234
266
  'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'
@@ -252,7 +284,8 @@ export default class LocusInfo extends EventsScope {
252
284
  * @returns {undefined}
253
285
  * @memberof LocusInfo
254
286
  */
255
- handleOneOnOneEvent(eventType) {
287
+ // eslint-disable-next-line @typescript-eslint/no-shadow
288
+ handleOneOnOneEvent(eventType: string) {
256
289
  if (
257
290
  this.parsedLocus.fullState.type === _CALL_ ||
258
291
  this.parsedLocus.fullState.type === _SIP_BRIDGE_
@@ -295,7 +328,7 @@ export default class LocusInfo extends EventsScope {
295
328
  * @returns {undefined}
296
329
  * @memberof LocusInfo
297
330
  */
298
- onDeltaLocus(locus) {
331
+ onDeltaLocus(locus: any) {
299
332
  this.updateLocusInfo(locus);
300
333
  this.updateParticipants(locus.participants);
301
334
  this.isMeetingActive();
@@ -307,6 +340,13 @@ export default class LocusInfo extends EventsScope {
307
340
  * @memberof LocusInfo
308
341
  */
309
342
  updateLocusInfo(locus) {
343
+ if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {
344
+ // When moved to a breakout session locus sends a message for the previous locus
345
+ // indicating that we have been moved. It isn't helpful to continue parsing this
346
+ // as it gets interpreted as if we have left the call
347
+ return;
348
+ }
349
+
310
350
  this.updateControls(locus.controls);
311
351
  this.updateConversationUrl(locus.conversationUrl, locus.info);
312
352
  this.updateCreated(locus.created);
@@ -324,6 +364,7 @@ export default class LocusInfo extends EventsScope {
324
364
  this.updateMemberShip(locus.membership);
325
365
  this.updateIdentifiers(locus.identities);
326
366
  this.updateEmbeddedApps(locus.embeddedApps);
367
+ this.updateServices(locus.links?.services);
327
368
  this.compareAndUpdate();
328
369
  // update which required to compare different objects from locus
329
370
  }
@@ -334,7 +375,7 @@ export default class LocusInfo extends EventsScope {
334
375
  * @returns {Array}
335
376
  * @memberof LocusInfo
336
377
  */
337
- getLocusPartner(participants, self) {
378
+ getLocusPartner(participants: Array<any>, self: any) {
338
379
  if (!participants || participants.length === 0) {
339
380
  return null;
340
381
  }
@@ -345,6 +386,7 @@ export default class LocusInfo extends EventsScope {
345
386
  self &&
346
387
  participant.identity !== self.identity &&
347
388
  (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))
389
+ // @ts-ignore
348
390
  ) || this.partner
349
391
  );
350
392
  }
@@ -359,6 +401,7 @@ export default class LocusInfo extends EventsScope {
359
401
  this.parsedLocus.fullState.type === _CALL_ ||
360
402
  this.parsedLocus.fullState.type === _SIP_BRIDGE_
361
403
  ) {
404
+ // @ts-ignore
362
405
  const partner = this.getLocusPartner(this.participants, this.self);
363
406
 
364
407
  this.updateMeeting({partner});
@@ -390,8 +433,7 @@ export default class LocusInfo extends EventsScope {
390
433
  shouldLeave: false,
391
434
  }
392
435
  );
393
- }
394
- else if (
436
+ } else if (
395
437
  partner.state === MEETING_STATE.STATES.LEFT &&
396
438
  this.parsedLocus.self &&
397
439
  (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||
@@ -414,8 +456,7 @@ export default class LocusInfo extends EventsScope {
414
456
  this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,
415
457
  }
416
458
  );
417
- }
418
- else if (
459
+ } else if (
419
460
  this.parsedLocus.self &&
420
461
  this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&
421
462
  (partner.state === MEETING_STATE.STATES.LEFT ||
@@ -439,11 +480,11 @@ export default class LocusInfo extends EventsScope {
439
480
  }
440
481
  );
441
482
  }
442
- }
443
- else if (this.parsedLocus.fullState.type === _MEETING_) {
483
+ } else if (this.parsedLocus.fullState.type === _MEETING_) {
444
484
  if (
445
485
  this.fullState &&
446
486
  (this.fullState.state === LOCUS.STATE.INACTIVE ||
487
+ // @ts-ignore
447
488
  this.fullState.state === LOCUS.STATE.TERMINATING)
448
489
  ) {
449
490
  LoggerProxy.logger.warn(
@@ -464,8 +505,7 @@ export default class LocusInfo extends EventsScope {
464
505
  shouldLeave: false,
465
506
  }
466
507
  );
467
- }
468
- else if (this.fullState && this.fullState.removed) {
508
+ } else if (this.fullState && this.fullState.removed) {
469
509
  // user has been dropped from a meeting
470
510
  Metrics.postEvent({
471
511
  event: eventType.REMOTE_ENDED,
@@ -499,8 +539,7 @@ export default class LocusInfo extends EventsScope {
499
539
  }
500
540
  );
501
541
  }
502
- }
503
- else {
542
+ } else {
504
543
  LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');
505
544
  }
506
545
  }
@@ -543,8 +582,7 @@ export default class LocusInfo extends EventsScope {
543
582
  canAssignHost: true,
544
583
  }
545
584
  );
546
- }
547
- else {
585
+ } else {
548
586
  this.emitScoped(
549
587
  {
550
588
  file: 'locus-info',
@@ -565,13 +603,13 @@ export default class LocusInfo extends EventsScope {
565
603
  * @param {Array} [participants] - The participants to update against.
566
604
  * @returns {void}
567
605
  */
568
- updateParticipantDeltas(participants = []) {
606
+ updateParticipantDeltas(participants: Array<any> = []) {
569
607
  // Used to find a participant within a participants collection.
570
608
  const findParticipant = (participant, collection) =>
571
609
  collection.find((item) => item.person.id === participant.person.id);
572
610
 
573
611
  // Generates an object that indicates which state properties have changed.
574
- const generateDelta = (prevState = {}, newState = {}) => {
612
+ const generateDelta = (prevState: any = {}, newState: any = {}) => {
575
613
  // Setup deltas.
576
614
  const deltas = {
577
615
  audioStatus: prevState.audioStatus !== newState.audioStatus,
@@ -614,7 +652,7 @@ export default class LocusInfo extends EventsScope {
614
652
  * @returns {Array} updatedParticipants
615
653
  * @memberof LocusInfo
616
654
  */
617
- updateParticipants(participants) {
655
+ updateParticipants(participants: object) {
618
656
  this.emitScoped(
619
657
  {
620
658
  file: 'locus-info',
@@ -636,7 +674,7 @@ export default class LocusInfo extends EventsScope {
636
674
  * @returns {undefined}
637
675
  * @memberof LocusInfo
638
676
  */
639
- updateControls(controls) {
677
+ updateControls(controls: object) {
640
678
  if (controls && !isEqual(this.controls, controls)) {
641
679
  this.parsedLocus.controls = ControlsUtils.parse(controls);
642
680
  const {
@@ -646,6 +684,7 @@ export default class LocusInfo extends EventsScope {
646
684
  hasMeetingContainerChanged,
647
685
  hasTranscribeChanged,
648
686
  hasEntryExitToneChanged,
687
+ hasBreakoutChanged,
649
688
  },
650
689
  current,
651
690
  } = ControlsUtils.getControls(this.controls, controls);
@@ -656,13 +695,11 @@ export default class LocusInfo extends EventsScope {
656
695
  if (hasRecordingPausedChanged) {
657
696
  if (current.record.paused) {
658
697
  state = RECORDING_STATE.PAUSED;
659
- }
660
- else {
698
+ } else {
661
699
  // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.
662
700
  state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;
663
701
  }
664
- }
665
- else if (hasRecordingChanged) {
702
+ } else if (hasRecordingChanged) {
666
703
  state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;
667
704
  }
668
705
 
@@ -711,6 +748,21 @@ export default class LocusInfo extends EventsScope {
711
748
  );
712
749
  }
713
750
 
751
+ if (hasBreakoutChanged) {
752
+ const {breakout} = current;
753
+
754
+ this.emitScoped(
755
+ {
756
+ file: 'locus-info',
757
+ function: 'updateControls',
758
+ },
759
+ LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,
760
+ {
761
+ breakout,
762
+ }
763
+ );
764
+ }
765
+
714
766
  if (hasEntryExitToneChanged) {
715
767
  const {entryExitTone} = current;
716
768
 
@@ -721,7 +773,7 @@ export default class LocusInfo extends EventsScope {
721
773
  },
722
774
  LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,
723
775
  {
724
- entryExitTone
776
+ entryExitTone,
725
777
  }
726
778
  );
727
779
 
@@ -738,12 +790,11 @@ export default class LocusInfo extends EventsScope {
738
790
  * @returns {undefined}
739
791
  * @memberof LocusInfo
740
792
  */
741
- updateConversationUrl(conversationUrl, info) {
793
+ updateConversationUrl(conversationUrl: string, info: any) {
742
794
  if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {
743
795
  this.conversationUrl = conversationUrl;
744
796
  this.updateMeeting({conversationUrl});
745
- }
746
- else if (
797
+ } else if (
747
798
  info &&
748
799
  info.conversationUrl &&
749
800
  !isEqual(this.conversationUrl, info.conversationUrl)
@@ -758,18 +809,39 @@ export default class LocusInfo extends EventsScope {
758
809
  * @returns {undefined}
759
810
  * @memberof LocusInfo
760
811
  */
761
- updateCreated(created) {
812
+ updateCreated(created: object) {
762
813
  if (created && !isEqual(this.created, created)) {
763
814
  this.created = created;
764
815
  }
765
816
  }
766
817
 
818
+ /**
819
+ * @param {Object} services
820
+ * @returns {undefined}
821
+ * @memberof LocusInfo
822
+ */
823
+ updateServices(services: Record<'breakout' | 'record', {url: string}>) {
824
+ if (services && !isEqual(this.services, services)) {
825
+ this.services = services;
826
+ this.emitScoped(
827
+ {
828
+ file: 'locus-info',
829
+ function: 'updateServices',
830
+ },
831
+ LOCUSINFO.EVENTS.LINKS_SERVICES,
832
+ {
833
+ services,
834
+ }
835
+ );
836
+ }
837
+ }
838
+
767
839
  /**
768
840
  * @param {Object} fullState
769
841
  * @returns {undefined}
770
842
  * @memberof LocusInfo
771
843
  */
772
- updateFullState(fullState) {
844
+ updateFullState(fullState: object) {
773
845
  if (fullState && !isEqual(this.fullState, fullState)) {
774
846
  const result = FullState.getFullState(this.fullState, fullState);
775
847
 
@@ -813,7 +885,7 @@ export default class LocusInfo extends EventsScope {
813
885
  * @memberof LocusInfo
814
886
  * emits internal event locus_info_update_host
815
887
  */
816
- updateHostInfo(host) {
888
+ updateHostInfo(host: object) {
817
889
  if (host && !isEqual(this.host, host)) {
818
890
  const parsedHosts = HostUtils.getHosts(this.host, host);
819
891
 
@@ -834,8 +906,7 @@ export default class LocusInfo extends EventsScope {
834
906
  );
835
907
  }
836
908
  this.host = host;
837
- }
838
- else {
909
+ } else {
839
910
  this.compareAndUpdateFlags.compareSelfAndHost = false;
840
911
  }
841
912
  }
@@ -846,7 +917,7 @@ export default class LocusInfo extends EventsScope {
846
917
  * @returns {undefined}
847
918
  * @memberof LocusInfo
848
919
  */
849
- updateMeetingInfo(info, self) {
920
+ updateMeetingInfo(info: object, self?: object) {
850
921
  if (info && !isEqual(this.info, info)) {
851
922
  const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];
852
923
  const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);
@@ -894,7 +965,7 @@ export default class LocusInfo extends EventsScope {
894
965
  * @returns {undefined}
895
966
  * @memberof LocusInfo
896
967
  */
897
- updateEmbeddedApps(embeddedApps) {
968
+ updateEmbeddedApps(embeddedApps: object) {
898
969
  // don't do anything if the arrays of apps haven't changed significantly
899
970
  if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {
900
971
  return;
@@ -922,7 +993,7 @@ export default class LocusInfo extends EventsScope {
922
993
  * @memberof LocusInfo
923
994
  * emits internal event locus_info_update_media_shares
924
995
  */
925
- updateMediaShares(mediaShares) {
996
+ updateMediaShares(mediaShares: object) {
926
997
  if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {
927
998
  const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);
928
999
 
@@ -948,7 +1019,7 @@ export default class LocusInfo extends EventsScope {
948
1019
  * @returns {undefined}
949
1020
  * @memberof LocusInfo
950
1021
  */
951
- updateParticipantsUrl(participantsUrl) {
1022
+ updateParticipantsUrl(participantsUrl: string) {
952
1023
  if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {
953
1024
  this.participantsUrl = participantsUrl;
954
1025
  }
@@ -959,7 +1030,7 @@ export default class LocusInfo extends EventsScope {
959
1030
  * @returns {undefined}
960
1031
  * @memberof LocusInfo
961
1032
  */
962
- updateReplace(replace) {
1033
+ updateReplace(replace: object) {
963
1034
  if (replace && !isEqual(this.replace, replace)) {
964
1035
  this.replace = replace;
965
1036
  }
@@ -973,8 +1044,10 @@ export default class LocusInfo extends EventsScope {
973
1044
  * @memberof LocusInfo
974
1045
  * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self
975
1046
  */
976
- updateSelf(self, participants) {
1047
+ updateSelf(self: any, participants: Array<any>) {
1048
+ // @ts-ignore - check where this.self come from
977
1049
  if (self && !isEqual(this.self, self)) {
1050
+ // @ts-ignore
978
1051
  const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);
979
1052
 
980
1053
  this.updateMeeting(parsedSelves.current);
@@ -1000,8 +1073,7 @@ export default class LocusInfo extends EventsScope {
1000
1073
 
1001
1074
  if (parsedSelves.updates.moderatorChanged) {
1002
1075
  this.compareAndUpdateFlags.compareHostAndSelf = true;
1003
- }
1004
- else {
1076
+ } else {
1005
1077
  this.compareAndUpdateFlags.compareHostAndSelf = false;
1006
1078
  }
1007
1079
 
@@ -1016,6 +1088,17 @@ export default class LocusInfo extends EventsScope {
1016
1088
  );
1017
1089
  }
1018
1090
 
1091
+ if (parsedSelves.updates.breakoutsChanged) {
1092
+ this.emitScoped(
1093
+ {
1094
+ file: 'locus-info',
1095
+ function: 'updateSelf',
1096
+ },
1097
+ LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,
1098
+ {breakoutSessions: parsedSelves.current.breakoutSessions}
1099
+ );
1100
+ }
1101
+
1019
1102
  if (parsedSelves.updates.isMediaInactiveOrReleased) {
1020
1103
  this.emitScoped(
1021
1104
  {
@@ -1100,6 +1183,7 @@ export default class LocusInfo extends EventsScope {
1100
1183
  file: 'locus-info',
1101
1184
  function: 'updateSelf',
1102
1185
  },
1186
+ // @ts-ignore
1103
1187
  LOCUSINFO.EVENTS.MEDIA_INACTIVITY,
1104
1188
  SelfUtils.getMediaStatus(self.mediaSessions)
1105
1189
  );
@@ -1168,9 +1252,9 @@ export default class LocusInfo extends EventsScope {
1168
1252
  }
1169
1253
  );
1170
1254
  this.parsedLocus.self = parsedSelves.current;
1255
+ // @ts-ignore
1171
1256
  this.self = self;
1172
- }
1173
- else {
1257
+ } else {
1174
1258
  this.compareAndUpdateFlags.compareHostAndSelf = false;
1175
1259
  }
1176
1260
  }
@@ -1181,7 +1265,7 @@ export default class LocusInfo extends EventsScope {
1181
1265
  * @returns {undefined}
1182
1266
  * emits internal event locus_info_update_url
1183
1267
  */
1184
- updateLocusUrl(url) {
1268
+ updateLocusUrl(url: string) {
1185
1269
  if (url && this.url !== url) {
1186
1270
  this.url = url;
1187
1271
  this.updateMeeting({locusUrl: url});
@@ -1201,7 +1285,7 @@ export default class LocusInfo extends EventsScope {
1201
1285
  * @returns {undefined}
1202
1286
  * @memberof LocusInfo
1203
1287
  */
1204
- updateAclUrl(aclUrl) {
1288
+ updateAclUrl(aclUrl: string) {
1205
1289
  if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {
1206
1290
  this.aclUrl = aclUrl;
1207
1291
  }
@@ -1212,7 +1296,7 @@ export default class LocusInfo extends EventsScope {
1212
1296
  * @returns {undefined}
1213
1297
  * @memberof LocusInfo
1214
1298
  */
1215
- updateBasequence(baseSequence) {
1299
+ updateBasequence(baseSequence: number) {
1216
1300
  if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {
1217
1301
  this.baseSequence = baseSequence;
1218
1302
  }
@@ -1223,7 +1307,7 @@ export default class LocusInfo extends EventsScope {
1223
1307
  * @returns {undefined}
1224
1308
  * @memberof LocusInfo
1225
1309
  */
1226
- updateSequence(sequence) {
1310
+ updateSequence(sequence: number) {
1227
1311
  if (sequence && !isEqual(this.sequence, sequence)) {
1228
1312
  this.sequence = sequence;
1229
1313
  }
@@ -1234,7 +1318,7 @@ export default class LocusInfo extends EventsScope {
1234
1318
  * @returns {undefined}
1235
1319
  * @memberof LocusInfo
1236
1320
  */
1237
- updateMemberShip(membership) {
1321
+ updateMemberShip(membership: object) {
1238
1322
  if (membership && !isEqual(this.membership, membership)) {
1239
1323
  this.membership = membership;
1240
1324
  }
@@ -1245,7 +1329,7 @@ export default class LocusInfo extends EventsScope {
1245
1329
  * @returns {undefined}
1246
1330
  * @memberof LocusInfo
1247
1331
  */
1248
- updateIdentifiers(identities) {
1332
+ updateIdentifiers(identities: Array<any>) {
1249
1333
  if (identities && !isEqual(this.identities, identities)) {
1250
1334
  this.identities = identities;
1251
1335
  }
@@ -1,10 +1,9 @@
1
-
2
1
  import {SELF_ROLES, DISPLAY_HINTS} from '../constants';
3
2
 
4
- const InfoUtils = {};
3
+ const InfoUtils: any = {};
5
4
 
6
5
  InfoUtils.parse = (info, roles, isJoined = true) => {
7
- const parsed = {
6
+ const parsed: any = {
8
7
  policy: InfoUtils.parsePolicy(info),
9
8
  moderator: InfoUtils.parseModerator(info),
10
9
  coHost: InfoUtils.parseCoHost(info),
@@ -30,13 +29,22 @@ InfoUtils.parse = (info, roles, isJoined = true) => {
30
29
  parsed.meetingNumber = info.meetingId;
31
30
  }
32
31
 
32
+ if (info.datachannelUrl) {
33
+ parsed.datachannelUrl = info.datachannelUrl;
34
+ }
35
+
33
36
  return parsed;
34
37
  };
35
38
 
36
39
  InfoUtils.parseDisplayHintSection = (info, displayHintKey) => {
37
40
  const displayHints = {};
38
41
 
39
- if (info && info.displayHints && info.displayHints[displayHintKey] && info.displayHints[displayHintKey].length > 0) {
42
+ if (
43
+ info &&
44
+ info.displayHints &&
45
+ info.displayHints[displayHintKey] &&
46
+ info.displayHints[displayHintKey].length > 0
47
+ ) {
40
48
  info.displayHints[displayHintKey].forEach((key) => {
41
49
  displayHints[key] = true;
42
50
  });
@@ -70,16 +78,19 @@ InfoUtils.getInfos = (oldInfo, newInfo, roles, isJoined) => {
70
78
  previous = oldInfo;
71
79
  }
72
80
  const current = newInfo && InfoUtils.parse(newInfo, roles, isJoined);
73
- const updates = {};
81
+ const updates: any = {};
74
82
 
75
83
  if (current) {
76
84
  current.isLocked = InfoUtils.isLocked(current.policy);
77
85
  current.isUnlocked = InfoUtils.isUnlocked(current.policy);
78
86
 
79
- if (previous && previous.isUnlocked && current.isLocked || !previous && current.isLocked) {
87
+ if ((previous && previous.isUnlocked && current.isLocked) || (!previous && current.isLocked)) {
80
88
  updates.isLocked = current.isLocked;
81
89
  }
82
- if (previous && previous.isLocked && current.isUnlocked || !previous && current.isUnlocked) {
90
+ if (
91
+ (previous && previous.isLocked && current.isUnlocked) ||
92
+ (!previous && current.isUnlocked)
93
+ ) {
83
94
  updates.isUnlocked = current.isUnlocked;
84
95
  }
85
96
  }
@@ -87,7 +98,7 @@ InfoUtils.getInfos = (oldInfo, newInfo, roles, isJoined) => {
87
98
  return {
88
99
  previous,
89
100
  current,
90
- updates
101
+ updates,
91
102
  };
92
103
  };
93
104