@webex/plugin-meetings 3.10.0-next.13 → 3.10.0-next.15
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.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/hashTree/constants.js +20 -0
- package/dist/hashTree/constants.js.map +1 -0
- package/dist/hashTree/hashTree.js +515 -0
- package/dist/hashTree/hashTree.js.map +1 -0
- package/dist/hashTree/hashTreeParser.js +1115 -14
- package/dist/hashTree/hashTreeParser.js.map +1 -1
- package/dist/hashTree/types.js +9 -3
- package/dist/hashTree/types.js.map +1 -1
- package/dist/hashTree/utils.js +48 -0
- package/dist/hashTree/utils.js.map +1 -0
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +41 -22
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/types.js.map +1 -1
- package/dist/types/hashTree/constants.d.ts +8 -0
- package/dist/types/hashTree/hashTree.d.ts +129 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +151 -0
- package/dist/types/hashTree/types.d.ts +9 -0
- package/dist/types/hashTree/utils.d.ts +9 -0
- package/dist/types/locus-info/types.d.ts +12 -11
- package/dist/webinar/index.js +1 -1
- package/package.json +22 -21
- package/src/hashTree/constants.ts +9 -0
- package/src/hashTree/hashTree.ts +463 -0
- package/src/hashTree/hashTreeParser.ts +1022 -7
- package/src/hashTree/types.ts +11 -1
- package/src/hashTree/utils.ts +42 -0
- package/src/locus-info/index.ts +49 -27
- package/src/locus-info/types.ts +13 -11
- package/test/unit/spec/hashTree/hashTree.ts +655 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +1532 -0
- package/test/unit/spec/hashTree/utils.ts +103 -0
- package/test/unit/spec/locus-info/index.js +95 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {HtMeta} from '../hashTree/types';\n\nexport type
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {HtMeta} from '../hashTree/types';\n\nexport type LocusFullState = {\n active: boolean;\n count: number;\n lastActive: string;\n locked: boolean;\n sessionId: string;\n seessionIds: string[];\n startTime: number;\n state: string;\n type: string;\n};\n\nexport type LocusDTO = {\n controls?: any;\n fullState?: LocusFullState;\n host?: {\n id: string;\n incomingCallProtocols: any[];\n isExternal: boolean;\n name: string;\n orgId: string;\n };\n htMeta?: HtMeta;\n info?: any;\n jsSdkMeta?: {\n removedParticipantIds: string[]; // list of ids of participants that are removed in the last update\n };\n links?: any;\n mediaShares?: any[];\n meetings?: any[];\n participants: any[];\n replaces?: any[];\n self?: any;\n sequence?: {\n dirtyParticipants: number;\n entries: number[];\n rangeEnd: number;\n rangeStart: number;\n sequenceHash: number;\n sessionToken: string;\n since: string;\n totalParticipants: number;\n };\n syncUrl?: string;\n url?: string;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { ObjectType } from './types';
|
|
2
|
+
export type LeafDataItem = {
|
|
3
|
+
type: ObjectType;
|
|
4
|
+
id: number;
|
|
5
|
+
version: number;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* HashTree is a data structure that organizes items into leaves based on their IDs,
|
|
9
|
+
*/
|
|
10
|
+
declare class HashTree {
|
|
11
|
+
leaves: Array<Record<string, Record<number, LeafDataItem>>>;
|
|
12
|
+
leafHashes: Array<string>;
|
|
13
|
+
readonly numLeaves: number;
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new HashTree.
|
|
16
|
+
* @param {LeafDataItem[]} leafData Initial data to populate the tree.
|
|
17
|
+
* @param {number} numLeaves The number of leaf nodes in the tree. Must be 0 or a power of 2.
|
|
18
|
+
* @throws {Error} If numLeaves is not 0 or a power of 2.
|
|
19
|
+
*/
|
|
20
|
+
constructor(leafData: LeafDataItem[], numLeaves: number);
|
|
21
|
+
/**
|
|
22
|
+
* Internal logic for adding or updating an item, without computing the leaf hash.
|
|
23
|
+
* @param {LeafDataItem} item The item to add or update.
|
|
24
|
+
* @returns {{put: boolean, index: (number|null)}} Object indicating if put and the leaf index.
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
private _putItemInternal;
|
|
28
|
+
/**
|
|
29
|
+
* Adds or updates a single item in the hash tree.
|
|
30
|
+
* @param {LeafDataItem} item The item to add or update.
|
|
31
|
+
* @returns {boolean} True if the item was added or updated, false otherwise (e.g., older version or tree has 0 leaves).
|
|
32
|
+
*/
|
|
33
|
+
putItem(item: LeafDataItem): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Adds or updates multiple items in the hash tree.
|
|
36
|
+
* @param {LeafDataItem[]} items The array of items to add or update.
|
|
37
|
+
* @returns {boolean[]} An array of booleans indicating success for each item.
|
|
38
|
+
*/
|
|
39
|
+
putItems(items: LeafDataItem[]): boolean[];
|
|
40
|
+
/**
|
|
41
|
+
* Internal logic for removing an item, without computing the leaf hash.
|
|
42
|
+
* @param {LeafDataItem} item The item to remove.
|
|
43
|
+
* @returns {{removed: boolean, index: (number|null)}} Object indicating if removed and the leaf index.
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
46
|
+
private _removeItemInternal;
|
|
47
|
+
/**
|
|
48
|
+
* Removes a single item from the hash tree.
|
|
49
|
+
* The removal is based on matching type, id, and the provided item's version
|
|
50
|
+
* being greater than or equal to the existing item's version.
|
|
51
|
+
* @param {LeafDataItem} item The item to remove.
|
|
52
|
+
* @returns {boolean} True if the item was removed, false otherwise.
|
|
53
|
+
*/
|
|
54
|
+
removeItem(item: LeafDataItem): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Removes multiple items from the hash tree.
|
|
57
|
+
* @param {LeafDataItem[]} items The array of items to remove.
|
|
58
|
+
* @returns {boolean[]} An array of booleans indicating success for each item.
|
|
59
|
+
*/
|
|
60
|
+
removeItems(items: LeafDataItem[]): boolean[];
|
|
61
|
+
/**
|
|
62
|
+
* Updates multiple items in the hash tree.
|
|
63
|
+
* This method can handle both updating and removing items based on the `operation` flag.
|
|
64
|
+
*
|
|
65
|
+
* @param {object[]} itemUpdates An array of objects containing `operation` flag and the `item` to update.
|
|
66
|
+
* @returns {boolean[]} An array of booleans indicating success for each operation.
|
|
67
|
+
*/
|
|
68
|
+
updateItems(itemUpdates: {
|
|
69
|
+
operation: 'update' | 'remove';
|
|
70
|
+
item: LeafDataItem;
|
|
71
|
+
}[]): boolean[];
|
|
72
|
+
/**
|
|
73
|
+
* Computes the hash for a specific leaf.
|
|
74
|
+
* The hash is based on the sorted items within the leaf.
|
|
75
|
+
* @param {number} index The index of the leaf to compute the hash for.
|
|
76
|
+
* @returns {void}
|
|
77
|
+
*/
|
|
78
|
+
computeLeafHash(index: number): void;
|
|
79
|
+
/**
|
|
80
|
+
* Computes all internal and leaf node hashes of the tree.
|
|
81
|
+
* Internal node hashes are computed bottom-up from the leaf hashes.
|
|
82
|
+
* @returns {string[]} An array of hash strings, with internal node hashes first, followed by leaf hashes.
|
|
83
|
+
* Returns `[EMPTY_HASH]` if the tree has 0 leaves.
|
|
84
|
+
*/
|
|
85
|
+
computeTreeHashes(): string[];
|
|
86
|
+
/**
|
|
87
|
+
* Returns all hashes in the tree (internal nodes then leaf nodes).
|
|
88
|
+
* @returns {string[]} An array of hash strings.
|
|
89
|
+
*/
|
|
90
|
+
getHashes(): string[];
|
|
91
|
+
/**
|
|
92
|
+
* Computes and returns the hash value of the root node.
|
|
93
|
+
* @returns {string} The root hash of the entire tree. Returns `EMPTY_HASH` if the tree has 0 leaves.
|
|
94
|
+
*/
|
|
95
|
+
getRootHash(): string;
|
|
96
|
+
/**
|
|
97
|
+
* Gets the number of leaves in the tree.
|
|
98
|
+
* @returns {number} The number of leaves.
|
|
99
|
+
*/
|
|
100
|
+
getLeafCount(): number;
|
|
101
|
+
/**
|
|
102
|
+
* Calculates the total number of items stored in the tree.
|
|
103
|
+
* @returns {number} The total number of items.
|
|
104
|
+
*/
|
|
105
|
+
getTotalItemCount(): number;
|
|
106
|
+
/**
|
|
107
|
+
* Retrieves all data items from a specific leaf.
|
|
108
|
+
* @param {number} leafIndex The index of the leaf.
|
|
109
|
+
* @returns {LeafDataItem[]} An array of LeafDataItem in the specified leaf, sorted by ID,
|
|
110
|
+
* or an empty array if the index is invalid or leaf is empty.
|
|
111
|
+
*/
|
|
112
|
+
getLeafData(leafIndex: number): LeafDataItem[];
|
|
113
|
+
/**
|
|
114
|
+
* Resizes the HashTree to have a new number of leaf nodes, redistributing all existing items.
|
|
115
|
+
* @param {number} newNumLeaves The new number of leaf nodes (must be 0 or a power of 2).
|
|
116
|
+
* @returns {boolean} true if the tree was resized, false if the size didn't change.
|
|
117
|
+
* @throws {Error} if newNumLeaves is not 0 or a power of 2.
|
|
118
|
+
*/
|
|
119
|
+
resize(newNumLeaves: number): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Compares the tree's leaf hashes with an external set of hashes and returns the indices of differing leaf nodes.
|
|
122
|
+
* The externalHashes array is expected to contain all node hashes (internal followed by leaves),
|
|
123
|
+
* similar to the output of getHashes().
|
|
124
|
+
* @param {string[]} externalHashes An array of hash strings (internal node hashes then leaf hashes).
|
|
125
|
+
* @returns {number[]} An array of indices of the leaf nodes that have different hashes.
|
|
126
|
+
*/
|
|
127
|
+
diffHashes(externalHashes: string[]): number[];
|
|
128
|
+
}
|
|
129
|
+
export default HashTree;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import HashTree from './hashTree';
|
|
1
2
|
import { Enum } from '../constants';
|
|
2
3
|
import { HtMeta } from './types';
|
|
3
4
|
import { LocusDTO } from '../locus-info/types';
|
|
@@ -28,6 +29,7 @@ export interface HashTreeMessage {
|
|
|
28
29
|
locusUrl: string;
|
|
29
30
|
}
|
|
30
31
|
interface InternalDataSet extends DataSet {
|
|
32
|
+
hashTree?: HashTree;
|
|
31
33
|
timer?: ReturnType<typeof setTimeout>;
|
|
32
34
|
}
|
|
33
35
|
type WebexRequestMethod = (options: Record<string, any>) => Promise<any>;
|
|
@@ -69,6 +71,30 @@ declare class HashTreeParser {
|
|
|
69
71
|
locusInfoUpdateCallback: LocusInfoUpdateCallback;
|
|
70
72
|
debugId: string;
|
|
71
73
|
});
|
|
74
|
+
/**
|
|
75
|
+
* Initializes a new visible data set by creating a hash tree for it, adding it to all the internal structures,
|
|
76
|
+
* and sending an initial sync request to Locus with empty leaf data - that will trigger Locus to gives us all the data
|
|
77
|
+
* from that dataset (in the response or via messages).
|
|
78
|
+
*
|
|
79
|
+
* @param {DataSet} dataSet The new data set to be added
|
|
80
|
+
* @returns {Promise}
|
|
81
|
+
*/
|
|
82
|
+
private initializeNewVisibleDataSet;
|
|
83
|
+
/**
|
|
84
|
+
* Sends a special sync request to Locus with all leaves empty - this is a way to get all the data for a given dataset.
|
|
85
|
+
*
|
|
86
|
+
* @param {string} datasetName - name of the dataset for which to send the request
|
|
87
|
+
* @param {string} debugText - text to include in logs
|
|
88
|
+
* @returns {Promise}
|
|
89
|
+
*/
|
|
90
|
+
private sendInitializationSyncRequestToLocus;
|
|
91
|
+
/**
|
|
92
|
+
* Queries Locus for information about all the data sets
|
|
93
|
+
*
|
|
94
|
+
* @param {string} url - url from which we can get info about all data sets
|
|
95
|
+
* @returns {Promise}
|
|
96
|
+
*/
|
|
97
|
+
private getAllDataSetsMetadata;
|
|
72
98
|
/**
|
|
73
99
|
* Initializes the hash tree parser from a message received from Locus.
|
|
74
100
|
*
|
|
@@ -86,6 +112,39 @@ declare class HashTreeParser {
|
|
|
86
112
|
* @returns {Promise}
|
|
87
113
|
*/
|
|
88
114
|
initializeFromGetLociResponse(locus: LocusDTO): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Initializes data sets by doing an initialization sync on each visible data set that doesn't have a hash tree yet.
|
|
117
|
+
*
|
|
118
|
+
* @param {DataSet[]} dataSets Array of DataSet objects to initialize
|
|
119
|
+
* @param {string} debugText Text to include in logs for debugging purposes
|
|
120
|
+
* @returns {Promise}
|
|
121
|
+
*/
|
|
122
|
+
private initializeDataSets;
|
|
123
|
+
/**
|
|
124
|
+
* Each dataset exists at a different place in the dto
|
|
125
|
+
* iterate recursively over the locus and if it has a htMeta key,
|
|
126
|
+
* create an object with the type, id and version and add it to the appropriate leafData array
|
|
127
|
+
*
|
|
128
|
+
* @param {any} locus - The current part of the locus being processed
|
|
129
|
+
* @param {Object} [options]
|
|
130
|
+
* @param {boolean} [options.copyData=false] - Whether to copy the data for each leaf into returned result
|
|
131
|
+
* @returns {any} - An object mapping dataset names to arrays of leaf data
|
|
132
|
+
*/
|
|
133
|
+
private analyzeLocusHtMeta;
|
|
134
|
+
/**
|
|
135
|
+
* Checks if the provided hash tree message indicates the end of the meeting and that there won't be any more updates.
|
|
136
|
+
*
|
|
137
|
+
* @param {HashTreeMessage} message - The hash tree message to check
|
|
138
|
+
* @returns {boolean} - Returns true if the message indicates the end of the meeting, false otherwise
|
|
139
|
+
*/
|
|
140
|
+
private isEndMessage;
|
|
141
|
+
/**
|
|
142
|
+
* Handles the root hash heartbeat message
|
|
143
|
+
*
|
|
144
|
+
* @param {RootHashMessage} message - The root hash heartbeat message
|
|
145
|
+
* @returns {void}
|
|
146
|
+
*/
|
|
147
|
+
private handleRootHashHeartBeatMessage;
|
|
89
148
|
/**
|
|
90
149
|
* This method should be called when we receive a partial locus DTO that contains dataSets and htMeta information
|
|
91
150
|
* It updates the hash trees with the new leaf data based on the received Locus
|
|
@@ -97,6 +156,58 @@ declare class HashTreeParser {
|
|
|
97
156
|
dataSets?: Array<DataSet>;
|
|
98
157
|
locus: any;
|
|
99
158
|
}): void;
|
|
159
|
+
/**
|
|
160
|
+
* Updates the internal data set information based on the received data set from Locus.
|
|
161
|
+
*
|
|
162
|
+
* @param {DataSet} receivedDataSet - The latest data set information received from Locus to update the internal state.
|
|
163
|
+
* @returns {void}
|
|
164
|
+
*/
|
|
165
|
+
private updateDataSetInfo;
|
|
166
|
+
/**
|
|
167
|
+
* Checks for changes in the visible data sets based on the updated objects.
|
|
168
|
+
* @param {HashTreeObject[]} updatedObjects - The list of updated hash tree objects.
|
|
169
|
+
* @returns {Object} An object containing the removed and added visible data sets.
|
|
170
|
+
*/
|
|
171
|
+
private checkForVisibleDataSetChanges;
|
|
172
|
+
/**
|
|
173
|
+
* Deletes the hash tree for the specified data set.
|
|
174
|
+
*
|
|
175
|
+
* @param {string} dataSetName name of the data set to delete
|
|
176
|
+
* @returns {void}
|
|
177
|
+
*/
|
|
178
|
+
private deleteHashTree;
|
|
179
|
+
/**
|
|
180
|
+
* Adds entries to the passed in updateObjects array
|
|
181
|
+
* for the changes that result from removing visible data sets and creates hash
|
|
182
|
+
* trees for the new visible data sets, but without populating the hash trees.
|
|
183
|
+
*
|
|
184
|
+
* This function is synchronous. If we are missing information about some new
|
|
185
|
+
* visible data sets and they require async initialization, the names of these data sets
|
|
186
|
+
* are returned in an array.
|
|
187
|
+
*
|
|
188
|
+
* @param {string[]} removedDataSets - The list of removed data sets.
|
|
189
|
+
* @param {string[]} addedDataSets - The list of added data sets.
|
|
190
|
+
* @param {HashTreeObject[]} updatedObjects - The list of updated hash tree objects to which changes will be added.
|
|
191
|
+
* @returns {string[]} names of data sets that couldn't be initialized synchronously
|
|
192
|
+
*/
|
|
193
|
+
private processVisibleDataSetChanges;
|
|
194
|
+
/**
|
|
195
|
+
* Adds entries to the passed in updateObjects array
|
|
196
|
+
* for the changes that result from adding and removing visible data sets.
|
|
197
|
+
*
|
|
198
|
+
* @param {HashTreeMessage} message - The hash tree message that triggered the visible data set changes.
|
|
199
|
+
* @param {string[]} addedDataSets - The list of added data sets.
|
|
200
|
+
* @returns {Promise<void>}
|
|
201
|
+
*/
|
|
202
|
+
private initializeNewVisibleDataSets;
|
|
203
|
+
/**
|
|
204
|
+
* Parses incoming hash tree messages, updates the hash trees and returns information about the changes
|
|
205
|
+
*
|
|
206
|
+
* @param {HashTreeMessage} message - The hash tree message containing data sets and objects to be processed
|
|
207
|
+
* @param {string} [debugText] - Optional debug text to include in logs
|
|
208
|
+
* @returns {Promise}
|
|
209
|
+
*/
|
|
210
|
+
private parseMessage;
|
|
100
211
|
/**
|
|
101
212
|
* Handles incoming hash tree messages, updates the hash trees and calls locusInfoUpdateCallback
|
|
102
213
|
*
|
|
@@ -105,5 +216,45 @@ declare class HashTreeParser {
|
|
|
105
216
|
* @returns {void}
|
|
106
217
|
*/
|
|
107
218
|
handleMessage(message: HashTreeMessage, debugText?: string): Promise<void>;
|
|
219
|
+
/**
|
|
220
|
+
* Calls the updateInfo callback if there are any updates to report
|
|
221
|
+
*
|
|
222
|
+
* @param {Object} updates parsed from a Locus message
|
|
223
|
+
* @returns {void}
|
|
224
|
+
*/
|
|
225
|
+
private callLocusInfoUpdateCallback;
|
|
226
|
+
/**
|
|
227
|
+
* Calculates a weighted backoff time that should be used for syncs
|
|
228
|
+
*
|
|
229
|
+
* @param {Object} backoff - The backoff configuration containing maxMs and exponent
|
|
230
|
+
* @returns {number} - A weighted backoff time based on the provided configuration, using algorithm supplied by Locus team
|
|
231
|
+
*/
|
|
232
|
+
private getWeightedBackoffTime;
|
|
233
|
+
/**
|
|
234
|
+
* Runs the sync algorithm for the given data set.
|
|
235
|
+
*
|
|
236
|
+
* @param {DataSet} receivedDataSet - The data set to run the sync algorithm for.
|
|
237
|
+
* @returns {void}
|
|
238
|
+
*/
|
|
239
|
+
private runSyncAlgorithm;
|
|
240
|
+
/**
|
|
241
|
+
* Stops all timers for the data sets to prevent any further sync attempts.
|
|
242
|
+
* @returns {void}
|
|
243
|
+
*/
|
|
244
|
+
private stopAllTimers;
|
|
245
|
+
/**
|
|
246
|
+
* Gets the current hashes from the locus for a specific data set.
|
|
247
|
+
* @param {string} dataSetName
|
|
248
|
+
* @returns {string[]}
|
|
249
|
+
*/
|
|
250
|
+
private getHashesFromLocus;
|
|
251
|
+
/**
|
|
252
|
+
* Sends a sync request to Locus for the specified data set.
|
|
253
|
+
*
|
|
254
|
+
* @param {InternalDataSet} dataSet The data set to sync.
|
|
255
|
+
* @param {Record<number, LeafDataItem[]>} mismatchedLeavesData The mismatched leaves data to include in the sync request.
|
|
256
|
+
* @returns {Promise<HashTreeMessage|null>}
|
|
257
|
+
*/
|
|
258
|
+
private sendSyncRequestToLocus;
|
|
108
259
|
}
|
|
109
260
|
export default HashTreeParser;
|
|
@@ -4,8 +4,17 @@ export declare const ObjectType: {
|
|
|
4
4
|
readonly self: "self";
|
|
5
5
|
readonly locus: "locus";
|
|
6
6
|
readonly mediaShare: "mediashare";
|
|
7
|
+
readonly info: "info";
|
|
8
|
+
readonly fullState: "fullstate";
|
|
7
9
|
};
|
|
8
10
|
export type ObjectType = Enum<typeof ObjectType>;
|
|
11
|
+
export declare const ObjectTypeToLocusKeyMap: {
|
|
12
|
+
info: string;
|
|
13
|
+
fullstate: string;
|
|
14
|
+
self: string;
|
|
15
|
+
participant: string;
|
|
16
|
+
mediashare: string;
|
|
17
|
+
};
|
|
9
18
|
export interface HtMeta {
|
|
10
19
|
elementId: {
|
|
11
20
|
type: ObjectType;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analyzes given part of Locus DTO recursively and delete any nested objects that have their own htMeta
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} currentLocusPart part of locus DTO to analyze
|
|
5
|
+
* @param {Object} parent parent object
|
|
6
|
+
* @param {string|number} currentKey key of the parent object that currentLocusPart is
|
|
7
|
+
* @returns {void}
|
|
8
|
+
*/
|
|
9
|
+
export declare const deleteNestedObjectsWithHtMeta: (currentLocusPart: any, parent?: any, currentKey?: string | number) => void;
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { HtMeta } from '../hashTree/types';
|
|
2
|
+
export type LocusFullState = {
|
|
3
|
+
active: boolean;
|
|
4
|
+
count: number;
|
|
5
|
+
lastActive: string;
|
|
6
|
+
locked: boolean;
|
|
7
|
+
sessionId: string;
|
|
8
|
+
seessionIds: string[];
|
|
9
|
+
startTime: number;
|
|
10
|
+
state: string;
|
|
11
|
+
type: string;
|
|
12
|
+
};
|
|
2
13
|
export type LocusDTO = {
|
|
3
14
|
controls?: any;
|
|
4
|
-
fullState?:
|
|
5
|
-
active: boolean;
|
|
6
|
-
count: number;
|
|
7
|
-
lastActive: string;
|
|
8
|
-
locked: boolean;
|
|
9
|
-
sessionId: string;
|
|
10
|
-
seessionIds: string[];
|
|
11
|
-
startTime: number;
|
|
12
|
-
state: string;
|
|
13
|
-
type: string;
|
|
14
|
-
};
|
|
15
|
+
fullState?: LocusFullState;
|
|
15
16
|
host?: {
|
|
16
17
|
id: string;
|
|
17
18
|
incomingCallProtocols: any[];
|
package/dist/webinar/index.js
CHANGED
package/package.json
CHANGED
|
@@ -43,12 +43,12 @@
|
|
|
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-rooms": "3.10.0-next.
|
|
47
|
-
"@webex/test-helper-chai": "3.
|
|
48
|
-
"@webex/test-helper-mocha": "3.
|
|
49
|
-
"@webex/test-helper-mock-webex": "3.
|
|
50
|
-
"@webex/test-helper-retry": "3.
|
|
51
|
-
"@webex/test-helper-test-users": "3.
|
|
46
|
+
"@webex/plugin-rooms": "3.10.0-next.7",
|
|
47
|
+
"@webex/test-helper-chai": "3.10.0-next.1",
|
|
48
|
+
"@webex/test-helper-mocha": "3.10.0-next.1",
|
|
49
|
+
"@webex/test-helper-mock-webex": "3.10.0-next.1",
|
|
50
|
+
"@webex/test-helper-retry": "3.10.0-next.1",
|
|
51
|
+
"@webex/test-helper-test-users": "3.10.0-next.1",
|
|
52
52
|
"chai": "^4.3.4",
|
|
53
53
|
"chai-as-promised": "^7.1.1",
|
|
54
54
|
"eslint": "^8.24.0",
|
|
@@ -60,23 +60,23 @@
|
|
|
60
60
|
"typescript": "^4.7.4"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@webex/common": "3.
|
|
63
|
+
"@webex/common": "3.10.0-next.1",
|
|
64
64
|
"@webex/event-dictionary-ts": "^1.0.1930",
|
|
65
65
|
"@webex/internal-media-core": "2.20.3",
|
|
66
|
-
"@webex/internal-plugin-conversation": "3.10.0-next.
|
|
67
|
-
"@webex/internal-plugin-device": "3.10.0-next.
|
|
68
|
-
"@webex/internal-plugin-llm": "3.10.0-next.
|
|
69
|
-
"@webex/internal-plugin-mercury": "3.10.0-next.
|
|
70
|
-
"@webex/internal-plugin-metrics": "3.10.0-next.
|
|
71
|
-
"@webex/internal-plugin-support": "3.10.0-next.
|
|
72
|
-
"@webex/internal-plugin-user": "3.10.0-next.
|
|
73
|
-
"@webex/internal-plugin-voicea": "3.10.0-next.
|
|
74
|
-
"@webex/media-helpers": "3.10.0-next.
|
|
75
|
-
"@webex/plugin-people": "3.10.0-next.
|
|
76
|
-
"@webex/plugin-rooms": "3.10.0-next.
|
|
66
|
+
"@webex/internal-plugin-conversation": "3.10.0-next.7",
|
|
67
|
+
"@webex/internal-plugin-device": "3.10.0-next.7",
|
|
68
|
+
"@webex/internal-plugin-llm": "3.10.0-next.7",
|
|
69
|
+
"@webex/internal-plugin-mercury": "3.10.0-next.7",
|
|
70
|
+
"@webex/internal-plugin-metrics": "3.10.0-next.7",
|
|
71
|
+
"@webex/internal-plugin-support": "3.10.0-next.7",
|
|
72
|
+
"@webex/internal-plugin-user": "3.10.0-next.7",
|
|
73
|
+
"@webex/internal-plugin-voicea": "3.10.0-next.9",
|
|
74
|
+
"@webex/media-helpers": "3.10.0-next.3",
|
|
75
|
+
"@webex/plugin-people": "3.10.0-next.7",
|
|
76
|
+
"@webex/plugin-rooms": "3.10.0-next.7",
|
|
77
77
|
"@webex/ts-sdp": "^1.8.1",
|
|
78
78
|
"@webex/web-capabilities": "^1.7.1",
|
|
79
|
-
"@webex/webex-core": "3.10.0-next.
|
|
79
|
+
"@webex/webex-core": "3.10.0-next.7",
|
|
80
80
|
"ampersand-collection": "^2.0.2",
|
|
81
81
|
"bowser": "^2.11.0",
|
|
82
82
|
"btoa": "^1.2.1",
|
|
@@ -87,10 +87,11 @@
|
|
|
87
87
|
"jwt-decode": "3.1.2",
|
|
88
88
|
"lodash": "^4.17.21",
|
|
89
89
|
"uuid": "^3.3.2",
|
|
90
|
-
"webrtc-adapter": "^8.1.2"
|
|
90
|
+
"webrtc-adapter": "^8.1.2",
|
|
91
|
+
"xxh3-ts": "^2.0.1"
|
|
91
92
|
},
|
|
92
93
|
"//": [
|
|
93
94
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
94
95
|
],
|
|
95
|
-
"version": "3.10.0-next.
|
|
96
|
+
"version": "3.10.0-next.15"
|
|
96
97
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const EMPTY_HASH = '99aa06d3014798d86001c324468d497f';
|
|
2
|
+
|
|
3
|
+
export const DataSetNames = {
|
|
4
|
+
MAIN: 'main', // sent to web client, contains also panelists, over LLM
|
|
5
|
+
ATTENDEES: 'attendees', // NOT SENT to web client, all the attendees in the locus
|
|
6
|
+
ATD_ACTIVE: 'atd-active', // only sent to panelists, over LLM; the attendees that have their hands raised or are allowed to unmute themselves
|
|
7
|
+
ATD_UNMUTED: 'atd-unmuted', // sent to web client, over LLM, not sent to panelists; the attendees that are unmuted
|
|
8
|
+
SELF: 'self', // sent to web client, over Mercury
|
|
9
|
+
};
|