@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
@@ -12,20 +12,6 @@ export type ServerRoleShape = {
12
12
  type: ServerRoles;
13
13
  hasRole: boolean;
14
14
  };
15
- export type ParticipantWithRoles = {
16
- controls: {
17
- role: {
18
- roles: Array<ServerRoleShape>;
19
- };
20
- };
21
- };
22
- export type ParticipantWithBrb = {
23
- controls: {
24
- brb?: {
25
- enabled: boolean;
26
- };
27
- };
28
- };
29
15
  export declare enum MediaStatus {
30
16
  RECVONLY = "RECVONLY",
31
17
  SENDONLY = "SENDONLY",
@@ -37,3 +23,76 @@ export interface IMediaStatus {
37
23
  audio: MediaStatus;
38
24
  video: MediaStatus;
39
25
  }
26
+ export type Csi = number;
27
+ export type Direction = 'inactive' | 'sendrecv' | 'sendonly' | 'recvonly';
28
+ export type ParticipantUrl = string;
29
+ export interface MediaSession {
30
+ csi: Csi;
31
+ direction: Direction;
32
+ mediaContent: 'main' | 'slides';
33
+ mediaType: 'audio' | 'video';
34
+ state: string;
35
+ }
36
+ export interface Intent {
37
+ associatedWith: ParticipantUrl;
38
+ id: string;
39
+ type: string;
40
+ }
41
+ export interface ParticipantDevice {
42
+ correlationId: string;
43
+ csis: Csi[];
44
+ deviceType: string;
45
+ intent?: Intent;
46
+ intents: Array<Intent | null>;
47
+ isVideoCallback: boolean;
48
+ mediaSessions: Array<MediaSession>;
49
+ mediaSessionsExternal: boolean;
50
+ state: string;
51
+ }
52
+ export interface ParticipantPerson {
53
+ id: string;
54
+ isExternal: boolean;
55
+ name: string;
56
+ orgId: string;
57
+ }
58
+ export interface ParticipantMediaStatus {
59
+ audioStatus: MediaStatus;
60
+ videoStatus: MediaStatus;
61
+ audioSlidesStatus?: MediaStatus;
62
+ videoSlidesStatus?: MediaStatus;
63
+ csis: Csi[];
64
+ }
65
+ export interface ParticipantControls {
66
+ role: {
67
+ roles: Array<ServerRoleShape>;
68
+ };
69
+ brb?: {
70
+ enabled: boolean;
71
+ };
72
+ hand: {
73
+ raised: boolean;
74
+ };
75
+ localRecord: {
76
+ recording: boolean;
77
+ };
78
+ }
79
+ export interface Participant {
80
+ canBeController: boolean;
81
+ controls: ParticipantControls;
82
+ deviceUrl: string;
83
+ devices: Array<ParticipantDevice>;
84
+ guest: boolean;
85
+ id: string;
86
+ identity: string;
87
+ identityTrustLevel: string;
88
+ isCreator: boolean;
89
+ moderator: boolean;
90
+ moderatorAssignmentNotAllowed: boolean;
91
+ presenterAssignmentNotAllowed: boolean;
92
+ person: ParticipantPerson;
93
+ resourceGuest: boolean;
94
+ state: string;
95
+ status: ParticipantMediaStatus;
96
+ type: string;
97
+ url: ParticipantUrl;
98
+ }
@@ -1,2 +1,157 @@
1
- declare const MemberUtil: any;
1
+ import { IExternalRoles, ServerRoles, ServerRoleShape, IMediaStatus, Participant, ParticipantUrl } from './types';
2
+ declare const MemberUtil: {
3
+ /**
4
+ * @param {Object} participant - The locus participant object.
5
+ * @returns {Boolean}
6
+ */
7
+ canReclaimHost: (participant: any) => any;
8
+ /**
9
+ * @param {Object} participant - The locus participant object.
10
+ * @returns {[ServerRoleShape]}
11
+ */
12
+ getControlsRoles: (participant: Participant) => Array<ServerRoleShape>;
13
+ /**
14
+ * Checks if the participant has the brb status enabled.
15
+ *
16
+ * @param {Participant} participant - The locus participant object.
17
+ * @returns {boolean} - True if the participant has brb enabled, false otherwise.
18
+ */
19
+ isBrb: (participant: Participant) => boolean;
20
+ /**
21
+ * @param {Object} participant - The locus participant object.
22
+ * @param {ServerRoles} controlRole the search role
23
+ * @returns {Boolean}
24
+ */
25
+ hasRole: (participant: Participant, controlRole: ServerRoles) => boolean;
26
+ /**
27
+ * @param {Object} participant - The locus participant object.
28
+ * @returns {Boolean}
29
+ */
30
+ hasCohost: (participant: Participant) => boolean;
31
+ /**
32
+ * @param {Object} participant - The locus participant object.
33
+ * @returns {Boolean}
34
+ */
35
+ hasModerator: (participant: Participant) => boolean;
36
+ /**
37
+ * @param {Object} participant - The locus participant object.
38
+ * @returns {Boolean}
39
+ */
40
+ hasPresenter: (participant: Participant) => boolean;
41
+ /**
42
+ * @param {Object} participant - The locus participant object.
43
+ * @returns {IExternalRoles}
44
+ */
45
+ extractControlRoles: (participant: Participant) => IExternalRoles;
46
+ /**
47
+ * @param {Object} participant - The locus participant object.
48
+ * @returns {Boolean}
49
+ */
50
+ isUser: (participant: Participant) => boolean;
51
+ isModerator: (participant: Participant) => boolean;
52
+ /**
53
+ * @param {Object} participant - The locus participant object.
54
+ * @returns {Boolean}
55
+ */
56
+ isGuest: (participant: Participant) => boolean;
57
+ /**
58
+ * @param {Object} participant - The locus participant object.
59
+ * @returns {Boolean}
60
+ */
61
+ isDevice: (participant: Participant) => boolean;
62
+ isModeratorAssignmentProhibited: (participant: Participant) => boolean;
63
+ isPresenterAssignmentProhibited: (participant: Participant) => boolean;
64
+ /**
65
+ * checks to see if the participant id is the same as the passed id
66
+ * there are multiple ids that can be used
67
+ * @param {Object} participant - The locus participant object.
68
+ * @param {String} id
69
+ * @returns {Boolean}
70
+ */
71
+ isSame: (participant: Participant, id: string) => boolean;
72
+ /**
73
+ * @param {Object} participant - The locus participant object.
74
+ * @param {Boolean} isGuest
75
+ * @param {String} status
76
+ * @returns {Boolean}
77
+ */
78
+ isNotAdmitted: (participant: Participant, isGuest: boolean, status: string) => boolean;
79
+ /**
80
+ * @param {Object} participant - The locus participant object.
81
+ * @returns {Boolean}
82
+ */
83
+ isAudioMuted: (participant: Participant) => any;
84
+ /**
85
+ * @param {Object} participant - The locus participant object.
86
+ * @returns {Boolean}
87
+ */
88
+ isVideoMuted: (participant: Participant) => boolean;
89
+ /**
90
+ * @param {Object} participant - The locus participant object.
91
+ * @returns {Boolean}
92
+ */
93
+ isHandRaised: (participant: Participant) => boolean;
94
+ /**
95
+ * @param {Object} participant - The locus participant object.
96
+ * @returns {Boolean}
97
+ */
98
+ isBreakoutsSupported: (participant: any) => boolean;
99
+ /**
100
+ * @param {Object} participant - The locus participant object.
101
+ * @returns {Boolean}
102
+ */
103
+ isInterpretationSupported: (participant: any) => boolean;
104
+ /**
105
+ * @param {Object} participant - The locus participant object.
106
+ * @returns {Boolean}
107
+ */
108
+ isLiveAnnotationSupported: (participant: any) => boolean;
109
+ /**
110
+ * utility method for audio/video muted status
111
+ * @param {any} participant
112
+ * @param {String} statusAccessor
113
+ * @param {String} controlsAccessor
114
+ * @returns {Boolean | undefined}
115
+ */
116
+ isMuted: (participant: Participant, statusAccessor: string, controlsAccessor: string) => any;
117
+ /**
118
+ * utility method for getting the recording member for later comparison
119
+ * @param {Object} controls
120
+ * @returns {String|null}
121
+ */
122
+ getRecordingMember: (controls: any) => any;
123
+ /**
124
+ * @param {Object} participant - The locus participant object.
125
+ * @returns {Boolean}
126
+ */
127
+ isRecording: (participant: Participant) => boolean;
128
+ isRemovable: (isSelf: any, isGuest: any, isInMeeting: any, type: any) => boolean;
129
+ isMutable: (isSelf: any, isDevice: any, isInMeeting: any, isMuted: any, type: any) => boolean;
130
+ /**
131
+ * @param {Object} participant - The locus participant object.
132
+ * @returns {String}
133
+ */
134
+ extractStatus: (participant: Participant) => "IN_LOBBY" | "IN_MEETING" | "NOT_IN_MEETING";
135
+ /**
136
+ * @param {Object} participant - The locus participant object.
137
+ * @returns {String}
138
+ */
139
+ extractId: (participant: Participant) => string;
140
+ /**
141
+ * extracts the media status from nested participant object
142
+ * @param {Object} participant - The locus participant object.
143
+ * @returns {Object}
144
+ */
145
+ extractMediaStatus: (participant: Participant) => IMediaStatus;
146
+ /**
147
+ * @param {Object} participant - The locus participant object.
148
+ * @returns {String}
149
+ */
150
+ extractName: (participant: Participant) => string;
151
+ /**
152
+ * @param {Object} participant - The locus participant object.
153
+ * @returns {String}
154
+ */
155
+ extractPairedWithParticipantUrl: (participant: Participant) => ParticipantUrl | undefined;
156
+ };
2
157
  export default MemberUtil;
@@ -1,26 +1,27 @@
1
+ import Member from '../member';
1
2
  /**
2
3
  * @class MembersCollection
3
4
  */
4
5
  export default class MembersCollection {
5
- members: any;
6
+ members: Record<string, Member>;
6
7
  namespace: string;
7
8
  /**
8
9
  * @param {Object} locus
9
10
  * @memberof Members
10
11
  */
11
12
  constructor();
12
- set(id: any, member: any): void;
13
- setAll(members: any): void;
13
+ set(id: string, member: Member): void;
14
+ setAll(members: Record<string, Member>): void;
14
15
  /**
15
16
  * @param {String} id
16
17
  * @returns {Member}
17
18
  */
18
- get(id: string): any;
19
+ get(id: string): Member;
19
20
  /**
20
21
  * @returns {Object} returns an object map of Member instances
21
22
  * @memberof MembersCollection
22
23
  */
23
- getAll(): any;
24
+ getAll(): Record<string, Member>;
24
25
  /**
25
26
  * @returns {void}
26
27
  * reset members
@@ -1,45 +1,9 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
+ import Member from '../member';
3
+ import MembersCollection from './collection';
2
4
  import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
3
5
  import { MediaRequestManager } from '../multistream/mediaRequestManager';
4
6
  import { ServerRoleShape } from './types';
5
- /**
6
- * Members Update Event
7
- * Emitted when something in the roster list needs to be updated
8
- * @event members:update
9
- * @instance
10
- * @property {Object} delta the changes to the members list
11
- * @property {Array} delta.updated array only the updates, includes removals, as they will have updated status and member properties
12
- * @property {Array} delta.added array added members to the meeting
13
- * @property {Array} full array the full members collection
14
- * @memberof Members
15
- */
16
- /**
17
- * Members Content Update Event
18
- * Emitted when who is sharing changes
19
- * @event members:content:update
20
- * @instance
21
- * @property {String} activeContentSharingId
22
- * @property {String} endedContentSharingId
23
- * @memberof Members
24
- */
25
- /**
26
- * Members Host Update Event
27
- * Emitted when who is the host changes
28
- * @event members:host:update
29
- * @instance
30
- * @property {String} activeHostId
31
- * @property {String} endedHostId
32
- * @memberof Members
33
- */
34
- /**
35
- * Members Self Update Event
36
- * Emitted when who is the self changes
37
- * @event members:self:update
38
- * @instance
39
- * @property {String} activeSelfId
40
- * @property {String} endedSelfId
41
- * @memberof Members
42
- */
43
7
  /**
44
8
  * @class Members
45
9
  */
@@ -48,7 +12,7 @@ export default class Members extends StatelessWebexPlugin {
48
12
  locusUrl: any;
49
13
  mediaShareContentId: any;
50
14
  mediaShareWhiteboardId: any;
51
- membersCollection: any;
15
+ membersCollection: MembersCollection;
52
16
  membersRequest: any;
53
17
  receiveSlotManager: ReceiveSlotManager;
54
18
  mediaRequestManagers: {
@@ -99,6 +63,15 @@ export default class Members extends StatelessWebexPlugin {
99
63
  * @memberof Members
100
64
  */
101
65
  clearMembers(): void;
66
+ /**
67
+ * Updates properties on members that rely on information from other members.
68
+ * This function MUST be called only after the membersCollection has been fully updated
69
+ * @param {UpdatedMembers} membersUpdate
70
+ * @returns {Object} membersCollection
71
+ * @private
72
+ * @memberof Members
73
+ */
74
+ private updateRelationsBetweenMembers;
102
75
  /**
103
76
  * when new participant updates come in, both delta and full participants, update them in members collection
104
77
  * delta object in the event will have {updated, added} and full will be the full membersCollection
@@ -147,7 +120,7 @@ export default class Members extends StatelessWebexPlugin {
147
120
  }): void;
148
121
  /**
149
122
  * sets values in the members collection for updated and added properties from delta
150
- * @param {Object} membersUpdate {updated: [], added: []}
123
+ * @param {UpdatedMembers} membersUpdate
151
124
  * @returns {Object} membersCollection
152
125
  * @private
153
126
  * @memberof Members
@@ -156,6 +129,7 @@ export default class Members extends StatelessWebexPlugin {
156
129
  /**
157
130
  * set members to the member collection from each updated/added lists as passed in
158
131
  * @param {Array} list
132
+ * @param {boolean} isUpdate
159
133
  * @returns {undefined}
160
134
  * @private
161
135
  * @memberof Members
@@ -164,7 +138,7 @@ export default class Members extends StatelessWebexPlugin {
164
138
  /**
165
139
  * Internal update the participants value
166
140
  * @param {Object} payload
167
- * @returns {Object}
141
+ * @returns {UpdatedMembers}
168
142
  * @private
169
143
  * @memberof Members
170
144
  */
@@ -231,7 +205,7 @@ export default class Members extends StatelessWebexPlugin {
231
205
  * Removed/left members will end up in updates
232
206
  * Each array contains only members
233
207
  * @param {Array} participants the locus participants
234
- * @returns {Object} {added: {Array}, updated: {Array}}
208
+ * @returns {UpdatedMembers} {added: {Array}, updated: {Array}}
235
209
  * @private
236
210
  * @memberof Members
237
211
  */
@@ -251,6 +225,13 @@ export default class Members extends StatelessWebexPlugin {
251
225
  * @memberof Members
252
226
  */
253
227
  cancelPhoneInvite(invitee: any): any;
228
+ /**
229
+ * Cancels an SIP call to the associated meeting
230
+ * @param {String} invitee
231
+ * @returns {Promise}
232
+ * @memberof Members
233
+ */
234
+ cancelSIPInvite(invitee: any): any;
254
235
  /**
255
236
  * Admits waiting members (invited guests to meeting)
256
237
  * @param {Array} memberIds
@@ -290,6 +271,14 @@ export default class Members extends StatelessWebexPlugin {
290
271
  * @memberof Members
291
272
  */
292
273
  assignRoles(memberId: string, roles: Array<ServerRoleShape>): any;
274
+ /**
275
+ * Moves a meeting member into the lobby.
276
+ * @param {String} memberId -- The ID of the member to move.
277
+ * @returns {Promise} -- Resolves with the lobby‐move response.
278
+ * @public
279
+ * @memberof Members
280
+ */
281
+ moveToLobby(memberId: string): any;
293
282
  /**
294
283
  * Raise or lower the hand of a member in a meeting
295
284
  * @param {String} memberId
@@ -331,7 +320,7 @@ export default class Members extends StatelessWebexPlugin {
331
320
  * @param {number} csi
332
321
  * @returns {Member}
333
322
  */
334
- findMemberByCsi(csi: any): unknown;
323
+ findMemberByCsi(csi: any): Member;
335
324
  /**
336
325
  * Returns an array of a member's CSIs matching the mediaType and mediaContent
337
326
  *
@@ -53,6 +53,25 @@ export default class MembersRequest extends StatelessWebexPlugin {
53
53
  * @returns {Promise}
54
54
  */
55
55
  assignRolesMember(options: any): Promise<any>;
56
+ /**
57
+ * Sends a request to move a meeting member into the lobby.
58
+ * *
59
+ * @param {Object} options - Request options.
60
+ * @param {string} options.locusUrl - The locus URL for the meeting.
61
+ * @param {string} options.memberId - The ID of the member to move.
62
+ * @param {Object} body - The request payload.
63
+ * @param {Object} body.moveToLobby - Container for move‐to‐lobby data.
64
+ * @param {string[]} body.moveToLobby.participantIds - Array of participant IDs to move.
65
+ * @returns {Promise} - Resolves with the locus‐delta response.
66
+ */
67
+ moveToLobbyMember(options: {
68
+ locusUrl: string;
69
+ memberId: string;
70
+ }, body: {
71
+ moveToLobby: {
72
+ participantIds: string[];
73
+ };
74
+ }): Promise<any>;
56
75
  /**
57
76
  * Sends a request to raise or lower a member's hand
58
77
  * @param {Object} options
@@ -111,4 +130,11 @@ export default class MembersRequest extends StatelessWebexPlugin {
111
130
  * @memberof MembersRequest
112
131
  */
113
132
  cancelPhoneInvite(options: any): Promise<any>;
133
+ /**
134
+ * @param {Object} options with format of {invitee: object, locusUrl: string}
135
+ * @returns {Promise}
136
+ * @throws {Error} if the options are not valid and complete, must have invitee with memberId AND locusUrl
137
+ * @memberof MembersRequest
138
+ */
139
+ cancelSIPInvite(options: any): Promise<any>;
114
140
  }
@@ -124,6 +124,19 @@ declare const MembersUtil: {
124
124
  };
125
125
  };
126
126
  };
127
+ getMoveMemberToLobbyRequestBody: (memberId: string) => {
128
+ moveToLobby: {
129
+ participantIds: string[];
130
+ };
131
+ };
132
+ getMoveMemberToLobbyRequestParams: (options: {
133
+ memberId: string;
134
+ locusUrl: string;
135
+ }, body: any) => {
136
+ method: string;
137
+ uri: string;
138
+ body: any;
139
+ };
127
140
  /**
128
141
  * @param {ServerRoleShape} role
129
142
  * @returns {ServerRoleShape} the role shape to be added to the body
@@ -215,5 +228,19 @@ declare const MembersUtil: {
215
228
  }[];
216
229
  };
217
230
  };
231
+ cancelSIPInviteOptions: (invitee: any, locusUrl: any) => {
232
+ invitee: any;
233
+ locusUrl: any;
234
+ };
235
+ generateCancelSIPInviteRequestParams: (options: any) => {
236
+ method: string;
237
+ uri: any;
238
+ body: {
239
+ actionType: string;
240
+ invitees: {
241
+ address: any;
242
+ }[];
243
+ };
244
+ };
218
245
  };
219
246
  export default MembersUtil;
@@ -69,6 +69,7 @@ declare const BEHAVIORAL_METRICS: {
69
69
  MEETING_INFO_POLICY_ERROR: string;
70
70
  LOCUS_DELTA_SYNC_FAILED: string;
71
71
  LOCUS_DELTA_OUT_OF_ORDER: string;
72
+ LOCUS_SYNC_HANDLING_FAILED: string;
72
73
  PERMISSION_TOKEN_REFRESH: string;
73
74
  PERMISSION_TOKEN_REFRESH_ERROR: string;
74
75
  TURN_DISCOVERY_LATENCY: string;
@@ -36,6 +36,7 @@ export declare class ClusterReachability extends EventsScope {
36
36
  private srflxIceCandidates;
37
37
  readonly isVideoMesh: boolean;
38
38
  readonly name: any;
39
+ readonly reachedSubnets: Set<string>;
39
40
  /**
40
41
  * Constructor for ClusterReachability
41
42
  * @param {string} name cluster name
@@ -94,12 +95,6 @@ export declare class ClusterReachability extends EventsScope {
94
95
  * @returns {void}
95
96
  */
96
97
  private registerIceGatheringStateChangeListener;
97
- /**
98
- * Checks if we have the results for all the protocols (UDP and TCP)
99
- *
100
- * @returns {boolean} true if we have all results, false otherwise
101
- */
102
- private haveWeGotAllResults;
103
98
  /**
104
99
  * Saves the latency in the result for the given protocol and marks it as reachable,
105
100
  * emits the "resultReady" event if this is the first result for that protocol,
@@ -109,6 +104,7 @@ export declare class ClusterReachability extends EventsScope {
109
104
  * @param {string} protocol
110
105
  * @param {number} latency
111
106
  * @param {string|null} [publicIp]
107
+ * @param {string|null} [serverIp]
112
108
  * @returns {void}
113
109
  */
114
110
  private saveResult;
@@ -66,6 +66,14 @@ export default class Reachability extends EventsScope {
66
66
  clusters: ClusterList;
67
67
  joinCookie: any;
68
68
  }>;
69
+ /**
70
+ * Checks if the given subnet is reachable
71
+ * @param {string} mediaServerIp - media server ip
72
+ * @returns {boolean | null} true if reachable, false if not reachable, null if mediaServerIp is not provided
73
+ * @public
74
+ * @memberof Reachability
75
+ */
76
+ isSubnetReachable(mediaServerIp?: string): boolean | null;
69
77
  /**
70
78
  * Gets a list of media clusters from the backend and performs reachability checks on all the clusters
71
79
  * @param {string} trigger - explains the reason for starting reachability
@@ -1,7 +1,8 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import TurnDiscovery, { TurnDiscoveryResult } from './turnDiscovery';
2
+ import TurnDiscovery from './turnDiscovery';
3
+ import { TurnDiscoveryResult } from './types';
3
4
  import Meeting from '../meeting';
4
- export { type TurnDiscoveryResult, type TurnServerInfo, type TurnDiscoverySkipReason, } from './turnDiscovery';
5
+ export { type TurnDiscoveryResult, type TurnServerInfo, type TurnDiscoverySkipReason } from './types';
5
6
  /**
6
7
  * Roap options
7
8
  * @typedef {Object} RoapOptions
@@ -1,21 +1,6 @@
1
- import { Enum } from '../constants';
2
1
  import RoapRequest from './request';
3
2
  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
+ import { TurnDiscoverySkipReason, TurnDiscoveryResult } from './types';
19
4
  /**
20
5
  * Handles the process of finding out TURN server information from Linus.
21
6
  * This is achieved by sending a TURN_DISCOVERY_REQUEST.
@@ -25,6 +10,10 @@ export default class TurnDiscovery {
25
10
  private defer?;
26
11
  private turnInfo;
27
12
  private responseTimer?;
13
+ /** Resets the turnInfo structure to the defaults
14
+ * @returns {void}
15
+ */
16
+ private resetTurnInfo;
28
17
  /**
29
18
  * Constructor
30
19
  *
@@ -152,4 +141,3 @@ export default class TurnDiscovery {
152
141
  */
153
142
  doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean, isForced?: boolean): Promise<TurnDiscoveryResult>;
154
143
  }
155
- export {};
@@ -0,0 +1,16 @@
1
+ import { Enum } from '../constants';
2
+ export declare const TurnDiscoverySkipReason: {
3
+ readonly missingHttpResponse: "missing http response";
4
+ readonly reachability: "reachability";
5
+ readonly alreadyInProgress: "already in progress";
6
+ };
7
+ export type TurnDiscoverySkipReason = Enum<typeof TurnDiscoverySkipReason> | string | undefined;
8
+ export type TurnServerInfo = {
9
+ urls: string[];
10
+ username: string;
11
+ password: string;
12
+ };
13
+ export type TurnDiscoveryResult = {
14
+ turnServerInfo?: TurnServerInfo;
15
+ turnDiscoverySkippedReason: TurnDiscoverySkipReason;
16
+ };
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.8.0-web-workers-keepalive.1"
461
+ version: "3.8.1-next.1"
462
462
  });
463
463
  var _default = exports.default = Webinar;
464
464
  //# sourceMappingURL=index.js.map