@webex/plugin-meetings 3.0.0 → 3.1.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 (252) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/config.js +2 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/constants.js +8 -4
  6. package/dist/constants.js.map +1 -1
  7. package/dist/index.js +86 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/interpretation/index.js +16 -2
  10. package/dist/interpretation/index.js.map +1 -1
  11. package/dist/interpretation/siLanguage.js +1 -1
  12. package/dist/locus-info/mediaSharesUtils.js +15 -1
  13. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  14. package/dist/locus-info/selfUtils.js +5 -0
  15. package/dist/locus-info/selfUtils.js.map +1 -1
  16. package/dist/media/MediaConnectionAwaiter.js +163 -0
  17. package/dist/media/MediaConnectionAwaiter.js.map +1 -0
  18. package/dist/media/index.js +4 -1
  19. package/dist/media/index.js.map +1 -1
  20. package/dist/media/properties.js +4 -24
  21. package/dist/media/properties.js.map +1 -1
  22. package/dist/meeting/index.js +893 -677
  23. package/dist/meeting/index.js.map +1 -1
  24. package/dist/meeting/muteState.js +37 -25
  25. package/dist/meeting/muteState.js.map +1 -1
  26. package/dist/meeting/request.js +32 -23
  27. package/dist/meeting/request.js.map +1 -1
  28. package/dist/meeting/util.js +1 -0
  29. package/dist/meeting/util.js.map +1 -1
  30. package/dist/meeting-info/util.js +304 -267
  31. package/dist/meeting-info/util.js.map +1 -1
  32. package/dist/meeting-info/utilv2.js +334 -295
  33. package/dist/meeting-info/utilv2.js.map +1 -1
  34. package/dist/meetings/index.js +20 -0
  35. package/dist/meetings/index.js.map +1 -1
  36. package/dist/multistream/mediaRequestManager.js +1 -1
  37. package/dist/multistream/mediaRequestManager.js.map +1 -1
  38. package/dist/multistream/remoteMediaGroup.js +16 -2
  39. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  40. package/dist/multistream/remoteMediaManager.js +179 -65
  41. package/dist/multistream/remoteMediaManager.js.map +1 -1
  42. package/dist/multistream/sendSlotManager.js +22 -0
  43. package/dist/multistream/sendSlotManager.js.map +1 -1
  44. package/dist/reachability/clusterReachability.js +29 -15
  45. package/dist/reachability/clusterReachability.js.map +1 -1
  46. package/dist/reachability/index.js +18 -2
  47. package/dist/reachability/index.js.map +1 -1
  48. package/dist/reachability/request.js +12 -10
  49. package/dist/reachability/request.js.map +1 -1
  50. package/dist/reachability/util.js +19 -0
  51. package/dist/reachability/util.js.map +1 -1
  52. package/dist/reconnection-manager/index.js +2 -1
  53. package/dist/reconnection-manager/index.js.map +1 -1
  54. package/dist/roap/index.js +15 -0
  55. package/dist/roap/index.js.map +1 -1
  56. package/dist/roap/request.js +3 -3
  57. package/dist/roap/request.js.map +1 -1
  58. package/dist/roap/turnDiscovery.js +307 -126
  59. package/dist/roap/turnDiscovery.js.map +1 -1
  60. package/dist/statsAnalyzer/index.js +53 -30
  61. package/dist/statsAnalyzer/index.js.map +1 -1
  62. package/dist/{config.d.ts → types/config.d.ts} +1 -0
  63. package/dist/{constants.d.ts → types/constants.d.ts} +5 -4
  64. package/dist/types/index.d.ts +19 -0
  65. package/dist/types/media/MediaConnectionAwaiter.d.ts +61 -0
  66. package/dist/{meeting → types/meeting}/index.d.ts +26 -7
  67. package/dist/{meeting → types/meeting}/muteState.d.ts +2 -8
  68. package/dist/{meeting → types/meeting}/request.d.ts +3 -0
  69. package/dist/{meeting-info → types/meeting-info}/index.d.ts +1 -1
  70. package/dist/{meeting-info → types/meeting-info}/meeting-info-v2.d.ts +1 -1
  71. package/dist/types/meeting-info/util.d.ts +49 -0
  72. package/dist/types/meeting-info/utilv2.d.ts +65 -0
  73. package/dist/{meetings → types/meetings}/index.d.ts +8 -0
  74. package/dist/{multistream → types/multistream}/mediaRequestManager.d.ts +2 -1
  75. package/dist/{multistream → types/multistream}/remoteMediaGroup.d.ts +2 -0
  76. package/dist/{multistream → types/multistream}/remoteMediaManager.d.ts +15 -0
  77. package/dist/{multistream → types/multistream}/sendSlotManager.d.ts +9 -1
  78. package/dist/{reachability → types/reachability}/clusterReachability.d.ts +1 -0
  79. package/dist/{reachability → types/reachability}/index.d.ts +4 -0
  80. package/dist/{reachability → types/reachability}/util.d.ts +7 -0
  81. package/dist/{roap → types/roap}/index.d.ts +10 -2
  82. package/dist/{roap → types/roap}/turnDiscovery.d.ts +64 -17
  83. package/dist/webinar/index.js +1 -1
  84. package/package.json +23 -23
  85. package/src/config.ts +1 -0
  86. package/src/constants.ts +7 -3
  87. package/src/index.ts +31 -0
  88. package/src/interpretation/index.ts +18 -1
  89. package/src/locus-info/mediaSharesUtils.ts +16 -0
  90. package/src/locus-info/selfUtils.ts +5 -0
  91. package/src/media/MediaConnectionAwaiter.ts +174 -0
  92. package/src/media/index.ts +3 -1
  93. package/src/media/properties.ts +6 -31
  94. package/src/meeting/index.ts +321 -106
  95. package/src/meeting/muteState.ts +34 -20
  96. package/src/meeting/request.ts +18 -2
  97. package/src/meeting/util.ts +1 -0
  98. package/src/meeting-info/util.ts +241 -233
  99. package/src/meeting-info/utilv2.ts +250 -243
  100. package/src/meetings/index.ts +18 -0
  101. package/src/multistream/mediaRequestManager.ts +4 -1
  102. package/src/multistream/remoteMediaGroup.ts +19 -0
  103. package/src/multistream/remoteMediaManager.ts +101 -16
  104. package/src/multistream/sendSlotManager.ts +28 -0
  105. package/src/reachability/clusterReachability.ts +20 -5
  106. package/src/reachability/index.ts +24 -1
  107. package/src/reachability/request.ts +15 -11
  108. package/src/reachability/util.ts +21 -0
  109. package/src/reconnection-manager/index.ts +1 -1
  110. package/src/roap/index.ts +25 -3
  111. package/src/roap/request.ts +3 -3
  112. package/src/roap/turnDiscovery.ts +244 -78
  113. package/src/statsAnalyzer/index.ts +63 -27
  114. package/test/integration/spec/journey.js +14 -14
  115. package/test/integration/spec/space-meeting.js +1 -1
  116. package/test/unit/spec/interpretation/index.ts +39 -3
  117. package/test/unit/spec/locus-info/index.js +28 -19
  118. package/test/unit/spec/locus-info/mediaSharesUtils.ts +9 -0
  119. package/test/unit/spec/locus-info/selfUtils.js +42 -12
  120. package/test/unit/spec/media/MediaConnectionAwaiter.ts +344 -0
  121. package/test/unit/spec/media/index.ts +89 -78
  122. package/test/unit/spec/media/properties.ts +16 -70
  123. package/test/unit/spec/meeting/index.js +638 -139
  124. package/test/unit/spec/meeting/muteState.js +219 -67
  125. package/test/unit/spec/meeting/request.js +21 -0
  126. package/test/unit/spec/meeting/utils.js +6 -1
  127. package/test/unit/spec/meeting-info/utilv2.js +6 -0
  128. package/test/unit/spec/meetings/index.js +40 -20
  129. package/test/unit/spec/multistream/mediaRequestManager.ts +20 -2
  130. package/test/unit/spec/multistream/remoteMediaGroup.ts +79 -1
  131. package/test/unit/spec/multistream/remoteMediaManager.ts +199 -1
  132. package/test/unit/spec/multistream/sendSlotManager.ts +50 -18
  133. package/test/unit/spec/reachability/clusterReachability.ts +86 -22
  134. package/test/unit/spec/reachability/index.ts +197 -60
  135. package/test/unit/spec/reachability/request.js +15 -7
  136. package/test/unit/spec/reachability/util.ts +32 -2
  137. package/test/unit/spec/reconnection-manager/index.js +28 -0
  138. package/test/unit/spec/roap/index.ts +61 -6
  139. package/test/unit/spec/roap/turnDiscovery.ts +298 -16
  140. package/test/unit/spec/stats-analyzer/index.js +179 -0
  141. package/dist/index.d.ts +0 -7
  142. package/dist/meeting-info/util.d.ts +0 -2
  143. package/dist/meeting-info/utilv2.d.ts +0 -2
  144. package/dist/member/member.types.d.ts +0 -11
  145. package/dist/member/member.types.js +0 -17
  146. package/dist/member/member.types.js.map +0 -1
  147. package/src/member/member.types.ts +0 -13
  148. /package/dist/{annotation → types/annotation}/annotation.types.d.ts +0 -0
  149. /package/dist/{annotation → types/annotation}/constants.d.ts +0 -0
  150. /package/dist/{annotation → types/annotation}/index.d.ts +0 -0
  151. /package/dist/{breakouts → types/breakouts}/breakout.d.ts +0 -0
  152. /package/dist/{breakouts → types/breakouts}/collection.d.ts +0 -0
  153. /package/dist/{breakouts → types/breakouts}/edit-lock-error.d.ts +0 -0
  154. /package/dist/{breakouts → types/breakouts}/events.d.ts +0 -0
  155. /package/dist/{breakouts → types/breakouts}/index.d.ts +0 -0
  156. /package/dist/{breakouts → types/breakouts}/request.d.ts +0 -0
  157. /package/dist/{breakouts → types/breakouts}/utils.d.ts +0 -0
  158. /package/dist/{common → types/common}/browser-detection.d.ts +0 -0
  159. /package/dist/{common → types/common}/collection.d.ts +0 -0
  160. /package/dist/{common → types/common}/config.d.ts +0 -0
  161. /package/dist/{common → types/common}/errors/captcha-error.d.ts +0 -0
  162. /package/dist/{common → types/common}/errors/intent-to-join.d.ts +0 -0
  163. /package/dist/{common → types/common}/errors/join-meeting.d.ts +0 -0
  164. /package/dist/{common → types/common}/errors/media.d.ts +0 -0
  165. /package/dist/{common → types/common}/errors/no-meeting-info.d.ts +0 -0
  166. /package/dist/{common → types/common}/errors/parameter.d.ts +0 -0
  167. /package/dist/{common → types/common}/errors/password-error.d.ts +0 -0
  168. /package/dist/{common → types/common}/errors/permission.d.ts +0 -0
  169. /package/dist/{common → types/common}/errors/reclaim-host-role-errors.d.ts +0 -0
  170. /package/dist/{common → types/common}/errors/reconnection-in-progress.d.ts +0 -0
  171. /package/dist/{common → types/common}/errors/reconnection.d.ts +0 -0
  172. /package/dist/{common → types/common}/errors/stats.d.ts +0 -0
  173. /package/dist/{common → types/common}/errors/webex-errors.d.ts +0 -0
  174. /package/dist/{common → types/common}/errors/webex-meetings-error.d.ts +0 -0
  175. /package/dist/{common → types/common}/events/events-scope.d.ts +0 -0
  176. /package/dist/{common → types/common}/events/events.d.ts +0 -0
  177. /package/dist/{common → types/common}/events/trigger-proxy.d.ts +0 -0
  178. /package/dist/{common → types/common}/events/util.d.ts +0 -0
  179. /package/dist/{common → types/common}/logs/logger-config.d.ts +0 -0
  180. /package/dist/{common → types/common}/logs/logger-proxy.d.ts +0 -0
  181. /package/dist/{common → types/common}/logs/request.d.ts +0 -0
  182. /package/dist/{common → types/common}/queue.d.ts +0 -0
  183. /package/dist/{controls-options-manager → types/controls-options-manager}/constants.d.ts +0 -0
  184. /package/dist/{controls-options-manager → types/controls-options-manager}/enums.d.ts +0 -0
  185. /package/dist/{controls-options-manager → types/controls-options-manager}/index.d.ts +0 -0
  186. /package/dist/{controls-options-manager → types/controls-options-manager}/types.d.ts +0 -0
  187. /package/dist/{controls-options-manager → types/controls-options-manager}/util.d.ts +0 -0
  188. /package/dist/{interceptors → types/interceptors}/index.d.ts +0 -0
  189. /package/dist/{interceptors → types/interceptors}/locusRetry.d.ts +0 -0
  190. /package/dist/{interpretation → types/interpretation}/collection.d.ts +0 -0
  191. /package/dist/{interpretation → types/interpretation}/index.d.ts +0 -0
  192. /package/dist/{interpretation → types/interpretation}/siLanguage.d.ts +0 -0
  193. /package/dist/{locus-info → types/locus-info}/controlsUtils.d.ts +0 -0
  194. /package/dist/{locus-info → types/locus-info}/embeddedAppsUtils.d.ts +0 -0
  195. /package/dist/{locus-info → types/locus-info}/fullState.d.ts +0 -0
  196. /package/dist/{locus-info → types/locus-info}/hostUtils.d.ts +0 -0
  197. /package/dist/{locus-info → types/locus-info}/index.d.ts +0 -0
  198. /package/dist/{locus-info → types/locus-info}/infoUtils.d.ts +0 -0
  199. /package/dist/{locus-info → types/locus-info}/mediaSharesUtils.d.ts +0 -0
  200. /package/dist/{locus-info → types/locus-info}/parser.d.ts +0 -0
  201. /package/dist/{locus-info → types/locus-info}/selfUtils.d.ts +0 -0
  202. /package/dist/{media → types/media}/index.d.ts +0 -0
  203. /package/dist/{media → types/media}/properties.d.ts +0 -0
  204. /package/dist/{media → types/media}/util.d.ts +0 -0
  205. /package/dist/{mediaQualityMetrics → types/mediaQualityMetrics}/config.d.ts +0 -0
  206. /package/dist/{meeting → types/meeting}/in-meeting-actions.d.ts +0 -0
  207. /package/dist/{meeting → types/meeting}/locusMediaRequest.d.ts +0 -0
  208. /package/dist/{meeting → types/meeting}/request.type.d.ts +0 -0
  209. /package/dist/{meeting → types/meeting}/state.d.ts +0 -0
  210. /package/dist/{meeting → types/meeting}/util.d.ts +0 -0
  211. /package/dist/{meeting → types/meeting}/voicea-meeting.d.ts +0 -0
  212. /package/dist/{meeting-info → types/meeting-info}/collection.d.ts +0 -0
  213. /package/dist/{meeting-info → types/meeting-info}/request.d.ts +0 -0
  214. /package/dist/{meetings → types/meetings}/collection.d.ts +0 -0
  215. /package/dist/{meetings → types/meetings}/meetings.types.d.ts +0 -0
  216. /package/dist/{meetings → types/meetings}/request.d.ts +0 -0
  217. /package/dist/{meetings → types/meetings}/util.d.ts +0 -0
  218. /package/dist/{member → types/member}/index.d.ts +0 -0
  219. /package/dist/{member → types/member}/types.d.ts +0 -0
  220. /package/dist/{member → types/member}/util.d.ts +0 -0
  221. /package/dist/{members → types/members}/collection.d.ts +0 -0
  222. /package/dist/{members → types/members}/index.d.ts +0 -0
  223. /package/dist/{members → types/members}/request.d.ts +0 -0
  224. /package/dist/{members → types/members}/types.d.ts +0 -0
  225. /package/dist/{members → types/members}/util.d.ts +0 -0
  226. /package/dist/{metrics → types/metrics}/constants.d.ts +0 -0
  227. /package/dist/{metrics → types/metrics}/index.d.ts +0 -0
  228. /package/dist/{multistream → types/multistream}/receiveSlot.d.ts +0 -0
  229. /package/dist/{multistream → types/multistream}/receiveSlotManager.d.ts +0 -0
  230. /package/dist/{multistream → types/multistream}/remoteMedia.d.ts +0 -0
  231. /package/dist/{networkQualityMonitor → types/networkQualityMonitor}/index.d.ts +0 -0
  232. /package/dist/{personal-meeting-room → types/personal-meeting-room}/index.d.ts +0 -0
  233. /package/dist/{personal-meeting-room → types/personal-meeting-room}/request.d.ts +0 -0
  234. /package/dist/{personal-meeting-room → types/personal-meeting-room}/util.d.ts +0 -0
  235. /package/dist/{reachability → types/reachability}/request.d.ts +0 -0
  236. /package/dist/{reactions → types/reactions}/constants.d.ts +0 -0
  237. /package/dist/{reactions → types/reactions}/reactions.d.ts +0 -0
  238. /package/dist/{reactions → types/reactions}/reactions.type.d.ts +0 -0
  239. /package/dist/{reconnection-manager → types/reconnection-manager}/index.d.ts +0 -0
  240. /package/dist/{recording-controller → types/recording-controller}/enums.d.ts +0 -0
  241. /package/dist/{recording-controller → types/recording-controller}/index.d.ts +0 -0
  242. /package/dist/{recording-controller → types/recording-controller}/util.d.ts +0 -0
  243. /package/dist/{roap → types/roap}/request.d.ts +0 -0
  244. /package/dist/{rtcMetrics → types/rtcMetrics}/constants.d.ts +0 -0
  245. /package/dist/{rtcMetrics → types/rtcMetrics}/index.d.ts +0 -0
  246. /package/dist/{statsAnalyzer → types/statsAnalyzer}/global.d.ts +0 -0
  247. /package/dist/{statsAnalyzer → types/statsAnalyzer}/index.d.ts +0 -0
  248. /package/dist/{statsAnalyzer → types/statsAnalyzer}/mqaUtil.d.ts +0 -0
  249. /package/dist/{transcription → types/transcription}/index.d.ts +0 -0
  250. /package/dist/{webinar → types/webinar}/collection.d.ts +0 -0
  251. /package/dist/{webinar → types/webinar}/index.d.ts +0 -0
  252. /package/test/unit/spec/locus-info/{lib/selfConstant.js → selfConstant.js} +0 -0
@@ -1,10 +1,12 @@
1
1
  /// <reference types="node" />
2
2
  import { StatelessWebexPlugin } from '@webex/webex-core';
3
3
  import { ClientEvent, ClientEventLeaveReason } from '@webex/internal-plugin-metrics';
4
+ import { ClientEvent as RawClientEvent } from '@webex/event-dictionary-ts';
5
+ import { MediaType } from '@webex/internal-media-core';
4
6
  import { LocalStream, LocalCameraStream, LocalDisplayStream, LocalSystemAudioStream, LocalMicrophoneStream } from '@webex/media-helpers';
5
7
  import { StatsAnalyzer } from '../statsAnalyzer';
6
8
  import NetworkQualityMonitor from '../networkQualityMonitor';
7
- import Roap from '../roap/index';
9
+ import Roap, { type TurnServerInfo, type TurnDiscoverySkipReason } from '../roap/index';
8
10
  import { type BundlePolicy } from '../media';
9
11
  import MediaProperties from '../media/properties';
10
12
  import ReconnectionManager from '../reconnection-manager';
@@ -434,8 +436,8 @@ export default class Meeting extends StatelessWebexPlugin {
434
436
  resourceUrl: string;
435
437
  selfId: string;
436
438
  state: any;
437
- localAudioStreamMuteStateHandler: (muted: boolean) => void;
438
- localVideoStreamMuteStateHandler: (muted: boolean) => void;
439
+ localAudioStreamMuteStateHandler: () => void;
440
+ localVideoStreamMuteStateHandler: () => void;
439
441
  localOutputTrackChangeHandler: () => void;
440
442
  roles: any[];
441
443
  environment: string;
@@ -443,7 +445,7 @@ export default class Meeting extends StatelessWebexPlugin {
443
445
  allowMediaInLobby: boolean;
444
446
  localShareInstanceId: string;
445
447
  remoteShareInstanceId: string;
446
- turnDiscoverySkippedReason: string;
448
+ turnDiscoverySkippedReason: TurnDiscoverySkipReason;
447
449
  turnServerUsed: boolean;
448
450
  areVoiceaEventsSetup: boolean;
449
451
  voiceaListenerCallbacks: object;
@@ -1326,6 +1328,14 @@ export default class Meeting extends StatelessWebexPlugin {
1326
1328
  * @returns {Promise<void>}
1327
1329
  */
1328
1330
  private handleWaitForMediaConnectionConnectedError;
1331
+ /**
1332
+ * Performs TURN discovery as a separate call to the Locus /media API
1333
+ *
1334
+ * @param {boolean} isRetry
1335
+ * @param {boolean} isForced
1336
+ * @returns {Promise}
1337
+ */
1338
+ private doTurnDiscovery;
1329
1339
  /**
1330
1340
  * Does TURN discovery, SDP offer/answer exhange, establishes ICE connection and DTLS handshake.
1331
1341
  *
@@ -1333,6 +1343,7 @@ export default class Meeting extends StatelessWebexPlugin {
1333
1343
  * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]
1334
1344
  * @param {BundlePolicy} [bundlePolicy]
1335
1345
  * @param {boolean} [isForced] - let isForced be true to do turn discovery regardless of reachability results
1346
+ * @param {TurnServerInfo} [turnServerInfo]
1336
1347
  * @returns {Promise<void>}
1337
1348
  */
1338
1349
  private establishMediaConnection;
@@ -1355,11 +1366,12 @@ export default class Meeting extends StatelessWebexPlugin {
1355
1366
  * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
1356
1367
  *
1357
1368
  * @param {AddMediaOptions} options
1369
+ * @param {TurnServerInfo} turnServerInfo - TURN server information (used only internally by the SDK)
1358
1370
  * @returns {Promise<void>}
1359
1371
  * @public
1360
1372
  * @memberof Meeting
1361
1373
  */
1362
- addMedia(options?: AddMediaOptions): Promise<void>;
1374
+ addMedia(options?: AddMediaOptions, turnServerInfo?: TurnServerInfo): Promise<void>;
1363
1375
  /**
1364
1376
  * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1365
1377
  * @returns {Boolean}
@@ -1681,9 +1693,9 @@ export default class Meeting extends StatelessWebexPlugin {
1681
1693
  private handleMediaLogging;
1682
1694
  /**
1683
1695
  *
1684
- * @returns {string} one of 'attendee','host','cohost', returns the user type of the current user
1696
+ * @returns {string} one of 'panelist', 'attendee', 'host', 'cohost', returns the user type of the current user
1685
1697
  */
1686
- getCurUserType(): "host" | "cohost" | "presenter" | "attendee";
1698
+ getCurUserType(): RawClientEvent['userType'] | null;
1687
1699
  /**
1688
1700
  * End the current meeting for all
1689
1701
  * @returns {Promise}
@@ -1749,6 +1761,13 @@ export default class Meeting extends StatelessWebexPlugin {
1749
1761
  * @returns {Promise<void>}
1750
1762
  */
1751
1763
  private updateTranscodedMediaConnection;
1764
+ /**
1765
+ * set sending named media group which the audio should send to
1766
+ * @param {MediaType} mediaType of the stream
1767
+ * @param {number} languageCode of the stream
1768
+ * @returns {void}
1769
+ */
1770
+ setSendNamedMediaGroup(mediaType: MediaType, languageCode?: number): void;
1752
1771
  /**
1753
1772
  * Publishes a stream.
1754
1773
  *
@@ -72,7 +72,7 @@ export declare class MuteState {
72
72
  * @param {Boolean} [mute] true for muting, false for unmuting request
73
73
  * @returns {void}
74
74
  */
75
- handleLocalStreamMuteStateChange(meeting?: object, mute?: boolean): void;
75
+ handleLocalStreamMuteStateChange(meeting?: any): void;
76
76
  /**
77
77
  * Applies the current mute state to the local stream (by enabling or disabling it accordingly)
78
78
  *
@@ -116,12 +116,6 @@ export declare class MuteState {
116
116
  * @returns {Promise}
117
117
  */
118
118
  private sendRemoteMuteRequestToServer;
119
- /** Sets the mute state of the local stream according to what server thinks is our state
120
- * @param {Object} meeting - the meeting object
121
- * @param {ServerMuteReason} serverMuteReason - reason why we're applying server mute to the local stream
122
- * @returns {void}
123
- */
124
- private applyServerMuteToLocalStream;
125
119
  /** Applies the current value for unmute allowed to the underlying stream
126
120
  *
127
121
  * @param {Meeting} meeting
@@ -147,7 +141,7 @@ export declare class MuteState {
147
141
  * @param {Object} [meeting] the meeting object
148
142
  * @returns {undefined}
149
143
  */
150
- handleServerLocalUnmuteRequired(meeting?: object): void;
144
+ handleServerLocalUnmuteRequired(meeting?: any): void;
151
145
  /**
152
146
  * Returns true if the user is locally or remotely muted.
153
147
  * It only checks the mute status, ignoring the fact whether audio/video is enabled.
@@ -38,6 +38,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
38
38
  * @param {String} options.locale,
39
39
  * @param {Array} options.deviceCapabilities
40
40
  * @param {boolean} options.liveAnnotationSupported
41
+ * @param {String} options.alias
41
42
  * @returns {Promise}
42
43
  */
43
44
  joinMeeting(options: {
@@ -57,11 +58,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
57
58
  meetingNumber: any;
58
59
  permissionToken: any;
59
60
  preferTranscoding: any;
61
+ reachability: any;
60
62
  breakoutsSupported: boolean;
61
63
  locale?: string;
62
64
  deviceCapabilities?: Array<string>;
63
65
  liveAnnotationSupported: boolean;
64
66
  ipVersion?: IP_VERSION;
67
+ alias?: string;
65
68
  }): Promise<any>;
66
69
  /**
67
70
  * Send a request to refresh the captcha
@@ -65,5 +65,5 @@ export default class MeetingInfo {
65
65
  }, installedOrgID?: any, locusId?: any, extraParams?: object, options?: {
66
66
  meetingId?: string;
67
67
  sendCAevents?: boolean;
68
- }): any;
68
+ }): Promise<any>;
69
69
  }
@@ -81,7 +81,7 @@ export default class MeetingInfoV2 {
81
81
  * @public
82
82
  * @memberof MeetingInfo
83
83
  */
84
- fetchInfoOptions(destination: string, type?: string): any;
84
+ fetchInfoOptions(destination: string, type?: string): Promise<any>;
85
85
  /**
86
86
  * Raises a MeetingInfoV2PolicyError for policy error codes
87
87
  * @param {any} err the error from the request
@@ -0,0 +1,49 @@
1
+ /// <reference types="node" />
2
+ import url from 'url';
3
+ /**
4
+ * @class MeetingInfoUtil
5
+ */
6
+ export default class MeetingInfoUtil {
7
+ static extractDestination(destination: any, type: any): any;
8
+ static getParsedUrl(link: any): false | url.UrlWithStringQuery;
9
+ /**
10
+ * Helper function to check if a string matches a known meeting link pattern
11
+ * @param {String} value string to parse and see if it matches a meeting link
12
+ * @returns {Boolean}
13
+ */
14
+ static isMeetingLink(value: string): any;
15
+ static isConversationUrl(value: any, webex: any): any;
16
+ static convertLinkToSip(value: any): string;
17
+ static isSipUri(sipString: any): RegExpExecArray;
18
+ static isPhoneNumber(phoneNumber: any): boolean;
19
+ static getHydraId(destination: any): {
20
+ room: boolean;
21
+ destination: any;
22
+ cluster: any;
23
+ people?: undefined;
24
+ } | {
25
+ people: boolean;
26
+ destination: any;
27
+ cluster: any;
28
+ room?: undefined;
29
+ } | {
30
+ room?: undefined;
31
+ destination?: undefined;
32
+ cluster?: undefined;
33
+ people?: undefined;
34
+ };
35
+ static getSipUriFromHydraPersonId(destination: any, webex: any): any;
36
+ static generateOptions(from: any): Promise<any>;
37
+ /**
38
+ * Helper function to build up a correct locus url depending on the value passed
39
+ * @param {String} type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]
40
+ * @param {Object} value ?? value.value
41
+ * @returns {Object} returns an object with {resource, method}
42
+ */
43
+ static getResourceUrl(type: string, value: any): {
44
+ uri: any;
45
+ resource: string;
46
+ method: string;
47
+ };
48
+ static getRequestParams(resourceOptions: any, type: any, value: any, api: any): any;
49
+ }
@@ -0,0 +1,65 @@
1
+ /// <reference types="node" />
2
+ import url from 'url';
3
+ /**
4
+ * @class MeetingInfoUtil
5
+ */
6
+ export default class MeetingInfoUtil {
7
+ static meetingInfoError: string;
8
+ static getParsedUrl(link: any): false | url.UrlWithStringQuery;
9
+ /**
10
+ * Helper function to check if a string matches a known meeting link pattern
11
+ * @param {String} value string to parse and see if it matches a meeting link
12
+ * @returns {Boolean}
13
+ */
14
+ static isMeetingLink(value: string): any;
15
+ static isConversationUrl(value: any, webex: any): any;
16
+ static isSipUri(sipString: any): RegExpExecArray;
17
+ static isPhoneNumber(phoneNumber: any): boolean;
18
+ static getHydraId(destination: any): {
19
+ room: boolean;
20
+ destination: any;
21
+ cluster: any;
22
+ people?: undefined;
23
+ } | {
24
+ people: boolean;
25
+ destination: any;
26
+ cluster: any;
27
+ room?: undefined;
28
+ } | {
29
+ room?: undefined;
30
+ destination?: undefined;
31
+ cluster?: undefined;
32
+ people?: undefined;
33
+ };
34
+ static getSipUriFromHydraPersonId(destination: any, webex: any): any;
35
+ static getDestinationType(from: any): Promise<any>;
36
+ /**
37
+ * Helper function to build up a correct locus url depending on the value passed
38
+ * @param {Object} options type and value to fetch meeting info
39
+ * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]
40
+ * @param {String} options.installedOrgID org ID of user's machine
41
+ * @param {Object} options.destination ?? value.value
42
+ * @returns {Object} returns an object with {resource, method}
43
+ */
44
+ static getRequestBody(options: {
45
+ type: string;
46
+ destination: object;
47
+ } | any): any;
48
+ /**
49
+ * Helper function to parse the webex site/host from a URI string.
50
+ * @param {String} uri string (e.g. '10019857020@convergedats.webex.com')
51
+ * @returns {String} the site/host part of the URI string (e.g. 'convergedats.webex.com')
52
+ */
53
+ static getWebexSite(uri: string): string;
54
+ /**
55
+ * Helper function to return the direct URI for fetching meeting info (to avoid a redirect).
56
+ * @param {Object} options type and value to fetch meeting info
57
+ * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]
58
+ * @param {Object} options.destination ?? value.value
59
+ * @returns {String} returns a URI string or null of there is no direct URI
60
+ */
61
+ static getDirectMeetingInfoURI(options: {
62
+ type: string;
63
+ destination: any;
64
+ }): string;
65
+ }
@@ -176,6 +176,14 @@ export default class Meetings extends WebexPlugin {
176
176
  * @returns {undefined}
177
177
  */
178
178
  private _toggleTcpReachability;
179
+ /**
180
+ * API to toggle TLS reachability, needs to be called before webex.meetings.register()
181
+ * @param {Boolean} newValue
182
+ * @private
183
+ * @memberof Meetings
184
+ * @returns {undefined}
185
+ */
186
+ private _toggleTlsReachability;
179
187
  /**
180
188
  * Explicitly sets up the meetings plugin by registering
181
189
  * the device, connecting to mercury, and listening for locus events.
@@ -1,4 +1,4 @@
1
- import { StreamRequest } from '@webex/internal-media-core';
1
+ import { StreamRequest, NamedMediaGroup } from '@webex/internal-media-core';
2
2
  import { ReceiveSlot } from './receiveSlot';
3
3
  export interface ActiveSpeakerPolicyInfo {
4
4
  policy: 'active-speaker';
@@ -6,6 +6,7 @@ export interface ActiveSpeakerPolicyInfo {
6
6
  crossPriorityDuplication: boolean;
7
7
  crossPolicyDuplication: boolean;
8
8
  preferLiveVideo: boolean;
9
+ namedMediaGroups?: NamedMediaGroup[];
9
10
  }
10
11
  export interface ReceiverSelectedPolicyInfo {
11
12
  policy: 'receiver-selected';
@@ -1,9 +1,11 @@
1
+ import { NamedMediaGroup } from '@webex/internal-media-core';
1
2
  import { RemoteMedia, RemoteVideoResolution } from './remoteMedia';
2
3
  import { MediaRequestManager } from './mediaRequestManager';
3
4
  import { CSI, ReceiveSlot } from './receiveSlot';
4
5
  type Options = {
5
6
  resolution?: RemoteVideoResolution;
6
7
  preferLiveVideo?: boolean;
8
+ namedMediaGroup?: NamedMediaGroup;
7
9
  };
8
10
  export declare class RemoteMediaGroup {
9
11
  private mediaRequestManager;
@@ -1,4 +1,5 @@
1
1
  import { EventMap } from 'typed-emitter';
2
+ import { MediaType, NamedMediaGroup } from '@webex/internal-media-core';
2
3
  import EventsScope from '../common/events/events-scope';
3
4
  import { RemoteMedia, RemoteVideoResolution } from './remoteMedia';
4
5
  import { CSI } from './receiveSlot';
@@ -39,6 +40,7 @@ export interface Configuration {
39
40
  [key: LayoutId]: VideoLayout;
40
41
  };
41
42
  };
43
+ namedMediaGroup?: NamedMediaGroup;
42
44
  }
43
45
  /**
44
46
  * Default configuration:
@@ -49,6 +51,7 @@ export interface Configuration {
49
51
  export declare const DefaultConfiguration: Configuration;
50
52
  export declare enum Event {
51
53
  AudioCreated = "AudioCreated",
54
+ InterpretationAudioCreated = "InterpretationAudioCreated",
52
55
  ScreenShareAudioCreated = "ScreenShareAudioCreated",
53
56
  VideoLayoutChanged = "VideoLayoutChanged"
54
57
  }
@@ -153,10 +156,22 @@ export declare class RemoteMediaManager extends EventsScope {
153
156
  remoteMedia: RemoteMedia;
154
157
  csi?: number;
155
158
  }[]): void;
159
+ /**
160
+ * Sets which named media group need receiving
161
+ * @param {MediaType} mediaType of the stream
162
+ * @param {number} languageCode of the stream. If the languageId is 0, the named media group request will be canceled,
163
+ * and only receive the main audio stream.
164
+ * @returns {void}
165
+ */
166
+ setReceiveNamedMediaGroup(mediaType: MediaType, languageId: number): Promise<void>;
156
167
  /**
157
168
  * Creates the audio slots
158
169
  */
159
170
  private createAudioMedia;
171
+ /**
172
+ * Creates the audio slots for named media
173
+ */
174
+ private createInterpretationAudioMedia;
160
175
  /**
161
176
  * Creates receive slots required for receiving screen share audio and video
162
177
  */
@@ -1,4 +1,4 @@
1
- import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection } from '@webex/internal-media-core';
1
+ import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup } from '@webex/internal-media-core';
2
2
  export default class SendSlotManager {
3
3
  private readonly slots;
4
4
  private readonly LoggerProxy;
@@ -17,6 +17,14 @@ export default class SendSlotManager {
17
17
  * @returns {SendSlot}
18
18
  */
19
19
  getSlot(mediaType: MediaType): SendSlot;
20
+ /**
21
+ * Allow users to specify 'namedMediaGroups' to indicate which named media group its audio should be sent to.
22
+ * @param {MediaType} mediaType MediaType of the sendSlot to which the audio stream needs to be send to the media group
23
+ * @param {[]}namedMediaGroups - Allow users to specify 'namedMediaGroups'.If the value of 'namedMediaGroups' is zero,
24
+ * named media group will be canceled and the audio stream will be sent to the floor.
25
+ * @returns {void}
26
+ */
27
+ setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: NamedMediaGroup[]): void;
20
28
  /**
21
29
  * This method publishes the given stream to the sendSlot for the given mediaType
22
30
  * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
@@ -15,6 +15,7 @@ export type ClusterReachabilityResult = {
15
15
  export declare class ClusterReachability {
16
16
  private numUdpUrls;
17
17
  private numTcpUrls;
18
+ private numXTlsUrls;
18
19
  private result;
19
20
  private pc?;
20
21
  private defer;
@@ -8,10 +8,14 @@ export type ReachabilityMetrics = {
8
8
  reachability_public_udp_failed: number;
9
9
  reachability_public_tcp_success: number;
10
10
  reachability_public_tcp_failed: number;
11
+ reachability_public_xtls_success: number;
12
+ reachability_public_xtls_failed: number;
11
13
  reachability_vmn_udp_success: number;
12
14
  reachability_vmn_udp_failed: number;
13
15
  reachability_vmn_tcp_success: number;
14
16
  reachability_vmn_tcp_failed: number;
17
+ reachability_vmn_xtls_success: number;
18
+ reachability_vmn_xtls_failed: number;
15
19
  };
16
20
  /**
17
21
  * This is the type that matches what backend expects us to send to them. It is a bit weird, because
@@ -6,3 +6,10 @@
6
6
  * @returns {string} url of a turn server
7
7
  */
8
8
  export declare function convertStunUrlToTurn(stunUrl: string, protocol: 'udp' | 'tcp'): string;
9
+ /**
10
+ * Converts a stun url to a turns url
11
+ *
12
+ * @param {string} stunUrl url of a stun server
13
+ * @returns {string} url of a turns server
14
+ */
15
+ export declare function convertStunUrlToTurnTls(stunUrl: string): string;
@@ -1,5 +1,7 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
+ import TurnDiscovery, { TurnDiscoveryResult } from './turnDiscovery';
2
3
  import Meeting from '../meeting';
4
+ export { type TurnDiscoveryResult, type TurnServerInfo, type TurnDiscoverySkipReason, } from './turnDiscovery';
3
5
  /**
4
6
  * Roap options
5
7
  * @typedef {Object} RoapOptions
@@ -26,7 +28,7 @@ export default class Roap extends StatelessWebexPlugin {
26
28
  options: any;
27
29
  roapHandler: any;
28
30
  roapRequest: any;
29
- turnDiscovery: any;
31
+ turnDiscovery: TurnDiscovery;
30
32
  /**
31
33
  *
32
34
  * @param {Object} attrs
@@ -74,5 +76,11 @@ export default class Roap extends StatelessWebexPlugin {
74
76
  * @param {Boolean} [isForced]
75
77
  * @returns {Promise}
76
78
  */
77
- doTurnDiscovery(meeting: Meeting, isReconnecting: boolean, isForced?: boolean): any;
79
+ doTurnDiscovery(meeting: Meeting, isReconnecting: boolean, isForced?: boolean): Promise<TurnDiscoveryResult>;
80
+ generateTurnDiscoveryRequestMessage(meeting: Meeting, isForced: boolean): Promise<{
81
+ roapMessage?: object;
82
+ turnDiscoverySkippedReason: string;
83
+ }>;
84
+ handleTurnDiscoveryHttpResponse(meeting: Meeting, httpResponse: object): Promise<TurnDiscoveryResult>;
85
+ abortTurnDiscovery(): void;
78
86
  }
@@ -1,5 +1,21 @@
1
+ import { Enum } from '../constants';
1
2
  import RoapRequest from './request';
2
3
  import Meeting from '../meeting';
4
+ declare const TurnDiscoverySkipReason: {
5
+ readonly missingHttpResponse: "missing http response";
6
+ readonly reachability: "reachability";
7
+ readonly alreadyInProgress: "already in progress";
8
+ };
9
+ export type TurnDiscoverySkipReason = Enum<typeof TurnDiscoverySkipReason> | string | undefined;
10
+ export type TurnServerInfo = {
11
+ url: string;
12
+ username: string;
13
+ password: string;
14
+ };
15
+ export type TurnDiscoveryResult = {
16
+ turnServerInfo?: TurnServerInfo;
17
+ turnDiscoverySkippedReason: TurnDiscoverySkipReason;
18
+ };
3
19
  /**
4
20
  * Handles the process of finding out TURN server information from Linus.
5
21
  * This is achieved by sending a TURN_DISCOVERY_REQUEST.
@@ -24,7 +40,8 @@ export default class TurnDiscovery {
24
40
  */
25
41
  private waitForTurnDiscoveryResponse;
26
42
  /**
27
- * handles TURN_DISCOVERY_RESPONSE roap message
43
+ * Handles TURN_DISCOVERY_RESPONSE roap message. Use it if the roap message comes over the websocket,
44
+ * otherwise use handleTurnDiscoveryHttpResponse() if it comes in the http response.
28
45
  *
29
46
  * @param {Object} roapMessage
30
47
  * @param {string} from string to indicate how we got the response (used just for logging)
@@ -34,13 +51,52 @@ export default class TurnDiscovery {
34
51
  */
35
52
  handleTurnDiscoveryResponse(roapMessage: any, from: string): void;
36
53
  /**
37
- * handles TURN_DISCOVERY_RESPONSE roap message that came in http response
54
+ * Generates TURN_DISCOVERY_REQUEST roap message. When this method returns a roapMessage, it means that a TURN discovery process has started.
55
+ * It needs be ended by calling handleTurnDiscoveryHttpResponse() once you get a response from the backend. If you don't get any response
56
+ * or want to abort, you need to call abort().
38
57
  *
39
- * @param {Object} roapMessage
40
- * @returns {Promise}
58
+ * @param {Meeting} meeting
59
+ * @param {boolean} isForced
60
+ * @returns {Object}
61
+ */
62
+ generateTurnDiscoveryRequestMessage(meeting: Meeting, isForced: boolean): Promise<{
63
+ roapMessage?: object;
64
+ turnDiscoverySkippedReason: TurnDiscoverySkipReason;
65
+ }>;
66
+ /**
67
+ * Handles any errors that occur during TURN discovery without re-throwing them.
68
+ *
69
+ * @param {Meeting} meeting
70
+ * @param {Error} error
71
+ * @returns {TurnDiscoveryResult}
72
+ */
73
+ private handleTurnDiscoveryFailure;
74
+ /**
75
+ * Handles TURN_DISCOVERY_RESPONSE roap message that came in http response. If the response is not valid,
76
+ * it returns an object with turnServerInfo set to undefined. In that case you need to call abort()
77
+ * to end the TURN discovery process.
78
+ *
79
+ * @param {Meeting} meeting
80
+ * @param {Object|undefined} httpResponse can be undefined to indicate that we didn't get the response
81
+ * @returns {Promise<TurnDiscoveryResult>}
41
82
  * @memberof Roap
42
83
  */
43
- private handleTurnDiscoveryResponseInHttpResponse;
84
+ handleTurnDiscoveryHttpResponse(meeting: Meeting, httpResponse?: object): Promise<TurnDiscoveryResult>;
85
+ /**
86
+ * Aborts current TURN discovery. This method needs to be called if you called generateTurnDiscoveryRequestMessage(),
87
+ * but then never got any response from the server.
88
+ * @returns {void}
89
+ */
90
+ abort(): void;
91
+ /**
92
+ * Parses the TURN_DISCOVERY_RESPONSE roap message out of the http response
93
+ * and returns it.
94
+ *
95
+ * @param {Meeting} meeting
96
+ * @param {any} httpResponse
97
+ * @returns {any}
98
+ */
99
+ private parseHttpTurnDiscoveryResponse;
44
100
  /**
45
101
  * sends the TURN_DISCOVERY_REQUEST roap request
46
102
  *
@@ -50,7 +106,7 @@ export default class TurnDiscovery {
50
106
  * @private
51
107
  * @memberof Roap
52
108
  */
53
- sendRoapTurnDiscoveryRequest(meeting: Meeting, isReconnecting: boolean): Promise<any>;
109
+ private sendRoapTurnDiscoveryRequest;
54
110
  /**
55
111
  * Sends the OK message that server expects to receive
56
112
  * after it sends us TURN_DISCOVERY_RESPONSE
@@ -94,15 +150,6 @@ export default class TurnDiscovery {
94
150
  * @param {Boolean} [isForced]
95
151
  * @returns {Promise}
96
152
  */
97
- doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean, isForced?: boolean): Promise<{
98
- turnServerInfo: any;
99
- turnDiscoverySkippedReason: string;
100
- } | {
101
- turnServerInfo: {
102
- url: string;
103
- username: string;
104
- password: string;
105
- };
106
- turnDiscoverySkippedReason: any;
107
- }>;
153
+ doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean, isForced?: boolean): Promise<TurnDiscoveryResult>;
108
154
  }
155
+ export {};
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
62
62
  updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
63
63
  this.set('canManageWebcast', canManageWebcast);
64
64
  },
65
- version: "3.0.0"
65
+ version: "3.1.0-next.2"
66
66
  });
67
67
  var _default = exports.default = Webinar;
68
68
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -28,7 +28,7 @@
28
28
  ]
29
29
  },
30
30
  "scripts": {
31
- "build": "yarn run -T tsc --declaration true --declarationDir ./dist",
31
+ "build": "yarn run -T tsc --declaration true --declarationDir ./dist/types",
32
32
  "build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps && yarn build",
33
33
  "deploy:npm": "yarn npm publish",
34
34
  "test:broken": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
@@ -43,13 +43,13 @@
43
43
  "@webex/eslint-config-legacy": "0.0.0",
44
44
  "@webex/jest-config-legacy": "0.0.0",
45
45
  "@webex/legacy-tools": "0.0.0",
46
- "@webex/plugin-meetings": "3.0.0",
47
- "@webex/plugin-rooms": "3.0.0",
48
- "@webex/test-helper-chai": "3.0.0",
49
- "@webex/test-helper-mocha": "3.0.0",
50
- "@webex/test-helper-mock-webex": "3.0.0",
51
- "@webex/test-helper-retry": "3.0.0",
52
- "@webex/test-helper-test-users": "3.0.0",
46
+ "@webex/plugin-meetings": "3.1.0-next.2",
47
+ "@webex/plugin-rooms": "3.0.0-next.16",
48
+ "@webex/test-helper-chai": "3.0.0-next.14",
49
+ "@webex/test-helper-mocha": "3.0.0-next.14",
50
+ "@webex/test-helper-mock-webex": "3.0.0-next.14",
51
+ "@webex/test-helper-retry": "3.0.0-next.14",
52
+ "@webex/test-helper-test-users": "3.0.0-next.14",
53
53
  "chai": "^4.3.4",
54
54
  "chai-as-promised": "^7.1.1",
55
55
  "eslint": "^8.24.0",
@@ -61,20 +61,20 @@
61
61
  "typescript": "^4.7.4"
62
62
  },
63
63
  "dependencies": {
64
- "@webex/common": "3.0.0",
65
- "@webex/internal-media-core": "2.2.9",
66
- "@webex/internal-plugin-conversation": "3.0.0",
67
- "@webex/internal-plugin-device": "3.0.0",
68
- "@webex/internal-plugin-llm": "3.0.0",
69
- "@webex/internal-plugin-mercury": "3.0.0",
70
- "@webex/internal-plugin-metrics": "3.0.0",
71
- "@webex/internal-plugin-support": "3.0.0",
72
- "@webex/internal-plugin-user": "3.0.0",
73
- "@webex/internal-plugin-voicea": "3.0.0",
74
- "@webex/media-helpers": "3.0.1",
75
- "@webex/plugin-people": "3.0.0",
76
- "@webex/plugin-rooms": "3.0.0",
77
- "@webex/webex-core": "3.0.0",
64
+ "@webex/common": "3.0.0-next.14",
65
+ "@webex/internal-media-core": "2.5.0",
66
+ "@webex/internal-plugin-conversation": "3.0.0-next.16",
67
+ "@webex/internal-plugin-device": "3.0.0-next.14",
68
+ "@webex/internal-plugin-llm": "3.0.0-next.16",
69
+ "@webex/internal-plugin-mercury": "3.0.0-next.16",
70
+ "@webex/internal-plugin-metrics": "3.0.0-next.14",
71
+ "@webex/internal-plugin-support": "3.0.0-next.16",
72
+ "@webex/internal-plugin-user": "3.0.0-next.14",
73
+ "@webex/internal-plugin-voicea": "3.1.0-next.2",
74
+ "@webex/media-helpers": "3.0.1-next.17",
75
+ "@webex/plugin-people": "3.0.0-next.16",
76
+ "@webex/plugin-rooms": "3.0.0-next.16",
77
+ "@webex/webex-core": "3.0.0-next.14",
78
78
  "ampersand-collection": "^2.0.2",
79
79
  "bowser": "^2.11.0",
80
80
  "btoa": "^1.2.1",
@@ -91,5 +91,5 @@
91
91
  "//": [
92
92
  "TODO: upgrade jwt-decode when moving to node 18"
93
93
  ],
94
- "version": "3.0.0"
94
+ "version": "3.1.0-next.2"
95
95
  }