@webex/plugin-meetings 3.12.0-next.9 → 3.12.0-next.91
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/AGENTS.md +9 -0
- package/dist/aiEnableRequest/index.js +15 -2
- package/dist/aiEnableRequest/index.js.map +1 -1
- package/dist/breakouts/breakout.js +8 -3
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/index.js +26 -2
- package/dist/breakouts/index.js.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/constants.js +35 -9
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +11 -1
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/index.js +67 -29
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +91 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/hashTree/constants.js +13 -1
- package/dist/hashTree/constants.js.map +1 -1
- package/dist/hashTree/hashTreeParser.js +880 -382
- package/dist/hashTree/hashTreeParser.js.map +1 -1
- package/dist/hashTree/utils.js +42 -0
- package/dist/hashTree/utils.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/interceptors/dataChannelAuthToken.js +75 -15
- package/dist/interceptors/dataChannelAuthToken.js.map +1 -1
- package/dist/interceptors/locusRetry.js +23 -8
- package/dist/interceptors/locusRetry.js.map +1 -1
- package/dist/interpretation/index.js +10 -1
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/interpretation.types.js +7 -0
- package/dist/interpretation/interpretation.types.js.map +1 -0
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +4 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +303 -88
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +36 -5
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/types.js +19 -0
- package/dist/locus-info/types.js.map +1 -1
- package/dist/media/index.js +3 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +1 -0
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1233 -793
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +229 -82
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +10 -1
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +5 -2
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +35 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +2 -2
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +231 -118
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +6 -1
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/request.js +39 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +79 -5
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +10 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +30 -0
- package/dist/member/util.js.map +1 -1
- package/dist/members/index.js +101 -43
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js +8 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +5 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/codec/constants.js +63 -0
- package/dist/multistream/codec/constants.js.map +1 -0
- package/dist/multistream/mediaRequestManager.js +62 -15
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +9 -0
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/reachability/index.js +10 -13
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachability.types.js +2 -0
- package/dist/reachability/reachability.types.js.map +1 -1
- package/dist/reachability/util.js +45 -0
- package/dist/reachability/util.js.map +1 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/recording-controller/index.js +1 -3
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/types/config.d.ts +2 -2
- package/dist/types/constants.d.ts +12 -1
- package/dist/types/controls-options-manager/constants.d.ts +6 -1
- package/dist/types/controls-options-manager/index.d.ts +16 -0
- package/dist/types/hashTree/constants.d.ts +2 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +146 -17
- package/dist/types/hashTree/utils.d.ts +18 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/interceptors/locusRetry.d.ts +4 -4
- package/dist/types/interpretation/interpretation.types.d.ts +10 -0
- package/dist/types/locus-info/index.d.ts +50 -6
- package/dist/types/locus-info/infoUtils.d.ts +8 -0
- package/dist/types/locus-info/types.d.ts +21 -1
- package/dist/types/media/properties.d.ts +1 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
- package/dist/types/meeting/index.d.ts +94 -7
- package/dist/types/meeting/locusMediaRequest.d.ts +12 -0
- package/dist/types/meeting/request.d.ts +1 -0
- package/dist/types/meeting/util.d.ts +9 -0
- package/dist/types/meetings/index.d.ts +30 -18
- package/dist/types/meetings/meetings.types.d.ts +15 -0
- package/dist/types/meetings/request.d.ts +14 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/member/util.d.ts +9 -0
- package/dist/types/members/index.d.ts +15 -2
- package/dist/types/members/util.d.ts +1 -5
- package/dist/types/metrics/constants.d.ts +4 -0
- package/dist/types/multistream/codec/constants.d.ts +7 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +22 -5
- package/dist/types/reachability/index.d.ts +1 -1
- package/dist/types/reachability/reachability.types.d.ts +7 -0
- package/dist/types/reachability/util.d.ts +17 -0
- package/dist/types/reactions/reactions.type.d.ts +3 -0
- package/dist/webinar/index.js +305 -159
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/aiEnableRequest/index.ts +16 -0
- package/src/breakouts/breakout.ts +3 -1
- package/src/breakouts/index.ts +31 -0
- package/src/config.ts +2 -2
- package/src/constants.ts +20 -3
- package/src/controls-options-manager/constants.ts +14 -1
- package/src/controls-options-manager/index.ts +87 -28
- package/src/controls-options-manager/util.ts +81 -1
- package/src/hashTree/constants.ts +16 -0
- package/src/hashTree/hashTreeParser.ts +580 -196
- package/src/hashTree/utils.ts +36 -0
- package/src/index.ts +6 -0
- package/src/interceptors/dataChannelAuthToken.ts +88 -12
- package/src/interceptors/locusRetry.ts +25 -4
- package/src/interpretation/index.ts +27 -9
- package/src/interpretation/interpretation.types.ts +11 -0
- package/src/locus-info/controlsUtils.ts +3 -1
- package/src/locus-info/index.ts +304 -100
- package/src/locus-info/infoUtils.ts +41 -6
- package/src/locus-info/types.ts +25 -1
- package/src/media/index.ts +3 -0
- package/src/media/properties.ts +1 -0
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +494 -67
- package/src/meeting/locusMediaRequest.ts +106 -6
- package/src/meeting/muteState.ts +10 -1
- package/src/meeting/request.ts +11 -0
- package/src/meeting/util.ts +47 -5
- package/src/meeting-info/meeting-info-v2.ts +4 -2
- package/src/meetings/index.ts +133 -78
- package/src/meetings/meetings.types.ts +19 -0
- package/src/meetings/request.ts +43 -0
- package/src/meetings/util.ts +97 -1
- package/src/member/index.ts +10 -0
- package/src/member/types.ts +1 -0
- package/src/member/util.ts +29 -0
- package/src/members/index.ts +70 -7
- package/src/members/util.ts +12 -4
- package/src/metrics/constants.ts +4 -0
- package/src/multistream/codec/constants.ts +58 -0
- package/src/multistream/mediaRequestManager.ts +119 -28
- package/src/multistream/receiveSlot.ts +18 -0
- package/src/reachability/index.ts +19 -15
- package/src/reachability/reachability.types.ts +11 -0
- package/src/reachability/util.ts +36 -0
- package/src/reactions/reactions.type.ts +3 -0
- package/src/recording-controller/index.ts +1 -2
- package/src/webinar/index.ts +214 -36
- package/test/unit/spec/aiEnableRequest/index.ts +86 -0
- package/test/unit/spec/breakouts/breakout.ts +9 -3
- package/test/unit/spec/breakouts/index.ts +49 -0
- package/test/unit/spec/controls-options-manager/index.js +244 -29
- package/test/unit/spec/controls-options-manager/util.js +165 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +1838 -180
- package/test/unit/spec/hashTree/utils.ts +125 -1
- package/test/unit/spec/interceptors/dataChannelAuthToken.ts +196 -0
- package/test/unit/spec/interceptors/locusRetry.ts +205 -4
- package/test/unit/spec/interpretation/index.ts +26 -4
- package/test/unit/spec/locus-info/controlsUtils.js +172 -57
- package/test/unit/spec/locus-info/index.js +499 -81
- package/test/unit/spec/locus-info/infoUtils.js +184 -1
- package/test/unit/spec/media/index.ts +31 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +1615 -42
- package/test/unit/spec/meeting/locusMediaRequest.ts +302 -4
- package/test/unit/spec/meeting/muteState.js +81 -0
- package/test/unit/spec/meeting/request.js +12 -0
- package/test/unit/spec/meeting/utils.js +157 -1
- package/test/unit/spec/meeting-info/meetinginfov2.js +19 -10
- package/test/unit/spec/meetings/index.js +363 -36
- package/test/unit/spec/meetings/request.js +141 -0
- package/test/unit/spec/meetings/utils.js +189 -0
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +89 -0
- package/test/unit/spec/members/index.js +216 -0
- package/test/unit/spec/members/request.js +37 -1
- package/test/unit/spec/members/utils.js +63 -0
- package/test/unit/spec/multistream/mediaRequestManager.ts +501 -37
- package/test/unit/spec/reachability/index.ts +59 -46
- package/test/unit/spec/reachability/util.ts +31 -0
- package/test/unit/spec/recording-controller/index.js +9 -8
- package/test/unit/spec/webinar/index.ts +329 -28
|
@@ -16,7 +16,7 @@ import { DESTINATION_TYPE, NETWORK_STATUS } from '../constants';
|
|
|
16
16
|
import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
|
|
17
17
|
import { MediaRequestManager } from '../multistream/mediaRequestManager';
|
|
18
18
|
import { Configuration as RemoteMediaManagerConfiguration, RemoteMediaManager } from '../multistream/remoteMediaManager';
|
|
19
|
-
import {
|
|
19
|
+
import { SkinToneType } from '../reactions/reactions.type';
|
|
20
20
|
import InMeetingActions from './in-meeting-actions';
|
|
21
21
|
import RecordingController from '../recording-controller';
|
|
22
22
|
import ControlsOptionsManager from '../controls-options-manager';
|
|
@@ -374,7 +374,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
374
374
|
webinar: any;
|
|
375
375
|
conversationUrl: string;
|
|
376
376
|
callStateForMetrics: CallStateForMetrics;
|
|
377
|
-
destination: string;
|
|
377
|
+
destination: string | LocusDTO;
|
|
378
378
|
destinationType: DESTINATION_TYPE;
|
|
379
379
|
deviceUrl: string;
|
|
380
380
|
hostId: string;
|
|
@@ -412,6 +412,8 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
412
412
|
floorGrantPending: boolean;
|
|
413
413
|
hasJoinedOnce: boolean;
|
|
414
414
|
hasWebsocketConnected: boolean;
|
|
415
|
+
private mercuryOnlineHandler?;
|
|
416
|
+
private mercuryOfflineHandler?;
|
|
415
417
|
inMeetingActions: InMeetingActions;
|
|
416
418
|
isLocalShareLive: boolean;
|
|
417
419
|
isRoapInProgress: boolean;
|
|
@@ -422,6 +424,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
422
424
|
joinedWith?: any;
|
|
423
425
|
selfId?: string;
|
|
424
426
|
roles: any[];
|
|
427
|
+
canNotViewTheParticipantList?: boolean;
|
|
425
428
|
locusMediaRequest?: LocusMediaRequest;
|
|
426
429
|
mediaProperties: MediaProperties;
|
|
427
430
|
mediaRequestManagers: {
|
|
@@ -491,13 +494,14 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
491
494
|
isMoveToInProgress: boolean;
|
|
492
495
|
registrationIdStatus: string;
|
|
493
496
|
brbState: BrbState;
|
|
497
|
+
private promisesWaitingForPropUpdate;
|
|
494
498
|
voiceaListenerCallbacks: object;
|
|
495
499
|
private addMediaData;
|
|
496
500
|
private sendSlotManager;
|
|
497
501
|
private deferSDPAnswer?;
|
|
498
502
|
private sdpResponseTimer?;
|
|
499
503
|
private hasMediaConnectionConnectedAtLeastOnce;
|
|
500
|
-
private joinWithMediaRetryInfo
|
|
504
|
+
private joinWithMediaRetryInfo;
|
|
501
505
|
private connectionStateHandler?;
|
|
502
506
|
private iceCandidateErrors;
|
|
503
507
|
private iceCandidatesCount;
|
|
@@ -514,6 +518,15 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
514
518
|
* @memberof Meeting
|
|
515
519
|
*/
|
|
516
520
|
constructor(attrs: any, options: object, callback: (meeting: Meeting) => void);
|
|
521
|
+
/**
|
|
522
|
+
* Get the ingress payload type for a given media type and codec mime type
|
|
523
|
+
* @param {MediaType} mediaType - The media type
|
|
524
|
+
* @param {MediaCodecMimeType} codecMimeType - The codec mime type
|
|
525
|
+
* @returns {number | undefined} - The ingress payload type
|
|
526
|
+
* @private
|
|
527
|
+
* @memberof Meeting
|
|
528
|
+
*/
|
|
529
|
+
private getIngressPayloadTypeCallback;
|
|
517
530
|
/**
|
|
518
531
|
* returns meeting is joined
|
|
519
532
|
* @private
|
|
@@ -970,7 +983,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
970
983
|
*/
|
|
971
984
|
mute(memberId: string, mute?: boolean): any;
|
|
972
985
|
/**
|
|
973
|
-
* Transfer the moderator role to another eligible member
|
|
986
|
+
* Transfer the moderator role to another eligible member.
|
|
987
|
+
*
|
|
988
|
+
* If the target member is currently joined in the current session, the request is
|
|
989
|
+
* sent against the current locus. Otherwise, we search the breakout sessions and,
|
|
990
|
+
* when the member is found in one, we send the request against that breakout
|
|
991
|
+
* session's locus url instead.
|
|
974
992
|
* @param {String} memberId
|
|
975
993
|
* @param {Boolean} moderator
|
|
976
994
|
* @returns {Promise} see #members.transferHostToMember
|
|
@@ -1051,6 +1069,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1051
1069
|
* @memberof Meeting
|
|
1052
1070
|
*/
|
|
1053
1071
|
setSipUri(sipUri: string): void;
|
|
1072
|
+
/**
|
|
1073
|
+
* After initial locus setup, refreshes destination with synced locus data and optionally
|
|
1074
|
+
* performs deferred meeting info fetch when initial locus was incomplete.
|
|
1075
|
+
* @param {LocusDTO} locus
|
|
1076
|
+
* @returns {void}
|
|
1077
|
+
*/
|
|
1078
|
+
finalizeMeetingAfterInitialLocusSetup(locus: LocusDTO): Promise<void>;
|
|
1054
1079
|
/**
|
|
1055
1080
|
* Set the locus info the class instance. Should be called with the parsed locus
|
|
1056
1081
|
* we got in the join response.
|
|
@@ -1163,6 +1188,22 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1163
1188
|
* @memberof Meeting
|
|
1164
1189
|
*/
|
|
1165
1190
|
setMercuryListener(): void;
|
|
1191
|
+
/**
|
|
1192
|
+
* Removes this meeting's Mercury ONLINE/OFFLINE event listeners registered
|
|
1193
|
+
* by setMercuryListener(). Must be called before Locus /leave to avoid
|
|
1194
|
+
* unnecessary syncs/metrics triggered by events received while leaving
|
|
1195
|
+
* (per Locus team recommendation).
|
|
1196
|
+
*
|
|
1197
|
+
* Mercury is a process-wide singleton shared with other plugins, so we
|
|
1198
|
+
* pass the bound handler refs to .off() to avoid clearing every listener
|
|
1199
|
+
* for ONLINE/OFFLINE on the shared emitter.
|
|
1200
|
+
*
|
|
1201
|
+
* Idempotent: subsequent calls are no-ops because the handler refs are
|
|
1202
|
+
* cleared after detaching.
|
|
1203
|
+
* @private
|
|
1204
|
+
* @returns {void}
|
|
1205
|
+
*/
|
|
1206
|
+
private stopListeningForMercuryEvents;
|
|
1166
1207
|
/**
|
|
1167
1208
|
* Close the peer connections and remove them from the class.
|
|
1168
1209
|
* Cleanup any media connection related things.
|
|
@@ -1299,6 +1340,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1299
1340
|
* @returns {void}
|
|
1300
1341
|
*/
|
|
1301
1342
|
private processLocusLLMEvent;
|
|
1343
|
+
/**
|
|
1344
|
+
* Verifies the relay event was delivered for the active LLM session binding.
|
|
1345
|
+
* @param {RelayEvent} event Event object coming from LLM Connection
|
|
1346
|
+
* @returns {boolean}
|
|
1347
|
+
*/
|
|
1348
|
+
private isRelayEventRouteValid;
|
|
1302
1349
|
/**
|
|
1303
1350
|
* Callback called when a relay event is received from meeting LLM Connection
|
|
1304
1351
|
* @param {RelayEvent} e Event object coming from LLM Connection
|
|
@@ -1356,8 +1403,41 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1356
1403
|
* @returns {void}
|
|
1357
1404
|
*/
|
|
1358
1405
|
private clearLLMHealthCheckTimer;
|
|
1406
|
+
/**
|
|
1407
|
+
* Removes LLM event listeners and clears the health check timer.
|
|
1408
|
+
* Must be called before Locus /leave to avoid unnecessary syncs triggered
|
|
1409
|
+
* by events received while leaving (per Locus team recommendation).
|
|
1410
|
+
* Idempotent: safe to call multiple times; .off() is a no-op when no
|
|
1411
|
+
* matching listener is registered.
|
|
1412
|
+
* @private
|
|
1413
|
+
* @returns {void}
|
|
1414
|
+
*/
|
|
1415
|
+
private stopListeningForLLMEvents;
|
|
1416
|
+
/**
|
|
1417
|
+
* Stops listening on every event bus (LLM, Mercury, voicea/transcription,
|
|
1418
|
+
* annotation) that could otherwise deliver events to this meeting while
|
|
1419
|
+
* Locus is processing /leave or /end. Per the Locus team recommendation,
|
|
1420
|
+
* this must run before the Locus request is dispatched to avoid
|
|
1421
|
+
* unnecessary syncs triggered by in-flight events.
|
|
1422
|
+
*
|
|
1423
|
+
* Voicea (transcription) subscribes to llm 'event:relay.event' internally,
|
|
1424
|
+
* and the annotation plugin subscribes to both mercury and llm, so both
|
|
1425
|
+
* must be torn down alongside the direct LLM/Mercury listeners.
|
|
1426
|
+
*
|
|
1427
|
+
* Idempotent: safe to call multiple times; .off() is a no-op when no
|
|
1428
|
+
* matching listener is registered, and stopTranscription is guarded.
|
|
1429
|
+
* @private
|
|
1430
|
+
* @returns {void}
|
|
1431
|
+
*/
|
|
1432
|
+
private stopListeningForMeetingEvents;
|
|
1359
1433
|
/**
|
|
1360
1434
|
* Disconnects and cleans up the default LLM session listeners/timers.
|
|
1435
|
+
*
|
|
1436
|
+
* Ownership-aware: only calls `disconnectLLM` when this meeting is the
|
|
1437
|
+
* current owner of the default LLM session (or when no owner is recorded).
|
|
1438
|
+
* Event listeners belonging to this meeting instance are always detached
|
|
1439
|
+
* so they do not receive another meeting's relay events.
|
|
1440
|
+
*
|
|
1361
1441
|
* @param {Object} options
|
|
1362
1442
|
* @param {boolean} [options.removeOnlineListener=true] removes the one-time online listener
|
|
1363
1443
|
* @param {boolean} [options.throwOnError=true] rethrows disconnect errors when true
|
|
@@ -1365,8 +1445,8 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1365
1445
|
*/
|
|
1366
1446
|
private cleanupLLMConneciton;
|
|
1367
1447
|
/**
|
|
1368
|
-
* Clears
|
|
1369
|
-
*
|
|
1448
|
+
* Clears data channel tokens associated with this meeting ownership.
|
|
1449
|
+
* Ownership checks are enforced in internal-plugin-llm.
|
|
1370
1450
|
* @returns {void}
|
|
1371
1451
|
*/
|
|
1372
1452
|
clearDataChannelToken(): void;
|
|
@@ -1597,6 +1677,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1597
1677
|
* @returns {void}
|
|
1598
1678
|
*/
|
|
1599
1679
|
private setupLocusMediaRequest;
|
|
1680
|
+
/**
|
|
1681
|
+
* Waits for LocusInfo to update meeting.selfUrl, with a timeout fallback.
|
|
1682
|
+
* @returns {Promise<void>}
|
|
1683
|
+
* @private
|
|
1684
|
+
* @memberof Meeting
|
|
1685
|
+
*/
|
|
1686
|
+
private waitForSelfUrlChange;
|
|
1600
1687
|
/**
|
|
1601
1688
|
* Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
|
|
1602
1689
|
*
|
|
@@ -1980,7 +2067,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1980
2067
|
* @public
|
|
1981
2068
|
* @memberof Meeting
|
|
1982
2069
|
*/
|
|
1983
|
-
sendReaction(reactionType:
|
|
2070
|
+
sendReaction(reactionType: string, skinToneType?: SkinToneType): any;
|
|
1984
2071
|
/**
|
|
1985
2072
|
* Extend the current meeting duration.
|
|
1986
2073
|
*
|
|
@@ -32,6 +32,8 @@ export type Config = {
|
|
|
32
32
|
correlationId: string;
|
|
33
33
|
meetingId: string;
|
|
34
34
|
preferTranscoding: boolean;
|
|
35
|
+
getCurrentSelfUrl: () => string | undefined;
|
|
36
|
+
waitForSelfUrlChange: () => Promise<void>;
|
|
35
37
|
};
|
|
36
38
|
/**
|
|
37
39
|
* This class manages all /media API requests to Locus. Every call to that
|
|
@@ -67,6 +69,16 @@ export declare class LocusMediaRequest extends WebexPlugin {
|
|
|
67
69
|
* Prepares the uri and body for the media request to be sent to Locus
|
|
68
70
|
*/
|
|
69
71
|
private sendHttpRequest;
|
|
72
|
+
/**
|
|
73
|
+
* Returns the latest selfUrl for this meeting, falling back to the value
|
|
74
|
+
* captured when the request was enqueued.
|
|
75
|
+
*/
|
|
76
|
+
private getCurrentSelfUrl;
|
|
77
|
+
/**
|
|
78
|
+
* Decides whether a 409 warrants a retry against the meeting's latest
|
|
79
|
+
* selfUrl.
|
|
80
|
+
*/
|
|
81
|
+
private shouldRetryOnSelfUrlChange;
|
|
70
82
|
/**
|
|
71
83
|
* Sends a media request to Locus
|
|
72
84
|
*/
|
|
@@ -63,6 +63,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
63
63
|
locale?: string;
|
|
64
64
|
deviceCapabilities?: Array<string>;
|
|
65
65
|
liveAnnotationSupported: boolean;
|
|
66
|
+
enableSimultaneousInterpretation: boolean;
|
|
66
67
|
alias?: string;
|
|
67
68
|
clientMediaPreferences: ClientMediaPreferences;
|
|
68
69
|
}): Promise<any>;
|
|
@@ -133,6 +133,13 @@ declare const MeetingUtil: {
|
|
|
133
133
|
* @returns {void}
|
|
134
134
|
*/
|
|
135
135
|
addSequence: (meeting: any, requestBody: any) => void;
|
|
136
|
+
/**
|
|
137
|
+
* Checks if Locus API response contains a Locus DTO
|
|
138
|
+
*
|
|
139
|
+
* @param {any} response http response from Locus API call
|
|
140
|
+
* @returns {boolean} true if response contains a Locus DTO
|
|
141
|
+
*/
|
|
142
|
+
isLocusDtoInAPIResponse(response: any): any;
|
|
136
143
|
/**
|
|
137
144
|
* Updates the locus info for the meeting with the locus
|
|
138
145
|
* information returned from API requests made to Locus
|
|
@@ -146,6 +153,8 @@ declare const MeetingUtil: {
|
|
|
146
153
|
generateLocusDeltaRequest: (originalMeeting: any) => (originalOptions: any) => any;
|
|
147
154
|
canAttendeeRequestAiAssistantEnabled: (displayHints?: any[], roles?: any[]) => boolean;
|
|
148
155
|
attendeeRequestAiAssistantDeclinedAll: (displayHints?: any[]) => boolean;
|
|
156
|
+
isAnonymizeDisplayNamesEnabled: (displayHints: any) => any;
|
|
157
|
+
canViewTheParticipantList: (displayHints: any, canNotViewTheParticipantList: boolean) => any;
|
|
149
158
|
selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => boolean;
|
|
150
159
|
parseInterpretationInfo: (meeting: any, meetingInfo: any) => void;
|
|
151
160
|
/**
|
|
@@ -8,7 +8,7 @@ import 'webrtc-adapter';
|
|
|
8
8
|
import { LOCUSEVENT, DESTINATION_TYPE } from '../constants';
|
|
9
9
|
import { CallStateForMetrics } from '../meeting';
|
|
10
10
|
import Reachability from '../reachability';
|
|
11
|
-
import { INoiseReductionEffect, IVirtualBackgroundEffect, MeetingRegistrationStatus } from './meetings.types';
|
|
11
|
+
import { FetchSitePreferencesMeViaSiteOptions, INoiseReductionEffect, IVirtualBackgroundEffect, MeetingRegistrationStatus, SitePreferencesResponse } from './meetings.types';
|
|
12
12
|
import { HashTreeMessage } from '../hashTree/hashTreeParser';
|
|
13
13
|
export type LocusEvent = {
|
|
14
14
|
eventType: LOCUSEVENT;
|
|
@@ -211,22 +211,6 @@ export default class Meetings extends WebexPlugin {
|
|
|
211
211
|
* @returns {undefined}
|
|
212
212
|
*/
|
|
213
213
|
private _toggleAdhocMeetings;
|
|
214
|
-
/**
|
|
215
|
-
* API to toggle TCP reachability, needs to be called before webex.meetings.register()
|
|
216
|
-
* @param {Boolean} newValue
|
|
217
|
-
* @private
|
|
218
|
-
* @memberof Meetings
|
|
219
|
-
* @returns {undefined}
|
|
220
|
-
*/
|
|
221
|
-
private _toggleTcpReachability;
|
|
222
|
-
/**
|
|
223
|
-
* API to toggle TLS reachability, needs to be called before webex.meetings.register()
|
|
224
|
-
* @param {Boolean} newValue
|
|
225
|
-
* @private
|
|
226
|
-
* @memberof Meetings
|
|
227
|
-
* @returns {undefined}
|
|
228
|
-
*/
|
|
229
|
-
private _toggleTlsReachability;
|
|
230
214
|
/**
|
|
231
215
|
* API to toggle backend ipv6 native support config, needs to be called before webex.meetings.register()
|
|
232
216
|
*
|
|
@@ -254,6 +238,16 @@ export default class Meetings extends WebexPlugin {
|
|
|
254
238
|
* @returns {undefined}
|
|
255
239
|
*/
|
|
256
240
|
private _toggleEnableAudioTwccForMultistream;
|
|
241
|
+
/**
|
|
242
|
+
* API to toggle AV1 codec support for video slides in multistream,
|
|
243
|
+
* needs to be called before webex.meetings.joinWithMedia()
|
|
244
|
+
*
|
|
245
|
+
* @param {Boolean} newValue
|
|
246
|
+
* @private
|
|
247
|
+
* @memberof Meetings
|
|
248
|
+
* @returns {undefined}
|
|
249
|
+
*/
|
|
250
|
+
private _toggleEnableAv1SlidesSupport;
|
|
257
251
|
/**
|
|
258
252
|
* API to toggle stopping ICE Candidates Gathering after first relay candidate,
|
|
259
253
|
* needs to be called before webex.meetings.joinWithMedia()
|
|
@@ -368,6 +362,23 @@ export default class Meetings extends WebexPlugin {
|
|
|
368
362
|
* @memberof Meetings
|
|
369
363
|
*/
|
|
370
364
|
getPersonalMeetingRoom(): any;
|
|
365
|
+
/**
|
|
366
|
+
* Fetches site preferences for the provided Webex site, or the preferred Webex site.
|
|
367
|
+
* This is used to determine capabilities of the site, such as whether scheduling a webinar is supported.
|
|
368
|
+
*
|
|
369
|
+
* @param {object} [options]
|
|
370
|
+
* @param {string} [options.siteUrl] - Webex site URL. Defaults to preferredWebexSite, for example "cisco.webex.com".
|
|
371
|
+
* @param {string} [options.siteName] - Site name query override. Defaults to the site name derived from siteUrl, for example "cisco" for "cisco.webex.com".
|
|
372
|
+
* @param {SitePreferenceSelectOption[]} [options.selectOptions] - Preference sections to fetch. Defaults to 'scheduling'.
|
|
373
|
+
* @returns {Promise<SitePreferencesResponse>} site preferences response body
|
|
374
|
+
* @throws {ParameterError}
|
|
375
|
+
* @public
|
|
376
|
+
* @memberof Meetings
|
|
377
|
+
* @example
|
|
378
|
+
* const preferences = await webex.meetings.fetchSitePreferencesMeViaSite();
|
|
379
|
+
* const supportScheduleWebinar = preferences?.scheduling?.supportScheduleWebinar;
|
|
380
|
+
*/
|
|
381
|
+
fetchSitePreferencesMeViaSite(options?: FetchSitePreferencesMeViaSiteOptions): Promise<SitePreferencesResponse>;
|
|
371
382
|
/**
|
|
372
383
|
* Returns basic information about a meeting that exists or
|
|
373
384
|
* used to exist in the MeetingCollection
|
|
@@ -477,8 +488,9 @@ export default class Meetings extends WebexPlugin {
|
|
|
477
488
|
* @public
|
|
478
489
|
* @memberof Meetings
|
|
479
490
|
*/
|
|
480
|
-
syncMeetings({ keepOnlyLocusMeetings }?: {
|
|
491
|
+
syncMeetings({ keepOnlyLocusMeetings, skipHashTreeSync, }?: {
|
|
481
492
|
keepOnlyLocusMeetings?: boolean;
|
|
493
|
+
skipHashTreeSync?: boolean;
|
|
482
494
|
}): Promise<void>;
|
|
483
495
|
/**
|
|
484
496
|
* sort out locus array for initial creating
|
|
@@ -19,3 +19,18 @@ export type MeetingRegistrationStatus = {
|
|
|
19
19
|
mercuryConnect: boolean;
|
|
20
20
|
checkH264Support: boolean;
|
|
21
21
|
};
|
|
22
|
+
export declare enum SitePreferenceSelectOption {
|
|
23
|
+
SCHEDULING = "scheduling"
|
|
24
|
+
}
|
|
25
|
+
export type FetchSitePreferencesMeViaSiteOptions = {
|
|
26
|
+
siteUrl?: string;
|
|
27
|
+
siteName?: string;
|
|
28
|
+
selectOptions?: SitePreferenceSelectOption[];
|
|
29
|
+
};
|
|
30
|
+
export declare const DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS: SitePreferenceSelectOption[];
|
|
31
|
+
export type SitePreferencesResponse = {
|
|
32
|
+
scheduling?: {
|
|
33
|
+
supportScheduleWebinar?: boolean;
|
|
34
|
+
webinarWebLink?: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { StatelessWebexPlugin } from '@webex/webex-core';
|
|
2
|
+
import { type FetchSitePreferencesMeViaSiteOptions, type SitePreferencesResponse } from './meetings.types';
|
|
2
3
|
/**
|
|
3
4
|
* @class MeetingRequest
|
|
4
5
|
*/
|
|
@@ -18,6 +19,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
18
19
|
* @returns {Promise<object>} getMeetingPreferences
|
|
19
20
|
*/
|
|
20
21
|
getMeetingPreferences(): any;
|
|
22
|
+
/**
|
|
23
|
+
* Fetches site preferences from a given site given a select option and a siteUrl with an optional siteName. If siteName is not provided, it will be derived from the siteUrl. If siteUrl is not provided, it will throw an error. If selectOptions is not provided, it will default to scheduling.
|
|
24
|
+
*
|
|
25
|
+
* @param {object} [options]
|
|
26
|
+
* @param {string} [options.siteUrl] - Webex site URL, for example "cisco.webex.com".
|
|
27
|
+
* @param {string} [options.siteName] - Site name query override. Defaults to the site name derived from options.siteUrl, e.g., "cisco".
|
|
28
|
+
* @param {SitePreferenceSelectOption[]} [options.selectOptions] - Preference sections to fetch. Defaults to 'scheduling'.
|
|
29
|
+
* @returns {Promise<SitePreferencesResponse>} site preferences response body
|
|
30
|
+
* @throws {ParameterError}
|
|
31
|
+
* @public
|
|
32
|
+
* @memberof MeetingRequest
|
|
33
|
+
*/
|
|
34
|
+
fetchSitePreferencesMeViaSite(options?: FetchSitePreferencesMeViaSiteOptions): Promise<SitePreferencesResponse>;
|
|
21
35
|
/**
|
|
22
36
|
* Fetches indivdual locus rather then getting all at once
|
|
23
37
|
* @param {object} responseBody determine the locus and fetch them if a remoteUrl is given
|
|
@@ -66,6 +66,7 @@ declare const MemberUtil: {
|
|
|
66
66
|
isDevice: (participant: Participant) => boolean;
|
|
67
67
|
isModeratorAssignmentProhibited: (participant: Participant) => boolean;
|
|
68
68
|
isPresenterAssignmentProhibited: (participant: Participant) => boolean;
|
|
69
|
+
isAttendeeAssignmentProhibited: (participant: Participant) => boolean;
|
|
69
70
|
/**
|
|
70
71
|
* checks to see if the participant id is the same as the passed id
|
|
71
72
|
* there are multiple ids that can be used
|
|
@@ -163,5 +164,13 @@ declare const MemberUtil: {
|
|
|
163
164
|
* @returns {String}
|
|
164
165
|
*/
|
|
165
166
|
extractPairedWithParticipantUrl: (participant: Participant) => ParticipantUrl | undefined;
|
|
167
|
+
/**
|
|
168
|
+
* Collects all CSIs reported for a participant across all their devices,
|
|
169
|
+
* looking at both the top-level `csis` array and any `mediaSessions[].csi` values.
|
|
170
|
+
*
|
|
171
|
+
* @param {Object} participant - The locus participant object.
|
|
172
|
+
* @returns {Array<number>} unique CSIs for this participant
|
|
173
|
+
*/
|
|
174
|
+
extractCsis: (participant: Participant) => number[];
|
|
166
175
|
};
|
|
167
176
|
export default MemberUtil;
|
|
@@ -23,6 +23,14 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
23
23
|
recordingId: any;
|
|
24
24
|
selfId: any;
|
|
25
25
|
type: any;
|
|
26
|
+
/**
|
|
27
|
+
* Map of CSI -> memberId that previously used the CSI in a Locus update.
|
|
28
|
+
* Keyed by CSI so findMemberByCsi can resolve it in O(1).
|
|
29
|
+
* Kept here (rather than on each Member) so it survives members being removed
|
|
30
|
+
* and re-added (e.g. when entering/leaving a breakout session).
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
private memberIdByHistoryCsi;
|
|
26
34
|
namespace: string;
|
|
27
35
|
/**
|
|
28
36
|
*
|
|
@@ -313,11 +321,13 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
313
321
|
* Transfers the host to another member
|
|
314
322
|
* @param {String} memberId
|
|
315
323
|
* @param {boolean} [moderator] default true
|
|
324
|
+
* @param {String} [breakoutLocusUrl] when provided, the request is sent against this locus url
|
|
325
|
+
* (i.e. the breakout session's locus) instead of the main session's locus url
|
|
316
326
|
* @returns {Promise}
|
|
317
327
|
* @public
|
|
318
328
|
* @memberof Members
|
|
319
329
|
*/
|
|
320
|
-
transferHostToMember(memberId: string, moderator?: boolean): any;
|
|
330
|
+
transferHostToMember(memberId: string, moderator?: boolean, breakoutLocusUrl?: string): any;
|
|
321
331
|
/**
|
|
322
332
|
* Sends DTMF tones for the PSTN member of a meeting
|
|
323
333
|
* @param {String} tones a string of one or more DTMF tones to send
|
|
@@ -327,7 +337,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
327
337
|
* @memberof Members
|
|
328
338
|
*/
|
|
329
339
|
sendDialPadKey(tones?: string, memberId?: string): any;
|
|
330
|
-
/** Finds a member that has any device with a csi matching provided value
|
|
340
|
+
/** Finds a member that has any device with a csi matching provided value.
|
|
341
|
+
* Falls back to the `memberIdByHistoryCsi` map so that a CSI a member used in
|
|
342
|
+
* a previous Locus update can still be resolved even if it is no longer
|
|
343
|
+
* present in `participant.devices[].csis`.
|
|
331
344
|
*
|
|
332
345
|
* @param {number} csi
|
|
333
346
|
* @returns {Member}
|
|
@@ -188,11 +188,7 @@ declare const MembersUtil: {
|
|
|
188
188
|
getTransferHostToMemberRequestParams: (options: any) => {
|
|
189
189
|
method: string;
|
|
190
190
|
uri: string;
|
|
191
|
-
body:
|
|
192
|
-
role: {
|
|
193
|
-
moderator: any;
|
|
194
|
-
};
|
|
195
|
-
};
|
|
191
|
+
body: Record<string, any>;
|
|
196
192
|
};
|
|
197
193
|
genderateSendDTMFOptions: (url: any, tones: any, memberId: any, locusUrl: any) => {
|
|
198
194
|
url: any;
|
|
@@ -9,6 +9,7 @@ declare const BEHAVIORAL_METRICS: {
|
|
|
9
9
|
ADD_MEDIA_SUCCESS: string;
|
|
10
10
|
ADD_MEDIA_FAILURE: string;
|
|
11
11
|
ADD_MEDIA_RETRY: string;
|
|
12
|
+
LOCUS_MEDIA_REQUEST_RETRY: string;
|
|
12
13
|
ROAP_MERCURY_EVENT_RECEIVED: string;
|
|
13
14
|
CONNECTION_SUCCESS: string;
|
|
14
15
|
CONNECTION_FAILURE: string;
|
|
@@ -92,5 +93,8 @@ declare const BEHAVIORAL_METRICS: {
|
|
|
92
93
|
DEPRECATED_DELETE_CODEC_PARAMETERS_USED: string;
|
|
93
94
|
SET_CUSTOM_CODEC_PARAMETERS_USED: string;
|
|
94
95
|
MARK_CUSTOM_CODEC_PARAMETERS_FOR_DELETION_USED: string;
|
|
96
|
+
HASH_TREE_SYNC_FAILURE: string;
|
|
97
|
+
HASH_TREE_HEARTBEAT_WATCHDOG_EXPIRED: string;
|
|
98
|
+
HASH_TREE_EMPTY_LOCUS_STATE_ELEMENTS: string;
|
|
95
99
|
};
|
|
96
100
|
export { BEHAVIORAL_METRICS as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AV1EncodingParams, SupportedResolution } from '@webex/internal-media-core';
|
|
2
|
+
export declare const AV1_CODEC_PARAMETERS: Record<SupportedResolution, AV1EncodingParams>;
|
|
3
|
+
export declare const H264_CODEC_PARAMETERS: {
|
|
4
|
+
maxFs: number;
|
|
5
|
+
maxFps: number;
|
|
6
|
+
maxMbps: number;
|
|
7
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StreamRequest, NamedMediaGroup } from '@webex/internal-media-core';
|
|
1
|
+
import { StreamRequest, NamedMediaGroup, MediaType, MediaCodecMimeType } from '@webex/internal-media-core';
|
|
2
2
|
import { ReceiveSlot } from './receiveSlot';
|
|
3
3
|
export interface ActiveSpeakerPolicyInfo {
|
|
4
4
|
policy: 'active-speaker';
|
|
@@ -36,14 +36,22 @@ type DegradationPreferences = {
|
|
|
36
36
|
maxMacroblocksLimit: number;
|
|
37
37
|
};
|
|
38
38
|
type SendMediaRequestsCallback = (streamRequests: StreamRequest[]) => void;
|
|
39
|
-
type
|
|
40
|
-
type
|
|
39
|
+
type GetIngressPayloadTypeCallback = (mediaType: MediaType, codecMimeType: MediaCodecMimeType) => number | undefined;
|
|
40
|
+
type AudioMediaRequestManagerOptions = {
|
|
41
41
|
degradationPreferences: DegradationPreferences;
|
|
42
|
-
kind:
|
|
42
|
+
kind: 'audio';
|
|
43
43
|
trimRequestsToNumOfSources: boolean;
|
|
44
44
|
};
|
|
45
|
+
type VideoMediaRequestManagerOptions = {
|
|
46
|
+
degradationPreferences: DegradationPreferences;
|
|
47
|
+
kind: 'video';
|
|
48
|
+
trimRequestsToNumOfSources: boolean;
|
|
49
|
+
enableAv1?: boolean;
|
|
50
|
+
};
|
|
51
|
+
type Options = AudioMediaRequestManagerOptions | VideoMediaRequestManagerOptions;
|
|
45
52
|
export declare class MediaRequestManager {
|
|
46
53
|
private sendMediaRequestsCallback;
|
|
54
|
+
private getIngressPayloadTypeCallback;
|
|
47
55
|
private kind;
|
|
48
56
|
private counter;
|
|
49
57
|
private clientRequests;
|
|
@@ -51,9 +59,10 @@ export declare class MediaRequestManager {
|
|
|
51
59
|
private sourceUpdateListener;
|
|
52
60
|
private debouncedSourceUpdateListener;
|
|
53
61
|
private trimRequestsToNumOfSources;
|
|
62
|
+
private enableAv1;
|
|
54
63
|
private numTotalSources;
|
|
55
64
|
private numLiveSources;
|
|
56
|
-
constructor(sendMediaRequestsCallback: SendMediaRequestsCallback, options: Options);
|
|
65
|
+
constructor(sendMediaRequestsCallback: SendMediaRequestsCallback, getIngressPayloadTypeCallback: GetIngressPayloadTypeCallback, options: Options);
|
|
57
66
|
setDegradationPreferences(degradationPreferences: DegradationPreferences): void;
|
|
58
67
|
private getDegradedClientRequests;
|
|
59
68
|
/**
|
|
@@ -77,6 +86,14 @@ export declare class MediaRequestManager {
|
|
|
77
86
|
* @returns {number} maxMbps
|
|
78
87
|
*/
|
|
79
88
|
private getH264MaxMbps;
|
|
89
|
+
/**
|
|
90
|
+
* Returns the AV1 encoding parameters for a media request
|
|
91
|
+
* @param mediaRequest - The media request to get the AV1 encoding parameters for
|
|
92
|
+
* @returns {AV1EncodingParams} The AV1 encoding parameters
|
|
93
|
+
*/
|
|
94
|
+
private getAv1EncodingParams;
|
|
95
|
+
private buildH264CodecInfo;
|
|
96
|
+
private buildAv1CodecInfo;
|
|
80
97
|
/** Modifies the passed in clientRequests and makes sure that in total they don't ask
|
|
81
98
|
* for more streams than there are available.
|
|
82
99
|
*
|
|
@@ -145,7 +145,7 @@ export default class Reachability extends EventsScope {
|
|
|
145
145
|
* Returns true only if ALL protocols (UDP, TCP and TLS) have been tested and none
|
|
146
146
|
* of the media clusters where reachable with any of the protocols. This is done
|
|
147
147
|
* irrespective of the config, so for example:
|
|
148
|
-
* if config.meetings.
|
|
148
|
+
* if config.meetings.enableReachabilityChecks disables TLS,
|
|
149
149
|
* it will return false, because TLS reachability won't be tested,
|
|
150
150
|
* so we can't say for sure that media backend is unreachable over TLS.
|
|
151
151
|
*
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { IP_VERSION, Enum } from '../constants';
|
|
2
2
|
export type Protocol = 'udp' | 'tcp' | 'xtls';
|
|
3
|
+
export type ResolvedReachabilityProtocols = {
|
|
4
|
+
udp: boolean;
|
|
5
|
+
tcp: boolean;
|
|
6
|
+
tls: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type ReachabilityProtocolConfig = Partial<Omit<ResolvedReachabilityProtocols, 'udp'>>;
|
|
9
|
+
export type EnableReachabilityChecksConfig = boolean | ReachabilityProtocolConfig;
|
|
3
10
|
/**
|
|
4
11
|
* Events emitted by ReachabilityPeerConnection
|
|
5
12
|
*/
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
import { EnableReachabilityChecksConfig, ResolvedReachabilityProtocols } from './reachability.types';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves `enableReachabilityChecks` into explicit per-protocol flags.
|
|
4
|
+
* Defaults to all protocols enabled when not configured.
|
|
5
|
+
* UDP is always tested unless reachability is disabled entirely (`false`).
|
|
6
|
+
*
|
|
7
|
+
* @param {EnableReachabilityChecksConfig} enabled value of config.meetings.enableReachabilityChecks
|
|
8
|
+
* @returns {ResolvedReachabilityProtocols} resolved per-protocol flags
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveReachabilityProtocols(enabled?: EnableReachabilityChecksConfig): ResolvedReachabilityProtocols;
|
|
11
|
+
/**
|
|
12
|
+
* Whether any reachability protocol is enabled.
|
|
13
|
+
*
|
|
14
|
+
* @param {EnableReachabilityChecksConfig} config value of config.meetings.enableReachabilityChecks
|
|
15
|
+
* @returns {boolean} true if any protocol is enabled
|
|
16
|
+
*/
|
|
17
|
+
export declare function isReachabilityEnabled(config?: EnableReachabilityChecksConfig): boolean;
|
|
1
18
|
/**
|
|
2
19
|
* Converts a stun url to a turn url
|
|
3
20
|
*
|