@webex/plugin-meetings 3.8.0-web-workers-keepalive.1 → 3.8.1-next.1

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 (168) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +70 -6
  3. package/dist/breakouts/index.js.map +1 -1
  4. package/dist/common/errors/webex-errors.js +12 -2
  5. package/dist/common/errors/webex-errors.js.map +1 -1
  6. package/dist/config.js +4 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +22 -123
  9. package/dist/constants.js.map +1 -1
  10. package/dist/controls-options-manager/enums.js +2 -0
  11. package/dist/controls-options-manager/enums.js.map +1 -1
  12. package/dist/controls-options-manager/types.js.map +1 -1
  13. package/dist/controls-options-manager/util.js +52 -0
  14. package/dist/controls-options-manager/util.js.map +1 -1
  15. package/dist/interpretation/index.js +1 -1
  16. package/dist/interpretation/siLanguage.js +1 -1
  17. package/dist/locus-info/controlsUtils.js +30 -10
  18. package/dist/locus-info/controlsUtils.js.map +1 -1
  19. package/dist/locus-info/index.js +83 -12
  20. package/dist/locus-info/index.js.map +1 -1
  21. package/dist/locus-info/selfUtils.js +432 -418
  22. package/dist/locus-info/selfUtils.js.map +1 -1
  23. package/dist/media/index.js +17 -17
  24. package/dist/media/index.js.map +1 -1
  25. package/dist/media/properties.js +94 -6
  26. package/dist/media/properties.js.map +1 -1
  27. package/dist/meeting/brbState.js +9 -2
  28. package/dist/meeting/brbState.js.map +1 -1
  29. package/dist/meeting/in-meeting-actions.js +17 -1
  30. package/dist/meeting/in-meeting-actions.js.map +1 -1
  31. package/dist/meeting/index.js +568 -328
  32. package/dist/meeting/index.js.map +1 -1
  33. package/dist/meeting/locusMediaRequest.js +0 -17
  34. package/dist/meeting/locusMediaRequest.js.map +1 -1
  35. package/dist/meeting/muteState.js +4 -4
  36. package/dist/meeting/muteState.js.map +1 -1
  37. package/dist/meeting/request.js +30 -0
  38. package/dist/meeting/request.js.map +1 -1
  39. package/dist/meeting/request.type.js.map +1 -1
  40. package/dist/meeting/util.js +9 -1
  41. package/dist/meeting/util.js.map +1 -1
  42. package/dist/meeting-info/meeting-info-v2.js +19 -13
  43. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  44. package/dist/meeting-info/utilv2.js +5 -1
  45. package/dist/meeting-info/utilv2.js.map +1 -1
  46. package/dist/meetings/index.js +76 -0
  47. package/dist/meetings/index.js.map +1 -1
  48. package/dist/meetings/util.js +14 -0
  49. package/dist/meetings/util.js.map +1 -1
  50. package/dist/member/index.js +45 -9
  51. package/dist/member/index.js.map +1 -1
  52. package/dist/member/types.js +3 -0
  53. package/dist/member/types.js.map +1 -1
  54. package/dist/member/util.js +335 -356
  55. package/dist/member/util.js.map +1 -1
  56. package/dist/members/collection.js.map +1 -1
  57. package/dist/members/index.js +137 -29
  58. package/dist/members/index.js.map +1 -1
  59. package/dist/members/request.js +38 -0
  60. package/dist/members/request.js.map +1 -1
  61. package/dist/members/util.js +36 -1
  62. package/dist/members/util.js.map +1 -1
  63. package/dist/metrics/constants.js +1 -0
  64. package/dist/metrics/constants.js.map +1 -1
  65. package/dist/reachability/clusterReachability.js +23 -31
  66. package/dist/reachability/clusterReachability.js.map +1 -1
  67. package/dist/reachability/index.js +42 -2
  68. package/dist/reachability/index.js.map +1 -1
  69. package/dist/reconnection-manager/index.js +2 -2
  70. package/dist/reconnection-manager/index.js.map +1 -1
  71. package/dist/roap/index.js.map +1 -1
  72. package/dist/roap/turnDiscovery.js +45 -27
  73. package/dist/roap/turnDiscovery.js.map +1 -1
  74. package/dist/roap/types.js +17 -0
  75. package/dist/roap/types.js.map +1 -0
  76. package/dist/types/common/errors/webex-errors.d.ts +7 -1
  77. package/dist/types/config.d.ts +2 -0
  78. package/dist/types/constants.d.ts +15 -85
  79. package/dist/types/controls-options-manager/enums.d.ts +3 -1
  80. package/dist/types/controls-options-manager/types.d.ts +7 -1
  81. package/dist/types/locus-info/index.d.ts +3 -3
  82. package/dist/types/locus-info/selfUtils.d.ts +216 -1
  83. package/dist/types/media/properties.d.ts +15 -0
  84. package/dist/types/meeting/in-meeting-actions.d.ts +16 -0
  85. package/dist/types/meeting/index.d.ts +35 -1
  86. package/dist/types/meeting/muteState.d.ts +0 -1
  87. package/dist/types/meeting/request.d.ts +12 -1
  88. package/dist/types/meeting/request.type.d.ts +6 -0
  89. package/dist/types/meeting/util.d.ts +3 -1
  90. package/dist/types/meeting-info/meeting-info-v2.d.ts +2 -1
  91. package/dist/types/meetings/index.d.ts +28 -0
  92. package/dist/types/member/index.d.ts +20 -6
  93. package/dist/types/member/types.d.ts +73 -14
  94. package/dist/types/member/util.d.ts +156 -1
  95. package/dist/types/members/collection.d.ts +6 -5
  96. package/dist/types/members/index.d.ts +32 -43
  97. package/dist/types/members/request.d.ts +26 -0
  98. package/dist/types/members/util.d.ts +27 -0
  99. package/dist/types/metrics/constants.d.ts +1 -0
  100. package/dist/types/reachability/clusterReachability.d.ts +2 -6
  101. package/dist/types/reachability/index.d.ts +8 -0
  102. package/dist/types/roap/index.d.ts +3 -2
  103. package/dist/types/roap/turnDiscovery.d.ts +5 -17
  104. package/dist/types/roap/types.d.ts +16 -0
  105. package/dist/webinar/index.js +1 -1
  106. package/package.json +24 -23
  107. package/src/breakouts/index.ts +69 -0
  108. package/src/common/errors/webex-errors.ts +8 -1
  109. package/src/config.ts +2 -0
  110. package/src/constants.ts +23 -90
  111. package/src/controls-options-manager/enums.ts +2 -0
  112. package/src/controls-options-manager/types.ts +11 -1
  113. package/src/controls-options-manager/util.ts +62 -0
  114. package/src/locus-info/controlsUtils.ts +48 -12
  115. package/src/locus-info/index.ts +88 -13
  116. package/src/locus-info/selfUtils.ts +496 -442
  117. package/src/media/index.ts +23 -21
  118. package/src/media/properties.ts +96 -0
  119. package/src/meeting/brbState.ts +11 -2
  120. package/src/meeting/in-meeting-actions.ts +32 -0
  121. package/src/meeting/index.ts +356 -87
  122. package/src/meeting/locusMediaRequest.ts +0 -18
  123. package/src/meeting/muteState.ts +4 -4
  124. package/src/meeting/request.ts +36 -1
  125. package/src/meeting/request.type.ts +7 -0
  126. package/src/meeting/util.ts +9 -1
  127. package/src/meeting-info/meeting-info-v2.ts +7 -2
  128. package/src/meeting-info/utilv2.ts +5 -0
  129. package/src/meetings/index.ts +76 -0
  130. package/src/meetings/util.ts +18 -0
  131. package/src/member/index.ts +57 -22
  132. package/src/member/types.ts +82 -16
  133. package/src/member/util.ts +357 -353
  134. package/src/members/collection.ts +4 -3
  135. package/src/members/index.ts +137 -18
  136. package/src/members/request.ts +44 -0
  137. package/src/members/util.ts +43 -1
  138. package/src/metrics/constants.ts +1 -0
  139. package/src/reachability/clusterReachability.ts +26 -25
  140. package/src/reachability/index.ts +55 -1
  141. package/src/reconnection-manager/index.ts +2 -2
  142. package/src/roap/index.ts +3 -7
  143. package/src/roap/turnDiscovery.ts +34 -39
  144. package/src/roap/types.ts +23 -0
  145. package/test/unit/spec/breakouts/index.ts +167 -95
  146. package/test/unit/spec/controls-options-manager/util.js +120 -0
  147. package/test/unit/spec/locus-info/controlsUtils.js +131 -9
  148. package/test/unit/spec/locus-info/index.js +195 -73
  149. package/test/unit/spec/locus-info/selfUtils.js +98 -24
  150. package/test/unit/spec/media/index.ts +150 -18
  151. package/test/unit/spec/media/properties.ts +130 -0
  152. package/test/unit/spec/meeting/brbState.ts +40 -2
  153. package/test/unit/spec/meeting/in-meeting-actions.ts +19 -4
  154. package/test/unit/spec/meeting/index.js +553 -36
  155. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -30
  156. package/test/unit/spec/meeting/muteState.js +73 -2
  157. package/test/unit/spec/meeting/request.js +32 -1
  158. package/test/unit/spec/meeting/utils.js +79 -33
  159. package/test/unit/spec/meeting-info/meetinginfov2.js +41 -0
  160. package/test/unit/spec/meeting-info/utilv2.js +19 -0
  161. package/test/unit/spec/meetings/index.js +68 -1
  162. package/test/unit/spec/members/index.js +304 -78
  163. package/test/unit/spec/members/request.js +68 -22
  164. package/test/unit/spec/members/utils.js +75 -0
  165. package/test/unit/spec/reachability/clusterReachability.ts +41 -55
  166. package/test/unit/spec/reachability/index.ts +89 -0
  167. package/test/unit/spec/reconnection-manager/index.js +4 -4
  168. package/test/unit/spec/roap/turnDiscovery.ts +110 -28
@@ -10,7 +10,9 @@ declare enum Control {
10
10
  reactions = "reactions",
11
11
  shareControl = "shareControl",
12
12
  video = "video",
13
- viewTheParticipantList = "viewTheParticipantList"
13
+ viewTheParticipantList = "viewTheParticipantList",
14
+ annotation = "annotation",
15
+ rdc = "rdc"
14
16
  }
15
17
  export { Control, Setting };
16
18
  export default Setting;
@@ -32,7 +32,13 @@ export interface ViewTheParticipantListProperties {
32
32
  panelistEnabled?: boolean;
33
33
  attendeeCount?: boolean;
34
34
  }
35
- export type Properties = AudioProperties | RaiseHandProperties | ReactionsProperties | ShareControlProperties | VideoProperties | ViewTheParticipantListProperties;
35
+ export interface AnnotationProperties {
36
+ enabled?: boolean;
37
+ }
38
+ export interface RemoteDesktopControlProperties {
39
+ enabled?: boolean;
40
+ }
41
+ export type Properties = AudioProperties | RaiseHandProperties | ReactionsProperties | ShareControlProperties | VideoProperties | ViewTheParticipantListProperties | AnnotationProperties | RemoteDesktopControlProperties;
36
42
  export interface ControlConfig<Props = Properties> {
37
43
  /**
38
44
  * The scope of the control within this object.
@@ -37,6 +37,7 @@ export default class LocusInfo extends EventsScope {
37
37
  services: any;
38
38
  resources: any;
39
39
  mainSessionLocusCache: any;
40
+ self: any;
40
41
  /**
41
42
  * Constructor
42
43
  * @param {function} updateMeeting callback to update the meeting object from an object
@@ -249,13 +250,12 @@ export default class LocusInfo extends EventsScope {
249
250
  updateReplace(replace: object): void;
250
251
  /**
251
252
  * handles when the locus.self is updated
252
- * @param {Object} self the locus.mediaShares property
253
- * @param {Array} participants the locus.participants property
253
+ * @param {Object} self the new locus.self
254
254
  * @returns {undefined}
255
255
  * @memberof LocusInfo
256
256
  * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self
257
257
  */
258
- updateSelf(self: any, participants: Array<any>): void;
258
+ updateSelf(self: any): void;
259
259
  /**
260
260
  * handles when the locus.url is updated
261
261
  * @param {String} url
@@ -1,2 +1,217 @@
1
- declare const SelfUtils: any;
1
+ declare const SelfUtils: {
2
+ /**
3
+ * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id
4
+ * @param {Object} self
5
+ * @param {String} deviceId
6
+ * @param {Array} participants
7
+ * @returns {undefined}
8
+ */
9
+ parse: (self: any, deviceId: string, participants: Array<any>) => {
10
+ remoteVideoMuted: any;
11
+ remoteMuted: any;
12
+ unmuteAllowed: boolean;
13
+ localAudioUnmuteRequested: boolean;
14
+ localAudioUnmuteRequestedTimeStamp: number;
15
+ localAudioUnmuteRequired: boolean;
16
+ lastModified: any;
17
+ modifiedBy: any;
18
+ guest: any;
19
+ moderator: any;
20
+ mediaStatus: {
21
+ audio: any;
22
+ video: any;
23
+ slides: any;
24
+ };
25
+ state: any;
26
+ joinedWith: any;
27
+ pairedWith: any;
28
+ pstnDevices: any;
29
+ currentMediaStatus: {
30
+ audio: any;
31
+ video: any;
32
+ share: any;
33
+ };
34
+ creator: any;
35
+ selfId: any;
36
+ selfIdentity: any;
37
+ selfUrl: any;
38
+ removed: any;
39
+ roles: any;
40
+ isUserUnadmitted: boolean;
41
+ layout: any;
42
+ canNotViewTheParticipantList: boolean;
43
+ isSharingBlocked: boolean;
44
+ breakoutSessions: any;
45
+ breakout: any;
46
+ interpretation: any;
47
+ brb: any;
48
+ };
49
+ getBreakoutSessions: (self: any) => any;
50
+ getBreakout: (self: any) => any;
51
+ getInterpretation: (self: any) => any;
52
+ getBrb: (self: any) => any;
53
+ getLayout: (self: any) => any;
54
+ getRoles: (self: any) => any;
55
+ canNotViewTheParticipantList: (self: any) => boolean;
56
+ isSharingBlocked: (self: any) => boolean;
57
+ getSelves: (oldParsedSelf: any, newSelf: any, deviceId: any, participants: Array<any>) => {
58
+ previous: any;
59
+ current: {
60
+ remoteVideoMuted: any;
61
+ remoteMuted: any;
62
+ unmuteAllowed: boolean;
63
+ localAudioUnmuteRequested: boolean;
64
+ localAudioUnmuteRequestedTimeStamp: number;
65
+ localAudioUnmuteRequired: boolean;
66
+ lastModified: any;
67
+ modifiedBy: any;
68
+ guest: any;
69
+ moderator: any;
70
+ mediaStatus: {
71
+ audio: any;
72
+ video: any;
73
+ slides: any;
74
+ };
75
+ state: any;
76
+ joinedWith: any;
77
+ pairedWith: any;
78
+ pstnDevices: any;
79
+ currentMediaStatus: {
80
+ audio: any;
81
+ video: any;
82
+ share: any;
83
+ };
84
+ creator: any;
85
+ selfId: any;
86
+ selfIdentity: any;
87
+ selfUrl: any;
88
+ removed: any;
89
+ roles: any;
90
+ isUserUnadmitted: boolean;
91
+ layout: any;
92
+ canNotViewTheParticipantList: boolean;
93
+ isSharingBlocked: boolean;
94
+ breakoutSessions: any;
95
+ breakout: any;
96
+ interpretation: any;
97
+ brb: any;
98
+ };
99
+ updates: any;
100
+ };
101
+ /**
102
+ * Checks if user has joined the meeting
103
+ * @param {Object} self
104
+ * @returns {boolean} isJoined
105
+ */
106
+ isJoined: (self: any) => boolean;
107
+ /**
108
+ * Validate if the Meeting Layout Controls Layout has changed.
109
+ *
110
+ * @param {Self} previous - Previous self state
111
+ * @param {Self} current - Current self state [per event]
112
+ * @returns {boolean} - If the Meeting Layout Controls Layout has changed.
113
+ */
114
+ layoutChanged: (previous: any, current: any) => boolean;
115
+ breakoutsChanged: (previous: any, current: any) => boolean;
116
+ interpretationChanged: (previous: any, current: any) => boolean;
117
+ brbChanged: (previous: any, current: any) => boolean;
118
+ isMediaInactive: (previous: any, current: any) => boolean;
119
+ getLastModified: (self: any) => any;
120
+ getModifiedBy: (self: any) => any;
121
+ /**
122
+ * get the id from the self object
123
+ * @param {Object} self
124
+ * @returns {String}
125
+ */
126
+ getSelfIdentity: (self: any) => any;
127
+ /**
128
+ * get the "remote video mute" property from the self object
129
+ * @param {Object} self
130
+ * @returns {Boolean}
131
+ */
132
+ getRemoteVideoMuted: (self: any) => any;
133
+ /**
134
+ * get the "remote mute" property from the self object
135
+ * @param {Object} self
136
+ * @returns {Boolean}
137
+ */
138
+ getRemoteMuted: (self: any) => any;
139
+ getLocalAudioUnmuteRequested: (self: any) => boolean;
140
+ getLocalAudioUnmuteRequestedTimeStamp: (self: any) => number;
141
+ getUnmuteAllowed: (self: any) => boolean;
142
+ getLocalAudioUnmuteRequired: (self: any) => boolean;
143
+ getStatus: (status: any) => {
144
+ audio: any;
145
+ video: any;
146
+ slides: any;
147
+ };
148
+ /**
149
+ * @param {Object} oldSelf
150
+ * @param {Object} changedSelf
151
+ * @returns {Boolean}
152
+ */
153
+ wasMediaInactiveOrReleased: (oldSelf: any, changedSelf: any) => boolean;
154
+ /**
155
+ * @param {String | undefined} state meeting state
156
+ * @param {any} joinedWith device that user has joined with
157
+ * @param {any} pairedWith device that user is paired with
158
+ * @returns {Boolean | undefined} true if user is in lobby, false if not, undefined if it cannot be determined
159
+ */
160
+ isLocusUserUnadmitted: (state?: string, joinedWith?: any, pairedWith?: any) => boolean;
161
+ /**
162
+ * @param {String | undefined} state meeting state
163
+ * @param {any} joinedWith device that user has joined with
164
+ * @param {any} pairedWith device that user is paired with
165
+ * @returns {Boolean}
166
+ */
167
+ isLocusUserAdmitted: (state?: string, joinedWith?: any, pairedWith?: any) => boolean;
168
+ /**
169
+ * @param {Object} oldSelf
170
+ * @param {Object} changedSelf
171
+ * @returns {Boolean} true if user has just been placed in the lobby
172
+ * @throws {Error} when self is undefined
173
+ */
174
+ hasUserEnteredLobby: (oldSelf: any, changedSelf: any) => boolean;
175
+ moderatorChanged: (oldSelf: any, changedSelf: any) => boolean;
176
+ /**
177
+ * determine whether the roles of self is changed or not
178
+ * @param {Object} oldSelf
179
+ * @param {Object} changedSelf
180
+ * @returns {Boolean}
181
+ */
182
+ isRolesChanged: (oldSelf: any, changedSelf: any) => boolean;
183
+ /**
184
+ * @param {Object} oldSelf
185
+ * @param {Object} changedSelf
186
+ * @returns {Boolean}
187
+ * @throws {Error} if changed self was undefined
188
+ */
189
+ isDeviceObserving: (oldSelf: any, changedSelf: any) => boolean;
190
+ /**
191
+ * @param {Object} oldSelf
192
+ * @param {Object} changedSelf
193
+ * @returns {Boolean} true if the user has just been admitted from lobby into the meeting
194
+ * @throws {Error} if changed self was undefined
195
+ */
196
+ hasUserBeenAdmitted: (oldSelf: any, changedSelf: any) => boolean;
197
+ videoMutedByOthersChanged: (oldSelf: any, changedSelf: any) => boolean;
198
+ mutedByOthersChanged: (oldSelf: any, changedSelf: any) => boolean;
199
+ localAudioUnmuteRequestedByServer: (oldSelf: any, changedSelf: any) => boolean;
200
+ localAudioUnmuteRequiredByServer: (oldSelf: any, changedSelf: any) => boolean;
201
+ /**
202
+ * extract the sipUrl from the partner
203
+ * @param {Object} partner
204
+ * @param {Object} info
205
+ * @returns {Object}
206
+ */
207
+ getSipUrl: (partner: any, type: any, sipUri: any) => {
208
+ sipUri: any;
209
+ };
210
+ getMediaStatus: (mediaSessions?: any[]) => {
211
+ audio: any;
212
+ video: any;
213
+ share: any;
214
+ };
215
+ getReplacedBreakoutMoveId: (self: any, deviceId: string) => any;
216
+ };
2
217
  export default SelfUtils;
@@ -1,4 +1,5 @@
1
1
  import { LocalCameraStream, LocalMicrophoneStream, LocalDisplayStream, LocalSystemAudioStream, RemoteStream } from '@webex/media-helpers';
2
+ import { ClientEvent } from '@webex/internal-plugin-metrics';
2
3
  export type MediaDirection = {
3
4
  sendAudio: boolean;
4
5
  sendVideo: boolean;
@@ -7,6 +8,7 @@ export type MediaDirection = {
7
8
  receiveVideo: boolean;
8
9
  receiveShare: boolean;
9
10
  };
11
+ export type IPVersion = ClientEvent['payload']['ipVersion'];
10
12
  /**
11
13
  * @class MediaProperties
12
14
  */
@@ -94,6 +96,18 @@ export default class MediaProperties {
94
96
  * @returns {Object}
95
97
  */
96
98
  private getTransportInfo;
99
+ /**
100
+ * Checks if the given IP address is IPv6
101
+ * @param {string} ip address to check
102
+ * @returns {boolean} true if the address is IPv6, false otherwise
103
+ */
104
+ private isIPv6;
105
+ /** Finds out if we connected using IPv4 or IPv6
106
+ * @param {RTCPeerConnection} webrtcMediaConnection
107
+ * @param {Array<any>} allStatsReports array of RTC stats reports
108
+ * @returns {string} IPVersion
109
+ */
110
+ private getConnectionIpVersion;
97
111
  /**
98
112
  * Returns the type of a connection that has been established
99
113
  * It should be 'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'
@@ -111,6 +125,7 @@ export default class MediaProperties {
111
125
  */
112
126
  getCurrentConnectionInfo(): Promise<{
113
127
  connectionType: string;
128
+ ipVersion?: IPVersion;
114
129
  selectedCandidatePairChanges: number;
115
130
  numTransports: number;
116
131
  }>;
@@ -77,6 +77,8 @@ interface IInMeetingActions {
77
77
  canShareDesktop?: boolean;
78
78
  canShareContent?: boolean;
79
79
  canTransferFile?: boolean;
80
+ canRealtimeCloseCaption?: boolean;
81
+ canRealtimeCloseCaptionManual?: boolean;
80
82
  canChat?: boolean;
81
83
  canDoVideo?: boolean;
82
84
  canAnnotate?: boolean;
@@ -95,6 +97,12 @@ interface IInMeetingActions {
95
97
  isPracticeSessionOff?: boolean;
96
98
  canStartPracticeSession?: boolean;
97
99
  canStopPracticeSession?: boolean;
100
+ requiresPostMeetingDataConsentPrompt?: boolean;
101
+ canEnableAnnotation?: boolean;
102
+ canDisableAnnotation?: boolean;
103
+ canEnableRemoteDesktopControl?: boolean;
104
+ canDisableRemoteDesktopControl?: boolean;
105
+ canMoveToLobby?: boolean;
98
106
  }
99
107
  /**
100
108
  * @class InMeetingActions
@@ -172,6 +180,8 @@ export default class InMeetingActions implements IInMeetingActions {
172
180
  canShareDesktop: any;
173
181
  canShareContent: any;
174
182
  canTransferFile: any;
183
+ canRealtimeCloseCaption: any;
184
+ canRealtimeCloseCaptionManual: any;
175
185
  canChat: any;
176
186
  canDoVideo: any;
177
187
  canAnnotate: any;
@@ -190,6 +200,12 @@ export default class InMeetingActions implements IInMeetingActions {
190
200
  isPracticeSessionOff: any;
191
201
  canStartPracticeSession: any;
192
202
  canStopPracticeSession: any;
203
+ requiresPostMeetingDataConsentPrompt: any;
204
+ canEnableAnnotation: any;
205
+ canDisableAnnotation: any;
206
+ canEnableRemoteDesktopControl: any;
207
+ canDisableRemoteDesktopControl: any;
208
+ canMoveToLobby: any;
193
209
  /**
194
210
  * Returns all meeting action options
195
211
  * @returns {Object}
@@ -4,7 +4,8 @@ import { ClientEvent, ClientEventLeaveReason } from '@webex/internal-plugin-metr
4
4
  import { ClientEvent as RawClientEvent } from '@webex/event-dictionary-ts';
5
5
  import { MediaType, StatsAnalyzer, NetworkQualityMonitor } from '@webex/internal-media-core';
6
6
  import { LocalStream, LocalCameraStream, LocalDisplayStream, LocalSystemAudioStream, LocalMicrophoneStream } from '@webex/media-helpers';
7
- import Roap, { type TurnServerInfo, type TurnDiscoverySkipReason } from '../roap/index';
7
+ import Roap, { type TurnDiscoverySkipReason } from '../roap/index';
8
+ import { type TurnServerInfo } from '../roap/types';
8
9
  import { type BundlePolicy } from '../media';
9
10
  import MediaProperties from '../media/properties';
10
11
  import ReconnectionManager from '../reconnection-manager';
@@ -449,6 +450,12 @@ export default class Meeting extends StatelessWebexPlugin {
449
450
  allowMediaInLobby: boolean;
450
451
  localShareInstanceId: string;
451
452
  remoteShareInstanceId: string;
453
+ shareCAEventSentStatus: {
454
+ transmitStart: boolean;
455
+ transmitStop: boolean;
456
+ receiveStart: boolean;
457
+ receiveStop: boolean;
458
+ };
452
459
  turnDiscoverySkippedReason: TurnDiscoverySkipReason;
453
460
  turnServerUsed: boolean;
454
461
  areVoiceaEventsSetup: boolean;
@@ -468,6 +475,7 @@ export default class Meeting extends StatelessWebexPlugin {
468
475
  private rtcMetrics?;
469
476
  private uploadLogsTimer?;
470
477
  private logUploadIntervalIndex;
478
+ private mediaServerIp;
471
479
  /**
472
480
  * @param {Object} attrs
473
481
  * @param {Object} options
@@ -872,6 +880,17 @@ export default class Meeting extends StatelessWebexPlugin {
872
880
  cancelPhoneInvite(invitee: {
873
881
  phoneNumber: string;
874
882
  }): any;
883
+ /**
884
+ * Cancel an SIP call invitation made during a meeting
885
+ * @param {Object} invitee
886
+ * @param {String} invitee.memberId
887
+ * @returns {Promise} see #members.cancelSIPInvite
888
+ * @public
889
+ * @memberof Meeting
890
+ */
891
+ cancelSIPInvite(invitee: {
892
+ memberId: string;
893
+ }): any;
875
894
  /**
876
895
  * Admit the guest(s) to the call once they are waiting.
877
896
  * If the host/cohost is in a breakout session, the locus url
@@ -1881,6 +1900,15 @@ export default class Meeting extends StatelessWebexPlugin {
1881
1900
  * @memberof Meeting
1882
1901
  */
1883
1902
  toggleReactions(enable: boolean): Promise<any>;
1903
+ /**
1904
+ * Method to set post meeting data consent.
1905
+ *
1906
+ * @param {boolean} accept - whether consent accepted or declined
1907
+ * @returns {Promise}
1908
+ * @public
1909
+ * @memberof Meeting
1910
+ */
1911
+ setPostMeetingDataConsent(accept: boolean): Promise<any>;
1884
1912
  /**
1885
1913
  * Throws if we don't have a media connection created
1886
1914
  *
@@ -1959,5 +1987,11 @@ export default class Meeting extends StatelessWebexPlugin {
1959
1987
  * @returns {Promise<void>}
1960
1988
  */
1961
1989
  checkAndRefreshPermissionToken(threshold: number, reason: string): Promise<void>;
1990
+ /**
1991
+ * Gets the media reachability metrics
1992
+ *
1993
+ * @returns {Promise<MediaReachabilityMetrics>}
1994
+ */
1995
+ private getMediaReachabilityMetricFields;
1962
1996
  }
1963
1997
  export {};
@@ -69,7 +69,6 @@ export declare class MuteState {
69
69
  * @public
70
70
  * @memberof MuteState
71
71
  * @param {Object} [meeting] the meeting object
72
- * @param {Boolean} [mute] true for muting, false for unmuting request
73
72
  * @returns {void}
74
73
  */
75
74
  handleLocalStreamMuteStateChange(meeting?: any): void;
@@ -1,5 +1,5 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { SendReactionOptions, BrbOptions, ToggleReactionsOptions } from './request.type';
2
+ import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions } from './request.type';
3
3
  import { AnnotationInfo } from '../annotation/annotation.types';
4
4
  import { ClientMediaPreferences } from '../reachability/reachability.types';
5
5
  /**
@@ -303,4 +303,15 @@ export default class MeetingRequest extends StatelessWebexPlugin {
303
303
  * @returns {Promise}
304
304
  */
305
305
  setBrb({ enabled, locusUrl, deviceUrl, selfId }: BrbOptions): Promise<any>;
306
+ /**
307
+ * Sends a request to set post meeting data consent.
308
+ *
309
+ * @param {Object} options - The options for post meeting data consent request.
310
+ * @param {boolean} options.consent - Whether accepted or declined.
311
+ * @param {string} options.locusUrl - The URL of the locus.
312
+ * @param {string} options.deviceUrl - The URL of the device.
313
+ * @param {string} options.selfId - The ID of the participant.
314
+ * @returns {Promise}
315
+ */
316
+ setPostMeetingDataConsent({ postMeetingDataConsent, locusUrl, deviceUrl, selfId, }: PostMeetingDataConsentOptions): Promise<any>;
306
317
  }
@@ -15,3 +15,9 @@ export type BrbOptions = {
15
15
  deviceUrl: string;
16
16
  selfId: string;
17
17
  };
18
+ export type PostMeetingDataConsentOptions = {
19
+ postMeetingDataConsent: boolean;
20
+ locusUrl: string;
21
+ deviceUrl: string;
22
+ selfId: string;
23
+ };
@@ -80,8 +80,10 @@ declare const MeetingUtil: {
80
80
  waitingForOthersToJoin: (displayHints: any) => any;
81
81
  canSendReactions: (originalValue: any, displayHints: any) => any;
82
82
  canUserRenameSelfAndObserved: (displayHints: any) => any;
83
+ requiresPostMeetingDataConsentPrompt: (displayHints: any) => any;
83
84
  canUserRenameOthers: (displayHints: any) => any;
84
- canShareWhiteBoard: (displayHints: any) => any;
85
+ canShareWhiteBoard: (displayHints: any, policies?: {}) => boolean;
86
+ canMoveToLobby: (displayHints: any) => any;
85
87
  /**
86
88
  * Adds the current locus sequence information to a request body
87
89
  * @param {Object} meeting The meeting object
@@ -238,6 +238,7 @@ export default class MeetingInfoV2 {
238
238
  * @param {Object} extraParams
239
239
  * @param {Object} options
240
240
  * @param {String} registrationId
241
+ * @param {String} fullSiteUrl
241
242
  * @returns {Promise} returns a meeting info object
242
243
  * @public
243
244
  * @memberof MeetingInfo
@@ -248,5 +249,5 @@ export default class MeetingInfoV2 {
248
249
  }, installedOrgID?: any, locusId?: any, extraParams?: object, options?: {
249
250
  meetingId?: string;
250
251
  sendCAevents?: boolean;
251
- }, registrationId?: string): Promise<any>;
252
+ }, registrationId?: string, fullSiteUrl?: string): Promise<any>;
252
253
  }
@@ -227,6 +227,34 @@ export default class Meetings extends WebexPlugin {
227
227
  * @returns {undefined}
228
228
  */
229
229
  private _toggleIpv6BackendNativeSupport;
230
+ /**
231
+ * API to toggle usage of audio main DTX, needs to be called before webex.meetings.register()
232
+ *
233
+ * @param {Boolean} newValue
234
+ * @private
235
+ * @memberof Meetings
236
+ * @returns {undefined}
237
+ */
238
+ private _toggleDisableAudioMainDtx;
239
+ /**
240
+ * API to toggle usage of audio twcc support
241
+ *
242
+ * @param {Boolean} newValue
243
+ * @private
244
+ * @memberof Meetings
245
+ * @returns {undefined}
246
+ */
247
+ private _toggleEnableAudioTwccForMultistream;
248
+ /**
249
+ * API to toggle stopping ICE Candidates Gathering after first relay candidate,
250
+ * needs to be called before webex.meetings.joinWithMedia()
251
+ *
252
+ * @param {Boolean} newValue
253
+ * @private
254
+ * @memberof Meetings
255
+ * @returns {undefined}
256
+ */
257
+ private _toggleStopIceGatheringAfterFirstRelayCandidate;
230
258
  /**
231
259
  * Executes a registration step and updates the registration status.
232
260
  * @param {Function} step - The registration step to execute.
@@ -1,11 +1,13 @@
1
- import { IExternalRoles, IMediaStatus } from './types';
1
+ import { IExternalRoles, IMediaStatus, Participant, ParticipantUrl } from './types';
2
+ export type MemberId = string;
2
3
  /**
3
4
  * @class Member
4
5
  */
5
6
  export default class Member {
6
- associatedUser: any;
7
+ associatedUser: MemberId | null;
8
+ associatedUsers: Set<MemberId>;
7
9
  canReclaimHost: boolean;
8
- id: any;
10
+ id: MemberId;
9
11
  isAudioMuted: any;
10
12
  isContentSharing: any;
11
13
  isDevice: any;
@@ -22,6 +24,7 @@ export default class Member {
22
24
  isRecording: any;
23
25
  isRemovable: any;
24
26
  isSelf: any;
27
+ isPairedWithSelf: boolean;
25
28
  isBrb: boolean;
26
29
  isUser: any;
27
30
  isVideoMuted: any;
@@ -35,6 +38,10 @@ export default class Member {
35
38
  supportLiveAnnotation: boolean;
36
39
  type: any;
37
40
  namespace: string;
41
+ pairedWith: {
42
+ participantUrl?: ParticipantUrl;
43
+ memberId?: MemberId;
44
+ };
38
45
  /**
39
46
  * @param {Object} participant - the locus participant
40
47
  * @param {Object} [options] - constructor params
@@ -45,7 +52,7 @@ export default class Member {
45
52
  * @returns {Member}
46
53
  * @memberof Member
47
54
  */
48
- constructor(participant: object, options?: {
55
+ constructor(participant: Participant, options?: {
49
56
  selfId: string;
50
57
  hostId: string;
51
58
  contentSharingId: string;
@@ -59,6 +66,13 @@ export default class Member {
59
66
  * @memberof Member
60
67
  */
61
68
  private processParticipant;
69
+ /**
70
+ * Checks if the participant is paired with another device
71
+ *
72
+ * @param {any} participant the locus participant object
73
+ * @returns {void}
74
+ */
75
+ processPairedDevice(participant: Participant): void;
62
76
  /**
63
77
  * Use the members options and participant values to set on the member
64
78
  * @param {Object} participant the locus participant object
@@ -115,7 +129,7 @@ export default class Member {
115
129
  * @public
116
130
  * @memberof Member
117
131
  */
118
- processIsContentSharing(participant: object, sharingId: string): void;
132
+ processIsContentSharing(participant: Participant, sharingId: string): void;
119
133
  /**
120
134
  * Determine if this member is recording
121
135
  * @param {Object} participant
@@ -124,7 +138,7 @@ export default class Member {
124
138
  * @public
125
139
  * @memberof Member
126
140
  */
127
- processIsRecording(participant: object, recordingId: string): void;
141
+ processIsRecording(participant: Participant, recordingId: string): void;
128
142
  /**
129
143
  * determine if this member is the self
130
144
  * @param {Object} participant