@webex/plugin-meetings 3.0.0-beta.36 → 3.0.0-beta.360

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 (391) hide show
  1. package/README.md +58 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +94 -15
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/events.js +45 -0
  11. package/dist/breakouts/events.js.map +1 -0
  12. package/dist/breakouts/index.js +671 -81
  13. package/dist/breakouts/index.js.map +1 -1
  14. package/dist/breakouts/utils.js +45 -1
  15. package/dist/breakouts/utils.js.map +1 -1
  16. package/dist/common/errors/no-meeting-info.js +51 -0
  17. package/dist/common/errors/no-meeting-info.js.map +1 -0
  18. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  19. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +48 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/logs/request.js +5 -1
  25. package/dist/common/logs/request.js.map +1 -1
  26. package/dist/common/queue.js +24 -9
  27. package/dist/common/queue.js.map +1 -1
  28. package/dist/config.js +5 -10
  29. package/dist/config.js.map +1 -1
  30. package/dist/constants.js +226 -33
  31. package/dist/constants.js.map +1 -1
  32. package/dist/controls-options-manager/enums.js +14 -2
  33. package/dist/controls-options-manager/enums.js.map +1 -1
  34. package/dist/controls-options-manager/index.js +109 -15
  35. package/dist/controls-options-manager/index.js.map +1 -1
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +309 -18
  39. package/dist/controls-options-manager/util.js.map +1 -1
  40. package/dist/index.js +117 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/interceptors/index.js +15 -0
  43. package/dist/interceptors/index.js.map +1 -0
  44. package/dist/interceptors/locusRetry.js +93 -0
  45. package/dist/interceptors/locusRetry.js.map +1 -0
  46. package/dist/interpretation/collection.js +23 -0
  47. package/dist/interpretation/collection.js.map +1 -0
  48. package/dist/interpretation/index.js +366 -0
  49. package/dist/interpretation/index.js.map +1 -0
  50. package/dist/interpretation/siLanguage.js +25 -0
  51. package/dist/interpretation/siLanguage.js.map +1 -0
  52. package/dist/locus-info/controlsUtils.js +91 -2
  53. package/dist/locus-info/controlsUtils.js.map +1 -1
  54. package/dist/locus-info/index.js +383 -62
  55. package/dist/locus-info/index.js.map +1 -1
  56. package/dist/locus-info/infoUtils.js +7 -1
  57. package/dist/locus-info/infoUtils.js.map +1 -1
  58. package/dist/locus-info/mediaSharesUtils.js +57 -1
  59. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  60. package/dist/locus-info/parser.js +249 -72
  61. package/dist/locus-info/parser.js.map +1 -1
  62. package/dist/locus-info/selfUtils.js +89 -14
  63. package/dist/locus-info/selfUtils.js.map +1 -1
  64. package/dist/media/index.js +61 -101
  65. package/dist/media/index.js.map +1 -1
  66. package/dist/media/properties.js +73 -124
  67. package/dist/media/properties.js.map +1 -1
  68. package/dist/mediaQualityMetrics/config.js +1 -204
  69. package/dist/mediaQualityMetrics/config.js.map +1 -1
  70. package/dist/meeting/in-meeting-actions.js +86 -2
  71. package/dist/meeting/in-meeting-actions.js.map +1 -1
  72. package/dist/meeting/index.js +3938 -2803
  73. package/dist/meeting/index.js.map +1 -1
  74. package/dist/meeting/locusMediaRequest.js +292 -0
  75. package/dist/meeting/locusMediaRequest.js.map +1 -0
  76. package/dist/meeting/muteState.js +224 -136
  77. package/dist/meeting/muteState.js.map +1 -1
  78. package/dist/meeting/request.js +166 -152
  79. package/dist/meeting/request.js.map +1 -1
  80. package/dist/meeting/util.js +601 -417
  81. package/dist/meeting/util.js.map +1 -1
  82. package/dist/meeting-info/index.js +73 -7
  83. package/dist/meeting-info/index.js.map +1 -1
  84. package/dist/meeting-info/meeting-info-v2.js +192 -51
  85. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  86. package/dist/meeting-info/util.js +1 -1
  87. package/dist/meeting-info/util.js.map +1 -1
  88. package/dist/meeting-info/utilv2.js +36 -36
  89. package/dist/meeting-info/utilv2.js.map +1 -1
  90. package/dist/meetings/collection.js +39 -0
  91. package/dist/meetings/collection.js.map +1 -1
  92. package/dist/meetings/index.js +478 -118
  93. package/dist/meetings/index.js.map +1 -1
  94. package/dist/meetings/meetings.types.js +7 -0
  95. package/dist/meetings/meetings.types.js.map +1 -0
  96. package/dist/meetings/request.js +2 -0
  97. package/dist/meetings/request.js.map +1 -1
  98. package/dist/meetings/util.js +72 -6
  99. package/dist/meetings/util.js.map +1 -1
  100. package/dist/member/index.js +58 -0
  101. package/dist/member/index.js.map +1 -1
  102. package/dist/member/types.js +25 -0
  103. package/dist/member/types.js.map +1 -0
  104. package/dist/member/util.js +132 -25
  105. package/dist/member/util.js.map +1 -1
  106. package/dist/members/collection.js +10 -0
  107. package/dist/members/collection.js.map +1 -1
  108. package/dist/members/index.js +102 -6
  109. package/dist/members/index.js.map +1 -1
  110. package/dist/members/request.js +106 -38
  111. package/dist/members/request.js.map +1 -1
  112. package/dist/members/types.js +15 -0
  113. package/dist/members/types.js.map +1 -0
  114. package/dist/members/util.js +326 -232
  115. package/dist/members/util.js.map +1 -1
  116. package/dist/metrics/constants.js +16 -1
  117. package/dist/metrics/constants.js.map +1 -1
  118. package/dist/metrics/index.js +1 -446
  119. package/dist/metrics/index.js.map +1 -1
  120. package/dist/multistream/mediaRequestManager.js +228 -58
  121. package/dist/multistream/mediaRequestManager.js.map +1 -1
  122. package/dist/multistream/receiveSlot.js +29 -16
  123. package/dist/multistream/receiveSlot.js.map +1 -1
  124. package/dist/multistream/receiveSlotManager.js +39 -36
  125. package/dist/multistream/receiveSlotManager.js.map +1 -1
  126. package/dist/multistream/remoteMedia.js +44 -18
  127. package/dist/multistream/remoteMedia.js.map +1 -1
  128. package/dist/multistream/remoteMediaGroup.js +60 -3
  129. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  130. package/dist/multistream/remoteMediaManager.js +209 -59
  131. package/dist/multistream/remoteMediaManager.js.map +1 -1
  132. package/dist/multistream/sendSlotManager.js +233 -0
  133. package/dist/multistream/sendSlotManager.js.map +1 -0
  134. package/dist/reachability/clusterReachability.js +356 -0
  135. package/dist/reachability/clusterReachability.js.map +1 -0
  136. package/dist/reachability/index.js +269 -390
  137. package/dist/reachability/index.js.map +1 -1
  138. package/dist/reachability/request.js +6 -4
  139. package/dist/reachability/request.js.map +1 -1
  140. package/dist/reachability/util.js +29 -0
  141. package/dist/reachability/util.js.map +1 -0
  142. package/dist/reconnection-manager/index.js +217 -170
  143. package/dist/reconnection-manager/index.js.map +1 -1
  144. package/dist/recording-controller/index.js +21 -2
  145. package/dist/recording-controller/index.js.map +1 -1
  146. package/dist/recording-controller/util.js +9 -8
  147. package/dist/recording-controller/util.js.map +1 -1
  148. package/dist/roap/index.js +51 -28
  149. package/dist/roap/index.js.map +1 -1
  150. package/dist/roap/request.js +48 -64
  151. package/dist/roap/request.js.map +1 -1
  152. package/dist/roap/turnDiscovery.js +95 -38
  153. package/dist/roap/turnDiscovery.js.map +1 -1
  154. package/dist/rtcMetrics/constants.js +12 -0
  155. package/dist/rtcMetrics/constants.js.map +1 -0
  156. package/dist/rtcMetrics/index.js +142 -0
  157. package/dist/rtcMetrics/index.js.map +1 -0
  158. package/dist/statsAnalyzer/index.js +182 -215
  159. package/dist/statsAnalyzer/index.js.map +1 -1
  160. package/dist/statsAnalyzer/mqaUtil.js +35 -28
  161. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  162. package/dist/types/annotation/annotation.types.d.ts +42 -0
  163. package/dist/types/annotation/constants.d.ts +31 -0
  164. package/dist/types/annotation/index.d.ts +117 -0
  165. package/dist/types/breakouts/events.d.ts +8 -0
  166. package/dist/types/breakouts/utils.d.ts +14 -0
  167. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  168. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  169. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  170. package/dist/types/common/logs/request.d.ts +2 -0
  171. package/dist/types/common/queue.d.ts +9 -7
  172. package/dist/types/config.d.ts +2 -7
  173. package/dist/types/constants.d.ts +191 -31
  174. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  175. package/dist/types/controls-options-manager/index.d.ts +17 -1
  176. package/dist/types/controls-options-manager/types.d.ts +43 -0
  177. package/dist/types/controls-options-manager/util.d.ts +1 -7
  178. package/dist/types/index.d.ts +6 -4
  179. package/dist/types/interceptors/index.d.ts +2 -0
  180. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  181. package/dist/types/interpretation/collection.d.ts +5 -0
  182. package/dist/types/interpretation/index.d.ts +5 -0
  183. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  184. package/dist/types/locus-info/index.d.ts +57 -4
  185. package/dist/types/locus-info/parser.d.ts +66 -6
  186. package/dist/types/media/index.d.ts +2 -0
  187. package/dist/types/media/properties.d.ts +34 -49
  188. package/dist/types/mediaQualityMetrics/config.d.ts +0 -128
  189. package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
  190. package/dist/types/meeting/index.d.ts +557 -496
  191. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  192. package/dist/types/meeting/muteState.d.ts +93 -25
  193. package/dist/types/meeting/request.d.ts +62 -43
  194. package/dist/types/meeting/util.d.ts +101 -1
  195. package/dist/types/meeting-info/index.d.ts +13 -1
  196. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  197. package/dist/types/meetings/collection.d.ts +17 -0
  198. package/dist/types/meetings/index.d.ts +112 -20
  199. package/dist/types/meetings/meetings.types.d.ts +4 -0
  200. package/dist/types/member/index.d.ts +14 -0
  201. package/dist/types/member/types.d.ts +32 -0
  202. package/dist/types/members/collection.d.ts +5 -0
  203. package/dist/types/members/index.d.ts +35 -2
  204. package/dist/types/members/request.d.ts +73 -9
  205. package/dist/types/members/types.d.ts +25 -0
  206. package/dist/types/members/util.d.ts +214 -1
  207. package/dist/types/metrics/constants.d.ts +15 -0
  208. package/dist/types/metrics/index.d.ts +4 -111
  209. package/dist/types/multistream/mediaRequestManager.d.ts +72 -5
  210. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  211. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  212. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  213. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  214. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  215. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  216. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  217. package/dist/types/reachability/index.d.ts +60 -95
  218. package/dist/types/reachability/request.d.ts +3 -1
  219. package/dist/types/reachability/util.d.ts +8 -0
  220. package/dist/types/reconnection-manager/index.d.ts +19 -0
  221. package/dist/types/recording-controller/index.d.ts +15 -1
  222. package/dist/types/recording-controller/util.d.ts +5 -4
  223. package/dist/types/roap/index.d.ts +2 -1
  224. package/dist/types/roap/request.d.ts +9 -8
  225. package/dist/types/roap/turnDiscovery.d.ts +21 -3
  226. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  227. package/dist/types/rtcMetrics/index.d.ts +54 -0
  228. package/dist/types/statsAnalyzer/index.d.ts +29 -11
  229. package/dist/types/webinar/collection.d.ts +16 -0
  230. package/dist/types/webinar/index.d.ts +5 -0
  231. package/dist/webinar/collection.js +44 -0
  232. package/dist/webinar/collection.js.map +1 -0
  233. package/dist/webinar/index.js +69 -0
  234. package/dist/webinar/index.js.map +1 -0
  235. package/package.json +22 -19
  236. package/src/annotation/annotation.types.ts +50 -0
  237. package/src/annotation/constants.ts +36 -0
  238. package/src/annotation/index.ts +328 -0
  239. package/src/breakouts/README.md +35 -11
  240. package/src/breakouts/breakout.ts +67 -9
  241. package/src/breakouts/events.ts +56 -0
  242. package/src/breakouts/index.ts +558 -59
  243. package/src/breakouts/utils.ts +42 -0
  244. package/src/common/errors/no-meeting-info.ts +24 -0
  245. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  246. package/src/common/errors/webex-errors.ts +44 -2
  247. package/src/common/logs/logger-proxy.ts +1 -1
  248. package/src/common/logs/request.ts +5 -1
  249. package/src/common/queue.ts +22 -8
  250. package/src/config.ts +4 -9
  251. package/src/constants.ts +214 -21
  252. package/src/controls-options-manager/enums.ts +12 -0
  253. package/src/controls-options-manager/index.ts +116 -21
  254. package/src/controls-options-manager/types.ts +59 -0
  255. package/src/controls-options-manager/util.ts +294 -14
  256. package/src/index.ts +44 -0
  257. package/src/interceptors/index.ts +3 -0
  258. package/src/interceptors/locusRetry.ts +67 -0
  259. package/src/interpretation/README.md +60 -0
  260. package/src/interpretation/collection.ts +19 -0
  261. package/src/interpretation/index.ts +332 -0
  262. package/src/interpretation/siLanguage.ts +18 -0
  263. package/src/locus-info/controlsUtils.ts +108 -0
  264. package/src/locus-info/index.ts +414 -59
  265. package/src/locus-info/infoUtils.ts +10 -2
  266. package/src/locus-info/mediaSharesUtils.ts +64 -0
  267. package/src/locus-info/parser.ts +258 -47
  268. package/src/locus-info/selfUtils.ts +81 -5
  269. package/src/media/index.ts +97 -107
  270. package/src/media/properties.ts +88 -117
  271. package/src/mediaQualityMetrics/config.ts +0 -135
  272. package/src/meeting/in-meeting-actions.ts +171 -3
  273. package/src/meeting/index.ts +3253 -2408
  274. package/src/meeting/locusMediaRequest.ts +313 -0
  275. package/src/meeting/muteState.ts +223 -136
  276. package/src/meeting/request.ts +142 -120
  277. package/src/meeting/util.ts +588 -395
  278. package/src/meeting-info/index.ts +81 -8
  279. package/src/meeting-info/meeting-info-v2.ts +170 -14
  280. package/src/meeting-info/util.ts +1 -1
  281. package/src/meeting-info/utilv2.ts +23 -23
  282. package/src/meetings/collection.ts +33 -0
  283. package/src/meetings/index.ts +497 -126
  284. package/src/meetings/meetings.types.ts +12 -0
  285. package/src/meetings/request.ts +2 -0
  286. package/src/meetings/util.ts +80 -11
  287. package/src/member/index.ts +58 -0
  288. package/src/member/types.ts +38 -0
  289. package/src/member/util.ts +141 -25
  290. package/src/members/collection.ts +8 -0
  291. package/src/members/index.ts +134 -8
  292. package/src/members/request.ts +97 -17
  293. package/src/members/types.ts +29 -0
  294. package/src/members/util.ts +333 -240
  295. package/src/metrics/constants.ts +15 -0
  296. package/src/metrics/index.ts +1 -469
  297. package/src/multistream/mediaRequestManager.ts +277 -82
  298. package/src/multistream/receiveSlot.ts +31 -17
  299. package/src/multistream/receiveSlotManager.ts +34 -24
  300. package/src/multistream/remoteMedia.ts +27 -2
  301. package/src/multistream/remoteMediaGroup.ts +59 -0
  302. package/src/multistream/remoteMediaManager.ts +148 -30
  303. package/src/multistream/sendSlotManager.ts +170 -0
  304. package/src/reachability/clusterReachability.ts +320 -0
  305. package/src/reachability/index.ts +229 -340
  306. package/src/reachability/request.ts +8 -4
  307. package/src/reachability/util.ts +24 -0
  308. package/src/reconnection-manager/index.ts +128 -106
  309. package/src/recording-controller/index.ts +20 -3
  310. package/src/recording-controller/util.ts +26 -9
  311. package/src/roap/index.ts +52 -23
  312. package/src/roap/request.ts +48 -67
  313. package/src/roap/turnDiscovery.ts +48 -26
  314. package/src/rtcMetrics/constants.ts +3 -0
  315. package/src/rtcMetrics/index.ts +124 -0
  316. package/src/statsAnalyzer/index.ts +220 -291
  317. package/src/statsAnalyzer/mqaUtil.ts +43 -44
  318. package/src/webinar/collection.ts +31 -0
  319. package/src/webinar/index.ts +62 -0
  320. package/test/integration/spec/converged-space-meetings.js +60 -3
  321. package/test/integration/spec/journey.js +320 -261
  322. package/test/integration/spec/space-meeting.js +76 -3
  323. package/test/unit/spec/annotation/index.ts +418 -0
  324. package/test/unit/spec/breakouts/breakout.ts +118 -28
  325. package/test/unit/spec/breakouts/events.ts +89 -0
  326. package/test/unit/spec/breakouts/index.ts +1349 -114
  327. package/test/unit/spec/breakouts/utils.js +52 -1
  328. package/test/unit/spec/common/queue.js +31 -2
  329. package/test/unit/spec/controls-options-manager/index.js +163 -0
  330. package/test/unit/spec/controls-options-manager/util.js +576 -60
  331. package/test/unit/spec/fixture/locus.js +1 -0
  332. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  333. package/test/unit/spec/interpretation/collection.ts +15 -0
  334. package/test/unit/spec/interpretation/index.ts +589 -0
  335. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  336. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  337. package/test/unit/spec/locus-info/index.js +1352 -33
  338. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  339. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  340. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  341. package/test/unit/spec/locus-info/parser.js +116 -35
  342. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  343. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  344. package/test/unit/spec/media/index.ts +118 -37
  345. package/test/unit/spec/media/properties.ts +2 -2
  346. package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
  347. package/test/unit/spec/meeting/index.js +6686 -2212
  348. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  349. package/test/unit/spec/meeting/muteState.js +402 -212
  350. package/test/unit/spec/meeting/request.js +459 -52
  351. package/test/unit/spec/meeting/utils.js +680 -67
  352. package/test/unit/spec/meeting-info/index.js +300 -0
  353. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  354. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  355. package/test/unit/spec/meetings/collection.js +26 -0
  356. package/test/unit/spec/meetings/index.js +1393 -212
  357. package/test/unit/spec/meetings/utils.js +202 -2
  358. package/test/unit/spec/member/index.js +61 -6
  359. package/test/unit/spec/member/util.js +510 -34
  360. package/test/unit/spec/members/index.js +432 -1
  361. package/test/unit/spec/members/request.js +206 -27
  362. package/test/unit/spec/members/utils.js +210 -0
  363. package/test/unit/spec/metrics/index.js +1 -50
  364. package/test/unit/spec/multistream/mediaRequestManager.ts +776 -162
  365. package/test/unit/spec/multistream/receiveSlot.ts +28 -20
  366. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  367. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  368. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  369. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  370. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  371. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  372. package/test/unit/spec/reachability/index.ts +477 -14
  373. package/test/unit/spec/reachability/request.js +3 -1
  374. package/test/unit/spec/reachability/util.ts +40 -0
  375. package/test/unit/spec/reconnection-manager/index.js +118 -11
  376. package/test/unit/spec/recording-controller/index.js +294 -218
  377. package/test/unit/spec/recording-controller/util.js +223 -96
  378. package/test/unit/spec/roap/index.ts +180 -83
  379. package/test/unit/spec/roap/request.ts +100 -62
  380. package/test/unit/spec/roap/turnDiscovery.ts +76 -34
  381. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  382. package/test/unit/spec/stats-analyzer/index.js +621 -12
  383. package/test/unit/spec/webinar/collection.ts +13 -0
  384. package/test/unit/spec/webinar/index.ts +60 -0
  385. package/test/utils/integrationTestUtils.js +46 -0
  386. package/test/utils/testUtils.js +0 -57
  387. package/dist/metrics/config.js +0 -289
  388. package/dist/metrics/config.js.map +0 -1
  389. package/dist/types/metrics/config.d.ts +0 -169
  390. package/src/index.js +0 -16
  391. package/src/metrics/config.ts +0 -485
@@ -4,6 +4,7 @@ import {debounce} from 'lodash';
4
4
  import {StatelessWebexPlugin} from '@webex/webex-core';
5
5
  // @ts-ignore
6
6
  import {deviceType} from '@webex/common';
7
+ import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
7
8
 
8
9
  import LoggerProxy from '../common/logs/logger-proxy';
9
10
  import {
@@ -18,22 +19,27 @@ import {
18
19
  HTTP_VERBS,
19
20
  LEAVE,
20
21
  LOCI,
21
- LOCUS,
22
- MEDIA,
23
22
  PARTICIPANT,
24
23
  PROVISIONAL_TYPE_DIAL_IN,
25
24
  PROVISIONAL_TYPE_DIAL_OUT,
26
25
  REACHABILITY,
27
26
  SEND_DTMF_ENDPOINT,
28
27
  _SLIDES_,
28
+ ANNOTATION,
29
+ IP_VERSION,
29
30
  } from '../constants';
30
31
  import {SendReactionOptions, ToggleReactionsOptions} from './request.type';
32
+ import MeetingUtil from './util';
33
+ import {AnnotationInfo} from '../annotation/annotation.types';
31
34
 
32
35
  /**
33
36
  * @class MeetingRequest
34
37
  */
35
38
  export default class MeetingRequest extends StatelessWebexPlugin {
36
39
  changeVideoLayoutDebounced: any;
40
+ meetingRef: WeakRef<any>;
41
+ locusDeltaRequest: (options: object) => Promise<any>;
42
+ buildLocusDeltaRequestOptions: (options: object) => Promise<any>;
37
43
 
38
44
  /**
39
45
  * Constructor
@@ -41,7 +47,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
41
47
  * @param {Object} options
42
48
  */
43
49
  constructor(attrs: any, options: any) {
44
- super(attrs, options);
50
+ const {meeting, ...otherAttrs} = attrs;
51
+
52
+ super(otherAttrs, options);
53
+
54
+ this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
55
+ this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);
56
+
45
57
  this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
46
58
  leading: true,
47
59
  trailing: true,
@@ -88,12 +100,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
88
100
  * @param {boolean} options.moveToResource
89
101
  * @param {Object} options.roapMessage
90
102
  * @param {boolean} options.breakoutsSupported
103
+ * @param {String} options.locale,
104
+ * @param {Array} options.deviceCapabilities
105
+ * @param {boolean} options.liveAnnotationSupported
91
106
  * @returns {Promise}
92
107
  */
93
108
  async joinMeeting(options: {
94
109
  sipUri: string;
95
110
  deviceUrl: string;
96
111
  locusUrl: string;
112
+ locusClusterUrl: string;
97
113
  resourceId: string;
98
114
  correlationId: string;
99
115
  ensureConversation: boolean;
@@ -107,6 +123,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
107
123
  permissionToken: any;
108
124
  preferTranscoding: any;
109
125
  breakoutsSupported: boolean;
126
+ locale?: string;
127
+ deviceCapabilities?: Array<string>;
128
+ liveAnnotationSupported: boolean;
129
+ ipVersion?: IP_VERSION;
110
130
  }) {
111
131
  const {
112
132
  asResourceOccupant,
@@ -115,6 +135,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
115
135
  permissionToken,
116
136
  deviceUrl,
117
137
  locusUrl,
138
+ locusClusterUrl,
118
139
  resourceId,
119
140
  correlationId,
120
141
  ensureConversation,
@@ -124,6 +145,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
124
145
  roapMessage,
125
146
  preferTranscoding,
126
147
  breakoutsSupported,
148
+ locale,
149
+ deviceCapabilities = [],
150
+ liveAnnotationSupported,
151
+ ipVersion,
127
152
  } = options;
128
153
 
129
154
  LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
@@ -149,19 +174,35 @@ export default class MeetingRequest extends StatelessWebexPlugin {
149
174
  clientMediaPreferences: {
150
175
  preferTranscoding: preferTranscoding ?? true,
151
176
  joinCookie,
177
+ ipver: ipVersion,
152
178
  },
153
179
  };
154
180
 
155
181
  if (breakoutsSupported) {
156
- body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];
182
+ deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
183
+ }
184
+ if (liveAnnotationSupported) {
185
+ deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
157
186
  }
158
187
 
188
+ if (locale) {
189
+ body.locale = locale;
190
+ }
191
+
192
+ // add deviceCapabilities prop
193
+ if (deviceCapabilities.length) {
194
+ body.deviceCapabilities = deviceCapabilities;
195
+ }
159
196
  // @ts-ignore
160
- if (this.webex.meetings.clientRegion) {
197
+ if (this.webex.meetings.geoHintInfo) {
161
198
  // @ts-ignore
162
- body.device.countryCode = this.webex.meetings.clientRegion.countryCode;
199
+ body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
163
200
  // @ts-ignore
164
- body.device.regionCode = this.webex.meetings.clientRegion.regionCode;
201
+ body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
202
+ body.device.localIp =
203
+ // @ts-ignore
204
+ CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||
205
+ undefined;
165
206
  }
166
207
 
167
208
  if (moderator !== undefined) {
@@ -180,10 +221,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
180
221
  url = `${locusUrl}/${PARTICIPANT}`;
181
222
  } else if (inviteeAddress || meetingNumber) {
182
223
  try {
183
- // @ts-ignore
184
- await this.webex.internal.services.waitForCatalog('postauth');
185
- // @ts-ignore
186
- url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;
224
+ let clusterUrl;
225
+
226
+ if (locusClusterUrl) {
227
+ clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;
228
+ } else {
229
+ // @ts-ignore
230
+ await this.webex.internal.services.waitForCatalog('postauth');
231
+ // @ts-ignore
232
+ clusterUrl = this.webex.internal.services.get('locus');
233
+ }
234
+
235
+ url = `${clusterUrl}/${LOCI}/${CALL}`;
187
236
  body.invitee = {
188
237
  address: inviteeAddress || `wbxmn:${meetingNumber}`,
189
238
  };
@@ -285,7 +334,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
285
334
  };
286
335
 
287
336
  // @ts-ignore
288
- return this.request({
337
+ return this.locusDeltaRequest({
289
338
  method: HTTP_VERBS.POST,
290
339
  uri,
291
340
  body,
@@ -340,7 +389,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
340
389
  };
341
390
 
342
391
  // @ts-ignore
343
- return this.request({
392
+ return this.locusDeltaRequest({
344
393
  method: HTTP_VERBS.POST,
345
394
  uri,
346
395
  body,
@@ -354,65 +403,25 @@ export default class MeetingRequest extends StatelessWebexPlugin {
354
403
  }
355
404
 
356
405
  /**
357
- * Syns the missed delta event
406
+ * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
358
407
  * @param {Object} options
359
- * @param {boolean} options.desync flag to get partial or whole locus object
360
- * @param {String} options.syncUrl sync url to get ht elatest locus delta
361
- * @returns {Promise}
362
- */
363
- syncMeeting(options: {desync: boolean; syncUrl: string}) {
364
- /* eslint-disable no-else-return */
365
- const {desync} = options;
366
- let {syncUrl} = options;
367
-
368
- /* istanbul ignore else */
369
- if (desync) {
370
- // check for existing URL parameters
371
- syncUrl = syncUrl
372
- .concat(syncUrl.split('?')[1] ? '&' : '?')
373
- .concat(`${LOCUS.SYNCDEBUG}=${desync}`);
374
- }
375
-
376
- // @ts-ignore
377
- return this.request({
378
- method: HTTP_VERBS.GET,
379
- uri: syncUrl,
380
- }) // TODO: Handle if delta sync failed . Get the full locus object
381
- .catch((err) => {
382
- LoggerProxy.logger.error(
383
- `Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`
384
- );
385
-
386
- return err;
387
- });
388
- }
389
-
390
- /**
391
- * Request to get the complete locus object
392
- * @param {Object} options
393
- * @param {boolean} options.desync flag to get partial or whole locus object
394
408
  * @param {String} options.locusUrl sync url to get ht elatest locus delta
395
409
  * @returns {Promise}
396
410
  */
397
- getFullLocus(options: {desync: boolean; locusUrl: string}) {
398
- let {locusUrl} = options;
399
- const {desync} = options;
400
-
401
- if (locusUrl) {
402
- if (desync) {
403
- locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;
404
- }
411
+ getLocusDTO(options: {url: string}) {
412
+ const {url} = options;
405
413
 
414
+ if (url) {
406
415
  // @ts-ignore
407
416
  return this.request({
408
417
  method: HTTP_VERBS.GET,
409
- uri: locusUrl,
418
+ uri: url,
410
419
  }).catch((err) => {
411
420
  LoggerProxy.logger.error(
412
- `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`
421
+ `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
413
422
  );
414
423
 
415
- return err;
424
+ throw err;
416
425
  });
417
426
  }
418
427
 
@@ -455,7 +464,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
455
464
  };
456
465
 
457
466
  // @ts-ignore
458
- return this.request({
467
+ return this.locusDeltaRequest({
459
468
  method: HTTP_VERBS.PUT,
460
469
  uri,
461
470
  body,
@@ -469,13 +478,49 @@ export default class MeetingRequest extends StatelessWebexPlugin {
469
478
  }
470
479
 
471
480
  /**
472
- * Make a network request to leave a meeting
481
+ * Prepares request options to to leave a meeting
473
482
  * @param {Object} options
474
483
  * @param {Url} options.locusUrl
475
484
  * @param {String} options.selfId
476
485
  * @param {Url} options.deviceUrl
477
486
  * @param {String} options.resourceId,
478
487
  * @param {String} options.correlationId
488
+ * @returns {Object} request options
489
+ */
490
+ prepareLeaveMeetingRequestOptions({
491
+ locusUrl,
492
+ selfId,
493
+ deviceUrl: url,
494
+ resourceId,
495
+ correlationId,
496
+ }: {
497
+ locusUrl: string;
498
+ selfId: string;
499
+ deviceUrl: string;
500
+ resourceId: string;
501
+ correlationId: string;
502
+ }) {
503
+ const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
504
+ const body = {
505
+ device: {
506
+ // @ts-ignore
507
+ deviceType: this.config.meetings.deviceType,
508
+ url,
509
+ },
510
+ usingResource: resourceId || null,
511
+ correlationId,
512
+ };
513
+
514
+ return {
515
+ method: HTTP_VERBS.PUT,
516
+ uri,
517
+ body,
518
+ };
519
+ }
520
+
521
+ /**
522
+ * Make a network request to leave a meeting
523
+ * @param {Object} options
479
524
  * @returns {Promise}
480
525
  */
481
526
  leaveMeeting({
@@ -504,14 +549,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
504
549
  correlationId,
505
550
  };
506
551
 
507
- // @ts-ignore
508
- return this.request({
552
+ return this.locusDeltaRequest({
509
553
  method: HTTP_VERBS.PUT,
510
554
  uri,
511
555
  body,
512
556
  });
513
557
  }
514
558
 
559
+ /**
560
+ * Builds request options to leave a meeting
561
+ * @param {Object} options
562
+ * @returns {Object} request options
563
+ */
564
+ buildLeaveMeetingRequestOptions(options: any) {
565
+ return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
566
+ }
567
+
515
568
  /**
516
569
  * Make a network request to acknowledge a meeting
517
570
  * @param {Object} options
@@ -531,14 +584,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
531
584
  correlationId: options.correlationId,
532
585
  };
533
586
 
534
- // @ts-ignore
535
- return this.request({
587
+ return this.locusDeltaRequest({
536
588
  method: HTTP_VERBS.PUT,
537
589
  uri,
538
590
  body,
539
591
  });
540
592
  }
541
593
 
594
+ /**
595
+ * Makes a network request to lock the meeting
596
+ * @param {Object} options
597
+ * @param {Boolean} options.lock Whether it is locked or not
598
+ * @returns {Promise}
599
+ */
542
600
  lockMeeting(options) {
543
601
  const uri = `${options.locusUrl}/${CONTROLS}`;
544
602
  const body = {
@@ -547,8 +605,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
547
605
  },
548
606
  };
549
607
 
550
- // @ts-ignore
551
- return this.request({
608
+ return this.locusDeltaRequest({
552
609
  method: HTTP_VERBS.PATCH,
553
610
  uri,
554
611
  body,
@@ -574,54 +631,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
574
631
  ...(options.reason && {reason: options.reason}),
575
632
  };
576
633
 
577
- // @ts-ignore
578
- return this.request({
579
- method: HTTP_VERBS.PUT,
580
- uri,
581
- body,
582
- });
583
- }
584
-
585
- /**
586
- * Toggle remote audio and/or video
587
- * @param {Object} options options for toggling
588
- * @param {String} options.selfId Locus self id??
589
- * @param {String} options.locusUrl Locus url
590
- * @param {String} options.deviceUrl Url of a device
591
- * @param {String} options.resourceId Populated if you are paired to a device
592
- * @param {String} options.localMedias local sdps
593
- * @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)
594
- * @returns {Promise}
595
- */
596
- remoteAudioVideoToggle(
597
- options:
598
- | {
599
- selfId: string;
600
- locusUrl: string;
601
- deviceUrl: string;
602
- resourceId: string;
603
- localMedias: string;
604
- }
605
- | any
606
- ) {
607
- const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;
608
- const body = {
609
- device: {
610
- // @ts-ignore
611
- deviceType: this.config.meetings.deviceType,
612
- url: options.deviceUrl,
613
- },
614
- usingResource: options.resourceId || null,
615
- correlationId: options.correlationId,
616
- respOnlySdp: true,
617
- localMedias: options.localMedias,
618
- clientMediaPreferences: {
619
- preferTranscoding: options.preferTranscoding ?? true,
620
- },
621
- };
622
-
623
- // @ts-ignore
624
- return this.request({
634
+ return this.locusDeltaRequest({
625
635
  method: HTTP_VERBS.PUT,
626
636
  uri,
627
637
  body,
@@ -646,6 +656,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
646
656
  deviceUrl: string;
647
657
  resourceId: string;
648
658
  uri: string;
659
+ annotationInfo: AnnotationInfo;
649
660
  }
650
661
  | any
651
662
  ) {
@@ -679,6 +690,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
679
690
  if (options?.resourceToken) {
680
691
  body.resourceToken = options?.resourceToken;
681
692
  }
693
+ if (options?.annotationInfo) {
694
+ body.annotation = options?.annotationInfo;
695
+ }
682
696
 
683
697
  // @ts-ignore
684
698
  return this.request({
@@ -698,7 +712,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
698
712
  */
699
713
  sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
700
714
  // @ts-ignore
701
- return this.request({
715
+ return this.locusDeltaRequest({
702
716
  method: HTTP_VERBS.POST,
703
717
  uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
704
718
  body: {
@@ -779,7 +793,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
779
793
  : undefined;
780
794
 
781
795
  // @ts-ignore
782
- return this.request({
796
+ return this.locusDeltaRequest({
783
797
  method: HTTP_VERBS.PUT,
784
798
  uri: `${locusUrl}/${CONTROLS}`,
785
799
  body: {
@@ -802,7 +816,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
802
816
  const uri = `${locusUrl}/${END}`;
803
817
 
804
818
  // @ts-ignore
805
- return this.request({
819
+ return this.locusDeltaRequest({
806
820
  method: HTTP_VERBS.POST,
807
821
  uri,
808
822
  });
@@ -854,7 +868,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
854
868
  const uri = `${locusUrl}/${CONTROLS}`;
855
869
 
856
870
  // @ts-ignore
857
- return this.request({
871
+ return this.locusDeltaRequest({
858
872
  method: HTTP_VERBS.PUT,
859
873
  uri,
860
874
  body: {
@@ -865,4 +879,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
865
879
  },
866
880
  });
867
881
  }
882
+
883
+ getLocusStatusByUrl(locusUrl: string) {
884
+ // @ts-ignore
885
+ return this.request({
886
+ method: HTTP_VERBS.GET,
887
+ uri: locusUrl,
888
+ });
889
+ }
868
890
  }