@webex/plugin-meetings 3.10.0-next.9 → 3.10.0-set-bitrate.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +11 -3
  4. package/dist/constants.js.map +1 -1
  5. package/dist/hashTree/constants.js +20 -0
  6. package/dist/hashTree/constants.js.map +1 -0
  7. package/dist/hashTree/hashTree.js +515 -0
  8. package/dist/hashTree/hashTree.js.map +1 -0
  9. package/dist/hashTree/hashTreeParser.js +1266 -0
  10. package/dist/hashTree/hashTreeParser.js.map +1 -0
  11. package/dist/hashTree/types.js +22 -0
  12. package/dist/hashTree/types.js.map +1 -0
  13. package/dist/hashTree/utils.js +48 -0
  14. package/dist/hashTree/utils.js.map +1 -0
  15. package/dist/interpretation/index.js +1 -1
  16. package/dist/interpretation/siLanguage.js +1 -1
  17. package/dist/locus-info/index.js +550 -130
  18. package/dist/locus-info/index.js.map +1 -1
  19. package/dist/locus-info/types.js +7 -0
  20. package/dist/locus-info/types.js.map +1 -0
  21. package/dist/meeting/index.js +100 -50
  22. package/dist/meeting/index.js.map +1 -1
  23. package/dist/meeting/util.js +1 -0
  24. package/dist/meeting/util.js.map +1 -1
  25. package/dist/meetings/index.js +112 -70
  26. package/dist/meetings/index.js.map +1 -1
  27. package/dist/metrics/constants.js +3 -1
  28. package/dist/metrics/constants.js.map +1 -1
  29. package/dist/reachability/clusterReachability.js +44 -358
  30. package/dist/reachability/clusterReachability.js.map +1 -1
  31. package/dist/reachability/reachability.types.js +14 -1
  32. package/dist/reachability/reachability.types.js.map +1 -1
  33. package/dist/reachability/reachabilityPeerConnection.js +445 -0
  34. package/dist/reachability/reachabilityPeerConnection.js.map +1 -0
  35. package/dist/types/constants.d.ts +26 -21
  36. package/dist/types/hashTree/constants.d.ts +8 -0
  37. package/dist/types/hashTree/hashTree.d.ts +129 -0
  38. package/dist/types/hashTree/hashTreeParser.d.ts +260 -0
  39. package/dist/types/hashTree/types.d.ts +27 -0
  40. package/dist/types/hashTree/utils.d.ts +9 -0
  41. package/dist/types/locus-info/index.d.ts +97 -80
  42. package/dist/types/locus-info/types.d.ts +54 -0
  43. package/dist/types/meeting/index.d.ts +23 -9
  44. package/dist/types/meetings/index.d.ts +9 -2
  45. package/dist/types/metrics/constants.d.ts +2 -0
  46. package/dist/types/reachability/clusterReachability.d.ts +10 -88
  47. package/dist/types/reachability/reachability.types.d.ts +12 -1
  48. package/dist/types/reachability/reachabilityPeerConnection.d.ts +111 -0
  49. package/dist/webinar/index.js +1 -1
  50. package/package.json +23 -22
  51. package/src/constants.ts +13 -1
  52. package/src/hashTree/constants.ts +9 -0
  53. package/src/hashTree/hashTree.ts +463 -0
  54. package/src/hashTree/hashTreeParser.ts +1161 -0
  55. package/src/hashTree/types.ts +32 -0
  56. package/src/hashTree/utils.ts +42 -0
  57. package/src/locus-info/index.ts +597 -154
  58. package/src/locus-info/types.ts +53 -0
  59. package/src/meeting/index.ts +88 -28
  60. package/src/meeting/util.ts +1 -0
  61. package/src/meetings/index.ts +104 -51
  62. package/src/metrics/constants.ts +2 -0
  63. package/src/reachability/clusterReachability.ts +50 -347
  64. package/src/reachability/reachability.types.ts +15 -1
  65. package/src/reachability/reachabilityPeerConnection.ts +416 -0
  66. package/test/unit/spec/hashTree/hashTree.ts +655 -0
  67. package/test/unit/spec/hashTree/hashTreeParser.ts +1532 -0
  68. package/test/unit/spec/hashTree/utils.ts +103 -0
  69. package/test/unit/spec/locus-info/index.js +795 -16
  70. package/test/unit/spec/meeting/index.js +120 -20
  71. package/test/unit/spec/meeting/utils.js +77 -0
  72. package/test/unit/spec/meetings/index.js +71 -26
  73. package/test/unit/spec/reachability/clusterReachability.ts +281 -138
@@ -0,0 +1,54 @@
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
+ };
13
+ export type Links = {
14
+ services: Record<'breakout' | 'record', {
15
+ url: string;
16
+ }>;
17
+ resources: Record<'webcastInstance' | 'visibleDataSets', {
18
+ url: string;
19
+ }>;
20
+ };
21
+ export type LocusDTO = {
22
+ controls?: any;
23
+ fullState?: LocusFullState;
24
+ host?: {
25
+ id: string;
26
+ incomingCallProtocols: any[];
27
+ isExternal: boolean;
28
+ name: string;
29
+ orgId: string;
30
+ };
31
+ htMeta?: HtMeta;
32
+ info?: any;
33
+ jsSdkMeta?: {
34
+ removedParticipantIds: string[];
35
+ };
36
+ links?: Links;
37
+ mediaShares?: any[];
38
+ meetings?: any[];
39
+ participants: any[];
40
+ replaces?: any[];
41
+ self?: any;
42
+ sequence?: {
43
+ dirtyParticipants: number;
44
+ entries: number[];
45
+ rangeEnd: number;
46
+ rangeStart: number;
47
+ sequenceHash: number;
48
+ sessionToken: string;
49
+ since: string;
50
+ totalParticipants: number;
51
+ };
52
+ syncUrl?: string;
53
+ url?: string;
54
+ };
@@ -23,6 +23,8 @@ import { LocusMediaRequest } from './locusMediaRequest';
23
23
  import { BrbState } from './brbState';
24
24
  import { SetStageOptions } from './request.type';
25
25
  import { Invitee } from './type';
26
+ import { DataSet } from '../hashTree/hashTreeParser';
27
+ import { LocusDTO } from '../locus-info/types';
26
28
  export type CaptionData = {
27
29
  id: string;
28
30
  isFinal: boolean;
@@ -456,6 +458,7 @@ export default class Meeting extends StatelessWebexPlugin {
456
458
  localAudioStreamMuteStateHandler: () => void;
457
459
  localVideoStreamMuteStateHandler: () => void;
458
460
  localOutputTrackChangeHandler: () => void;
461
+ localConstraintsChangeHandler: () => void;
459
462
  roles: any[];
460
463
  environment: string;
461
464
  namespace: string;
@@ -1034,25 +1037,30 @@ export default class Meeting extends StatelessWebexPlugin {
1034
1037
  */
1035
1038
  setSipUri(sipUri: string): void;
1036
1039
  /**
1037
- * Set the locus info the class instance
1038
- * @param {Object} locus
1039
- * @param {Array} locus.mediaConnections
1040
- * @param {String} locus.locusUrl
1041
- * @param {String} locus.locusId
1042
- * @param {String} locus.mediaId
1043
- * @param {Object} locus.host
1040
+ * Set the locus info the class instance. Should be called with the parsed locus
1041
+ * we got in the join response.
1042
+ *
1043
+ * @param {Object} data
1044
+ * @param {Array} data.mediaConnections
1045
+ * @param {String} data.locusUrl
1046
+ * @param {String} data.locusId
1047
+ * @param {String} data.mediaId
1048
+ * @param {Object} data.host
1044
1049
  * @todo change name to genertic parser
1045
1050
  * @returns {undefined}
1046
1051
  * @private
1047
1052
  * @memberof Meeting
1048
1053
  */
1049
- setLocus(locus: {
1054
+ setLocus(data: {
1055
+ locus: LocusDTO;
1050
1056
  mediaConnections: Array<any>;
1051
1057
  locusUrl: string;
1052
1058
  locusId: string;
1053
1059
  mediaId: string;
1054
1060
  host: object;
1055
- } | any): void;
1061
+ selfId: string;
1062
+ dataSets: DataSet[];
1063
+ }): void;
1056
1064
  /**
1057
1065
  * Upload logs for the current meeting
1058
1066
  * @param {object} options file name and function name
@@ -1269,6 +1277,12 @@ export default class Meeting extends StatelessWebexPlugin {
1269
1277
  startTranscription(options?: {
1270
1278
  spokenLanguage?: string;
1271
1279
  }): Promise<void>;
1280
+ /** Handles Locus LLM events
1281
+ *
1282
+ * @param {LocusLLMEvent} event - The Locus LLM event to process
1283
+ * @returns {void}
1284
+ */
1285
+ private processLocusLLMEvent;
1272
1286
  /**
1273
1287
  * Callback called when a relay event is received from meeting LLM Connection
1274
1288
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -5,10 +5,17 @@ import { WebexPlugin } from '@webex/webex-core';
5
5
  import { DeviceRegistrationOptions } from '@webex/internal-plugin-device';
6
6
  import * as mediaHelpersModule from '@webex/media-helpers';
7
7
  import 'webrtc-adapter';
8
- import { DESTINATION_TYPE } from '../constants';
8
+ import { LOCUSEVENT, DESTINATION_TYPE } from '../constants';
9
9
  import { CallStateForMetrics } from '../meeting';
10
10
  import Reachability from '../reachability';
11
11
  import { INoiseReductionEffect, IVirtualBackgroundEffect, MeetingRegistrationStatus } from './meetings.types';
12
+ import { HashTreeMessage } from '../hashTree/hashTreeParser';
13
+ export type LocusEvent = {
14
+ eventType: LOCUSEVENT;
15
+ locusUrl?: string;
16
+ locus?: any;
17
+ stateElementsMessage?: HashTreeMessage;
18
+ };
12
19
  /**
13
20
  * Meetings Ready Event
14
21
  * Emitted when the meetings instance on webex is ready
@@ -129,7 +136,7 @@ export default class Meetings extends WebexPlugin {
129
136
  * @private
130
137
  * @memberof Meetings
131
138
  */
132
- getCorrespondingMeetingByLocus(data: any): any;
139
+ getCorrespondingMeetingByLocus(data: LocusEvent): any;
133
140
  /**
134
141
  * handle locus events and takes meeting actions with them as they come in
135
142
  * @param {Object} data a locus event
@@ -84,5 +84,7 @@ declare const BEHAVIORAL_METRICS: {
84
84
  VERIFY_REGISTRATION_ID_ERROR: string;
85
85
  JOIN_FORBIDDEN_ERROR: string;
86
86
  MEDIA_ISSUE_DETECTED: string;
87
+ LOCUS_CLASSIC_VS_HASH_TREE_MISMATCH: string;
88
+ LOCUS_HASH_TREE_UNSUPPORTED_OPERATION: string;
87
89
  };
88
90
  export { BEHAVIORAL_METRICS as default };
@@ -23,17 +23,11 @@ export declare const Events: {
23
23
  export type Events = Enum<typeof Events>;
24
24
  /**
25
25
  * A class that handles reachability checks for a single cluster.
26
- * It emits events from Events enum
26
+ * Creates and orchestrates a ReachabilityPeerConnection instance.
27
+ * Listens to events and emits them to consumers.
27
28
  */
28
29
  export declare class ClusterReachability extends EventsScope {
29
- private numUdpUrls;
30
- private numTcpUrls;
31
- private numXTlsUrls;
32
- private result;
33
- private pc?;
34
- private defer;
35
- private startTimestamp;
36
- private srflxIceCandidates;
30
+ private reachabilityPeerConnection;
37
31
  readonly isVideoMesh: boolean;
38
32
  readonly name: any;
39
33
  readonly reachedSubnets: Set<string>;
@@ -44,94 +38,22 @@ export declare class ClusterReachability extends EventsScope {
44
38
  */
45
39
  constructor(name: string, clusterInfo: ClusterNode);
46
40
  /**
47
- * Gets total elapsed time, can be called only after start() is called
48
- * @returns {Number} Milliseconds
49
- */
50
- private getElapsedTime;
51
- /**
52
- * Generate peerConnection config settings
53
- * @param {ClusterNode} cluster
54
- * @returns {RTCConfiguration} peerConnectionConfig
55
- */
56
- private buildPeerConnectionConfig;
57
- /**
58
- * Creates an RTCPeerConnection
59
- * @param {ClusterNode} clusterInfo information about the media cluster
60
- * @returns {RTCPeerConnection} peerConnection
41
+ * Sets up event listeners for the ReachabilityPeerConnection instance
42
+ * @returns {void}
61
43
  */
62
- private createPeerConnection;
44
+ private setupReachabilityPeerConnectionEventListeners;
63
45
  /**
64
46
  * @returns {ClusterReachabilityResult} reachability result for this cluster
65
47
  */
66
48
  getResult(): ClusterReachabilityResult;
67
49
  /**
68
- * Closes the peerConnection
69
- *
70
- * @returns {void}
71
- */
72
- private closePeerConnection;
73
- /**
74
- * Resolves the defer, indicating that reachability checks for this cluster are completed
75
- *
76
- * @returns {void}
50
+ * Starts the process of doing UDP, TCP, and XTLS reachability checks on the media cluster.
51
+ * @returns {Promise<ClusterReachabilityResult>}
77
52
  */
78
- private finishReachabilityCheck;
53
+ start(): Promise<ClusterReachabilityResult>;
79
54
  /**
80
- * Aborts the cluster reachability checks by closing the peer connection
81
- *
55
+ * Aborts the cluster reachability checks
82
56
  * @returns {void}
83
57
  */
84
58
  abort(): void;
85
- /**
86
- * Adds public IP (client media IPs)
87
- * @param {string} protocol
88
- * @param {string} publicIP
89
- * @returns {void}
90
- */
91
- private addPublicIP;
92
- /**
93
- * Registers a listener for the iceGatheringStateChange event
94
- *
95
- * @returns {void}
96
- */
97
- private registerIceGatheringStateChangeListener;
98
- /**
99
- * Saves the latency in the result for the given protocol and marks it as reachable,
100
- * emits the "resultReady" event if this is the first result for that protocol,
101
- * emits the "clientMediaIpsUpdated" event if we already had a result and only found
102
- * a new client IP
103
- *
104
- * @param {string} protocol
105
- * @param {number} latency
106
- * @param {string|null} [publicIp]
107
- * @param {string|null} [serverIp]
108
- * @returns {void}
109
- */
110
- private saveResult;
111
- /**
112
- * Determines NAT Type.
113
- *
114
- * @param {RTCIceCandidate} candidate
115
- * @returns {void}
116
- */
117
- private determineNatType;
118
- /**
119
- * Registers a listener for the icecandidate event
120
- *
121
- * @returns {void}
122
- */
123
- private registerIceCandidateListener;
124
- /**
125
- * Starts the process of doing UDP and TCP reachability checks on the media cluster.
126
- * XTLS reachability checking is not supported.
127
- *
128
- * @returns {Promise}
129
- */
130
- start(): Promise<ClusterReachabilityResult>;
131
- /**
132
- * Starts the process of gathering ICE candidates
133
- *
134
- * @returns {Promise} promise that's resolved once reachability checks for this cluster are completed or timeout is reached
135
- */
136
- private gatherIceCandidates;
137
59
  }
@@ -1,4 +1,15 @@
1
- import { IP_VERSION } from '../constants';
1
+ import { IP_VERSION, Enum } from '../constants';
2
+ export type Protocol = 'udp' | 'tcp' | 'xtls';
3
+ /**
4
+ * Events emitted by ReachabilityPeerConnection
5
+ */
6
+ export declare const ReachabilityPeerConnectionEvents: {
7
+ readonly resultReady: "resultReady";
8
+ readonly clientMediaIpsUpdated: "clientMediaIpsUpdated";
9
+ readonly natTypeUpdated: "natTypeUpdated";
10
+ readonly reachedSubnets: "reachedSubnets";
11
+ };
12
+ export type ReachabilityPeerConnectionEvents = Enum<typeof ReachabilityPeerConnectionEvents>;
2
13
  export type TransportResult = {
3
14
  result: 'reachable' | 'unreachable' | 'untested';
4
15
  latencyInMilliseconds?: number;
@@ -0,0 +1,111 @@
1
+ import { ClusterNode } from './request';
2
+ import EventsScope from '../common/events/events-scope';
3
+ import { ClusterReachabilityResult } from './reachability.types';
4
+ /**
5
+ * A class to handle RTCPeerConnection lifecycle and ICE candidate gathering for reachability checks.
6
+ * It will do all the work like PeerConnection lifecycle, candidate processing, result management, and event emission.
7
+ */
8
+ export declare class ReachabilityPeerConnection extends EventsScope {
9
+ numUdpUrls: number;
10
+ numTcpUrls: number;
11
+ numXTlsUrls: number;
12
+ private pc;
13
+ private defer;
14
+ private startTimestamp;
15
+ private srflxIceCandidates;
16
+ private clusterName;
17
+ private result;
18
+ private emittedSubnets;
19
+ /**
20
+ * Constructor for ReachabilityPeerConnection
21
+ * @param {string} clusterName name of the cluster
22
+ * @param {ClusterNode} clusterInfo information about the media cluster
23
+ */
24
+ constructor(clusterName: string, clusterInfo: ClusterNode);
25
+ /**
26
+ * Gets total elapsed time, can be called only after start() is called
27
+ * @returns {number} Milliseconds
28
+ */
29
+ private getElapsedTime;
30
+ /**
31
+ * Generate peerConnection config settings
32
+ * @param {ClusterNode} cluster
33
+ * @returns {RTCConfiguration} peerConnectionConfig
34
+ */
35
+ private static buildPeerConnectionConfig;
36
+ /**
37
+ * Creates an RTCPeerConnection
38
+ * @param {ClusterNode} clusterInfo information about the media cluster
39
+ * @returns {RTCPeerConnection|null} peerConnection
40
+ */
41
+ private createPeerConnection;
42
+ /**
43
+ * @returns {ClusterReachabilityResult} reachability result for this instance
44
+ */
45
+ getResult(): ClusterReachabilityResult;
46
+ /**
47
+ * Closes the peerConnection
48
+ * @returns {void}
49
+ */
50
+ private closePeerConnection;
51
+ /**
52
+ * Resolves the defer, indicating that reachability checks for this cluster are completed
53
+ *
54
+ * @returns {void}
55
+ */
56
+ private finishReachabilityCheck;
57
+ /**
58
+ * Aborts the cluster reachability checks by closing the peer connection
59
+ *
60
+ * @returns {void}
61
+ */
62
+ abort(): void;
63
+ /**
64
+ * Adds public IP (client media IPs)
65
+ * @param {string} protocol
66
+ * @param {string} publicIp
67
+ * @returns {void}
68
+ */
69
+ private addPublicIp;
70
+ /**
71
+ * Registers a listener for the iceGatheringStateChange event
72
+ *
73
+ * @returns {void}
74
+ */
75
+ private registerIceGatheringStateChangeListener;
76
+ /**
77
+ * Saves the latency in the result for the given protocol and marks it as reachable,
78
+ * emits the "resultReady" event if this is the first result for that protocol,
79
+ * emits the "clientMediaIpsUpdated" event if we already had a result and only found
80
+ * a new client IP
81
+ *
82
+ * @param {string} protocol
83
+ * @param {number} latency
84
+ * @param {string|null} [publicIp]
85
+ * @param {string|null} [serverIp]
86
+ * @returns {void}
87
+ */
88
+ private saveResult;
89
+ /**
90
+ * Determines NAT type by analyzing server reflexive candidate patterns
91
+ * @param {RTCIceCandidate} candidate server reflexive candidate
92
+ * @returns {void}
93
+ */
94
+ private determineNatTypeForSrflxCandidate;
95
+ /**
96
+ * Registers a listener for the icecandidate event
97
+ *
98
+ * @returns {void}
99
+ */
100
+ private registerIceCandidateListener;
101
+ /**
102
+ * Starts the process of doing UDP, TCP, and XTLS reachability checks.
103
+ * @returns {Promise<ClusterReachabilityResult>}
104
+ */
105
+ start(): Promise<ClusterReachabilityResult>;
106
+ /**
107
+ * Starts the process of gathering ICE candidates
108
+ * @returns {Promise} promise that's resolved once reachability checks are completed or timeout is reached
109
+ */
110
+ private gatherIceCandidates;
111
+ }
@@ -448,7 +448,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
448
448
  }, _callee7);
449
449
  }))();
450
450
  },
451
- version: "3.10.0-next.9"
451
+ version: "3.10.0-set-bitrate.2"
452
452
  });
453
453
  var _default = exports.default = Webinar;
454
454
  //# sourceMappingURL=index.js.map
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.4",
47
- "@webex/test-helper-chai": "3.8.1-next.11",
48
- "@webex/test-helper-mocha": "3.8.1-next.11",
49
- "@webex/test-helper-mock-webex": "3.8.1-next.11",
50
- "@webex/test-helper-retry": "3.8.1-next.11",
51
- "@webex/test-helper-test-users": "3.8.1-next.11",
46
+ "@webex/plugin-rooms": "3.10.0-set-bitrate.1",
47
+ "@webex/test-helper-chai": "3.10.0-set-bitrate.1",
48
+ "@webex/test-helper-mocha": "3.10.0-set-bitrate.1",
49
+ "@webex/test-helper-mock-webex": "3.10.0-set-bitrate.1",
50
+ "@webex/test-helper-retry": "3.10.0-set-bitrate.1",
51
+ "@webex/test-helper-test-users": "3.10.0-set-bitrate.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.8.1-next.11",
63
+ "@webex/common": "3.10.0-set-bitrate.1",
64
64
  "@webex/event-dictionary-ts": "^1.0.1930",
65
- "@webex/internal-media-core": "2.20.3",
66
- "@webex/internal-plugin-conversation": "3.10.0-next.4",
67
- "@webex/internal-plugin-device": "3.10.0-next.4",
68
- "@webex/internal-plugin-llm": "3.10.0-next.4",
69
- "@webex/internal-plugin-mercury": "3.10.0-next.4",
70
- "@webex/internal-plugin-metrics": "3.10.0-next.4",
71
- "@webex/internal-plugin-support": "3.10.0-next.4",
72
- "@webex/internal-plugin-user": "3.10.0-next.4",
73
- "@webex/internal-plugin-voicea": "3.10.0-next.5",
74
- "@webex/media-helpers": "3.10.0-next.2",
75
- "@webex/plugin-people": "3.10.0-next.4",
76
- "@webex/plugin-rooms": "3.10.0-next.4",
65
+ "@webex/internal-media-core": "2.21.0",
66
+ "@webex/internal-plugin-conversation": "3.10.0-set-bitrate.1",
67
+ "@webex/internal-plugin-device": "3.10.0-set-bitrate.1",
68
+ "@webex/internal-plugin-llm": "3.10.0-set-bitrate.1",
69
+ "@webex/internal-plugin-mercury": "3.10.0-set-bitrate.1",
70
+ "@webex/internal-plugin-metrics": "3.10.0-set-bitrate.1",
71
+ "@webex/internal-plugin-support": "3.10.0-set-bitrate.1",
72
+ "@webex/internal-plugin-user": "3.10.0-set-bitrate.1",
73
+ "@webex/internal-plugin-voicea": "3.10.0-set-bitrate.1",
74
+ "@webex/media-helpers": "3.10.0-set-bitrate.2",
75
+ "@webex/plugin-people": "3.10.0-set-bitrate.1",
76
+ "@webex/plugin-rooms": "3.10.0-set-bitrate.1",
77
77
  "@webex/ts-sdp": "^1.8.1",
78
78
  "@webex/web-capabilities": "^1.7.1",
79
- "@webex/webex-core": "3.10.0-next.4",
79
+ "@webex/webex-core": "3.10.0-set-bitrate.1",
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.9"
96
+ "version": "3.10.0-set-bitrate.2"
96
97
  }
package/src/constants.ts CHANGED
@@ -793,7 +793,19 @@ export const LOCUSEVENT = {
793
793
  RECORDING_STOPPED: 'locus.recording_stopped',
794
794
 
795
795
  SELF_CHANGED: 'locus.self_changed',
796
- };
796
+
797
+ HASH_TREE_DATA_UPDATED: 'locus.state_message',
798
+
799
+ // events generated internally by SDK
800
+ SDK_LOCUS_FROM_SYNC_MEETINGS: 'jsSdk.locus_from_sync_meetings', // generated for each meeting from response to GET /loci Locus API call
801
+ SDK_NO_EVENT: 'jsSdk.no_event', // used in cases where eventType is irrelevant
802
+ } as const;
803
+
804
+ export type LOCUSEVENT = Enum<typeof LOCUSEVENT>;
805
+
806
+ // HASH_TREE_DATA_UPDATED event can come over Mercury (so it's listed above with other Mercury events),
807
+ // but also over LLM as an event like this:
808
+ export const LOCUS_LLM_EVENT = `event:${LOCUSEVENT.HASH_TREE_DATA_UPDATED}`;
797
809
 
798
810
  export const MEDIA_TRACK_CONSTRAINT = {
799
811
  CURSOR: {
@@ -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
+ };