@webex/plugin-meetings 3.0.0-beta.22 → 3.0.0-beta.221

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 (419) hide show
  1. package/README.md +46 -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 +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 +188 -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 +357 -62
  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 +49 -106
  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 +2587 -2560
  69. package/dist/meeting/index.js.map +1 -1
  70. package/dist/meeting/locusMediaRequest.js +292 -0
  71. package/dist/meeting/locusMediaRequest.js.map +1 -0
  72. package/dist/meeting/muteState.js +228 -123
  73. package/dist/meeting/muteState.js.map +1 -1
  74. package/dist/meeting/request.js +244 -194
  75. package/dist/meeting/request.js.map +1 -1
  76. package/dist/meeting/util.js +568 -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 +361 -84
  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 +90 -30
  129. package/dist/reachability/index.js.map +1 -1
  130. package/dist/reachability/request.js +16 -7
  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 +25 -29
  139. package/dist/roap/index.js.map +1 -1
  140. package/dist/roap/request.js +111 -89
  141. package/dist/roap/request.js.map +1 -1
  142. package/dist/roap/turnDiscovery.js +97 -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 +1028 -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 +1512 -0
  213. package/dist/types/meeting/locusMediaRequest.d.ts +75 -0
  214. package/dist/types/meeting/muteState.d.ts +184 -0
  215. package/dist/types/meeting/request.d.ts +289 -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 +94 -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 +361 -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 +158 -0
  251. package/dist/types/reachability/request.d.ts +39 -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 +38 -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 +47 -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 +175 -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 +381 -59
  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 +89 -109
  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 +2062 -2137
  305. package/src/meeting/locusMediaRequest.ts +314 -0
  306. package/src/meeting/muteState.ts +227 -130
  307. package/src/meeting/request.ts +157 -116
  308. package/src/meeting/util.ts +555 -396
  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 +397 -102
  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 +76 -18
  335. package/src/reachability/request.ts +16 -7
  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 +25 -30
  340. package/src/roap/request.ts +103 -95
  341. package/src/roap/turnDiscovery.ts +51 -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 +3510 -1747
  374. package/test/unit/spec/meeting/locusMediaRequest.ts +443 -0
  375. package/test/unit/spec/meeting/muteState.js +370 -208
  376. package/test/unit/spec/meeting/request.js +417 -45
  377. package/test/unit/spec/meeting/utils.js +601 -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 +874 -150
  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 +185 -7
  398. package/test/unit/spec/reachability/request.js +68 -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 +27 -51
  403. package/test/unit/spec/roap/request.ts +202 -85
  404. package/test/unit/spec/roap/turnDiscovery.ts +36 -8
  405. package/test/unit/spec/rtcMetrics/index.ts +68 -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/src/index.js +0 -16
  417. package/src/meeting/effectsState.ts +0 -211
  418. package/src/metrics/config.ts +0 -495
  419. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -18,31 +18,73 @@ 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
+ IP_VERSION,
28
29
  } from '../constants';
29
- import {Reaction} from '../reactions/reactions.type';
30
30
  import {SendReactionOptions, ToggleReactionsOptions} from './request.type';
31
+ import MeetingUtil from './util';
32
+ import {AnnotationInfo} from '../annotation/annotation.types';
31
33
 
32
34
  /**
33
35
  * @class MeetingRequest
34
36
  */
35
37
  export default class MeetingRequest extends StatelessWebexPlugin {
36
38
  changeVideoLayoutDebounced: any;
39
+ meetingRef: WeakRef<any>;
40
+ locusDeltaRequest: (options: object) => Promise<any>;
41
+ buildLocusDeltaRequestOptions: (options: object) => Promise<any>;
37
42
 
43
+ /**
44
+ * Constructor
45
+ * @param {Object} attrs
46
+ * @param {Object} options
47
+ */
38
48
  constructor(attrs: any, options: any) {
39
- super(attrs, options);
49
+ const {meeting, ...otherAttrs} = attrs;
50
+
51
+ super(otherAttrs, options);
52
+
53
+ this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
54
+ this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);
55
+
40
56
  this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
41
57
  leading: true,
42
58
  trailing: true,
43
59
  });
44
60
  }
45
61
 
62
+ /**
63
+ * Returns joinCookie from boundedStorage if present.
64
+ * @returns {Object} joinCookie
65
+ */
66
+ private getJoinCookie = async () => {
67
+ // @ts-ignore
68
+ const joinCookieRaw = await this.webex.boundedStorage
69
+ .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)
70
+ .catch(() => {});
71
+
72
+ if (joinCookieRaw) {
73
+ try {
74
+ const joinCookie = JSON.parse(joinCookieRaw);
75
+ if (joinCookie) {
76
+ return joinCookie;
77
+ }
78
+ } catch (e) {
79
+ LoggerProxy.logger.error(
80
+ `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`
81
+ );
82
+ }
83
+ }
84
+
85
+ return null;
86
+ };
87
+
46
88
  /**
47
89
  * Make a network request to join a meeting
48
90
  * @param {Object} options
@@ -57,6 +99,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
57
99
  * @param {boolean} options.moveToResource
58
100
  * @param {Object} options.roapMessage
59
101
  * @param {boolean} options.breakoutsSupported
102
+ * @param {String} options.locale,
103
+ * @param {Array} options.deviceCapabilities
104
+ * @param {boolean} options.liveAnnotationSupported
60
105
  * @returns {Promise}
61
106
  */
62
107
  async joinMeeting(options: {
@@ -76,6 +121,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
76
121
  permissionToken: any;
77
122
  preferTranscoding: any;
78
123
  breakoutsSupported: boolean;
124
+ locale?: string;
125
+ deviceCapabilities?: Array<string>;
126
+ liveAnnotationSupported: boolean;
127
+ ipVersion: IP_VERSION;
79
128
  }) {
80
129
  const {
81
130
  asResourceOccupant,
@@ -93,12 +142,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
93
142
  roapMessage,
94
143
  preferTranscoding,
95
144
  breakoutsSupported,
145
+ locale,
146
+ deviceCapabilities = [],
147
+ liveAnnotationSupported,
148
+ ipVersion,
96
149
  } = options;
97
150
 
98
151
  LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
99
152
 
100
153
  let url = '';
101
154
 
155
+ const joinCookie = await this.getJoinCookie();
156
+
102
157
  const body: any = {
103
158
  asResourceOccupant,
104
159
  device: {
@@ -115,19 +170,32 @@ export default class MeetingRequest extends StatelessWebexPlugin {
115
170
  supportsNativeLobby: 1,
116
171
  clientMediaPreferences: {
117
172
  preferTranscoding: preferTranscoding ?? true,
173
+ joinCookie,
174
+ ipver: ipVersion,
118
175
  },
119
176
  };
120
177
 
121
178
  if (breakoutsSupported) {
122
- body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];
179
+ deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
180
+ }
181
+ if (liveAnnotationSupported) {
182
+ deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
183
+ }
184
+
185
+ if (locale) {
186
+ body.locale = locale;
123
187
  }
124
188
 
189
+ // add deviceCapabilities prop
190
+ if (deviceCapabilities.length) {
191
+ body.deviceCapabilities = deviceCapabilities;
192
+ }
125
193
  // @ts-ignore
126
- if (this.webex.meetings.clientRegion) {
194
+ if (this.webex.meetings.geoHintInfo) {
127
195
  // @ts-ignore
128
- body.device.countryCode = this.webex.meetings.clientRegion.countryCode;
196
+ body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
129
197
  // @ts-ignore
130
- body.device.regionCode = this.webex.meetings.clientRegion.regionCode;
198
+ body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
131
199
  }
132
200
 
133
201
  if (moderator !== undefined) {
@@ -251,7 +319,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
251
319
  };
252
320
 
253
321
  // @ts-ignore
254
- return this.request({
322
+ return this.locusDeltaRequest({
255
323
  method: HTTP_VERBS.POST,
256
324
  uri,
257
325
  body,
@@ -306,7 +374,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
306
374
  };
307
375
 
308
376
  // @ts-ignore
309
- return this.request({
377
+ return this.locusDeltaRequest({
310
378
  method: HTTP_VERBS.POST,
311
379
  uri,
312
380
  body,
@@ -320,62 +388,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
320
388
  }
321
389
 
322
390
  /**
323
- * Syns the missed delta event
391
+ * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
324
392
  * @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
393
  * @param {String} options.locusUrl sync url to get ht elatest locus delta
361
394
  * @returns {Promise}
362
395
  */
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
- }
396
+ getLocusDTO(options: {url: string}) {
397
+ const {url} = options;
371
398
 
399
+ if (url) {
372
400
  // @ts-ignore
373
401
  return this.request({
374
402
  method: HTTP_VERBS.GET,
375
- uri: locusUrl,
403
+ uri: url,
376
404
  }).catch((err) => {
377
405
  LoggerProxy.logger.error(
378
- `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`
406
+ `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
379
407
  );
380
408
 
381
409
  return err;
@@ -421,7 +449,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
421
449
  };
422
450
 
423
451
  // @ts-ignore
424
- return this.request({
452
+ return this.locusDeltaRequest({
425
453
  method: HTTP_VERBS.PUT,
426
454
  uri,
427
455
  body,
@@ -435,13 +463,49 @@ export default class MeetingRequest extends StatelessWebexPlugin {
435
463
  }
436
464
 
437
465
  /**
438
- * Make a network request to leave a meeting
466
+ * Prepares request options to to leave a meeting
439
467
  * @param {Object} options
440
468
  * @param {Url} options.locusUrl
441
469
  * @param {String} options.selfId
442
470
  * @param {Url} options.deviceUrl
443
471
  * @param {String} options.resourceId,
444
472
  * @param {String} options.correlationId
473
+ * @returns {Object} request options
474
+ */
475
+ prepareLeaveMeetingRequestOptions({
476
+ locusUrl,
477
+ selfId,
478
+ deviceUrl: url,
479
+ resourceId,
480
+ correlationId,
481
+ }: {
482
+ locusUrl: string;
483
+ selfId: string;
484
+ deviceUrl: string;
485
+ resourceId: string;
486
+ correlationId: string;
487
+ }) {
488
+ const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
489
+ const body = {
490
+ device: {
491
+ // @ts-ignore
492
+ deviceType: this.config.meetings.deviceType,
493
+ url,
494
+ },
495
+ usingResource: resourceId || null,
496
+ correlationId,
497
+ };
498
+
499
+ return {
500
+ method: HTTP_VERBS.PUT,
501
+ uri,
502
+ body,
503
+ };
504
+ }
505
+
506
+ /**
507
+ * Make a network request to leave a meeting
508
+ * @param {Object} options
445
509
  * @returns {Promise}
446
510
  */
447
511
  leaveMeeting({
@@ -470,14 +534,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
470
534
  correlationId,
471
535
  };
472
536
 
473
- // @ts-ignore
474
- return this.request({
537
+ return this.locusDeltaRequest({
475
538
  method: HTTP_VERBS.PUT,
476
539
  uri,
477
540
  body,
478
541
  });
479
542
  }
480
543
 
544
+ /**
545
+ * Builds request options to leave a meeting
546
+ * @param {Object} options
547
+ * @returns {Object} request options
548
+ */
549
+ buildLeaveMeetingRequestOptions(options: any) {
550
+ return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
551
+ }
552
+
481
553
  /**
482
554
  * Make a network request to acknowledge a meeting
483
555
  * @param {Object} options
@@ -497,14 +569,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
497
569
  correlationId: options.correlationId,
498
570
  };
499
571
 
500
- // @ts-ignore
501
- return this.request({
572
+ return this.locusDeltaRequest({
502
573
  method: HTTP_VERBS.PUT,
503
574
  uri,
504
575
  body,
505
576
  });
506
577
  }
507
578
 
579
+ /**
580
+ * Makes a network request to lock the meeting
581
+ * @param {Object} options
582
+ * @param {Boolean} options.lock Whether it is locked or not
583
+ * @returns {Promise}
584
+ */
508
585
  lockMeeting(options) {
509
586
  const uri = `${options.locusUrl}/${CONTROLS}`;
510
587
  const body = {
@@ -513,8 +590,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
513
590
  },
514
591
  };
515
592
 
516
- // @ts-ignore
517
- return this.request({
593
+ return this.locusDeltaRequest({
518
594
  method: HTTP_VERBS.PATCH,
519
595
  uri,
520
596
  body,
@@ -540,54 +616,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
540
616
  ...(options.reason && {reason: options.reason}),
541
617
  };
542
618
 
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({
619
+ return this.locusDeltaRequest({
591
620
  method: HTTP_VERBS.PUT,
592
621
  uri,
593
622
  body,
@@ -612,6 +641,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
612
641
  deviceUrl: string;
613
642
  resourceId: string;
614
643
  uri: string;
644
+ annotationInfo: AnnotationInfo;
615
645
  }
616
646
  | any
617
647
  ) {
@@ -645,6 +675,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
645
675
  if (options?.resourceToken) {
646
676
  body.resourceToken = options?.resourceToken;
647
677
  }
678
+ if (options?.annotationInfo) {
679
+ body.annotation = options?.annotationInfo;
680
+ }
648
681
 
649
682
  // @ts-ignore
650
683
  return this.request({
@@ -664,7 +697,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
664
697
  */
665
698
  sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
666
699
  // @ts-ignore
667
- return this.request({
700
+ return this.locusDeltaRequest({
668
701
  method: HTTP_VERBS.POST,
669
702
  uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
670
703
  body: {
@@ -745,7 +778,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
745
778
  : undefined;
746
779
 
747
780
  // @ts-ignore
748
- return this.request({
781
+ return this.locusDeltaRequest({
749
782
  method: HTTP_VERBS.PUT,
750
783
  uri: `${locusUrl}/${CONTROLS}`,
751
784
  body: {
@@ -768,7 +801,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
768
801
  const uri = `${locusUrl}/${END}`;
769
802
 
770
803
  // @ts-ignore
771
- return this.request({
804
+ return this.locusDeltaRequest({
772
805
  method: HTTP_VERBS.POST,
773
806
  uri,
774
807
  });
@@ -820,7 +853,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
820
853
  const uri = `${locusUrl}/${CONTROLS}`;
821
854
 
822
855
  // @ts-ignore
823
- return this.request({
856
+ return this.locusDeltaRequest({
824
857
  method: HTTP_VERBS.PUT,
825
858
  uri,
826
859
  body: {
@@ -831,4 +864,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
831
864
  },
832
865
  });
833
866
  }
867
+
868
+ getLocusStatusByUrl(locusUrl: string) {
869
+ // @ts-ignore
870
+ return this.request({
871
+ method: HTTP_VERBS.GET,
872
+ uri: locusUrl,
873
+ });
874
+ }
834
875
  }