@webex/plugin-meetings 3.0.0-beta.17 → 3.0.0-beta.170

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 (427) hide show
  1. package/README.md +45 -1
  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 +359 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +216 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +23 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +52 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +45 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1048 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +78 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +67 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +3 -2
  23. package/dist/common/errors/webex-errors.js.map +1 -1
  24. package/dist/common/logs/logger-proxy.js +1 -1
  25. package/dist/common/logs/logger-proxy.js.map +1 -1
  26. package/dist/config.js +6 -8
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +194 -28
  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 +300 -0
  39. package/dist/controls-options-manager/util.js.map +1 -0
  40. package/dist/index.js +95 -0
  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 +214 -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 +92 -2
  49. package/dist/locus-info/controlsUtils.js.map +1 -1
  50. package/dist/locus-info/index.js +350 -41
  51. package/dist/locus-info/index.js.map +1 -1
  52. package/dist/locus-info/mediaSharesUtils.js +43 -1
  53. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  54. package/dist/locus-info/parser.js +2 -1
  55. package/dist/locus-info/parser.js.map +1 -1
  56. package/dist/locus-info/selfUtils.js +97 -14
  57. package/dist/locus-info/selfUtils.js.map +1 -1
  58. package/dist/media/index.js +39 -134
  59. package/dist/media/index.js.map +1 -1
  60. package/dist/media/properties.js +19 -97
  61. package/dist/media/properties.js.map +1 -1
  62. package/dist/mediaQualityMetrics/config.js +505 -493
  63. package/dist/mediaQualityMetrics/config.js.map +1 -1
  64. package/dist/meeting/in-meeting-actions.js +76 -2
  65. package/dist/meeting/in-meeting-actions.js.map +1 -1
  66. package/dist/meeting/index.js +2640 -2436
  67. package/dist/meeting/index.js.map +1 -1
  68. package/dist/meeting/locusMediaRequest.js +291 -0
  69. package/dist/meeting/locusMediaRequest.js.map +1 -0
  70. package/dist/meeting/muteState.js +229 -124
  71. package/dist/meeting/muteState.js.map +1 -1
  72. package/dist/meeting/request.js +191 -167
  73. package/dist/meeting/request.js.map +1 -1
  74. package/dist/meeting/request.type.js.map +1 -1
  75. package/dist/meeting/util.js +477 -466
  76. package/dist/meeting/util.js.map +1 -1
  77. package/dist/meeting-info/index.js +48 -7
  78. package/dist/meeting-info/index.js.map +1 -1
  79. package/dist/meeting-info/meeting-info-v2.js +172 -50
  80. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  81. package/dist/meeting-info/utilv2.js +20 -5
  82. package/dist/meeting-info/utilv2.js.map +1 -1
  83. package/dist/meetings/collection.js +22 -0
  84. package/dist/meetings/collection.js.map +1 -1
  85. package/dist/meetings/index.js +377 -82
  86. package/dist/meetings/index.js.map +1 -1
  87. package/dist/meetings/meetings.types.js +7 -0
  88. package/dist/meetings/meetings.types.js.map +1 -0
  89. package/dist/meetings/request.js +16 -12
  90. package/dist/meetings/request.js.map +1 -1
  91. package/dist/meetings/util.js +88 -1
  92. package/dist/meetings/util.js.map +1 -1
  93. package/dist/member/index.js +43 -0
  94. package/dist/member/index.js.map +1 -1
  95. package/dist/member/types.js +15 -0
  96. package/dist/member/types.js.map +1 -0
  97. package/dist/member/util.js +97 -3
  98. package/dist/member/util.js.map +1 -1
  99. package/dist/members/collection.js +10 -0
  100. package/dist/members/collection.js.map +1 -1
  101. package/dist/members/index.js +94 -11
  102. package/dist/members/index.js.map +1 -1
  103. package/dist/members/request.js +109 -39
  104. package/dist/members/request.js.map +1 -1
  105. package/dist/members/types.js +15 -0
  106. package/dist/members/types.js.map +1 -0
  107. package/dist/members/util.js +316 -233
  108. package/dist/members/util.js.map +1 -1
  109. package/dist/metrics/constants.js +3 -5
  110. package/dist/metrics/constants.js.map +1 -1
  111. package/dist/metrics/index.js +1 -468
  112. package/dist/metrics/index.js.map +1 -1
  113. package/dist/multistream/mediaRequestManager.js +265 -36
  114. package/dist/multistream/mediaRequestManager.js.map +1 -1
  115. package/dist/multistream/receiveSlot.js +52 -19
  116. package/dist/multistream/receiveSlot.js.map +1 -1
  117. package/dist/multistream/receiveSlotManager.js +53 -33
  118. package/dist/multistream/receiveSlotManager.js.map +1 -1
  119. package/dist/multistream/remoteMedia.js +44 -18
  120. package/dist/multistream/remoteMedia.js.map +1 -1
  121. package/dist/multistream/remoteMediaGroup.js +60 -3
  122. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  123. package/dist/multistream/remoteMediaManager.js +322 -103
  124. package/dist/multistream/remoteMediaManager.js.map +1 -1
  125. package/dist/networkQualityMonitor/index.js +4 -2
  126. package/dist/networkQualityMonitor/index.js.map +1 -1
  127. package/dist/reachability/index.js +117 -60
  128. package/dist/reachability/index.js.map +1 -1
  129. package/dist/reachability/request.js +12 -5
  130. package/dist/reachability/request.js.map +1 -1
  131. package/dist/reactions/constants.js +13 -0
  132. package/dist/reactions/constants.js.map +1 -0
  133. package/dist/reactions/reactions.js +2 -2
  134. package/dist/reactions/reactions.js.map +1 -1
  135. package/dist/reactions/reactions.type.js +18 -18
  136. package/dist/reactions/reactions.type.js.map +1 -1
  137. package/dist/reconnection-manager/index.js +217 -162
  138. package/dist/reconnection-manager/index.js.map +1 -1
  139. package/dist/recording-controller/enums.js +17 -0
  140. package/dist/recording-controller/enums.js.map +1 -0
  141. package/dist/recording-controller/index.js +363 -0
  142. package/dist/recording-controller/index.js.map +1 -0
  143. package/dist/recording-controller/util.js +64 -0
  144. package/dist/recording-controller/util.js.map +1 -0
  145. package/dist/roap/index.js +21 -29
  146. package/dist/roap/index.js.map +1 -1
  147. package/dist/roap/request.js +135 -94
  148. package/dist/roap/request.js.map +1 -1
  149. package/dist/roap/turnDiscovery.js +135 -53
  150. package/dist/roap/turnDiscovery.js.map +1 -1
  151. package/dist/statsAnalyzer/global.js +1 -93
  152. package/dist/statsAnalyzer/global.js.map +1 -1
  153. package/dist/statsAnalyzer/index.js +329 -314
  154. package/dist/statsAnalyzer/index.js.map +1 -1
  155. package/dist/statsAnalyzer/mqaUtil.js +103 -54
  156. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  157. package/dist/types/annotation/annotation.types.d.ts +43 -0
  158. package/dist/types/annotation/constants.d.ts +31 -0
  159. package/dist/types/annotation/index.d.ts +124 -0
  160. package/dist/types/breakouts/breakout.d.ts +8 -0
  161. package/dist/types/breakouts/collection.d.ts +5 -0
  162. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  163. package/dist/types/breakouts/events.d.ts +8 -0
  164. package/dist/types/breakouts/index.d.ts +5 -0
  165. package/dist/types/breakouts/request.d.ts +22 -0
  166. package/dist/types/breakouts/utils.d.ts +15 -0
  167. package/dist/types/common/browser-detection.d.ts +9 -0
  168. package/dist/types/common/collection.d.ts +48 -0
  169. package/dist/types/common/config.d.ts +2 -0
  170. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  171. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  172. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  173. package/dist/types/common/errors/media.d.ts +15 -0
  174. package/dist/types/common/errors/parameter.d.ts +15 -0
  175. package/dist/types/common/errors/password-error.d.ts +15 -0
  176. package/dist/types/common/errors/permission.d.ts +14 -0
  177. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  178. package/dist/types/common/errors/reconnection.d.ts +15 -0
  179. package/dist/types/common/errors/stats.d.ts +15 -0
  180. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  181. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  182. package/dist/types/common/events/events-scope.d.ts +17 -0
  183. package/dist/types/common/events/events.d.ts +12 -0
  184. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  185. package/dist/types/common/events/util.d.ts +2 -0
  186. package/dist/types/common/logs/logger-config.d.ts +2 -0
  187. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  188. package/dist/types/common/logs/request.d.ts +34 -0
  189. package/dist/types/common/queue.d.ts +32 -0
  190. package/dist/types/config.d.ts +72 -0
  191. package/dist/types/constants.d.ts +1007 -0
  192. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  193. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  194. package/dist/types/controls-options-manager/index.d.ts +136 -0
  195. package/dist/types/controls-options-manager/types.d.ts +43 -0
  196. package/dist/types/controls-options-manager/util.d.ts +1 -0
  197. package/dist/types/index.d.ts +7 -0
  198. package/dist/types/interpretation/collection.d.ts +5 -0
  199. package/dist/types/interpretation/index.d.ts +5 -0
  200. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  201. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  202. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  203. package/dist/types/locus-info/fullState.d.ts +2 -0
  204. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  205. package/dist/types/locus-info/index.d.ts +315 -0
  206. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  207. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  208. package/dist/types/locus-info/parser.d.ts +212 -0
  209. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  210. package/dist/types/media/index.d.ts +34 -0
  211. package/dist/types/media/properties.d.ts +86 -0
  212. package/dist/types/media/util.d.ts +2 -0
  213. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  214. package/dist/types/meeting/in-meeting-actions.d.ts +149 -0
  215. package/dist/types/meeting/index.d.ts +1430 -0
  216. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  217. package/dist/types/meeting/muteState.d.ts +184 -0
  218. package/dist/types/meeting/request.d.ts +270 -0
  219. package/dist/types/meeting/request.type.d.ts +11 -0
  220. package/dist/types/meeting/state.d.ts +9 -0
  221. package/dist/types/meeting/util.d.ts +77 -0
  222. package/dist/types/meeting-info/collection.d.ts +20 -0
  223. package/dist/types/meeting-info/index.d.ts +62 -0
  224. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  225. package/dist/types/meeting-info/request.d.ts +22 -0
  226. package/dist/types/meeting-info/util.d.ts +2 -0
  227. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  228. package/dist/types/meetings/collection.d.ts +31 -0
  229. package/dist/types/meetings/index.d.ts +365 -0
  230. package/dist/types/meetings/meetings.types.d.ts +4 -0
  231. package/dist/types/meetings/request.d.ts +27 -0
  232. package/dist/types/meetings/util.d.ts +18 -0
  233. package/dist/types/member/index.d.ts +158 -0
  234. package/dist/types/member/types.d.ts +21 -0
  235. package/dist/types/member/util.d.ts +2 -0
  236. package/dist/types/members/collection.d.ts +29 -0
  237. package/dist/types/members/index.d.ts +353 -0
  238. package/dist/types/members/request.d.ts +114 -0
  239. package/dist/types/members/types.d.ts +24 -0
  240. package/dist/types/members/util.d.ts +210 -0
  241. package/dist/types/metrics/constants.d.ts +55 -0
  242. package/dist/types/metrics/index.d.ts +45 -0
  243. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  244. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  245. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  246. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  247. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  248. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  249. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  250. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  251. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  252. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  253. package/dist/types/reachability/index.d.ts +152 -0
  254. package/dist/types/reachability/request.d.ts +37 -0
  255. package/dist/types/reactions/constants.d.ts +3 -0
  256. package/dist/types/reactions/reactions.d.ts +4 -0
  257. package/dist/types/reactions/reactions.type.d.ts +52 -0
  258. package/dist/types/reconnection-manager/index.d.ts +126 -0
  259. package/dist/types/recording-controller/enums.d.ts +7 -0
  260. package/dist/types/recording-controller/index.d.ts +208 -0
  261. package/dist/types/recording-controller/util.d.ts +14 -0
  262. package/dist/types/roap/index.d.ts +77 -0
  263. package/dist/types/roap/request.d.ts +36 -0
  264. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  265. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  266. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  267. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  268. package/dist/types/transcription/index.d.ts +64 -0
  269. package/package.json +29 -21
  270. package/src/annotation/annotation.types.ts +52 -0
  271. package/src/annotation/constants.ts +36 -0
  272. package/src/annotation/index.ts +343 -0
  273. package/src/breakouts/README.md +220 -0
  274. package/src/breakouts/breakout.ts +188 -0
  275. package/src/breakouts/collection.ts +19 -0
  276. package/src/breakouts/edit-lock-error.ts +25 -0
  277. package/src/breakouts/events.ts +56 -0
  278. package/src/breakouts/index.ts +925 -0
  279. package/src/breakouts/request.ts +55 -0
  280. package/src/breakouts/utils.ts +57 -0
  281. package/src/common/errors/webex-errors.ts +6 -2
  282. package/src/common/logs/logger-proxy.ts +1 -1
  283. package/src/config.ts +5 -7
  284. package/src/constants.ts +183 -22
  285. package/src/controls-options-manager/constants.ts +5 -0
  286. package/src/controls-options-manager/enums.ts +18 -0
  287. package/src/controls-options-manager/index.ts +278 -0
  288. package/src/controls-options-manager/types.ts +59 -0
  289. package/src/controls-options-manager/util.ts +286 -0
  290. package/src/index.ts +37 -0
  291. package/src/interpretation/README.md +51 -0
  292. package/src/interpretation/collection.ts +19 -0
  293. package/src/interpretation/index.ts +182 -0
  294. package/src/interpretation/siLanguage.ts +18 -0
  295. package/src/locus-info/controlsUtils.ts +110 -0
  296. package/src/locus-info/index.ts +374 -38
  297. package/src/locus-info/mediaSharesUtils.ts +48 -0
  298. package/src/locus-info/parser.ts +2 -1
  299. package/src/locus-info/selfUtils.ts +86 -2
  300. package/src/media/index.ts +70 -142
  301. package/src/media/properties.ts +41 -104
  302. package/src/mediaQualityMetrics/config.ts +379 -377
  303. package/src/meeting/in-meeting-actions.ts +151 -3
  304. package/src/meeting/index.ts +2029 -2033
  305. package/src/meeting/locusMediaRequest.ts +309 -0
  306. package/src/meeting/muteState.ts +228 -132
  307. package/src/meeting/request.ts +100 -91
  308. package/src/meeting/request.type.ts +2 -0
  309. package/src/meeting/util.ts +450 -439
  310. package/src/meeting-info/index.ts +54 -8
  311. package/src/meeting-info/meeting-info-v2.ts +150 -14
  312. package/src/meeting-info/utilv2.ts +13 -3
  313. package/src/meetings/collection.ts +20 -0
  314. package/src/meetings/index.ts +396 -89
  315. package/src/meetings/meetings.types.ts +12 -0
  316. package/src/meetings/request.ts +3 -1
  317. package/src/meetings/util.ts +103 -4
  318. package/src/member/index.ts +42 -0
  319. package/src/member/types.ts +24 -0
  320. package/src/member/util.ts +95 -1
  321. package/src/members/collection.ts +8 -0
  322. package/src/members/index.ts +108 -6
  323. package/src/members/request.ts +98 -17
  324. package/src/members/types.ts +28 -0
  325. package/src/members/util.ts +319 -240
  326. package/src/metrics/constants.ts +2 -4
  327. package/src/metrics/index.ts +1 -490
  328. package/src/multistream/mediaRequestManager.ts +337 -63
  329. package/src/multistream/receiveSlot.ts +68 -26
  330. package/src/multistream/receiveSlotManager.ts +61 -38
  331. package/src/multistream/remoteMedia.ts +29 -3
  332. package/src/multistream/remoteMediaGroup.ts +61 -2
  333. package/src/multistream/remoteMediaManager.ts +260 -66
  334. package/src/networkQualityMonitor/index.ts +6 -6
  335. package/src/reachability/index.ts +75 -25
  336. package/src/reachability/request.ts +10 -5
  337. package/src/reactions/constants.ts +4 -0
  338. package/src/reactions/reactions.ts +4 -4
  339. package/src/reactions/reactions.type.ts +28 -3
  340. package/src/reconnection-manager/index.ts +80 -49
  341. package/src/recording-controller/enums.ts +8 -0
  342. package/src/recording-controller/index.ts +333 -0
  343. package/src/recording-controller/util.ts +75 -0
  344. package/src/roap/index.ts +21 -30
  345. package/src/roap/request.ts +72 -61
  346. package/src/roap/turnDiscovery.ts +51 -27
  347. package/src/statsAnalyzer/global.ts +1 -94
  348. package/src/statsAnalyzer/index.ts +380 -390
  349. package/src/statsAnalyzer/mqaUtil.ts +106 -99
  350. package/test/integration/spec/converged-space-meetings.js +233 -0
  351. package/test/integration/spec/journey.js +331 -254
  352. package/test/integration/spec/space-meeting.js +77 -4
  353. package/test/unit/spec/annotation/index.ts +436 -0
  354. package/test/unit/spec/breakouts/breakout.ts +237 -0
  355. package/test/unit/spec/breakouts/collection.ts +15 -0
  356. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  357. package/test/unit/spec/breakouts/events.ts +89 -0
  358. package/test/unit/spec/breakouts/index.ts +1790 -0
  359. package/test/unit/spec/breakouts/request.ts +104 -0
  360. package/test/unit/spec/breakouts/utils.js +72 -0
  361. package/test/unit/spec/controls-options-manager/index.js +287 -0
  362. package/test/unit/spec/controls-options-manager/util.js +518 -0
  363. package/test/unit/spec/fixture/locus.js +1 -0
  364. package/test/unit/spec/interpretation/collection.ts +15 -0
  365. package/test/unit/spec/interpretation/index.ts +329 -0
  366. package/test/unit/spec/interpretation/siLanguage.ts +26 -0
  367. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  368. package/test/unit/spec/locus-info/index.js +792 -4
  369. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  370. package/test/unit/spec/locus-info/selfConstant.js +48 -0
  371. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  372. package/test/unit/spec/media/index.ts +118 -22
  373. package/test/unit/spec/media/properties.ts +9 -9
  374. package/test/unit/spec/meeting/in-meeting-actions.ts +75 -3
  375. package/test/unit/spec/meeting/index.js +2742 -1441
  376. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  377. package/test/unit/spec/meeting/muteState.js +370 -208
  378. package/test/unit/spec/meeting/request.js +354 -42
  379. package/test/unit/spec/meeting/utils.js +384 -170
  380. package/test/unit/spec/meeting-info/index.js +181 -0
  381. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  382. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  383. package/test/unit/spec/meetings/collection.js +14 -0
  384. package/test/unit/spec/meetings/index.js +847 -121
  385. package/test/unit/spec/meetings/utils.js +206 -2
  386. package/test/unit/spec/member/index.js +31 -0
  387. package/test/unit/spec/member/util.js +408 -32
  388. package/test/unit/spec/members/index.js +320 -1
  389. package/test/unit/spec/members/request.js +206 -27
  390. package/test/unit/spec/members/utils.js +184 -0
  391. package/test/unit/spec/metrics/index.js +1 -50
  392. package/test/unit/spec/multistream/mediaRequestManager.ts +1012 -109
  393. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  394. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  395. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  396. package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
  397. package/test/unit/spec/multistream/remoteMediaManager.ts +672 -65
  398. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  399. package/test/unit/spec/reachability/index.ts +176 -25
  400. package/test/unit/spec/reachability/request.js +66 -0
  401. package/test/unit/spec/reconnection-manager/index.js +95 -13
  402. package/test/unit/spec/recording-controller/index.js +307 -0
  403. package/test/unit/spec/recording-controller/util.js +229 -0
  404. package/test/unit/spec/roap/index.ts +28 -52
  405. package/test/unit/spec/roap/request.ts +225 -0
  406. package/test/unit/spec/roap/turnDiscovery.ts +73 -34
  407. package/test/unit/spec/stats-analyzer/index.js +94 -43
  408. package/test/utils/constants.js +9 -0
  409. package/test/utils/integrationTestUtils.js +46 -0
  410. package/test/utils/testUtils.js +0 -45
  411. package/test/utils/webex-config.js +4 -0
  412. package/test/utils/webex-test-users.js +7 -3
  413. package/tsconfig.json +6 -0
  414. package/dist/media/internal-media-core-wrapper.js +0 -18
  415. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  416. package/dist/meeting/effectsState.js +0 -262
  417. package/dist/meeting/effectsState.js.map +0 -1
  418. package/dist/metrics/config.js +0 -299
  419. package/dist/metrics/config.js.map +0 -1
  420. package/dist/multistream/multistreamMedia.js +0 -106
  421. package/dist/multistream/multistreamMedia.js.map +0 -1
  422. package/src/index.js +0 -15
  423. package/src/media/internal-media-core-wrapper.ts +0 -9
  424. package/src/meeting/effectsState.ts +0 -211
  425. package/src/metrics/config.ts +0 -495
  426. package/src/multistream/multistreamMedia.ts +0 -93
  427. package/test/unit/spec/meeting/effectsState.js +0 -281
@@ -0,0 +1,126 @@
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+ import Meeting from '../meeting';
5
+ /**
6
+ * @export
7
+ * @class ReconnectionManager
8
+ */
9
+ export default class ReconnectionManager {
10
+ autoRejoinEnabled: any;
11
+ iceState: any;
12
+ maxRejoinAttempts: any;
13
+ meeting: any;
14
+ rejoinAttempts: any;
15
+ shareStatus: any;
16
+ status: any;
17
+ tryCount: any;
18
+ webex: any;
19
+ /**
20
+ * @param {Meeting} meeting
21
+ */
22
+ constructor(meeting: Meeting);
23
+ /**
24
+ * @public
25
+ * @memberof ReconnectionManager
26
+ * @returns {void}
27
+ */
28
+ resetReconnectionTimer(): void;
29
+ /**
30
+ * Sets the iceState to connected and clears any disconnect timeouts and
31
+ * related timeout data within the iceState.
32
+ *
33
+ * @returns {undefined}
34
+ * @public
35
+ * @memberof ReconnectionManager
36
+ */
37
+ iceReconnected(): void;
38
+ /**
39
+ * Set the iceState to disconnected and generates a timeout that waits for the
40
+ * iceState to reconnect and then resolves. If the ice state is already
41
+ * processing a reconnect, it immediately resolves. Rejects if the timeout
42
+ * duration is reached.
43
+ *
44
+ * @returns {Promise<undefined>}
45
+ * @public
46
+ * @memberof ReconnectionManager
47
+ */
48
+ waitForIceReconnect(): Promise<void>;
49
+ /**
50
+ * @returns {undefined}
51
+ * @public
52
+ * @memberof ReconnectionManager
53
+ */
54
+ reset(): void;
55
+ /**
56
+ * @returns {undefined}
57
+ * @public
58
+ * @memberof ReconnectionManager
59
+ */
60
+ cleanUp(): void;
61
+ /**
62
+ * Stop the local share track.
63
+ *
64
+ * @param {string} reason a {@link SHARE_STOPPED_REASON}
65
+ * @returns {undefined}
66
+ * @private
67
+ * @memberof ReconnectionManager
68
+ */
69
+ private stopLocalShareTrack;
70
+ /**
71
+ * @public
72
+ * @memberof ReconnectionManager
73
+ * @returns {Boolean} true if reconnection operation is in progress
74
+ */
75
+ isReconnectInProgress(): boolean;
76
+ /**
77
+ * @returns {Boolean}
78
+ * @throws {ReconnectionError}
79
+ * @private
80
+ * @memberof ReconnectionManager
81
+ */
82
+ private validate;
83
+ /**
84
+ * Initiates a media reconnect for the active meeting
85
+ * @param {Object} reconnectOptions
86
+ * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened
87
+ * @param {boolean} [reconnectOptions.networkRetry=false] indicates if we are retrying the reconnect
88
+ * @returns {Promise}
89
+ * @public
90
+ * @memberof ReconnectionManager
91
+ */
92
+ reconnect({ networkDisconnect, networkRetry, }?: {
93
+ networkDisconnect?: boolean;
94
+ networkRetry?: boolean;
95
+ }): any;
96
+ /**
97
+ * @param {Object} reconnectOptions
98
+ * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened
99
+ * @returns {Promise}
100
+ * @throws {NeedsRetryError}
101
+ * @private
102
+ * @memberof ReconnectionManager
103
+ */
104
+ private executeReconnection;
105
+ /**
106
+ * Rejoins a meeting after detecting the member was in a LEFT state
107
+ *
108
+ * @async
109
+ * @param {boolean} wasSharing
110
+ * @returns {Promise}
111
+ */
112
+ rejoinMeeting(wasSharing?: boolean): Promise<void>;
113
+ /**
114
+ * @returns {Promise}
115
+ * @private
116
+ * @memberof ReconnectionManager
117
+ */
118
+ reconnectMedia(): Promise<void>;
119
+ /**
120
+ * Attempt to Reconnect Mercury Websocket
121
+ * @returns {Promise}
122
+ * @private
123
+ * @memberof ReconnectionManager
124
+ */
125
+ private reconnectMercuryWebSocket;
126
+ }
@@ -0,0 +1,7 @@
1
+ declare enum RecordingAction {
2
+ Start = "Start",
3
+ Stop = "Stop",
4
+ Pause = "Pause",
5
+ Resume = "Resume"
6
+ }
7
+ export default RecordingAction;
@@ -0,0 +1,208 @@
1
+ import { SELF_POLICY } from '../constants';
2
+ import MeetingRequest from '../meeting/request';
3
+ /**
4
+ * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting
5
+ * @export
6
+ * @private
7
+ * @class Recording
8
+ */
9
+ export default class RecordingController {
10
+ /**
11
+ * @instance
12
+ * @type {MeetingRequest}
13
+ * @private
14
+ * @memberof RecordingController
15
+ */
16
+ private request;
17
+ /**
18
+ * @instance
19
+ * @type {Array}
20
+ * @private
21
+ * @memberof RecordingInfo
22
+ */
23
+ private displayHints;
24
+ /**
25
+ * @instance
26
+ * @type {Object}
27
+ * @private
28
+ * @memberof RecordingInfo
29
+ */
30
+ private selfUserPolicies;
31
+ /**
32
+ * @instance
33
+ * @type {string}
34
+ * @private
35
+ * @memberof RecordingInfo
36
+ */
37
+ private serviceUrl;
38
+ /**
39
+ * @instance
40
+ * @type {string}
41
+ * @private
42
+ * @memberof RecordingInfo
43
+ */
44
+ private sessionId;
45
+ /**
46
+ * @instance
47
+ * @type {string}
48
+ * @private
49
+ * @memberof RecordingInfo
50
+ */
51
+ private locusUrl;
52
+ /**
53
+ * @instance
54
+ * @type {string}
55
+ * @private
56
+ * @memberof RecordingInfo
57
+ */
58
+ private locusId;
59
+ /**
60
+ * @param {MeetingRequest} request
61
+ * @param {Object} options
62
+ * @constructor
63
+ * @memberof RecordingController
64
+ */
65
+ constructor(request: MeetingRequest, options?: {
66
+ serviceUrl?: string;
67
+ sessionId: string;
68
+ locusUrl: string;
69
+ displayHints?: Array<string>;
70
+ });
71
+ /**
72
+ * @param {MeetingRequest} request
73
+ * @param {LocusInfo} info
74
+ * @returns {void}
75
+ * @private
76
+ * @memberof RecordingController
77
+ */
78
+ private initialize;
79
+ /**
80
+ * @param {Object} options
81
+ * @returns {void}
82
+ * @public
83
+ * @memberof RecordingController
84
+ */
85
+ set(options?: {
86
+ serviceUrl?: string;
87
+ sessionId: string;
88
+ locusUrl: string;
89
+ displayHints?: Array<string>;
90
+ }): void;
91
+ /**
92
+ * @param {string} url
93
+ * @returns {void}
94
+ * @public
95
+ * @memberof RecordingController
96
+ */
97
+ setLocusUrl(url: string): void;
98
+ /**
99
+ * @param {Array} hints
100
+ * @returns {void}
101
+ * @public
102
+ * @memberof RecordingController
103
+ */
104
+ setDisplayHints(hints: Array<string>): void;
105
+ /**
106
+ * @param {Object} selfUserPolicies
107
+ * @returns {void}
108
+ * @public
109
+ * @memberof RecordingController
110
+ */
111
+ setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>): void;
112
+ /**
113
+ * @param {string} id
114
+ * @returns {void}
115
+ * @public
116
+ * @memberof RecordingController
117
+ */
118
+ setSessionId(id: string): void;
119
+ /**
120
+ * @param {string} url
121
+ * @returns {void}
122
+ * @public
123
+ * @memberof RecordingController
124
+ */
125
+ setServiceUrl(url: string): void;
126
+ /**
127
+ * @returns {string}
128
+ * @public
129
+ * @memberof RecordingController
130
+ */
131
+ getLocusUrl(): string;
132
+ /**
133
+ * @returns {string}
134
+ * @public
135
+ * @memberof RecordingController
136
+ */
137
+ getLocusId(): string;
138
+ /**
139
+ * @returns {string}
140
+ * @public
141
+ * @memberof RecordingController
142
+ */
143
+ getSessionId(): string;
144
+ /**
145
+ * @returns {string}
146
+ * @public
147
+ * @memberof RecordingController
148
+ */
149
+ getServiceUrl(): string;
150
+ /**
151
+ * @returns {Array}
152
+ * @public
153
+ * @memberof RecordingController
154
+ */
155
+ getDisplayHints(): string[];
156
+ /**
157
+ * @param {Object} options
158
+ * @returns {void}
159
+ * @private
160
+ * @memberof RecordingController
161
+ */
162
+ private extract;
163
+ /**
164
+ * @param {RecordingAction} action
165
+ * @private
166
+ * @memberof RecordingController
167
+ * @returns {Promise}
168
+ */
169
+ private recordingService;
170
+ /**
171
+ * @param {RecordingAction} action
172
+ * @private
173
+ * @memberof RecordingController
174
+ * @returns {Promise}
175
+ */
176
+ private recordingControls;
177
+ /**
178
+ * @param {RecordingAction} action
179
+ * @private
180
+ * @memberof RecordingController
181
+ * @returns {Promise}
182
+ */
183
+ private recordingFacade;
184
+ /**
185
+ * @private
186
+ * @memberof RecordingController
187
+ * @returns {Promise}
188
+ */
189
+ startRecording(): Promise<any>;
190
+ /**
191
+ * @private
192
+ * @memberof RecordingController
193
+ * @returns {Promise}
194
+ */
195
+ stopRecording(): Promise<any>;
196
+ /**
197
+ * @private
198
+ * @memberof RecordingController
199
+ * @returns {Promise}
200
+ */
201
+ pauseRecording(): Promise<any>;
202
+ /**
203
+ * @private
204
+ * @memberof RecordingController
205
+ * @returns {Promise}
206
+ */
207
+ resumeRecording(): Promise<any>;
208
+ }
@@ -0,0 +1,14 @@
1
+ import { SELF_POLICY } from '../constants';
2
+ import RecordingAction from './enums';
3
+ declare const _default: {
4
+ canUserStart: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
5
+ canUserPause: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
6
+ canUserResume: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
7
+ canUserStop: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
8
+ deriveRecordingStates: (action: RecordingAction) => {
9
+ recording: boolean;
10
+ paused: boolean;
11
+ };
12
+ extractLocusId: (url: string) => string;
13
+ };
14
+ export default _default;
@@ -0,0 +1,77 @@
1
+ import { StatelessWebexPlugin } from '@webex/webex-core';
2
+ import Meeting from '../meeting';
3
+ /**
4
+ * Roap options
5
+ * @typedef {Object} RoapOptions
6
+ * @property {String} sdp
7
+ * @property {Meeting} meeting
8
+ * @property {Number} seq
9
+ * @property {Number} tieBreaker
10
+ * @property {Boolean} reconnect
11
+ */
12
+ /**
13
+ * @typedef {Object} SeqOptions
14
+ * @property {String} correlationId
15
+ * @property {String} mediaId
16
+ * @property {Number} seq
17
+ */
18
+ /**
19
+ * @class Roap
20
+ * @export
21
+ * @private
22
+ */
23
+ export default class Roap extends StatelessWebexPlugin {
24
+ attrs: any;
25
+ lastRoapOffer: any;
26
+ options: any;
27
+ roapHandler: any;
28
+ roapRequest: any;
29
+ turnDiscovery: any;
30
+ /**
31
+ *
32
+ * @param {Object} attrs
33
+ * @param {Object} options
34
+ */
35
+ constructor(attrs: any, options: any);
36
+ /**
37
+ *
38
+ * @param {SeqOptions} options
39
+ * @returns {null}
40
+ * @memberof Roap
41
+ */
42
+ sendRoapOK(options: any): Promise<any>;
43
+ /**
44
+ * Sends a ROAP answer...
45
+ * @param {SeqOptions} options
46
+ * @param {Boolean} options.audioMuted
47
+ * @param {Boolean} options.videoMuted
48
+ * @returns {Promise}
49
+ * @memberof Roap
50
+ */
51
+ sendRoapAnswer(options: any): any;
52
+ /**
53
+ * Sends a ROAP error...
54
+ * @param {Object} options
55
+ * @returns {Promise}
56
+ * @memberof Roap
57
+ */
58
+ sendRoapError(options: any): any;
59
+ /**
60
+ * sends a roap media request
61
+ * @param {RoapOptions} options
62
+ * @returns {Promise}
63
+ * @memberof Roap
64
+ */
65
+ sendRoapMediaRequest(options: any): any;
66
+ /**
67
+ * Performs a TURN server discovery procedure, which involves exchanging
68
+ * some roap messages with the server. This exchange has to be done before
69
+ * any other roap messages are sent
70
+ *
71
+ * @param {Meeting} meeting
72
+ * @param {Boolean} isReconnecting should be set to true if this is a new
73
+ * media connection just after a reconnection
74
+ * @returns {Promise}
75
+ */
76
+ doTurnDiscovery(meeting: Meeting, isReconnecting: boolean): any;
77
+ }
@@ -0,0 +1,36 @@
1
+ import { StatelessWebexPlugin } from '@webex/webex-core';
2
+ import { LocusMediaRequest } from '../meeting/locusMediaRequest';
3
+ /**
4
+ * @class RoapRequest
5
+ */
6
+ export default class RoapRequest extends StatelessWebexPlugin {
7
+ /**
8
+ * Returns reachability data.
9
+ * @param {Object} localSdp
10
+ * @returns {Object}
11
+ */
12
+ attachReachabilityData(localSdp: any): Promise<{
13
+ localSdp: any;
14
+ joinCookie: any;
15
+ }>;
16
+ /**
17
+ * Sends a ROAP message
18
+ * @param {Object} options
19
+ * @param {Object} options.roapMessage
20
+ * @param {String} options.locusSelfUrl
21
+ * @param {String} options.mediaId
22
+ * @param {String} options.correlationId
23
+ * @param {String} options.meetingId
24
+ * @returns {Promise} returns the response/failure of the request
25
+ */
26
+ sendRoap(options: {
27
+ roapMessage: any;
28
+ locusSelfUrl: string;
29
+ mediaId: string;
30
+ meetingId: string;
31
+ locusMediaRequest?: LocusMediaRequest;
32
+ }): Promise<{
33
+ mediaConnections: any;
34
+ locus: any;
35
+ }>;
36
+ }
@@ -0,0 +1,91 @@
1
+ import RoapRequest from './request';
2
+ import Meeting from '../meeting';
3
+ /**
4
+ * Handles the process of finding out TURN server information from Linus.
5
+ * This is achieved by sending a TURN_DISCOVERY_REQUEST.
6
+ */
7
+ export default class TurnDiscovery {
8
+ private roapRequest;
9
+ private defer?;
10
+ private turnInfo;
11
+ private responseTimer?;
12
+ /**
13
+ * Constructor
14
+ *
15
+ * @param {RoapRequest} roapRequest
16
+ */
17
+ constructor(roapRequest: RoapRequest);
18
+ /**
19
+ * waits for TURN_DISCOVERY_RESPONSE message to arrive
20
+ *
21
+ * @returns {Promise}
22
+ * @private
23
+ * @memberof Roap
24
+ */
25
+ private waitForTurnDiscoveryResponse;
26
+ /**
27
+ * handles TURN_DISCOVERY_RESPONSE roap message
28
+ *
29
+ * @param {Object} roapMessage
30
+ * @returns {void}
31
+ * @public
32
+ * @memberof Roap
33
+ */
34
+ handleTurnDiscoveryResponse(roapMessage: object): void;
35
+ /**
36
+ * sends the TURN_DISCOVERY_REQUEST roap request
37
+ *
38
+ * @param {Meeting} meeting
39
+ * @param {Boolean} isReconnecting
40
+ * @returns {Promise}
41
+ * @private
42
+ * @memberof Roap
43
+ */
44
+ sendRoapTurnDiscoveryRequest(meeting: Meeting, isReconnecting: boolean): Promise<void>;
45
+ /**
46
+ * Sends the OK message that server expects to receive
47
+ * after it sends us TURN_DISCOVERY_RESPONSE
48
+ *
49
+ * @param {Meeting} meeting
50
+ * @returns {Promise}
51
+ */
52
+ sendRoapOK(meeting: Meeting): Promise<{
53
+ mediaConnections: any;
54
+ locus: any;
55
+ }>;
56
+ /**
57
+ * Gets the reason why reachability is skipped.
58
+ *
59
+ * @param {Meeting} meeting
60
+ * @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
61
+ */
62
+ private getSkipReason;
63
+ /**
64
+ * Checks if TURN discovery is skipped.
65
+ *
66
+ * @param {Meeting} meeting
67
+ * @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
68
+ */
69
+ isSkipped(meeting: any): Promise<boolean>;
70
+ /**
71
+ * Retrieves TURN server information from the backend by doing
72
+ * a roap message exchange:
73
+ * client server
74
+ * | -----TURN_DISCOVERY_REQUEST-----> |
75
+ * | <----TURN_DISCOVERY_RESPONSE----- |
76
+ * | --------------OK----------------> |
77
+ *
78
+ * This TURN discovery roap exchange is always done with seq=0.
79
+ * The RoapMediaConnection SDP exchange always starts with seq=1,
80
+ * so it works fine no matter if TURN discovery is done or not.
81
+ *
82
+ * @param {Meeting} meeting
83
+ * @param {Boolean} isReconnecting should be set to true if this is a new
84
+ * media connection just after a reconnection
85
+ * @returns {Promise}
86
+ */
87
+ doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean): Promise<{
88
+ turnServerInfo: any;
89
+ turnDiscoverySkippedReason: any;
90
+ }>;
91
+ }
@@ -0,0 +1,36 @@
1
+ declare const STATS_DEFAULT: {
2
+ encryption: string;
3
+ bandwidth: {
4
+ systemBandwidth: number;
5
+ sentPerSecond: number;
6
+ encodedPerSecond: number;
7
+ helper: {
8
+ audioBytesSent: number;
9
+ videoBytestSent: number;
10
+ };
11
+ speed: number;
12
+ };
13
+ results: {};
14
+ connectionType: {
15
+ systemNetworkType: string;
16
+ systemIpAddress: string;
17
+ local: {
18
+ candidateType: any[];
19
+ transport: any[];
20
+ ipAddress: any[];
21
+ networkType: any[];
22
+ };
23
+ remote: {
24
+ candidateType: any[];
25
+ transport: any[];
26
+ ipAddress: any[];
27
+ networkType: any[];
28
+ };
29
+ };
30
+ resolutions: {};
31
+ internal: {
32
+ remote: {};
33
+ candidates: {};
34
+ };
35
+ };
36
+ export default STATS_DEFAULT;