@webex/plugin-meetings 3.7.0 → 3.8.0

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 (351) hide show
  1. package/dist/annotation/annotation.types.d.ts +42 -0
  2. package/dist/annotation/constants.d.ts +31 -0
  3. package/dist/annotation/index.d.ts +117 -0
  4. package/dist/annotation/index.js +17 -0
  5. package/dist/annotation/index.js.map +1 -1
  6. package/dist/breakouts/breakout.d.ts +8 -0
  7. package/dist/breakouts/breakout.js +1 -1
  8. package/dist/breakouts/collection.d.ts +5 -0
  9. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  10. package/dist/breakouts/events.d.ts +8 -0
  11. package/dist/breakouts/index.d.ts +5 -0
  12. package/dist/breakouts/index.js +1 -1
  13. package/dist/breakouts/request.d.ts +22 -0
  14. package/dist/breakouts/utils.d.ts +15 -0
  15. package/dist/common/browser-detection.d.ts +9 -0
  16. package/dist/common/collection.d.ts +48 -0
  17. package/dist/common/config.d.ts +2 -0
  18. package/dist/common/errors/captcha-error.d.ts +15 -0
  19. package/dist/common/errors/intent-to-join.d.ts +16 -0
  20. package/dist/common/errors/join-forbidden-error.js +52 -0
  21. package/dist/common/errors/join-forbidden-error.js.map +1 -0
  22. package/dist/common/errors/join-meeting.d.ts +17 -0
  23. package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
  24. package/dist/common/errors/join-webinar-error.js.map +1 -0
  25. package/dist/common/errors/media.d.ts +15 -0
  26. package/dist/common/errors/multistream-not-supported-error.js +53 -0
  27. package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
  28. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  29. package/dist/common/errors/parameter.d.ts +15 -0
  30. package/dist/common/errors/password-error.d.ts +15 -0
  31. package/dist/common/errors/permission.d.ts +14 -0
  32. package/dist/common/errors/reclaim-host-role-error.js +149 -0
  33. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  34. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  35. package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
  36. package/dist/common/errors/reconnection-in-progress.js +33 -0
  37. package/dist/common/errors/reconnection-in-progress.js.map +1 -0
  38. package/dist/common/errors/reconnection.d.ts +15 -0
  39. package/dist/common/errors/stats.d.ts +15 -0
  40. package/dist/common/errors/webex-errors.d.ts +93 -0
  41. package/dist/common/errors/webex-meetings-error.d.ts +20 -0
  42. package/dist/common/events/events-scope.d.ts +17 -0
  43. package/dist/common/events/events.d.ts +12 -0
  44. package/dist/common/events/trigger-proxy.d.ts +2 -0
  45. package/dist/common/events/util.d.ts +2 -0
  46. package/dist/common/logs/logger-config.d.ts +2 -0
  47. package/dist/common/logs/logger-proxy.d.ts +2 -0
  48. package/dist/common/logs/request.d.ts +36 -0
  49. package/dist/common/queue.d.ts +34 -0
  50. package/dist/config.d.ts +72 -0
  51. package/dist/config.js +2 -1
  52. package/dist/config.js.map +1 -1
  53. package/dist/constants.d.ts +1088 -0
  54. package/dist/constants.js +68 -6
  55. package/dist/constants.js.map +1 -1
  56. package/dist/controls-options-manager/constants.d.ts +4 -0
  57. package/dist/controls-options-manager/enums.d.ts +15 -0
  58. package/dist/controls-options-manager/index.d.ts +136 -0
  59. package/dist/controls-options-manager/types.d.ts +43 -0
  60. package/dist/controls-options-manager/util.d.ts +1 -0
  61. package/dist/index.d.ts +7 -0
  62. package/dist/index.js +16 -11
  63. package/dist/index.js.map +1 -1
  64. package/dist/interceptors/index.d.ts +2 -0
  65. package/dist/interceptors/locusRetry.d.ts +27 -0
  66. package/dist/interpretation/collection.d.ts +5 -0
  67. package/dist/interpretation/index.d.ts +5 -0
  68. package/dist/interpretation/index.js +1 -1
  69. package/dist/interpretation/siLanguage.d.ts +5 -0
  70. package/dist/interpretation/siLanguage.js +1 -1
  71. package/dist/locus-info/controlsUtils.d.ts +2 -0
  72. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
  73. package/dist/locus-info/fullState.d.ts +2 -0
  74. package/dist/locus-info/hostUtils.d.ts +2 -0
  75. package/dist/locus-info/index.d.ts +322 -0
  76. package/dist/locus-info/index.js +14 -3
  77. package/dist/locus-info/index.js.map +1 -1
  78. package/dist/locus-info/infoUtils.d.ts +2 -0
  79. package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
  80. package/dist/locus-info/parser.d.ts +272 -0
  81. package/dist/locus-info/selfUtils.d.ts +2 -0
  82. package/dist/locus-info/selfUtils.js +35 -17
  83. package/dist/locus-info/selfUtils.js.map +1 -1
  84. package/dist/media/MediaConnectionAwaiter.js +1 -0
  85. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  86. package/dist/media/index.d.ts +34 -0
  87. package/dist/media/properties.d.ts +93 -0
  88. package/dist/media/properties.js +30 -16
  89. package/dist/media/properties.js.map +1 -1
  90. package/dist/media/util.d.ts +2 -0
  91. package/dist/mediaQualityMetrics/config.d.ts +241 -0
  92. package/dist/mediaQualityMetrics/config.js +502 -0
  93. package/dist/mediaQualityMetrics/config.js.map +1 -0
  94. package/dist/meeting/brbState.js +167 -0
  95. package/dist/meeting/brbState.js.map +1 -0
  96. package/dist/meeting/effectsState.js +260 -0
  97. package/dist/meeting/effectsState.js.map +1 -0
  98. package/dist/meeting/in-meeting-actions.d.ts +167 -0
  99. package/dist/meeting/in-meeting-actions.js +13 -1
  100. package/dist/meeting/in-meeting-actions.js.map +1 -1
  101. package/dist/meeting/index.d.ts +1825 -0
  102. package/dist/meeting/index.js +1331 -1051
  103. package/dist/meeting/index.js.map +1 -1
  104. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  105. package/dist/meeting/locusMediaRequest.js +11 -6
  106. package/dist/meeting/locusMediaRequest.js.map +1 -1
  107. package/dist/meeting/muteState.d.ts +178 -0
  108. package/dist/meeting/muteState.js +1 -6
  109. package/dist/meeting/muteState.js.map +1 -1
  110. package/dist/meeting/request.d.ts +295 -0
  111. package/dist/meeting/request.js +51 -29
  112. package/dist/meeting/request.js.map +1 -1
  113. package/dist/meeting/request.type.d.ts +11 -0
  114. package/dist/meeting/request.type.js.map +1 -1
  115. package/dist/meeting/state.d.ts +9 -0
  116. package/dist/meeting/util.d.ts +119 -0
  117. package/dist/meeting/util.js +103 -67
  118. package/dist/meeting/util.js.map +1 -1
  119. package/dist/meeting/voicea-meeting.d.ts +16 -0
  120. package/dist/meeting-info/collection.d.ts +20 -0
  121. package/dist/meeting-info/index.d.ts +69 -0
  122. package/dist/meeting-info/meeting-info-v2.d.ts +123 -0
  123. package/dist/meeting-info/meeting-info-v2.js +115 -45
  124. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  125. package/dist/meeting-info/request.d.ts +22 -0
  126. package/dist/meeting-info/util.d.ts +2 -0
  127. package/dist/meeting-info/utilv2.d.ts +2 -0
  128. package/dist/meeting-info/utilv2.js +6 -2
  129. package/dist/meeting-info/utilv2.js.map +1 -1
  130. package/dist/meetings/collection.d.ts +40 -0
  131. package/dist/meetings/index.d.ts +390 -0
  132. package/dist/meetings/index.js +107 -55
  133. package/dist/meetings/index.js.map +1 -1
  134. package/dist/meetings/meetings.types.d.ts +4 -0
  135. package/dist/meetings/meetings.types.js +2 -0
  136. package/dist/meetings/meetings.types.js.map +1 -1
  137. package/dist/meetings/request.d.ts +27 -0
  138. package/dist/meetings/util.d.ts +18 -0
  139. package/dist/meetings/util.js +1 -1
  140. package/dist/meetings/util.js.map +1 -1
  141. package/dist/member/index.d.ts +160 -0
  142. package/dist/member/index.js +9 -0
  143. package/dist/member/index.js.map +1 -1
  144. package/dist/member/member.types.js +17 -0
  145. package/dist/member/member.types.js.map +1 -0
  146. package/dist/member/types.d.ts +32 -0
  147. package/dist/member/types.js.map +1 -1
  148. package/dist/member/util.d.ts +2 -0
  149. package/dist/member/util.js +39 -28
  150. package/dist/member/util.js.map +1 -1
  151. package/dist/members/collection.d.ts +29 -0
  152. package/dist/members/index.d.ts +353 -0
  153. package/dist/members/request.d.ts +114 -0
  154. package/dist/members/types.d.ts +25 -0
  155. package/dist/members/util.d.ts +215 -0
  156. package/dist/members/util.js +4 -2
  157. package/dist/members/util.js.map +1 -1
  158. package/dist/metrics/config.js +276 -0
  159. package/dist/metrics/config.js.map +1 -0
  160. package/dist/metrics/constants.d.ts +70 -0
  161. package/dist/metrics/constants.js +6 -1
  162. package/dist/metrics/constants.js.map +1 -1
  163. package/dist/metrics/index.d.ts +45 -0
  164. package/dist/multistream/mediaRequestManager.d.ts +119 -0
  165. package/dist/multistream/receiveSlot.d.ts +68 -0
  166. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  167. package/dist/multistream/remoteMedia.d.ts +72 -0
  168. package/dist/multistream/remoteMedia.js +30 -15
  169. package/dist/multistream/remoteMedia.js.map +1 -1
  170. package/dist/multistream/remoteMediaGroup.d.ts +49 -0
  171. package/dist/multistream/remoteMediaManager.d.ts +300 -0
  172. package/dist/multistream/sendSlotManager.d.ts +69 -0
  173. package/dist/multistream/sendSlotManager.js +24 -0
  174. package/dist/multistream/sendSlotManager.js.map +1 -1
  175. package/dist/networkQualityMonitor/index.d.ts +70 -0
  176. package/dist/networkQualityMonitor/index.js +13 -19
  177. package/dist/networkQualityMonitor/index.js.map +1 -1
  178. package/dist/peer-connection-manager/index.js +671 -0
  179. package/dist/peer-connection-manager/index.js.map +1 -0
  180. package/dist/peer-connection-manager/util.js +109 -0
  181. package/dist/peer-connection-manager/util.js.map +1 -0
  182. package/dist/personal-meeting-room/index.d.ts +47 -0
  183. package/dist/personal-meeting-room/request.d.ts +14 -0
  184. package/dist/personal-meeting-room/util.d.ts +2 -0
  185. package/dist/reachability/clusterReachability.d.ts +109 -0
  186. package/dist/reachability/clusterReachability.js +12 -15
  187. package/dist/reachability/clusterReachability.js.map +1 -1
  188. package/dist/reachability/index.d.ts +105 -0
  189. package/dist/reachability/index.js +461 -136
  190. package/dist/reachability/index.js.map +1 -1
  191. package/dist/reachability/reachability.types.js +7 -0
  192. package/dist/reachability/reachability.types.js.map +1 -0
  193. package/dist/reachability/request.d.ts +39 -0
  194. package/dist/reachability/request.js +21 -8
  195. package/dist/reachability/request.js.map +1 -1
  196. package/dist/reachability/util.d.ts +8 -0
  197. package/dist/reactions/constants.d.ts +3 -0
  198. package/dist/reactions/reactions.d.ts +4 -0
  199. package/dist/reactions/reactions.type.d.ts +52 -0
  200. package/dist/reconnection-manager/index.d.ts +136 -0
  201. package/dist/recording-controller/enums.d.ts +7 -0
  202. package/dist/recording-controller/enums.js +8 -4
  203. package/dist/recording-controller/enums.js.map +1 -1
  204. package/dist/recording-controller/index.d.ts +207 -0
  205. package/dist/recording-controller/index.js +18 -9
  206. package/dist/recording-controller/index.js.map +1 -1
  207. package/dist/recording-controller/util.d.ts +14 -0
  208. package/dist/recording-controller/util.js +13 -9
  209. package/dist/recording-controller/util.js.map +1 -1
  210. package/dist/roap/collection.js +62 -0
  211. package/dist/roap/collection.js.map +1 -0
  212. package/dist/roap/handler.js +275 -0
  213. package/dist/roap/handler.js.map +1 -0
  214. package/dist/roap/index.d.ts +86 -0
  215. package/dist/roap/index.js +15 -15
  216. package/dist/roap/index.js.map +1 -1
  217. package/dist/roap/request.d.ts +39 -0
  218. package/dist/roap/request.js +45 -79
  219. package/dist/roap/request.js.map +1 -1
  220. package/dist/roap/state.js +126 -0
  221. package/dist/roap/state.js.map +1 -0
  222. package/dist/roap/turnDiscovery.d.ts +155 -0
  223. package/dist/roap/turnDiscovery.js +3 -6
  224. package/dist/roap/turnDiscovery.js.map +1 -1
  225. package/dist/roap/util.js +75 -0
  226. package/dist/roap/util.js.map +1 -0
  227. package/dist/rtcMetrics/constants.d.ts +4 -0
  228. package/dist/rtcMetrics/index.d.ts +61 -0
  229. package/dist/statsAnalyzer/global.d.ts +36 -0
  230. package/dist/statsAnalyzer/global.js +126 -0
  231. package/dist/statsAnalyzer/global.js.map +1 -0
  232. package/dist/statsAnalyzer/index.d.ts +217 -0
  233. package/dist/statsAnalyzer/index.js +1013 -0
  234. package/dist/statsAnalyzer/index.js.map +1 -0
  235. package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
  236. package/dist/statsAnalyzer/mqaUtil.js +179 -0
  237. package/dist/statsAnalyzer/mqaUtil.js.map +1 -0
  238. package/dist/transcription/index.d.ts +64 -0
  239. package/dist/types/annotation/index.d.ts +5 -0
  240. package/dist/types/common/errors/join-forbidden-error.d.ts +15 -0
  241. package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
  242. package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
  243. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  244. package/dist/types/config.d.ts +1 -0
  245. package/dist/types/constants.d.ts +53 -1
  246. package/dist/types/index.d.ts +3 -3
  247. package/dist/types/locus-info/index.d.ts +2 -1
  248. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  249. package/dist/types/meeting/brbState.d.ts +54 -0
  250. package/dist/types/meeting/in-meeting-actions.d.ts +12 -0
  251. package/dist/types/meeting/index.d.ts +64 -14
  252. package/dist/types/meeting/locusMediaRequest.d.ts +6 -3
  253. package/dist/types/meeting/request.d.ts +14 -3
  254. package/dist/types/meeting/request.type.d.ts +6 -0
  255. package/dist/types/meeting/util.d.ts +3 -3
  256. package/dist/types/meeting-info/meeting-info-v2.d.ts +30 -5
  257. package/dist/types/meetings/index.d.ts +20 -2
  258. package/dist/types/meetings/meetings.types.d.ts +8 -0
  259. package/dist/types/member/index.d.ts +1 -0
  260. package/dist/types/member/types.d.ts +7 -0
  261. package/dist/types/members/util.d.ts +2 -0
  262. package/dist/types/metrics/constants.d.ts +6 -1
  263. package/dist/types/multistream/sendSlotManager.d.ts +8 -1
  264. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  265. package/dist/types/reachability/index.d.ts +83 -36
  266. package/dist/types/reachability/reachability.types.d.ts +64 -0
  267. package/dist/types/reachability/request.d.ts +5 -1
  268. package/dist/types/recording-controller/enums.d.ts +5 -2
  269. package/dist/types/recording-controller/index.d.ts +1 -0
  270. package/dist/types/recording-controller/util.d.ts +2 -1
  271. package/dist/types/roap/request.d.ts +1 -13
  272. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  273. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  274. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  275. package/dist/webinar/collection.d.ts +16 -0
  276. package/dist/webinar/index.d.ts +5 -0
  277. package/dist/webinar/index.js +390 -7
  278. package/dist/webinar/index.js.map +1 -1
  279. package/package.json +23 -22
  280. package/src/annotation/index.ts +16 -0
  281. package/src/common/errors/join-forbidden-error.ts +26 -0
  282. package/src/common/errors/join-webinar-error.ts +24 -0
  283. package/src/common/errors/multistream-not-supported-error.ts +30 -0
  284. package/src/config.ts +1 -0
  285. package/src/constants.ts +61 -3
  286. package/src/index.ts +5 -3
  287. package/src/locus-info/index.ts +20 -3
  288. package/src/locus-info/selfUtils.ts +24 -6
  289. package/src/media/MediaConnectionAwaiter.ts +2 -0
  290. package/src/media/properties.ts +34 -13
  291. package/src/meeting/brbState.ts +169 -0
  292. package/src/meeting/in-meeting-actions.ts +25 -0
  293. package/src/meeting/index.ts +443 -87
  294. package/src/meeting/locusMediaRequest.ts +11 -8
  295. package/src/meeting/muteState.ts +1 -6
  296. package/src/meeting/request.ts +30 -12
  297. package/src/meeting/request.type.ts +7 -0
  298. package/src/meeting/util.ts +32 -13
  299. package/src/meeting-info/meeting-info-v2.ts +83 -12
  300. package/src/meeting-info/utilv2.ts +17 -3
  301. package/src/meetings/index.ts +79 -20
  302. package/src/meetings/meetings.types.ts +10 -0
  303. package/src/meetings/util.ts +2 -1
  304. package/src/member/index.ts +9 -0
  305. package/src/member/types.ts +8 -0
  306. package/src/member/util.ts +34 -24
  307. package/src/members/util.ts +1 -0
  308. package/src/metrics/constants.ts +6 -1
  309. package/src/multistream/remoteMedia.ts +28 -15
  310. package/src/multistream/sendSlotManager.ts +31 -0
  311. package/src/reachability/clusterReachability.ts +5 -15
  312. package/src/reachability/index.ts +311 -75
  313. package/src/reachability/reachability.types.ts +85 -0
  314. package/src/reachability/request.ts +55 -31
  315. package/src/recording-controller/enums.ts +5 -2
  316. package/src/recording-controller/index.ts +17 -4
  317. package/src/recording-controller/util.ts +20 -5
  318. package/src/roap/index.ts +14 -13
  319. package/src/roap/request.ts +30 -44
  320. package/src/roap/turnDiscovery.ts +2 -4
  321. package/src/webinar/index.ts +235 -9
  322. package/test/unit/spec/annotation/index.ts +46 -1
  323. package/test/unit/spec/locus-info/index.js +292 -60
  324. package/test/unit/spec/locus-info/selfConstant.js +7 -0
  325. package/test/unit/spec/locus-info/selfUtils.js +101 -1
  326. package/test/unit/spec/media/properties.ts +15 -0
  327. package/test/unit/spec/meeting/brbState.ts +114 -0
  328. package/test/unit/spec/meeting/in-meeting-actions.ts +15 -1
  329. package/test/unit/spec/meeting/index.js +851 -107
  330. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  331. package/test/unit/spec/meeting/muteState.js +0 -24
  332. package/test/unit/spec/meeting/request.js +3 -26
  333. package/test/unit/spec/meeting/utils.js +73 -28
  334. package/test/unit/spec/meeting-info/meetinginfov2.js +46 -4
  335. package/test/unit/spec/meeting-info/utilv2.js +26 -0
  336. package/test/unit/spec/meetings/index.js +159 -18
  337. package/test/unit/spec/meetings/utils.js +10 -0
  338. package/test/unit/spec/member/util.js +52 -11
  339. package/test/unit/spec/members/utils.js +95 -0
  340. package/test/unit/spec/multistream/remoteMedia.ts +11 -7
  341. package/test/unit/spec/reachability/clusterReachability.ts +7 -0
  342. package/test/unit/spec/reachability/index.ts +383 -9
  343. package/test/unit/spec/reachability/request.js +48 -12
  344. package/test/unit/spec/recording-controller/index.js +61 -5
  345. package/test/unit/spec/recording-controller/util.js +39 -3
  346. package/test/unit/spec/roap/index.ts +48 -1
  347. package/test/unit/spec/roap/request.ts +51 -109
  348. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  349. package/test/unit/spec/webinar/index.ts +504 -0
  350. package/dist/common/errors/webinar-registration-error.js.map +0 -1
  351. package/src/common/errors/webinar-registration-error.ts +0 -27
@@ -2,42 +2,11 @@
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
4
  import { Defer } from '@webex/common';
5
+ import { IP_VERSION } from '../constants';
5
6
  import ReachabilityRequest, { ClusterList } from './request';
6
- import { ClusterReachability, ClusterReachabilityResult } from './clusterReachability';
7
+ import { ClusterReachabilityResult, ClientMediaPreferences, ReachabilityMetrics, ReachabilityReportV0, ReachabilityReportV1, ReachabilityResults, ReachabilityResultsForBackend, GetClustersTrigger } from './reachability.types';
8
+ import { ClusterReachability } from './clusterReachability';
7
9
  import EventsScope from '../common/events/events-scope';
8
- export type ReachabilityMetrics = {
9
- reachability_public_udp_success: number;
10
- reachability_public_udp_failed: number;
11
- reachability_public_tcp_success: number;
12
- reachability_public_tcp_failed: number;
13
- reachability_public_xtls_success: number;
14
- reachability_public_xtls_failed: number;
15
- reachability_vmn_udp_success: number;
16
- reachability_vmn_udp_failed: number;
17
- reachability_vmn_tcp_success: number;
18
- reachability_vmn_tcp_failed: number;
19
- reachability_vmn_xtls_success: number;
20
- reachability_vmn_xtls_failed: number;
21
- };
22
- /**
23
- * This is the type that matches what backend expects us to send to them. It is a bit weird, because
24
- * it uses strings instead of booleans and numbers, but that's what they require.
25
- */
26
- export type TransportResultForBackend = {
27
- reachable?: 'true' | 'false';
28
- latencyInMilliseconds?: string;
29
- clientMediaIPs?: string[];
30
- untested?: 'true';
31
- };
32
- export type ReachabilityResultForBackend = {
33
- udp: TransportResultForBackend;
34
- tcp: TransportResultForBackend;
35
- xtls: TransportResultForBackend;
36
- };
37
- export type ReachabilityResultsForBackend = Record<string, ReachabilityResultForBackend>;
38
- export type ReachabilityResults = Record<string, ClusterReachabilityResult & {
39
- isVideoMesh?: boolean;
40
- }>;
41
10
  /**
42
11
  * @class Reachability
43
12
  * @export
@@ -49,6 +18,8 @@ export default class Reachability extends EventsScope {
49
18
  clusterReachability: {
50
19
  [key: string]: ClusterReachability;
51
20
  };
21
+ minRequiredClusters?: number;
22
+ orpheusApiVersion?: number;
52
23
  reachabilityDefer?: Defer;
53
24
  vmnTimer?: ReturnType<typeof setTimeout>;
54
25
  publicCloudTimer?: ReturnType<typeof setTimeout>;
@@ -73,6 +44,8 @@ export default class Reachability extends EventsScope {
73
44
  xtls: number;
74
45
  };
75
46
  };
47
+ startTime: any;
48
+ totalDuration: any;
76
49
  protected lastTrigger?: string;
77
50
  /**
78
51
  * Creates an instance of Reachability.
@@ -82,11 +55,13 @@ export default class Reachability extends EventsScope {
82
55
  constructor(webex: object);
83
56
  /**
84
57
  * Fetches the list of media clusters from the backend
58
+ * @param {string} trigger - explains the reason for starting reachability, used by Orpheus
59
+ * @param {Object} previousReport - last reachability report
85
60
  * @param {boolean} isRetry
86
61
  * @private
87
62
  * @returns {Promise<{clusters: ClusterList, joinCookie: any}>}
88
63
  */
89
- getClusters(isRetry?: boolean): Promise<{
64
+ getClusters(trigger: GetClustersTrigger, previousReport?: any, isRetry?: boolean): Promise<{
90
65
  clusters: ClusterList;
91
66
  joinCookie: any;
92
67
  }>;
@@ -98,6 +73,39 @@ export default class Reachability extends EventsScope {
98
73
  * @memberof Reachability
99
74
  */
100
75
  gatherReachability(trigger: string): Promise<ReachabilityResults>;
76
+ /**
77
+ * Gets the last join cookie we got from Orpheus
78
+ *
79
+ * @returns {Promise<Object>} join cookie
80
+ */
81
+ getJoinCookie(): Promise<any>;
82
+ /**
83
+ * Returns the reachability report that needs to be attached to the ROAP messages
84
+ * that we send to the backend.
85
+ *
86
+ * @returns {Promise<Object>}
87
+ */
88
+ getReachabilityReport(): Promise<{
89
+ joinCookie: any;
90
+ reachability?: ReachabilityReportV1;
91
+ } | {
92
+ reachability: ReachabilityReportV0;
93
+ }>;
94
+ /**
95
+ * This method is called when we don't succeed in reaching the minimum number of clusters
96
+ * required by Orpheus. It sends the results to Orpheus and gets a new list that it tries to reach again.
97
+ * @returns {Promise<ReachabilityResults>} reachability results
98
+ * @public
99
+ * @memberof Reachability
100
+ */
101
+ gatherReachabilityFallback(): Promise<void>;
102
+ /**
103
+ * Stops all reachability checks that are in progress
104
+ * @public
105
+ * @memberof Reachability
106
+ * @returns {void}
107
+ */
108
+ stopReachability(): void;
101
109
  /**
102
110
  * Returns statistics about last reachability results. The returned value is an object
103
111
  * with a flat list of properties so that it can be easily sent with metrics
@@ -142,6 +150,13 @@ export default class Reachability extends EventsScope {
142
150
  * @memberof Reachability
143
151
  */
144
152
  private getUnreachableClusters;
153
+ /**
154
+ * Gets the number of reachable clusters from last run reachability check
155
+ * @returns {number} reachable clusters count
156
+ * @private
157
+ * @memberof Reachability
158
+ */
159
+ private getNumberOfReachableClusters;
145
160
  /**
146
161
  * Make a log of unreachable clusters.
147
162
  * @returns {undefined}
@@ -165,6 +180,7 @@ export default class Reachability extends EventsScope {
165
180
  private areAllResultsReady;
166
181
  /**
167
182
  * Resolves the promise returned by gatherReachability() method
183
+ * @param {boolean} checkMinRequiredClusters - if true, it will check if we have reached the minimum required clusters and do a fallback if needed
168
184
  * @returns {void}
169
185
  */
170
186
  private resolveReachabilityPromise;
@@ -192,9 +208,10 @@ export default class Reachability extends EventsScope {
192
208
  /**
193
209
  * Sends a metric with all the statistics about how long reachability took
194
210
  *
211
+ * @param {boolean} aborted true if the reachability checks were aborted
195
212
  * @returns {void}
196
213
  */
197
- protected sendMetric(): Promise<void>;
214
+ protected sendMetric(aborted?: boolean): Promise<void>;
198
215
  /**
199
216
  * Starts all the timers used for various timeouts
200
217
  *
@@ -214,10 +231,40 @@ export default class Reachability extends EventsScope {
214
231
  * @returns {void}
215
232
  */
216
233
  private resetResultCounters;
234
+ /**
235
+ * Clears the timer
236
+ *
237
+ * @param {string} timer name of the timer to clear
238
+ * @returns {void}
239
+ */
240
+ private clearTimer;
241
+ /**
242
+ * Aborts current checks that are in progress
243
+ *
244
+ * @returns {void}
245
+ */
246
+ private abortCurrentChecks;
217
247
  /**
218
248
  * Performs reachability checks for all clusters
219
249
  * @param {ClusterList} clusterList
220
250
  * @returns {Promise<void>} promise that's resolved as soon as the checks are started
221
251
  */
222
252
  private performReachabilityChecks;
253
+ /**
254
+ * Returns the clientMediaPreferences object that needs to be sent to the backend
255
+ * when joining a meeting
256
+ *
257
+ * @param {boolean} isMultistream
258
+ * @param {IP_VERSION} ipver
259
+ * @returns {Object}
260
+ */
261
+ getClientMediaPreferences(isMultistream: boolean, ipver?: IP_VERSION): Promise<ClientMediaPreferences>;
262
+ /**
263
+ * Returns the reachability report that needs to be attached to the ROAP messages
264
+ * that we send to the backend.
265
+ * It may return undefined, if reachability is not needed to be attached to ROAP messages (that's the case for v1 or Orpheus API)
266
+ *
267
+ * @returns {Promise<ReachabilityReportV0>} object that needs to be attached to Roap messages
268
+ */
269
+ getReachabilityReportToAttachToRoap(): Promise<ReachabilityReportV0 | undefined>;
223
270
  }
@@ -0,0 +1,64 @@
1
+ import { IP_VERSION } from '../constants';
2
+ export type TransportResult = {
3
+ result: 'reachable' | 'unreachable' | 'untested';
4
+ latencyInMilliseconds?: number;
5
+ clientMediaIPs?: string[];
6
+ };
7
+ export type ClusterReachabilityResult = {
8
+ udp: TransportResult;
9
+ tcp: TransportResult;
10
+ xtls: TransportResult;
11
+ };
12
+ export type ReachabilityMetrics = {
13
+ reachability_public_udp_success: number;
14
+ reachability_public_udp_failed: number;
15
+ reachability_public_tcp_success: number;
16
+ reachability_public_tcp_failed: number;
17
+ reachability_public_xtls_success: number;
18
+ reachability_public_xtls_failed: number;
19
+ reachability_vmn_udp_success: number;
20
+ reachability_vmn_udp_failed: number;
21
+ reachability_vmn_tcp_success: number;
22
+ reachability_vmn_tcp_failed: number;
23
+ reachability_vmn_xtls_success: number;
24
+ reachability_vmn_xtls_failed: number;
25
+ };
26
+ /**
27
+ * This is the type that matches what backend expects us to send to them. It is a bit weird, because
28
+ * it uses strings instead of booleans and numbers, but that's what they require.
29
+ */
30
+ export type TransportResultForBackend = {
31
+ reachable?: 'true' | 'false';
32
+ latencyInMilliseconds?: string;
33
+ clientMediaIPs?: string[];
34
+ untested?: 'true';
35
+ };
36
+ export type ReachabilityResultForBackend = {
37
+ udp: TransportResultForBackend;
38
+ tcp: TransportResultForBackend;
39
+ xtls: TransportResultForBackend;
40
+ };
41
+ export type ReachabilityResultsForBackend = Record<string, ReachabilityResultForBackend>;
42
+ export type ReachabilityResults = Record<string, ClusterReachabilityResult & {
43
+ isVideoMesh?: boolean;
44
+ }>;
45
+ export type ReachabilityReportV0 = ReachabilityResultsForBackend;
46
+ export type ReachabilityReportV1 = {
47
+ version: 1;
48
+ result: {
49
+ usedDiscoveryOptions: {
50
+ 'early-call-min-clusters': number;
51
+ };
52
+ metrics: {
53
+ 'total-duration-ms': number;
54
+ };
55
+ tests: Record<string, ReachabilityResultForBackend>;
56
+ };
57
+ };
58
+ export interface ClientMediaPreferences {
59
+ ipver: IP_VERSION;
60
+ joinCookie: any;
61
+ preferTranscoding: boolean;
62
+ reachability?: ReachabilityReportV1;
63
+ }
64
+ export type GetClustersTrigger = 'startup' | 'early-call/no-min-reached';
@@ -1,4 +1,5 @@
1
1
  import { IP_VERSION } from '../constants';
2
+ import { GetClustersTrigger } from './reachability.types';
2
3
  export interface ClusterNode {
3
4
  isVideoMesh: boolean;
4
5
  udp: Array<string>;
@@ -22,12 +23,15 @@ declare class ReachabilityRequest {
22
23
  /**
23
24
  * Gets the cluster information
24
25
  *
26
+ * @param {string} trigger that's passed to Orpheus
25
27
  * @param {IP_VERSION} ipVersion information about current ip network we're on
28
+ * @param {Object} previousReport last reachability result
26
29
  * @returns {Promise}
27
30
  */
28
- getClusters: (ipVersion?: IP_VERSION) => Promise<{
31
+ getClusters: (trigger: GetClustersTrigger, ipVersion?: IP_VERSION, previousReport?: any) => Promise<{
29
32
  clusters: ClusterList;
30
33
  joinCookie: any;
34
+ discoveryOptions?: Record<string, any>;
31
35
  }>;
32
36
  /**
33
37
  * gets remote SDP For Clusters
@@ -1,7 +1,10 @@
1
- declare enum RecordingAction {
1
+ export declare enum RecordingAction {
2
2
  Start = "Start",
3
3
  Stop = "Stop",
4
4
  Pause = "Pause",
5
5
  Resume = "Resume"
6
6
  }
7
- export default RecordingAction;
7
+ export declare enum RecordingType {
8
+ Premise = "premise",
9
+ Cloud = "cloud"
10
+ }
@@ -161,6 +161,7 @@ export default class RecordingController {
161
161
  private extract;
162
162
  /**
163
163
  * @param {RecordingAction} action
164
+ * @param {RecordingType} recordingType
164
165
  * @private
165
166
  * @memberof RecordingController
166
167
  * @returns {Promise}
@@ -1,10 +1,11 @@
1
1
  import { SELF_POLICY } from '../constants';
2
- import RecordingAction from './enums';
2
+ import { RecordingAction } from './enums';
3
3
  declare const _default: {
4
4
  canUserStart: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
5
5
  canUserPause: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
6
6
  canUserResume: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
7
7
  canUserStop: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
8
+ isPremiseRecordingEnabled: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
8
9
  deriveRecordingStates: (action: RecordingAction) => {
9
10
  recording: boolean;
10
11
  paused: boolean;
@@ -1,19 +1,9 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { IP_VERSION } from '../constants';
3
2
  import { LocusMediaRequest } from '../meeting/locusMediaRequest';
4
3
  /**
5
4
  * @class RoapRequest
6
5
  */
7
6
  export default class RoapRequest extends StatelessWebexPlugin {
8
- /**
9
- * Returns reachability data.
10
- * @param {Object} localSdp
11
- * @returns {Object}
12
- */
13
- attachReachabilityData(localSdp: any): Promise<{
14
- localSdp: any;
15
- joinCookie: any;
16
- }>;
17
7
  /**
18
8
  * Sends a ROAP message
19
9
  * @param {Object} options
@@ -22,15 +12,13 @@ export default class RoapRequest extends StatelessWebexPlugin {
22
12
  * @param {String} options.mediaId
23
13
  * @param {String} options.correlationId
24
14
  * @param {String} options.meetingId
25
- * @param {IP_VERSION} options.ipVersion only required for offers
26
15
  * @returns {Promise} returns the response/failure of the request
27
16
  */
28
17
  sendRoap(options: {
29
18
  roapMessage: any;
30
19
  locusSelfUrl: string;
31
20
  mediaId: string;
32
- meetingId: string;
33
- ipVersion?: IP_VERSION;
21
+ isMultistream: boolean;
34
22
  locusMediaRequest?: LocusMediaRequest;
35
23
  }): Promise<{
36
24
  mediaConnections: any;
@@ -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,217 @@
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
+ type MediaStatus = {
13
+ actual?: any;
14
+ expected?: any;
15
+ };
16
+ /**
17
+ * Stats Analyzer class that will emit events based on detected quality
18
+ *
19
+ * @export
20
+ * @class StatsAnalyzer
21
+ * @extends {EventsScope}
22
+ */
23
+ export declare class StatsAnalyzer extends EventsScope {
24
+ config: any;
25
+ correlationId: any;
26
+ lastEmittedStartStopEvent: any;
27
+ lastMqaDataSent: any;
28
+ lastStatsResults: any;
29
+ meetingMediaStatus: any;
30
+ mqaInterval: NodeJS.Timeout;
31
+ mqaSentCount: any;
32
+ networkQualityMonitor: any;
33
+ mediaConnection: any;
34
+ statsInterval: NodeJS.Timeout;
35
+ statsResults: any;
36
+ statsStarted: any;
37
+ successfulCandidatePair: any;
38
+ localIpAddress: string;
39
+ receiveSlotCallback: ReceiveSlotCallback;
40
+ /**
41
+ * Creates a new instance of StatsAnalyzer
42
+ * @constructor
43
+ * @public
44
+ * @param {Object} config SDK Configuration Object
45
+ * @param {Function} receiveSlotCallback Callback used to access receive slots.
46
+ * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
47
+ * @param {Object} statsResults Default properties for stats
48
+ */
49
+ constructor(config: any, receiveSlotCallback?: ReceiveSlotCallback, networkQualityMonitor?: object, statsResults?: object);
50
+ /**
51
+ * Resets cumulative stats arrays.
52
+ *
53
+ * @public
54
+ * @memberof StatsAnalyzer
55
+ * @returns {void}
56
+ */
57
+ resetStatsResults(): void;
58
+ /**
59
+ * sets mediaStatus status for analyzing metrics
60
+ *
61
+ * @public
62
+ * @param {Object} status for the audio and video
63
+ * @memberof StatsAnalyzer
64
+ * @returns {void}
65
+ */
66
+ updateMediaStatus(status: MediaStatus): void;
67
+ /**
68
+ * captures MQA data from media connection
69
+ *
70
+ * @public
71
+ * @memberof StatsAnalyzer
72
+ * @returns {void}
73
+ */
74
+ sendMqaData(): void;
75
+ /**
76
+ * updated the media connection when changed
77
+ *
78
+ * @private
79
+ * @memberof StatsAnalyzer
80
+ * @param {RoapMediaConnection} mediaConnection
81
+ * @returns {void}
82
+ */
83
+ updateMediaConnection(mediaConnection: any): void;
84
+ /**
85
+ * Returns the local IP address for diagnostics.
86
+ * this is the local IP of the interface used for the current media connection
87
+ * a host can have many local Ip Addresses
88
+ * @returns {string | undefined} The local IP address.
89
+ */
90
+ getLocalIpAddress(): string;
91
+ /**
92
+ * Starts the stats analyzer on interval
93
+ *
94
+ * @public
95
+ * @memberof StatsAnalyzer
96
+ * @param {RoapMediaConnection} mediaConnection
97
+ * @returns {Promise}
98
+ */
99
+ startAnalyzer(mediaConnection: any): any;
100
+ /**
101
+ * Cleans up the analyzer when done
102
+ *
103
+ * @public
104
+ * @memberof StatsAnalyzer
105
+ * @returns {void}
106
+ */
107
+ stopAnalyzer(): any;
108
+ /**
109
+ * Parse a single result of get stats
110
+ *
111
+ * @private
112
+ * @param {*} getStatsResult
113
+ * @param {String} type
114
+ * @param {boolean} isSender
115
+ * @returns {void}
116
+ * @memberof StatsAnalyzer
117
+ */
118
+ private parseGetStatsResult;
119
+ /**
120
+ * Filters the get stats results for types
121
+ * @private
122
+ * @param {Array} statsItem
123
+ * @param {String} type
124
+ * @param {boolean} isSender
125
+ * @returns {void}
126
+ */
127
+ filterAndParseGetStatsResults(statsItem: any, type: string, isSender: boolean): void;
128
+ /**
129
+ * parse the audio
130
+ * @param {String} result
131
+ * @param {boolean} type
132
+ * @returns {void}
133
+ */
134
+ parseAudioSource(result: any, type: any): void;
135
+ /**
136
+ * emits started/stopped events for local/remote media by checking
137
+ * if given values are increasing or not. The previousValue, currentValue
138
+ * params can be any numerical value like number of receive packets or
139
+ * decoded frames, etc.
140
+ *
141
+ * @private
142
+ * @param {string} mediaType
143
+ * @param {number} previousValue - value to compare
144
+ * @param {number} currentValue - value to compare (must be same type of value as previousValue)
145
+ * @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
146
+ * @memberof StatsAnalyzer
147
+ * @returns {void}
148
+ */
149
+ emitStartStopEvents: (mediaType: string, previousValue: number, currentValue: number, isLocal: boolean) => void;
150
+ /**
151
+ * compares current and previous stats to check if packets are not sent
152
+ *
153
+ * @private
154
+ * @memberof StatsAnalyzer
155
+ * @returns {void}
156
+ */
157
+ private compareLastStatsResult;
158
+ /**
159
+ * Does a `getStats` on all the transceivers and parses the results
160
+ *
161
+ * @private
162
+ * @memberof StatsAnalyzer
163
+ * @returns {Promise}
164
+ */
165
+ private getStatsAndParse;
166
+ /**
167
+ * Processes OutboundRTP stats result and stores
168
+ * @private
169
+ * @param {*} result
170
+ * @param {*} mediaType
171
+ * @returns {void}
172
+ */
173
+ private processOutboundRTPResult;
174
+ /**
175
+ * Processes InboundRTP stats result and stores
176
+ * @private
177
+ * @param {*} result
178
+ * @param {*} mediaType
179
+ * @returns {void}
180
+ */
181
+ private processInboundRTPResult;
182
+ /**
183
+ * extracts the local Ip address from the statsResult object by looking at stats results candidates
184
+ * and matches that ID with the successful candidate pair. It looks at the type of local candidate it is
185
+ * and then extracts the IP address from the relatedAddress or address property based on conditions known in webrtc
186
+ * note, there are known incompatibilities and it is possible for this to set undefined, or for the IP address to be the public IP address
187
+ * for example, firefox does not set the relayProtocol, and if the user is behind a NAT it might be the public IP
188
+ * @private
189
+ * @param {string} successfulCandidatePairId - The ID of the successful candidate pair.
190
+ * @param {Object} candidates - the stats result candidates
191
+ * @returns {void}
192
+ */
193
+ extractAndSetLocalIpAddressInfoForDiagnostics: (successfulCandidatePairId: string, candidates: {
194
+ [key: string]: Record<string, unknown>;
195
+ }) => void;
196
+ /**
197
+ * Processes remote and local candidate result and stores
198
+ * @private
199
+ * @param {*} result
200
+ * @param {*} type
201
+ * @param {boolean} isSender
202
+ * @param {boolean} isRemote
203
+ *
204
+ * @returns {void}
205
+ */
206
+ parseCandidate: (result: any, type: any, isSender: boolean, isRemote: boolean) => void;
207
+ /**
208
+ *
209
+ * @private
210
+ * @param {*} result
211
+ * @param {*} type
212
+ * @returns {void}
213
+ * @memberof StatsAnalyzer
214
+ */
215
+ compareSentAndReceived(result: any, type: any): void;
216
+ }
217
+ export {};
@@ -0,0 +1,48 @@
1
+ export declare const getAudioReceiverMqa: ({ audioReceiver, statsResults, lastMqaDataSent, baseMediaType, }: {
2
+ audioReceiver: any;
3
+ statsResults: any;
4
+ lastMqaDataSent: any;
5
+ baseMediaType: any;
6
+ }) => void;
7
+ export declare const getAudioReceiverStreamMqa: ({ audioReceiverStream, statsResults, lastMqaDataSent, mediaType, }: {
8
+ audioReceiverStream: any;
9
+ statsResults: any;
10
+ lastMqaDataSent: any;
11
+ mediaType: any;
12
+ }) => void;
13
+ export declare const getAudioSenderMqa: ({ audioSender, statsResults, lastMqaDataSent, baseMediaType }: {
14
+ audioSender: any;
15
+ statsResults: any;
16
+ lastMqaDataSent: any;
17
+ baseMediaType: any;
18
+ }) => void;
19
+ export declare const getAudioSenderStreamMqa: ({ audioSenderStream, statsResults, lastMqaDataSent, mediaType, }: {
20
+ audioSenderStream: any;
21
+ statsResults: any;
22
+ lastMqaDataSent: any;
23
+ mediaType: any;
24
+ }) => void;
25
+ export declare const getVideoReceiverMqa: ({ videoReceiver, statsResults, lastMqaDataSent, baseMediaType, }: {
26
+ videoReceiver: any;
27
+ statsResults: any;
28
+ lastMqaDataSent: any;
29
+ baseMediaType: any;
30
+ }) => void;
31
+ export declare const getVideoReceiverStreamMqa: ({ videoReceiverStream, statsResults, lastMqaDataSent, mediaType, }: {
32
+ videoReceiverStream: any;
33
+ statsResults: any;
34
+ lastMqaDataSent: any;
35
+ mediaType: any;
36
+ }) => void;
37
+ export declare const getVideoSenderMqa: ({ videoSender, statsResults, lastMqaDataSent, baseMediaType }: {
38
+ videoSender: any;
39
+ statsResults: any;
40
+ lastMqaDataSent: any;
41
+ baseMediaType: any;
42
+ }) => void;
43
+ export declare const getVideoSenderStreamMqa: ({ videoSenderStream, statsResults, lastMqaDataSent, mediaType, }: {
44
+ videoSenderStream: any;
45
+ statsResults: any;
46
+ lastMqaDataSent: any;
47
+ mediaType: any;
48
+ }) => void;
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+ declare class WebinarCollection {
5
+ webinarInfo: any;
6
+ namespace: string;
7
+ mainIndex: string;
8
+ constructor();
9
+ set(id: any, info: any): void;
10
+ /**
11
+ * @param {String} id
12
+ * @returns {Member}
13
+ */
14
+ get(id: string): any;
15
+ }
16
+ export default WebinarCollection;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @class Webinar
3
+ */
4
+ declare const Webinar: any;
5
+ export default Webinar;