@webex/plugin-meetings 3.6.0 → 3.7.0-next.2

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 (314) hide show
  1. package/README.md +2 -1
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/webinar-registration-error.js +50 -0
  5. package/dist/common/errors/webinar-registration-error.js.map +1 -0
  6. package/dist/config.js +4 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +31 -2
  9. package/dist/constants.js.map +1 -1
  10. package/dist/controls-options-manager/enums.js +1 -0
  11. package/dist/controls-options-manager/enums.js.map +1 -1
  12. package/dist/controls-options-manager/index.js +10 -3
  13. package/dist/controls-options-manager/index.js.map +1 -1
  14. package/dist/controls-options-manager/types.js.map +1 -1
  15. package/dist/controls-options-manager/util.js +12 -0
  16. package/dist/controls-options-manager/util.js.map +1 -1
  17. package/dist/index.js +7 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/interpretation/index.js +1 -1
  20. package/dist/interpretation/siLanguage.js +1 -1
  21. package/dist/locus-info/controlsUtils.js +28 -4
  22. package/dist/locus-info/controlsUtils.js.map +1 -1
  23. package/dist/locus-info/fullState.js +2 -1
  24. package/dist/locus-info/fullState.js.map +1 -1
  25. package/dist/locus-info/index.js +61 -3
  26. package/dist/locus-info/index.js.map +1 -1
  27. package/dist/locus-info/parser.js +5 -1
  28. package/dist/locus-info/parser.js.map +1 -1
  29. package/dist/meeting/in-meeting-actions.js +19 -1
  30. package/dist/meeting/in-meeting-actions.js.map +1 -1
  31. package/dist/meeting/index.js +762 -528
  32. package/dist/meeting/index.js.map +1 -1
  33. package/dist/meeting/locusMediaRequest.js +2 -6
  34. package/dist/meeting/locusMediaRequest.js.map +1 -1
  35. package/dist/meeting/muteState.js +5 -2
  36. package/dist/meeting/muteState.js.map +1 -1
  37. package/dist/meeting/request.js +21 -29
  38. package/dist/meeting/request.js.map +1 -1
  39. package/dist/meeting/util.js +98 -61
  40. package/dist/meeting/util.js.map +1 -1
  41. package/dist/meeting-info/meeting-info-v2.js +68 -17
  42. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  43. package/dist/meetings/index.js +25 -1
  44. package/dist/meetings/index.js.map +1 -1
  45. package/dist/members/index.js +3 -2
  46. package/dist/members/index.js.map +1 -1
  47. package/dist/members/util.js +9 -5
  48. package/dist/members/util.js.map +1 -1
  49. package/dist/metrics/constants.js +2 -1
  50. package/dist/metrics/constants.js.map +1 -1
  51. package/dist/multistream/remoteMedia.js +4 -0
  52. package/dist/multistream/remoteMedia.js.map +1 -1
  53. package/dist/reachability/clusterReachability.js +0 -4
  54. package/dist/reachability/clusterReachability.js.map +1 -1
  55. package/dist/reachability/index.js +433 -136
  56. package/dist/reachability/index.js.map +1 -1
  57. package/dist/{rtcMetrics/constants.js → reachability/reachability.types.js} +1 -5
  58. package/dist/reachability/reachability.types.js.map +1 -0
  59. package/dist/reachability/request.js +23 -9
  60. package/dist/reachability/request.js.map +1 -1
  61. package/dist/roap/index.js +5 -7
  62. package/dist/roap/index.js.map +1 -1
  63. package/dist/roap/request.js +45 -79
  64. package/dist/roap/request.js.map +1 -1
  65. package/dist/roap/turnDiscovery.js +3 -6
  66. package/dist/roap/turnDiscovery.js.map +1 -1
  67. package/dist/{common/errors/parameter.d.ts → types/common/errors/webinar-registration-error.d.ts} +4 -5
  68. package/dist/types/config.d.ts +3 -0
  69. package/dist/types/constants.d.ts +25 -0
  70. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  71. package/dist/types/controls-options-manager/index.d.ts +2 -1
  72. package/dist/types/controls-options-manager/types.d.ts +2 -0
  73. package/dist/types/index.d.ts +2 -1
  74. package/dist/types/locus-info/index.d.ts +9 -0
  75. package/dist/types/meeting/in-meeting-actions.d.ts +18 -0
  76. package/dist/types/meeting/index.d.ts +33 -3
  77. package/dist/types/meeting/locusMediaRequest.d.ts +2 -3
  78. package/dist/types/meeting/muteState.d.ts +2 -1
  79. package/dist/types/meeting/request.d.ts +2 -2
  80. package/dist/types/meeting/util.d.ts +2 -2
  81. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  82. package/dist/types/meetings/index.d.ts +10 -1
  83. package/dist/types/members/index.d.ts +2 -1
  84. package/dist/types/members/util.d.ts +3 -1
  85. package/dist/types/metrics/constants.d.ts +1 -0
  86. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  87. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  88. package/dist/types/reachability/index.d.ts +74 -35
  89. package/dist/types/reachability/reachability.types.d.ts +64 -0
  90. package/dist/types/reachability/request.d.ts +5 -1
  91. package/dist/types/roap/request.d.ts +1 -13
  92. package/dist/webinar/index.js +32 -19
  93. package/dist/webinar/index.js.map +1 -1
  94. package/package.json +22 -22
  95. package/src/common/errors/webinar-registration-error.ts +27 -0
  96. package/src/config.ts +3 -0
  97. package/src/constants.ts +31 -0
  98. package/src/controls-options-manager/enums.ts +1 -0
  99. package/src/controls-options-manager/index.ts +19 -2
  100. package/src/controls-options-manager/types.ts +2 -0
  101. package/src/controls-options-manager/util.ts +12 -0
  102. package/src/index.ts +2 -0
  103. package/src/locus-info/controlsUtils.ts +46 -2
  104. package/src/locus-info/fullState.ts +1 -0
  105. package/src/locus-info/index.ts +60 -0
  106. package/src/locus-info/parser.ts +8 -1
  107. package/src/meeting/in-meeting-actions.ts +37 -0
  108. package/src/meeting/index.ts +219 -22
  109. package/src/meeting/locusMediaRequest.ts +4 -8
  110. package/src/meeting/muteState.ts +6 -2
  111. package/src/meeting/request.ts +4 -11
  112. package/src/meeting/util.ts +31 -6
  113. package/src/meeting-info/meeting-info-v2.ts +51 -0
  114. package/src/meetings/index.ts +68 -40
  115. package/src/members/index.ts +4 -2
  116. package/src/members/util.ts +3 -1
  117. package/src/metrics/constants.ts +1 -0
  118. package/src/multistream/remoteMedia.ts +5 -0
  119. package/src/reachability/clusterReachability.ts +1 -14
  120. package/src/reachability/index.ts +285 -77
  121. package/src/reachability/reachability.types.ts +85 -0
  122. package/src/reachability/request.ts +55 -30
  123. package/src/roap/index.ts +4 -5
  124. package/src/roap/request.ts +32 -44
  125. package/src/roap/turnDiscovery.ts +2 -4
  126. package/src/webinar/index.ts +31 -17
  127. package/test/unit/spec/controls-options-manager/index.js +56 -32
  128. package/test/unit/spec/controls-options-manager/util.js +44 -0
  129. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  130. package/test/unit/spec/locus-info/index.js +88 -2
  131. package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
  132. package/test/unit/spec/meeting/index.js +329 -82
  133. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  134. package/test/unit/spec/meeting/muteState.js +8 -4
  135. package/test/unit/spec/meeting/request.js +3 -26
  136. package/test/unit/spec/meeting/utils.js +71 -14
  137. package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
  138. package/test/unit/spec/meetings/index.js +32 -1
  139. package/test/unit/spec/members/index.js +25 -2
  140. package/test/unit/spec/members/request.js +37 -3
  141. package/test/unit/spec/members/utils.js +15 -1
  142. package/test/unit/spec/multistream/remoteMedia.ts +16 -2
  143. package/test/unit/spec/reachability/index.ts +265 -1
  144. package/test/unit/spec/reachability/request.js +56 -15
  145. package/test/unit/spec/roap/index.ts +1 -1
  146. package/test/unit/spec/roap/request.ts +51 -109
  147. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  148. package/test/unit/spec/webinar/index.ts +82 -16
  149. package/dist/annotation/annotation.types.d.ts +0 -42
  150. package/dist/annotation/constants.d.ts +0 -31
  151. package/dist/annotation/index.d.ts +0 -117
  152. package/dist/breakouts/breakout.d.ts +0 -8
  153. package/dist/breakouts/collection.d.ts +0 -5
  154. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  155. package/dist/breakouts/events.d.ts +0 -8
  156. package/dist/breakouts/index.d.ts +0 -5
  157. package/dist/breakouts/request.d.ts +0 -22
  158. package/dist/breakouts/utils.d.ts +0 -15
  159. package/dist/common/browser-detection.d.ts +0 -9
  160. package/dist/common/collection.d.ts +0 -48
  161. package/dist/common/config.d.ts +0 -2
  162. package/dist/common/errors/captcha-error.d.ts +0 -15
  163. package/dist/common/errors/intent-to-join.d.ts +0 -16
  164. package/dist/common/errors/join-meeting.d.ts +0 -17
  165. package/dist/common/errors/media.d.ts +0 -15
  166. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  167. package/dist/common/errors/password-error.d.ts +0 -15
  168. package/dist/common/errors/permission.d.ts +0 -14
  169. package/dist/common/errors/reclaim-host-role-error.js +0 -149
  170. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  171. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  172. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  173. package/dist/common/errors/reconnection-in-progress.js +0 -33
  174. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  175. package/dist/common/errors/reconnection.d.ts +0 -15
  176. package/dist/common/errors/stats.d.ts +0 -15
  177. package/dist/common/errors/webex-errors.d.ts +0 -93
  178. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  179. package/dist/common/events/events-scope.d.ts +0 -17
  180. package/dist/common/events/events.d.ts +0 -12
  181. package/dist/common/events/trigger-proxy.d.ts +0 -2
  182. package/dist/common/events/util.d.ts +0 -2
  183. package/dist/common/logs/logger-config.d.ts +0 -2
  184. package/dist/common/logs/logger-proxy.d.ts +0 -2
  185. package/dist/common/logs/request.d.ts +0 -36
  186. package/dist/common/queue.d.ts +0 -34
  187. package/dist/config.d.ts +0 -72
  188. package/dist/constants.d.ts +0 -1088
  189. package/dist/controls-options-manager/constants.d.ts +0 -4
  190. package/dist/controls-options-manager/enums.d.ts +0 -15
  191. package/dist/controls-options-manager/index.d.ts +0 -136
  192. package/dist/controls-options-manager/types.d.ts +0 -43
  193. package/dist/controls-options-manager/util.d.ts +0 -1
  194. package/dist/index.d.ts +0 -7
  195. package/dist/interceptors/index.d.ts +0 -2
  196. package/dist/interceptors/locusRetry.d.ts +0 -27
  197. package/dist/interpretation/collection.d.ts +0 -5
  198. package/dist/interpretation/index.d.ts +0 -5
  199. package/dist/interpretation/siLanguage.d.ts +0 -5
  200. package/dist/locus-info/controlsUtils.d.ts +0 -2
  201. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  202. package/dist/locus-info/fullState.d.ts +0 -2
  203. package/dist/locus-info/hostUtils.d.ts +0 -2
  204. package/dist/locus-info/index.d.ts +0 -322
  205. package/dist/locus-info/infoUtils.d.ts +0 -2
  206. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  207. package/dist/locus-info/parser.d.ts +0 -272
  208. package/dist/locus-info/selfUtils.d.ts +0 -2
  209. package/dist/media/index.d.ts +0 -34
  210. package/dist/media/properties.d.ts +0 -93
  211. package/dist/media/util.d.ts +0 -2
  212. package/dist/mediaQualityMetrics/config.d.ts +0 -241
  213. package/dist/mediaQualityMetrics/config.js +0 -502
  214. package/dist/mediaQualityMetrics/config.js.map +0 -1
  215. package/dist/meeting/effectsState.js +0 -260
  216. package/dist/meeting/effectsState.js.map +0 -1
  217. package/dist/meeting/in-meeting-actions.d.ts +0 -167
  218. package/dist/meeting/index.d.ts +0 -1825
  219. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  220. package/dist/meeting/muteState.d.ts +0 -178
  221. package/dist/meeting/request.d.ts +0 -295
  222. package/dist/meeting/request.type.d.ts +0 -11
  223. package/dist/meeting/state.d.ts +0 -9
  224. package/dist/meeting/util.d.ts +0 -119
  225. package/dist/meeting/voicea-meeting.d.ts +0 -16
  226. package/dist/meeting-info/collection.d.ts +0 -20
  227. package/dist/meeting-info/index.d.ts +0 -69
  228. package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
  229. package/dist/meeting-info/request.d.ts +0 -22
  230. package/dist/meeting-info/util.d.ts +0 -2
  231. package/dist/meeting-info/utilv2.d.ts +0 -2
  232. package/dist/meetings/collection.d.ts +0 -40
  233. package/dist/meetings/index.d.ts +0 -390
  234. package/dist/meetings/meetings.types.d.ts +0 -4
  235. package/dist/meetings/request.d.ts +0 -27
  236. package/dist/meetings/util.d.ts +0 -18
  237. package/dist/member/index.d.ts +0 -160
  238. package/dist/member/member.types.js +0 -17
  239. package/dist/member/member.types.js.map +0 -1
  240. package/dist/member/types.d.ts +0 -32
  241. package/dist/member/util.d.ts +0 -2
  242. package/dist/members/collection.d.ts +0 -29
  243. package/dist/members/index.d.ts +0 -353
  244. package/dist/members/request.d.ts +0 -114
  245. package/dist/members/types.d.ts +0 -25
  246. package/dist/members/util.d.ts +0 -215
  247. package/dist/metrics/config.js +0 -276
  248. package/dist/metrics/config.js.map +0 -1
  249. package/dist/metrics/constants.d.ts +0 -70
  250. package/dist/metrics/index.d.ts +0 -45
  251. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  252. package/dist/multistream/receiveSlot.d.ts +0 -68
  253. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  254. package/dist/multistream/remoteMedia.d.ts +0 -72
  255. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  256. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  257. package/dist/multistream/sendSlotManager.d.ts +0 -69
  258. package/dist/networkQualityMonitor/index.d.ts +0 -70
  259. package/dist/networkQualityMonitor/index.js +0 -221
  260. package/dist/networkQualityMonitor/index.js.map +0 -1
  261. package/dist/peer-connection-manager/index.js +0 -671
  262. package/dist/peer-connection-manager/index.js.map +0 -1
  263. package/dist/peer-connection-manager/util.js +0 -109
  264. package/dist/peer-connection-manager/util.js.map +0 -1
  265. package/dist/personal-meeting-room/index.d.ts +0 -47
  266. package/dist/personal-meeting-room/request.d.ts +0 -14
  267. package/dist/personal-meeting-room/util.d.ts +0 -2
  268. package/dist/reachability/clusterReachability.d.ts +0 -109
  269. package/dist/reachability/index.d.ts +0 -105
  270. package/dist/reachability/request.d.ts +0 -39
  271. package/dist/reachability/util.d.ts +0 -8
  272. package/dist/reactions/constants.d.ts +0 -3
  273. package/dist/reactions/reactions.d.ts +0 -4
  274. package/dist/reactions/reactions.type.d.ts +0 -52
  275. package/dist/reconnection-manager/index.d.ts +0 -136
  276. package/dist/recording-controller/enums.d.ts +0 -7
  277. package/dist/recording-controller/index.d.ts +0 -207
  278. package/dist/recording-controller/util.d.ts +0 -14
  279. package/dist/roap/collection.js +0 -62
  280. package/dist/roap/collection.js.map +0 -1
  281. package/dist/roap/handler.js +0 -275
  282. package/dist/roap/handler.js.map +0 -1
  283. package/dist/roap/index.d.ts +0 -86
  284. package/dist/roap/request.d.ts +0 -39
  285. package/dist/roap/state.js +0 -126
  286. package/dist/roap/state.js.map +0 -1
  287. package/dist/roap/turnDiscovery.d.ts +0 -155
  288. package/dist/roap/util.js +0 -75
  289. package/dist/roap/util.js.map +0 -1
  290. package/dist/rtcMetrics/constants.d.ts +0 -4
  291. package/dist/rtcMetrics/constants.js.map +0 -1
  292. package/dist/rtcMetrics/index.d.ts +0 -61
  293. package/dist/rtcMetrics/index.js +0 -197
  294. package/dist/rtcMetrics/index.js.map +0 -1
  295. package/dist/statsAnalyzer/global.d.ts +0 -36
  296. package/dist/statsAnalyzer/global.js +0 -126
  297. package/dist/statsAnalyzer/global.js.map +0 -1
  298. package/dist/statsAnalyzer/index.d.ts +0 -217
  299. package/dist/statsAnalyzer/index.js +0 -1013
  300. package/dist/statsAnalyzer/index.js.map +0 -1
  301. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
  302. package/dist/statsAnalyzer/mqaUtil.js +0 -179
  303. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  304. package/dist/transcription/index.d.ts +0 -64
  305. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  306. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  307. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  308. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  309. package/dist/types/rtcMetrics/index.d.ts +0 -71
  310. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  311. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  312. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  313. package/dist/webinar/collection.d.ts +0 -16
  314. package/dist/webinar/index.d.ts +0 -5
@@ -61,6 +61,10 @@ interface IInMeetingActions {
61
61
  canUpdateShareControl?: boolean;
62
62
  canEnableViewTheParticipantsList?: boolean;
63
63
  canDisableViewTheParticipantsList?: boolean;
64
+ canEnableViewTheParticipantsListPanelist?: boolean;
65
+ canDisableViewTheParticipantsListPanelist?: boolean;
66
+ canEnableShowAttendeeCount?: boolean;
67
+ canDisableShowAttendeeCount?: boolean;
64
68
  canEnableRaiseHand?: boolean;
65
69
  canDisableRaiseHand?: boolean;
66
70
  canEnableVideo?: boolean;
@@ -80,6 +84,11 @@ interface IInMeetingActions {
80
84
  canShareWhiteBoard?: boolean;
81
85
  enforceVirtualBackground?: boolean;
82
86
  canPollingAndQA?: boolean;
87
+ canStartWebcast?: boolean;
88
+ canStopWebcast?: boolean;
89
+ canShowStageView?: boolean;
90
+ canEnableStageView?: boolean;
91
+ canDisableStageView?: boolean;
83
92
  }
84
93
  /**
85
94
  * @class InMeetingActions
@@ -141,6 +150,10 @@ export default class InMeetingActions implements IInMeetingActions {
141
150
  canUpdateShareControl: any;
142
151
  canEnableViewTheParticipantsList: any;
143
152
  canDisableViewTheParticipantsList: any;
153
+ canEnableViewTheParticipantsListPanelist: any;
154
+ canDisableViewTheParticipantsListPanelist: any;
155
+ canEnableShowAttendeeCount: any;
156
+ canDisableShowAttendeeCount: any;
144
157
  canEnableRaiseHand: any;
145
158
  canDisableRaiseHand: any;
146
159
  canEnableVideo: any;
@@ -160,6 +173,11 @@ export default class InMeetingActions implements IInMeetingActions {
160
173
  supportHDV: any;
161
174
  canShareWhiteBoard: any;
162
175
  canPollingAndQA: any;
176
+ canStartWebcast: any;
177
+ canStopWebcast: any;
178
+ canShowStageView: any;
179
+ canEnableStageView: any;
180
+ canDisableStageView: any;
163
181
  /**
164
182
  * Returns all meeting action options
165
183
  * @returns {Object}
@@ -460,6 +460,8 @@ export default class Meeting extends StatelessWebexPlugin {
460
460
  private iceCandidateErrors;
461
461
  private iceCandidatesCount;
462
462
  private rtcMetrics?;
463
+ private uploadLogsTimer?;
464
+ private logUploadIntervalIndex;
463
465
  /**
464
466
  * @param {Object} attrs
465
467
  * @param {Object} options
@@ -737,6 +739,15 @@ export default class Meeting extends StatelessWebexPlugin {
737
739
  * @memberof Meeting
738
740
  */
739
741
  private setUpLocusServicesListener;
742
+ /**
743
+ * Set up the locus info resources link listener
744
+ * update the locusInfo for webcast instance url
745
+ * @param {Object} payload - The event payload
746
+ * @returns {undefined}
747
+ * @private
748
+ * @memberof Meeting
749
+ */
750
+ private setUpLocusResourcesListener;
740
751
  /**
741
752
  * Set up the locus info meeting info listener
742
753
  * @returns {undefined}
@@ -952,6 +963,23 @@ export default class Meeting extends StatelessWebexPlugin {
952
963
  * @memberof Meeting
953
964
  */
954
965
  uploadLogs(options?: object): void;
966
+ /**
967
+ * sets the timer for periodic log upload
968
+ * @returns {void}
969
+ */
970
+ private setLogUploadTimer;
971
+ /**
972
+ * Starts a periodic upload of logs
973
+ *
974
+ * @returns {undefined}
975
+ */
976
+ startPeriodicLogUpload(): void;
977
+ /**
978
+ * Stops the periodic upload of logs
979
+ *
980
+ * @returns {undefined}
981
+ */
982
+ stopPeriodicLogUpload(): void;
955
983
  /**
956
984
  * Removes remote audio, video and share streams from class instance's mediaProperties
957
985
  * @returns {undefined}
@@ -1235,7 +1263,7 @@ export default class Meeting extends StatelessWebexPlugin {
1235
1263
  * @public
1236
1264
  * @memberof Meeting
1237
1265
  */
1238
- moveTo(resourceId: string): any;
1266
+ moveTo(resourceId: string): Promise<void>;
1239
1267
  /**
1240
1268
  * Moves the call from the specified resourceId, back to computer
1241
1269
  * @param {String} resourceId
@@ -1243,7 +1271,7 @@ export default class Meeting extends StatelessWebexPlugin {
1243
1271
  * @public
1244
1272
  * @memberof Meeting
1245
1273
  */
1246
- moveFrom(resourceId: string): any;
1274
+ moveFrom(resourceId: string): Promise<any>;
1247
1275
  /**
1248
1276
  * Handles ROAP_FAILURE event from the webrtc media connection
1249
1277
  *
@@ -1391,6 +1419,7 @@ export default class Meeting extends StatelessWebexPlugin {
1391
1419
  * @returns {Promise<void>}
1392
1420
  */
1393
1421
  private cleanUpBeforeRetryWithTurnServer;
1422
+ private cleanUpBeforeReconnection;
1394
1423
  /**
1395
1424
  * Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls
1396
1425
  * to Locus /media API (these are used for sending Roap messages and updating audio/video mute status).
@@ -1605,10 +1634,11 @@ export default class Meeting extends StatelessWebexPlugin {
1605
1634
  * @param {boolean} mutedEnabled
1606
1635
  * @param {boolean} disallowUnmuteEnabled
1607
1636
  * @param {boolean} muteOnEntryEnabled
1637
+ * @param {array} roles
1608
1638
  * @public
1609
1639
  * @memberof Meeting
1610
1640
  */
1611
- setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean): Promise<any>;
1641
+ setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean, roles: Array<string>): Promise<any>;
1612
1642
  /**
1613
1643
  * End the recording of this meeting
1614
1644
  * @returns {Promise}
@@ -1,5 +1,5 @@
1
1
  import { WebexPlugin } from '@webex/webex-core';
2
- import { IP_VERSION } from '../constants';
2
+ import { ClientMediaPreferences } from '../reachability/reachability.types';
3
3
  export type MediaRequestType = 'RoapMessage' | 'LocalMute';
4
4
  export type RequestResult = any;
5
5
  export type RoapRequest = {
@@ -8,9 +8,8 @@ export type RoapRequest = {
8
8
  mediaId: string;
9
9
  roapMessage: any;
10
10
  reachability: any;
11
+ clientMediaPreferences: ClientMediaPreferences;
11
12
  sequence?: any;
12
- joinCookie: any;
13
- ipVersion?: IP_VERSION;
14
13
  };
15
14
  export type LocalMuteRequest = {
16
15
  type: 'LocalMute';
@@ -139,9 +139,10 @@ export declare class MuteState {
139
139
  * @public
140
140
  * @memberof MuteState
141
141
  * @param {Object} [meeting] the meeting object
142
+ * @param {Boolean} [unmuteAllowed] whether the user is allowed to unmute self
142
143
  * @returns {undefined}
143
144
  */
144
- handleServerLocalUnmuteRequired(meeting?: any): void;
145
+ handleServerLocalUnmuteRequired(meeting: any, unmuteAllowed: boolean): void;
145
146
  /**
146
147
  * Returns true if the user is locally or remotely muted.
147
148
  * It only checks the mute status, ignoring the fact whether audio/video is enabled.
@@ -1,7 +1,7 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { IP_VERSION } from '../constants';
3
2
  import { SendReactionOptions, ToggleReactionsOptions } from './request.type';
4
3
  import { AnnotationInfo } from '../annotation/annotation.types';
4
+ import { ClientMediaPreferences } from '../reachability/reachability.types';
5
5
  /**
6
6
  * @class MeetingRequest
7
7
  */
@@ -63,8 +63,8 @@ export default class MeetingRequest extends StatelessWebexPlugin {
63
63
  locale?: string;
64
64
  deviceCapabilities?: Array<string>;
65
65
  liveAnnotationSupported: boolean;
66
- ipVersion?: IP_VERSION;
67
66
  alias?: string;
67
+ clientMediaPreferences: ClientMediaPreferences;
68
68
  }): Promise<any>;
69
69
  /**
70
70
  * Send a request to refresh the captcha
@@ -14,7 +14,7 @@ declare const MeetingUtil: {
14
14
  * @returns {IP_VERSION|undefined} ipver value to be passed to the backend APIs or undefined if we should not pass any value to the backend
15
15
  */
16
16
  getIpVersion(webex: any): IP_VERSION | undefined;
17
- joinMeeting: (meeting: any, options: any) => any;
17
+ joinMeeting: (meeting: any, options: any) => Promise<any>;
18
18
  cleanUp: (meeting: any) => any;
19
19
  disconnectPhoneAudio: (meeting: any, phoneUrl: any) => any;
20
20
  /**
@@ -30,7 +30,7 @@ declare const MeetingUtil: {
30
30
  isUserInIdleState: (locusInfo: any) => boolean;
31
31
  isUserInJoinedState: (locusInfo: any) => boolean;
32
32
  isMediaEstablished: (currentMediaStatus: any) => any;
33
- joinMeetingOptions: (meeting: any, options?: any) => any;
33
+ joinMeetingOptions: (meeting: any, options?: any) => Promise<any>;
34
34
  /**
35
35
  * Returns request options for leaving a meeting.
36
36
  * @param {any} meeting
@@ -64,6 +64,23 @@ export declare class MeetingInfoV2CaptchaError extends Error {
64
64
  */
65
65
  constructor(wbxAppApiErrorCode?: number, captchaInfo?: object, message?: string);
66
66
  }
67
+ /**
68
+ * Error preventing join because of a webinar registration error
69
+ */
70
+ export declare class MeetingInfoV2WebinarRegistrationError extends Error {
71
+ meetingInfo: any;
72
+ sdkMessage: any;
73
+ wbxAppApiCode: any;
74
+ body: any;
75
+ /**
76
+ *
77
+ * @constructor
78
+ * @param {Number} [wbxAppApiErrorCode]
79
+ * @param {Object} [meetingInfo]
80
+ * @param {String} [message]
81
+ */
82
+ constructor(wbxAppApiErrorCode?: number, meetingInfo?: object, message?: string);
83
+ }
67
84
  /**
68
85
  * @class MeetingInfo
69
86
  */
@@ -89,6 +106,12 @@ export default class MeetingInfoV2 {
89
106
  * @returns {void}
90
107
  */
91
108
  handlePolicyError: (err: any) => void;
109
+ /**
110
+ * Raises a handleWebinarRegistrationError for webinar registration error codes
111
+ * @param {any} err the error from the request
112
+ * @returns {void}
113
+ */
114
+ handleWebinarRegistrationError: (err: any) => void;
92
115
  /**
93
116
  * Creates adhoc space meetings for a space by fetching the conversation infomation
94
117
  * @param {String} conversationUrl conversationUrl to start adhoc meeting on
@@ -207,6 +207,15 @@ export default class Meetings extends WebexPlugin {
207
207
  * @returns {undefined}
208
208
  */
209
209
  private _toggleTlsReachability;
210
+ /**
211
+ * API to toggle backend ipv6 native support config, needs to be called before webex.meetings.register()
212
+ *
213
+ * @param {Boolean} newValue
214
+ * @private
215
+ * @memberof Meetings
216
+ * @returns {undefined}
217
+ */
218
+ private _toggleIpv6BackendNativeSupport;
210
219
  /**
211
220
  * Explicitly sets up the meetings plugin by registering
212
221
  * the device, connecting to mercury, and listening for locus events.
@@ -281,7 +290,7 @@ export default class Meetings extends WebexPlugin {
281
290
  * @public
282
291
  * @memberof Meetings
283
292
  */
284
- startReachability(trigger?: string): Promise<import("../reachability").ReachabilityResults>;
293
+ startReachability(trigger?: string): Promise<import("../reachability/reachability.types").ReachabilityResults>;
285
294
  /**
286
295
  * Get geoHint for info for meetings
287
296
  * @returns {Promise}
@@ -302,11 +302,12 @@ export default class Members extends StatelessWebexPlugin {
302
302
  /**
303
303
  * Lower all hands of members in a meeting
304
304
  * @param {String} requestingMemberId - id of the participant which requested the lower all hands
305
+ * @param {array} roles which should be lowered
305
306
  * @returns {Promise}
306
307
  * @public
307
308
  * @memberof Members
308
309
  */
309
- lowerAllHands(requestingMemberId: string): any;
310
+ lowerAllHands(requestingMemberId: string, roles: Array<string>): any;
310
311
  /**
311
312
  * Transfers the host to another member
312
313
  * @param {String} memberId
@@ -95,7 +95,8 @@ declare const MembersUtil: {
95
95
  * @returns {RoleAssignmentOptions}
96
96
  */
97
97
  generateRoleAssignmentMemberOptions: (memberId: string, roles: Array<ServerRoleShape>, locusUrl: string) => RoleAssignmentOptions;
98
- generateLowerAllHandsMemberOptions: (requestingParticipantId: any, locusUrl: any) => {
98
+ generateLowerAllHandsMemberOptions: (requestingParticipantId: any, locusUrl: any, roles: any) => {
99
+ roles: any;
99
100
  requestingParticipantId: any;
100
101
  locusUrl: any;
101
102
  };
@@ -145,6 +146,7 @@ declare const MembersUtil: {
145
146
  uri: string;
146
147
  body: {
147
148
  hand: {
149
+ roles: any;
148
150
  raised: boolean;
149
151
  };
150
152
  requestingParticipantId: any;
@@ -67,5 +67,6 @@ declare const BEHAVIORAL_METRICS: {
67
67
  ROAP_HTTP_RESPONSE_MISSING: string;
68
68
  TURN_DISCOVERY_REQUIRES_OK: string;
69
69
  REACHABILITY_COMPLETED: string;
70
+ WEBINAR_REGISTRATION_ERROR: string;
70
71
  };
71
72
  export { BEHAVIORAL_METRICS as default };
@@ -42,6 +42,7 @@ export declare class RemoteMedia extends EventsScope {
42
42
  * to restrict the requested resolution to this size
43
43
  * @param width width of the video element
44
44
  * @param height height of the video element
45
+ * @note width/height of 0 will be ignored
45
46
  */
46
47
  setSizeHint(width: any, height: any): void;
47
48
  /**
@@ -1,16 +1,7 @@
1
1
  import { ClusterNode } from './request';
2
2
  import EventsScope from '../common/events/events-scope';
3
3
  import { Enum } from '../constants';
4
- export type TransportResult = {
5
- result: 'reachable' | 'unreachable' | 'untested';
6
- latencyInMilliseconds?: number;
7
- clientMediaIPs?: string[];
8
- };
9
- export type ClusterReachabilityResult = {
10
- udp: TransportResult;
11
- tcp: TransportResult;
12
- xtls: TransportResult;
13
- };
4
+ import { ClusterReachabilityResult } from './reachability.types';
14
5
  export type ResultEventData = {
15
6
  protocol: 'udp' | 'tcp' | 'xtls';
16
7
  result: 'reachable' | 'unreachable' | 'untested';
@@ -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,32 @@ 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>;
101
102
  /**
102
103
  * Returns statistics about last reachability results. The returned value is an object
103
104
  * with a flat list of properties so that it can be easily sent with metrics
@@ -142,6 +143,13 @@ export default class Reachability extends EventsScope {
142
143
  * @memberof Reachability
143
144
  */
144
145
  private getUnreachableClusters;
146
+ /**
147
+ * Gets the number of reachable clusters from last run reachability check
148
+ * @returns {number} reachable clusters count
149
+ * @private
150
+ * @memberof Reachability
151
+ */
152
+ private getNumberOfReachableClusters;
145
153
  /**
146
154
  * Make a log of unreachable clusters.
147
155
  * @returns {undefined}
@@ -165,6 +173,7 @@ export default class Reachability extends EventsScope {
165
173
  private areAllResultsReady;
166
174
  /**
167
175
  * Resolves the promise returned by gatherReachability() method
176
+ * @param {boolean} checkMinRequiredClusters - if true, it will check if we have reached the minimum required clusters and do a fallback if needed
168
177
  * @returns {void}
169
178
  */
170
179
  private resolveReachabilityPromise;
@@ -214,10 +223,40 @@ export default class Reachability extends EventsScope {
214
223
  * @returns {void}
215
224
  */
216
225
  private resetResultCounters;
226
+ /**
227
+ * Clears the timer
228
+ *
229
+ * @param {string} timer name of the timer to clear
230
+ * @returns {void}
231
+ */
232
+ private clearTimer;
233
+ /**
234
+ * Aborts current checks that are in progress
235
+ *
236
+ * @returns {void}
237
+ */
238
+ private abortCurrentChecks;
217
239
  /**
218
240
  * Performs reachability checks for all clusters
219
241
  * @param {ClusterList} clusterList
220
242
  * @returns {Promise<void>} promise that's resolved as soon as the checks are started
221
243
  */
222
244
  private performReachabilityChecks;
245
+ /**
246
+ * Returns the clientMediaPreferences object that needs to be sent to the backend
247
+ * when joining a meeting
248
+ *
249
+ * @param {boolean} isMultistream
250
+ * @param {IP_VERSION} ipver
251
+ * @returns {Object}
252
+ */
253
+ getClientMediaPreferences(isMultistream: boolean, ipver?: IP_VERSION): Promise<ClientMediaPreferences>;
254
+ /**
255
+ * Returns the reachability report that needs to be attached to the ROAP messages
256
+ * that we send to the backend.
257
+ * It may return undefined, if reachability is not needed to be attached to ROAP messages (that's the case for v1 or Orpheus API)
258
+ *
259
+ * @returns {Promise<ReachabilityReportV0>} object that needs to be attached to Roap messages
260
+ */
261
+ getReachabilityReportToAttachToRoap(): Promise<ReachabilityReportV0 | undefined>;
223
262
  }
@@ -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,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;