@webex/plugin-meetings 3.0.0-beta.21 → 3.0.0-beta.211

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 (422) hide show
  1. package/README.md +45 -7
  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 +114 -14
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +841 -19
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/request.js +78 -0
  17. package/dist/breakouts/request.js.map +1 -0
  18. package/dist/breakouts/utils.js +67 -0
  19. package/dist/breakouts/utils.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +3 -2
  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/queue.js +24 -9
  25. package/dist/common/queue.js.map +1 -1
  26. package/dist/config.js +3 -8
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +179 -30
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/constants.js +14 -0
  31. package/dist/controls-options-manager/constants.js.map +1 -0
  32. package/dist/controls-options-manager/enums.js +27 -0
  33. package/dist/controls-options-manager/enums.js.map +1 -0
  34. package/dist/controls-options-manager/index.js +297 -0
  35. package/dist/controls-options-manager/index.js.map +1 -0
  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 +319 -0
  39. package/dist/controls-options-manager/util.js.map +1 -0
  40. package/dist/index.js +106 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/interpretation/collection.js +23 -0
  43. package/dist/interpretation/collection.js.map +1 -0
  44. package/dist/interpretation/index.js +366 -0
  45. package/dist/interpretation/index.js.map +1 -0
  46. package/dist/interpretation/siLanguage.js +25 -0
  47. package/dist/interpretation/siLanguage.js.map +1 -0
  48. package/dist/locus-info/controlsUtils.js +91 -2
  49. package/dist/locus-info/controlsUtils.js.map +1 -1
  50. package/dist/locus-info/index.js +359 -64
  51. package/dist/locus-info/index.js.map +1 -1
  52. package/dist/locus-info/infoUtils.js +7 -1
  53. package/dist/locus-info/infoUtils.js.map +1 -1
  54. package/dist/locus-info/mediaSharesUtils.js +43 -1
  55. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  56. package/dist/locus-info/parser.js +219 -63
  57. package/dist/locus-info/parser.js.map +1 -1
  58. package/dist/locus-info/selfUtils.js +89 -14
  59. package/dist/locus-info/selfUtils.js.map +1 -1
  60. package/dist/media/index.js +48 -135
  61. package/dist/media/index.js.map +1 -1
  62. package/dist/media/properties.js +29 -90
  63. package/dist/media/properties.js.map +1 -1
  64. package/dist/mediaQualityMetrics/config.js +505 -493
  65. package/dist/mediaQualityMetrics/config.js.map +1 -1
  66. package/dist/meeting/in-meeting-actions.js +90 -2
  67. package/dist/meeting/in-meeting-actions.js.map +1 -1
  68. package/dist/meeting/index.js +2770 -2547
  69. package/dist/meeting/index.js.map +1 -1
  70. package/dist/meeting/locusMediaRequest.js +291 -0
  71. package/dist/meeting/locusMediaRequest.js.map +1 -0
  72. package/dist/meeting/muteState.js +229 -124
  73. package/dist/meeting/muteState.js.map +1 -1
  74. package/dist/meeting/request.js +199 -193
  75. package/dist/meeting/request.js.map +1 -1
  76. package/dist/meeting/util.js +532 -414
  77. package/dist/meeting/util.js.map +1 -1
  78. package/dist/meeting-info/index.js +48 -7
  79. package/dist/meeting-info/index.js.map +1 -1
  80. package/dist/meeting-info/meeting-info-v2.js +171 -51
  81. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  82. package/dist/meeting-info/utilv2.js +20 -5
  83. package/dist/meeting-info/utilv2.js.map +1 -1
  84. package/dist/meetings/collection.js +22 -0
  85. package/dist/meetings/collection.js.map +1 -1
  86. package/dist/meetings/index.js +357 -66
  87. package/dist/meetings/index.js.map +1 -1
  88. package/dist/meetings/meetings.types.js +7 -0
  89. package/dist/meetings/meetings.types.js.map +1 -0
  90. package/dist/meetings/request.js +2 -0
  91. package/dist/meetings/request.js.map +1 -1
  92. package/dist/meetings/util.js +88 -1
  93. package/dist/meetings/util.js.map +1 -1
  94. package/dist/member/index.js +49 -0
  95. package/dist/member/index.js.map +1 -1
  96. package/dist/member/types.js +25 -0
  97. package/dist/member/types.js.map +1 -0
  98. package/dist/member/util.js +121 -25
  99. package/dist/member/util.js.map +1 -1
  100. package/dist/members/collection.js +10 -0
  101. package/dist/members/collection.js.map +1 -1
  102. package/dist/members/index.js +86 -5
  103. package/dist/members/index.js.map +1 -1
  104. package/dist/members/request.js +106 -38
  105. package/dist/members/request.js.map +1 -1
  106. package/dist/members/types.js +15 -0
  107. package/dist/members/types.js.map +1 -0
  108. package/dist/members/util.js +316 -233
  109. package/dist/members/util.js.map +1 -1
  110. package/dist/metrics/constants.js +3 -5
  111. package/dist/metrics/constants.js.map +1 -1
  112. package/dist/metrics/index.js +1 -468
  113. package/dist/metrics/index.js.map +1 -1
  114. package/dist/multistream/mediaRequestManager.js +238 -49
  115. package/dist/multistream/mediaRequestManager.js.map +1 -1
  116. package/dist/multistream/receiveSlot.js +49 -16
  117. package/dist/multistream/receiveSlot.js.map +1 -1
  118. package/dist/multistream/receiveSlotManager.js +52 -34
  119. package/dist/multistream/receiveSlotManager.js.map +1 -1
  120. package/dist/multistream/remoteMedia.js +44 -18
  121. package/dist/multistream/remoteMedia.js.map +1 -1
  122. package/dist/multistream/remoteMediaGroup.js +60 -3
  123. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  124. package/dist/multistream/remoteMediaManager.js +173 -59
  125. package/dist/multistream/remoteMediaManager.js.map +1 -1
  126. package/dist/networkQualityMonitor/index.js +4 -2
  127. package/dist/networkQualityMonitor/index.js.map +1 -1
  128. package/dist/reachability/index.js +72 -27
  129. package/dist/reachability/index.js.map +1 -1
  130. package/dist/reachability/request.js +12 -5
  131. package/dist/reachability/request.js.map +1 -1
  132. package/dist/reconnection-manager/index.js +196 -155
  133. package/dist/reconnection-manager/index.js.map +1 -1
  134. package/dist/recording-controller/index.js +21 -2
  135. package/dist/recording-controller/index.js.map +1 -1
  136. package/dist/recording-controller/util.js +9 -8
  137. package/dist/recording-controller/util.js.map +1 -1
  138. package/dist/roap/index.js +21 -29
  139. package/dist/roap/index.js.map +1 -1
  140. package/dist/roap/request.js +110 -89
  141. package/dist/roap/request.js.map +1 -1
  142. package/dist/roap/turnDiscovery.js +93 -36
  143. package/dist/roap/turnDiscovery.js.map +1 -1
  144. package/dist/rtcMetrics/constants.js +12 -0
  145. package/dist/rtcMetrics/constants.js.map +1 -0
  146. package/dist/rtcMetrics/index.js +117 -0
  147. package/dist/rtcMetrics/index.js.map +1 -0
  148. package/dist/statsAnalyzer/global.js +1 -93
  149. package/dist/statsAnalyzer/global.js.map +1 -1
  150. package/dist/statsAnalyzer/index.js +326 -311
  151. package/dist/statsAnalyzer/index.js.map +1 -1
  152. package/dist/statsAnalyzer/mqaUtil.js +90 -53
  153. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  154. package/dist/types/annotation/annotation.types.d.ts +42 -0
  155. package/dist/types/annotation/constants.d.ts +31 -0
  156. package/dist/types/annotation/index.d.ts +117 -0
  157. package/dist/types/breakouts/breakout.d.ts +8 -0
  158. package/dist/types/breakouts/collection.d.ts +5 -0
  159. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  160. package/dist/types/breakouts/events.d.ts +8 -0
  161. package/dist/types/breakouts/index.d.ts +5 -0
  162. package/dist/types/breakouts/request.d.ts +22 -0
  163. package/dist/types/breakouts/utils.d.ts +15 -0
  164. package/dist/types/common/browser-detection.d.ts +9 -0
  165. package/dist/types/common/collection.d.ts +48 -0
  166. package/dist/types/common/config.d.ts +2 -0
  167. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  168. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  169. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  170. package/dist/types/common/errors/media.d.ts +15 -0
  171. package/dist/types/common/errors/parameter.d.ts +15 -0
  172. package/dist/types/common/errors/password-error.d.ts +15 -0
  173. package/dist/types/common/errors/permission.d.ts +14 -0
  174. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  175. package/dist/types/common/errors/reconnection.d.ts +15 -0
  176. package/dist/types/common/errors/stats.d.ts +15 -0
  177. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  178. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  179. package/dist/types/common/events/events-scope.d.ts +17 -0
  180. package/dist/types/common/events/events.d.ts +12 -0
  181. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  182. package/dist/types/common/events/util.d.ts +2 -0
  183. package/dist/types/common/logs/logger-config.d.ts +2 -0
  184. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  185. package/dist/types/common/logs/request.d.ts +34 -0
  186. package/dist/types/common/queue.d.ts +34 -0
  187. package/dist/types/config.d.ts +72 -0
  188. package/dist/types/constants.d.ts +1020 -0
  189. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  190. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  191. package/dist/types/controls-options-manager/index.d.ts +136 -0
  192. package/dist/types/controls-options-manager/types.d.ts +43 -0
  193. package/dist/types/controls-options-manager/util.d.ts +1 -0
  194. package/dist/types/index.d.ts +7 -0
  195. package/dist/types/interpretation/collection.d.ts +5 -0
  196. package/dist/types/interpretation/index.d.ts +5 -0
  197. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  198. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  199. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  200. package/dist/types/locus-info/fullState.d.ts +2 -0
  201. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  202. package/dist/types/locus-info/index.d.ts +322 -0
  203. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  204. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  205. package/dist/types/locus-info/parser.d.ts +271 -0
  206. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  207. package/dist/types/media/index.d.ts +34 -0
  208. package/dist/types/media/properties.d.ts +93 -0
  209. package/dist/types/media/util.d.ts +2 -0
  210. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  211. package/dist/types/meeting/in-meeting-actions.d.ts +163 -0
  212. package/dist/types/meeting/index.d.ts +1482 -0
  213. package/dist/types/meeting/locusMediaRequest.d.ts +72 -0
  214. package/dist/types/meeting/muteState.d.ts +184 -0
  215. package/dist/types/meeting/request.d.ts +257 -0
  216. package/dist/types/meeting/request.type.d.ts +11 -0
  217. package/dist/types/meeting/state.d.ts +9 -0
  218. package/dist/types/meeting/util.d.ts +79 -0
  219. package/dist/types/meeting-info/collection.d.ts +20 -0
  220. package/dist/types/meeting-info/index.d.ts +62 -0
  221. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  222. package/dist/types/meeting-info/request.d.ts +22 -0
  223. package/dist/types/meeting-info/util.d.ts +2 -0
  224. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  225. package/dist/types/meetings/collection.d.ts +31 -0
  226. package/dist/types/meetings/index.d.ts +367 -0
  227. package/dist/types/meetings/meetings.types.d.ts +4 -0
  228. package/dist/types/meetings/request.d.ts +27 -0
  229. package/dist/types/meetings/util.d.ts +18 -0
  230. package/dist/types/member/index.d.ts +159 -0
  231. package/dist/types/member/types.d.ts +32 -0
  232. package/dist/types/member/util.d.ts +2 -0
  233. package/dist/types/members/collection.d.ts +29 -0
  234. package/dist/types/members/index.d.ts +353 -0
  235. package/dist/types/members/request.d.ts +114 -0
  236. package/dist/types/members/types.d.ts +24 -0
  237. package/dist/types/members/util.d.ts +210 -0
  238. package/dist/types/metrics/constants.d.ts +55 -0
  239. package/dist/types/metrics/index.d.ts +45 -0
  240. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  241. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  242. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  243. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  244. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  245. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  246. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  247. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  248. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  249. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  250. package/dist/types/reachability/index.d.ts +152 -0
  251. package/dist/types/reachability/request.d.ts +37 -0
  252. package/dist/types/reactions/constants.d.ts +3 -0
  253. package/dist/types/reactions/reactions.d.ts +4 -0
  254. package/dist/types/reactions/reactions.type.d.ts +52 -0
  255. package/dist/types/reconnection-manager/index.d.ts +126 -0
  256. package/dist/types/recording-controller/enums.d.ts +7 -0
  257. package/dist/types/recording-controller/index.d.ts +207 -0
  258. package/dist/types/recording-controller/util.d.ts +14 -0
  259. package/dist/types/roap/index.d.ts +77 -0
  260. package/dist/types/roap/request.d.ts +36 -0
  261. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  262. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  263. package/dist/types/rtcMetrics/index.d.ts +46 -0
  264. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  265. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  266. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  267. package/dist/types/transcription/index.d.ts +64 -0
  268. package/package.json +23 -20
  269. package/src/annotation/annotation.types.ts +50 -0
  270. package/src/annotation/constants.ts +36 -0
  271. package/src/annotation/index.ts +328 -0
  272. package/src/breakouts/README.md +44 -14
  273. package/src/breakouts/breakout.ts +87 -9
  274. package/src/breakouts/edit-lock-error.ts +25 -0
  275. package/src/breakouts/events.ts +56 -0
  276. package/src/breakouts/index.ts +710 -10
  277. package/src/breakouts/request.ts +55 -0
  278. package/src/breakouts/utils.ts +57 -0
  279. package/src/common/errors/webex-errors.ts +6 -2
  280. package/src/common/logs/logger-proxy.ts +1 -1
  281. package/src/common/queue.ts +22 -8
  282. package/src/config.ts +2 -7
  283. package/src/constants.ts +165 -21
  284. package/src/controls-options-manager/constants.ts +5 -0
  285. package/src/controls-options-manager/enums.ts +18 -0
  286. package/src/controls-options-manager/index.ts +278 -0
  287. package/src/controls-options-manager/types.ts +59 -0
  288. package/src/controls-options-manager/util.ts +300 -0
  289. package/src/index.ts +39 -0
  290. package/src/interpretation/README.md +60 -0
  291. package/src/interpretation/collection.ts +19 -0
  292. package/src/interpretation/index.ts +332 -0
  293. package/src/interpretation/siLanguage.ts +18 -0
  294. package/src/locus-info/controlsUtils.ts +108 -0
  295. package/src/locus-info/index.ts +383 -61
  296. package/src/locus-info/infoUtils.ts +10 -2
  297. package/src/locus-info/mediaSharesUtils.ts +48 -0
  298. package/src/locus-info/parser.ts +224 -39
  299. package/src/locus-info/selfUtils.ts +81 -5
  300. package/src/media/index.ts +87 -140
  301. package/src/media/properties.ts +49 -90
  302. package/src/mediaQualityMetrics/config.ts +379 -377
  303. package/src/meeting/in-meeting-actions.ts +179 -3
  304. package/src/meeting/index.ts +2099 -2083
  305. package/src/meeting/locusMediaRequest.ts +311 -0
  306. package/src/meeting/muteState.ts +228 -132
  307. package/src/meeting/request.ts +105 -115
  308. package/src/meeting/util.ts +511 -397
  309. package/src/meeting-info/index.ts +54 -8
  310. package/src/meeting-info/meeting-info-v2.ts +148 -14
  311. package/src/meeting-info/utilv2.ts +13 -3
  312. package/src/meetings/collection.ts +20 -0
  313. package/src/meetings/index.ts +392 -84
  314. package/src/meetings/meetings.types.ts +12 -0
  315. package/src/meetings/request.ts +2 -0
  316. package/src/meetings/util.ts +103 -4
  317. package/src/member/index.ts +49 -0
  318. package/src/member/types.ts +38 -0
  319. package/src/member/util.ts +127 -25
  320. package/src/members/collection.ts +8 -0
  321. package/src/members/index.ts +107 -6
  322. package/src/members/request.ts +97 -17
  323. package/src/members/types.ts +28 -0
  324. package/src/members/util.ts +319 -240
  325. package/src/metrics/constants.ts +2 -4
  326. package/src/metrics/index.ts +1 -490
  327. package/src/multistream/mediaRequestManager.ts +289 -79
  328. package/src/multistream/receiveSlot.ts +55 -18
  329. package/src/multistream/receiveSlotManager.ts +46 -24
  330. package/src/multistream/remoteMedia.ts +27 -2
  331. package/src/multistream/remoteMediaGroup.ts +59 -0
  332. package/src/multistream/remoteMediaManager.ts +113 -32
  333. package/src/networkQualityMonitor/index.ts +6 -6
  334. package/src/reachability/index.ts +62 -15
  335. package/src/reachability/request.ts +10 -5
  336. package/src/reconnection-manager/index.ts +68 -43
  337. package/src/recording-controller/index.ts +20 -3
  338. package/src/recording-controller/util.ts +26 -9
  339. package/src/roap/index.ts +21 -30
  340. package/src/roap/request.ts +101 -95
  341. package/src/roap/turnDiscovery.ts +47 -25
  342. package/src/rtcMetrics/constants.ts +3 -0
  343. package/src/rtcMetrics/index.ts +100 -0
  344. package/src/statsAnalyzer/global.ts +1 -94
  345. package/src/statsAnalyzer/index.ts +376 -386
  346. package/src/statsAnalyzer/mqaUtil.ts +100 -99
  347. package/test/integration/spec/converged-space-meetings.js +233 -0
  348. package/test/integration/spec/journey.js +336 -259
  349. package/test/integration/spec/space-meeting.js +77 -4
  350. package/test/unit/spec/annotation/index.ts +418 -0
  351. package/test/unit/spec/breakouts/breakout.ts +142 -24
  352. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  353. package/test/unit/spec/breakouts/events.ts +89 -0
  354. package/test/unit/spec/breakouts/index.ts +1545 -48
  355. package/test/unit/spec/breakouts/request.ts +104 -0
  356. package/test/unit/spec/breakouts/utils.js +72 -0
  357. package/test/unit/spec/common/queue.js +31 -2
  358. package/test/unit/spec/controls-options-manager/index.js +287 -0
  359. package/test/unit/spec/controls-options-manager/util.js +582 -0
  360. package/test/unit/spec/fixture/locus.js +1 -0
  361. package/test/unit/spec/interpretation/collection.ts +15 -0
  362. package/test/unit/spec/interpretation/index.ts +589 -0
  363. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  364. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  365. package/test/unit/spec/locus-info/index.js +1169 -36
  366. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  367. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  368. package/test/unit/spec/locus-info/parser.js +62 -22
  369. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  370. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  371. package/test/unit/spec/media/index.ts +138 -28
  372. package/test/unit/spec/meeting/in-meeting-actions.ts +89 -3
  373. package/test/unit/spec/meeting/index.js +3573 -1663
  374. package/test/unit/spec/meeting/locusMediaRequest.ts +438 -0
  375. package/test/unit/spec/meeting/muteState.js +370 -208
  376. package/test/unit/spec/meeting/request.js +339 -44
  377. package/test/unit/spec/meeting/utils.js +456 -53
  378. package/test/unit/spec/meeting-info/index.js +181 -0
  379. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  380. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  381. package/test/unit/spec/meetings/collection.js +14 -0
  382. package/test/unit/spec/meetings/index.js +867 -125
  383. package/test/unit/spec/meetings/utils.js +206 -2
  384. package/test/unit/spec/member/index.js +58 -4
  385. package/test/unit/spec/member/util.js +479 -35
  386. package/test/unit/spec/members/index.js +319 -1
  387. package/test/unit/spec/members/request.js +206 -27
  388. package/test/unit/spec/members/utils.js +184 -0
  389. package/test/unit/spec/metrics/index.js +1 -50
  390. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  391. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  392. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  393. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  394. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  395. package/test/unit/spec/multistream/remoteMediaManager.ts +318 -0
  396. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  397. package/test/unit/spec/reachability/index.ts +125 -8
  398. package/test/unit/spec/reachability/request.js +66 -0
  399. package/test/unit/spec/reconnection-manager/index.js +59 -6
  400. package/test/unit/spec/recording-controller/index.js +294 -218
  401. package/test/unit/spec/recording-controller/util.js +223 -96
  402. package/test/unit/spec/roap/index.ts +26 -51
  403. package/test/unit/spec/roap/request.ts +196 -85
  404. package/test/unit/spec/roap/turnDiscovery.ts +30 -7
  405. package/test/unit/spec/rtcMetrics/index.ts +60 -0
  406. package/test/unit/spec/stats-analyzer/index.js +92 -41
  407. package/test/utils/constants.js +9 -0
  408. package/test/utils/integrationTestUtils.js +46 -0
  409. package/test/utils/testUtils.js +0 -45
  410. package/test/utils/webex-config.js +4 -0
  411. package/test/utils/webex-test-users.js +6 -3
  412. package/dist/meeting/effectsState.js +0 -262
  413. package/dist/meeting/effectsState.js.map +0 -1
  414. package/dist/metrics/config.js +0 -299
  415. package/dist/metrics/config.js.map +0 -1
  416. package/dist/multistream/multistreamMedia.js +0 -110
  417. package/dist/multistream/multistreamMedia.js.map +0 -1
  418. package/src/index.js +0 -16
  419. package/src/meeting/effectsState.ts +0 -211
  420. package/src/metrics/config.ts +0 -495
  421. package/src/multistream/multistreamMedia.ts +0 -97
  422. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -18,31 +18,70 @@ import {
18
18
  HTTP_VERBS,
19
19
  LEAVE,
20
20
  LOCI,
21
- LOCUS,
22
- MEDIA,
23
21
  PARTICIPANT,
24
22
  PROVISIONAL_TYPE_DIAL_IN,
25
23
  PROVISIONAL_TYPE_DIAL_OUT,
24
+ REACHABILITY,
26
25
  SEND_DTMF_ENDPOINT,
27
26
  _SLIDES_,
27
+ ANNOTATION,
28
28
  } from '../constants';
29
- import {Reaction} from '../reactions/reactions.type';
30
29
  import {SendReactionOptions, ToggleReactionsOptions} from './request.type';
30
+ import MeetingUtil from './util';
31
+ import {AnnotationInfo} from '../annotation/annotation.types';
31
32
 
32
33
  /**
33
34
  * @class MeetingRequest
34
35
  */
35
36
  export default class MeetingRequest extends StatelessWebexPlugin {
36
37
  changeVideoLayoutDebounced: any;
38
+ meetingRef: WeakRef<any>;
39
+ locusDeltaRequest: (options: object) => Promise<any>;
37
40
 
41
+ /**
42
+ * Constructor
43
+ * @param {Object} attrs
44
+ * @param {Object} options
45
+ */
38
46
  constructor(attrs: any, options: any) {
39
- super(attrs, options);
47
+ const {meeting, ...otherAttrs} = attrs;
48
+
49
+ super(otherAttrs, options);
50
+
51
+ this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
52
+
40
53
  this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
41
54
  leading: true,
42
55
  trailing: true,
43
56
  });
44
57
  }
45
58
 
59
+ /**
60
+ * Returns joinCookie from boundedStorage if present.
61
+ * @returns {Object} joinCookie
62
+ */
63
+ private getJoinCookie = async () => {
64
+ // @ts-ignore
65
+ const joinCookieRaw = await this.webex.boundedStorage
66
+ .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)
67
+ .catch(() => {});
68
+
69
+ if (joinCookieRaw) {
70
+ try {
71
+ const joinCookie = JSON.parse(joinCookieRaw);
72
+ if (joinCookie) {
73
+ return joinCookie;
74
+ }
75
+ } catch (e) {
76
+ LoggerProxy.logger.error(
77
+ `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`
78
+ );
79
+ }
80
+ }
81
+
82
+ return null;
83
+ };
84
+
46
85
  /**
47
86
  * Make a network request to join a meeting
48
87
  * @param {Object} options
@@ -57,6 +96,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
57
96
  * @param {boolean} options.moveToResource
58
97
  * @param {Object} options.roapMessage
59
98
  * @param {boolean} options.breakoutsSupported
99
+ * @param {String} options.locale,
100
+ * @param {Array} options.deviceCapabilities
101
+ * @param {boolean} options.liveAnnotationSupported
60
102
  * @returns {Promise}
61
103
  */
62
104
  async joinMeeting(options: {
@@ -76,6 +118,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
76
118
  permissionToken: any;
77
119
  preferTranscoding: any;
78
120
  breakoutsSupported: boolean;
121
+ locale?: string;
122
+ deviceCapabilities?: Array<string>;
123
+ liveAnnotationSupported: boolean;
79
124
  }) {
80
125
  const {
81
126
  asResourceOccupant,
@@ -93,12 +138,17 @@ export default class MeetingRequest extends StatelessWebexPlugin {
93
138
  roapMessage,
94
139
  preferTranscoding,
95
140
  breakoutsSupported,
141
+ locale,
142
+ deviceCapabilities = [],
143
+ liveAnnotationSupported,
96
144
  } = options;
97
145
 
98
146
  LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
99
147
 
100
148
  let url = '';
101
149
 
150
+ const joinCookie = await this.getJoinCookie();
151
+
102
152
  const body: any = {
103
153
  asResourceOccupant,
104
154
  device: {
@@ -115,19 +165,31 @@ export default class MeetingRequest extends StatelessWebexPlugin {
115
165
  supportsNativeLobby: 1,
116
166
  clientMediaPreferences: {
117
167
  preferTranscoding: preferTranscoding ?? true,
168
+ joinCookie,
118
169
  },
119
170
  };
120
171
 
121
172
  if (breakoutsSupported) {
122
- body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];
173
+ deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
174
+ }
175
+ if (liveAnnotationSupported) {
176
+ deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
177
+ }
178
+
179
+ if (locale) {
180
+ body.locale = locale;
123
181
  }
124
182
 
183
+ // add deviceCapabilities prop
184
+ if (deviceCapabilities.length) {
185
+ body.deviceCapabilities = deviceCapabilities;
186
+ }
125
187
  // @ts-ignore
126
- if (this.webex.meetings.clientRegion) {
188
+ if (this.webex.meetings.geoHintInfo) {
127
189
  // @ts-ignore
128
- body.device.countryCode = this.webex.meetings.clientRegion.countryCode;
190
+ body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
129
191
  // @ts-ignore
130
- body.device.regionCode = this.webex.meetings.clientRegion.regionCode;
192
+ body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
131
193
  }
132
194
 
133
195
  if (moderator !== undefined) {
@@ -251,7 +313,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
251
313
  };
252
314
 
253
315
  // @ts-ignore
254
- return this.request({
316
+ return this.locusDeltaRequest({
255
317
  method: HTTP_VERBS.POST,
256
318
  uri,
257
319
  body,
@@ -306,7 +368,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
306
368
  };
307
369
 
308
370
  // @ts-ignore
309
- return this.request({
371
+ return this.locusDeltaRequest({
310
372
  method: HTTP_VERBS.POST,
311
373
  uri,
312
374
  body,
@@ -320,62 +382,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
320
382
  }
321
383
 
322
384
  /**
323
- * Syns the missed delta event
385
+ * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
324
386
  * @param {Object} options
325
- * @param {boolean} options.desync flag to get partial or whole locus object
326
- * @param {String} options.syncUrl sync url to get ht elatest locus delta
327
- * @returns {Promise}
328
- */
329
- syncMeeting(options: {desync: boolean; syncUrl: string}) {
330
- /* eslint-disable no-else-return */
331
- const {desync} = options;
332
- let {syncUrl} = options;
333
-
334
- /* istanbul ignore else */
335
- if (desync) {
336
- // check for existing URL parameters
337
- syncUrl = syncUrl
338
- .concat(syncUrl.split('?')[1] ? '&' : '?')
339
- .concat(`${LOCUS.SYNCDEBUG}=${desync}`);
340
- }
341
-
342
- // @ts-ignore
343
- return this.request({
344
- method: HTTP_VERBS.GET,
345
- uri: syncUrl,
346
- }) // TODO: Handle if delta sync failed . Get the full locus object
347
- .catch((err) => {
348
- LoggerProxy.logger.error(
349
- `Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`
350
- );
351
-
352
- return err;
353
- });
354
- }
355
-
356
- /**
357
- * Request to get the complete locus object
358
- * @param {Object} options
359
- * @param {boolean} options.desync flag to get partial or whole locus object
360
387
  * @param {String} options.locusUrl sync url to get ht elatest locus delta
361
388
  * @returns {Promise}
362
389
  */
363
- getFullLocus(options: {desync: boolean; locusUrl: string}) {
364
- let {locusUrl} = options;
365
- const {desync} = options;
366
-
367
- if (locusUrl) {
368
- if (desync) {
369
- locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;
370
- }
390
+ getLocusDTO(options: {url: string}) {
391
+ const {url} = options;
371
392
 
393
+ if (url) {
372
394
  // @ts-ignore
373
395
  return this.request({
374
396
  method: HTTP_VERBS.GET,
375
- uri: locusUrl,
397
+ uri: url,
376
398
  }).catch((err) => {
377
399
  LoggerProxy.logger.error(
378
- `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`
400
+ `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
379
401
  );
380
402
 
381
403
  return err;
@@ -421,7 +443,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
421
443
  };
422
444
 
423
445
  // @ts-ignore
424
- return this.request({
446
+ return this.locusDeltaRequest({
425
447
  method: HTTP_VERBS.PUT,
426
448
  uri,
427
449
  body,
@@ -470,8 +492,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
470
492
  correlationId,
471
493
  };
472
494
 
473
- // @ts-ignore
474
- return this.request({
495
+ return this.locusDeltaRequest({
475
496
  method: HTTP_VERBS.PUT,
476
497
  uri,
477
498
  body,
@@ -497,14 +518,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
497
518
  correlationId: options.correlationId,
498
519
  };
499
520
 
500
- // @ts-ignore
501
- return this.request({
521
+ return this.locusDeltaRequest({
502
522
  method: HTTP_VERBS.PUT,
503
523
  uri,
504
524
  body,
505
525
  });
506
526
  }
507
527
 
528
+ /**
529
+ * Makes a network request to lock the meeting
530
+ * @param {Object} options
531
+ * @param {Boolean} options.lock Whether it is locked or not
532
+ * @returns {Promise}
533
+ */
508
534
  lockMeeting(options) {
509
535
  const uri = `${options.locusUrl}/${CONTROLS}`;
510
536
  const body = {
@@ -513,8 +539,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
513
539
  },
514
540
  };
515
541
 
516
- // @ts-ignore
517
- return this.request({
542
+ return this.locusDeltaRequest({
518
543
  method: HTTP_VERBS.PATCH,
519
544
  uri,
520
545
  body,
@@ -540,54 +565,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
540
565
  ...(options.reason && {reason: options.reason}),
541
566
  };
542
567
 
543
- // @ts-ignore
544
- return this.request({
545
- method: HTTP_VERBS.PUT,
546
- uri,
547
- body,
548
- });
549
- }
550
-
551
- /**
552
- * Toggle remote audio and/or video
553
- * @param {Object} options options for toggling
554
- * @param {String} options.selfId Locus self id??
555
- * @param {String} options.locusUrl Locus url
556
- * @param {String} options.deviceUrl Url of a device
557
- * @param {String} options.resourceId Populated if you are paired to a device
558
- * @param {String} options.localMedias local sdps
559
- * @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)
560
- * @returns {Promise}
561
- */
562
- remoteAudioVideoToggle(
563
- options:
564
- | {
565
- selfId: string;
566
- locusUrl: string;
567
- deviceUrl: string;
568
- resourceId: string;
569
- localMedias: string;
570
- }
571
- | any
572
- ) {
573
- const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;
574
- const body = {
575
- device: {
576
- // @ts-ignore
577
- deviceType: this.config.meetings.deviceType,
578
- url: options.deviceUrl,
579
- },
580
- usingResource: options.resourceId || null,
581
- correlationId: options.correlationId,
582
- respOnlySdp: true,
583
- localMedias: options.localMedias,
584
- clientMediaPreferences: {
585
- preferTranscoding: options.preferTranscoding ?? true,
586
- },
587
- };
588
-
589
- // @ts-ignore
590
- return this.request({
568
+ return this.locusDeltaRequest({
591
569
  method: HTTP_VERBS.PUT,
592
570
  uri,
593
571
  body,
@@ -612,6 +590,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
612
590
  deviceUrl: string;
613
591
  resourceId: string;
614
592
  uri: string;
593
+ annotationInfo: AnnotationInfo;
615
594
  }
616
595
  | any
617
596
  ) {
@@ -645,6 +624,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
645
624
  if (options?.resourceToken) {
646
625
  body.resourceToken = options?.resourceToken;
647
626
  }
627
+ if (options?.annotationInfo) {
628
+ body.annotation = options?.annotationInfo;
629
+ }
648
630
 
649
631
  // @ts-ignore
650
632
  return this.request({
@@ -664,7 +646,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
664
646
  */
665
647
  sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
666
648
  // @ts-ignore
667
- return this.request({
649
+ return this.locusDeltaRequest({
668
650
  method: HTTP_VERBS.POST,
669
651
  uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
670
652
  body: {
@@ -745,7 +727,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
745
727
  : undefined;
746
728
 
747
729
  // @ts-ignore
748
- return this.request({
730
+ return this.locusDeltaRequest({
749
731
  method: HTTP_VERBS.PUT,
750
732
  uri: `${locusUrl}/${CONTROLS}`,
751
733
  body: {
@@ -768,7 +750,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
768
750
  const uri = `${locusUrl}/${END}`;
769
751
 
770
752
  // @ts-ignore
771
- return this.request({
753
+ return this.locusDeltaRequest({
772
754
  method: HTTP_VERBS.POST,
773
755
  uri,
774
756
  });
@@ -820,7 +802,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
820
802
  const uri = `${locusUrl}/${CONTROLS}`;
821
803
 
822
804
  // @ts-ignore
823
- return this.request({
805
+ return this.locusDeltaRequest({
824
806
  method: HTTP_VERBS.PUT,
825
807
  uri,
826
808
  body: {
@@ -831,4 +813,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
831
813
  },
832
814
  });
833
815
  }
816
+
817
+ getLocusStatusByUrl(locusUrl: string) {
818
+ // @ts-ignore
819
+ return this.request({
820
+ method: HTTP_VERBS.GET,
821
+ uri: locusUrl,
822
+ });
823
+ }
834
824
  }