@webex/plugin-meetings 3.8.1 → 3.9.0-multiple-llm.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.
- package/README.md +26 -13
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +34 -3
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +1 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +26 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +11 -3
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +107 -95
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/parser.js +4 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/media/index.js +2 -2
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +53 -5
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/brbState.js +17 -14
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +13 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +555 -296
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +2 -5
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +44 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/{rtcMetrics/constants.js → meeting/type.js} +1 -5
- package/dist/meeting/type.js.map +1 -0
- package/dist/meeting/util.js +98 -13
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +29 -21
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +18 -10
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/members/collection.js +13 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +53 -29
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +3 -3
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +25 -8
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +3 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +1 -1
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +34 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +42 -2
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +32 -2
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/reachability/index.js +8 -13
- package/dist/reachability/index.js.map +1 -1
- package/dist/types/constants.d.ts +30 -0
- package/dist/types/controls-options-manager/enums.d.ts +2 -1
- package/dist/types/controls-options-manager/types.d.ts +4 -1
- package/dist/types/locus-info/index.d.ts +54 -10
- package/dist/types/media/properties.d.ts +21 -0
- package/dist/types/meeting/brbState.d.ts +0 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +12 -0
- package/dist/types/meeting/index.d.ts +58 -20
- package/dist/types/meeting/request.d.ts +18 -1
- package/dist/types/meeting/request.type.d.ts +74 -0
- package/dist/types/meeting/type.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +13 -3
- package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
- package/dist/types/meetings/index.d.ts +3 -1
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/members/collection.d.ts +6 -0
- package/dist/types/members/index.d.ts +22 -9
- package/dist/types/members/request.d.ts +1 -1
- package/dist/types/members/util.d.ts +13 -6
- package/dist/types/metrics/constants.d.ts +2 -0
- package/dist/types/multistream/remoteMedia.d.ts +20 -1
- package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
- package/dist/types/multistream/sendSlotManager.d.ts +16 -0
- package/dist/types/reachability/index.d.ts +2 -2
- package/dist/webinar/index.js +1 -1
- package/package.json +25 -26
- package/src/constants.ts +34 -2
- package/src/controls-options-manager/enums.ts +1 -0
- package/src/controls-options-manager/types.ts +6 -1
- package/src/controls-options-manager/util.ts +31 -0
- package/src/locus-info/controlsUtils.ts +15 -0
- package/src/locus-info/index.ts +174 -96
- package/src/locus-info/parser.ts +5 -1
- package/src/media/index.ts +2 -2
- package/src/media/properties.ts +43 -0
- package/src/meeting/brbState.ts +13 -9
- package/src/meeting/in-meeting-actions.ts +25 -0
- package/src/meeting/index.ts +362 -75
- package/src/meeting/muteState.ts +2 -6
- package/src/meeting/request.ts +39 -0
- package/src/meeting/request.type.ts +64 -0
- package/src/meeting/type.ts +9 -0
- package/src/meeting/util.ts +114 -22
- package/src/meeting-info/meeting-info-v2.ts +24 -5
- package/src/meetings/index.ts +12 -5
- package/src/member/types.ts +1 -0
- package/src/members/collection.ts +11 -0
- package/src/members/index.ts +51 -15
- package/src/members/request.ts +2 -2
- package/src/members/util.ts +34 -6
- package/src/metrics/constants.ts +2 -0
- package/src/multistream/mediaRequestManager.ts +7 -7
- package/src/multistream/remoteMedia.ts +34 -4
- package/src/multistream/remoteMediaGroup.ts +37 -2
- package/src/multistream/sendSlotManager.ts +34 -2
- package/src/reachability/index.ts +8 -16
- package/test/unit/spec/common/browser-detection.js +0 -24
- package/test/unit/spec/controls-options-manager/util.js +58 -0
- package/test/unit/spec/locus-info/controlsUtils.js +52 -0
- package/test/unit/spec/locus-info/index.js +270 -97
- package/test/unit/spec/locus-info/parser.js +3 -2
- package/test/unit/spec/media/index.ts +107 -0
- package/test/unit/spec/media/properties.ts +137 -0
- package/test/unit/spec/meeting/brbState.ts +23 -4
- package/test/unit/spec/meeting/in-meeting-actions.ts +12 -0
- package/test/unit/spec/meeting/index.js +1194 -97
- package/test/unit/spec/meeting/muteState.js +32 -6
- package/test/unit/spec/meeting/request.js +92 -0
- package/test/unit/spec/meeting/utils.js +167 -17
- package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
- package/test/unit/spec/meetings/index.js +12 -5
- package/test/unit/spec/members/collection.js +120 -0
- package/test/unit/spec/members/index.js +140 -12
- package/test/unit/spec/members/request.js +57 -2
- package/test/unit/spec/members/utils.js +139 -17
- package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
- package/test/unit/spec/multistream/remoteMedia.ts +66 -2
- package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
- package/test/unit/spec/reachability/index.ts +160 -9
- package/test/unit/spec/roap/turnDiscovery.ts +3 -3
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/index.d.ts +0 -117
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/common/browser-detection.d.ts +0 -9
- package/dist/common/collection.d.ts +0 -48
- package/dist/common/config.d.ts +0 -2
- package/dist/common/errors/captcha-error.d.ts +0 -15
- package/dist/common/errors/intent-to-join.d.ts +0 -16
- package/dist/common/errors/join-meeting.d.ts +0 -17
- package/dist/common/errors/media.d.ts +0 -15
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/parameter.d.ts +0 -15
- package/dist/common/errors/password-error.d.ts +0 -15
- package/dist/common/errors/permission.d.ts +0 -14
- package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
- package/dist/common/errors/reclaim-host-role-error.js +0 -158
- package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
- package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/common/errors/reconnection-in-progress.js +0 -35
- package/dist/common/errors/reconnection-in-progress.js.map +0 -1
- package/dist/common/errors/reconnection.d.ts +0 -15
- package/dist/common/errors/stats.d.ts +0 -15
- package/dist/common/errors/webex-errors.d.ts +0 -81
- package/dist/common/errors/webex-meetings-error.d.ts +0 -20
- package/dist/common/events/events-scope.d.ts +0 -17
- package/dist/common/events/events.d.ts +0 -12
- package/dist/common/events/trigger-proxy.d.ts +0 -2
- package/dist/common/events/util.d.ts +0 -2
- package/dist/common/logs/logger-config.d.ts +0 -2
- package/dist/common/logs/logger-proxy.d.ts +0 -2
- package/dist/common/logs/request.d.ts +0 -34
- package/dist/common/queue.d.ts +0 -32
- package/dist/config.d.ts +0 -73
- package/dist/constants.d.ts +0 -952
- package/dist/controls-options-manager/constants.d.ts +0 -4
- package/dist/controls-options-manager/enums.d.ts +0 -5
- package/dist/controls-options-manager/index.d.ts +0 -120
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/util.d.ts +0 -7
- package/dist/index.d.ts +0 -4
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/locusRetry.d.ts +0 -27
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/locus-info/controlsUtils.d.ts +0 -2
- package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
- package/dist/locus-info/fullState.d.ts +0 -2
- package/dist/locus-info/hostUtils.d.ts +0 -2
- package/dist/locus-info/index.d.ts +0 -269
- package/dist/locus-info/infoUtils.d.ts +0 -2
- package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
- package/dist/locus-info/parser.d.ts +0 -212
- package/dist/locus-info/selfUtils.d.ts +0 -2
- package/dist/media/index.d.ts +0 -32
- package/dist/media/properties.d.ts +0 -108
- package/dist/media/util.d.ts +0 -2
- package/dist/mediaQualityMetrics/config.d.ts +0 -233
- package/dist/mediaQualityMetrics/config.js +0 -513
- package/dist/mediaQualityMetrics/config.js.map +0 -1
- package/dist/meeting/effectsState.d.ts +0 -42
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/meeting/in-meeting-actions.d.ts +0 -79
- package/dist/meeting/index.d.ts +0 -1622
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/muteState.d.ts +0 -116
- package/dist/meeting/request.d.ts +0 -257
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/state.d.ts +0 -9
- package/dist/meeting/util.d.ts +0 -2
- package/dist/meeting/voicea-meeting.d.ts +0 -16
- package/dist/meeting-info/collection.d.ts +0 -20
- package/dist/meeting-info/index.d.ts +0 -57
- package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
- package/dist/meeting-info/request.d.ts +0 -22
- package/dist/meeting-info/util.d.ts +0 -2
- package/dist/meeting-info/utilv2.d.ts +0 -2
- package/dist/meetings/collection.d.ts +0 -23
- package/dist/meetings/index.d.ts +0 -296
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/request.d.ts +0 -27
- package/dist/meetings/util.d.ts +0 -18
- package/dist/member/index.d.ts +0 -148
- package/dist/member/member.types.d.ts +0 -11
- package/dist/member/member.types.js +0 -18
- package/dist/member/member.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/util.d.ts +0 -2
- package/dist/members/collection.d.ts +0 -24
- package/dist/members/index.d.ts +0 -308
- package/dist/members/request.d.ts +0 -58
- package/dist/members/types.d.ts +0 -25
- package/dist/members/util.d.ts +0 -2
- package/dist/metrics/config.d.ts +0 -169
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/metrics/constants.d.ts +0 -59
- package/dist/metrics/index.d.ts +0 -152
- package/dist/multistream/mediaRequestManager.d.ts +0 -119
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMediaGroup.d.ts +0 -49
- package/dist/multistream/remoteMediaManager.d.ts +0 -300
- package/dist/multistream/sendSlotManager.d.ts +0 -69
- package/dist/networkQualityMonitor/index.d.ts +0 -70
- package/dist/networkQualityMonitor/index.js +0 -226
- package/dist/networkQualityMonitor/index.js.map +0 -1
- package/dist/peer-connection-manager/index.d.ts +0 -6
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.d.ts +0 -6
- package/dist/peer-connection-manager/util.js +0 -110
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/personal-meeting-room/index.d.ts +0 -47
- package/dist/personal-meeting-room/request.d.ts +0 -14
- package/dist/personal-meeting-room/util.d.ts +0 -2
- package/dist/reachability/clusterReachability.d.ts +0 -109
- package/dist/reachability/index.d.ts +0 -139
- package/dist/reachability/request.d.ts +0 -35
- package/dist/reachability/util.d.ts +0 -8
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/reactions.d.ts +0 -4
- package/dist/reactions/reactions.type.d.ts +0 -32
- package/dist/reconnection-manager/index.d.ts +0 -112
- package/dist/recording-controller/enums.d.ts +0 -7
- package/dist/recording-controller/index.d.ts +0 -193
- package/dist/recording-controller/util.d.ts +0 -13
- package/dist/roap/collection.d.ts +0 -10
- package/dist/roap/collection.js +0 -63
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.d.ts +0 -47
- package/dist/roap/handler.js +0 -279
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/index.d.ts +0 -116
- package/dist/roap/request.d.ts +0 -35
- package/dist/roap/state.d.ts +0 -9
- package/dist/roap/state.js +0 -127
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/turnDiscovery.d.ts +0 -81
- package/dist/roap/util.d.ts +0 -2
- package/dist/roap/util.js +0 -76
- package/dist/roap/util.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -61
- package/dist/rtcMetrics/index.js +0 -197
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/statsAnalyzer/global.d.ts +0 -118
- package/dist/statsAnalyzer/global.js +0 -127
- package/dist/statsAnalyzer/global.js.map +0 -1
- package/dist/statsAnalyzer/index.d.ts +0 -193
- package/dist/statsAnalyzer/index.js +0 -1019
- package/dist/statsAnalyzer/index.js.map +0 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
- package/dist/statsAnalyzer/mqaUtil.js +0 -181
- package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
- package/dist/transcription/index.d.ts +0 -64
- package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
- package/dist/types/networkQualityMonitor/index.d.ts +0 -70
- package/dist/types/rtcMetrics/constants.d.ts +0 -4
- package/dist/types/rtcMetrics/index.d.ts +0 -71
- package/dist/types/statsAnalyzer/global.d.ts +0 -36
- package/dist/types/statsAnalyzer/index.d.ts +0 -217
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/index.d.ts +0 -5
@@ -1,81 +0,0 @@
|
|
1
|
-
import RoapRequest from './request';
|
2
|
-
import Meeting from '../meeting';
|
3
|
-
/**
|
4
|
-
* Handles the process of finding out TURN server information from Linus.
|
5
|
-
* This is achieved by sending a TURN_DISCOVERY_REQUEST.
|
6
|
-
*/
|
7
|
-
export default class TurnDiscovery {
|
8
|
-
private roapRequest;
|
9
|
-
private defer?;
|
10
|
-
private turnInfo;
|
11
|
-
private responseTimer?;
|
12
|
-
/**
|
13
|
-
* Constructor
|
14
|
-
*
|
15
|
-
* @param {RoapRequest} roapRequest
|
16
|
-
*/
|
17
|
-
constructor(roapRequest: RoapRequest);
|
18
|
-
/**
|
19
|
-
* waits for TURN_DISCOVERY_RESPONSE message to arrive
|
20
|
-
*
|
21
|
-
* @returns {Promise}
|
22
|
-
* @private
|
23
|
-
* @memberof Roap
|
24
|
-
*/
|
25
|
-
private waitForTurnDiscoveryResponse;
|
26
|
-
/**
|
27
|
-
* handles TURN_DISCOVERY_RESPONSE roap message
|
28
|
-
*
|
29
|
-
* @param {Object} roapMessage
|
30
|
-
* @returns {void}
|
31
|
-
* @public
|
32
|
-
* @memberof Roap
|
33
|
-
*/
|
34
|
-
handleTurnDiscoveryResponse(roapMessage: object): void;
|
35
|
-
/**
|
36
|
-
* sends the TURN_DISCOVERY_REQUEST roap request
|
37
|
-
*
|
38
|
-
* @param {Meeting} meeting
|
39
|
-
* @param {Boolean} isReconnecting
|
40
|
-
* @returns {Promise}
|
41
|
-
* @private
|
42
|
-
* @memberof Roap
|
43
|
-
*/
|
44
|
-
private sendRoapTurnDiscoveryRequest;
|
45
|
-
/**
|
46
|
-
* Sends the OK message that server expects to receive
|
47
|
-
* after it sends us TURN_DISCOVERY_RESPONSE
|
48
|
-
*
|
49
|
-
* @param {Meeting} meeting
|
50
|
-
* @returns {Promise}
|
51
|
-
*/
|
52
|
-
sendRoapOK(meeting: Meeting): any;
|
53
|
-
/**
|
54
|
-
* Retrieves TURN server information from the backend by doing
|
55
|
-
* a roap message exchange:
|
56
|
-
* client server
|
57
|
-
* | -----TURN_DISCOVERY_REQUEST-----> |
|
58
|
-
* | <----TURN_DISCOVERY_RESPONSE----- |
|
59
|
-
* | --------------OK----------------> |
|
60
|
-
*
|
61
|
-
* @param {Meeting} meeting
|
62
|
-
* @param {Boolean} isReconnecting should be set to true if this is a new
|
63
|
-
* media connection just after a reconnection
|
64
|
-
* @returns {Promise}
|
65
|
-
*/
|
66
|
-
doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean): Promise<any>;
|
67
|
-
/**
|
68
|
-
* Gets the reason why reachability is skipped.
|
69
|
-
*
|
70
|
-
* @param {Meeting} meeting
|
71
|
-
* @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
|
72
|
-
*/
|
73
|
-
private getSkipReason;
|
74
|
-
/**
|
75
|
-
* Checks if TURN discovery is skipped.
|
76
|
-
*
|
77
|
-
* @param {Meeting} meeting
|
78
|
-
* @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
|
79
|
-
*/
|
80
|
-
isSkipped(meeting: any): Promise<boolean>;
|
81
|
-
}
|
package/dist/roap/util.d.ts
DELETED
package/dist/roap/util.js
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
4
|
-
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
5
|
-
_Object$defineProperty(exports, "__esModule", {
|
6
|
-
value: true
|
7
|
-
});
|
8
|
-
exports.default = void 0;
|
9
|
-
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
10
|
-
var _peerConnectionManager = _interopRequireDefault(require("../peer-connection-manager"));
|
11
|
-
var _constants = require("../constants");
|
12
|
-
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
13
|
-
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
14
|
-
var RoapUtil = {};
|
15
|
-
var ROAP_ANSWER = _constants._ANSWER_.toLowerCase();
|
16
|
-
RoapUtil.shouldHandleMedia = function (meeting) {
|
17
|
-
var offer = meeting.mediaProperties.peerConnection && meeting.mediaProperties.peerConnection.signalingState === _constants.SDP.HAVE_LOCAL_OFFER;
|
18
|
-
if (offer) {
|
19
|
-
return false;
|
20
|
-
}
|
21
|
-
return true;
|
22
|
-
};
|
23
|
-
RoapUtil.handleError = function (pc) {
|
24
|
-
return _peerConnectionManager.default.rollBackLocalDescription({
|
25
|
-
peerConnection: pc
|
26
|
-
}).then(function () {
|
27
|
-
return _promise.default.resolve(true);
|
28
|
-
}).catch(function (err) {
|
29
|
-
_loggerProxy.default.logger.error("Roap:util#handleError --> ".concat(err));
|
30
|
-
return _promise.default.reject(err);
|
31
|
-
});
|
32
|
-
};
|
33
|
-
RoapUtil.findError = function (messageType, errorType, type) {
|
34
|
-
return (type === _constants.ROAP.RECEIVE_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG) && messageType === _constants._ERROR_ && errorType === _constants._CONFLICT_;
|
35
|
-
};
|
36
|
-
RoapUtil.ensureMeeting = function (meeting, type) {
|
37
|
-
if (type === _constants.ROAP.RECEIVE_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG_SUCCESS) {
|
38
|
-
if (!meeting) {
|
39
|
-
return false;
|
40
|
-
}
|
41
|
-
}
|
42
|
-
return true;
|
43
|
-
};
|
44
|
-
RoapUtil.updatePeerConnection = function (meeting, session) {
|
45
|
-
return _peerConnectionManager.default.updatePeerConnection({
|
46
|
-
offerSdp: session.OFFER.sdps,
|
47
|
-
peerConnection: meeting.mediaProperties.peerConnection
|
48
|
-
}, {
|
49
|
-
meetingId: meeting.id,
|
50
|
-
remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel
|
51
|
-
}).then(function (res) {
|
52
|
-
meeting.roap.lastRoapOffer = session.OFFER.sdps;
|
53
|
-
return res;
|
54
|
-
});
|
55
|
-
};
|
56
|
-
RoapUtil.setRemoteDescription = function (meeting, session) {
|
57
|
-
_loggerProxy.default.logger.info("Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ".concat(meeting.correlationId));
|
58
|
-
if (!(meeting && meeting.mediaProperties.peerConnection)) {
|
59
|
-
_loggerProxy.default.logger.error("Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ".concat(meeting.correlationId));
|
60
|
-
return _promise.default.reject(new _parameter.default('Must provide a media or screen peer connection'));
|
61
|
-
}
|
62
|
-
return _peerConnectionManager.default.setRemoteSessionDetails(meeting.mediaProperties.peerConnection, ROAP_ANSWER, session.ANSWER.sdps[0], meeting.id).then(function () {
|
63
|
-
_loggerProxy.default.logger.info("Roap:util#setRemoteDescription --> Success for correlationId: ".concat(meeting.correlationId));
|
64
|
-
return {
|
65
|
-
seq: session.ANSWER.seq,
|
66
|
-
mediaId: meeting.mediaId,
|
67
|
-
correlationId: meeting.correlationId
|
68
|
-
};
|
69
|
-
}).catch(function (err) {
|
70
|
-
_loggerProxy.default.logger.error("Roap:util#setRemoteDescription --> ".concat(err));
|
71
|
-
throw err;
|
72
|
-
});
|
73
|
-
};
|
74
|
-
var _default = RoapUtil;
|
75
|
-
exports.default = _default;
|
76
|
-
//# sourceMappingURL=util.js.map
|
package/dist/roap/util.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["_peerConnectionManager","_interopRequireDefault","require","_constants","_loggerProxy","_parameter","RoapUtil","ROAP_ANSWER","_ANSWER_","toLowerCase","shouldHandleMedia","meeting","offer","mediaProperties","peerConnection","signalingState","SDP","HAVE_LOCAL_OFFER","handleError","pc","PeerConnectionManager","rollBackLocalDescription","then","_promise","default","resolve","catch","err","LoggerProxy","logger","error","concat","reject","findError","messageType","errorType","type","ROAP","RECEIVE_ROAP_MSG","SEND_ROAP_MSG","_ERROR_","_CONFLICT_","ensureMeeting","SEND_ROAP_MSG_SUCCESS","updatePeerConnection","session","offerSdp","OFFER","sdps","meetingId","id","remoteQualityLevel","res","roap","lastRoapOffer","setRemoteDescription","info","correlationId","ParameterError","setRemoteSessionDetails","ANSWER","seq","mediaId","_default","exports"],"sources":["util.ts"],"sourcesContent":["import PeerConnectionManager from '../peer-connection-manager';\nimport {_ANSWER_, _ERROR_, _CONFLICT_, ROAP, SDP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\n\nconst RoapUtil: any = {};\nconst ROAP_ANSWER = _ANSWER_.toLowerCase();\n\nRoapUtil.shouldHandleMedia = (meeting) => {\n const offer =\n meeting.mediaProperties.peerConnection &&\n meeting.mediaProperties.peerConnection.signalingState === SDP.HAVE_LOCAL_OFFER;\n\n if (offer) {\n return false;\n }\n\n return true;\n};\n\nRoapUtil.handleError = (pc) =>\n PeerConnectionManager.rollBackLocalDescription({peerConnection: pc})\n .then(() => Promise.resolve(true))\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#handleError --> ${err}`);\n\n return Promise.reject(err);\n });\n\nRoapUtil.findError = (messageType, errorType, type) =>\n (type === ROAP.RECEIVE_ROAP_MSG || type === ROAP.SEND_ROAP_MSG) &&\n messageType === _ERROR_ &&\n errorType === _CONFLICT_;\n\nRoapUtil.ensureMeeting = (meeting, type) => {\n if (\n type === ROAP.RECEIVE_ROAP_MSG ||\n type === ROAP.SEND_ROAP_MSG ||\n type === ROAP.SEND_ROAP_MSG_SUCCESS\n ) {\n if (!meeting) {\n return false;\n }\n }\n\n return true;\n};\n\nRoapUtil.updatePeerConnection = (meeting, session) =>\n PeerConnectionManager.updatePeerConnection(\n {\n offerSdp: session.OFFER.sdps,\n peerConnection: meeting.mediaProperties.peerConnection,\n },\n {\n meetingId: meeting.id,\n remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel,\n }\n ).then((res) => {\n meeting.roap.lastRoapOffer = session.OFFER.sdps;\n\n return res;\n });\n\nRoapUtil.setRemoteDescription = (meeting, session) => {\n LoggerProxy.logger.info(\n `Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ${meeting.correlationId}`\n );\n if (!(meeting && meeting.mediaProperties.peerConnection)) {\n LoggerProxy.logger.error(\n `Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ${meeting.correlationId}`\n );\n\n return Promise.reject(new ParameterError('Must provide a media or screen peer connection'));\n }\n\n return PeerConnectionManager.setRemoteSessionDetails(\n meeting.mediaProperties.peerConnection,\n ROAP_ANSWER,\n session.ANSWER.sdps[0],\n meeting.id\n )\n .then(() => {\n LoggerProxy.logger.info(\n `Roap:util#setRemoteDescription --> Success for correlationId: ${meeting.correlationId}`\n );\n\n return {\n seq: session.ANSWER.seq,\n mediaId: meeting.mediaId,\n correlationId: meeting.correlationId,\n };\n })\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#setRemoteDescription --> ${err}`);\n throw err;\n });\n};\n\nexport default RoapUtil;\n"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["RTC_METRICS","exports","default","APP_ID"],"sources":["constants.ts"],"sourcesContent":["const RTC_METRICS = {APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'};\n\nexport {RTC_METRICS as default};\n"],"mappings":";;;;;;;AAAA,IAAMA,WAAW,GAAAC,OAAA,CAAAC,OAAA,GAAG;EAACC,MAAM,EAAE;AAAsC,CAAC"}
|
@@ -1,61 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Rtc Metrics
|
3
|
-
*/
|
4
|
-
export default class RtcMetrics {
|
5
|
-
/**
|
6
|
-
* Array of MetricData items to be sent to the metrics service.
|
7
|
-
*/
|
8
|
-
metricsQueue: any[];
|
9
|
-
intervalId: number;
|
10
|
-
webex: any;
|
11
|
-
meetingId: string;
|
12
|
-
correlationId: string;
|
13
|
-
connectionId: string;
|
14
|
-
/**
|
15
|
-
* Initialize the interval.
|
16
|
-
*
|
17
|
-
* @param {object} webex - The main `webex` object.
|
18
|
-
* @param {string} meetingId - The meeting id.
|
19
|
-
* @param {string} correlationId - The correlation id.
|
20
|
-
*/
|
21
|
-
constructor(webex: any, meetingId: any, correlationId: any);
|
22
|
-
/**
|
23
|
-
* Check to see if the metrics queue has any items.
|
24
|
-
*
|
25
|
-
* @returns {void}
|
26
|
-
*/
|
27
|
-
sendMetricsInQueue(): void;
|
28
|
-
/**
|
29
|
-
* Add metrics items to the metrics queue.
|
30
|
-
*
|
31
|
-
* @param {object} data - An object with a payload array of metrics items.
|
32
|
-
*
|
33
|
-
* @returns {void}
|
34
|
-
*/
|
35
|
-
addMetrics(data: any): void;
|
36
|
-
/**
|
37
|
-
* Clear the metrics interval.
|
38
|
-
*
|
39
|
-
* @returns {void}
|
40
|
-
*/
|
41
|
-
closeMetrics(): void;
|
42
|
-
/**
|
43
|
-
* Anonymize IP addresses.
|
44
|
-
*
|
45
|
-
* @param {array} stats - An RTCStatsReport organized into an array of strings.
|
46
|
-
* @returns {string}
|
47
|
-
*/
|
48
|
-
anonymizeIp(stats: string): string;
|
49
|
-
/**
|
50
|
-
* Set a new connection id.
|
51
|
-
*
|
52
|
-
* @returns {void}
|
53
|
-
*/
|
54
|
-
private setNewConnectionId;
|
55
|
-
/**
|
56
|
-
* Send metrics to the metrics service.
|
57
|
-
*
|
58
|
-
* @returns {void}
|
59
|
-
*/
|
60
|
-
private sendMetrics;
|
61
|
-
}
|
package/dist/rtcMetrics/index.js
DELETED
@@ -1,197 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
4
|
-
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
5
|
-
_Object$defineProperty(exports, "__esModule", {
|
6
|
-
value: true
|
7
|
-
});
|
8
|
-
exports.default = void 0;
|
9
|
-
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
11
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
13
|
-
var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
|
14
|
-
var _uuid = _interopRequireDefault(require("uuid"));
|
15
|
-
var _constants = _interopRequireDefault(require("./constants"));
|
16
|
-
/* eslint-disable class-methods-use-this */
|
17
|
-
|
18
|
-
var parseJsonPayload = function parseJsonPayload(payload) {
|
19
|
-
try {
|
20
|
-
if (payload && payload[0]) {
|
21
|
-
return JSON.parse(payload[0]);
|
22
|
-
}
|
23
|
-
return null;
|
24
|
-
} catch (_) {
|
25
|
-
return null;
|
26
|
-
}
|
27
|
-
};
|
28
|
-
|
29
|
-
/**
|
30
|
-
* Rtc Metrics
|
31
|
-
*/
|
32
|
-
var RtcMetrics = exports.default = /*#__PURE__*/function () {
|
33
|
-
/**
|
34
|
-
* Initialize the interval.
|
35
|
-
*
|
36
|
-
* @param {object} webex - The main `webex` object.
|
37
|
-
* @param {string} meetingId - The meeting id.
|
38
|
-
* @param {string} correlationId - The correlation id.
|
39
|
-
*/
|
40
|
-
function RtcMetrics(webex, meetingId, correlationId) {
|
41
|
-
(0, _classCallCheck2.default)(this, RtcMetrics);
|
42
|
-
/**
|
43
|
-
* Array of MetricData items to be sent to the metrics service.
|
44
|
-
*/
|
45
|
-
(0, _defineProperty2.default)(this, "metricsQueue", []);
|
46
|
-
(0, _defineProperty2.default)(this, "intervalId", void 0);
|
47
|
-
(0, _defineProperty2.default)(this, "webex", void 0);
|
48
|
-
(0, _defineProperty2.default)(this, "meetingId", void 0);
|
49
|
-
(0, _defineProperty2.default)(this, "correlationId", void 0);
|
50
|
-
(0, _defineProperty2.default)(this, "connectionId", void 0);
|
51
|
-
(0, _defineProperty2.default)(this, "shouldSendMetricsOnNextStatsReport", void 0);
|
52
|
-
// `window` is used to prevent typescript from returning a NodeJS.Timer.
|
53
|
-
this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);
|
54
|
-
this.meetingId = meetingId;
|
55
|
-
this.webex = webex;
|
56
|
-
this.correlationId = correlationId;
|
57
|
-
this.resetConnection();
|
58
|
-
}
|
59
|
-
|
60
|
-
/**
|
61
|
-
* Check to see if the metrics queue has any items.
|
62
|
-
*
|
63
|
-
* @returns {void}
|
64
|
-
*/
|
65
|
-
(0, _createClass2.default)(RtcMetrics, [{
|
66
|
-
key: "sendMetricsInQueue",
|
67
|
-
value: function sendMetricsInQueue() {
|
68
|
-
if (this.metricsQueue.length) {
|
69
|
-
this.sendMetrics();
|
70
|
-
this.metricsQueue = [];
|
71
|
-
}
|
72
|
-
}
|
73
|
-
|
74
|
-
/**
|
75
|
-
* Forces sending metrics when we get the next stats-report
|
76
|
-
*
|
77
|
-
* This is useful for cases when something important happens that affects the media connection,
|
78
|
-
* for example when we move from lobby into the meeting.
|
79
|
-
*
|
80
|
-
* @returns {void}
|
81
|
-
*/
|
82
|
-
}, {
|
83
|
-
key: "sendNextMetrics",
|
84
|
-
value: function sendNextMetrics() {
|
85
|
-
this.shouldSendMetricsOnNextStatsReport = true;
|
86
|
-
}
|
87
|
-
|
88
|
-
/**
|
89
|
-
* Add metrics items to the metrics queue.
|
90
|
-
*
|
91
|
-
* @param {object} data - An object with a payload array of metrics items.
|
92
|
-
*
|
93
|
-
* @returns {void}
|
94
|
-
*/
|
95
|
-
}, {
|
96
|
-
key: "addMetrics",
|
97
|
-
value: function addMetrics(data) {
|
98
|
-
if (data.payload.length) {
|
99
|
-
if (data.name === 'stats-report') {
|
100
|
-
data.payload = data.payload.map(this.anonymizeIp);
|
101
|
-
}
|
102
|
-
this.metricsQueue.push(data);
|
103
|
-
if (this.shouldSendMetricsOnNextStatsReport && data.name === 'stats-report') {
|
104
|
-
// this is the first useful set of data (WCME gives it to us after 5s), send it out immediately
|
105
|
-
// in case the user is unhappy and closes the browser early
|
106
|
-
this.sendMetricsInQueue();
|
107
|
-
this.shouldSendMetricsOnNextStatsReport = false;
|
108
|
-
}
|
109
|
-
try {
|
110
|
-
// If a connection fails, send the rest of the metrics in queue and get a new connection id.
|
111
|
-
var parsedPayload = parseJsonPayload(data.payload);
|
112
|
-
if (data.name === 'onconnectionstatechange' && parsedPayload && parsedPayload.value === 'failed') {
|
113
|
-
this.sendMetricsInQueue();
|
114
|
-
this.resetConnection();
|
115
|
-
}
|
116
|
-
} catch (e) {
|
117
|
-
console.error(e);
|
118
|
-
}
|
119
|
-
}
|
120
|
-
}
|
121
|
-
|
122
|
-
/**
|
123
|
-
* Clear the metrics interval.
|
124
|
-
*
|
125
|
-
* @returns {void}
|
126
|
-
*/
|
127
|
-
}, {
|
128
|
-
key: "closeMetrics",
|
129
|
-
value: function closeMetrics() {
|
130
|
-
this.sendMetricsInQueue();
|
131
|
-
clearInterval(this.intervalId);
|
132
|
-
}
|
133
|
-
|
134
|
-
/**
|
135
|
-
* Anonymize IP addresses.
|
136
|
-
*
|
137
|
-
* @param {array} stats - An RTCStatsReport organized into an array of strings.
|
138
|
-
* @returns {string}
|
139
|
-
*/
|
140
|
-
}, {
|
141
|
-
key: "anonymizeIp",
|
142
|
-
value: function anonymizeIp(stats) {
|
143
|
-
var data = JSON.parse(stats);
|
144
|
-
// on local and remote candidates, anonymize the last 4 bits.
|
145
|
-
if (data.type === 'local-candidate' || data.type === 'remote-candidate') {
|
146
|
-
data.ip = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;
|
147
|
-
data.address = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;
|
148
|
-
data.relatedAddress = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;
|
149
|
-
}
|
150
|
-
return (0, _stringify.default)(data);
|
151
|
-
}
|
152
|
-
|
153
|
-
/**
|
154
|
-
* Set a new connection id.
|
155
|
-
*
|
156
|
-
* @returns {void}
|
157
|
-
*/
|
158
|
-
}, {
|
159
|
-
key: "resetConnection",
|
160
|
-
value: function resetConnection() {
|
161
|
-
this.connectionId = _uuid.default.v4();
|
162
|
-
this.shouldSendMetricsOnNextStatsReport = true;
|
163
|
-
}
|
164
|
-
|
165
|
-
/**
|
166
|
-
* Send metrics to the metrics service.
|
167
|
-
*
|
168
|
-
* @returns {void}
|
169
|
-
*/
|
170
|
-
}, {
|
171
|
-
key: "sendMetrics",
|
172
|
-
value: function sendMetrics() {
|
173
|
-
this.webex.request({
|
174
|
-
method: 'POST',
|
175
|
-
service: 'unifiedTelemetry',
|
176
|
-
resource: 'metric/v2',
|
177
|
-
headers: {
|
178
|
-
type: 'webrtcMedia',
|
179
|
-
appId: _constants.default.APP_ID
|
180
|
-
},
|
181
|
-
body: {
|
182
|
-
metrics: [{
|
183
|
-
type: 'webrtc',
|
184
|
-
version: '1.1.0',
|
185
|
-
userId: this.webex.internal.device.userId,
|
186
|
-
meetingId: this.meetingId,
|
187
|
-
correlationId: this.correlationId,
|
188
|
-
connectionId: this.connectionId,
|
189
|
-
data: this.metricsQueue
|
190
|
-
}]
|
191
|
-
}
|
192
|
-
});
|
193
|
-
}
|
194
|
-
}]);
|
195
|
-
return RtcMetrics;
|
196
|
-
}();
|
197
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["_internalPluginMetrics","require","_uuid","_interopRequireDefault","_constants","parseJsonPayload","payload","JSON","parse","_","RtcMetrics","exports","default","webex","meetingId","correlationId","_classCallCheck2","_defineProperty2","intervalId","window","setInterval","sendMetricsInQueue","bind","resetConnection","_createClass2","key","value","metricsQueue","length","sendMetrics","sendNextMetrics","shouldSendMetricsOnNextStatsReport","addMetrics","data","name","map","anonymizeIp","push","parsedPayload","e","console","error","closeMetrics","clearInterval","stats","type","ip","CallDiagnosticUtils","anonymizeIPAddress","undefined","address","relatedAddress","_stringify","connectionId","uuid","v4","request","method","service","resource","headers","appId","RTC_METRICS","APP_ID","body","metrics","version","userId","internal","device"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\nimport uuid from 'uuid';\nimport RTC_METRICS from './constants';\n\nconst parseJsonPayload = (payload: any[]): any | null => {\n try {\n if (payload && payload[0]) {\n return JSON.parse(payload[0]);\n }\n\n return null;\n } catch (_) {\n return null;\n }\n};\n\n/**\n * Rtc Metrics\n */\nexport default class RtcMetrics {\n /**\n * Array of MetricData items to be sent to the metrics service.\n */\n metricsQueue = [];\n\n intervalId: number;\n\n webex: any;\n\n meetingId: string;\n\n correlationId: string;\n\n connectionId: string;\n\n shouldSendMetricsOnNextStatsReport: boolean;\n\n /**\n * Initialize the interval.\n *\n * @param {object} webex - The main `webex` object.\n * @param {string} meetingId - The meeting id.\n * @param {string} correlationId - The correlation id.\n */\n constructor(webex, meetingId, correlationId) {\n // `window` is used to prevent typescript from returning a NodeJS.Timer.\n this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);\n this.meetingId = meetingId;\n this.webex = webex;\n this.correlationId = correlationId;\n this.resetConnection();\n }\n\n /**\n * Check to see if the metrics queue has any items.\n *\n * @returns {void}\n */\n public sendMetricsInQueue() {\n if (this.metricsQueue.length) {\n this.sendMetrics();\n this.metricsQueue = [];\n }\n }\n\n /**\n * Forces sending metrics when we get the next stats-report\n *\n * This is useful for cases when something important happens that affects the media connection,\n * for example when we move from lobby into the meeting.\n *\n * @returns {void}\n */\n public sendNextMetrics() {\n this.shouldSendMetricsOnNextStatsReport = true;\n }\n\n /**\n * Add metrics items to the metrics queue.\n *\n * @param {object} data - An object with a payload array of metrics items.\n *\n * @returns {void}\n */\n addMetrics(data) {\n if (data.payload.length) {\n if (data.name === 'stats-report') {\n data.payload = data.payload.map(this.anonymizeIp);\n }\n\n this.metricsQueue.push(data);\n\n if (this.shouldSendMetricsOnNextStatsReport && data.name === 'stats-report') {\n // this is the first useful set of data (WCME gives it to us after 5s), send it out immediately\n // in case the user is unhappy and closes the browser early\n this.sendMetricsInQueue();\n this.shouldSendMetricsOnNextStatsReport = false;\n }\n\n try {\n // If a connection fails, send the rest of the metrics in queue and get a new connection id.\n const parsedPayload = parseJsonPayload(data.payload);\n if (\n data.name === 'onconnectionstatechange' &&\n parsedPayload &&\n parsedPayload.value === 'failed'\n ) {\n this.sendMetricsInQueue();\n this.resetConnection();\n }\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n /**\n * Clear the metrics interval.\n *\n * @returns {void}\n */\n closeMetrics() {\n this.sendMetricsInQueue();\n clearInterval(this.intervalId);\n }\n\n /**\n * Anonymize IP addresses.\n *\n * @param {array} stats - An RTCStatsReport organized into an array of strings.\n * @returns {string}\n */\n anonymizeIp(stats: string): string {\n const data = JSON.parse(stats);\n // on local and remote candidates, anonymize the last 4 bits.\n if (data.type === 'local-candidate' || data.type === 'remote-candidate') {\n data.ip = CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;\n data.address = CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;\n data.relatedAddress =\n CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;\n }\n\n return JSON.stringify(data);\n }\n\n /**\n * Set a new connection id.\n *\n * @returns {void}\n */\n private resetConnection() {\n this.connectionId = uuid.v4();\n this.shouldSendMetricsOnNextStatsReport = true;\n }\n\n /**\n * Send metrics to the metrics service.\n *\n * @returns {void}\n */\n private sendMetrics() {\n this.webex.request({\n method: 'POST',\n service: 'unifiedTelemetry',\n resource: 'metric/v2',\n headers: {\n type: 'webrtcMedia',\n appId: RTC_METRICS.APP_ID,\n },\n body: {\n metrics: [\n {\n type: 'webrtc',\n version: '1.1.0',\n userId: this.webex.internal.device.userId,\n meetingId: this.meetingId,\n correlationId: this.correlationId,\n connectionId: this.connectionId,\n data: this.metricsQueue,\n },\n ],\n },\n });\n }\n}\n"],"mappings":"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"}
|
@@ -1,118 +0,0 @@
|
|
1
|
-
declare const STATS_DEFAULT: {
|
2
|
-
encryption: string;
|
3
|
-
audio: {
|
4
|
-
send: {
|
5
|
-
maxPacketLossRatio: number;
|
6
|
-
availableBandwidth: number;
|
7
|
-
bytesSent: number;
|
8
|
-
meanRemoteJitter: any[];
|
9
|
-
meanRoundTripTime: any[];
|
10
|
-
};
|
11
|
-
recv: {
|
12
|
-
availableBandwidth: number;
|
13
|
-
bytesReceived: number;
|
14
|
-
meanRtpJitter: any[];
|
15
|
-
meanRoundTripTime: any[];
|
16
|
-
};
|
17
|
-
};
|
18
|
-
video: {
|
19
|
-
send: {
|
20
|
-
maxPacketLossRatio: number;
|
21
|
-
availableBandwidth: number;
|
22
|
-
meanRemoteJitter: any[];
|
23
|
-
meanRoundTripTime: any[];
|
24
|
-
};
|
25
|
-
recv: {
|
26
|
-
availableBandwidth: number;
|
27
|
-
totalPacketsLost: number;
|
28
|
-
meanRtpJitter: any[];
|
29
|
-
meanRoundTripTime: any[];
|
30
|
-
};
|
31
|
-
latency: number;
|
32
|
-
packetsLost: number;
|
33
|
-
};
|
34
|
-
share: {
|
35
|
-
send: {
|
36
|
-
maxPacketLossRatio: number;
|
37
|
-
availableBandwidth: number;
|
38
|
-
totalPacketsLost: number;
|
39
|
-
meanRemoteJitter: any[];
|
40
|
-
meanRoundTripTime: any[];
|
41
|
-
};
|
42
|
-
recv: {
|
43
|
-
availableBandwidth: number;
|
44
|
-
meanRtpJitter: any[];
|
45
|
-
meanRoundTripTime: any[];
|
46
|
-
};
|
47
|
-
latency: number;
|
48
|
-
packetsLost: number;
|
49
|
-
};
|
50
|
-
bandwidth: {
|
51
|
-
systemBandwidth: number;
|
52
|
-
sentPerSecond: number;
|
53
|
-
encodedPerSecond: number;
|
54
|
-
helper: {
|
55
|
-
audioBytesSent: number;
|
56
|
-
videoBytestSent: number;
|
57
|
-
};
|
58
|
-
speed: number;
|
59
|
-
};
|
60
|
-
results: {};
|
61
|
-
connectionType: {
|
62
|
-
systemNetworkType: string;
|
63
|
-
systemIpAddress: string;
|
64
|
-
local: {
|
65
|
-
candidateType: any[];
|
66
|
-
transport: any[];
|
67
|
-
ipAddress: any[];
|
68
|
-
networkType: any[];
|
69
|
-
};
|
70
|
-
remote: {
|
71
|
-
candidateType: any[];
|
72
|
-
transport: any[];
|
73
|
-
ipAddress: any[];
|
74
|
-
networkType: any[];
|
75
|
-
};
|
76
|
-
};
|
77
|
-
resolutions: {
|
78
|
-
video: {
|
79
|
-
send: {
|
80
|
-
width: number;
|
81
|
-
height: number;
|
82
|
-
framesSent: number;
|
83
|
-
};
|
84
|
-
recv: {
|
85
|
-
width: number;
|
86
|
-
height: number;
|
87
|
-
};
|
88
|
-
};
|
89
|
-
share: {
|
90
|
-
send: {
|
91
|
-
width: number;
|
92
|
-
height: number;
|
93
|
-
framesSent: number;
|
94
|
-
};
|
95
|
-
recv: {
|
96
|
-
width: number;
|
97
|
-
height: number;
|
98
|
-
};
|
99
|
-
};
|
100
|
-
};
|
101
|
-
internal: {
|
102
|
-
audio: {
|
103
|
-
send: {};
|
104
|
-
recv: {};
|
105
|
-
};
|
106
|
-
video: {
|
107
|
-
send: {};
|
108
|
-
recv: {};
|
109
|
-
};
|
110
|
-
share: {
|
111
|
-
send: {};
|
112
|
-
recv: {};
|
113
|
-
};
|
114
|
-
remote: {};
|
115
|
-
candidates: {};
|
116
|
-
};
|
117
|
-
};
|
118
|
-
export default STATS_DEFAULT;
|