@webex/plugin-meetings 3.0.0-beta.40 → 3.0.0-beta.401

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 +4509 -3000
  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 +185 -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 +357 -295
  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 +65 -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 +72 -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 +62 -2
  218. package/dist/types/multistream/sendSlotManager.d.ts +70 -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 +3899 -2622
  278. package/src/meeting/locusMediaRequest.ts +313 -0
  279. package/src/meeting/muteState.ts +237 -136
  280. package/src/meeting/request.ts +166 -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 -44
  308. package/src/multistream/sendSlotManager.ts +199 -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 +457 -416
  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 +7520 -2267
  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 +476 -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 +345 -0
  375. package/test/unit/spec/multistream/remoteMediaManager.ts +525 -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 +1252 -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,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;
@@ -106,7 +122,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
106
122
  meetingNumber: any;
107
123
  permissionToken: any;
108
124
  preferTranscoding: any;
125
+ reachability: any;
109
126
  breakoutsSupported: boolean;
127
+ locale?: string;
128
+ deviceCapabilities?: Array<string>;
129
+ liveAnnotationSupported: boolean;
130
+ ipVersion?: IP_VERSION;
110
131
  }) {
111
132
  const {
112
133
  asResourceOccupant,
@@ -115,6 +136,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
115
136
  permissionToken,
116
137
  deviceUrl,
117
138
  locusUrl,
139
+ locusClusterUrl,
118
140
  resourceId,
119
141
  correlationId,
120
142
  ensureConversation,
@@ -122,8 +144,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
122
144
  pin,
123
145
  moveToResource,
124
146
  roapMessage,
147
+ reachability,
125
148
  preferTranscoding,
126
149
  breakoutsSupported,
150
+ locale,
151
+ deviceCapabilities = [],
152
+ liveAnnotationSupported,
153
+ ipVersion,
127
154
  } = options;
128
155
 
129
156
  LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
@@ -149,19 +176,42 @@ export default class MeetingRequest extends StatelessWebexPlugin {
149
176
  clientMediaPreferences: {
150
177
  preferTranscoding: preferTranscoding ?? true,
151
178
  joinCookie,
179
+ ipver: ipVersion,
152
180
  },
153
181
  };
154
182
 
155
183
  if (breakoutsSupported) {
156
- body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];
184
+ deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
185
+ }
186
+ if (liveAnnotationSupported) {
187
+ deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
157
188
  }
158
189
 
190
+ // append installationId to device config if it exists
159
191
  // @ts-ignore
160
- if (this.webex.meetings.clientRegion) {
192
+ if (this.webex.internal.device.config.installationId) {
161
193
  // @ts-ignore
162
- body.device.countryCode = this.webex.meetings.clientRegion.countryCode;
194
+ body.device.installationId = this.webex.internal.device.config.installationId;
195
+ }
196
+
197
+ if (locale) {
198
+ body.locale = locale;
199
+ }
200
+
201
+ // add deviceCapabilities prop
202
+ if (deviceCapabilities.length) {
203
+ body.deviceCapabilities = deviceCapabilities;
204
+ }
205
+ // @ts-ignore
206
+ if (this.webex.meetings.geoHintInfo) {
207
+ // @ts-ignore
208
+ body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
163
209
  // @ts-ignore
164
- body.device.regionCode = this.webex.meetings.clientRegion.regionCode;
210
+ body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
211
+ body.device.localIp =
212
+ // @ts-ignore
213
+ CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||
214
+ undefined;
165
215
  }
166
216
 
167
217
  if (moderator !== undefined) {
@@ -180,10 +230,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
180
230
  url = `${locusUrl}/${PARTICIPANT}`;
181
231
  } else if (inviteeAddress || meetingNumber) {
182
232
  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}`;
233
+ let clusterUrl;
234
+
235
+ if (locusClusterUrl) {
236
+ clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;
237
+ } else {
238
+ // @ts-ignore
239
+ await this.webex.internal.services.waitForCatalog('postauth');
240
+ // @ts-ignore
241
+ clusterUrl = this.webex.internal.services.get('locus');
242
+ }
243
+
244
+ url = `${clusterUrl}/${LOCI}/${CALL}`;
187
245
  body.invitee = {
188
246
  address: inviteeAddress || `wbxmn:${meetingNumber}`,
189
247
  };
@@ -204,8 +262,15 @@ export default class MeetingRequest extends StatelessWebexPlugin {
204
262
  };
205
263
  }
206
264
 
207
- if (roapMessage) {
208
- body.localMedias = roapMessage.localMedias;
265
+ if (roapMessage || reachability) {
266
+ body.localMedias = [
267
+ {
268
+ localSdp: JSON.stringify({
269
+ roapMessage,
270
+ reachability,
271
+ }),
272
+ },
273
+ ];
209
274
  }
210
275
 
211
276
  /// @ts-ignore
@@ -285,7 +350,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
285
350
  };
286
351
 
287
352
  // @ts-ignore
288
- return this.request({
353
+ return this.locusDeltaRequest({
289
354
  method: HTTP_VERBS.POST,
290
355
  uri,
291
356
  body,
@@ -340,7 +405,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
340
405
  };
341
406
 
342
407
  // @ts-ignore
343
- return this.request({
408
+ return this.locusDeltaRequest({
344
409
  method: HTTP_VERBS.POST,
345
410
  uri,
346
411
  body,
@@ -354,65 +419,25 @@ export default class MeetingRequest extends StatelessWebexPlugin {
354
419
  }
355
420
 
356
421
  /**
357
- * Syns the missed delta event
358
- * @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
422
+ * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
392
423
  * @param {Object} options
393
- * @param {boolean} options.desync flag to get partial or whole locus object
394
424
  * @param {String} options.locusUrl sync url to get ht elatest locus delta
395
425
  * @returns {Promise}
396
426
  */
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
- }
427
+ getLocusDTO(options: {url: string}) {
428
+ const {url} = options;
405
429
 
430
+ if (url) {
406
431
  // @ts-ignore
407
432
  return this.request({
408
433
  method: HTTP_VERBS.GET,
409
- uri: locusUrl,
434
+ uri: url,
410
435
  }).catch((err) => {
411
436
  LoggerProxy.logger.error(
412
- `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`
437
+ `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
413
438
  );
414
439
 
415
- return err;
440
+ throw err;
416
441
  });
417
442
  }
418
443
 
@@ -455,7 +480,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
455
480
  };
456
481
 
457
482
  // @ts-ignore
458
- return this.request({
483
+ return this.locusDeltaRequest({
459
484
  method: HTTP_VERBS.PUT,
460
485
  uri,
461
486
  body,
@@ -469,13 +494,49 @@ export default class MeetingRequest extends StatelessWebexPlugin {
469
494
  }
470
495
 
471
496
  /**
472
- * Make a network request to leave a meeting
497
+ * Prepares request options to to leave a meeting
473
498
  * @param {Object} options
474
499
  * @param {Url} options.locusUrl
475
500
  * @param {String} options.selfId
476
501
  * @param {Url} options.deviceUrl
477
502
  * @param {String} options.resourceId,
478
503
  * @param {String} options.correlationId
504
+ * @returns {Object} request options
505
+ */
506
+ prepareLeaveMeetingRequestOptions({
507
+ locusUrl,
508
+ selfId,
509
+ deviceUrl: url,
510
+ resourceId,
511
+ correlationId,
512
+ }: {
513
+ locusUrl: string;
514
+ selfId: string;
515
+ deviceUrl: string;
516
+ resourceId: string;
517
+ correlationId: string;
518
+ }) {
519
+ const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
520
+ const body = {
521
+ device: {
522
+ // @ts-ignore
523
+ deviceType: this.config.meetings.deviceType,
524
+ url,
525
+ },
526
+ usingResource: resourceId || null,
527
+ correlationId,
528
+ };
529
+
530
+ return {
531
+ method: HTTP_VERBS.PUT,
532
+ uri,
533
+ body,
534
+ };
535
+ }
536
+
537
+ /**
538
+ * Make a network request to leave a meeting
539
+ * @param {Object} options
479
540
  * @returns {Promise}
480
541
  */
481
542
  leaveMeeting({
@@ -504,14 +565,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
504
565
  correlationId,
505
566
  };
506
567
 
507
- // @ts-ignore
508
- return this.request({
568
+ return this.locusDeltaRequest({
509
569
  method: HTTP_VERBS.PUT,
510
570
  uri,
511
571
  body,
512
572
  });
513
573
  }
514
574
 
575
+ /**
576
+ * Builds request options to leave a meeting
577
+ * @param {Object} options
578
+ * @returns {Object} request options
579
+ */
580
+ buildLeaveMeetingRequestOptions(options: any) {
581
+ return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
582
+ }
583
+
515
584
  /**
516
585
  * Make a network request to acknowledge a meeting
517
586
  * @param {Object} options
@@ -531,14 +600,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
531
600
  correlationId: options.correlationId,
532
601
  };
533
602
 
534
- // @ts-ignore
535
- return this.request({
603
+ return this.locusDeltaRequest({
536
604
  method: HTTP_VERBS.PUT,
537
605
  uri,
538
606
  body,
539
607
  });
540
608
  }
541
609
 
610
+ /**
611
+ * Makes a network request to lock the meeting
612
+ * @param {Object} options
613
+ * @param {Boolean} options.lock Whether it is locked or not
614
+ * @returns {Promise}
615
+ */
542
616
  lockMeeting(options) {
543
617
  const uri = `${options.locusUrl}/${CONTROLS}`;
544
618
  const body = {
@@ -547,8 +621,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
547
621
  },
548
622
  };
549
623
 
550
- // @ts-ignore
551
- return this.request({
624
+ return this.locusDeltaRequest({
552
625
  method: HTTP_VERBS.PATCH,
553
626
  uri,
554
627
  body,
@@ -574,54 +647,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
574
647
  ...(options.reason && {reason: options.reason}),
575
648
  };
576
649
 
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({
650
+ return this.locusDeltaRequest({
625
651
  method: HTTP_VERBS.PUT,
626
652
  uri,
627
653
  body,
@@ -636,6 +662,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
636
662
  * @param {String} options.deviceUrl Url of a device
637
663
  * @param {String} options.resourceId Populated if you are paired to a device
638
664
  * @param {String} options.uri floor grant uri
665
+ * @param {String} options.shareInstanceId id for current share
639
666
  * @returns {Promise}
640
667
  */
641
668
  changeMeetingFloor(
@@ -646,6 +673,8 @@ export default class MeetingRequest extends StatelessWebexPlugin {
646
673
  deviceUrl: string;
647
674
  resourceId: string;
648
675
  uri: string;
676
+ annotationInfo: AnnotationInfo;
677
+ shareInstanceId: string;
649
678
  }
650
679
  | any
651
680
  ) {
@@ -676,9 +705,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
676
705
  resourceUrl: options.resourceUrl,
677
706
  };
678
707
 
708
+ if (options?.shareInstanceId) {
709
+ body.floor.shareInstanceId = options.shareInstanceId;
710
+ }
711
+
679
712
  if (options?.resourceToken) {
680
713
  body.resourceToken = options?.resourceToken;
681
714
  }
715
+ if (options?.annotationInfo) {
716
+ body.annotation = options?.annotationInfo;
717
+ }
682
718
 
683
719
  // @ts-ignore
684
720
  return this.request({
@@ -698,7 +734,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
698
734
  */
699
735
  sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
700
736
  // @ts-ignore
701
- return this.request({
737
+ return this.locusDeltaRequest({
702
738
  method: HTTP_VERBS.POST,
703
739
  uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
704
740
  body: {
@@ -779,7 +815,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
779
815
  : undefined;
780
816
 
781
817
  // @ts-ignore
782
- return this.request({
818
+ return this.locusDeltaRequest({
783
819
  method: HTTP_VERBS.PUT,
784
820
  uri: `${locusUrl}/${CONTROLS}`,
785
821
  body: {
@@ -802,7 +838,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
802
838
  const uri = `${locusUrl}/${END}`;
803
839
 
804
840
  // @ts-ignore
805
- return this.request({
841
+ return this.locusDeltaRequest({
806
842
  method: HTTP_VERBS.POST,
807
843
  uri,
808
844
  });
@@ -854,7 +890,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
854
890
  const uri = `${locusUrl}/${CONTROLS}`;
855
891
 
856
892
  // @ts-ignore
857
- return this.request({
893
+ return this.locusDeltaRequest({
858
894
  method: HTTP_VERBS.PUT,
859
895
  uri,
860
896
  body: {
@@ -865,4 +901,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
865
901
  },
866
902
  });
867
903
  }
904
+
905
+ getLocusStatusByUrl(locusUrl: string) {
906
+ // @ts-ignore
907
+ return this.request({
908
+ method: HTTP_VERBS.GET,
909
+ uri: locusUrl,
910
+ });
911
+ }
868
912
  }