@webex/plugin-meetings 3.8.1-web-workers-keepalive.1 → 3.9.0-webinar5k.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 (87) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +8 -2
  4. package/dist/constants.js.map +1 -1
  5. package/dist/hashTree/constants.js +23 -0
  6. package/dist/hashTree/constants.js.map +1 -0
  7. package/dist/hashTree/hashTree.js +516 -0
  8. package/dist/hashTree/hashTree.js.map +1 -0
  9. package/dist/hashTree/hashTreeParser.js +521 -0
  10. package/dist/hashTree/hashTreeParser.js.map +1 -0
  11. package/dist/interpretation/index.js +1 -1
  12. package/dist/interpretation/siLanguage.js +1 -1
  13. package/dist/locus-info/index.js +301 -59
  14. package/dist/locus-info/index.js.map +1 -1
  15. package/dist/meeting/brbState.js +14 -12
  16. package/dist/meeting/brbState.js.map +1 -1
  17. package/dist/meeting/index.js +110 -12
  18. package/dist/meeting/index.js.map +1 -1
  19. package/dist/meeting/muteState.js +2 -5
  20. package/dist/meeting/muteState.js.map +1 -1
  21. package/dist/meeting/request.js +19 -0
  22. package/dist/meeting/request.js.map +1 -1
  23. package/dist/meeting/request.type.js.map +1 -1
  24. package/dist/meeting/util.js +8 -11
  25. package/dist/meeting/util.js.map +1 -1
  26. package/dist/meetings/index.js +6 -2
  27. package/dist/meetings/index.js.map +1 -1
  28. package/dist/member/index.js.map +1 -1
  29. package/dist/member/types.js.map +1 -1
  30. package/dist/members/collection.js +13 -0
  31. package/dist/members/collection.js.map +1 -1
  32. package/dist/members/index.js +44 -23
  33. package/dist/members/index.js.map +1 -1
  34. package/dist/members/request.js +3 -3
  35. package/dist/members/request.js.map +1 -1
  36. package/dist/members/util.js +18 -6
  37. package/dist/members/util.js.map +1 -1
  38. package/dist/multistream/sendSlotManager.js +32 -2
  39. package/dist/multistream/sendSlotManager.js.map +1 -1
  40. package/dist/types/constants.d.ts +6 -0
  41. package/dist/types/hashTree/constants.d.ts +8 -0
  42. package/dist/types/hashTree/hashTree.d.ts +128 -0
  43. package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
  44. package/dist/types/locus-info/index.d.ts +93 -3
  45. package/dist/types/meeting/brbState.d.ts +0 -1
  46. package/dist/types/meeting/index.d.ts +29 -3
  47. package/dist/types/meeting/request.d.ts +9 -1
  48. package/dist/types/meeting/request.type.d.ts +74 -0
  49. package/dist/types/meeting/util.d.ts +3 -3
  50. package/dist/types/member/types.d.ts +1 -0
  51. package/dist/types/members/collection.d.ts +6 -0
  52. package/dist/types/members/index.d.ts +15 -3
  53. package/dist/types/members/request.d.ts +1 -1
  54. package/dist/types/members/util.d.ts +5 -2
  55. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  56. package/dist/webinar/index.js +1 -1
  57. package/package.json +24 -23
  58. package/src/constants.ts +7 -0
  59. package/src/hashTree/constants.ts +12 -0
  60. package/src/hashTree/hashTree.ts +460 -0
  61. package/src/hashTree/hashTreeParser.ts +556 -0
  62. package/src/locus-info/index.ts +393 -58
  63. package/src/meeting/brbState.ts +9 -7
  64. package/src/meeting/index.ts +104 -6
  65. package/src/meeting/muteState.ts +2 -6
  66. package/src/meeting/request.ts +16 -0
  67. package/src/meeting/request.type.ts +64 -0
  68. package/src/meeting/util.ts +17 -20
  69. package/src/meetings/index.ts +17 -3
  70. package/src/member/index.ts +1 -0
  71. package/src/member/types.ts +1 -0
  72. package/src/members/collection.ts +11 -0
  73. package/src/members/index.ts +33 -7
  74. package/src/members/request.ts +2 -2
  75. package/src/members/util.ts +14 -3
  76. package/src/multistream/sendSlotManager.ts +34 -2
  77. package/test/unit/spec/hashTree/hashTree.ts +394 -0
  78. package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
  79. package/test/unit/spec/locus-info/index.js +506 -55
  80. package/test/unit/spec/meeting/brbState.ts +9 -9
  81. package/test/unit/spec/meeting/index.js +475 -42
  82. package/test/unit/spec/meeting/request.js +71 -0
  83. package/test/unit/spec/members/index.js +33 -10
  84. package/test/unit/spec/members/request.js +2 -2
  85. package/test/unit/spec/members/utils.js +27 -7
  86. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  87. package/test/unit/spec/reachability/index.ts +3 -1
@@ -1,4 +1,59 @@
1
1
  import EventsScope from '../common/events/events-scope';
2
+ import HashTreeParser, { DataSet, HashTreeMessage, HashTreeObject, HtMeta } from '../hashTree/hashTreeParser';
3
+ export type LocusLLMEvent = {
4
+ data: {
5
+ eventType: 'locus.state_message';
6
+ stateElementsMessage: HashTreeMessage;
7
+ };
8
+ };
9
+ export type LocusDTO = {
10
+ controls?: any;
11
+ fullState?: {
12
+ active: boolean;
13
+ count: number;
14
+ lastActive: string;
15
+ locked: boolean;
16
+ sessionId: string;
17
+ seessionIds: string[];
18
+ startTime: number;
19
+ state: string;
20
+ type: string;
21
+ };
22
+ host?: {
23
+ id: string;
24
+ incomingCallProtocols: any[];
25
+ isExternal: boolean;
26
+ name: string;
27
+ orgId: string;
28
+ };
29
+ htMeta?: HtMeta;
30
+ info?: any;
31
+ jsSdkMeta?: {
32
+ removedParticipantIds: string[];
33
+ };
34
+ links?: any;
35
+ mediaShares?: any[];
36
+ meetings?: any[];
37
+ participants: any[];
38
+ replaces?: any[];
39
+ self?: any;
40
+ sequence?: {
41
+ dirtyParticipants: number;
42
+ entries: number[];
43
+ rangeEnd: number;
44
+ rangeStart: number;
45
+ sequenceHash: number;
46
+ sessionToken: string;
47
+ since: string;
48
+ totalParticipants: number;
49
+ };
50
+ syncUrl?: string;
51
+ url?: string;
52
+ };
53
+ export type LocusApiResponseBody = {
54
+ dataSets?: DataSet[];
55
+ locus: LocusDTO;
56
+ };
2
57
  /**
3
58
  * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
4
59
  * @export
@@ -38,6 +93,8 @@ export default class LocusInfo extends EventsScope {
38
93
  resources: any;
39
94
  mainSessionLocusCache: any;
40
95
  self: any;
96
+ hashTreeParser?: HashTreeParser;
97
+ hashTreeObjectId2ParticipantId: Map<number, string>;
41
98
  /**
42
99
  * Constructor
43
100
  * @param {function} updateMeeting callback to update the meeting object from an object
@@ -78,10 +135,41 @@ export default class LocusInfo extends EventsScope {
78
135
  init(locus?: any): void;
79
136
  /**
80
137
  * @param {Object} locus
138
+ * @param {DataSet[]} [dataSets=[]] - Array of data sets
81
139
  * @returns {undefined}
82
140
  * @memberof LocusInfo
83
141
  */
84
- initialSetup(locus: object): void;
142
+ initialSetup(locus: object, dataSets?: DataSet[]): void;
143
+ /**
144
+ *
145
+ * @param {HashTreeObject} object data set object
146
+ * @param {any} locus
147
+ * @returns {void}
148
+ */
149
+ updateHashTreeObjectInLocus(object: HashTreeObject, locus: LocusDTO): LocusDTO;
150
+ /**
151
+ * Handles HTTP response from Locus API call when hash tree update.
152
+ * @param {Meeting} meeting meeting object
153
+ * @param {LocusApiResponseBody} responseBody body of the http reponse from Locus API call
154
+ * @returns {void}
155
+ */
156
+ handleLocusAPIResponse(meeting: any, responseBody: LocusApiResponseBody): void;
157
+ /**
158
+ * Handles a hash tree message received from Locus.
159
+ *
160
+ * @param {Meeting} meeting - The meeting object
161
+ * @param {HashTreeMessage} message incoming hash tree message
162
+ * @returns {void}
163
+ */
164
+ private handleHashTreeMessage;
165
+ /**
166
+ * Updates our locus info based on the data parsed by the hash tree parser.
167
+ *
168
+ * @param {LocusInfoUpdateType} updateType - The type of update received.
169
+ * @param {Object} [data] - Additional data for the update, if applicable.
170
+ * @returns {void}
171
+ */
172
+ private updateFromHashTree;
85
173
  /**
86
174
  * @param {Meeting} meeting
87
175
  * @param {Object} data
@@ -101,10 +189,11 @@ export default class LocusInfo extends EventsScope {
101
189
  * updates the locus with full locus object
102
190
  * @param {object} locus locus object
103
191
  * @param {string} eventType particulat locus event
192
+ * @param {DataSet[]} dataSets
104
193
  * @returns {object} null
105
194
  * @memberof LocusInfo
106
195
  */
107
- onFullLocus(locus: any, eventType?: string): void;
196
+ onFullLocus(locus: any, eventType?: string, dataSets?: Array<DataSet>): void;
108
197
  /**
109
198
  * @param {String} eventType
110
199
  * @returns {undefined}
@@ -159,11 +248,12 @@ export default class LocusInfo extends EventsScope {
159
248
  /**
160
249
  * update meeting's members
161
250
  * @param {Object} participants new participants object
251
+ * @param {Array} removedParticipantIds list of removed participants
162
252
  * @param {Boolean} isReplace is replace the whole members
163
253
  * @returns {Array} updatedParticipants
164
254
  * @memberof LocusInfo
165
255
  */
166
- updateParticipants(participants: object, isReplace?: boolean): void;
256
+ updateParticipants(participants: object, removedParticipantIds: string[], isReplace?: boolean): void;
167
257
  /**
168
258
  * @param {Object} controls
169
259
  * @param {Object} self
@@ -40,7 +40,6 @@ export declare class BrbState {
40
40
  /**
41
41
  * Send the local brb state to the server
42
42
  *
43
- * @param {SendSlotManager} sendSlotManager
44
43
  * @returns {Promise}
45
44
  */
46
45
  private sendLocalBrbStateToServer;
@@ -8,6 +8,7 @@ import Roap, { type TurnDiscoverySkipReason } from '../roap/index';
8
8
  import { type TurnServerInfo } from '../roap/types';
9
9
  import { type BundlePolicy } from '../media';
10
10
  import MediaProperties from '../media/properties';
11
+ import { LocusDTO } from '../locus-info';
11
12
  import ReconnectionManager from '../reconnection-manager';
12
13
  import MeetingRequest from './request';
13
14
  import Members from '../members/index';
@@ -21,6 +22,8 @@ import RecordingController from '../recording-controller';
21
22
  import ControlsOptionsManager from '../controls-options-manager';
22
23
  import { LocusMediaRequest } from './locusMediaRequest';
23
24
  import { BrbState } from './brbState';
25
+ import { SetStageOptions } from './request.type';
26
+ import { DataSet } from '../hashTree/hashTreeParser';
24
27
  export type CaptionData = {
25
28
  id: string;
26
29
  isFinal: boolean;
@@ -888,15 +891,17 @@ export default class Meeting extends StatelessWebexPlugin {
888
891
  phoneNumber: string;
889
892
  }): any;
890
893
  /**
891
- * Cancel an SIP call invitation made during a meeting
894
+ * Cancel an SIP/phone call invitation made during a meeting
892
895
  * @param {Object} invitee
893
896
  * @param {String} invitee.memberId
894
- * @returns {Promise} see #members.cancelSIPInvite
897
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
898
+ * @returns {Promise} see #members.cancelInviteByMemberId
895
899
  * @public
896
900
  * @memberof Meeting
897
901
  */
898
- cancelSIPInvite(invitee: {
902
+ cancelInviteByMemberId(invitee: {
899
903
  memberId: string;
904
+ isInternalNumber?: boolean;
900
905
  }): any;
901
906
  /**
902
907
  * Admit the guest(s) to the call once they are waiting.
@@ -1037,11 +1042,13 @@ export default class Meeting extends StatelessWebexPlugin {
1037
1042
  * @memberof Meeting
1038
1043
  */
1039
1044
  setLocus(locus: {
1045
+ locus: LocusDTO;
1040
1046
  mediaConnections: Array<any>;
1041
1047
  locusUrl: string;
1042
1048
  locusId: string;
1043
1049
  mediaId: string;
1044
1050
  host: object;
1051
+ dataSets: DataSet[];
1045
1052
  } | any): void;
1046
1053
  /**
1047
1054
  * Upload logs for the current meeting
@@ -1259,6 +1266,12 @@ export default class Meeting extends StatelessWebexPlugin {
1259
1266
  startTranscription(options?: {
1260
1267
  spokenLanguage?: string;
1261
1268
  }): Promise<void>;
1269
+ /** Handles Locus LLM events
1270
+ *
1271
+ * @param {LocusLLMEvent} event - The Locus LLM event to process
1272
+ * @returns {void}
1273
+ */
1274
+ private processLocusLLMEvent;
1262
1275
  /**
1263
1276
  * Callback called when a relay event is received from meeting LLM Connection
1264
1277
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -2000,5 +2013,18 @@ export default class Meeting extends StatelessWebexPlugin {
2000
2013
  * @returns {Promise<MediaReachabilityMetrics>}
2001
2014
  */
2002
2015
  private getMediaReachabilityMetricFields;
2016
+ /**
2017
+ * Set the stage for the meeting
2018
+ *
2019
+ * @param {SetStageOptions} options Options to use when setting the stage
2020
+ * @returns {Promise} The locus request
2021
+ */
2022
+ setStage({ activeSpeakerProportion, customBackground, customLogo, customNameLabel, importantParticipants, lockAttendeeViewOnStage, showActiveSpeaker, }?: SetStageOptions): Promise<any>;
2023
+ /**
2024
+ * Unset the stage for the meeting
2025
+ *
2026
+ * @returns {Promise} The locus request
2027
+ */
2028
+ unsetStage(): Promise<any>;
2003
2029
  }
2004
2030
  export {};
@@ -1,5 +1,5 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions } from './request.type';
2
+ import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions, SynchronizeVideoLayout } from './request.type';
3
3
  import { AnnotationInfo } from '../annotation/annotation.types';
4
4
  import { ClientMediaPreferences } from '../reachability/reachability.types';
5
5
  /**
@@ -314,4 +314,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
314
314
  * @returns {Promise}
315
315
  */
316
316
  setPostMeetingDataConsent({ postMeetingDataConsent, locusUrl, deviceUrl, selfId, }: PostMeetingDataConsentOptions): Promise<any>;
317
+ /**
318
+ * Synchronize the stage for a meeting
319
+ *
320
+ * @param {LocusUrl} locusUrl The locus URL
321
+ * @param {SetStageVideoLayout} videoLayout The video layout to synchronize
322
+ * @returns {Promise} The locus request
323
+ */
324
+ synchronizeStage(locusUrl: string, videoLayout: SynchronizeVideoLayout): Promise<any>;
317
325
  }
@@ -21,3 +21,77 @@ export type PostMeetingDataConsentOptions = {
21
21
  deviceUrl: string;
22
22
  selfId: string;
23
23
  };
24
+ export type StageCustomLogoPositions = 'LowerLeft' | 'LowerMiddle' | 'LowerRight' | 'UpperLeft' | 'UpperMiddle' | 'UpperRight';
25
+ export type StageNameLabelType = 'Primary' | 'PrimaryInverted' | 'Secondary' | 'SecondaryInverted';
26
+ export type StageCustomBackground = {
27
+ url: string;
28
+ [others: string]: unknown;
29
+ };
30
+ export type StageCustomLogo = {
31
+ url: string;
32
+ position: StageCustomLogoPositions;
33
+ [others: string]: unknown;
34
+ };
35
+ export type StageCustomNameLabel = {
36
+ accentColor: string;
37
+ background: {
38
+ color: string;
39
+ };
40
+ border: {
41
+ color: string;
42
+ };
43
+ content: {
44
+ displayName: {
45
+ color: string;
46
+ };
47
+ subtitle: {
48
+ color: string;
49
+ };
50
+ };
51
+ decoration: {
52
+ color: string;
53
+ };
54
+ fadeOut?: {
55
+ delay: number;
56
+ };
57
+ type: StageNameLabelType;
58
+ [others: string]: unknown;
59
+ };
60
+ export type SetStageOptions = {
61
+ activeSpeakerProportion?: number;
62
+ customBackground?: StageCustomBackground;
63
+ customLogo?: StageCustomLogo;
64
+ customNameLabel?: StageCustomNameLabel;
65
+ importantParticipants?: {
66
+ mainCsi: number;
67
+ participantId: string;
68
+ }[];
69
+ lockAttendeeViewOnStage?: boolean;
70
+ showActiveSpeaker?: boolean;
71
+ };
72
+ export type SetStageVideoLayout = {
73
+ overrideDefault: true;
74
+ lockAttendeeViewOnStageOnly: boolean;
75
+ stageParameters: {
76
+ importantParticipants?: {
77
+ participantId: string;
78
+ mainCsi: number;
79
+ order: number;
80
+ }[];
81
+ showActiveSpeaker: {
82
+ show: boolean;
83
+ order: number;
84
+ };
85
+ activeSpeakerProportion: number;
86
+ stageManagerType: number;
87
+ };
88
+ customLayouts?: {
89
+ background?: StageCustomBackground;
90
+ logo?: StageCustomLogo;
91
+ };
92
+ nameLabelStyle?: StageCustomNameLabel;
93
+ };
94
+ export type UnsetStageVideoLayout = {
95
+ overrideDefault: false;
96
+ };
97
+ export type SynchronizeVideoLayout = SetStageVideoLayout | UnsetStageVideoLayout;
@@ -92,14 +92,14 @@ declare const MeetingUtil: {
92
92
  */
93
93
  addSequence: (meeting: any, requestBody: any) => void;
94
94
  /**
95
- * Updates the locus info for the meeting with the delta locus
96
- * returned from requests that include the sequence information
95
+ * Updates the locus info for the meeting with the locus
96
+ * information returned from API requests made to Locus
97
97
  * Returns the original response object
98
98
  * @param {Object} meeting The meeting object
99
99
  * @param {Object} response The response of the http request
100
100
  * @returns {Object}
101
101
  */
102
- updateLocusWithDelta: (meeting: any, response: any) => any;
102
+ updateLocusFromApiResponse: (meeting: any, response: any) => any;
103
103
  generateBuildLocusDeltaRequestOptions: (originalMeeting: any) => (originalOptions: any) => any;
104
104
  generateLocusDeltaRequest: (originalMeeting: any) => (originalOptions: any) => any;
105
105
  selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => boolean;
@@ -95,4 +95,5 @@ export interface Participant {
95
95
  status: ParticipantMediaStatus;
96
96
  type: string;
97
97
  url: ParticipantUrl;
98
+ isRemoved: boolean;
98
99
  }
@@ -22,6 +22,12 @@ export default class MembersCollection {
22
22
  * @memberof MembersCollection
23
23
  */
24
24
  getAll(): Record<string, Member>;
25
+ /**
26
+ * Removes a member from the collection
27
+ * @param {String} id
28
+ * @returns {void}
29
+ */
30
+ remove(id: string): void;
25
31
  /**
26
32
  * @returns {void}
27
33
  * reset members
@@ -84,6 +84,7 @@ export default class Members extends StatelessWebexPlugin {
84
84
  locusParticipantsUpdate(payload: {
85
85
  participants: object;
86
86
  isReplace?: boolean;
87
+ removedParticipantIds?: Array<string>;
87
88
  }): void;
88
89
  /**
89
90
  * Internal update the content id
@@ -126,6 +127,12 @@ export default class Members extends StatelessWebexPlugin {
126
127
  * @memberof Members
127
128
  */
128
129
  private handleMembersUpdate;
130
+ /**
131
+ * removes members from the collection
132
+ * @param {Array<string>} removedMembers removed members ids
133
+ * @returns {void}
134
+ */
135
+ private removeMembers;
129
136
  /**
130
137
  * set members to the member collection from each updated/added lists as passed in
131
138
  * @param {Array} list
@@ -226,12 +233,17 @@ export default class Members extends StatelessWebexPlugin {
226
233
  */
227
234
  cancelPhoneInvite(invitee: any): any;
228
235
  /**
229
- * Cancels an SIP call to the associated meeting
230
- * @param {String} invitee
236
+ * Cancels an SIP/phone call to the associated meeting
237
+ * @param {Object} invitee
238
+ * @param {String} invitee.memberId - The memberId of the invitee
239
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
231
240
  * @returns {Promise}
232
241
  * @memberof Members
233
242
  */
234
- cancelSIPInvite(invitee: any): any;
243
+ cancelInviteByMemberId(invitee: {
244
+ memberId: string;
245
+ isInternalNumber?: boolean;
246
+ }): any;
235
247
  /**
236
248
  * Admits waiting members (invited guests to meeting)
237
249
  * @param {Array} memberIds
@@ -136,5 +136,5 @@ export default class MembersRequest extends StatelessWebexPlugin {
136
136
  * @throws {Error} if the options are not valid and complete, must have invitee with memberId AND locusUrl
137
137
  * @memberof MembersRequest
138
138
  */
139
- cancelSIPInvite(options: any): Promise<any>;
139
+ cancelInviteByMemberId(options: any): Promise<any>;
140
140
  }
@@ -26,6 +26,7 @@ declare const MembersUtil: {
26
26
  */
27
27
  getAddMemberBody: (options: any) => {
28
28
  invitees: {
29
+ isInternalNumber?: any;
29
30
  roles?: any;
30
31
  address: any;
31
32
  }[];
@@ -55,6 +56,7 @@ declare const MembersUtil: {
55
56
  uri: any;
56
57
  body: {
57
58
  invitees: {
59
+ isInternalNumber?: any;
58
60
  roles?: any;
59
61
  address: any;
60
62
  }[];
@@ -228,16 +230,17 @@ declare const MembersUtil: {
228
230
  }[];
229
231
  };
230
232
  };
231
- cancelSIPInviteOptions: (invitee: any, locusUrl: any) => {
233
+ cancelInviteByMemberIdOptions: (invitee: any, locusUrl: any) => {
232
234
  invitee: any;
233
235
  locusUrl: any;
234
236
  };
235
- generateCancelSIPInviteRequestParams: (options: any) => {
237
+ generateCancelInviteByMemberIdRequestParams: (options: any) => {
236
238
  method: string;
237
239
  uri: any;
238
240
  body: {
239
241
  actionType: string;
240
242
  invitees: {
243
+ isInternalNumber?: any;
241
244
  address: any;
242
245
  }[];
243
246
  };
@@ -1,7 +1,17 @@
1
1
  import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup, StreamState } from '@webex/internal-media-core';
2
+ /**
3
+ * This class is used to manage the sendSlots for the given media types.
4
+ */
2
5
  export default class SendSlotManager {
3
6
  private readonly slots;
4
7
  private readonly LoggerProxy;
8
+ private readonly sourceStateOverrides;
9
+ /**
10
+ * Constructor for SendSlotManager
11
+ *
12
+ * @param {any} LoggerProxy is used to log the messages
13
+ * @constructor
14
+ */
5
15
  constructor(LoggerProxy: any);
6
16
  /**
7
17
  * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
@@ -32,6 +42,12 @@ export default class SendSlotManager {
32
42
  * @returns {void}
33
43
  */
34
44
  setSourceStateOverride(mediaType: MediaType, state: StreamState | null): void;
45
+ /**
46
+ * Gets the source state override for the given media type.
47
+ * @param {MediaType} mediaType - The type of media to get the source state override for.
48
+ * @returns {StreamState | null} - The current source state override or null if not set.
49
+ */
50
+ private getSourceStateOverride;
35
51
  /**
36
52
  * This method publishes the given stream to the sendSlot for the given mediaType
37
53
  * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.8.1-web-workers-keepalive.1"
461
+ version: "3.9.0-webinar5k.1"
462
462
  });
463
463
  var _default = exports.default = Webinar;
464
464
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -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.8.1-web-workers-keepalive.1",
47
- "@webex/plugin-rooms": "3.8.1-web-workers-keepalive.1",
48
- "@webex/test-helper-chai": "3.8.1-web-workers-keepalive.1",
49
- "@webex/test-helper-mocha": "3.8.1-web-workers-keepalive.1",
50
- "@webex/test-helper-mock-webex": "3.8.1-web-workers-keepalive.1",
51
- "@webex/test-helper-retry": "3.8.1-web-workers-keepalive.1",
52
- "@webex/test-helper-test-users": "3.8.1-web-workers-keepalive.1",
46
+ "@webex/plugin-meetings": "3.9.0-webinar5k.1",
47
+ "@webex/plugin-rooms": "3.9.0-webinar5k.1",
48
+ "@webex/test-helper-chai": "3.9.0-webinar5k.1",
49
+ "@webex/test-helper-mocha": "3.9.0-webinar5k.1",
50
+ "@webex/test-helper-mock-webex": "3.9.0-webinar5k.1",
51
+ "@webex/test-helper-retry": "3.9.0-webinar5k.1",
52
+ "@webex/test-helper-test-users": "3.9.0-webinar5k.1",
53
53
  "chai": "^4.3.4",
54
54
  "chai-as-promised": "^7.1.1",
55
55
  "eslint": "^8.24.0",
@@ -61,23 +61,23 @@
61
61
  "typescript": "^4.7.4"
62
62
  },
63
63
  "dependencies": {
64
- "@webex/common": "3.8.1-web-workers-keepalive.1",
64
+ "@webex/common": "3.9.0-webinar5k.1",
65
65
  "@webex/event-dictionary-ts": "^1.0.1819",
66
- "@webex/internal-media-core": "2.18.3",
67
- "@webex/internal-plugin-conversation": "3.8.1-web-workers-keepalive.1",
68
- "@webex/internal-plugin-device": "3.8.1-web-workers-keepalive.1",
69
- "@webex/internal-plugin-llm": "3.8.1-web-workers-keepalive.1",
70
- "@webex/internal-plugin-mercury": "3.8.1-web-workers-keepalive.1",
71
- "@webex/internal-plugin-metrics": "3.8.1-web-workers-keepalive.1",
72
- "@webex/internal-plugin-support": "3.8.1-web-workers-keepalive.1",
73
- "@webex/internal-plugin-user": "3.8.1-web-workers-keepalive.1",
74
- "@webex/internal-plugin-voicea": "3.8.1-web-workers-keepalive.1",
75
- "@webex/media-helpers": "3.8.1-web-workers-keepalive.1",
76
- "@webex/plugin-people": "3.8.1-web-workers-keepalive.1",
77
- "@webex/plugin-rooms": "3.8.1-web-workers-keepalive.1",
66
+ "@webex/internal-media-core": "2.18.5",
67
+ "@webex/internal-plugin-conversation": "3.9.0-webinar5k.1",
68
+ "@webex/internal-plugin-device": "3.9.0-webinar5k.1",
69
+ "@webex/internal-plugin-llm": "3.9.0-webinar5k.1",
70
+ "@webex/internal-plugin-mercury": "3.9.0-webinar5k.1",
71
+ "@webex/internal-plugin-metrics": "3.9.0-webinar5k.1",
72
+ "@webex/internal-plugin-support": "3.9.0-webinar5k.1",
73
+ "@webex/internal-plugin-user": "3.9.0-webinar5k.1",
74
+ "@webex/internal-plugin-voicea": "3.9.0-webinar5k.1",
75
+ "@webex/media-helpers": "3.9.0-webinar5k.1",
76
+ "@webex/plugin-people": "3.9.0-webinar5k.1",
77
+ "@webex/plugin-rooms": "3.9.0-webinar5k.1",
78
78
  "@webex/ts-sdp": "^1.8.1",
79
79
  "@webex/web-capabilities": "^1.6.0",
80
- "@webex/webex-core": "3.8.1-web-workers-keepalive.1",
80
+ "@webex/webex-core": "3.9.0-webinar5k.1",
81
81
  "ampersand-collection": "^2.0.2",
82
82
  "bowser": "^2.11.0",
83
83
  "btoa": "^1.2.1",
@@ -88,10 +88,11 @@
88
88
  "jwt-decode": "3.1.2",
89
89
  "lodash": "^4.17.21",
90
90
  "uuid": "^3.3.2",
91
- "webrtc-adapter": "^8.1.2"
91
+ "webrtc-adapter": "^8.1.2",
92
+ "xxh3-ts": "^2.0.1"
92
93
  },
93
94
  "//": [
94
95
  "TODO: upgrade jwt-decode when moving to node 18"
95
96
  ],
96
- "version": "3.8.1-web-workers-keepalive.1"
97
+ "version": "3.9.0-webinar5k.1"
97
98
  }
package/src/constants.ts CHANGED
@@ -217,6 +217,7 @@ export const DIALER_REGEX = {
217
217
  PHONE_NUMBER:
218
218
  /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/,
219
219
  E164_FORMAT: /^\+[1-9]\d{1,14}$/,
220
+ INTERNAL_NUMBER: /^\d{1,14}$/,
220
221
  };
221
222
 
222
223
  // eslint-disable-next-line max-len
@@ -1357,3 +1358,9 @@ export const INITIAL_REGISTRATION_STATUS = {
1357
1358
  mercuryConnect: false,
1358
1359
  checkH264Support: false,
1359
1360
  };
1361
+
1362
+ export const STAGE_MANAGER_TYPE = {
1363
+ LOGO: 0b001,
1364
+ BACKGROUND: 0b010,
1365
+ NAME_LABEL: 0b100,
1366
+ };
@@ -0,0 +1,12 @@
1
+ // TODO: Consider moving these to the main meetings constants file at some point
2
+ // Only worth doing so if they are used outside of the hash tree
3
+
4
+ export const EMPTY_HASH = '99aa06d3014798d86001c324468d497f';
5
+
6
+ export const DataSetNames = {
7
+ MAIN: 'main', // sent to web client, contains also panelists, over LLM
8
+ ATTENDEES: 'attendees', // NOT SENT to web client, all the attendees in the locus
9
+ ATD_ACTIVE: 'atd-active', // only sent to panelists, over LLM; the attendees that have their hands raised or are allowed to unmute themselves
10
+ ATD_UNMUTED: 'atd-unmuted', // sent to web client, over LLM, not sent to panelists; the attendees that are unmuted
11
+ SELF: 'self', // sent to web client, over Mercury
12
+ };