@webex/plugin-meetings 3.0.0-beta.28 → 3.0.0-beta.280

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 (363) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +114 -14
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +763 -31
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/request.js +78 -0
  17. package/dist/breakouts/request.js.map +1 -0
  18. package/dist/breakouts/utils.js +67 -0
  19. package/dist/breakouts/utils.js.map +1 -0
  20. package/dist/common/errors/no-meeting-info.js +51 -0
  21. package/dist/common/errors/no-meeting-info.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +28 -7
  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/common/queue.js +24 -9
  27. package/dist/common/queue.js.map +1 -1
  28. package/dist/config.js +5 -10
  29. package/dist/config.js.map +1 -1
  30. package/dist/constants.js +203 -28
  31. package/dist/constants.js.map +1 -1
  32. package/dist/controls-options-manager/enums.js +14 -2
  33. package/dist/controls-options-manager/enums.js.map +1 -1
  34. package/dist/controls-options-manager/index.js +109 -15
  35. package/dist/controls-options-manager/index.js.map +1 -1
  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 +309 -18
  39. package/dist/controls-options-manager/util.js.map +1 -1
  40. package/dist/index.js +112 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/interpretation/collection.js +23 -0
  43. package/dist/interpretation/collection.js.map +1 -0
  44. package/dist/interpretation/index.js +366 -0
  45. package/dist/interpretation/index.js.map +1 -0
  46. package/dist/interpretation/siLanguage.js +25 -0
  47. package/dist/interpretation/siLanguage.js.map +1 -0
  48. package/dist/locus-info/controlsUtils.js +91 -2
  49. package/dist/locus-info/controlsUtils.js.map +1 -1
  50. package/dist/locus-info/index.js +383 -62
  51. package/dist/locus-info/index.js.map +1 -1
  52. package/dist/locus-info/infoUtils.js +7 -1
  53. package/dist/locus-info/infoUtils.js.map +1 -1
  54. package/dist/locus-info/mediaSharesUtils.js +57 -1
  55. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  56. package/dist/locus-info/parser.js +249 -72
  57. package/dist/locus-info/parser.js.map +1 -1
  58. package/dist/locus-info/selfUtils.js +89 -14
  59. package/dist/locus-info/selfUtils.js.map +1 -1
  60. package/dist/media/index.js +58 -116
  61. package/dist/media/index.js.map +1 -1
  62. package/dist/media/properties.js +72 -123
  63. package/dist/media/properties.js.map +1 -1
  64. package/dist/meeting/in-meeting-actions.js +82 -2
  65. package/dist/meeting/in-meeting-actions.js.map +1 -1
  66. package/dist/meeting/index.js +3123 -2814
  67. package/dist/meeting/index.js.map +1 -1
  68. package/dist/meeting/locusMediaRequest.js +292 -0
  69. package/dist/meeting/locusMediaRequest.js.map +1 -0
  70. package/dist/meeting/muteState.js +230 -124
  71. package/dist/meeting/muteState.js.map +1 -1
  72. package/dist/meeting/request.js +256 -196
  73. package/dist/meeting/request.js.map +1 -1
  74. package/dist/meeting/util.js +601 -417
  75. package/dist/meeting/util.js.map +1 -1
  76. package/dist/meeting-info/index.js +73 -7
  77. package/dist/meeting-info/index.js.map +1 -1
  78. package/dist/meeting-info/meeting-info-v2.js +192 -51
  79. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  80. package/dist/meeting-info/util.js +1 -1
  81. package/dist/meeting-info/util.js.map +1 -1
  82. package/dist/meeting-info/utilv2.js +36 -36
  83. package/dist/meeting-info/utilv2.js.map +1 -1
  84. package/dist/meetings/collection.js +22 -0
  85. package/dist/meetings/collection.js.map +1 -1
  86. package/dist/meetings/index.js +394 -94
  87. package/dist/meetings/index.js.map +1 -1
  88. package/dist/meetings/meetings.types.js +7 -0
  89. package/dist/meetings/meetings.types.js.map +1 -0
  90. package/dist/meetings/request.js +2 -0
  91. package/dist/meetings/request.js.map +1 -1
  92. package/dist/meetings/util.js +71 -1
  93. package/dist/meetings/util.js.map +1 -1
  94. package/dist/member/index.js +49 -0
  95. package/dist/member/index.js.map +1 -1
  96. package/dist/member/types.js +25 -0
  97. package/dist/member/types.js.map +1 -0
  98. package/dist/member/util.js +121 -25
  99. package/dist/member/util.js.map +1 -1
  100. package/dist/members/collection.js +10 -0
  101. package/dist/members/collection.js.map +1 -1
  102. package/dist/members/index.js +86 -6
  103. package/dist/members/index.js.map +1 -1
  104. package/dist/members/request.js +106 -38
  105. package/dist/members/request.js.map +1 -1
  106. package/dist/members/types.js +15 -0
  107. package/dist/members/types.js.map +1 -0
  108. package/dist/members/util.js +316 -233
  109. package/dist/members/util.js.map +1 -1
  110. package/dist/metrics/constants.js +12 -5
  111. package/dist/metrics/constants.js.map +1 -1
  112. package/dist/metrics/index.js +1 -468
  113. package/dist/metrics/index.js.map +1 -1
  114. package/dist/multistream/mediaRequestManager.js +238 -49
  115. package/dist/multistream/mediaRequestManager.js.map +1 -1
  116. package/dist/multistream/receiveSlot.js +40 -16
  117. package/dist/multistream/receiveSlot.js.map +1 -1
  118. package/dist/multistream/receiveSlotManager.js +39 -36
  119. package/dist/multistream/receiveSlotManager.js.map +1 -1
  120. package/dist/multistream/remoteMedia.js +44 -18
  121. package/dist/multistream/remoteMedia.js.map +1 -1
  122. package/dist/multistream/remoteMediaGroup.js +60 -3
  123. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  124. package/dist/multistream/remoteMediaManager.js +209 -59
  125. package/dist/multistream/remoteMediaManager.js.map +1 -1
  126. package/dist/multistream/sendSlotManager.js +233 -0
  127. package/dist/multistream/sendSlotManager.js.map +1 -0
  128. package/dist/reachability/index.js +225 -59
  129. package/dist/reachability/index.js.map +1 -1
  130. package/dist/reachability/request.js +17 -8
  131. package/dist/reachability/request.js.map +1 -1
  132. package/dist/reconnection-manager/index.js +199 -154
  133. package/dist/reconnection-manager/index.js.map +1 -1
  134. package/dist/recording-controller/index.js +21 -2
  135. package/dist/recording-controller/index.js.map +1 -1
  136. package/dist/recording-controller/util.js +9 -8
  137. package/dist/recording-controller/util.js.map +1 -1
  138. package/dist/roap/index.js +23 -29
  139. package/dist/roap/index.js.map +1 -1
  140. package/dist/roap/request.js +112 -97
  141. package/dist/roap/request.js.map +1 -1
  142. package/dist/roap/turnDiscovery.js +96 -36
  143. package/dist/roap/turnDiscovery.js.map +1 -1
  144. package/dist/rtcMetrics/constants.js +12 -0
  145. package/dist/rtcMetrics/constants.js.map +1 -0
  146. package/dist/rtcMetrics/index.js +117 -0
  147. package/dist/rtcMetrics/index.js.map +1 -0
  148. package/dist/statsAnalyzer/index.js +67 -73
  149. package/dist/statsAnalyzer/index.js.map +1 -1
  150. package/dist/statsAnalyzer/mqaUtil.js +11 -10
  151. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  152. package/dist/types/annotation/annotation.types.d.ts +42 -0
  153. package/dist/types/annotation/constants.d.ts +31 -0
  154. package/dist/types/annotation/index.d.ts +117 -0
  155. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  156. package/dist/types/breakouts/events.d.ts +8 -0
  157. package/dist/types/breakouts/request.d.ts +22 -0
  158. package/dist/types/breakouts/utils.d.ts +15 -0
  159. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  160. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  161. package/dist/types/common/queue.d.ts +9 -7
  162. package/dist/types/config.d.ts +1 -6
  163. package/dist/types/constants.d.ts +161 -21
  164. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  165. package/dist/types/controls-options-manager/index.d.ts +17 -1
  166. package/dist/types/controls-options-manager/types.d.ts +43 -0
  167. package/dist/types/controls-options-manager/util.d.ts +1 -7
  168. package/dist/types/index.d.ts +6 -4
  169. package/dist/types/interpretation/collection.d.ts +5 -0
  170. package/dist/types/interpretation/index.d.ts +5 -0
  171. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  172. package/dist/types/locus-info/index.d.ts +57 -4
  173. package/dist/types/locus-info/parser.d.ts +67 -6
  174. package/dist/types/media/index.d.ts +2 -0
  175. package/dist/types/media/properties.d.ts +34 -48
  176. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  177. package/dist/types/meeting/index.d.ts +345 -507
  178. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  179. package/dist/types/meeting/muteState.d.ts +99 -23
  180. package/dist/types/meeting/request.d.ts +72 -43
  181. package/dist/types/meeting/util.d.ts +101 -1
  182. package/dist/types/meeting-info/index.d.ts +13 -1
  183. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  184. package/dist/types/meetings/collection.d.ts +8 -0
  185. package/dist/types/meetings/index.d.ts +88 -12
  186. package/dist/types/meetings/meetings.types.d.ts +4 -0
  187. package/dist/types/member/index.d.ts +13 -0
  188. package/dist/types/member/types.d.ts +32 -0
  189. package/dist/types/members/collection.d.ts +5 -0
  190. package/dist/types/members/index.d.ts +35 -2
  191. package/dist/types/members/request.d.ts +73 -9
  192. package/dist/types/members/types.d.ts +24 -0
  193. package/dist/types/members/util.d.ts +209 -1
  194. package/dist/types/metrics/constants.d.ts +11 -4
  195. package/dist/types/metrics/index.d.ts +4 -119
  196. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  197. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  198. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  199. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  200. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  201. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  202. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  203. package/dist/types/reachability/index.d.ts +61 -7
  204. package/dist/types/reachability/request.d.ts +7 -3
  205. package/dist/types/reconnection-manager/index.d.ts +9 -0
  206. package/dist/types/recording-controller/index.d.ts +15 -1
  207. package/dist/types/recording-controller/util.d.ts +5 -4
  208. package/dist/types/roap/request.d.ts +15 -11
  209. package/dist/types/roap/turnDiscovery.d.ts +18 -1
  210. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  211. package/dist/types/rtcMetrics/index.d.ts +47 -0
  212. package/dist/types/statsAnalyzer/index.d.ts +6 -1
  213. package/package.json +23 -20
  214. package/src/annotation/annotation.types.ts +50 -0
  215. package/src/annotation/constants.ts +36 -0
  216. package/src/annotation/index.ts +328 -0
  217. package/src/breakouts/README.md +44 -14
  218. package/src/breakouts/breakout.ts +87 -9
  219. package/src/breakouts/edit-lock-error.ts +25 -0
  220. package/src/breakouts/events.ts +56 -0
  221. package/src/breakouts/index.ts +646 -18
  222. package/src/breakouts/request.ts +55 -0
  223. package/src/breakouts/utils.ts +57 -0
  224. package/src/common/errors/no-meeting-info.ts +24 -0
  225. package/src/common/errors/webex-errors.ts +27 -2
  226. package/src/common/logs/logger-proxy.ts +1 -1
  227. package/src/common/queue.ts +22 -8
  228. package/src/config.ts +4 -9
  229. package/src/constants.ts +184 -18
  230. package/src/controls-options-manager/enums.ts +12 -0
  231. package/src/controls-options-manager/index.ts +116 -21
  232. package/src/controls-options-manager/types.ts +59 -0
  233. package/src/controls-options-manager/util.ts +294 -14
  234. package/src/index.ts +40 -0
  235. package/src/interpretation/README.md +60 -0
  236. package/src/interpretation/collection.ts +19 -0
  237. package/src/interpretation/index.ts +332 -0
  238. package/src/interpretation/siLanguage.ts +18 -0
  239. package/src/locus-info/controlsUtils.ts +108 -0
  240. package/src/locus-info/index.ts +413 -59
  241. package/src/locus-info/infoUtils.ts +10 -2
  242. package/src/locus-info/mediaSharesUtils.ts +64 -0
  243. package/src/locus-info/parser.ts +258 -47
  244. package/src/locus-info/selfUtils.ts +81 -5
  245. package/src/media/index.ts +100 -122
  246. package/src/media/properties.ts +85 -108
  247. package/src/meeting/in-meeting-actions.ts +163 -3
  248. package/src/meeting/index.ts +2541 -2309
  249. package/src/meeting/locusMediaRequest.ts +313 -0
  250. package/src/meeting/muteState.ts +229 -131
  251. package/src/meeting/request.ts +172 -121
  252. package/src/meeting/util.ts +588 -394
  253. package/src/meeting-info/index.ts +81 -8
  254. package/src/meeting-info/meeting-info-v2.ts +170 -14
  255. package/src/meeting-info/util.ts +1 -1
  256. package/src/meeting-info/utilv2.ts +23 -23
  257. package/src/meetings/collection.ts +20 -0
  258. package/src/meetings/index.ts +428 -108
  259. package/src/meetings/meetings.types.ts +12 -0
  260. package/src/meetings/request.ts +2 -0
  261. package/src/meetings/util.ts +79 -4
  262. package/src/member/index.ts +49 -0
  263. package/src/member/types.ts +38 -0
  264. package/src/member/util.ts +127 -25
  265. package/src/members/collection.ts +8 -0
  266. package/src/members/index.ts +106 -7
  267. package/src/members/request.ts +97 -17
  268. package/src/members/types.ts +28 -0
  269. package/src/members/util.ts +319 -240
  270. package/src/metrics/constants.ts +11 -4
  271. package/src/metrics/index.ts +1 -490
  272. package/src/multistream/mediaRequestManager.ts +289 -79
  273. package/src/multistream/receiveSlot.ts +47 -17
  274. package/src/multistream/receiveSlotManager.ts +34 -24
  275. package/src/multistream/remoteMedia.ts +27 -2
  276. package/src/multistream/remoteMediaGroup.ts +59 -0
  277. package/src/multistream/remoteMediaManager.ts +148 -30
  278. package/src/multistream/sendSlotManager.ts +170 -0
  279. package/src/reachability/index.ts +228 -37
  280. package/src/reachability/request.ts +17 -8
  281. package/src/reconnection-manager/index.ts +81 -54
  282. package/src/recording-controller/index.ts +20 -3
  283. package/src/recording-controller/util.ts +26 -9
  284. package/src/roap/index.ts +23 -30
  285. package/src/roap/request.ts +100 -104
  286. package/src/roap/turnDiscovery.ts +51 -25
  287. package/src/rtcMetrics/constants.ts +3 -0
  288. package/src/rtcMetrics/index.ts +100 -0
  289. package/src/statsAnalyzer/index.ts +88 -88
  290. package/src/statsAnalyzer/mqaUtil.ts +13 -14
  291. package/test/integration/spec/converged-space-meetings.js +60 -3
  292. package/test/integration/spec/journey.js +320 -261
  293. package/test/integration/spec/space-meeting.js +76 -3
  294. package/test/unit/spec/annotation/index.ts +418 -0
  295. package/test/unit/spec/breakouts/breakout.ts +142 -24
  296. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  297. package/test/unit/spec/breakouts/events.ts +89 -0
  298. package/test/unit/spec/breakouts/index.ts +1488 -67
  299. package/test/unit/spec/breakouts/request.ts +104 -0
  300. package/test/unit/spec/breakouts/utils.js +72 -0
  301. package/test/unit/spec/common/queue.js +31 -2
  302. package/test/unit/spec/controls-options-manager/index.js +163 -0
  303. package/test/unit/spec/controls-options-manager/util.js +576 -60
  304. package/test/unit/spec/fixture/locus.js +1 -0
  305. package/test/unit/spec/interpretation/collection.ts +15 -0
  306. package/test/unit/spec/interpretation/index.ts +589 -0
  307. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  308. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  309. package/test/unit/spec/locus-info/index.js +1304 -33
  310. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  311. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  312. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  313. package/test/unit/spec/locus-info/parser.js +116 -35
  314. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  315. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  316. package/test/unit/spec/media/index.ts +104 -37
  317. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  318. package/test/unit/spec/meeting/index.js +4515 -1932
  319. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  320. package/test/unit/spec/meeting/muteState.js +408 -208
  321. package/test/unit/spec/meeting/request.js +440 -45
  322. package/test/unit/spec/meeting/utils.js +679 -64
  323. package/test/unit/spec/meeting-info/index.js +295 -0
  324. package/test/unit/spec/meeting-info/meetinginfov2.js +521 -5
  325. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  326. package/test/unit/spec/meetings/collection.js +14 -0
  327. package/test/unit/spec/meetings/index.js +1007 -177
  328. package/test/unit/spec/meetings/utils.js +206 -2
  329. package/test/unit/spec/member/index.js +58 -4
  330. package/test/unit/spec/member/util.js +479 -35
  331. package/test/unit/spec/members/index.js +319 -1
  332. package/test/unit/spec/members/request.js +206 -27
  333. package/test/unit/spec/members/utils.js +184 -0
  334. package/test/unit/spec/metrics/index.js +1 -50
  335. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  336. package/test/unit/spec/multistream/receiveSlot.ts +43 -20
  337. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  338. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  339. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  340. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  341. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  342. package/test/unit/spec/reachability/index.ts +549 -9
  343. package/test/unit/spec/reachability/request.js +68 -0
  344. package/test/unit/spec/reconnection-manager/index.js +84 -9
  345. package/test/unit/spec/recording-controller/index.js +294 -218
  346. package/test/unit/spec/recording-controller/util.js +223 -96
  347. package/test/unit/spec/roap/index.ts +31 -51
  348. package/test/unit/spec/roap/request.ts +203 -85
  349. package/test/unit/spec/roap/turnDiscovery.ts +48 -13
  350. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  351. package/test/unit/spec/stats-analyzer/index.js +64 -2
  352. package/test/utils/integrationTestUtils.js +46 -0
  353. package/test/utils/testUtils.js +0 -52
  354. package/dist/meeting/effectsState.js +0 -262
  355. package/dist/meeting/effectsState.js.map +0 -1
  356. package/dist/metrics/config.js +0 -299
  357. package/dist/metrics/config.js.map +0 -1
  358. package/dist/types/meeting/effectsState.d.ts +0 -42
  359. package/dist/types/metrics/config.d.ts +0 -178
  360. package/src/index.js +0 -16
  361. package/src/meeting/effectsState.ts +0 -211
  362. package/src/metrics/config.ts +0 -495
  363. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -1,6 +1,39 @@
1
1
  /*!
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
+ export type ReachabilityMetrics = {
5
+ reachability_public_udp_success: number;
6
+ reachability_public_udp_failed: number;
7
+ reachability_public_tcp_success: number;
8
+ reachability_public_tcp_failed: number;
9
+ reachability_vmn_udp_success: number;
10
+ reachability_vmn_udp_failed: number;
11
+ reachability_vmn_tcp_success: number;
12
+ reachability_vmn_tcp_failed: number;
13
+ };
14
+ export type TransportResult = {
15
+ reachable?: 'true' | 'false';
16
+ latencyInMilliseconds?: string;
17
+ clientMediaIPs?: string[];
18
+ untested?: 'true';
19
+ };
20
+ type ReachabilityResult = {
21
+ udp: TransportResult;
22
+ tcp: TransportResult;
23
+ xtls: {
24
+ untested: 'true';
25
+ };
26
+ };
27
+ export type ReachabilityResults = Record<string, ReachabilityResult>;
28
+ type InternalReachabilityResults = Record<string, ReachabilityResult & {
29
+ isVideoMesh?: boolean;
30
+ }>;
31
+ export type ICECandidateResult = {
32
+ clusterId: string;
33
+ isVideoMesh: boolean;
34
+ elapsed?: string | null;
35
+ publicIPs?: string[];
36
+ };
4
37
  /**
5
38
  * @class Reachability
6
39
  * @export
@@ -23,14 +56,27 @@ export default class Reachability {
23
56
  * @async
24
57
  * @memberof Reachability
25
58
  */
26
- gatherReachability(): Promise<unknown>;
59
+ gatherReachability(): Promise<InternalReachabilityResults>;
60
+ /**
61
+ * Returns statistics about last reachability results. The returned value is an object
62
+ * with a flat list of properties so that it can be easily sent with metrics
63
+ *
64
+ * @returns {Promise} Promise with metrics values, it never rejects/throws.
65
+ */
66
+ getReachabilityMetrics(): Promise<ReachabilityMetrics>;
67
+ /**
68
+ * Reachability results as an object in the format that backend expects
69
+ *
70
+ * @returns {any} reachability results that need to be sent to the backend
71
+ */
72
+ getReachabilityResults(): Promise<ReachabilityResults | undefined>;
27
73
  /**
28
74
  * fetches reachability data and checks for cluster reachability
29
75
  * @returns {boolean}
30
76
  * @public
31
77
  * @memberof Reachability
32
78
  */
33
- isAnyClusterReachable(): Promise<boolean>;
79
+ isAnyPublicClusterReachable(): Promise<boolean>;
34
80
  /**
35
81
  * Generate peerConnection config settings
36
82
  * @param {object} cluster
@@ -94,7 +140,7 @@ export default class Reachability {
94
140
  * speed.
95
141
  * @private
96
142
  * @param {RTCPeerConnection} peerConnection
97
- * @param {number} timeout
143
+ * @param {boolean} isVideoMesh
98
144
  * @returns {Promise}
99
145
  */
100
146
  private iceGatheringState;
@@ -107,20 +153,27 @@ export default class Reachability {
107
153
  private logUnreachableClusters;
108
154
  /**
109
155
  * Calculates time to establish connection
110
- * @param {array} iceResults iceResults
156
+ * @param {Array<ICECandidateResult>} iceResults iceResults
111
157
  * @returns {object} reachabilityMap
112
- * @private
158
+ * @protected
113
159
  * @memberof Reachability
114
160
  */
115
- private parseIceResultsToReachabilityResults;
161
+ protected parseIceResultsToInternalReachabilityResults(iceResults: Array<ICECandidateResult>): InternalReachabilityResults;
116
162
  /**
117
163
  * fetches reachability data
118
164
  * @param {object} clusterList
119
- * @returns {Promise<localSDPData>} reachability check results
165
+ * @returns {Promise<InternalReachabilityResults>} reachability check results
120
166
  * @private
121
167
  * @memberof Reachability
122
168
  */
123
169
  private performReachabilityCheck;
170
+ /**
171
+ * Adds public IP (client media IPs)
172
+ * @param {RTCPeerConnection} peerConnection
173
+ * @param {string} publicIP
174
+ * @returns {void}
175
+ */
176
+ protected addPublicIP(peerConnection: RTCPeerConnection, publicIP?: string | null): void;
124
177
  /**
125
178
  * Records latency and closes the peerConnection
126
179
  * @param {RTCPeerConnection} peerConnection
@@ -138,3 +191,4 @@ export default class Reachability {
138
191
  */
139
192
  private setup;
140
193
  }
194
+ export {};
@@ -1,3 +1,4 @@
1
+ import { IP_VERSION } from '../constants';
1
2
  export interface ClusterNode {
2
3
  isVideoMesh: boolean;
3
4
  udp: Array<string>;
@@ -19,12 +20,15 @@ declare class ReachabilityRequest {
19
20
  */
20
21
  constructor(webex: object);
21
22
  /**
22
- * gets the cluster information
23
+ * Gets the cluster information
23
24
  *
24
- * @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
25
+ * @param {IP_VERSION} ipVersion information about current ip network we're on
25
26
  * @returns {Promise}
26
27
  */
27
- getClusters: () => Promise<ClusterList>;
28
+ getClusters: (ipVersion?: IP_VERSION) => Promise<{
29
+ clusters: ClusterList;
30
+ joinCookie: any;
31
+ }>;
28
32
  /**
29
33
  * gets remote SDP For Clusters
30
34
  * @param {Object} localSDPList localSDPs for the cluster
@@ -58,6 +58,15 @@ export default class ReconnectionManager {
58
58
  * @memberof ReconnectionManager
59
59
  */
60
60
  cleanUp(): void;
61
+ /**
62
+ * Stop the local share stream.
63
+ *
64
+ * @param {string} reason a {@link SHARE_STOPPED_REASON}
65
+ * @returns {undefined}
66
+ * @private
67
+ * @memberof ReconnectionManager
68
+ */
69
+ private stopLocalShareStream;
61
70
  /**
62
71
  * @public
63
72
  * @memberof ReconnectionManager
@@ -1,3 +1,4 @@
1
+ import { SELF_POLICY } from '../constants';
1
2
  import MeetingRequest from '../meeting/request';
2
3
  /**
3
4
  * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting
@@ -20,6 +21,13 @@ export default class RecordingController {
20
21
  * @memberof RecordingInfo
21
22
  */
22
23
  private displayHints;
24
+ /**
25
+ * @instance
26
+ * @type {Object}
27
+ * @private
28
+ * @memberof RecordingInfo
29
+ */
30
+ private selfUserPolicies;
23
31
  /**
24
32
  * @instance
25
33
  * @type {string}
@@ -62,7 +70,6 @@ export default class RecordingController {
62
70
  });
63
71
  /**
64
72
  * @param {MeetingRequest} request
65
- * @param {LocusInfo} info
66
73
  * @returns {void}
67
74
  * @private
68
75
  * @memberof RecordingController
@@ -94,6 +101,13 @@ export default class RecordingController {
94
101
  * @memberof RecordingController
95
102
  */
96
103
  setDisplayHints(hints: Array<string>): void;
104
+ /**
105
+ * @param {Object} selfUserPolicies
106
+ * @returns {void}
107
+ * @public
108
+ * @memberof RecordingController
109
+ */
110
+ setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>): void;
97
111
  /**
98
112
  * @param {string} id
99
113
  * @returns {void}
@@ -1,9 +1,10 @@
1
+ import { SELF_POLICY } from '../constants';
1
2
  import RecordingAction from './enums';
2
3
  declare const _default: {
3
- canUserStart: (displayHints: string[]) => boolean;
4
- canUserPause: (displayHints: string[]) => boolean;
5
- canUserResume: (displayHints: string[]) => boolean;
6
- canUserStop: (displayHints: string[]) => boolean;
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;
7
8
  deriveRecordingStates: (action: RecordingAction) => {
8
9
  recording: boolean;
9
10
  paused: boolean;
@@ -1,14 +1,19 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
+ import { IP_VERSION } from '../constants';
3
+ import { LocusMediaRequest } from '../meeting/locusMediaRequest';
2
4
  /**
3
5
  * @class RoapRequest
4
6
  */
5
7
  export default class RoapRequest extends StatelessWebexPlugin {
6
8
  /**
7
- * Joins a meeting via ROAP
9
+ * Returns reachability data.
8
10
  * @param {Object} localSdp
9
- * @returns {Promise} returns a promise that resolves/rejects whatever the request does
11
+ * @returns {Object}
10
12
  */
11
- attachRechabilityData(localSdp: any): Promise<any>;
13
+ attachReachabilityData(localSdp: any): Promise<{
14
+ localSdp: any;
15
+ joinCookie: any;
16
+ }>;
12
17
  /**
13
18
  * Sends a ROAP message
14
19
  * @param {Object} options
@@ -16,20 +21,19 @@ export default class RoapRequest extends StatelessWebexPlugin {
16
21
  * @param {String} options.locusSelfUrl
17
22
  * @param {String} options.mediaId
18
23
  * @param {String} options.correlationId
19
- * @param {Boolean} options.audioMuted
20
- * @param {Boolean} options.videoMuted
21
24
  * @param {String} options.meetingId
22
- * @param {Boolean} options.preferTranscoding
25
+ * @param {IP_VERSION} options.ipVersion only required for offers
23
26
  * @returns {Promise} returns the response/failure of the request
24
27
  */
25
28
  sendRoap(options: {
26
29
  roapMessage: any;
27
30
  locusSelfUrl: string;
28
31
  mediaId: string;
29
- correlationId: string;
30
- audioMuted: boolean;
31
- videoMuted: boolean;
32
32
  meetingId: string;
33
- preferTranscoding?: boolean;
34
- }): Promise<any>;
33
+ ipVersion?: IP_VERSION;
34
+ locusMediaRequest?: LocusMediaRequest;
35
+ }): Promise<{
36
+ mediaConnections: any;
37
+ locus: any;
38
+ }>;
35
39
  }
@@ -49,7 +49,24 @@ export default class TurnDiscovery {
49
49
  * @param {Meeting} meeting
50
50
  * @returns {Promise}
51
51
  */
52
- sendRoapOK(meeting: Meeting): Promise<any>;
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>;
53
70
  /**
54
71
  * Retrieves TURN server information from the backend by doing
55
72
  * a roap message exchange:
@@ -0,0 +1,4 @@
1
+ declare const RTC_METRICS: {
2
+ APP_ID: string;
3
+ };
4
+ export { RTC_METRICS as default };
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Rtc Metrics
3
+ */
4
+ export default class RtcMetrics {
5
+ /**
6
+ * Array of MetricData items to be sent to the metrics service.
7
+ */
8
+ metricsQueue: any[];
9
+ intervalId: number;
10
+ webex: any;
11
+ meetingId: string;
12
+ correlationId: string;
13
+ /**
14
+ * Initialize the interval.
15
+ *
16
+ * @param {object} webex - The main `webex` object.
17
+ * @param {string} meetingId - The meeting id.
18
+ * @param {string} correlationId - The correlation id.
19
+ */
20
+ constructor(webex: any, meetingId: any, correlationId: any);
21
+ /**
22
+ * Check to see if the metrics queue has any items.
23
+ *
24
+ * @returns {void}
25
+ */
26
+ private checkMetrics;
27
+ /**
28
+ * Add metrics items to the metrics queue.
29
+ *
30
+ * @param {object} data - An object with a payload array of metrics items.
31
+ *
32
+ * @returns {void}
33
+ */
34
+ addMetrics(data: any): void;
35
+ /**
36
+ * Clear the metrics interval.
37
+ *
38
+ * @returns {void}
39
+ */
40
+ closeMetrics(): void;
41
+ /**
42
+ * Send metrics to the metrics service.
43
+ *
44
+ * @returns {void}
45
+ */
46
+ private sendMetrics;
47
+ }
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import EventsScope from '../common/events/events-scope';
3
+ import { ReceiveSlot } from '../multistream/receiveSlot';
3
4
  export declare const EVENTS: {
4
5
  MEDIA_QUALITY: string;
5
6
  LOCAL_MEDIA_STARTED: string;
@@ -7,6 +8,7 @@ export declare const EVENTS: {
7
8
  REMOTE_MEDIA_STARTED: string;
8
9
  REMOTE_MEDIA_STOPPED: string;
9
10
  };
11
+ type ReceiveSlotCallback = (csi: number) => ReceiveSlot | undefined;
10
12
  /**
11
13
  * Stats Analyzer class that will emit events based on detected quality
12
14
  *
@@ -28,15 +30,17 @@ export declare class StatsAnalyzer extends EventsScope {
28
30
  statsInterval: NodeJS.Timeout;
29
31
  statsResults: any;
30
32
  statsStarted: any;
33
+ receiveSlotCallback: ReceiveSlotCallback;
31
34
  /**
32
35
  * Creates a new instance of StatsAnalyzer
33
36
  * @constructor
34
37
  * @public
35
38
  * @param {Object} config SDK Configuration Object
39
+ * @param {Function} receiveSlotCallback Callback used to access receive slots.
36
40
  * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
37
41
  * @param {Object} statsResults Default properties for stats
38
42
  */
39
- constructor(config: any, networkQualityMonitor?: object, statsResults?: object);
43
+ constructor(config: any, receiveSlotCallback?: ReceiveSlotCallback, networkQualityMonitor?: object, statsResults?: object);
40
44
  /**
41
45
  * Resets cumulative stats arrays.
42
46
  *
@@ -193,3 +197,4 @@ export declare class StatsAnalyzer extends EventsScope {
193
197
  */
194
198
  compareSentAndReceived(result: any, type: any): void;
195
199
  }
200
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "3.0.0-beta.28",
3
+ "version": "3.0.0-beta.280",
4
4
  "description": "",
5
5
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
6
  "contributors": [
@@ -32,31 +32,33 @@
32
32
  "build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
33
33
  },
34
34
  "devDependencies": {
35
- "@webex/plugin-meetings": "3.0.0-beta.28",
36
- "@webex/test-helper-chai": "3.0.0-beta.28",
37
- "@webex/test-helper-mocha": "3.0.0-beta.28",
38
- "@webex/test-helper-mock-webex": "3.0.0-beta.28",
39
- "@webex/test-helper-retry": "3.0.0-beta.28",
40
- "@webex/test-helper-test-users": "3.0.0-beta.28",
35
+ "@webex/plugin-meetings": "3.0.0-beta.280",
36
+ "@webex/test-helper-chai": "3.0.0-beta.280",
37
+ "@webex/test-helper-mocha": "3.0.0-beta.280",
38
+ "@webex/test-helper-mock-webex": "3.0.0-beta.280",
39
+ "@webex/test-helper-retry": "3.0.0-beta.280",
40
+ "@webex/test-helper-test-users": "3.0.0-beta.280",
41
41
  "chai": "^4.3.4",
42
42
  "chai-as-promised": "^7.1.1",
43
43
  "jsdom-global": "3.0.2",
44
44
  "sinon": "^9.2.4",
45
- "typed-emitter": "^2.1.0"
45
+ "typed-emitter": "^2.1.0",
46
+ "typescript": "^4.7.4"
46
47
  },
47
48
  "dependencies": {
48
- "@webex/common": "3.0.0-beta.28",
49
- "@webex/internal-media-core": "1.33.2",
50
- "@webex/internal-plugin-conversation": "3.0.0-beta.28",
51
- "@webex/internal-plugin-device": "3.0.0-beta.28",
52
- "@webex/internal-plugin-llm": "3.0.0-beta.28",
53
- "@webex/internal-plugin-mercury": "3.0.0-beta.28",
54
- "@webex/internal-plugin-metrics": "3.0.0-beta.28",
55
- "@webex/internal-plugin-support": "3.0.0-beta.28",
56
- "@webex/internal-plugin-user": "3.0.0-beta.28",
57
- "@webex/plugin-people": "3.0.0-beta.28",
58
- "@webex/plugin-rooms": "3.0.0-beta.28",
59
- "@webex/webex-core": "3.0.0-beta.28",
49
+ "@webex/common": "3.0.0-beta.280",
50
+ "@webex/internal-media-core": "2.0.6",
51
+ "@webex/internal-plugin-conversation": "3.0.0-beta.280",
52
+ "@webex/internal-plugin-device": "3.0.0-beta.280",
53
+ "@webex/internal-plugin-llm": "3.0.0-beta.280",
54
+ "@webex/internal-plugin-mercury": "3.0.0-beta.280",
55
+ "@webex/internal-plugin-metrics": "3.0.0-beta.280",
56
+ "@webex/internal-plugin-support": "3.0.0-beta.280",
57
+ "@webex/internal-plugin-user": "3.0.0-beta.280",
58
+ "@webex/media-helpers": "3.0.0-beta.280",
59
+ "@webex/plugin-people": "3.0.0-beta.280",
60
+ "@webex/plugin-rooms": "3.0.0-beta.280",
61
+ "@webex/webex-core": "3.0.0-beta.280",
60
62
  "ampersand-collection": "^2.0.2",
61
63
  "bowser": "^2.11.0",
62
64
  "btoa": "^1.2.1",
@@ -64,6 +66,7 @@
64
66
  "global": "^4.4.0",
65
67
  "ip-anonymize": "^0.1.0",
66
68
  "javascript-state-machine": "^3.1.0",
69
+ "jsonwebtoken": "^8.5.1",
67
70
  "lodash": "^4.17.21",
68
71
  "sdp-transform": "^2.12.0",
69
72
  "uuid": "^3.3.2",
@@ -0,0 +1,50 @@
1
+ import {ANNOTATION_POLICY} from './constants';
2
+
3
+ /**
4
+ * Type for an StrokeData Object
5
+ */
6
+ type StrokeData = {
7
+ deviceId: string;
8
+ toUserId: string;
9
+ requesterId: string;
10
+ content: string;
11
+ shareInstanceId: string;
12
+ encryptionKeyUrl: string;
13
+ version: string;
14
+ };
15
+
16
+ type RequestData = {
17
+ toUserId: string;
18
+ toDeviceUrl: string;
19
+ shareInstanceId: string;
20
+ };
21
+
22
+ type CommandRequestBody = {
23
+ actionType: string;
24
+ resourceType: string;
25
+ shareInstanceId: string;
26
+ receivers?: any[];
27
+ };
28
+ /**
29
+ * Type for an annotation Object include annotation version and privilege
30
+ */
31
+ type AnnotationInfo = {
32
+ version: string;
33
+ policy: ANNOTATION_POLICY;
34
+ };
35
+
36
+ interface IAnnotationChannel {
37
+ // === below is for presenter
38
+ acceptRequest: (approval) => undefined | Promise<void>;
39
+ declineRequest: (approval) => undefined | Promise<void>;
40
+ closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;
41
+ // === below is for attendee
42
+ approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;
43
+ cancelApproveAnnotation: (requestData: RequestData, approval) => undefined | Promise<void>;
44
+ sendStrokeData: (strokeData: StrokeData) => void;
45
+ // =====
46
+ approvalUrlUpdate: (approvalUrl: string) => void;
47
+ locusUrlUpdate: (locusUrl: string) => void;
48
+ }
49
+
50
+ export type {StrokeData, RequestData, CommandRequestBody, IAnnotationChannel, AnnotationInfo};
@@ -0,0 +1,36 @@
1
+ export const EVENT_TRIGGERS = {
2
+ ANNOTATION_STROKE_DATA: 'annotation:strokeData',
3
+ ANNOTATION_COMMAND: 'annotation:command',
4
+ };
5
+ export const ANNOTATION_RESOURCE_TYPE = 'AnnotationOnShare';
6
+ export const ANNOTATION_RELAY_TYPES = {
7
+ ANNOTATION_CLIENT: 'annotation.client',
8
+ };
9
+
10
+ export const ANNOTATION_STATUS = {
11
+ NO_ANNOTATION: 'NO_ANNOTATION',
12
+ RUNNING_ANNOTATION: 'RUNNING_ANNOTATION',
13
+ };
14
+
15
+ export enum ANNOTATION_POLICY {
16
+ ANYONE_CAN_ANNOTATE = 'AnyoneCanAnnotate',
17
+ APPROVAL = 'Approval',
18
+ ANNOTATION_NOT_ALLOWED = 'AnnotationNotAllowed',
19
+ }
20
+
21
+ export const ANNOTATION_REQUEST_TYPE = {
22
+ ANNOTATION_MESSAGE: 'annotation_message',
23
+ };
24
+
25
+ export const enum ANNOTATION_ACTION_TYPE {
26
+ REQUESTED = 'REQUESTED',
27
+ ACCEPTED = 'ACCEPTED',
28
+ DECLINED = 'DECLINED',
29
+ OFFERED = 'OFFERED',
30
+ CANCELED = 'CANCELED',
31
+ EXPIRED = 'EXPIRED',
32
+ REVOKED = 'REVOKED',
33
+ CLOSED = 'CLOSED',
34
+ }
35
+
36
+ export const ANNOTATION = 'annotation';