@webex/plugin-meetings 3.0.0-beta.41 → 3.0.0-beta.411

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 (398) 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 +625 -123
  13. package/dist/breakouts/index.js.map +1 -1
  14. package/dist/breakouts/utils.js +27 -8
  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 +6 -10
  29. package/dist/config.js.map +1 -1
  30. package/dist/constants.js +247 -34
  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 +116 -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 +380 -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 +386 -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 +71 -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 +65 -102
  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 +135 -330
  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 +4531 -2994
  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 +236 -136
  77. package/dist/meeting/muteState.js.map +1 -1
  78. package/dist/meeting/request.js +189 -155
  79. package/dist/meeting/request.js.map +1 -1
  80. package/dist/meeting/util.js +676 -417
  81. package/dist/meeting/util.js.map +1 -1
  82. package/dist/meeting/voicea-meeting.js +172 -0
  83. package/dist/meeting/voicea-meeting.js.map +1 -0
  84. package/dist/meeting-info/index.js +73 -7
  85. package/dist/meeting-info/index.js.map +1 -1
  86. package/dist/meeting-info/meeting-info-v2.js +201 -57
  87. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  88. package/dist/meeting-info/util.js +8 -7
  89. package/dist/meeting-info/util.js.map +1 -1
  90. package/dist/meeting-info/utilv2.js +44 -40
  91. package/dist/meeting-info/utilv2.js.map +1 -1
  92. package/dist/meetings/collection.js +39 -0
  93. package/dist/meetings/collection.js.map +1 -1
  94. package/dist/meetings/index.js +484 -119
  95. package/dist/meetings/index.js.map +1 -1
  96. package/dist/meetings/meetings.types.js +7 -0
  97. package/dist/meetings/meetings.types.js.map +1 -0
  98. package/dist/meetings/request.js +2 -0
  99. package/dist/meetings/request.js.map +1 -1
  100. package/dist/meetings/util.js +73 -7
  101. package/dist/meetings/util.js.map +1 -1
  102. package/dist/member/index.js +57 -0
  103. package/dist/member/index.js.map +1 -1
  104. package/dist/member/types.js +25 -0
  105. package/dist/member/types.js.map +1 -0
  106. package/dist/member/util.js +132 -25
  107. package/dist/member/util.js.map +1 -1
  108. package/dist/members/collection.js +10 -0
  109. package/dist/members/collection.js.map +1 -1
  110. package/dist/members/index.js +100 -5
  111. package/dist/members/index.js.map +1 -1
  112. package/dist/members/request.js +106 -38
  113. package/dist/members/request.js.map +1 -1
  114. package/dist/members/types.js +15 -0
  115. package/dist/members/types.js.map +1 -0
  116. package/dist/members/util.js +326 -232
  117. package/dist/members/util.js.map +1 -1
  118. package/dist/metrics/constants.js +18 -1
  119. package/dist/metrics/constants.js.map +1 -1
  120. package/dist/metrics/index.js +1 -446
  121. package/dist/metrics/index.js.map +1 -1
  122. package/dist/multistream/mediaRequestManager.js +223 -32
  123. package/dist/multistream/mediaRequestManager.js.map +1 -1
  124. package/dist/multistream/receiveSlot.js +10 -0
  125. package/dist/multistream/receiveSlot.js.map +1 -1
  126. package/dist/multistream/receiveSlotManager.js +39 -36
  127. package/dist/multistream/receiveSlotManager.js.map +1 -1
  128. package/dist/multistream/remoteMedia.js +3 -1
  129. package/dist/multistream/remoteMedia.js.map +1 -1
  130. package/dist/multistream/remoteMediaGroup.js +76 -5
  131. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  132. package/dist/multistream/remoteMediaManager.js +366 -104
  133. package/dist/multistream/remoteMediaManager.js.map +1 -1
  134. package/dist/multistream/sendSlotManager.js +255 -0
  135. package/dist/multistream/sendSlotManager.js.map +1 -0
  136. package/dist/reachability/clusterReachability.js +356 -0
  137. package/dist/reachability/clusterReachability.js.map +1 -0
  138. package/dist/reachability/index.js +263 -390
  139. package/dist/reachability/index.js.map +1 -1
  140. package/dist/reachability/request.js +6 -4
  141. package/dist/reachability/request.js.map +1 -1
  142. package/dist/reachability/util.js +29 -0
  143. package/dist/reachability/util.js.map +1 -0
  144. package/dist/reconnection-manager/index.js +266 -202
  145. package/dist/reconnection-manager/index.js.map +1 -1
  146. package/dist/recording-controller/index.js +21 -2
  147. package/dist/recording-controller/index.js.map +1 -1
  148. package/dist/recording-controller/util.js +9 -8
  149. package/dist/recording-controller/util.js.map +1 -1
  150. package/dist/roap/index.js +66 -28
  151. package/dist/roap/index.js.map +1 -1
  152. package/dist/roap/request.js +48 -64
  153. package/dist/roap/request.js.map +1 -1
  154. package/dist/roap/turnDiscovery.js +407 -79
  155. package/dist/roap/turnDiscovery.js.map +1 -1
  156. package/dist/rtcMetrics/constants.js +12 -0
  157. package/dist/rtcMetrics/constants.js.map +1 -0
  158. package/dist/rtcMetrics/index.js +179 -0
  159. package/dist/rtcMetrics/index.js.map +1 -0
  160. package/dist/statsAnalyzer/index.js +389 -304
  161. package/dist/statsAnalyzer/index.js.map +1 -1
  162. package/dist/statsAnalyzer/mqaUtil.js +296 -156
  163. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  164. package/dist/types/annotation/annotation.types.d.ts +42 -0
  165. package/dist/types/annotation/constants.d.ts +31 -0
  166. package/dist/types/annotation/index.d.ts +117 -0
  167. package/dist/types/breakouts/events.d.ts +8 -0
  168. package/dist/types/breakouts/utils.d.ts +9 -2
  169. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  170. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  171. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  172. package/dist/types/common/logs/request.d.ts +2 -0
  173. package/dist/types/common/queue.d.ts +9 -7
  174. package/dist/types/config.d.ts +2 -7
  175. package/dist/types/constants.d.ts +204 -32
  176. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  177. package/dist/types/controls-options-manager/index.d.ts +17 -1
  178. package/dist/types/controls-options-manager/types.d.ts +43 -0
  179. package/dist/types/controls-options-manager/util.d.ts +1 -7
  180. package/dist/types/index.d.ts +6 -5
  181. package/dist/types/interceptors/index.d.ts +2 -0
  182. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  183. package/dist/types/interpretation/collection.d.ts +5 -0
  184. package/dist/types/interpretation/index.d.ts +5 -0
  185. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  186. package/dist/types/locus-info/index.d.ts +57 -4
  187. package/dist/types/locus-info/parser.d.ts +66 -6
  188. package/dist/types/media/index.d.ts +2 -0
  189. package/dist/types/media/properties.d.ts +34 -49
  190. package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
  191. package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
  192. package/dist/types/meeting/index.d.ts +630 -505
  193. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  194. package/dist/types/meeting/muteState.d.ts +88 -26
  195. package/dist/types/meeting/request.d.ts +67 -43
  196. package/dist/types/meeting/util.d.ts +117 -1
  197. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  198. package/dist/types/meeting-info/index.d.ts +13 -1
  199. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  200. package/dist/types/meetings/collection.d.ts +17 -0
  201. package/dist/types/meetings/index.d.ts +113 -21
  202. package/dist/types/meetings/meetings.types.d.ts +4 -0
  203. package/dist/types/member/index.d.ts +14 -0
  204. package/dist/types/member/types.d.ts +32 -0
  205. package/dist/types/members/collection.d.ts +5 -0
  206. package/dist/types/members/index.d.ts +35 -2
  207. package/dist/types/members/request.d.ts +73 -9
  208. package/dist/types/members/types.d.ts +25 -0
  209. package/dist/types/members/util.d.ts +214 -1
  210. package/dist/types/metrics/constants.d.ts +17 -0
  211. package/dist/types/metrics/index.d.ts +4 -111
  212. package/dist/types/multistream/mediaRequestManager.d.ts +71 -3
  213. package/dist/types/multistream/receiveSlot.d.ts +7 -3
  214. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  215. package/dist/types/multistream/remoteMedia.d.ts +3 -31
  216. package/dist/types/multistream/remoteMediaGroup.d.ts +2 -9
  217. package/dist/types/multistream/remoteMediaManager.d.ts +61 -2
  218. package/dist/types/multistream/sendSlotManager.d.ts +69 -0
  219. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  220. package/dist/types/reachability/index.d.ts +60 -95
  221. package/dist/types/reachability/request.d.ts +3 -1
  222. package/dist/types/reachability/util.d.ts +8 -0
  223. package/dist/types/reconnection-manager/index.d.ts +19 -0
  224. package/dist/types/recording-controller/index.d.ts +15 -1
  225. package/dist/types/recording-controller/util.d.ts +5 -4
  226. package/dist/types/roap/index.d.ts +11 -2
  227. package/dist/types/roap/request.d.ts +9 -8
  228. package/dist/types/roap/turnDiscovery.d.ts +90 -9
  229. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  230. package/dist/types/rtcMetrics/index.d.ts +61 -0
  231. package/dist/types/statsAnalyzer/index.d.ts +34 -12
  232. package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
  233. package/dist/types/webinar/collection.d.ts +16 -0
  234. package/dist/types/webinar/index.d.ts +5 -0
  235. package/dist/webinar/collection.js +44 -0
  236. package/dist/webinar/collection.js.map +1 -0
  237. package/dist/webinar/index.js +69 -0
  238. package/dist/webinar/index.js.map +1 -0
  239. package/package.json +22 -19
  240. package/src/annotation/annotation.types.ts +50 -0
  241. package/src/annotation/constants.ts +36 -0
  242. package/src/annotation/index.ts +328 -0
  243. package/src/breakouts/README.md +27 -6
  244. package/src/breakouts/breakout.ts +67 -9
  245. package/src/breakouts/events.ts +56 -0
  246. package/src/breakouts/index.ts +494 -73
  247. package/src/breakouts/utils.ts +26 -8
  248. package/src/common/errors/no-meeting-info.ts +24 -0
  249. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  250. package/src/common/errors/webex-errors.ts +44 -2
  251. package/src/common/logs/logger-proxy.ts +1 -1
  252. package/src/common/logs/request.ts +5 -1
  253. package/src/common/queue.ts +22 -8
  254. package/src/config.ts +6 -13
  255. package/src/constants.ts +234 -22
  256. package/src/controls-options-manager/enums.ts +12 -0
  257. package/src/controls-options-manager/index.ts +116 -21
  258. package/src/controls-options-manager/types.ts +59 -0
  259. package/src/controls-options-manager/util.ts +294 -14
  260. package/src/index.ts +45 -0
  261. package/src/interceptors/index.ts +3 -0
  262. package/src/interceptors/locusRetry.ts +67 -0
  263. package/src/interpretation/README.md +60 -0
  264. package/src/interpretation/collection.ts +19 -0
  265. package/src/interpretation/index.ts +349 -0
  266. package/src/interpretation/siLanguage.ts +18 -0
  267. package/src/locus-info/controlsUtils.ts +108 -0
  268. package/src/locus-info/index.ts +417 -59
  269. package/src/locus-info/infoUtils.ts +10 -2
  270. package/src/locus-info/mediaSharesUtils.ts +80 -0
  271. package/src/locus-info/parser.ts +258 -47
  272. package/src/locus-info/selfUtils.ts +81 -5
  273. package/src/media/index.ts +100 -108
  274. package/src/media/properties.ts +88 -117
  275. package/src/mediaQualityMetrics/config.ts +103 -238
  276. package/src/meeting/in-meeting-actions.ts +171 -3
  277. package/src/meeting/index.ts +3929 -2622
  278. package/src/meeting/locusMediaRequest.ts +313 -0
  279. package/src/meeting/muteState.ts +237 -136
  280. package/src/meeting/request.ts +173 -122
  281. package/src/meeting/util.ts +690 -395
  282. package/src/meeting/voicea-meeting.ts +122 -0
  283. package/src/meeting-info/index.ts +81 -8
  284. package/src/meeting-info/meeting-info-v2.ts +166 -16
  285. package/src/meeting-info/util.ts +13 -10
  286. package/src/meeting-info/utilv2.ts +47 -37
  287. package/src/meetings/collection.ts +33 -0
  288. package/src/meetings/index.ts +507 -127
  289. package/src/meetings/meetings.types.ts +12 -0
  290. package/src/meetings/request.ts +2 -0
  291. package/src/meetings/util.ts +81 -12
  292. package/src/member/index.ts +57 -0
  293. package/src/member/types.ts +38 -0
  294. package/src/member/util.ts +141 -25
  295. package/src/members/collection.ts +8 -0
  296. package/src/members/index.ts +133 -7
  297. package/src/members/request.ts +97 -17
  298. package/src/members/types.ts +29 -0
  299. package/src/members/util.ts +333 -240
  300. package/src/metrics/constants.ts +17 -0
  301. package/src/metrics/index.ts +1 -469
  302. package/src/multistream/mediaRequestManager.ts +271 -56
  303. package/src/multistream/receiveSlot.ts +11 -4
  304. package/src/multistream/receiveSlotManager.ts +34 -24
  305. package/src/multistream/remoteMedia.ts +5 -3
  306. package/src/multistream/remoteMediaGroup.ts +78 -0
  307. package/src/multistream/remoteMediaManager.ts +248 -45
  308. package/src/multistream/sendSlotManager.ts +198 -0
  309. package/src/reachability/clusterReachability.ts +320 -0
  310. package/src/reachability/index.ts +229 -346
  311. package/src/reachability/request.ts +8 -4
  312. package/src/reachability/util.ts +24 -0
  313. package/src/reconnection-manager/index.ts +128 -97
  314. package/src/recording-controller/index.ts +20 -3
  315. package/src/recording-controller/util.ts +26 -9
  316. package/src/roap/index.ts +76 -25
  317. package/src/roap/request.ts +48 -67
  318. package/src/roap/turnDiscovery.ts +331 -67
  319. package/src/rtcMetrics/constants.ts +3 -0
  320. package/src/rtcMetrics/index.ts +166 -0
  321. package/src/statsAnalyzer/index.ts +496 -419
  322. package/src/statsAnalyzer/mqaUtil.ts +317 -170
  323. package/src/webinar/collection.ts +31 -0
  324. package/src/webinar/index.ts +62 -0
  325. package/test/integration/spec/converged-space-meetings.js +60 -3
  326. package/test/integration/spec/journey.js +321 -262
  327. package/test/integration/spec/space-meeting.js +76 -3
  328. package/test/unit/spec/annotation/index.ts +418 -0
  329. package/test/unit/spec/breakouts/breakout.ts +119 -28
  330. package/test/unit/spec/breakouts/events.ts +89 -0
  331. package/test/unit/spec/breakouts/index.ts +1204 -118
  332. package/test/unit/spec/breakouts/utils.js +27 -2
  333. package/test/unit/spec/common/queue.js +31 -2
  334. package/test/unit/spec/controls-options-manager/index.js +163 -0
  335. package/test/unit/spec/controls-options-manager/util.js +576 -60
  336. package/test/unit/spec/fixture/locus.js +1 -0
  337. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  338. package/test/unit/spec/interpretation/collection.ts +15 -0
  339. package/test/unit/spec/interpretation/index.ts +625 -0
  340. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  341. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  342. package/test/unit/spec/locus-info/index.js +1372 -37
  343. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  344. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  345. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  346. package/test/unit/spec/locus-info/parser.js +116 -35
  347. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  348. package/test/unit/spec/locus-info/selfUtils.js +203 -17
  349. package/test/unit/spec/media/index.ts +178 -81
  350. package/test/unit/spec/media/properties.ts +2 -2
  351. package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
  352. package/test/unit/spec/meeting/index.js +7835 -2501
  353. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  354. package/test/unit/spec/meeting/muteState.js +549 -207
  355. package/test/unit/spec/meeting/request.js +494 -54
  356. package/test/unit/spec/meeting/utils.js +827 -74
  357. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  358. package/test/unit/spec/meeting-info/index.js +300 -0
  359. package/test/unit/spec/meeting-info/meetinginfov2.js +535 -9
  360. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  361. package/test/unit/spec/meetings/collection.js +26 -0
  362. package/test/unit/spec/meetings/index.js +1489 -219
  363. package/test/unit/spec/meetings/utils.js +229 -2
  364. package/test/unit/spec/member/index.js +61 -6
  365. package/test/unit/spec/member/util.js +510 -34
  366. package/test/unit/spec/members/index.js +432 -1
  367. package/test/unit/spec/members/request.js +206 -27
  368. package/test/unit/spec/members/utils.js +210 -0
  369. package/test/unit/spec/metrics/index.js +2 -52
  370. package/test/unit/spec/multistream/mediaRequestManager.ts +782 -114
  371. package/test/unit/spec/multistream/receiveSlot.ts +9 -1
  372. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  373. package/test/unit/spec/multistream/remoteMedia.ts +2 -0
  374. package/test/unit/spec/multistream/remoteMediaGroup.ts +344 -0
  375. package/test/unit/spec/multistream/remoteMediaManager.ts +524 -0
  376. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  377. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  378. package/test/unit/spec/reachability/index.ts +551 -14
  379. package/test/unit/spec/reachability/request.js +3 -1
  380. package/test/unit/spec/reachability/util.ts +40 -0
  381. package/test/unit/spec/reconnection-manager/index.js +171 -11
  382. package/test/unit/spec/recording-controller/index.js +293 -218
  383. package/test/unit/spec/recording-controller/util.js +223 -96
  384. package/test/unit/spec/roap/index.ts +233 -81
  385. package/test/unit/spec/roap/request.ts +100 -62
  386. package/test/unit/spec/roap/turnDiscovery.ts +682 -108
  387. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  388. package/test/unit/spec/stats-analyzer/index.js +1431 -12
  389. package/test/unit/spec/webinar/collection.ts +13 -0
  390. package/test/unit/spec/webinar/index.ts +60 -0
  391. package/test/utils/integrationTestUtils.js +46 -0
  392. package/test/utils/testUtils.js +0 -57
  393. package/test/utils/webex-test-users.js +12 -4
  394. package/dist/metrics/config.js +0 -289
  395. package/dist/metrics/config.js.map +0 -1
  396. package/dist/types/metrics/config.d.ts +0 -169
  397. package/src/index.js +0 -18
  398. 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,17 @@ 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
106
+ * @param {String} options.alias
91
107
  * @returns {Promise}
92
108
  */
93
109
  async joinMeeting(options: {
94
110
  sipUri: string;
95
111
  deviceUrl: string;
96
112
  locusUrl: string;
113
+ locusClusterUrl: string;
97
114
  resourceId: string;
98
115
  correlationId: string;
99
116
  ensureConversation: boolean;
@@ -106,7 +123,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
106
123
  meetingNumber: any;
107
124
  permissionToken: any;
108
125
  preferTranscoding: any;
126
+ reachability: any;
109
127
  breakoutsSupported: boolean;
128
+ locale?: string;
129
+ deviceCapabilities?: Array<string>;
130
+ liveAnnotationSupported: boolean;
131
+ ipVersion?: IP_VERSION;
132
+ alias?: string;
110
133
  }) {
111
134
  const {
112
135
  asResourceOccupant,
@@ -115,6 +138,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
115
138
  permissionToken,
116
139
  deviceUrl,
117
140
  locusUrl,
141
+ locusClusterUrl,
118
142
  resourceId,
119
143
  correlationId,
120
144
  ensureConversation,
@@ -122,8 +146,14 @@ export default class MeetingRequest extends StatelessWebexPlugin {
122
146
  pin,
123
147
  moveToResource,
124
148
  roapMessage,
149
+ reachability,
125
150
  preferTranscoding,
126
151
  breakoutsSupported,
152
+ locale,
153
+ deviceCapabilities = [],
154
+ liveAnnotationSupported,
155
+ ipVersion,
156
+ alias,
127
157
  } = options;
128
158
 
129
159
  LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
@@ -149,19 +179,46 @@ export default class MeetingRequest extends StatelessWebexPlugin {
149
179
  clientMediaPreferences: {
150
180
  preferTranscoding: preferTranscoding ?? true,
151
181
  joinCookie,
182
+ ipver: ipVersion,
152
183
  },
153
184
  };
154
185
 
186
+ if (alias) {
187
+ body.alias = alias;
188
+ }
189
+
155
190
  if (breakoutsSupported) {
156
- body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];
191
+ deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
192
+ }
193
+ if (liveAnnotationSupported) {
194
+ deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
195
+ }
196
+
197
+ // append installationId to device config if it exists
198
+ // @ts-ignore
199
+ if (this.webex.internal.device.config.installationId) {
200
+ // @ts-ignore
201
+ body.device.installationId = this.webex.internal.device.config.installationId;
202
+ }
203
+
204
+ if (locale) {
205
+ body.locale = locale;
157
206
  }
158
207
 
208
+ // add deviceCapabilities prop
209
+ if (deviceCapabilities.length) {
210
+ body.deviceCapabilities = deviceCapabilities;
211
+ }
159
212
  // @ts-ignore
160
- if (this.webex.meetings.clientRegion) {
213
+ if (this.webex.meetings.geoHintInfo) {
161
214
  // @ts-ignore
162
- body.device.countryCode = this.webex.meetings.clientRegion.countryCode;
215
+ body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
163
216
  // @ts-ignore
164
- body.device.regionCode = this.webex.meetings.clientRegion.regionCode;
217
+ body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
218
+ body.device.localIp =
219
+ // @ts-ignore
220
+ CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||
221
+ undefined;
165
222
  }
166
223
 
167
224
  if (moderator !== undefined) {
@@ -180,10 +237,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
180
237
  url = `${locusUrl}/${PARTICIPANT}`;
181
238
  } else if (inviteeAddress || meetingNumber) {
182
239
  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}`;
240
+ let clusterUrl;
241
+
242
+ if (locusClusterUrl) {
243
+ clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;
244
+ } else {
245
+ // @ts-ignore
246
+ await this.webex.internal.services.waitForCatalog('postauth');
247
+ // @ts-ignore
248
+ clusterUrl = this.webex.internal.services.get('locus');
249
+ }
250
+
251
+ url = `${clusterUrl}/${LOCI}/${CALL}`;
187
252
  body.invitee = {
188
253
  address: inviteeAddress || `wbxmn:${meetingNumber}`,
189
254
  };
@@ -204,8 +269,15 @@ export default class MeetingRequest extends StatelessWebexPlugin {
204
269
  };
205
270
  }
206
271
 
207
- if (roapMessage) {
208
- body.localMedias = roapMessage.localMedias;
272
+ if (roapMessage || reachability) {
273
+ body.localMedias = [
274
+ {
275
+ localSdp: JSON.stringify({
276
+ roapMessage,
277
+ reachability,
278
+ }),
279
+ },
280
+ ];
209
281
  }
210
282
 
211
283
  /// @ts-ignore
@@ -285,7 +357,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
285
357
  };
286
358
 
287
359
  // @ts-ignore
288
- return this.request({
360
+ return this.locusDeltaRequest({
289
361
  method: HTTP_VERBS.POST,
290
362
  uri,
291
363
  body,
@@ -340,7 +412,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
340
412
  };
341
413
 
342
414
  // @ts-ignore
343
- return this.request({
415
+ return this.locusDeltaRequest({
344
416
  method: HTTP_VERBS.POST,
345
417
  uri,
346
418
  body,
@@ -354,65 +426,25 @@ export default class MeetingRequest extends StatelessWebexPlugin {
354
426
  }
355
427
 
356
428
  /**
357
- * Syns the missed delta event
429
+ * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
358
430
  * @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
431
  * @param {String} options.locusUrl sync url to get ht elatest locus delta
395
432
  * @returns {Promise}
396
433
  */
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
- }
434
+ getLocusDTO(options: {url: string}) {
435
+ const {url} = options;
405
436
 
437
+ if (url) {
406
438
  // @ts-ignore
407
439
  return this.request({
408
440
  method: HTTP_VERBS.GET,
409
- uri: locusUrl,
441
+ uri: url,
410
442
  }).catch((err) => {
411
443
  LoggerProxy.logger.error(
412
- `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`
444
+ `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
413
445
  );
414
446
 
415
- return err;
447
+ throw err;
416
448
  });
417
449
  }
418
450
 
@@ -455,7 +487,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
455
487
  };
456
488
 
457
489
  // @ts-ignore
458
- return this.request({
490
+ return this.locusDeltaRequest({
459
491
  method: HTTP_VERBS.PUT,
460
492
  uri,
461
493
  body,
@@ -469,13 +501,49 @@ export default class MeetingRequest extends StatelessWebexPlugin {
469
501
  }
470
502
 
471
503
  /**
472
- * Make a network request to leave a meeting
504
+ * Prepares request options to to leave a meeting
473
505
  * @param {Object} options
474
506
  * @param {Url} options.locusUrl
475
507
  * @param {String} options.selfId
476
508
  * @param {Url} options.deviceUrl
477
509
  * @param {String} options.resourceId,
478
510
  * @param {String} options.correlationId
511
+ * @returns {Object} request options
512
+ */
513
+ prepareLeaveMeetingRequestOptions({
514
+ locusUrl,
515
+ selfId,
516
+ deviceUrl: url,
517
+ resourceId,
518
+ correlationId,
519
+ }: {
520
+ locusUrl: string;
521
+ selfId: string;
522
+ deviceUrl: string;
523
+ resourceId: string;
524
+ correlationId: string;
525
+ }) {
526
+ const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
527
+ const body = {
528
+ device: {
529
+ // @ts-ignore
530
+ deviceType: this.config.meetings.deviceType,
531
+ url,
532
+ },
533
+ usingResource: resourceId || null,
534
+ correlationId,
535
+ };
536
+
537
+ return {
538
+ method: HTTP_VERBS.PUT,
539
+ uri,
540
+ body,
541
+ };
542
+ }
543
+
544
+ /**
545
+ * Make a network request to leave a meeting
546
+ * @param {Object} options
479
547
  * @returns {Promise}
480
548
  */
481
549
  leaveMeeting({
@@ -504,14 +572,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
504
572
  correlationId,
505
573
  };
506
574
 
507
- // @ts-ignore
508
- return this.request({
575
+ return this.locusDeltaRequest({
509
576
  method: HTTP_VERBS.PUT,
510
577
  uri,
511
578
  body,
512
579
  });
513
580
  }
514
581
 
582
+ /**
583
+ * Builds request options to leave a meeting
584
+ * @param {Object} options
585
+ * @returns {Object} request options
586
+ */
587
+ buildLeaveMeetingRequestOptions(options: any) {
588
+ return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
589
+ }
590
+
515
591
  /**
516
592
  * Make a network request to acknowledge a meeting
517
593
  * @param {Object} options
@@ -531,14 +607,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
531
607
  correlationId: options.correlationId,
532
608
  };
533
609
 
534
- // @ts-ignore
535
- return this.request({
610
+ return this.locusDeltaRequest({
536
611
  method: HTTP_VERBS.PUT,
537
612
  uri,
538
613
  body,
539
614
  });
540
615
  }
541
616
 
617
+ /**
618
+ * Makes a network request to lock the meeting
619
+ * @param {Object} options
620
+ * @param {Boolean} options.lock Whether it is locked or not
621
+ * @returns {Promise}
622
+ */
542
623
  lockMeeting(options) {
543
624
  const uri = `${options.locusUrl}/${CONTROLS}`;
544
625
  const body = {
@@ -547,8 +628,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
547
628
  },
548
629
  };
549
630
 
550
- // @ts-ignore
551
- return this.request({
631
+ return this.locusDeltaRequest({
552
632
  method: HTTP_VERBS.PATCH,
553
633
  uri,
554
634
  body,
@@ -574,54 +654,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
574
654
  ...(options.reason && {reason: options.reason}),
575
655
  };
576
656
 
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({
657
+ return this.locusDeltaRequest({
625
658
  method: HTTP_VERBS.PUT,
626
659
  uri,
627
660
  body,
@@ -636,6 +669,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
636
669
  * @param {String} options.deviceUrl Url of a device
637
670
  * @param {String} options.resourceId Populated if you are paired to a device
638
671
  * @param {String} options.uri floor grant uri
672
+ * @param {String} options.shareInstanceId id for current share
639
673
  * @returns {Promise}
640
674
  */
641
675
  changeMeetingFloor(
@@ -646,6 +680,8 @@ export default class MeetingRequest extends StatelessWebexPlugin {
646
680
  deviceUrl: string;
647
681
  resourceId: string;
648
682
  uri: string;
683
+ annotationInfo: AnnotationInfo;
684
+ shareInstanceId: string;
649
685
  }
650
686
  | any
651
687
  ) {
@@ -676,9 +712,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
676
712
  resourceUrl: options.resourceUrl,
677
713
  };
678
714
 
715
+ if (options?.shareInstanceId) {
716
+ body.floor.shareInstanceId = options.shareInstanceId;
717
+ }
718
+
679
719
  if (options?.resourceToken) {
680
720
  body.resourceToken = options?.resourceToken;
681
721
  }
722
+ if (options?.annotationInfo) {
723
+ body.annotation = options?.annotationInfo;
724
+ }
682
725
 
683
726
  // @ts-ignore
684
727
  return this.request({
@@ -698,7 +741,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
698
741
  */
699
742
  sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
700
743
  // @ts-ignore
701
- return this.request({
744
+ return this.locusDeltaRequest({
702
745
  method: HTTP_VERBS.POST,
703
746
  uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
704
747
  body: {
@@ -779,7 +822,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
779
822
  : undefined;
780
823
 
781
824
  // @ts-ignore
782
- return this.request({
825
+ return this.locusDeltaRequest({
783
826
  method: HTTP_VERBS.PUT,
784
827
  uri: `${locusUrl}/${CONTROLS}`,
785
828
  body: {
@@ -802,7 +845,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
802
845
  const uri = `${locusUrl}/${END}`;
803
846
 
804
847
  // @ts-ignore
805
- return this.request({
848
+ return this.locusDeltaRequest({
806
849
  method: HTTP_VERBS.POST,
807
850
  uri,
808
851
  });
@@ -854,7 +897,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
854
897
  const uri = `${locusUrl}/${CONTROLS}`;
855
898
 
856
899
  // @ts-ignore
857
- return this.request({
900
+ return this.locusDeltaRequest({
858
901
  method: HTTP_VERBS.PUT,
859
902
  uri,
860
903
  body: {
@@ -865,4 +908,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
865
908
  },
866
909
  });
867
910
  }
911
+
912
+ getLocusStatusByUrl(locusUrl: string) {
913
+ // @ts-ignore
914
+ return this.request({
915
+ method: HTTP_VERBS.GET,
916
+ uri: locusUrl,
917
+ });
918
+ }
868
919
  }