@webex/plugin-meetings 3.0.0-beta.16 → 3.0.0-beta.161

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 (424) 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 +212 -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 +43 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1046 -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 +175 -26
  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 +77 -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 +317 -24
  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 +79 -1
  65. package/dist/meeting/in-meeting-actions.js.map +1 -1
  66. package/dist/meeting/index.js +2349 -2178
  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 +444 -443
  76. package/dist/meeting/util.js.map +1 -1
  77. package/dist/meeting-info/meeting-info-v2.js +157 -49
  78. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  79. package/dist/meeting-info/utilv2.js +20 -5
  80. package/dist/meeting-info/utilv2.js.map +1 -1
  81. package/dist/meetings/collection.js +22 -0
  82. package/dist/meetings/collection.js.map +1 -1
  83. package/dist/meetings/index.js +365 -73
  84. package/dist/meetings/index.js.map +1 -1
  85. package/dist/meetings/meetings.types.js +7 -0
  86. package/dist/meetings/meetings.types.js.map +1 -0
  87. package/dist/meetings/request.js +16 -12
  88. package/dist/meetings/request.js.map +1 -1
  89. package/dist/meetings/util.js +88 -1
  90. package/dist/meetings/util.js.map +1 -1
  91. package/dist/member/index.js +43 -0
  92. package/dist/member/index.js.map +1 -1
  93. package/dist/member/types.js +15 -0
  94. package/dist/member/types.js.map +1 -0
  95. package/dist/member/util.js +97 -3
  96. package/dist/member/util.js.map +1 -1
  97. package/dist/members/collection.js +10 -0
  98. package/dist/members/collection.js.map +1 -1
  99. package/dist/members/index.js +94 -11
  100. package/dist/members/index.js.map +1 -1
  101. package/dist/members/request.js +109 -39
  102. package/dist/members/request.js.map +1 -1
  103. package/dist/members/types.js +15 -0
  104. package/dist/members/types.js.map +1 -0
  105. package/dist/members/util.js +316 -233
  106. package/dist/members/util.js.map +1 -1
  107. package/dist/metrics/config.js +50 -14
  108. package/dist/metrics/config.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 +48 -29
  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 +190 -145
  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 +343 -0
  142. package/dist/recording-controller/index.js.map +1 -0
  143. package/dist/recording-controller/util.js +63 -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 +127 -92
  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 +2 -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 +987 -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 +1524 -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 +75 -0
  222. package/dist/types/meeting-info/collection.d.ts +20 -0
  223. package/dist/types/meeting-info/index.d.ts +57 -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 +364 -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/config.d.ts +195 -0
  242. package/dist/types/metrics/constants.d.ts +55 -0
  243. package/dist/types/metrics/index.d.ts +169 -0
  244. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  245. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  246. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  247. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  248. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  249. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  250. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  251. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  252. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  253. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  254. package/dist/types/reachability/index.d.ts +152 -0
  255. package/dist/types/reachability/request.d.ts +37 -0
  256. package/dist/types/reactions/constants.d.ts +3 -0
  257. package/dist/types/reactions/reactions.d.ts +4 -0
  258. package/dist/types/reactions/reactions.type.d.ts +52 -0
  259. package/dist/types/reconnection-manager/index.d.ts +126 -0
  260. package/dist/types/recording-controller/enums.d.ts +7 -0
  261. package/dist/types/recording-controller/index.d.ts +193 -0
  262. package/dist/types/recording-controller/util.d.ts +13 -0
  263. package/dist/types/roap/index.d.ts +77 -0
  264. package/dist/types/roap/request.d.ts +36 -0
  265. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  266. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  267. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  268. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  269. package/dist/types/transcription/index.d.ts +64 -0
  270. package/package.json +28 -21
  271. package/src/annotation/annotation.types.ts +52 -0
  272. package/src/annotation/constants.ts +36 -0
  273. package/src/annotation/index.ts +343 -0
  274. package/src/breakouts/README.md +220 -0
  275. package/src/breakouts/breakout.ts +180 -0
  276. package/src/breakouts/collection.ts +19 -0
  277. package/src/breakouts/edit-lock-error.ts +25 -0
  278. package/src/breakouts/events.ts +37 -0
  279. package/src/breakouts/index.ts +921 -0
  280. package/src/breakouts/request.ts +55 -0
  281. package/src/breakouts/utils.ts +57 -0
  282. package/src/common/errors/webex-errors.ts +6 -2
  283. package/src/common/logs/logger-proxy.ts +1 -1
  284. package/src/config.ts +5 -7
  285. package/src/constants.ts +165 -20
  286. package/src/controls-options-manager/constants.ts +5 -0
  287. package/src/controls-options-manager/enums.ts +18 -0
  288. package/src/controls-options-manager/index.ts +278 -0
  289. package/src/controls-options-manager/types.ts +59 -0
  290. package/src/controls-options-manager/util.ts +286 -0
  291. package/src/index.ts +34 -0
  292. package/src/interpretation/README.md +51 -0
  293. package/src/interpretation/collection.ts +19 -0
  294. package/src/interpretation/index.ts +182 -0
  295. package/src/interpretation/siLanguage.ts +18 -0
  296. package/src/locus-info/controlsUtils.ts +110 -0
  297. package/src/locus-info/index.ts +339 -21
  298. package/src/locus-info/mediaSharesUtils.ts +48 -0
  299. package/src/locus-info/parser.ts +2 -1
  300. package/src/locus-info/selfUtils.ts +86 -2
  301. package/src/media/index.ts +70 -142
  302. package/src/media/properties.ts +41 -104
  303. package/src/mediaQualityMetrics/config.ts +379 -377
  304. package/src/meeting/in-meeting-actions.ts +156 -0
  305. package/src/meeting/index.ts +1779 -1741
  306. package/src/meeting/locusMediaRequest.ts +309 -0
  307. package/src/meeting/muteState.ts +228 -132
  308. package/src/meeting/request.ts +100 -91
  309. package/src/meeting/request.type.ts +2 -0
  310. package/src/meeting/util.ts +422 -421
  311. package/src/meeting-info/meeting-info-v2.ts +134 -13
  312. package/src/meeting-info/utilv2.ts +13 -3
  313. package/src/meetings/collection.ts +20 -0
  314. package/src/meetings/index.ts +385 -83
  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/config.ts +49 -10
  327. package/src/metrics/constants.ts +2 -4
  328. package/src/metrics/index.ts +43 -27
  329. package/src/multistream/mediaRequestManager.ts +337 -63
  330. package/src/multistream/receiveSlot.ts +68 -26
  331. package/src/multistream/receiveSlotManager.ts +61 -38
  332. package/src/multistream/remoteMedia.ts +29 -3
  333. package/src/multistream/remoteMediaGroup.ts +61 -2
  334. package/src/multistream/remoteMediaManager.ts +260 -66
  335. package/src/networkQualityMonitor/index.ts +6 -6
  336. package/src/reachability/index.ts +75 -25
  337. package/src/reachability/request.ts +10 -5
  338. package/src/reactions/constants.ts +4 -0
  339. package/src/reactions/reactions.ts +4 -4
  340. package/src/reactions/reactions.type.ts +28 -3
  341. package/src/reconnection-manager/index.ts +53 -32
  342. package/src/recording-controller/enums.ts +8 -0
  343. package/src/recording-controller/index.ts +315 -0
  344. package/src/recording-controller/util.ts +58 -0
  345. package/src/roap/index.ts +21 -30
  346. package/src/roap/request.ts +51 -52
  347. package/src/roap/turnDiscovery.ts +51 -27
  348. package/src/statsAnalyzer/global.ts +1 -94
  349. package/src/statsAnalyzer/index.ts +380 -390
  350. package/src/statsAnalyzer/mqaUtil.ts +106 -99
  351. package/test/integration/spec/converged-space-meetings.js +233 -0
  352. package/test/integration/spec/journey.js +331 -254
  353. package/test/integration/spec/space-meeting.js +77 -4
  354. package/test/unit/spec/annotation/index.ts +436 -0
  355. package/test/unit/spec/breakouts/breakout.ts +233 -0
  356. package/test/unit/spec/breakouts/collection.ts +15 -0
  357. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  358. package/test/unit/spec/breakouts/events.ts +77 -0
  359. package/test/unit/spec/breakouts/index.ts +1790 -0
  360. package/test/unit/spec/breakouts/request.ts +104 -0
  361. package/test/unit/spec/breakouts/utils.js +72 -0
  362. package/test/unit/spec/controls-options-manager/index.js +287 -0
  363. package/test/unit/spec/controls-options-manager/util.js +518 -0
  364. package/test/unit/spec/fixture/locus.js +1 -0
  365. package/test/unit/spec/interpretation/collection.ts +15 -0
  366. package/test/unit/spec/interpretation/index.ts +329 -0
  367. package/test/unit/spec/interpretation/siLanguage.ts +26 -0
  368. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  369. package/test/unit/spec/locus-info/index.js +680 -4
  370. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  371. package/test/unit/spec/locus-info/selfConstant.js +48 -0
  372. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  373. package/test/unit/spec/media/index.ts +118 -22
  374. package/test/unit/spec/media/properties.ts +9 -9
  375. package/test/unit/spec/meeting/in-meeting-actions.ts +76 -0
  376. package/test/unit/spec/meeting/index.js +2695 -1513
  377. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  378. package/test/unit/spec/meeting/muteState.js +370 -208
  379. package/test/unit/spec/meeting/request.js +354 -42
  380. package/test/unit/spec/meeting/utils.js +270 -156
  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 +866 -120
  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 +98 -0
  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 +46 -13
  402. package/test/unit/spec/recording-controller/index.js +231 -0
  403. package/test/unit/spec/recording-controller/util.js +102 -0
  404. package/test/unit/spec/roap/index.ts +21 -51
  405. package/test/unit/spec/roap/request.ts +187 -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/multistream/multistreamMedia.js +0 -106
  419. package/dist/multistream/multistreamMedia.js.map +0 -1
  420. package/src/index.js +0 -15
  421. package/src/media/internal-media-core-wrapper.ts +0 -9
  422. package/src/meeting/effectsState.ts +0 -211
  423. package/src/multistream/multistreamMedia.ts +0 -93
  424. package/test/unit/spec/meeting/effectsState.js +0 -281
@@ -0,0 +1,193 @@
1
+ import MeetingRequest from '../meeting/request';
2
+ /**
3
+ * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting
4
+ * @export
5
+ * @private
6
+ * @class Recording
7
+ */
8
+ export default class RecordingController {
9
+ /**
10
+ * @instance
11
+ * @type {MeetingRequest}
12
+ * @private
13
+ * @memberof RecordingController
14
+ */
15
+ private request;
16
+ /**
17
+ * @instance
18
+ * @type {Array}
19
+ * @private
20
+ * @memberof RecordingInfo
21
+ */
22
+ private displayHints;
23
+ /**
24
+ * @instance
25
+ * @type {string}
26
+ * @private
27
+ * @memberof RecordingInfo
28
+ */
29
+ private serviceUrl;
30
+ /**
31
+ * @instance
32
+ * @type {string}
33
+ * @private
34
+ * @memberof RecordingInfo
35
+ */
36
+ private sessionId;
37
+ /**
38
+ * @instance
39
+ * @type {string}
40
+ * @private
41
+ * @memberof RecordingInfo
42
+ */
43
+ private locusUrl;
44
+ /**
45
+ * @instance
46
+ * @type {string}
47
+ * @private
48
+ * @memberof RecordingInfo
49
+ */
50
+ private locusId;
51
+ /**
52
+ * @param {MeetingRequest} request
53
+ * @param {Object} options
54
+ * @constructor
55
+ * @memberof RecordingController
56
+ */
57
+ constructor(request: MeetingRequest, options?: {
58
+ serviceUrl?: string;
59
+ sessionId: string;
60
+ locusUrl: string;
61
+ displayHints?: Array<string>;
62
+ });
63
+ /**
64
+ * @param {MeetingRequest} request
65
+ * @param {LocusInfo} info
66
+ * @returns {void}
67
+ * @private
68
+ * @memberof RecordingController
69
+ */
70
+ private initialize;
71
+ /**
72
+ * @param {Object} options
73
+ * @returns {void}
74
+ * @public
75
+ * @memberof RecordingController
76
+ */
77
+ set(options?: {
78
+ serviceUrl?: string;
79
+ sessionId: string;
80
+ locusUrl: string;
81
+ displayHints?: Array<string>;
82
+ }): void;
83
+ /**
84
+ * @param {string} url
85
+ * @returns {void}
86
+ * @public
87
+ * @memberof RecordingController
88
+ */
89
+ setLocusUrl(url: string): void;
90
+ /**
91
+ * @param {Array} hints
92
+ * @returns {void}
93
+ * @public
94
+ * @memberof RecordingController
95
+ */
96
+ setDisplayHints(hints: Array<string>): void;
97
+ /**
98
+ * @param {string} id
99
+ * @returns {void}
100
+ * @public
101
+ * @memberof RecordingController
102
+ */
103
+ setSessionId(id: string): void;
104
+ /**
105
+ * @param {string} url
106
+ * @returns {void}
107
+ * @public
108
+ * @memberof RecordingController
109
+ */
110
+ setServiceUrl(url: string): void;
111
+ /**
112
+ * @returns {string}
113
+ * @public
114
+ * @memberof RecordingController
115
+ */
116
+ getLocusUrl(): string;
117
+ /**
118
+ * @returns {string}
119
+ * @public
120
+ * @memberof RecordingController
121
+ */
122
+ getLocusId(): string;
123
+ /**
124
+ * @returns {string}
125
+ * @public
126
+ * @memberof RecordingController
127
+ */
128
+ getSessionId(): string;
129
+ /**
130
+ * @returns {string}
131
+ * @public
132
+ * @memberof RecordingController
133
+ */
134
+ getServiceUrl(): string;
135
+ /**
136
+ * @returns {Array}
137
+ * @public
138
+ * @memberof RecordingController
139
+ */
140
+ getDisplayHints(): string[];
141
+ /**
142
+ * @param {Object} options
143
+ * @returns {void}
144
+ * @private
145
+ * @memberof RecordingController
146
+ */
147
+ private extract;
148
+ /**
149
+ * @param {RecordingAction} action
150
+ * @private
151
+ * @memberof RecordingController
152
+ * @returns {Promise}
153
+ */
154
+ private recordingService;
155
+ /**
156
+ * @param {RecordingAction} action
157
+ * @private
158
+ * @memberof RecordingController
159
+ * @returns {Promise}
160
+ */
161
+ private recordingControls;
162
+ /**
163
+ * @param {RecordingAction} action
164
+ * @private
165
+ * @memberof RecordingController
166
+ * @returns {Promise}
167
+ */
168
+ private recordingFacade;
169
+ /**
170
+ * @private
171
+ * @memberof RecordingController
172
+ * @returns {Promise}
173
+ */
174
+ startRecording(): Promise<any>;
175
+ /**
176
+ * @private
177
+ * @memberof RecordingController
178
+ * @returns {Promise}
179
+ */
180
+ stopRecording(): Promise<any>;
181
+ /**
182
+ * @private
183
+ * @memberof RecordingController
184
+ * @returns {Promise}
185
+ */
186
+ pauseRecording(): Promise<any>;
187
+ /**
188
+ * @private
189
+ * @memberof RecordingController
190
+ * @returns {Promise}
191
+ */
192
+ resumeRecording(): Promise<any>;
193
+ }
@@ -0,0 +1,13 @@
1
+ import RecordingAction from './enums';
2
+ declare const _default: {
3
+ canUserStart: (displayHints: string[]) => boolean;
4
+ canUserPause: (displayHints: string[]) => boolean;
5
+ canUserResume: (displayHints: string[]) => boolean;
6
+ canUserStop: (displayHints: string[]) => boolean;
7
+ deriveRecordingStates: (action: RecordingAction) => {
8
+ recording: boolean;
9
+ paused: boolean;
10
+ };
11
+ extractLocusId: (url: string) => string;
12
+ };
13
+ 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;
@@ -0,0 +1,200 @@
1
+ /// <reference types="node" />
2
+ import EventsScope from '../common/events/events-scope';
3
+ import { ReceiveSlot } from '../multistream/receiveSlot';
4
+ export declare const EVENTS: {
5
+ MEDIA_QUALITY: string;
6
+ LOCAL_MEDIA_STARTED: string;
7
+ LOCAL_MEDIA_STOPPED: string;
8
+ REMOTE_MEDIA_STARTED: string;
9
+ REMOTE_MEDIA_STOPPED: string;
10
+ };
11
+ type ReceiveSlotCallback = (csi: number) => ReceiveSlot | undefined;
12
+ /**
13
+ * Stats Analyzer class that will emit events based on detected quality
14
+ *
15
+ * @export
16
+ * @class StatsAnalyzer
17
+ * @extends {EventsScope}
18
+ */
19
+ export declare class StatsAnalyzer extends EventsScope {
20
+ config: any;
21
+ correlationId: any;
22
+ lastEmittedStartStopEvent: any;
23
+ lastMqaDataSent: any;
24
+ lastStatsResults: any;
25
+ meetingMediaStatus: any;
26
+ mqaInterval: NodeJS.Timeout;
27
+ mqaSentCount: any;
28
+ networkQualityMonitor: any;
29
+ mediaConnection: any;
30
+ statsInterval: NodeJS.Timeout;
31
+ statsResults: any;
32
+ statsStarted: any;
33
+ receiveSlotCallback: ReceiveSlotCallback;
34
+ /**
35
+ * Creates a new instance of StatsAnalyzer
36
+ * @constructor
37
+ * @public
38
+ * @param {Object} config SDK Configuration Object
39
+ * @param {Function} receiveSlotCallback Callback used to access receive slots.
40
+ * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
41
+ * @param {Object} statsResults Default properties for stats
42
+ */
43
+ constructor(config: any, receiveSlotCallback?: ReceiveSlotCallback, networkQualityMonitor?: object, statsResults?: object);
44
+ /**
45
+ * Resets cumulative stats arrays.
46
+ *
47
+ * @public
48
+ * @memberof StatsAnalyzer
49
+ * @returns {void}
50
+ */
51
+ resetStatsResults(): void;
52
+ /**
53
+ * sets mediaStatus status for analyzing metrics
54
+ *
55
+ * @public
56
+ * @param {Object} status for the audio and video
57
+ * @memberof StatsAnalyzer
58
+ * @returns {void}
59
+ */
60
+ updateMediaStatus(status: object): void;
61
+ /**
62
+ * captures MQA data from media connection
63
+ *
64
+ * @public
65
+ * @memberof StatsAnalyzer
66
+ * @returns {void}
67
+ */
68
+ sendMqaData(): void;
69
+ /**
70
+ * updated the media connection when changed
71
+ *
72
+ * @private
73
+ * @memberof StatsAnalyzer
74
+ * @param {RoapMediaConnection} mediaConnection
75
+ * @returns {void}
76
+ */
77
+ updateMediaConnection(mediaConnection: any): void;
78
+ /**
79
+ * Starts the stats analyzer on interval
80
+ *
81
+ * @public
82
+ * @memberof StatsAnalyzer
83
+ * @param {RoapMediaConnection} mediaConnection
84
+ * @returns {Promise}
85
+ */
86
+ startAnalyzer(mediaConnection: any): any;
87
+ /**
88
+ * Cleans up the analyzer when done
89
+ *
90
+ * @public
91
+ * @memberof StatsAnalyzer
92
+ * @returns {void}
93
+ */
94
+ stopAnalyzer(): any;
95
+ /**
96
+ * Parse a single result of get stats
97
+ *
98
+ * @private
99
+ * @param {*} getStatsResult
100
+ * @param {String} type
101
+ * @param {boolean} isSender
102
+ * @returns {void}
103
+ * @memberof StatsAnalyzer
104
+ */
105
+ private parseGetStatsResult;
106
+ /**
107
+ * Filters the get stats results for types
108
+ * @private
109
+ * @param {Array} statsItem
110
+ * @param {String} type
111
+ * @param {boolean} isSender
112
+ * @returns {void}
113
+ */
114
+ filterAndParseGetStatsResults(statsItem: any, type: string, isSender: boolean): void;
115
+ /**
116
+ * parse the audio
117
+ * @param {String} result
118
+ * @param {boolean} type
119
+ * @returns {void}
120
+ */
121
+ parseAudioSource(result: any, type: any): void;
122
+ /**
123
+ * emits started/stopped events for local/remote media by checking
124
+ * if given values are increasing or not. The previousValue, currentValue
125
+ * params can be any numerical value like number of receive packets or
126
+ * decoded frames, etc.
127
+ *
128
+ * @private
129
+ * @param {string} mediaType
130
+ * @param {number} previousValue - value to compare
131
+ * @param {number} currentValue - value to compare (must be same type of value as previousValue)
132
+ * @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
133
+ * @memberof StatsAnalyzer
134
+ * @returns {void}
135
+ */
136
+ emitStartStopEvents: (mediaType: string, previousValue: number, currentValue: number, isLocal: boolean) => void;
137
+ /**
138
+ * compares current and previous stats to check if packets are not sent
139
+ *
140
+ * @private
141
+ * @memberof StatsAnalyzer
142
+ * @returns {void}
143
+ */
144
+ private compareLastStatsResult;
145
+ /**
146
+ * Does a `getStats` on all the transceivers and parses the results
147
+ *
148
+ * @private
149
+ * @memberof StatsAnalyzer
150
+ * @returns {Promise}
151
+ */
152
+ private getStatsAndParse;
153
+ /**
154
+ * Processes OutboundRTP stats result and stores
155
+ * @private
156
+ * @param {*} result
157
+ * @param {*} mediaType
158
+ * @returns {void}
159
+ */
160
+ private processOutboundRTPResult;
161
+ /**
162
+ * Processes InboundRTP stats result and stores
163
+ * @private
164
+ * @param {*} result
165
+ * @param {*} mediaType
166
+ * @returns {void}
167
+ */
168
+ private processInboundRTPResult;
169
+ /**
170
+ * Processes remote and local candidate result and stores
171
+ * @private
172
+ * @param {*} result
173
+ * @param {*} type
174
+ * @param {boolean} isSender
175
+ * @param {boolean} isRemote
176
+ *
177
+ * @returns {void}
178
+ */
179
+ parseCandidate: (result: any, type: any, isSender: boolean, isRemote: boolean) => void;
180
+ /**
181
+ * Process Track results
182
+ *
183
+ * @private
184
+ * @param {*} result
185
+ * @param {*} mediaType
186
+ * @returns {void}
187
+ * @memberof StatsAnalyzer
188
+ */
189
+ private processTrackResult;
190
+ /**
191
+ *
192
+ * @private
193
+ * @param {*} result
194
+ * @param {*} type
195
+ * @returns {void}
196
+ * @memberof StatsAnalyzer
197
+ */
198
+ compareSentAndReceived(result: any, type: any): void;
199
+ }
200
+ export {};
@@ -0,0 +1,24 @@
1
+ export declare const getAudioReceiverMqa: ({ audioReceiver, statsResults, lastMqaDataSent, mediaType }: {
2
+ audioReceiver: any;
3
+ statsResults: any;
4
+ lastMqaDataSent: any;
5
+ mediaType: any;
6
+ }) => void;
7
+ export declare const getAudioSenderMqa: ({ audioSender, statsResults, lastMqaDataSent, mediaType }: {
8
+ audioSender: any;
9
+ statsResults: any;
10
+ lastMqaDataSent: any;
11
+ mediaType: any;
12
+ }) => void;
13
+ export declare const getVideoReceiverMqa: ({ videoReceiver, statsResults, lastMqaDataSent, mediaType }: {
14
+ videoReceiver: any;
15
+ statsResults: any;
16
+ lastMqaDataSent: any;
17
+ mediaType: any;
18
+ }) => void;
19
+ export declare const getVideoSenderMqa: ({ videoSender, statsResults, lastMqaDataSent, mediaType }: {
20
+ videoSender: any;
21
+ statsResults: any;
22
+ lastMqaDataSent: any;
23
+ mediaType: any;
24
+ }) => void;