@webex/plugin-meetings 2.60.0-next.9 → 2.60.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 (516) hide show
  1. package/README.md +8 -46
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -5
  54. package/dist/config.js +11 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +97 -217
  57. package/dist/constants.js +441 -416
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +4 -116
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +494 -591
  111. package/dist/meeting/index.js +2969 -4707
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -297
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -102
  122. package/dist/meeting/util.js +435 -605
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +21 -103
  142. package/dist/meetings/index.js +124 -486
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +7 -62
  193. package/dist/reachability/index.js +72 -265
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +231 -282
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +235 -101
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -28
  240. package/dist/statsAnalyzer/index.js +509 -374
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +83 -116
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -35
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -5
  253. package/src/constants.ts +97 -244
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -449
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2482 -3929
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -207
  273. package/src/meeting/util.ts +423 -590
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +126 -486
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +45 -238
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -98
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +642 -413
  310. package/src/statsAnalyzer/mqaUtil.ts +114 -111
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1389
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +3136 -8547
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +42 -512
  330. package/test/unit/spec/meeting/utils.js +24 -741
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +211 -1278
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -598
  347. package/test/unit/spec/reconnection-manager/index.js +24 -162
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +76 -200
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +174 -188
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interpretation/collection.d.ts +0 -5
  395. package/dist/interpretation/collection.js +0 -22
  396. package/dist/interpretation/collection.js.map +0 -1
  397. package/dist/interpretation/index.d.ts +0 -5
  398. package/dist/interpretation/index.js +0 -365
  399. package/dist/interpretation/index.js.map +0 -1
  400. package/dist/interpretation/siLanguage.d.ts +0 -5
  401. package/dist/interpretation/siLanguage.js +0 -24
  402. package/dist/interpretation/siLanguage.js.map +0 -1
  403. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  404. package/dist/meeting/locusMediaRequest.js +0 -291
  405. package/dist/meeting/locusMediaRequest.js.map +0 -1
  406. package/dist/meeting/request.type.d.ts +0 -11
  407. package/dist/meeting/request.type.js +0 -7
  408. package/dist/meeting/request.type.js.map +0 -1
  409. package/dist/meetings/meetings.types.d.ts +0 -4
  410. package/dist/meetings/meetings.types.js +0 -7
  411. package/dist/meetings/meetings.types.js.map +0 -1
  412. package/dist/member/types.d.ts +0 -32
  413. package/dist/member/types.js +0 -23
  414. package/dist/member/types.js.map +0 -1
  415. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  416. package/dist/multistream/mediaRequestManager.js +0 -344
  417. package/dist/multistream/mediaRequestManager.js.map +0 -1
  418. package/dist/multistream/receiveSlot.d.ts +0 -68
  419. package/dist/multistream/receiveSlot.js +0 -200
  420. package/dist/multistream/receiveSlot.js.map +0 -1
  421. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  422. package/dist/multistream/receiveSlotManager.js +0 -174
  423. package/dist/multistream/receiveSlotManager.js.map +0 -1
  424. package/dist/multistream/remoteMedia.d.ts +0 -72
  425. package/dist/multistream/remoteMedia.js +0 -268
  426. package/dist/multistream/remoteMedia.js.map +0 -1
  427. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  428. package/dist/multistream/remoteMediaGroup.js +0 -267
  429. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  430. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  431. package/dist/multistream/remoteMediaManager.js +0 -1211
  432. package/dist/multistream/remoteMediaManager.js.map +0 -1
  433. package/dist/multistream/sendSlotManager.d.ts +0 -61
  434. package/dist/multistream/sendSlotManager.js +0 -236
  435. package/dist/multistream/sendSlotManager.js.map +0 -1
  436. package/dist/reactions/constants.d.ts +0 -3
  437. package/dist/reactions/constants.js +0 -12
  438. package/dist/reactions/constants.js.map +0 -1
  439. package/dist/rtcMetrics/constants.d.ts +0 -4
  440. package/dist/rtcMetrics/constants.js +0 -11
  441. package/dist/rtcMetrics/constants.js.map +0 -1
  442. package/dist/rtcMetrics/index.d.ts +0 -54
  443. package/dist/rtcMetrics/index.js +0 -140
  444. package/dist/rtcMetrics/index.js.map +0 -1
  445. package/dist/webinar/collection.d.ts +0 -16
  446. package/dist/webinar/collection.js +0 -43
  447. package/dist/webinar/collection.js.map +0 -1
  448. package/dist/webinar/index.d.ts +0 -5
  449. package/dist/webinar/index.js +0 -68
  450. package/dist/webinar/index.js.map +0 -1
  451. package/src/annotation/annotation.types.ts +0 -50
  452. package/src/annotation/constants.ts +0 -36
  453. package/src/annotation/index.ts +0 -328
  454. package/src/breakouts/README.md +0 -220
  455. package/src/breakouts/breakout.ts +0 -188
  456. package/src/breakouts/collection.ts +0 -19
  457. package/src/breakouts/edit-lock-error.ts +0 -25
  458. package/src/breakouts/events.ts +0 -56
  459. package/src/breakouts/index.ts +0 -925
  460. package/src/breakouts/request.ts +0 -55
  461. package/src/breakouts/utils.ts +0 -57
  462. package/src/common/errors/no-meeting-info.ts +0 -24
  463. package/src/controls-options-manager/types.ts +0 -59
  464. package/src/index.ts +0 -40
  465. package/src/interpretation/README.md +0 -60
  466. package/src/interpretation/collection.ts +0 -19
  467. package/src/interpretation/index.ts +0 -332
  468. package/src/interpretation/siLanguage.ts +0 -18
  469. package/src/meeting/locusMediaRequest.ts +0 -313
  470. package/src/meeting/request.type.ts +0 -13
  471. package/src/meetings/meetings.types.ts +0 -12
  472. package/src/member/types.ts +0 -38
  473. package/src/multistream/mediaRequestManager.ts +0 -440
  474. package/src/multistream/receiveSlot.ts +0 -184
  475. package/src/multistream/receiveSlotManager.ts +0 -166
  476. package/src/multistream/remoteMedia.ts +0 -254
  477. package/src/multistream/remoteMediaGroup.ts +0 -284
  478. package/src/multistream/remoteMediaManager.ts +0 -1145
  479. package/src/multistream/sendSlotManager.ts +0 -170
  480. package/src/reactions/constants.ts +0 -4
  481. package/src/rtcMetrics/constants.ts +0 -3
  482. package/src/rtcMetrics/index.ts +0 -124
  483. package/src/webinar/collection.ts +0 -31
  484. package/src/webinar/index.ts +0 -62
  485. package/test/integration/spec/converged-space-meetings.js +0 -233
  486. package/test/unit/spec/annotation/index.ts +0 -418
  487. package/test/unit/spec/breakouts/breakout.ts +0 -237
  488. package/test/unit/spec/breakouts/collection.ts +0 -15
  489. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  490. package/test/unit/spec/breakouts/events.ts +0 -89
  491. package/test/unit/spec/breakouts/index.ts +0 -1790
  492. package/test/unit/spec/breakouts/request.ts +0 -104
  493. package/test/unit/spec/breakouts/utils.js +0 -72
  494. package/test/unit/spec/interpretation/collection.ts +0 -15
  495. package/test/unit/spec/interpretation/index.ts +0 -589
  496. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  497. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  498. package/test/unit/spec/media/index.ts +0 -290
  499. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  500. package/test/unit/spec/meeting-info/index.js +0 -300
  501. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  502. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  503. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  504. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  505. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  506. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  507. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  508. package/test/unit/spec/reachability/request.js +0 -68
  509. package/test/unit/spec/roap/request.ts +0 -232
  510. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  511. package/test/unit/spec/webinar/collection.ts +0 -13
  512. package/test/unit/spec/webinar/index.ts +0 -60
  513. package/test/utils/constants.js +0 -9
  514. package/test/utils/integrationTestUtils.js +0 -46
  515. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  516. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -1,17 +1,13 @@
1
1
  /* eslint no-shadow: ["error", { "allow": ["eventType"] }] */
2
2
 
3
3
  import '@webex/internal-plugin-mercury';
4
- import '@webex/internal-plugin-conversation';
5
- import '@webex/internal-plugin-metrics';
6
4
  // @ts-ignore
7
5
  import {WebexPlugin} from '@webex/webex-core';
8
- import {setLogger} from '@webex/internal-media-core';
9
-
10
- import * as mediaHelpersModule from '@webex/media-helpers';
11
6
 
12
7
  import 'webrtc-adapter';
13
8
 
14
9
  import Metrics from '../metrics';
10
+ import {trigger, eventType} from '../metrics/config';
15
11
  import LoggerConfig from '../common/logs/logger-config';
16
12
  import StaticConfig from '../common/config';
17
13
  import LoggerProxy from '../common/logs/logger-proxy';
@@ -42,14 +38,11 @@ import {
42
38
  MEETING_REMOVED_REASON,
43
39
  _CONVERSATION_URL_,
44
40
  CONVERSATION_URL,
45
- MEETINGNUMBER,
46
- _JOINED_,
47
- _MOVED_,
48
41
  } from '../constants';
49
42
  import BEHAVIORAL_METRICS from '../metrics/constants';
50
43
  import MeetingInfo from '../meeting-info';
51
44
  import MeetingInfoV2 from '../meeting-info/meeting-info-v2';
52
- import Meeting, {CallStateForMetrics} from '../meeting';
45
+ import Meeting from '../meeting';
53
46
  import PersonalMeetingRoom from '../personal-meeting-room';
54
47
  import Reachability from '../reachability';
55
48
  import Request from './request';
@@ -58,38 +51,7 @@ import CaptchaError from '../common/errors/captcha-error';
58
51
 
59
52
  import MeetingCollection from './collection';
60
53
  import MeetingsUtil from './util';
61
- import PermissionError from '../common/errors/permission';
62
- import {INoiseReductionEffect, IVirtualBackgroundEffect} from './meetings.types';
63
- import {SpaceIDDeprecatedError} from '../common/errors/webex-errors';
64
- import NoMeetingInfoError from '../common/errors/no-meeting-info';
65
-
66
- let mediaLogger;
67
-
68
- class MediaLogger {
69
- info(...args) {
70
- LoggerProxy.logger.info(...args);
71
- }
72
54
 
73
- log(...args) {
74
- LoggerProxy.logger.log(...args);
75
- }
76
-
77
- error(...args) {
78
- LoggerProxy.logger.error(...args);
79
- }
80
-
81
- warn(...args) {
82
- LoggerProxy.logger.warn(...args);
83
- }
84
-
85
- trace(...args) {
86
- LoggerProxy.logger.trace(...args);
87
- }
88
-
89
- debug(...args) {
90
- LoggerProxy.logger.debug(...args);
91
- }
92
- }
93
55
  /**
94
56
  * Meetings Ready Event
95
57
  * Emitted when the meetings instance on webex is ready
@@ -148,13 +110,12 @@ export default class Meetings extends WebexPlugin {
148
110
  meetingCollection: any;
149
111
  personalMeetingRoom: any;
150
112
  preferredWebexSite: any;
151
- reachability: Reachability;
113
+ reachability: any;
152
114
  registered: any;
153
115
  request: any;
154
116
  geoHintInfo: any;
155
117
  meetingInfo: any;
156
- mediaHelpers: any;
157
- breakoutLocusForHandleLater: any;
118
+
158
119
  namespace = MEETINGS;
159
120
 
160
121
  /**
@@ -166,17 +127,6 @@ export default class Meetings extends WebexPlugin {
166
127
  constructor(...args) {
167
128
  super(...args);
168
129
 
169
- /**
170
- * The webrtc-core media helpers. This is a temporary solution required for the SDK sample app
171
- * to be able to call media helper functions.
172
- *
173
- * @instance
174
- * @type {Object}
175
- * @private
176
- * @memberof Meetings
177
- */
178
- this.mediaHelpers = mediaHelpersModule;
179
-
180
130
  /**
181
131
  * The Meetings request to interact with server
182
132
  * @instance
@@ -204,17 +154,15 @@ export default class Meetings extends WebexPlugin {
204
154
  * @memberof Meetings
205
155
  */
206
156
  this.personalMeetingRoom = null;
207
-
208
157
  /**
209
- * The Reachability object to interact with server
158
+ * The Reachability object to interact with server, starts as null until {@link Meeting#setReachability} is called
210
159
  * starts as null
211
160
  * @instance
212
161
  * @type {Object}
213
162
  * @private
214
163
  * @memberof Meetings
215
164
  */
216
- // @ts-ignore
217
- this.reachability = new Reachability(this.webex);
165
+ this.reachability = null;
218
166
 
219
167
  /**
220
168
  * If the meetings plugin has been registered and listening via {@link Meetings#register}
@@ -244,137 +192,30 @@ export default class Meetings extends WebexPlugin {
244
192
  */
245
193
  this.media = {
246
194
  getUserMedia: Media.getUserMedia,
195
+ getSupportedDevice: Media.getSupportedDevice,
247
196
  };
248
197
 
249
198
  this.onReady();
250
199
  }
251
200
 
252
201
  /**
253
- * check whether you need to handle this main session's locus data or not
254
- * @param {Object} meeting current meeting data
255
- * @param {Object} newLocus new locus data
256
- * @returns {boolean}
257
- * @private
258
- * @memberof Meetings
259
- */
260
- private isNeedHandleMainLocus(meeting: any, newLocus: any) {
261
- const breakoutUrl = newLocus.controls?.breakout?.url;
262
- const breakoutLocus = this.meetingCollection.getActiveBreakoutLocus(breakoutUrl);
263
-
264
- const isSelfJoined = newLocus?.self?.state === _JOINED_;
265
- const isSelfMoved = newLocus?.self?.state === _LEFT_ && newLocus?.self?.reason === _MOVED_;
266
- // @ts-ignore
267
- const deviceFromNewLocus = MeetingsUtil.getThisDevice(newLocus, this.webex.internal.device.url);
268
- const isResourceMovedOnThisDevice =
269
- deviceFromNewLocus?.state === _LEFT_ && deviceFromNewLocus?.reason === _MOVED_;
270
-
271
- const isNewLocusJoinThisDevice = MeetingsUtil.joinedOnThisDevice(
272
- meeting,
273
- newLocus,
274
- // @ts-ignore
275
- this.webex.internal.device.url
276
- );
277
- const isBreakoutLocusJoinThisDevice =
278
- breakoutLocus?.joinedWith?.correlationId &&
279
- breakoutLocus.joinedWith.correlationId === meeting?.correlationId;
280
-
281
- if (isSelfJoined && isNewLocusJoinThisDevice) {
282
- LoggerProxy.logger.log(
283
- 'Meetings:index#isNeedHandleMainLocus --> self this device shown as JOINED in the main session'
284
- );
285
- if (breakoutLocus?.joinedWith && deviceFromNewLocus) {
286
- const breakoutReplaceAt =
287
- breakoutLocus.joinedWith.replaces?.length > 0
288
- ? breakoutLocus.joinedWith.replaces[0].replaceAt
289
- : '';
290
- const newLocusReplaceAt =
291
- deviceFromNewLocus.replaces?.length > 0 ? deviceFromNewLocus.replaces[0].replaceAt : '';
292
- if (breakoutReplaceAt && newLocusReplaceAt && breakoutReplaceAt > newLocusReplaceAt) {
293
- LoggerProxy.logger.log(
294
- `Meetings:index#isNeedHandleMainLocus --> this is expired main joined status locus_dto replacedAt ${newLocusReplaceAt} bo replacedAt ${breakoutReplaceAt}`
295
- );
296
-
297
- return false;
298
- }
299
- }
300
-
301
- return true;
302
- }
303
- if (isBreakoutLocusJoinThisDevice) {
304
- LoggerProxy.logger.log(
305
- `Meetings:index#isNeedHandleMainLocus --> there is active breakout session and joined on this device, and don't need to handle main session: ${breakoutUrl}`
306
- );
307
-
308
- return false;
309
- }
310
- if (isSelfMoved && (newLocus?.self?.removed || isResourceMovedOnThisDevice)) {
311
- LoggerProxy.logger.log(
312
- 'Meetings:index#isNeedHandleMainLocus --> self moved main locus with self removed status or with device resource moved, not need to handle'
313
- );
314
-
315
- return false;
316
- }
317
- if (isSelfJoined && isResourceMovedOnThisDevice) {
318
- LoggerProxy.logger.log(
319
- 'Meetings:index#isNeedHandleMainLocus --> self device left&moved in main locus with self joined status, not need to handle'
320
- );
321
-
322
- return false;
323
- }
324
- LoggerProxy.logger.log(
325
- 'Meetings:index#isNeedHandleMainLocus --> this is a normal main session locusDTO update case'
326
- );
327
-
328
- return true;
329
- }
330
-
331
- /**
332
- * check whether you need to handle this locus data or not
333
- * @param {Object} meeting old locus data
334
- * @param {Object} newLocus new locus data
335
- * @returns {boolean}
336
- * @private
337
- * @memberof Meetings
338
- */
339
- private isNeedHandleLocusDTO(meeting: any, newLocus: any) {
340
- if (newLocus) {
341
- const isNewLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(newLocus);
342
- const isSelfMoved = newLocus?.self?.state === _LEFT_ && newLocus?.self?.reason === _MOVED_;
343
- if (!meeting) {
344
- if (isNewLocusAsBreakout) {
345
- LoggerProxy.logger.log(
346
- `Meetings:index#isNeedHandleLocusDTO --> the first breakout session locusDTO active status: ${newLocus.fullState?.active}`
347
- );
348
-
349
- return newLocus.self?.state === _JOINED_;
350
- }
351
-
352
- return this.isNeedHandleMainLocus(meeting, newLocus);
353
- }
354
- if (!isNewLocusAsBreakout) {
355
- return this.isNeedHandleMainLocus(meeting, newLocus);
356
- }
357
-
358
- return !isSelfMoved;
359
- }
360
-
361
- return true;
362
- }
363
-
364
- /**
365
- * get corresponding meeting object by locus data
202
+ * handle locus events and takes meeting actions with them as they come in
366
203
  * @param {Object} data a locus event
367
204
  * @param {String} data.locusUrl
368
205
  * @param {Object} data.locus
369
- * @returns {Object}
206
+ * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
207
+ * @param {String} data.eventType
208
+ * @returns {undefined}
370
209
  * @private
371
210
  * @memberof Meetings
372
211
  */
373
- getCorrespondingMeetingByLocus(data) {
212
+ private handleLocusEvent(data: {locusUrl: string; locus: any}, useRandomDelayForInfo = false) {
213
+ let meeting = null;
214
+
374
215
  // getting meeting by correlationId. This will happen for the new event
375
216
  // Either the locus
376
217
  // TODO : Add check for the callBack Address
377
- return (
218
+ meeting =
378
219
  this.meetingCollection.getByKey(LOCUS_URL, data.locusUrl) ||
379
220
  // @ts-ignore
380
221
  this.meetingCollection.getByKey(
@@ -390,24 +231,7 @@ export default class Meetings extends WebexPlugin {
390
231
  ) ||
391
232
  (data.locus.info?.isUnifiedSpaceMeeting
392
233
  ? undefined
393
- : this.meetingCollection.getByKey(CONVERSATION_URL, data.locus.conversationUrl)) ||
394
- this.meetingCollection.getByKey(MEETINGNUMBER, data.locus?.info?.webExMeetingId)
395
- );
396
- }
397
-
398
- /**
399
- * handle locus events and takes meeting actions with them as they come in
400
- * @param {Object} data a locus event
401
- * @param {String} data.locusUrl
402
- * @param {Object} data.locus
403
- * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
404
- * @param {String} data.eventType
405
- * @returns {undefined}
406
- * @private
407
- * @memberof Meetings
408
- */
409
- private handleLocusEvent(data: {locusUrl: string; locus: any}, useRandomDelayForInfo = false) {
410
- let meeting = this.getCorrespondingMeetingByLocus(data);
234
+ : this.meetingCollection.getByKey(CONVERSATION_URL, data.locus.conversationUrl));
411
235
 
412
236
  // Special case when locus has got replaced, This only happend once if a replace locus exists
413
237
  // https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-changing-mid-call
@@ -420,16 +244,6 @@ export default class Meetings extends WebexPlugin {
420
244
  );
421
245
  }
422
246
 
423
- if (meeting && !MeetingsUtil.isBreakoutLocusDTO(data.locus)) {
424
- meeting.locusInfo.updateMainSessionLocusCache(data.locus);
425
- }
426
- if (!this.isNeedHandleLocusDTO(meeting, data.locus)) {
427
- LoggerProxy.logger.log(
428
- `Meetings:index#handleLocusEvent --> doesn't need to process locus event`
429
- );
430
-
431
- return;
432
- }
433
247
  if (!meeting) {
434
248
  // TODO: create meeting when we get a meeting object
435
249
  // const checkForEnded = (locus) => {
@@ -486,7 +300,6 @@ export default class Meetings extends WebexPlugin {
486
300
 
487
301
  // It's a new meeting so initialize the locus data
488
302
  meeting.locusInfo.initialSetup(data.locus);
489
- this.checkHandleBreakoutLocus(data.locus);
490
303
  })
491
304
  .catch((e) => {
492
305
  LoggerProxy.logger.error(e);
@@ -496,15 +309,10 @@ export default class Meetings extends WebexPlugin {
496
309
  // because the other user left so before sending 'added' event make sure it exists in the collection
497
310
 
498
311
  if (this.getMeetingByType(_ID_, meeting.id)) {
499
- // @ts-ignore
500
- this.webex.internal.newMetrics.submitClientEvent({
501
- name: 'client.call.remote-started',
502
- payload: {
503
- trigger: 'mercury-event',
504
- },
505
- options: {
506
- meetingId: meeting.id,
507
- },
312
+ Metrics.postEvent({
313
+ event: eventType.REMOTE_STARTED,
314
+ meeting,
315
+ data: {trigger: trigger.MERCURY_EVENT},
508
316
  });
509
317
  Trigger.trigger(
510
318
  this,
@@ -623,9 +431,6 @@ export default class Meetings extends WebexPlugin {
623
431
  // @ts-ignore
624
432
  LoggerProxy.set(this.webex.logger);
625
433
 
626
- mediaLogger = new MediaLogger();
627
- setLogger(mediaLogger);
628
-
629
434
  /**
630
435
  * The MeetingInfo object to interact with server
631
436
  * @instance
@@ -657,7 +462,7 @@ export default class Meetings extends WebexPlugin {
657
462
 
658
463
  MeetingsUtil.checkH264Support({disableNotifications: true});
659
464
  // @ts-ignore
660
- Metrics.initialSetup(this.webex);
465
+ Metrics.initialSetup(this.meetingCollection, this.webex);
661
466
  });
662
467
  }
663
468
 
@@ -681,6 +486,21 @@ export default class Meetings extends WebexPlugin {
681
486
  }
682
487
  }
683
488
 
489
+ /**
490
+ * API to enable or disable TURN discovery
491
+ * @param {Boolean} enable
492
+ * @private
493
+ * @memberof Meetings
494
+ * @returns {undefined}
495
+ */
496
+ private _toggleTurnDiscovery(enable: boolean) {
497
+ if (typeof enable !== 'boolean') {
498
+ return;
499
+ }
500
+ // @ts-ignore
501
+ this.config.experimental.enableTurnDiscovery = enable;
502
+ }
503
+
684
504
  /**
685
505
  * API to toggle starting adhoc meeting
686
506
  * @param {Boolean} changeState
@@ -811,36 +631,6 @@ export default class Meetings extends WebexPlugin {
811
631
  );
812
632
  }
813
633
 
814
- /**
815
- * Creates a noise reduction effect
816
- *
817
- * @param {INoiseReductionEffect} options optional custom effect options
818
- * @returns {Promise<effect>} noise reduction effect.
819
- * @public
820
- * @memberof Meetings
821
- */
822
- createNoiseReductionEffect = async (options?: INoiseReductionEffect) => {
823
- // @ts-ignore
824
- const authToken = this.webex.credentials.supertoken.access_token;
825
-
826
- return new mediaHelpersModule.NoiseReductionEffect({authToken, ...options});
827
- };
828
-
829
- /**
830
- * Creates a virtual background effect
831
- *
832
- * @param {IVirtualBackgroundEffect} options optional custom effect options
833
- * @returns {Promise<effect>} virtual background effect.
834
- * @public
835
- * @memberof Meetings
836
- */
837
- createVirtualBackgroundEffect = async (options?: IVirtualBackgroundEffect) => {
838
- // @ts-ignore
839
- const authToken = this.webex.credentials.supertoken.access_token;
840
-
841
- return new mediaHelpersModule.VirtualBackgroundEffect({authToken, ...options});
842
- };
843
-
844
634
  /**
845
635
  * Uploads logs to the webex services for tracking
846
636
  * @param {Object} [options={}]
@@ -855,10 +645,8 @@ export default class Meetings extends WebexPlugin {
855
645
  */
856
646
  uploadLogs(
857
647
  options: {
858
- autoupload?: boolean;
859
648
  callStart?: string;
860
649
  feedbackId?: string;
861
- locussessionid?: string;
862
650
  locusId?: string;
863
651
  correlationId?: string;
864
652
  meetingId?: string;
@@ -875,7 +663,6 @@ export default class Meetings extends WebexPlugin {
875
663
  'Meetings:index#uploadLogs --> Upload logs for meeting completed.',
876
664
  uploadResult
877
665
  );
878
- Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UPLOAD_LOGS_SUCCESS, options);
879
666
  Trigger.trigger(
880
667
  this,
881
668
  {
@@ -910,7 +697,8 @@ export default class Meetings extends WebexPlugin {
910
697
  );
911
698
 
912
699
  Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UPLOAD_LOGS_FAILURE, {
913
- ...options,
700
+ // @ts-ignore - seems like typo
701
+ meetingId: options.meetingsId,
914
702
  reason: uploadError.message,
915
703
  stack: uploadError.stack,
916
704
  code: uploadError.code,
@@ -918,6 +706,17 @@ export default class Meetings extends WebexPlugin {
918
706
  });
919
707
  }
920
708
 
709
+ /**
710
+ * initializes the reachability instance for Meetings
711
+ * @returns {undefined}
712
+ * @public
713
+ * @memberof Meetings
714
+ */
715
+ setReachability() {
716
+ // @ts-ignore
717
+ this.reachability = new Reachability(this.webex);
718
+ }
719
+
921
720
  /**
922
721
  * gets the reachability instance for Meetings
923
722
  * @returns {Reachability}
@@ -935,6 +734,10 @@ export default class Meetings extends WebexPlugin {
935
734
  * @memberof Meetings
936
735
  */
937
736
  startReachability() {
737
+ if (!this.reachability) {
738
+ this.setReachability();
739
+ }
740
+
938
741
  return this.getReachability().gatherReachability();
939
742
  }
940
743
 
@@ -962,29 +765,6 @@ export default class Meetings extends WebexPlugin {
962
765
  if (res) {
963
766
  this.preferredWebexSite = MeetingsUtil.parseDefaultSiteFromMeetingPreferences(res);
964
767
  }
965
-
966
- // fall back to getting the preferred site from the user information
967
- if (!this.preferredWebexSite) {
968
- // @ts-ignore
969
- return this.webex.internal.user
970
- .get()
971
- .then((user) => {
972
- const preferredWebexSite =
973
- user?.userPreferences?.userPreferencesItems?.preferredWebExSite;
974
- if (preferredWebexSite) {
975
- this.preferredWebexSite = preferredWebexSite;
976
- } else {
977
- throw new Error('site not found');
978
- }
979
- })
980
- .catch(() => {
981
- LoggerProxy.logger.error(
982
- 'Failed to fetch preferred site from user - no site will be set'
983
- );
984
- });
985
- }
986
-
987
- return Promise.resolve();
988
768
  });
989
769
  }
990
770
 
@@ -1025,48 +805,29 @@ export default class Meetings extends WebexPlugin {
1025
805
  }
1026
806
 
1027
807
  /**
1028
- * Create a meeting or return an existing meeting.
1029
- * @param {string} destination - sipURL, phonenumber, or locus object}
808
+ * Create a meeting.
809
+ * @param {string} destination - sipURL, spaceId, phonenumber, or locus object}
1030
810
  * @param {string} [type] - the optional specified type, such as locusId
1031
811
  * @param {Boolean} useRandomDelayForInfo - whether a random delay should be added to fetching meeting info
1032
- * @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
1033
- * @param {string} correlationId - the optional specified correlationId (callStateForMetrics.correlationId can be provided instead)
1034
- * @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
1035
- * @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
1036
812
  * @returns {Promise<Meeting>} A new Meeting.
1037
813
  * @public
1038
814
  * @memberof Meetings
1039
815
  */
1040
- public create(
1041
- destination: string,
1042
- type: string = null,
1043
- useRandomDelayForInfo = false,
1044
- infoExtraParams = {},
1045
- correlationId: string = undefined,
1046
- failOnMissingMeetingInfo = false,
1047
- callStateForMetrics: CallStateForMetrics = undefined
1048
- ) {
816
+ public create(destination: string, type: string = null, useRandomDelayForInfo = false) {
1049
817
  // TODO: type should be from a dictionary
1050
818
 
1051
819
  // Validate meeting information based on the provided destination and
1052
820
  // type. This must be performed prior to determining if the meeting is
1053
821
  // found in the collection, as we mutate the destination for hydra person
1054
822
  // id values.
1055
- if (correlationId) {
1056
- callStateForMetrics = {...(callStateForMetrics || {}), correlationId};
1057
- }
1058
-
1059
823
  return (
1060
824
  this.meetingInfo
1061
825
  .fetchInfoOptions(destination, type)
1062
826
  // Catch a failure to fetch info options.
1063
827
  .catch((error) => {
1064
- LoggerProxy.logger.error(
1065
- `Meetings:index#create --> ERROR, unable to determine info options: ${error.message}`
828
+ LoggerProxy.logger.info(
829
+ `Meetings:index#create --> INFO, unable to determine info options: ${error.message}`
1066
830
  );
1067
- if (error instanceof SpaceIDDeprecatedError) {
1068
- throw new SpaceIDDeprecatedError();
1069
- }
1070
831
  })
1071
832
  .then((options: any = {}) => {
1072
833
  // Normalize the destination.
@@ -1097,59 +858,49 @@ export default class Meetings extends WebexPlugin {
1097
858
  // Validate if a meeting was found.
1098
859
  if (!meeting) {
1099
860
  // Create a meeting based on the normalized destination and type.
1100
- return this.createMeeting(
1101
- targetDest,
1102
- type,
1103
- useRandomDelayForInfo,
1104
- infoExtraParams,
1105
- callStateForMetrics,
1106
- failOnMissingMeetingInfo
1107
- ).then((createdMeeting: any) => {
1108
- // If the meeting was successfully created.
1109
- if (createdMeeting && createdMeeting.on) {
1110
- // Create a destruction event for the meeting.
1111
- createdMeeting.on(EVENTS.DESTROY_MEETING, (payload) => {
1112
- // @ts-ignore
1113
- if (this.config.autoUploadLogs) {
1114
- this.uploadLogs({
1115
- callStart: createdMeeting.locusInfo?.fullState?.lastActive,
1116
- locussessionid: createdMeeting.locusInfo?.fullState?.sessionId,
1117
- correlationId: createdMeeting.correlationId,
1118
- feedbackId: createdMeeting.correlationId,
1119
- locusId: createdMeeting.locusId,
1120
- meetingId: createdMeeting.locusInfo?.info?.webExMeetingId,
1121
- autoupload: true,
1122
- }).then(() => this.destroy(createdMeeting, payload.reason));
1123
- } else {
1124
- this.destroy(createdMeeting, payload.reason);
1125
- }
1126
- });
1127
-
1128
- createdMeeting.on(EVENTS.REQUEST_UPLOAD_LOGS, (meetingInstance) => {
1129
- // @ts-ignore
1130
- if (this.config.autoUploadLogs) {
1131
- this.uploadLogs({
1132
- callStart: meetingInstance?.locusInfo?.fullState?.lastActive,
1133
- locussessionid: meetingInstance?.locusInfo?.fullState?.sessionId,
1134
- correlationId: meetingInstance.correlationId,
1135
- feedbackId: meetingInstance.correlationId,
1136
- locusId: meetingInstance.locusId,
1137
- meetingId: meetingInstance.locusInfo?.info?.webExMeetingId,
1138
- autoupload: true,
1139
- });
1140
- }
1141
- });
1142
- } else {
1143
- LoggerProxy.logger.error(
1144
- `Meetings:index#create --> ERROR, meeting does not have on method, will not be destroyed, meeting cleanup impossible for meeting: ${meeting}`
1145
- );
861
+ return this.createMeeting(targetDest, type, useRandomDelayForInfo).then(
862
+ (createdMeeting: any) => {
863
+ // If the meeting was successfully created.
864
+ if (createdMeeting && createdMeeting.on) {
865
+ // Create a destruction event for the meeting.
866
+ createdMeeting.on(EVENTS.DESTROY_MEETING, (payload) => {
867
+ // @ts-ignore
868
+ if (this.config.autoUploadLogs) {
869
+ this.uploadLogs({
870
+ callStart: createdMeeting.locusInfo?.fullState?.lastActive,
871
+ correlationId: createdMeeting.correlationId,
872
+ feedbackId: createdMeeting.correlationId,
873
+ locusId: createdMeeting.locusId,
874
+ meetingId: createdMeeting.locusInfo?.info?.webExMeetingId,
875
+ }).then(() => this.destroy(createdMeeting, payload.reason));
876
+ } else {
877
+ this.destroy(createdMeeting, payload.reason);
878
+ }
879
+ });
880
+
881
+ createdMeeting.on(EVENTS.REQUEST_UPLOAD_LOGS, (meetingInstance) => {
882
+ // @ts-ignore
883
+ if (this.config.autoUploadLogs) {
884
+ this.uploadLogs({
885
+ callStart: meetingInstance?.locusInfo?.fullState?.lastActive,
886
+ correlationId: meetingInstance.correlationId,
887
+ feedbackId: meetingInstance.correlationId,
888
+ locusId: meetingInstance.locusId,
889
+ meetingId: meetingInstance.locusInfo?.info?.webExMeetingId,
890
+ });
891
+ }
892
+ });
893
+ } else {
894
+ LoggerProxy.logger.error(
895
+ `Meetings:index#create --> ERROR, meeting does not have on method, will not be destroyed, meeting cleanup impossible for meeting: ${meeting}`
896
+ );
897
+ }
898
+
899
+ // Return the newly created meeting.
900
+ return Promise.resolve(createdMeeting);
1146
901
  }
1147
-
1148
- // Return the newly created meeting.
1149
- return Promise.resolve(createdMeeting);
1150
- });
902
+ );
1151
903
  }
1152
- meeting.setCallStateForMetrics(callStateForMetrics);
1153
904
 
1154
905
  // Return the existing meeting.
1155
906
  return Promise.resolve(meeting);
@@ -1161,9 +912,6 @@ export default class Meetings extends WebexPlugin {
1161
912
  * @param {String} destination see create()
1162
913
  * @param {String} type see create()
1163
914
  * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
1164
- * @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
1165
- * @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
1166
- * @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
1167
915
  * @returns {Promise} a new meeting instance complete with meeting info and destination
1168
916
  * @private
1169
917
  * @memberof Meetings
@@ -1171,10 +919,7 @@ export default class Meetings extends WebexPlugin {
1171
919
  private async createMeeting(
1172
920
  destination: any,
1173
921
  type: string = null,
1174
- useRandomDelayForInfo = false,
1175
- infoExtraParams = {},
1176
- callStateForMetrics: CallStateForMetrics = undefined,
1177
- failOnMissingMeetingInfo = false
922
+ useRandomDelayForInfo = false
1178
923
  ) {
1179
924
  const meeting = new Meeting(
1180
925
  {
@@ -1184,11 +929,11 @@ export default class Meetings extends WebexPlugin {
1184
929
  deviceUrl: this.webex.internal.device.url,
1185
930
  // @ts-ignore
1186
931
  orgId: this.webex.internal.device.orgId,
932
+ roapSeq: 0,
1187
933
  locus: type === _LOCUS_ID_ ? destination : null, // pass the locus object if present
1188
934
  meetingInfoProvider: this.meetingInfo,
1189
935
  destination,
1190
936
  destinationType: type,
1191
- callStateForMetrics,
1192
937
  },
1193
938
  {
1194
939
  // @ts-ignore
@@ -1223,38 +968,19 @@ export default class Meetings extends WebexPlugin {
1223
968
 
1224
969
  if (enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0) {
1225
970
  meeting.fetchMeetingInfoTimeoutId = setTimeout(
1226
- () =>
1227
- meeting.fetchMeetingInfo({
1228
- extraParams: infoExtraParams,
1229
- sendCAevents: !!callStateForMetrics?.correlationId, // if client sends correlation id as argument of public create(), then it means that this meeting creation is part of a pre-join intent from user
1230
- }),
971
+ () => meeting.fetchMeetingInfo({}),
1231
972
  waitingTime
1232
973
  );
1233
974
  meeting.parseMeetingInfo(undefined, destination);
1234
975
  } else {
1235
- await meeting.fetchMeetingInfo({
1236
- extraParams: infoExtraParams,
1237
- sendCAevents: !!callStateForMetrics?.correlationId, // if client sends correlation id as argument of public create(), then it means that this meeting creation is part of a pre-join intent from user
1238
- });
976
+ await meeting.fetchMeetingInfo({});
1239
977
  }
1240
978
  } catch (err) {
1241
- if (
1242
- !(err instanceof CaptchaError) &&
1243
- !(err instanceof PasswordError) &&
1244
- !(err instanceof PermissionError)
1245
- ) {
979
+ if (!(err instanceof CaptchaError) && !(err instanceof PasswordError)) {
980
+ // if there is no meeting info we assume its a 1:1 call or wireless share
1246
981
  LoggerProxy.logger.info(
1247
982
  `Meetings:index#createMeeting --> Info Unable to fetch meeting info for ${destination}.`
1248
983
  );
1249
- if (failOnMissingMeetingInfo) {
1250
- LoggerProxy.logger.info(
1251
- `Meetings:index#createMeeting --> Destroying meeting due to missing meeting info.`
1252
- );
1253
- // @ts-ignore
1254
- this.destroy(meeting, MEETING_REMOVED_REASON.MISSING_MEETING_INFO);
1255
- throw new NoMeetingInfoError();
1256
- }
1257
- // if there is no meeting info and no error should be thrown then we assume its a 1:1 call or wireless share
1258
984
  LoggerProxy.logger.info(
1259
985
  'Meetings:index#createMeeting --> Info assuming this destination is a 1:1 or wireless share'
1260
986
  );
@@ -1307,7 +1033,7 @@ export default class Meetings extends WebexPlugin {
1307
1033
  //
1308
1034
  // Our job is to determine the appropriate one
1309
1035
  // and its corresponding service so that developers
1310
- // need only sipURL to get a meeting
1036
+ // need only sipURL or spaceID to get a meeting
1311
1037
  // and its ID, but have the option to use createWithType()
1312
1038
  // and specify those types to get meetingInfo
1313
1039
  }
@@ -1351,108 +1077,33 @@ export default class Meetings extends WebexPlugin {
1351
1077
  * @memberof Meetings
1352
1078
  */
1353
1079
  public syncMeetings() {
1354
- return this.request
1355
- .getActiveMeetings()
1356
- .then((locusArray) => {
1357
- const activeLocusUrl = [];
1358
-
1359
- if (locusArray?.loci && locusArray.loci.length > 0) {
1360
- const lociToUpdate = this.sortLocusArrayToUpdate(locusArray.loci);
1361
- lociToUpdate.forEach((locus) => {
1362
- activeLocusUrl.push(locus.url);
1363
- this.handleLocusEvent({
1364
- locus,
1365
- locusUrl: locus.url,
1366
- });
1080
+ return this.request.getActiveMeetings().then((locusArray) => {
1081
+ const activeLocusUrl = [];
1082
+
1083
+ if (locusArray?.loci && locusArray.loci.length > 0) {
1084
+ locusArray.loci.forEach((locus) => {
1085
+ activeLocusUrl.push(locus.url);
1086
+ this.handleLocusEvent({
1087
+ locus,
1088
+ locusUrl: locus.url,
1367
1089
  });
1368
- }
1369
- const meetingsCollection = this.meetingCollection.getAll();
1090
+ });
1091
+ }
1092
+ const meetingsCollection = this.meetingCollection.getAll();
1370
1093
 
1371
- if (Object.keys(meetingsCollection).length > 0) {
1372
- // Some time the mercury event is missed after mercury reconnect
1373
- // if sync returns no locus then clear all the meetings
1374
- for (const meeting of Object.values(meetingsCollection)) {
1094
+ if (Object.keys(meetingsCollection).length > 0) {
1095
+ // Some time the mercury event is missed after mercury reconnect
1096
+ // if sync returns no locus then clear all the meetings
1097
+ for (const meeting of Object.values(meetingsCollection)) {
1098
+ // @ts-ignore
1099
+ if (!activeLocusUrl.includes(meeting.locusUrl)) {
1100
+ // destroy function also uploads logs
1375
1101
  // @ts-ignore
1376
- if (!activeLocusUrl.includes(meeting.locusUrl)) {
1377
- // destroy function also uploads logs
1378
- // @ts-ignore
1379
- this.destroy(meeting, MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);
1380
- }
1102
+ this.destroy(meeting, MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);
1381
1103
  }
1382
1104
  }
1383
- })
1384
- .catch((error) => {
1385
- LoggerProxy.logger.error(
1386
- `Meetings:index#syncMeetings --> failed to sync meetings, ${error}`
1387
- );
1388
- throw new Error(error);
1389
- });
1390
- }
1391
-
1392
- /**
1393
- * sort out locus array for initial creating
1394
- * @param {Array} loci original locus array
1395
- * @returns {undefined}
1396
- * @public
1397
- * @memberof Meetings
1398
- */
1399
- sortLocusArrayToUpdate(loci: any[]) {
1400
- const mainLoci = loci.filter((locus) => !MeetingsUtil.isBreakoutLocusDTO(locus));
1401
- const breakoutLoci = loci.filter((locus) => MeetingsUtil.isValidBreakoutLocus(locus));
1402
- this.breakoutLocusForHandleLater = [];
1403
- const lociToUpdate = [...mainLoci];
1404
- breakoutLoci.forEach((breakoutLocus) => {
1405
- const associateMainLocus = mainLoci.find(
1406
- (mainLocus) => mainLocus.controls?.breakout?.url === breakoutLocus.controls?.breakout?.url
1407
- );
1408
- const existCorrespondingMeeting = this.getCorrespondingMeetingByLocus({
1409
- locus: breakoutLocus,
1410
- locusUrl: breakoutLocus.url,
1411
- });
1412
-
1413
- if (associateMainLocus && !existCorrespondingMeeting) {
1414
- // if exists both main session and breakout session locus of the same non-exist meeting, handle main locus first,
1415
- // after meeting create with main locus, then handle the associate breakout locus.
1416
- // if only handle breakout locus, will miss some date
1417
- this.breakoutLocusForHandleLater.push(breakoutLocus);
1418
- } else {
1419
- lociToUpdate.push(breakoutLocus);
1420
1105
  }
1421
1106
  });
1422
-
1423
- return lociToUpdate;
1424
- }
1425
-
1426
- /**
1427
- * check breakout locus which waiting for main locus's meeting to be created, then handle the breakout locus
1428
- * @param {Object} newCreatedLocus the locus which just create meeting object of it
1429
- * @returns {undefined}
1430
- * @public
1431
- * @memberof Meetings
1432
- */
1433
- checkHandleBreakoutLocus(newCreatedLocus) {
1434
- if (
1435
- !newCreatedLocus ||
1436
- !this.breakoutLocusForHandleLater ||
1437
- !this.breakoutLocusForHandleLater.length
1438
- ) {
1439
- return;
1440
- }
1441
- if (MeetingsUtil.isBreakoutLocusDTO(newCreatedLocus)) {
1442
- return;
1443
- }
1444
- const existIndex = this.breakoutLocusForHandleLater.findIndex(
1445
- (breakoutLocus) =>
1446
- breakoutLocus.controls?.breakout?.url === newCreatedLocus.controls?.breakout?.url
1447
- );
1448
-
1449
- if (existIndex < 0) {
1450
- return;
1451
- }
1452
-
1453
- const associateBreakoutLocus = this.breakoutLocusForHandleLater[existIndex];
1454
- this.handleLocusEvent({locus: associateBreakoutLocus, locusUrl: associateBreakoutLocus.url});
1455
- this.breakoutLocusForHandleLater.splice(existIndex, 1);
1456
1107
  }
1457
1108
 
1458
1109
  /**
@@ -1474,15 +1125,4 @@ export default class Meetings extends WebexPlugin {
1474
1125
  getLogger() {
1475
1126
  return LoggerProxy.get();
1476
1127
  }
1477
-
1478
- /**
1479
- * Returns the first meeting it finds that has the webrtc media connection created.
1480
- * Useful for debugging in the console.
1481
- *
1482
- * @private
1483
- * @returns {Meeting} Meeting object that has a webrtc media connection, else undefined
1484
- */
1485
- getActiveWebrtcMeeting() {
1486
- return this.meetingCollection.getActiveWebrtcMeeting();
1487
- }
1488
1128
  }