@webex/plugin-meetings 2.37.0 → 2.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +7 -46
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -24
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +35 -61
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +1 -5
- package/dist/config.js.map +1 -1
- package/dist/constants.js +46 -42
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +10 -28
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +101 -193
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +87 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +16 -81
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +74 -137
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +64 -110
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +3 -17
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +10 -12
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +120 -192
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +0 -13
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +812 -1487
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +31 -78
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +157 -227
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +25 -169
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +179 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +3 -21
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +451 -570
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +7 -30
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +94 -148
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +49 -89
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +17 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +2 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +68 -184
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +21 -56
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +9 -38
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +0 -2
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +48 -136
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +28 -57
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js +60 -190
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/peer-connection-manager/util.js +10 -24
- package/dist/peer-connection-manager/util.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +100 -166
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +2 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.js +0 -2
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +0 -5
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +294 -468
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/collection.js +1 -12
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.js +15 -85
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.js +42 -94
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +81 -148
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js +2 -39
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.js +8 -52
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.js +0 -26
- package/dist/roap/util.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +68 -168
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +54 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +17 -17
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +11 -11
- package/src/constants.ts +138 -119
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +34 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +25 -34
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +45 -68
- package/src/locus-info/selfUtils.ts +106 -57
- package/src/media/index.ts +118 -109
- package/src/media/properties.ts +26 -20
- package/src/media/util.ts +2 -2
- package/src/mediaQualityMetrics/config.ts +46 -46
- package/src/meeting/effectsState.ts +35 -35
- package/src/meeting/in-meeting-actions.ts +7 -3
- package/src/meeting/index.ts +1435 -1210
- package/src/meeting/muteState.ts +62 -31
- package/src/meeting/request.ts +160 -113
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +131 -90
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +106 -108
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +59 -53
- package/src/meetings/collection.ts +1 -1
- package/src/meetings/index.ts +513 -441
- package/src/meetings/request.ts +26 -24
- package/src/meetings/util.ts +26 -23
- package/src/member/index.ts +55 -49
- package/src/member/util.ts +26 -13
- package/src/members/collection.ts +0 -1
- package/src/members/index.ts +172 -121
- package/src/members/request.ts +46 -14
- package/src/members/util.ts +44 -42
- package/src/metrics/config.ts +254 -81
- package/src/metrics/constants.ts +0 -2
- package/src/metrics/index.ts +84 -71
- package/src/networkQualityMonitor/index.ts +20 -23
- package/src/peer-connection-manager/index.ts +321 -241
- package/src/peer-connection-manager/util.ts +4 -2
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +61 -59
- package/src/reachability/request.ts +36 -32
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +2 -3
- package/src/reconnection-manager/index.ts +159 -98
- package/src/roap/collection.ts +2 -4
- package/src/roap/handler.ts +63 -32
- package/src/roap/index.ts +78 -58
- package/src/roap/request.ts +69 -54
- package/src/roap/state.ts +17 -11
- package/src/roap/turnDiscovery.ts +60 -31
- package/src/roap/util.ts +39 -31
- package/src/statsAnalyzer/global.ts +30 -33
- package/src/statsAnalyzer/index.ts +397 -169
- package/src/statsAnalyzer/mqaUtil.ts +178 -72
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/journey.js +666 -462
- package/test/integration/spec/space-meeting.js +318 -203
- package/test/integration/spec/transcription.js +6 -7
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +5 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +1 -2
- package/test/unit/spec/locus-info/infoUtils.js +24 -31
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +72 -103
- package/test/unit/spec/locus-info/selfUtils.js +21 -12
- package/test/unit/spec/meeting/effectsState.js +33 -45
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
- package/test/unit/spec/meeting/index.js +1141 -649
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +56 -45
- package/test/unit/spec/meeting/utils.js +66 -49
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +438 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +5 -6
- package/test/unit/spec/members/index.js +84 -35
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/peerconnection-manager/index.js +88 -58
- package/test/unit/spec/peerconnection-manager/utils.js +5 -4
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +7 -8
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +9 -11
- package/test/unit/spec/reconnection-manager/index.js +14 -17
- package/test/unit/spec/roap/index.ts +18 -8
- package/test/unit/spec/roap/turnDiscovery.ts +22 -19
- package/test/unit/spec/roap/util.js +3 -3
- package/test/unit/spec/stats-analyzer/index.js +29 -24
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +53 -50
|
@@ -1,83 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
|
|
4
|
-
|
|
5
4
|
var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
|
|
6
|
-
|
|
7
5
|
var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
|
|
8
|
-
|
|
9
6
|
var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
|
|
10
|
-
|
|
11
7
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
12
|
-
|
|
13
8
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
14
|
-
|
|
15
9
|
_Object$defineProperty(exports, "__esModule", {
|
|
16
10
|
value: true
|
|
17
11
|
});
|
|
18
|
-
|
|
19
12
|
exports.default = void 0;
|
|
20
|
-
|
|
21
13
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
22
|
-
|
|
23
14
|
var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
|
|
24
|
-
|
|
25
15
|
var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
|
|
26
|
-
|
|
27
16
|
var _window = _interopRequireDefault(require("global/window"));
|
|
28
|
-
|
|
29
17
|
var _sdpTransform = _interopRequireDefault(require("sdp-transform"));
|
|
30
|
-
|
|
31
18
|
var _metrics = _interopRequireDefault(require("../metrics"));
|
|
32
|
-
|
|
33
19
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
34
|
-
|
|
35
20
|
var _config = _interopRequireDefault(require("../common/config"));
|
|
36
|
-
|
|
37
21
|
var _constants = require("../constants");
|
|
38
|
-
|
|
39
22
|
var _constants2 = _interopRequireDefault(require("../metrics/constants"));
|
|
40
|
-
|
|
41
23
|
var _config2 = require("../metrics/config");
|
|
42
|
-
|
|
43
24
|
var _media = _interopRequireDefault(require("../common/errors/media"));
|
|
44
|
-
|
|
45
25
|
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
|
46
|
-
|
|
47
26
|
var _webexErrors = require("../common/errors/webex-errors");
|
|
48
|
-
|
|
49
27
|
var _browserDetection = _interopRequireDefault(require("../common/browser-detection"));
|
|
50
|
-
|
|
51
28
|
var _util = _interopRequireDefault(require("./util"));
|
|
52
|
-
|
|
53
29
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
54
|
-
|
|
55
30
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
56
|
-
|
|
57
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
58
|
-
|
|
31
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
59
32
|
var _BrowserDetection = (0, _browserDetection.default)(),
|
|
60
|
-
|
|
33
|
+
isBrowser = _BrowserDetection.isBrowser;
|
|
34
|
+
|
|
61
35
|
/**
|
|
62
36
|
* @export
|
|
63
37
|
* @public
|
|
64
38
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
39
|
var pc = {};
|
|
40
|
+
|
|
68
41
|
/**
|
|
69
42
|
* munges the bandwidth limit into the sdp
|
|
70
43
|
* @param {String} sdpLines
|
|
71
44
|
* @param {Number} index
|
|
72
45
|
* @returns {String}
|
|
73
46
|
*/
|
|
74
|
-
|
|
75
47
|
var insertBandwidthLimit = function insertBandwidthLimit(sdpLines, index) {
|
|
76
48
|
// eslint-disable-next-line no-warning-comments
|
|
77
49
|
// TODO convert to sdp parser
|
|
78
50
|
var limit;
|
|
79
51
|
var periodicKeyFrame = '';
|
|
80
|
-
|
|
81
52
|
if (sdpLines[index].search(_constants.AUDIO) !== -1) {
|
|
82
53
|
limit = _config.default.meetings.bandwidth.audio;
|
|
83
54
|
} else {
|
|
@@ -85,91 +56,71 @@ var insertBandwidthLimit = function insertBandwidthLimit(sdpLines, index) {
|
|
|
85
56
|
periodicKeyFrame = _constants.SDP.PERIODIC_KEYFRAME;
|
|
86
57
|
sdpLines.splice(index + 2, 0, periodicKeyFrame);
|
|
87
58
|
}
|
|
88
|
-
|
|
89
59
|
sdpLines.splice(index + 1, 0, "".concat(_constants.SDP.B_LINE, ":").concat(limit));
|
|
90
60
|
return sdpLines;
|
|
91
61
|
};
|
|
62
|
+
|
|
92
63
|
/**
|
|
93
64
|
* needed for calliope max-fs
|
|
94
65
|
* @param {String} sdp
|
|
95
66
|
* @param {String} [level=QUALITY_LEVELS.HIGH] quality level for max-fs
|
|
96
67
|
* @returns {String}
|
|
97
68
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
100
69
|
var setRemoteVideoConstraints = function setRemoteVideoConstraints(sdp) {
|
|
101
70
|
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.QUALITY_LEVELS.HIGH;
|
|
102
71
|
var maxFs = _constants.REMOTE_VIDEO_CONSTRAINTS.MAX_FS[level];
|
|
103
|
-
|
|
104
72
|
if (!maxFs) {
|
|
105
73
|
throw new _parameter.default("setRemoteVideoConstraints: unable to set max framesize, value for level \"".concat(level, "\" is not defined"));
|
|
106
74
|
}
|
|
107
|
-
|
|
108
75
|
var modifiedSdp = _util.default.adjustH264Profile(sdp, maxFs);
|
|
109
|
-
|
|
110
76
|
return modifiedSdp;
|
|
111
77
|
};
|
|
112
|
-
|
|
113
78
|
var setStartBitrateOnRemoteSdp = function setStartBitrateOnRemoteSdp(sdp) {
|
|
114
79
|
if (_config.default.meetings.bandwidth.startBitrate) {
|
|
115
80
|
sdp = sdp.replace(/(\na=fmtp:(\d+).*profile-level-id=.*)/gi, "$1;x-google-start-bitrate=".concat(_config.default.meetings.bandwidth.startBitrate));
|
|
116
81
|
}
|
|
117
|
-
|
|
118
82
|
return sdp;
|
|
119
83
|
};
|
|
84
|
+
|
|
120
85
|
/**
|
|
121
86
|
* checks that sdp has h264 codec in it
|
|
122
87
|
* @param {String} sdp
|
|
123
88
|
* @returns {boolean}
|
|
124
89
|
*/
|
|
125
|
-
|
|
126
|
-
|
|
127
90
|
var checkH264Support = function checkH264Support(sdp) {
|
|
128
91
|
// eslint-disable-next-line no-warning-comments
|
|
129
92
|
// TODO convert to sdp parser to read rtp.codec
|
|
130
93
|
var videoPresent = sdp.match(/\nm=video.*/g);
|
|
131
94
|
var h264Present = sdp.match(/\na=rtpmap:\d+\sH264.*/g);
|
|
132
|
-
|
|
133
95
|
if (videoPresent) {
|
|
134
96
|
return !!h264Present;
|
|
135
97
|
}
|
|
136
|
-
|
|
137
98
|
return true;
|
|
138
99
|
};
|
|
100
|
+
|
|
139
101
|
/**
|
|
140
102
|
* validates the sdp, checks port, candidates, and ice info
|
|
141
103
|
* @param {String} sdp
|
|
142
104
|
* @returns {String}
|
|
143
105
|
*/
|
|
144
|
-
|
|
145
|
-
|
|
146
106
|
var isSdpInvalid = function isSdpInvalid(sdp) {
|
|
147
107
|
var parsedSdp = _sdpTransform.default.parse(sdp);
|
|
148
|
-
|
|
149
108
|
var _iterator = _createForOfIteratorHelper(parsedSdp.media),
|
|
150
|
-
|
|
151
|
-
|
|
109
|
+
_step;
|
|
152
110
|
try {
|
|
153
111
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
154
112
|
var _mediaLine$candidates;
|
|
155
|
-
|
|
156
113
|
var mediaLine = _step.value;
|
|
157
|
-
|
|
158
114
|
if (!mediaLine.candidates || ((_mediaLine$candidates = mediaLine.candidates) === null || _mediaLine$candidates === void 0 ? void 0 : _mediaLine$candidates.length) === 0) {
|
|
159
115
|
_loggerProxy.default.logger.error('PeerConnectionManager:index#isSdpInvalid --> iceCandidate: Ice candidate never completed');
|
|
160
|
-
|
|
161
116
|
return 'iceCandidate: Ice gathering never completed';
|
|
162
117
|
}
|
|
163
|
-
|
|
164
118
|
if (_constants.SDP.BAD_MEDIA_PORTS.includes(mediaLine.port)) {
|
|
165
119
|
_loggerProxy.default.logger.error('PeerConnectionManager:index#isSdpInvalid --> iceCandidate: Found invalid port number for the ice candidate');
|
|
166
|
-
|
|
167
120
|
return 'iceCandidate: Found invalid port number for the ice candidate';
|
|
168
121
|
}
|
|
169
|
-
|
|
170
122
|
if (!mediaLine.icePwd || !mediaLine.iceUfrag) {
|
|
171
123
|
_loggerProxy.default.logger.error('PeerConnectionManager:index#isSdpInvalid --> iceCandidate: ice ufrag and password not found');
|
|
172
|
-
|
|
173
124
|
return 'iceCandidate: ice ufrag and password not found';
|
|
174
125
|
}
|
|
175
126
|
}
|
|
@@ -178,44 +129,39 @@ var isSdpInvalid = function isSdpInvalid(sdp) {
|
|
|
178
129
|
} finally {
|
|
179
130
|
_iterator.f();
|
|
180
131
|
}
|
|
181
|
-
|
|
182
132
|
return '';
|
|
183
133
|
};
|
|
134
|
+
|
|
184
135
|
/**
|
|
185
136
|
* munges the bandwidth into the sdp
|
|
186
137
|
* @param {String} sdp
|
|
187
138
|
* @returns {String}
|
|
188
139
|
*/
|
|
189
|
-
|
|
190
|
-
|
|
191
140
|
var limitBandwidth = function limitBandwidth(sdp) {
|
|
192
141
|
// TODO convert to sdp parser
|
|
193
142
|
var offerSdp = sdp;
|
|
194
143
|
var sdpLines = offerSdp.split(_constants.SDP.CARRIAGE_RETURN);
|
|
195
|
-
|
|
196
144
|
for (var i = 0; i < sdpLines.length; i += 1) {
|
|
197
145
|
if (sdpLines[i].search(_constants.SDP.M_LINE) !== -1) {
|
|
198
146
|
sdpLines = insertBandwidthLimit(sdpLines, i);
|
|
199
147
|
}
|
|
200
148
|
}
|
|
201
|
-
|
|
202
149
|
offerSdp = sdpLines.join(_constants.SDP.CARRIAGE_RETURN);
|
|
203
150
|
return offerSdp;
|
|
204
151
|
};
|
|
152
|
+
|
|
205
153
|
/**
|
|
206
154
|
* makes sure the screen pc sdp has content:slides for server
|
|
207
155
|
* @param {RTCPeerConnection} screenPc
|
|
208
156
|
* @returns {RTCPeerConnection}
|
|
209
157
|
*/
|
|
210
|
-
|
|
211
|
-
|
|
212
158
|
pc.setContentSlides = function (screenPc) {
|
|
213
159
|
if (screenPc && screenPc.sdp) {
|
|
214
160
|
screenPc.sdp += "".concat(_constants.SDP.A_CONTENT_SLIDES).concat(_constants.SDP.CARRIAGE_RETURN);
|
|
215
161
|
}
|
|
216
|
-
|
|
217
162
|
return screenPc;
|
|
218
163
|
};
|
|
164
|
+
|
|
219
165
|
/**
|
|
220
166
|
* handles ice trickling and establishes ICE connection onto peer connection object
|
|
221
167
|
* @param {Object} peerConnection
|
|
@@ -223,13 +169,10 @@ pc.setContentSlides = function (screenPc) {
|
|
|
223
169
|
* @param {String} options.remoteQualityLevel
|
|
224
170
|
* @returns {Promise.RTCPeerConnection}
|
|
225
171
|
*/
|
|
226
|
-
|
|
227
|
-
|
|
228
172
|
pc.iceCandidate = function (peerConnection, _ref) {
|
|
229
173
|
var remoteQualityLevel = _ref.remoteQualityLevel;
|
|
230
174
|
return new _promise.default(function (resolve, reject) {
|
|
231
175
|
var now = (0, _now.default)();
|
|
232
|
-
|
|
233
176
|
var doneGatheringIceCandidate = function doneGatheringIceCandidate() {
|
|
234
177
|
// @ts-ignore
|
|
235
178
|
var miliseconds = (0, _parseInt2.default)(Math.abs((0, _now.default)() - now), 4);
|
|
@@ -237,45 +180,36 @@ pc.iceCandidate = function (peerConnection, _ref) {
|
|
|
237
180
|
peerConnection.sdp = _util.default.convertCLineToIpv4(peerConnection.sdp);
|
|
238
181
|
peerConnection.sdp = setRemoteVideoConstraints(peerConnection.sdp, remoteQualityLevel);
|
|
239
182
|
var invalidSdpPresent = isSdpInvalid(peerConnection.sdp);
|
|
240
|
-
|
|
241
183
|
if (invalidSdpPresent) {
|
|
242
184
|
_loggerProxy.default.logger.error('PeerConnectionManager:index#iceCandidate --> SDP not valid after waiting.');
|
|
243
|
-
|
|
244
185
|
reject(new _webexErrors.InvalidSdpError(invalidSdpPresent));
|
|
245
186
|
}
|
|
246
|
-
|
|
247
187
|
_loggerProxy.default.logger.log("PeerConnectionManager:index#iceCandidate --> Time to gather ice candidate ".concat(miliseconds, " miliseconds"));
|
|
248
|
-
|
|
249
188
|
resolve();
|
|
250
|
-
};
|
|
251
|
-
|
|
189
|
+
};
|
|
252
190
|
|
|
191
|
+
// If ice has already been gathered
|
|
253
192
|
if (peerConnection.iceGatheringState === _constants.COMPLETE) {
|
|
254
193
|
doneGatheringIceCandidate();
|
|
255
194
|
}
|
|
256
|
-
|
|
257
195
|
peerConnection.onIceGatheringStateChange = function () {
|
|
258
196
|
if (peerConnection.iceGatheringState === _constants.COMPLETE) {
|
|
259
197
|
// @ts-ignore
|
|
260
198
|
doneGatheringIceCandidate(peerConnection);
|
|
261
199
|
}
|
|
262
|
-
|
|
263
200
|
if (peerConnection.iceGatheringState === _constants.GATHERING) {
|
|
264
201
|
_loggerProxy.default.logger.log('PeerConnectionManager:index#onIceGatheringStateChange --> Ice state changed to gathering');
|
|
265
202
|
}
|
|
266
203
|
};
|
|
267
|
-
|
|
268
204
|
peerConnection.onicecandidate = function (evt) {
|
|
269
205
|
if (evt.candidate === null) {
|
|
270
206
|
// @ts-ignore
|
|
271
207
|
doneGatheringIceCandidate(peerConnection);
|
|
272
208
|
} else {
|
|
273
209
|
var _evt$candidate, _evt$candidate2, _evt$candidate3, _evt$candidate4;
|
|
274
|
-
|
|
275
210
|
_loggerProxy.default.logger.log("PeerConnectionManager:index#onicecandidate --> Candidate ".concat((_evt$candidate = evt.candidate) === null || _evt$candidate === void 0 ? void 0 : _evt$candidate.type, " ").concat((_evt$candidate2 = evt.candidate) === null || _evt$candidate2 === void 0 ? void 0 : _evt$candidate2.protocol, " ").concat((_evt$candidate3 = evt.candidate) === null || _evt$candidate3 === void 0 ? void 0 : _evt$candidate3.address, ":").concat((_evt$candidate4 = evt.candidate) === null || _evt$candidate4 === void 0 ? void 0 : _evt$candidate4.port));
|
|
276
211
|
}
|
|
277
212
|
};
|
|
278
|
-
|
|
279
213
|
peerConnection.onicecandidateerror = function (event) {
|
|
280
214
|
// we can often get ICE candidate errors (for example when failing to communicate with a TURN server)
|
|
281
215
|
// they don't mean that the whole ICE connection will fail, so it's OK to ignore them
|
|
@@ -283,18 +217,16 @@ pc.iceCandidate = function (peerConnection, _ref) {
|
|
|
283
217
|
};
|
|
284
218
|
});
|
|
285
219
|
};
|
|
220
|
+
|
|
286
221
|
/**
|
|
287
222
|
* swapping tracks
|
|
288
223
|
* @param {Object} peerConnection
|
|
289
224
|
* @param {Object} track
|
|
290
225
|
* @returns {undefined}
|
|
291
226
|
*/
|
|
292
|
-
|
|
293
|
-
|
|
294
227
|
pc.replaceTrack = function (peerConnection, track) {
|
|
295
228
|
try {
|
|
296
229
|
var senders = peerConnection.getSenders();
|
|
297
|
-
|
|
298
230
|
if (senders.length > 0) {
|
|
299
231
|
senders.forEach(function (sender) {
|
|
300
232
|
if (sender.track && sender.track.kind === track.kind) {
|
|
@@ -306,31 +238,29 @@ pc.replaceTrack = function (peerConnection, track) {
|
|
|
306
238
|
_loggerProxy.default.logger.error("PeerConnectionManager:index#replaceTrack --> Error replacing track, ".concat(err));
|
|
307
239
|
}
|
|
308
240
|
};
|
|
241
|
+
|
|
309
242
|
/**
|
|
310
243
|
* adding streams to peerConnection
|
|
311
244
|
* @param {Object} peerConnection
|
|
312
245
|
* @param {Object} stream
|
|
313
246
|
* @returns {undefined}
|
|
314
247
|
*/
|
|
315
|
-
|
|
316
|
-
|
|
317
248
|
pc.addStream = function (peerConnection, stream) {
|
|
318
249
|
try {
|
|
319
250
|
if (stream && !isBrowser('edge')) {
|
|
320
251
|
var tracksPresent = peerConnection.getSenders && peerConnection.getSenders().find(function (sender) {
|
|
321
252
|
return sender.track != null;
|
|
322
253
|
});
|
|
323
|
-
|
|
324
254
|
if (tracksPresent) {
|
|
325
255
|
stream.getTracks().forEach(function (track) {
|
|
326
256
|
pc.replaceTrack(peerConnection, track);
|
|
327
257
|
});
|
|
328
258
|
return;
|
|
329
259
|
}
|
|
330
|
-
|
|
331
260
|
stream.getTracks().forEach(function (track) {
|
|
332
261
|
peerConnection.addTrack(track, stream);
|
|
333
|
-
});
|
|
262
|
+
});
|
|
263
|
+
// // TODO : may come back disable addTracks for chrome they are moving back to addStream
|
|
334
264
|
// // https://bugs.chromium.org/p/chromium/issues/detail?id=764414
|
|
335
265
|
// // https://bugs.chromium.org/p/chromium/issues/detail?id=738918#c7
|
|
336
266
|
// peerConnection.addStream(stream);
|
|
@@ -341,6 +271,7 @@ pc.addStream = function (peerConnection, stream) {
|
|
|
341
271
|
_loggerProxy.default.logger.error("PeerConnectionManager:index#addStream --> Error adding stream, error: ".concat(_config2.error));
|
|
342
272
|
}
|
|
343
273
|
};
|
|
274
|
+
|
|
344
275
|
/**
|
|
345
276
|
* setting the remote description
|
|
346
277
|
* @param {Object} peerConnection
|
|
@@ -349,12 +280,11 @@ pc.addStream = function (peerConnection, stream) {
|
|
|
349
280
|
* @param {String} meetingId
|
|
350
281
|
* @returns {undefined}
|
|
351
282
|
*/
|
|
352
|
-
|
|
353
|
-
|
|
354
283
|
pc.setRemoteSessionDetails = function (peerConnection, typeStr, remoteSdp, meetingId) {
|
|
355
284
|
_loggerProxy.default.logger.log("PeerConnectionManager:index#setRemoteSessionDetails --> Setting the remote description type: ".concat(typeStr, "State: ").concat(peerConnection.signalingState));
|
|
285
|
+
var sdp = remoteSdp;
|
|
356
286
|
|
|
357
|
-
|
|
287
|
+
// making sure that the remoteDescription is only set when there is a answer for offer
|
|
358
288
|
// or there is a offer from the server
|
|
359
289
|
|
|
360
290
|
if (!sdp) {
|
|
@@ -367,15 +297,13 @@ pc.setRemoteSessionDetails = function (peerConnection, typeStr, remoteSdp, meeti
|
|
|
367
297
|
}
|
|
368
298
|
});
|
|
369
299
|
}
|
|
370
|
-
|
|
371
300
|
if (peerConnection.signalingState === _constants.SDP.HAVE_LOCAL_OFFER || peerConnection.signalingState === _constants.SDP.STABLE && typeStr === _constants.SDP.OFFER) {
|
|
372
301
|
sdp = setStartBitrateOnRemoteSdp(sdp);
|
|
373
|
-
|
|
374
302
|
if (!peerConnection.enableExtmap) {
|
|
375
303
|
sdp = sdp.replace(/\na=extmap.*/g, '');
|
|
376
|
-
}
|
|
377
|
-
|
|
304
|
+
}
|
|
378
305
|
|
|
306
|
+
// remove any xtls candidates
|
|
379
307
|
sdp = sdp.replace(/^a=candidate:.*xTLS.*\r\n/gim, '');
|
|
380
308
|
return peerConnection.setRemoteDescription(new _window.default.RTCSessionDescription({
|
|
381
309
|
type: typeStr,
|
|
@@ -387,9 +315,10 @@ pc.setRemoteSessionDetails = function (peerConnection, typeStr, remoteSdp, meeti
|
|
|
387
315
|
meetingId: meetingId
|
|
388
316
|
});
|
|
389
317
|
}
|
|
390
|
-
})
|
|
318
|
+
})
|
|
319
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
320
|
+
.catch(function (error) {
|
|
391
321
|
_loggerProxy.default.logger.error("Peer-connection-manager:index#setRemoteDescription --> ".concat(error, " missing remotesdp"));
|
|
392
|
-
|
|
393
322
|
var metricName = _constants2.default.PEERCONNECTION_FAILURE;
|
|
394
323
|
var data = {
|
|
395
324
|
correlation_id: meetingId,
|
|
@@ -399,9 +328,7 @@ pc.setRemoteSessionDetails = function (peerConnection, typeStr, remoteSdp, meeti
|
|
|
399
328
|
var metadata = {
|
|
400
329
|
type: error.name
|
|
401
330
|
};
|
|
402
|
-
|
|
403
331
|
_metrics.default.sendBehavioralMetric(metricName, data, metadata);
|
|
404
|
-
|
|
405
332
|
return _metrics.default.postEvent({
|
|
406
333
|
event: _config2.eventType.REMOTE_SDP_RECEIVED,
|
|
407
334
|
meetingId: meetingId,
|
|
@@ -412,9 +339,9 @@ pc.setRemoteSessionDetails = function (peerConnection, typeStr, remoteSdp, meeti
|
|
|
412
339
|
});
|
|
413
340
|
});
|
|
414
341
|
}
|
|
415
|
-
|
|
416
342
|
return _promise.default.reject(new _media.default('PeerConnection in wrong state'));
|
|
417
343
|
};
|
|
344
|
+
|
|
418
345
|
/**
|
|
419
346
|
* Create offer with a valid parameter
|
|
420
347
|
* @param {Object} peerConnection
|
|
@@ -425,27 +352,25 @@ pc.setRemoteSessionDetails = function (peerConnection, typeStr, remoteSdp, meeti
|
|
|
425
352
|
* @param {string} meetingProperties.enableExtmap
|
|
426
353
|
* @returns {RTCPeerConnection}
|
|
427
354
|
*/
|
|
428
|
-
|
|
429
|
-
|
|
430
355
|
pc.createOffer = function (peerConnection, _ref2) {
|
|
431
356
|
var meetingId = _ref2.meetingId,
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
_loggerProxy.default.logger.log('PeerConnectionManager:index#createOffer --> creating a new offer'); // saving the extMap State to use in setRemoteDescription
|
|
357
|
+
remoteQualityLevel = _ref2.remoteQualityLevel,
|
|
358
|
+
enableRtx = _ref2.enableRtx,
|
|
359
|
+
enableExtmap = _ref2.enableExtmap;
|
|
360
|
+
_loggerProxy.default.logger.log('PeerConnectionManager:index#createOffer --> creating a new offer');
|
|
437
361
|
|
|
362
|
+
// saving the extMap State to use in setRemoteDescription
|
|
438
363
|
|
|
439
364
|
peerConnection.enableExtmap = enableExtmap;
|
|
440
365
|
return peerConnection.createOffer().then(function (description) {
|
|
441
366
|
// bug https://bugs.chromium.org/p/chromium/issues/detail?id=1020642
|
|
442
367
|
// chrome currently generates RTX line irrespective of whether the server side supports it
|
|
443
368
|
// we are removing apt as well because its associated with rtx line
|
|
369
|
+
|
|
444
370
|
if (!enableRtx) {
|
|
445
371
|
description.sdp = description.sdp.replace(/\r\na=rtpmap:\d+ rtx\/\d+/g, '');
|
|
446
372
|
description.sdp = description.sdp.replace(/\r\na=fmtp:\d+ apt=\d+/g, '');
|
|
447
373
|
}
|
|
448
|
-
|
|
449
374
|
return peerConnection.setLocalDescription(description);
|
|
450
375
|
}).then(function () {
|
|
451
376
|
return pc.iceCandidate(peerConnection, {
|
|
@@ -455,22 +380,19 @@ pc.createOffer = function (peerConnection, _ref2) {
|
|
|
455
380
|
if (!checkH264Support(peerConnection.sdp)) {
|
|
456
381
|
throw new _media.default('openH264 is downloading please Wait. Upload logs if not working on second try');
|
|
457
382
|
}
|
|
458
|
-
|
|
459
383
|
if (!enableExtmap) {
|
|
460
384
|
peerConnection.sdp = peerConnection.sdp.replace(/\na=extmap.*/g, '');
|
|
461
385
|
}
|
|
462
|
-
|
|
463
386
|
pc.setContentSlides(peerConnection);
|
|
464
|
-
|
|
465
387
|
_metrics.default.postEvent({
|
|
466
388
|
event: _config2.eventType.LOCAL_SDP_GENERATED,
|
|
467
389
|
meetingId: meetingId
|
|
468
390
|
});
|
|
469
|
-
|
|
470
391
|
return peerConnection;
|
|
471
|
-
})
|
|
392
|
+
})
|
|
393
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
394
|
+
.catch(function (error) {
|
|
472
395
|
_loggerProxy.default.logger.error("Peer-connection-manager:index#createOffer --> ".concat(error));
|
|
473
|
-
|
|
474
396
|
if (error instanceof _webexErrors.InvalidSdpError) {
|
|
475
397
|
_metrics.default.sendBehavioralMetric(_constants2.default.INVALID_ICE_CANDIDATE, {
|
|
476
398
|
correlation_id: meetingId,
|
|
@@ -487,44 +409,43 @@ pc.createOffer = function (peerConnection, _ref2) {
|
|
|
487
409
|
var metadata = {
|
|
488
410
|
type: error.name
|
|
489
411
|
};
|
|
490
|
-
|
|
491
412
|
_metrics.default.sendBehavioralMetric(metricName, data, metadata);
|
|
492
413
|
}
|
|
493
|
-
|
|
494
414
|
_metrics.default.postEvent({
|
|
495
415
|
event: _config2.eventType.LOCAL_SDP_GENERATED,
|
|
496
416
|
meetingId: meetingId,
|
|
497
417
|
data: {
|
|
498
418
|
canProceed: false,
|
|
499
|
-
errors: [
|
|
419
|
+
errors: [
|
|
420
|
+
// @ts-ignore
|
|
500
421
|
_metrics.default.generateErrorPayload(2001, true, error.name.MEDIA_ENGINE)]
|
|
501
422
|
}
|
|
502
423
|
});
|
|
503
|
-
|
|
504
424
|
pc.close(peerConnection);
|
|
505
425
|
throw error;
|
|
506
426
|
});
|
|
507
427
|
};
|
|
428
|
+
|
|
508
429
|
/**
|
|
509
430
|
* rollBack local description in peerconnection
|
|
510
431
|
* @param {Object} peerConnection
|
|
511
432
|
* @returns {Promise.RTCPeerConnection}
|
|
512
433
|
*/
|
|
513
|
-
|
|
514
|
-
|
|
515
434
|
pc.rollBackLocalDescription = function (peerConnection) {
|
|
516
|
-
return peerConnection
|
|
435
|
+
return peerConnection
|
|
436
|
+
// @ts-ignore
|
|
517
437
|
.setLocalDescription(new RTCSessionDescription({
|
|
518
438
|
type: _constants.SDP.ROLLBACK
|
|
519
439
|
})).then(function () {
|
|
520
440
|
return peerConnection;
|
|
521
441
|
}).catch(function (err) {
|
|
522
|
-
_loggerProxy.default.logger.error("Peer-connection-manager:index#setLocalDescription --> ".concat(err, " "));
|
|
523
|
-
|
|
442
|
+
_loggerProxy.default.logger.error("Peer-connection-manager:index#setLocalDescription --> ".concat(err, " "));
|
|
524
443
|
|
|
444
|
+
// @ts-ignore
|
|
525
445
|
return _promise.default.error(err);
|
|
526
446
|
});
|
|
527
447
|
};
|
|
448
|
+
|
|
528
449
|
/**
|
|
529
450
|
* @param {Object} params {
|
|
530
451
|
* @param {Boolean} params.offerToReceiveAudio
|
|
@@ -536,16 +457,12 @@ pc.rollBackLocalDescription = function (peerConnection) {
|
|
|
536
457
|
* @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
|
|
537
458
|
* @returns {Promise.<Array>} [MediaSDP, ScreenSDP]
|
|
538
459
|
*/
|
|
539
|
-
|
|
540
|
-
|
|
541
460
|
pc.updatePeerConnection = function (params, _ref3) {
|
|
542
461
|
var meetingId = _ref3.meetingId,
|
|
543
|
-
|
|
544
|
-
|
|
462
|
+
remoteQualityLevel = _ref3.remoteQualityLevel;
|
|
545
463
|
_loggerProxy.default.logger.log("PeerConnectionManager:index#updatePeerConnection --> updating the peerConnection with params: ".concat(params));
|
|
546
|
-
|
|
547
464
|
var peerConnection = params.peerConnection,
|
|
548
|
-
|
|
465
|
+
offerSdp = params.offerSdp;
|
|
549
466
|
return pc.createAnswer({
|
|
550
467
|
peerConnection: peerConnection,
|
|
551
468
|
offerSdp: offerSdp[0]
|
|
@@ -558,6 +475,7 @@ pc.updatePeerConnection = function (params, _ref3) {
|
|
|
558
475
|
return _promise.default.resolve([peerconnection.sdp]);
|
|
559
476
|
});
|
|
560
477
|
};
|
|
478
|
+
|
|
561
479
|
/**
|
|
562
480
|
* @param {Object} params
|
|
563
481
|
* @param {Object} params.peerConnection
|
|
@@ -567,18 +485,16 @@ pc.updatePeerConnection = function (params, _ref3) {
|
|
|
567
485
|
* @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
|
|
568
486
|
* @returns {RTCPeerConnection} peerConnection
|
|
569
487
|
*/
|
|
570
|
-
|
|
571
|
-
|
|
572
488
|
pc.createAnswer = function (params, _ref4) {
|
|
573
489
|
var meetingId = _ref4.meetingId,
|
|
574
|
-
|
|
575
|
-
var peerConnection = params.peerConnection;
|
|
576
|
-
// Need to maintain state of peerconnection
|
|
490
|
+
remoteQualityLevel = _ref4.remoteQualityLevel;
|
|
491
|
+
var peerConnection = params.peerConnection;
|
|
577
492
|
|
|
493
|
+
// TODO: Some times to many mercury event comes at the same time
|
|
494
|
+
// Need to maintain state of peerconnection
|
|
578
495
|
if (peerConnection.signalingState === _constants.SDP.HAVE_REMOTE_OFFER) {
|
|
579
496
|
return _promise.default.resolve(peerConnection);
|
|
580
497
|
}
|
|
581
|
-
|
|
582
498
|
return pc.setRemoteSessionDetails(peerConnection, _constants.OFFER, params.offerSdp, meetingId).then(function () {
|
|
583
499
|
return peerConnection.createAnswer(params.sdpConstraints);
|
|
584
500
|
}).then(function (answer) {
|
|
@@ -591,13 +507,13 @@ pc.createAnswer = function (params, _ref4) {
|
|
|
591
507
|
peerConnection.sdp = limitBandwidth(peerConnection.localDescription.sdp);
|
|
592
508
|
peerConnection.sdp = _util.default.convertCLineToIpv4(peerConnection.sdp);
|
|
593
509
|
peerConnection.sdp = setRemoteVideoConstraints(peerConnection.sdp, remoteQualityLevel);
|
|
594
|
-
|
|
595
510
|
if (!checkH264Support(peerConnection.sdp)) {
|
|
596
511
|
throw new _media.default('openH264 is downloading please Wait. Upload logs if not working on second try');
|
|
597
512
|
}
|
|
598
|
-
|
|
599
513
|
return peerConnection;
|
|
600
|
-
})
|
|
514
|
+
})
|
|
515
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
516
|
+
.catch(function (error) {
|
|
601
517
|
if (error instanceof _webexErrors.InvalidSdpError) {
|
|
602
518
|
_metrics.default.sendBehavioralMetric(_constants2.default.INVALID_ICE_CANDIDATE, {
|
|
603
519
|
correlation_id: meetingId
|
|
@@ -612,96 +528,77 @@ pc.createAnswer = function (params, _ref4) {
|
|
|
612
528
|
var metadata = {
|
|
613
529
|
type: error.name
|
|
614
530
|
};
|
|
615
|
-
|
|
616
531
|
_metrics.default.sendBehavioralMetric(metricName, data, metadata);
|
|
617
532
|
}
|
|
618
|
-
|
|
619
533
|
_loggerProxy.default.logger.error("PeerConnectionManager:index#setRemoteSessionDetails --> Error creating remote session, error: ".concat(error));
|
|
620
534
|
});
|
|
621
535
|
};
|
|
536
|
+
|
|
622
537
|
/**
|
|
623
538
|
* shut down the peer connection
|
|
624
539
|
* @param {Object} peerConnection
|
|
625
540
|
* @returns {undefined}
|
|
626
541
|
*/
|
|
627
|
-
|
|
628
|
-
|
|
629
542
|
pc.close = function (peerConnection) {
|
|
630
543
|
// peerConnection.close() fails on firefox on network changes and gives a Dom exception
|
|
631
544
|
// To avoid this we have added a try catch block.
|
|
632
545
|
// Please refer to https://bugzilla.mozilla.org/show_bug.cgi?id=1274407 for more information
|
|
633
546
|
_loggerProxy.default.logger.log('PeerConnectionManager:index#close --> pc: close() -> attempting to close the peer connection');
|
|
634
|
-
|
|
635
547
|
if (peerConnection && peerConnection.connectionState === _constants.PEER_CONNECTION_STATE.CLOSED) {
|
|
636
548
|
_loggerProxy.default.logger.log('PeerConnectionManager:index#close --> pc: close() -> connection already closed');
|
|
637
|
-
|
|
638
549
|
return _promise.default.resolve();
|
|
639
550
|
}
|
|
640
|
-
|
|
641
551
|
_loggerProxy.default.logger.log('PeerConnectionManager:index#close --> pc: close() -> closing the mediaPeerConnection');
|
|
642
|
-
|
|
643
552
|
return _promise.default.resolve().then(function () {
|
|
644
553
|
if (peerConnection && peerConnection.close) {
|
|
645
554
|
peerConnection.close();
|
|
646
555
|
}
|
|
647
556
|
});
|
|
648
557
|
};
|
|
649
|
-
|
|
650
558
|
pc.setPeerConnectionEvents = function (meeting) {
|
|
651
559
|
// In case ICE fail
|
|
652
560
|
var peerConnection = meeting.mediaProperties.peerConnection;
|
|
653
|
-
|
|
654
561
|
var connectionFailed = function connectionFailed() {
|
|
655
562
|
if (meeting.reconnectionManager.iceState.resolve) {
|
|
656
563
|
// DISCONNECTED state triggers first then it goes to FAILED STATE
|
|
657
564
|
// sometimes the failed state can happen before 10 seconds (Which is the timer for the reconnect for ice disconnect)
|
|
658
565
|
meeting.reconnectionManager.iceState.resolve();
|
|
659
566
|
}
|
|
660
|
-
|
|
661
567
|
meeting.reconnect({
|
|
662
568
|
networkDisconnect: true
|
|
663
569
|
});
|
|
664
|
-
|
|
665
570
|
_metrics.default.postEvent({
|
|
666
571
|
event: _config2.eventType.ICE_END,
|
|
667
572
|
meeting: meeting,
|
|
668
573
|
data: {
|
|
669
574
|
canProceed: false,
|
|
670
|
-
errors: [
|
|
575
|
+
errors: [
|
|
576
|
+
// @ts-ignore
|
|
671
577
|
_metrics.default.generateErrorPayload(2004, false, _config2.error.name.MEDIA_ENGINE)]
|
|
672
578
|
}
|
|
673
579
|
});
|
|
674
|
-
|
|
675
580
|
meeting.uploadLogs({
|
|
676
581
|
file: 'peer-connection-manager/index',
|
|
677
582
|
function: 'connectionFailed'
|
|
678
583
|
});
|
|
679
|
-
|
|
680
584
|
_metrics.default.sendBehavioralMetric(_constants2.default.CONNECTION_FAILURE, {
|
|
681
585
|
correlation_id: meeting.correlationId,
|
|
682
586
|
locus_id: meeting.locusId
|
|
683
587
|
});
|
|
684
588
|
};
|
|
685
|
-
|
|
686
589
|
peerConnection.oniceconnectionstatechange = function () {
|
|
687
590
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE CHANGE.');
|
|
688
|
-
|
|
689
591
|
switch (peerConnection.iceConnectionState) {
|
|
690
592
|
case _constants.ICE_STATE.CHECKING:
|
|
691
593
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE CHECKING.');
|
|
692
|
-
|
|
693
594
|
_metrics.default.postEvent({
|
|
694
595
|
event: _config2.eventType.ICE_START,
|
|
695
596
|
meeting: meeting
|
|
696
597
|
});
|
|
697
|
-
|
|
698
598
|
break;
|
|
699
|
-
|
|
700
599
|
case _constants.ICE_STATE.COMPLETED:
|
|
701
600
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE COMPLETED.');
|
|
702
|
-
|
|
703
601
|
break;
|
|
704
|
-
|
|
705
602
|
case _constants.ICE_STATE.CONNECTED:
|
|
706
603
|
// Ice connection state goes to connected when both client and server sends STUN packets and
|
|
707
604
|
// Established connected between them. Firefox does not trigger COMPLETED and only trigger CONNECTED
|
|
@@ -709,93 +606,66 @@ pc.setPeerConnectionEvents = function (meeting) {
|
|
|
709
606
|
event: _config2.eventType.ICE_END,
|
|
710
607
|
meeting: meeting
|
|
711
608
|
});
|
|
712
|
-
|
|
713
609
|
_metrics.default.sendBehavioralMetric(_constants2.default.CONNECTION_SUCCESS, {
|
|
714
610
|
correlation_id: meeting.correlationId,
|
|
715
611
|
locus_id: meeting.locusId
|
|
716
612
|
});
|
|
717
|
-
|
|
718
613
|
meeting.setNetworkStatus(_constants.NETWORK_STATUS.CONNECTED);
|
|
719
614
|
meeting.reconnectionManager.iceReconnected();
|
|
720
|
-
|
|
721
615
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE CONNECTED.');
|
|
722
|
-
|
|
723
616
|
break;
|
|
724
|
-
|
|
725
617
|
case _constants.ICE_STATE.CLOSED:
|
|
726
618
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE CLOSED.');
|
|
727
|
-
|
|
728
619
|
break;
|
|
729
|
-
|
|
730
620
|
case _constants.ICE_STATE.DISCONNECTED:
|
|
731
621
|
meeting.setNetworkStatus(_constants.NETWORK_STATUS.DISCONNECTED);
|
|
732
622
|
meeting.reconnectionManager.waitForIceReconnect().catch(function () {
|
|
733
623
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE DISCONNECTED. Automatic Reconnection Timed Out.');
|
|
734
|
-
|
|
735
624
|
connectionFailed();
|
|
736
625
|
});
|
|
737
|
-
|
|
738
626
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE DISCONNECTED.');
|
|
739
|
-
|
|
740
627
|
break;
|
|
741
|
-
|
|
742
628
|
case _constants.ICE_STATE.FAILED:
|
|
743
|
-
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE FAILED.');
|
|
629
|
+
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE FAILED.');
|
|
630
|
+
// notify of ice failure
|
|
744
631
|
// Ice failure is the only indicator currently for identifying the actual connection drop
|
|
745
632
|
// Firefox takes sometime 10-15 seconds to go to failed state
|
|
746
|
-
|
|
747
|
-
|
|
748
633
|
connectionFailed();
|
|
749
634
|
break;
|
|
750
|
-
|
|
751
635
|
default:
|
|
752
636
|
break;
|
|
753
637
|
}
|
|
754
638
|
};
|
|
755
|
-
|
|
756
639
|
peerConnection.onconnectionstatechange = function () {
|
|
757
640
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE CHANGE.');
|
|
758
|
-
|
|
759
641
|
switch (peerConnection.connectionState) {
|
|
760
642
|
case _constants.CONNECTION_STATE.NEW:
|
|
761
643
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE NEW.');
|
|
762
|
-
|
|
763
644
|
break;
|
|
764
|
-
|
|
765
645
|
case _constants.CONNECTION_STATE.CONNECTING:
|
|
766
646
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE CONNECTING.');
|
|
767
|
-
|
|
768
647
|
break;
|
|
769
|
-
|
|
770
648
|
case _constants.CONNECTION_STATE.CONNECTED:
|
|
771
649
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE CONNECTED.');
|
|
772
|
-
|
|
773
650
|
break;
|
|
774
|
-
|
|
775
651
|
case _constants.CONNECTION_STATE.CLOSED:
|
|
776
652
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE CLOSED.');
|
|
777
|
-
|
|
778
653
|
break;
|
|
779
|
-
|
|
780
654
|
case _constants.CONNECTION_STATE.DISCONNECTED:
|
|
781
655
|
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE DISCONNECTED.');
|
|
782
|
-
|
|
783
656
|
break;
|
|
784
|
-
|
|
785
657
|
case _constants.CONNECTION_STATE.FAILED:
|
|
786
|
-
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE FAILED.');
|
|
658
|
+
_loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE FAILED.');
|
|
659
|
+
// Special case happens only on chrome where there is no ICE FAILED event
|
|
787
660
|
// only CONNECTION FAILED event gets triggered
|
|
788
661
|
|
|
789
|
-
|
|
790
662
|
connectionFailed();
|
|
791
663
|
break;
|
|
792
|
-
|
|
793
664
|
default:
|
|
794
665
|
break;
|
|
795
666
|
}
|
|
796
667
|
};
|
|
797
668
|
};
|
|
798
|
-
|
|
799
669
|
var _default = pc;
|
|
800
670
|
exports.default = _default;
|
|
801
671
|
//# sourceMappingURL=index.js.map
|