@webex/plugin-meetings 3.7.0 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/annotation/annotation.types.d.ts +42 -0
- package/dist/annotation/constants.d.ts +31 -0
- package/dist/annotation/index.d.ts +117 -0
- package/dist/annotation/index.js +17 -0
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.d.ts +8 -0
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/collection.d.ts +5 -0
- package/dist/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/breakouts/events.d.ts +8 -0
- package/dist/breakouts/index.d.ts +5 -0
- package/dist/breakouts/index.js +1 -1
- package/dist/breakouts/request.d.ts +22 -0
- package/dist/breakouts/utils.d.ts +15 -0
- package/dist/common/browser-detection.d.ts +9 -0
- package/dist/common/collection.d.ts +48 -0
- package/dist/common/config.d.ts +2 -0
- package/dist/common/errors/captcha-error.d.ts +15 -0
- package/dist/common/errors/intent-to-join.d.ts +16 -0
- package/dist/common/errors/join-forbidden-error.js +52 -0
- package/dist/common/errors/join-forbidden-error.js.map +1 -0
- package/dist/common/errors/join-meeting.d.ts +17 -0
- package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
- package/dist/common/errors/join-webinar-error.js.map +1 -0
- package/dist/common/errors/media.d.ts +15 -0
- package/dist/common/errors/multistream-not-supported-error.js +53 -0
- package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
- package/dist/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/common/errors/parameter.d.ts +15 -0
- package/dist/common/errors/password-error.d.ts +15 -0
- package/dist/common/errors/permission.d.ts +14 -0
- package/dist/common/errors/reclaim-host-role-error.js +149 -0
- package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
- package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/common/errors/reconnection-in-progress.js +33 -0
- package/dist/common/errors/reconnection-in-progress.js.map +1 -0
- package/dist/common/errors/reconnection.d.ts +15 -0
- package/dist/common/errors/stats.d.ts +15 -0
- package/dist/common/errors/webex-errors.d.ts +93 -0
- package/dist/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/common/events/events-scope.d.ts +17 -0
- package/dist/common/events/events.d.ts +12 -0
- package/dist/common/events/trigger-proxy.d.ts +2 -0
- package/dist/common/events/util.d.ts +2 -0
- package/dist/common/logs/logger-config.d.ts +2 -0
- package/dist/common/logs/logger-proxy.d.ts +2 -0
- package/dist/common/logs/request.d.ts +36 -0
- package/dist/common/queue.d.ts +34 -0
- package/dist/config.d.ts +72 -0
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +1088 -0
- package/dist/constants.js +68 -6
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.d.ts +4 -0
- package/dist/controls-options-manager/enums.d.ts +15 -0
- package/dist/controls-options-manager/index.d.ts +136 -0
- package/dist/controls-options-manager/types.d.ts +43 -0
- package/dist/controls-options-manager/util.d.ts +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +16 -11
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.d.ts +2 -0
- package/dist/interceptors/locusRetry.d.ts +27 -0
- package/dist/interpretation/collection.d.ts +5 -0
- package/dist/interpretation/index.d.ts +5 -0
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.d.ts +5 -0
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.d.ts +2 -0
- package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/locus-info/fullState.d.ts +2 -0
- package/dist/locus-info/hostUtils.d.ts +2 -0
- package/dist/locus-info/index.d.ts +322 -0
- package/dist/locus-info/index.js +14 -3
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.d.ts +2 -0
- package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/locus-info/parser.d.ts +272 -0
- package/dist/locus-info/selfUtils.d.ts +2 -0
- package/dist/locus-info/selfUtils.js +35 -17
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/MediaConnectionAwaiter.js +1 -0
- package/dist/media/MediaConnectionAwaiter.js.map +1 -1
- package/dist/media/index.d.ts +34 -0
- package/dist/media/properties.d.ts +93 -0
- package/dist/media/properties.js +30 -16
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.d.ts +2 -0
- package/dist/mediaQualityMetrics/config.d.ts +241 -0
- package/dist/mediaQualityMetrics/config.js +502 -0
- package/dist/mediaQualityMetrics/config.js.map +1 -0
- package/dist/meeting/brbState.js +167 -0
- package/dist/meeting/brbState.js.map +1 -0
- package/dist/meeting/effectsState.js +260 -0
- package/dist/meeting/effectsState.js.map +1 -0
- package/dist/meeting/in-meeting-actions.d.ts +167 -0
- package/dist/meeting/in-meeting-actions.js +13 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +1825 -0
- package/dist/meeting/index.js +1331 -1051
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/meeting/locusMediaRequest.js +11 -6
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.d.ts +178 -0
- package/dist/meeting/muteState.js +1 -6
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.d.ts +295 -0
- package/dist/meeting/request.js +51 -29
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.d.ts +11 -0
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/state.d.ts +9 -0
- package/dist/meeting/util.d.ts +119 -0
- package/dist/meeting/util.js +103 -67
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.d.ts +16 -0
- package/dist/meeting-info/collection.d.ts +20 -0
- package/dist/meeting-info/index.d.ts +69 -0
- package/dist/meeting-info/meeting-info-v2.d.ts +123 -0
- package/dist/meeting-info/meeting-info-v2.js +115 -45
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.d.ts +22 -0
- package/dist/meeting-info/util.d.ts +2 -0
- package/dist/meeting-info/utilv2.d.ts +2 -0
- package/dist/meeting-info/utilv2.js +6 -2
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +40 -0
- package/dist/meetings/index.d.ts +390 -0
- package/dist/meetings/index.js +107 -55
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.d.ts +4 -0
- package/dist/meetings/meetings.types.js +2 -0
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/request.d.ts +27 -0
- package/dist/meetings/util.d.ts +18 -0
- package/dist/meetings/util.js +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +160 -0
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.js +17 -0
- package/dist/member/member.types.js.map +1 -0
- package/dist/member/types.d.ts +32 -0
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.d.ts +2 -0
- package/dist/member/util.js +39 -28
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +29 -0
- package/dist/members/index.d.ts +353 -0
- package/dist/members/request.d.ts +114 -0
- package/dist/members/types.d.ts +25 -0
- package/dist/members/util.d.ts +215 -0
- package/dist/members/util.js +4 -2
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +276 -0
- package/dist/metrics/config.js.map +1 -0
- package/dist/metrics/constants.d.ts +70 -0
- package/dist/metrics/constants.js +6 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +45 -0
- package/dist/multistream/mediaRequestManager.d.ts +119 -0
- package/dist/multistream/receiveSlot.d.ts +68 -0
- package/dist/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/multistream/remoteMedia.d.ts +72 -0
- package/dist/multistream/remoteMedia.js +30 -15
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.d.ts +49 -0
- package/dist/multistream/remoteMediaManager.d.ts +300 -0
- package/dist/multistream/sendSlotManager.d.ts +69 -0
- package/dist/multistream/sendSlotManager.js +24 -0
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.d.ts +70 -0
- package/dist/networkQualityMonitor/index.js +13 -19
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js +671 -0
- package/dist/peer-connection-manager/index.js.map +1 -0
- package/dist/peer-connection-manager/util.js +109 -0
- package/dist/peer-connection-manager/util.js.map +1 -0
- package/dist/personal-meeting-room/index.d.ts +47 -0
- package/dist/personal-meeting-room/request.d.ts +14 -0
- package/dist/personal-meeting-room/util.d.ts +2 -0
- package/dist/reachability/clusterReachability.d.ts +109 -0
- package/dist/reachability/clusterReachability.js +12 -15
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.d.ts +105 -0
- package/dist/reachability/index.js +461 -136
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachability.types.js +7 -0
- package/dist/reachability/reachability.types.js.map +1 -0
- package/dist/reachability/request.d.ts +39 -0
- package/dist/reachability/request.js +21 -8
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.d.ts +8 -0
- package/dist/reactions/constants.d.ts +3 -0
- package/dist/reactions/reactions.d.ts +4 -0
- package/dist/reactions/reactions.type.d.ts +52 -0
- package/dist/reconnection-manager/index.d.ts +136 -0
- package/dist/recording-controller/enums.d.ts +7 -0
- package/dist/recording-controller/enums.js +8 -4
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.d.ts +207 -0
- package/dist/recording-controller/index.js +18 -9
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.d.ts +14 -0
- package/dist/recording-controller/util.js +13 -9
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/collection.js +62 -0
- package/dist/roap/collection.js.map +1 -0
- package/dist/roap/handler.js +275 -0
- package/dist/roap/handler.js.map +1 -0
- package/dist/roap/index.d.ts +86 -0
- package/dist/roap/index.js +15 -15
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +39 -0
- package/dist/roap/request.js +45 -79
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js +126 -0
- package/dist/roap/state.js.map +1 -0
- package/dist/roap/turnDiscovery.d.ts +155 -0
- package/dist/roap/turnDiscovery.js +3 -6
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.js +75 -0
- package/dist/roap/util.js.map +1 -0
- package/dist/rtcMetrics/constants.d.ts +4 -0
- package/dist/rtcMetrics/index.d.ts +61 -0
- package/dist/statsAnalyzer/global.d.ts +36 -0
- package/dist/statsAnalyzer/global.js +126 -0
- package/dist/statsAnalyzer/global.js.map +1 -0
- package/dist/statsAnalyzer/index.d.ts +217 -0
- package/dist/statsAnalyzer/index.js +1013 -0
- package/dist/statsAnalyzer/index.js.map +1 -0
- package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
- package/dist/statsAnalyzer/mqaUtil.js +179 -0
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -0
- package/dist/transcription/index.d.ts +64 -0
- package/dist/types/annotation/index.d.ts +5 -0
- package/dist/types/common/errors/join-forbidden-error.d.ts +15 -0
- package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
- package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/config.d.ts +1 -0
- package/dist/types/constants.d.ts +53 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/locus-info/index.d.ts +2 -1
- package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
- package/dist/types/meeting/brbState.d.ts +54 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +12 -0
- package/dist/types/meeting/index.d.ts +64 -14
- package/dist/types/meeting/locusMediaRequest.d.ts +6 -3
- package/dist/types/meeting/request.d.ts +14 -3
- package/dist/types/meeting/request.type.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +3 -3
- package/dist/types/meeting-info/meeting-info-v2.d.ts +30 -5
- package/dist/types/meetings/index.d.ts +20 -2
- package/dist/types/meetings/meetings.types.d.ts +8 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +7 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/constants.d.ts +6 -1
- package/dist/types/multistream/sendSlotManager.d.ts +8 -1
- package/dist/types/reachability/clusterReachability.d.ts +1 -10
- package/dist/types/reachability/index.d.ts +83 -36
- package/dist/types/reachability/reachability.types.d.ts +64 -0
- package/dist/types/reachability/request.d.ts +5 -1
- package/dist/types/recording-controller/enums.d.ts +5 -2
- package/dist/types/recording-controller/index.d.ts +1 -0
- package/dist/types/recording-controller/util.d.ts +2 -1
- package/dist/types/roap/request.d.ts +1 -13
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +217 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
- package/dist/webinar/collection.d.ts +16 -0
- package/dist/webinar/index.d.ts +5 -0
- package/dist/webinar/index.js +390 -7
- package/dist/webinar/index.js.map +1 -1
- package/package.json +23 -22
- package/src/annotation/index.ts +16 -0
- package/src/common/errors/join-forbidden-error.ts +26 -0
- package/src/common/errors/join-webinar-error.ts +24 -0
- package/src/common/errors/multistream-not-supported-error.ts +30 -0
- package/src/config.ts +1 -0
- package/src/constants.ts +61 -3
- package/src/index.ts +5 -3
- package/src/locus-info/index.ts +20 -3
- package/src/locus-info/selfUtils.ts +24 -6
- package/src/media/MediaConnectionAwaiter.ts +2 -0
- package/src/media/properties.ts +34 -13
- package/src/meeting/brbState.ts +169 -0
- package/src/meeting/in-meeting-actions.ts +25 -0
- package/src/meeting/index.ts +443 -87
- package/src/meeting/locusMediaRequest.ts +11 -8
- package/src/meeting/muteState.ts +1 -6
- package/src/meeting/request.ts +30 -12
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +32 -13
- package/src/meeting-info/meeting-info-v2.ts +83 -12
- package/src/meeting-info/utilv2.ts +17 -3
- package/src/meetings/index.ts +79 -20
- package/src/meetings/meetings.types.ts +10 -0
- package/src/meetings/util.ts +2 -1
- package/src/member/index.ts +9 -0
- package/src/member/types.ts +8 -0
- package/src/member/util.ts +34 -24
- package/src/members/util.ts +1 -0
- package/src/metrics/constants.ts +6 -1
- package/src/multistream/remoteMedia.ts +28 -15
- package/src/multistream/sendSlotManager.ts +31 -0
- package/src/reachability/clusterReachability.ts +5 -15
- package/src/reachability/index.ts +311 -75
- package/src/reachability/reachability.types.ts +85 -0
- package/src/reachability/request.ts +55 -31
- package/src/recording-controller/enums.ts +5 -2
- package/src/recording-controller/index.ts +17 -4
- package/src/recording-controller/util.ts +20 -5
- package/src/roap/index.ts +14 -13
- package/src/roap/request.ts +30 -44
- package/src/roap/turnDiscovery.ts +2 -4
- package/src/webinar/index.ts +235 -9
- package/test/unit/spec/annotation/index.ts +46 -1
- package/test/unit/spec/locus-info/index.js +292 -60
- package/test/unit/spec/locus-info/selfConstant.js +7 -0
- package/test/unit/spec/locus-info/selfUtils.js +101 -1
- package/test/unit/spec/media/properties.ts +15 -0
- package/test/unit/spec/meeting/brbState.ts +114 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +15 -1
- package/test/unit/spec/meeting/index.js +851 -107
- package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
- package/test/unit/spec/meeting/muteState.js +0 -24
- package/test/unit/spec/meeting/request.js +3 -26
- package/test/unit/spec/meeting/utils.js +73 -28
- package/test/unit/spec/meeting-info/meetinginfov2.js +46 -4
- package/test/unit/spec/meeting-info/utilv2.js +26 -0
- package/test/unit/spec/meetings/index.js +159 -18
- package/test/unit/spec/meetings/utils.js +10 -0
- package/test/unit/spec/member/util.js +52 -11
- package/test/unit/spec/members/utils.js +95 -0
- package/test/unit/spec/multistream/remoteMedia.ts +11 -7
- package/test/unit/spec/reachability/clusterReachability.ts +7 -0
- package/test/unit/spec/reachability/index.ts +383 -9
- package/test/unit/spec/reachability/request.js +48 -12
- package/test/unit/spec/recording-controller/index.js +61 -5
- package/test/unit/spec/recording-controller/util.js +39 -3
- package/test/unit/spec/roap/index.ts +48 -1
- package/test/unit/spec/roap/request.ts +51 -109
- package/test/unit/spec/roap/turnDiscovery.ts +202 -147
- package/test/unit/spec/webinar/index.ts +504 -0
- package/dist/common/errors/webinar-registration-error.js.map +0 -1
- package/src/common/errors/webinar-registration-error.ts +0 -27
@@ -0,0 +1,62 @@
|
|
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 _state = _interopRequireDefault(require("./state"));
|
10
|
+
/* eslint-disable */
|
11
|
+
var RoapCollection = {
|
12
|
+
sessions: {},
|
13
|
+
getSession: function getSession(id) {
|
14
|
+
if (!this.sessions[id]) {
|
15
|
+
this.sessions[id] = {
|
16
|
+
activeSequences: 0
|
17
|
+
};
|
18
|
+
}
|
19
|
+
return this.sessions[id];
|
20
|
+
},
|
21
|
+
deleteSession: function deleteSession(id) {
|
22
|
+
if (this.getSession(id)) {
|
23
|
+
delete this.sessions[id];
|
24
|
+
}
|
25
|
+
},
|
26
|
+
getSessionSequence: function getSessionSequence(id, seqId) {
|
27
|
+
var session = this.getSession(id);
|
28
|
+
if (!session[seqId]) {
|
29
|
+
session[seqId] = {
|
30
|
+
state: _state.default.createState(),
|
31
|
+
finished: false
|
32
|
+
};
|
33
|
+
session.activeSequences += 1;
|
34
|
+
}
|
35
|
+
return session[seqId];
|
36
|
+
},
|
37
|
+
deleteSessionSequence: function deleteSessionSequence(id, seqId) {
|
38
|
+
var seq = this.getSessionSequence(id, seqId);
|
39
|
+
if (seq) {
|
40
|
+
if (!seq.finished) {
|
41
|
+
// @ts-ignore
|
42
|
+
session.activeSequences -= 1;
|
43
|
+
}
|
44
|
+
delete this.sessions[id][seqId];
|
45
|
+
}
|
46
|
+
},
|
47
|
+
isBusy: function isBusy(id) {
|
48
|
+
var session = this.getSession(id);
|
49
|
+
if (!session) return false;
|
50
|
+
return session.activeSequences > 0;
|
51
|
+
},
|
52
|
+
onSessionSequenceFinish: function onSessionSequenceFinish(id, seqId) {
|
53
|
+
var session = this.getSession(id);
|
54
|
+
var seq = session[seqId];
|
55
|
+
if (seq && !seq.finished) {
|
56
|
+
seq.finished = true;
|
57
|
+
session.activeSequences -= 1;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
};
|
61
|
+
var _default = exports.default = RoapCollection;
|
62
|
+
//# sourceMappingURL=collection.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_state","_interopRequireDefault","require","RoapCollection","sessions","getSession","id","activeSequences","deleteSession","getSessionSequence","seqId","session","state","RoapStateMachine","createState","finished","deleteSessionSequence","seq","isBusy","onSessionSequenceFinish","_default","exports","default"],"sources":["collection.ts"],"sourcesContent":["import RoapStateMachine from './state';\n\n/* eslint-disable */\nconst RoapCollection = {\n sessions: {},\n\n getSession(id) {\n if (!this.sessions[id]) {\n this.sessions[id] = {\n activeSequences: 0,\n };\n }\n return this.sessions[id];\n },\n\n deleteSession(id) {\n if (this.getSession(id)) {\n delete this.sessions[id];\n }\n },\n\n getSessionSequence(id, seqId) {\n const session = this.getSession(id);\n if (!session[seqId]) {\n session[seqId] = {\n state: RoapStateMachine.createState(),\n finished: false,\n };\n session.activeSequences += 1;\n }\n return session[seqId];\n },\n\n deleteSessionSequence(id, seqId) {\n const seq = this.getSessionSequence(id, seqId);\n if (seq) {\n if (!seq.finished) {\n // @ts-ignore\n session.activeSequences -= 1;\n }\n delete this.sessions[id][seqId];\n }\n },\n\n isBusy(id) {\n const session = this.getSession(id);\n if (!session) return false;\n\n return session.activeSequences > 0;\n },\n\n onSessionSequenceFinish(id, seqId) {\n const session = this.getSession(id);\n const seq = session[seqId];\n if (seq && !seq.finished) {\n seq.finished = true;\n session.activeSequences -= 1;\n }\n },\n};\n\nexport default RoapCollection;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA;AACA,IAAMC,cAAc,GAAG;EACrBC,QAAQ,EAAE,CAAC,CAAC;EAEZC,UAAU,WAAVA,UAAUA,CAACC,EAAE,EAAE;IACb,IAAI,CAAC,IAAI,CAACF,QAAQ,CAACE,EAAE,CAAC,EAAE;MACtB,IAAI,CAACF,QAAQ,CAACE,EAAE,CAAC,GAAG;QAClBC,eAAe,EAAE;MACnB,CAAC;IACH;IACA,OAAO,IAAI,CAACH,QAAQ,CAACE,EAAE,CAAC;EAC1B,CAAC;EAEDE,aAAa,WAAbA,aAAaA,CAACF,EAAE,EAAE;IAChB,IAAI,IAAI,CAACD,UAAU,CAACC,EAAE,CAAC,EAAE;MACvB,OAAO,IAAI,CAACF,QAAQ,CAACE,EAAE,CAAC;IAC1B;EACF,CAAC;EAEDG,kBAAkB,WAAlBA,kBAAkBA,CAACH,EAAE,EAAEI,KAAK,EAAE;IAC5B,IAAMC,OAAO,GAAG,IAAI,CAACN,UAAU,CAACC,EAAE,CAAC;IACnC,IAAI,CAACK,OAAO,CAACD,KAAK,CAAC,EAAE;MACnBC,OAAO,CAACD,KAAK,CAAC,GAAG;QACfE,KAAK,EAAEC,cAAgB,CAACC,WAAW,CAAC,CAAC;QACrCC,QAAQ,EAAE;MACZ,CAAC;MACDJ,OAAO,CAACJ,eAAe,IAAI,CAAC;IAC9B;IACA,OAAOI,OAAO,CAACD,KAAK,CAAC;EACvB,CAAC;EAEDM,qBAAqB,WAArBA,qBAAqBA,CAACV,EAAE,EAAEI,KAAK,EAAE;IAC/B,IAAMO,GAAG,GAAG,IAAI,CAACR,kBAAkB,CAACH,EAAE,EAAEI,KAAK,CAAC;IAC9C,IAAIO,GAAG,EAAE;MACP,IAAI,CAACA,GAAG,CAACF,QAAQ,EAAE;QACjB;QACAJ,OAAO,CAACJ,eAAe,IAAI,CAAC;MAC9B;MACA,OAAO,IAAI,CAACH,QAAQ,CAACE,EAAE,CAAC,CAACI,KAAK,CAAC;IACjC;EACF,CAAC;EAEDQ,MAAM,WAANA,MAAMA,CAACZ,EAAE,EAAE;IACT,IAAMK,OAAO,GAAG,IAAI,CAACN,UAAU,CAACC,EAAE,CAAC;IACnC,IAAI,CAACK,OAAO,EAAE,OAAO,KAAK;IAE1B,OAAOA,OAAO,CAACJ,eAAe,GAAG,CAAC;EACpC,CAAC;EAEDY,uBAAuB,WAAvBA,uBAAuBA,CAACb,EAAE,EAAEI,KAAK,EAAE;IACjC,IAAMC,OAAO,GAAG,IAAI,CAACN,UAAU,CAACC,EAAE,CAAC;IACnC,IAAMW,GAAG,GAAGN,OAAO,CAACD,KAAK,CAAC;IAC1B,IAAIO,GAAG,IAAI,CAACA,GAAG,CAACF,QAAQ,EAAE;MACxBE,GAAG,CAACF,QAAQ,GAAG,IAAI;MACnBJ,OAAO,CAACJ,eAAe,IAAI,CAAC;IAC9B;EACF;AACF,CAAC;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEanB,cAAc","ignoreList":[]}
|
@@ -0,0 +1,275 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
4
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
5
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
6
|
+
_Object$defineProperty(exports, "__esModule", {
|
7
|
+
value: true
|
8
|
+
});
|
9
|
+
exports.default = void 0;
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
16
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
17
|
+
var _webexCore = require("@webex/webex-core");
|
18
|
+
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
19
|
+
var _constants = require("../constants");
|
20
|
+
var _metrics = _interopRequireDefault(require("../metrics"));
|
21
|
+
var _constants2 = _interopRequireDefault(require("../metrics/constants"));
|
22
|
+
var _util = _interopRequireDefault(require("./util"));
|
23
|
+
var _collection = _interopRequireDefault(require("./collection"));
|
24
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
25
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* no-param-reassign */ // @ts-ignore
|
26
|
+
var checkForAndHandleErrors = function checkForAndHandleErrors(action, meeting, correlationId) {
|
27
|
+
if (action && action.type) {
|
28
|
+
if (action.msg && action.msg.messageType && action.msg.errorType) {
|
29
|
+
if (_util.default.findError(action.msg.messageType, action.msg.errorType, action.type)) {
|
30
|
+
_util.default.handleError(meeting.mediaProperties.peerConnection).then(function (res) {
|
31
|
+
if (res) {
|
32
|
+
_collection.default.deleteSessionSequence(correlationId, action.msg.seq);
|
33
|
+
}
|
34
|
+
}).catch(function (err) {
|
35
|
+
_loggerProxy.default.logger.warn("Roap:handler#checkForAndHandleErrors --> Cannot reset the peer connection with error: ".concat(err));
|
36
|
+
});
|
37
|
+
return true;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
if (!_util.default.ensureMeeting(meeting, action.type)) {
|
41
|
+
return true;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
return false;
|
45
|
+
};
|
46
|
+
var compareWithLastRoapMessage = function compareWithLastRoapMessage(lastRoapMessage, currentRoapMessage) {
|
47
|
+
var _lastRoapMessage$msg, _lastRoapMessage$msg2;
|
48
|
+
return (lastRoapMessage === null || lastRoapMessage === void 0 ? void 0 : (_lastRoapMessage$msg = lastRoapMessage.msg) === null || _lastRoapMessage$msg === void 0 ? void 0 : _lastRoapMessage$msg.seq) === currentRoapMessage.msg.seq && (lastRoapMessage === null || lastRoapMessage === void 0 ? void 0 : (_lastRoapMessage$msg2 = lastRoapMessage.msg) === null || _lastRoapMessage$msg2 === void 0 ? void 0 : _lastRoapMessage$msg2.messageType) === currentRoapMessage.msg.messageType;
|
49
|
+
};
|
50
|
+
var handleSessionStep = function handleSessionStep(_ref) {
|
51
|
+
var roap = _ref.roap,
|
52
|
+
session = _ref.session,
|
53
|
+
locusUrl = _ref.locusUrl,
|
54
|
+
correlationId = _ref.correlationId;
|
55
|
+
var _roap$msg = roap.msg,
|
56
|
+
sequenceId = _roap$msg.seq,
|
57
|
+
messageType = _roap$msg.messageType;
|
58
|
+
if (session.OFFER && messageType === _constants._OFFER_) {
|
59
|
+
session.GLARE_OFFER = roap.msg;
|
60
|
+
session.GLARE_OFFER.remote = !!roap.remote;
|
61
|
+
var metricName = _constants2.default.ROAP_GLARE_CONDITION;
|
62
|
+
var data = {
|
63
|
+
correlation_id: correlationId,
|
64
|
+
locus_id: locusUrl.split('/').pop(),
|
65
|
+
sequence: sequenceId
|
66
|
+
};
|
67
|
+
_metrics.default.sendBehavioralMetric(metricName, data);
|
68
|
+
_loggerProxy.default.logger.warn("Roap:handler#handleSessionStep --> Glare condition occurred with new mercury event, sequenceId: ".concat(sequenceId));
|
69
|
+
} else {
|
70
|
+
_loggerProxy.default.logger.info("Roap:handler#handleSessionStep --> Save OFFER/ANSWER seq:".concat(sequenceId, " new mercury event ").concat(messageType, "local state: ").concat((0, _stringify.default)(session.state.state, null, 2)));
|
71
|
+
session[messageType] = roap.msg;
|
72
|
+
session[messageType].remote = !!roap.remote;
|
73
|
+
}
|
74
|
+
};
|
75
|
+
|
76
|
+
/**
|
77
|
+
* @class RoapHandler
|
78
|
+
*/
|
79
|
+
var RoapHandler = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
80
|
+
function RoapHandler(attrs, options, roapOk, roapAnswer, roapFinished) {
|
81
|
+
var _this;
|
82
|
+
(0, _classCallCheck2.default)(this, RoapHandler);
|
83
|
+
_this = _callSuper(this, RoapHandler, [{}, options]);
|
84
|
+
(0, _defineProperty2.default)(_this, "attrs", void 0);
|
85
|
+
(0, _defineProperty2.default)(_this, "lastRoapMessage", void 0);
|
86
|
+
(0, _defineProperty2.default)(_this, "options", void 0);
|
87
|
+
(0, _defineProperty2.default)(_this, "roapAnswer", void 0);
|
88
|
+
(0, _defineProperty2.default)(_this, "roapFinished", void 0);
|
89
|
+
(0, _defineProperty2.default)(_this, "roapOk", void 0);
|
90
|
+
_this.attrs = attrs;
|
91
|
+
_this.options = options;
|
92
|
+
_this.roapOk = roapOk;
|
93
|
+
_this.roapFinished = roapFinished;
|
94
|
+
_this.roapAnswer = roapAnswer;
|
95
|
+
_this.lastRoapMessage = null;
|
96
|
+
return _this;
|
97
|
+
}
|
98
|
+
|
99
|
+
/**
|
100
|
+
*
|
101
|
+
* @param {Object} session
|
102
|
+
* @param {Meeting} meeting
|
103
|
+
* @param {Object} action
|
104
|
+
* @returns {null}
|
105
|
+
*/
|
106
|
+
(0, _inherits2.default)(RoapHandler, _StatelessWebexPlugin);
|
107
|
+
return (0, _createClass2.default)(RoapHandler, [{
|
108
|
+
key: "perform",
|
109
|
+
value: function perform(session, meeting, action) {
|
110
|
+
var _this2 = this;
|
111
|
+
switch (session.state.state) {
|
112
|
+
case _constants.ROAP.ROAP_STATE.INIT:
|
113
|
+
this.roapFinished(meeting.correlationId, action.msg.seq);
|
114
|
+
break;
|
115
|
+
|
116
|
+
// TODO: (important )handle roap state for sending offers as well
|
117
|
+
// case ROAP.ROAP_STATE.WAIT_RX_OFFER:
|
118
|
+
// case ROAP.ROAP_STATE.WAIT_RX_ANSWER:
|
119
|
+
// case ROAP.ROAP_STATE.WAIT_RX_OK:
|
120
|
+
case _constants.ROAP.ROAP_STATE.WAIT_TX_ANSWER:
|
121
|
+
// eslint-disable-next-line no-warning-comments
|
122
|
+
// TODO: sometime the you get an answer while you are creating an offer so SKIP
|
123
|
+
// Server will send the mercury event comes back
|
124
|
+
if (_util.default.shouldHandleMedia(meeting)) {
|
125
|
+
_util.default.updatePeerConnection(meeting, session).then(function (answerSdps) {
|
126
|
+
_this2.roapAnswer({
|
127
|
+
mediaId: meeting.mediaId,
|
128
|
+
sdps: answerSdps,
|
129
|
+
seq: session.OFFER.seq,
|
130
|
+
correlationId: meeting.correlationId,
|
131
|
+
audioMuted: meeting.isAudioMuted(),
|
132
|
+
videoMuted: meeting.isVideoMuted()
|
133
|
+
});
|
134
|
+
}).catch(function (error) {
|
135
|
+
var metricName = _constants2.default.ROAP_ANSWER_FAILURE;
|
136
|
+
var data = {
|
137
|
+
correlation_id: meeting.correlationId,
|
138
|
+
locus_id: meeting.locusUrl.split('/').pop(),
|
139
|
+
reason: error.message,
|
140
|
+
stack: error.stack
|
141
|
+
};
|
142
|
+
var metadata = {
|
143
|
+
type: error.name
|
144
|
+
};
|
145
|
+
_metrics.default.sendBehavioralMetric(metricName, data, metadata);
|
146
|
+
_loggerProxy.default.logger.error("Roap:handler#perform --> Error occured during wait receive answer, continuing, ".concat(error));
|
147
|
+
});
|
148
|
+
}
|
149
|
+
break;
|
150
|
+
case _constants.ROAP.ROAP_STATE.WAIT_TX_OK:
|
151
|
+
if (!_util.default.shouldHandleMedia(meeting)) {
|
152
|
+
_util.default.setRemoteDescription(meeting, session).then(function (res) {
|
153
|
+
_this2.roapOk(res);
|
154
|
+
});
|
155
|
+
}
|
156
|
+
break;
|
157
|
+
// case ROAP.ROAP_STATE.IDLE_LOCAL_OFFER:
|
158
|
+
case _constants.ROAP.ROAP_STATE.ERROR:
|
159
|
+
_loggerProxy.default.logger.error("Roap:handler#perform --> Roap State ERROR for session: ".concat(session));
|
160
|
+
break;
|
161
|
+
case _constants.ROAP.ROAP_STATE.GLARE:
|
162
|
+
session.GLARE_OFFER.tieBreaker = session.GLARE_OFFER.tieBreaker || 0;
|
163
|
+
session.OFFER.tieBreaker = session.OFFER.tieBreaker || 0;
|
164
|
+
_loggerProxy.default.logger.warn('Roap:handler#perform --> Roap State resolved the GLARE condition.');
|
165
|
+
if (session.GLARE_OFFER.tieBreaker < session.OFFER.tieBreaker) {
|
166
|
+
// 2
|
167
|
+
_loggerProxy.default.logger.log('Roap:handler#perform --> Roap State local offer won after GLARE.');
|
168
|
+
} else {
|
169
|
+
_loggerProxy.default.logger.log('Roap:handler#perform --> Roap State remote offer won after GLARE.');
|
170
|
+
}
|
171
|
+
session.state.step(_constants.ROAP.ROAP_SIGNAL.GLARE_RESOLVED, meeting, action);
|
172
|
+
// @ts-ignore
|
173
|
+
this.perform(session, meeting);
|
174
|
+
break;
|
175
|
+
default:
|
176
|
+
break;
|
177
|
+
}
|
178
|
+
}
|
179
|
+
|
180
|
+
/**
|
181
|
+
*
|
182
|
+
* @param {String} signal
|
183
|
+
* @param {Object} session
|
184
|
+
* @param {Object} action
|
185
|
+
* @param {Meeting} meeting
|
186
|
+
* @param {String} prefix
|
187
|
+
* @returns {null}
|
188
|
+
*/
|
189
|
+
}, {
|
190
|
+
key: "execute",
|
191
|
+
value: function execute(signal, session, action, meeting, prefix) {
|
192
|
+
if (session && session.state) {
|
193
|
+
handleSessionStep({
|
194
|
+
roap: action,
|
195
|
+
locusUrl: meeting.locusUrl,
|
196
|
+
correlationId: meeting.correlationId,
|
197
|
+
session: session
|
198
|
+
});
|
199
|
+
signal = _constants.ROAP.ROAP_SIGNAL["".concat(prefix).concat(action.msg.messageType)];
|
200
|
+
session.state.step(signal, meeting, action);
|
201
|
+
this.perform(session, meeting, action);
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
/**
|
206
|
+
*
|
207
|
+
* @param {Object} session
|
208
|
+
* @param {Object} action
|
209
|
+
* @param {Meeting} meeting
|
210
|
+
* @param {String} correlationId
|
211
|
+
* @returns {Boolean}
|
212
|
+
*/
|
213
|
+
}, {
|
214
|
+
key: "handleAction",
|
215
|
+
value: function handleAction(session, action, meeting, correlationId) {
|
216
|
+
var signal;
|
217
|
+
switch (action.type) {
|
218
|
+
case _constants.ROAP.RECEIVE_ROAP_MSG:
|
219
|
+
_loggerProxy.default.logger.log("Roap:handler#handleAction --> RECEIVE_ROAP_MSG event captured, reciving a roap message : ".concat((0, _stringify.default)(action)));
|
220
|
+
if (compareWithLastRoapMessage(this.lastRoapMessage, action)) {
|
221
|
+
_loggerProxy.default.logger.warn("Roap:handler#handleAction --> duplicate roap offer from server: ".concat(action.msg.seq));
|
222
|
+
} else {
|
223
|
+
this.lastRoapMessage = action;
|
224
|
+
action.remote = true;
|
225
|
+
this.execute(signal, session, action, meeting, _constants.ROAP.RX_);
|
226
|
+
}
|
227
|
+
break;
|
228
|
+
case _constants.ROAP.SEND_ROAP_MSG:
|
229
|
+
_loggerProxy.default.logger.log("Roap:handler#handleAction --> SEND_ROAP_MSG event captured, sending roap message ".concat((0, _stringify.default)(action)));
|
230
|
+
action.local = true;
|
231
|
+
this.execute(signal, session, action, meeting, _constants.ROAP.TX_);
|
232
|
+
break;
|
233
|
+
case _constants.ROAP.SEND_ROAP_MSG_SUCCESS:
|
234
|
+
// NOTE: When server send back an answer via mercury the
|
235
|
+
// remote SDP is already saved sent and ok message is sent back
|
236
|
+
// We dont have to indicate the roapHandler about the RX_ANSWER via SEND_ROAP_MSG_SUCCESS
|
237
|
+
break;
|
238
|
+
case _constants.ROAP.RECEIVE_CALL_LEAVE:
|
239
|
+
_collection.default.deleteSession(correlationId);
|
240
|
+
_loggerProxy.default.logger.log("Roap:handler#handleAction --> RECEIVE_CALL_LEAVE event captured, cleaning up the RoapHandler for correlationId: ".concat(correlationId));
|
241
|
+
break;
|
242
|
+
case _constants.ROAP.RESET_ROAP_STATE:
|
243
|
+
_collection.default.deleteSessionSequence(correlationId, action.msg.seq);
|
244
|
+
_loggerProxy.default.logger.log("Roap:handler#handleAction --> RESET_ROAP_STATE event captured, resetting the RoapHandler state based on sequenceId: ".concat(action.msg.seq));
|
245
|
+
break;
|
246
|
+
default:
|
247
|
+
return true;
|
248
|
+
}
|
249
|
+
return true;
|
250
|
+
}
|
251
|
+
|
252
|
+
/**
|
253
|
+
*
|
254
|
+
* @param {Object} action
|
255
|
+
* @returns {Boolean}
|
256
|
+
*/
|
257
|
+
}, {
|
258
|
+
key: "submit",
|
259
|
+
value: function submit(action) {
|
260
|
+
var correlationId = action.correlationId;
|
261
|
+
var seq = action.seq;
|
262
|
+
if (!seq && action.msg) {
|
263
|
+
seq = action.msg.seq;
|
264
|
+
}
|
265
|
+
var session = _collection.default.getSessionSequence(correlationId, seq);
|
266
|
+
// @ts-ignore
|
267
|
+
var meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', correlationId);
|
268
|
+
if (checkForAndHandleErrors(action, meeting, correlationId)) {
|
269
|
+
return true;
|
270
|
+
}
|
271
|
+
return this.handleAction(session, action, meeting, correlationId);
|
272
|
+
}
|
273
|
+
}]);
|
274
|
+
}(_webexCore.StatelessWebexPlugin);
|
275
|
+
//# sourceMappingURL=handler.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_loggerProxy","_interopRequireDefault","_constants","_metrics","_constants2","_util","_collection","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","checkForAndHandleErrors","action","meeting","correlationId","type","msg","messageType","errorType","RoapUtil","findError","handleError","mediaProperties","peerConnection","then","res","RoapCollection","deleteSessionSequence","seq","catch","err","LoggerProxy","logger","warn","concat","ensureMeeting","compareWithLastRoapMessage","lastRoapMessage","currentRoapMessage","_lastRoapMessage$msg","_lastRoapMessage$msg2","handleSessionStep","_ref","roap","session","locusUrl","_roap$msg","sequenceId","OFFER","_OFFER_","GLARE_OFFER","remote","metricName","BEHAVIORAL_METRICS","ROAP_GLARE_CONDITION","data","correlation_id","locus_id","split","pop","sequence","Metrics","sendBehavioralMetric","info","_stringify","state","RoapHandler","exports","_StatelessWebexPlugin","attrs","options","roapOk","roapAnswer","roapFinished","_this","_classCallCheck2","_defineProperty2","_inherits2","_createClass2","key","value","perform","_this2","ROAP","ROAP_STATE","INIT","WAIT_TX_ANSWER","shouldHandleMedia","updatePeerConnection","answerSdps","mediaId","sdps","audioMuted","isAudioMuted","videoMuted","isVideoMuted","error","ROAP_ANSWER_FAILURE","reason","message","stack","metadata","name","WAIT_TX_OK","setRemoteDescription","ERROR","GLARE","tieBreaker","log","step","ROAP_SIGNAL","GLARE_RESOLVED","execute","signal","prefix","handleAction","RECEIVE_ROAP_MSG","RX_","SEND_ROAP_MSG","local","TX_","SEND_ROAP_MSG_SUCCESS","RECEIVE_CALL_LEAVE","deleteSession","RESET_ROAP_STATE","submit","getSessionSequence","webex","meetings","meetingCollection","getByKey","StatelessWebexPlugin"],"sources":["handler.ts"],"sourcesContent":["/* no-param-reassign */\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ROAP, _OFFER_} from '../constants';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nimport RoapUtil from './util';\nimport RoapCollection from './collection';\nimport Meeting from '../meeting';\n\nconst checkForAndHandleErrors = (action, meeting, correlationId) => {\n if (action && action.type) {\n if (action.msg && action.msg.messageType && action.msg.errorType) {\n if (RoapUtil.findError(action.msg.messageType, action.msg.errorType, action.type)) {\n RoapUtil.handleError(meeting.mediaProperties.peerConnection)\n .then((res) => {\n if (res) {\n RoapCollection.deleteSessionSequence(correlationId, action.msg.seq);\n }\n })\n .catch((err) => {\n LoggerProxy.logger.warn(\n `Roap:handler#checkForAndHandleErrors --> Cannot reset the peer connection with error: ${err}`\n );\n });\n\n return true;\n }\n }\n if (!RoapUtil.ensureMeeting(meeting, action.type)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst compareWithLastRoapMessage = (lastRoapMessage, currentRoapMessage) =>\n lastRoapMessage?.msg?.seq === currentRoapMessage.msg.seq &&\n lastRoapMessage?.msg?.messageType === currentRoapMessage.msg.messageType;\n\nconst handleSessionStep = ({roap, session, locusUrl, correlationId}) => {\n const {seq: sequenceId, messageType} = roap.msg;\n\n if (session.OFFER && messageType === _OFFER_) {\n session.GLARE_OFFER = roap.msg;\n session.GLARE_OFFER.remote = !!roap.remote;\n const metricName = BEHAVIORAL_METRICS.ROAP_GLARE_CONDITION;\n const data = {\n correlation_id: correlationId,\n locus_id: locusUrl.split('/').pop(),\n sequence: sequenceId,\n };\n\n Metrics.sendBehavioralMetric(metricName, data);\n\n LoggerProxy.logger.warn(\n `Roap:handler#handleSessionStep --> Glare condition occurred with new mercury event, sequenceId: ${sequenceId}`\n );\n } else {\n LoggerProxy.logger.info(\n `Roap:handler#handleSessionStep --> Save OFFER/ANSWER seq:${sequenceId} new mercury event ${messageType}local state: ${JSON.stringify(\n session.state.state,\n null,\n 2\n )}`\n );\n session[messageType] = roap.msg;\n session[messageType].remote = !!roap.remote;\n }\n};\n\n/**\n * @class RoapHandler\n */\nexport default class RoapHandler extends StatelessWebexPlugin {\n attrs: any;\n lastRoapMessage: any;\n options: any;\n roapAnswer: any;\n roapFinished: any;\n roapOk: any;\n\n constructor(attrs, options, roapOk, roapAnswer, roapFinished) {\n super({}, options);\n this.attrs = attrs;\n this.options = options;\n this.roapOk = roapOk;\n this.roapFinished = roapFinished;\n this.roapAnswer = roapAnswer;\n this.lastRoapMessage = null;\n }\n\n /**\n *\n * @param {Object} session\n * @param {Meeting} meeting\n * @param {Object} action\n * @returns {null}\n */\n perform(session: any, meeting: any, action: any) {\n switch (session.state.state) {\n case ROAP.ROAP_STATE.INIT:\n this.roapFinished(meeting.correlationId, action.msg.seq);\n break;\n\n // TODO: (important )handle roap state for sending offers as well\n // case ROAP.ROAP_STATE.WAIT_RX_OFFER:\n // case ROAP.ROAP_STATE.WAIT_RX_ANSWER:\n // case ROAP.ROAP_STATE.WAIT_RX_OK:\n case ROAP.ROAP_STATE.WAIT_TX_ANSWER:\n // eslint-disable-next-line no-warning-comments\n // TODO: sometime the you get an answer while you are creating an offer so SKIP\n // Server will send the mercury event comes back\n if (RoapUtil.shouldHandleMedia(meeting)) {\n RoapUtil.updatePeerConnection(meeting, session)\n .then((answerSdps) => {\n this.roapAnswer({\n mediaId: meeting.mediaId,\n sdps: answerSdps,\n seq: session.OFFER.seq,\n correlationId: meeting.correlationId,\n audioMuted: meeting.isAudioMuted(),\n videoMuted: meeting.isVideoMuted(),\n });\n })\n .catch((error) => {\n const metricName = BEHAVIORAL_METRICS.ROAP_ANSWER_FAILURE;\n const data = {\n correlation_id: meeting.correlationId,\n locus_id: meeting.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n };\n const metadata = {\n type: error.name,\n };\n\n Metrics.sendBehavioralMetric(metricName, data, metadata);\n LoggerProxy.logger.error(\n `Roap:handler#perform --> Error occured during wait receive answer, continuing, ${error}`\n );\n });\n }\n break;\n case ROAP.ROAP_STATE.WAIT_TX_OK:\n if (!RoapUtil.shouldHandleMedia(meeting)) {\n RoapUtil.setRemoteDescription(meeting, session).then((res) => {\n this.roapOk(res);\n });\n }\n break;\n // case ROAP.ROAP_STATE.IDLE_LOCAL_OFFER:\n case ROAP.ROAP_STATE.ERROR:\n LoggerProxy.logger.error(\n `Roap:handler#perform --> Roap State ERROR for session: ${session}`\n );\n break;\n case ROAP.ROAP_STATE.GLARE:\n session.GLARE_OFFER.tieBreaker = session.GLARE_OFFER.tieBreaker || 0;\n session.OFFER.tieBreaker = session.OFFER.tieBreaker || 0;\n LoggerProxy.logger.warn(\n 'Roap:handler#perform --> Roap State resolved the GLARE condition.'\n );\n if (session.GLARE_OFFER.tieBreaker < session.OFFER.tieBreaker) {\n // 2\n LoggerProxy.logger.log(\n 'Roap:handler#perform --> Roap State local offer won after GLARE.'\n );\n } else {\n LoggerProxy.logger.log(\n 'Roap:handler#perform --> Roap State remote offer won after GLARE.'\n );\n }\n session.state.step(ROAP.ROAP_SIGNAL.GLARE_RESOLVED, meeting, action);\n // @ts-ignore\n this.perform(session, meeting);\n break;\n default:\n break;\n }\n }\n\n /**\n *\n * @param {String} signal\n * @param {Object} session\n * @param {Object} action\n * @param {Meeting} meeting\n * @param {String} prefix\n * @returns {null}\n */\n execute(signal: string, session: any, action: any, meeting: Meeting, prefix: string) {\n if (session && session.state) {\n handleSessionStep({\n roap: action,\n locusUrl: meeting.locusUrl,\n correlationId: meeting.correlationId,\n session,\n });\n signal = ROAP.ROAP_SIGNAL[`${prefix}${action.msg.messageType}`];\n session.state.step(signal, meeting, action);\n this.perform(session, meeting, action);\n }\n }\n\n /**\n *\n * @param {Object} session\n * @param {Object} action\n * @param {Meeting} meeting\n * @param {String} correlationId\n * @returns {Boolean}\n */\n handleAction(session: object, action: any, meeting: Meeting, correlationId: string) {\n let signal;\n\n switch (action.type) {\n case ROAP.RECEIVE_ROAP_MSG:\n LoggerProxy.logger.log(\n `Roap:handler#handleAction --> RECEIVE_ROAP_MSG event captured, reciving a roap message : ${JSON.stringify(\n action\n )}`\n );\n if (compareWithLastRoapMessage(this.lastRoapMessage, action)) {\n LoggerProxy.logger.warn(\n `Roap:handler#handleAction --> duplicate roap offer from server: ${action.msg.seq}`\n );\n } else {\n this.lastRoapMessage = action;\n action.remote = true;\n this.execute(signal, session, action, meeting, ROAP.RX_);\n }\n break;\n case ROAP.SEND_ROAP_MSG:\n LoggerProxy.logger.log(\n `Roap:handler#handleAction --> SEND_ROAP_MSG event captured, sending roap message ${JSON.stringify(\n action\n )}`\n );\n\n action.local = true;\n this.execute(signal, session, action, meeting, ROAP.TX_);\n break;\n case ROAP.SEND_ROAP_MSG_SUCCESS:\n // NOTE: When server send back an answer via mercury the\n // remote SDP is already saved sent and ok message is sent back\n // We dont have to indicate the roapHandler about the RX_ANSWER via SEND_ROAP_MSG_SUCCESS\n break;\n case ROAP.RECEIVE_CALL_LEAVE:\n RoapCollection.deleteSession(correlationId);\n LoggerProxy.logger.log(\n `Roap:handler#handleAction --> RECEIVE_CALL_LEAVE event captured, cleaning up the RoapHandler for correlationId: ${correlationId}`\n );\n break;\n case ROAP.RESET_ROAP_STATE:\n RoapCollection.deleteSessionSequence(correlationId, action.msg.seq);\n LoggerProxy.logger.log(\n `Roap:handler#handleAction --> RESET_ROAP_STATE event captured, resetting the RoapHandler state based on sequenceId: ${action.msg.seq}`\n );\n break;\n default:\n return true;\n }\n\n return true;\n }\n\n /**\n *\n * @param {Object} action\n * @returns {Boolean}\n */\n submit(action: any) {\n const {correlationId} = action;\n let {seq} = action;\n\n if (!seq && action.msg) {\n seq = action.msg.seq;\n }\n const session = RoapCollection.getSessionSequence(correlationId, seq);\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', correlationId);\n\n if (checkForAndHandleErrors(action, meeting, correlationId)) {\n return true;\n }\n\n return this.handleAction(session, action, meeting, correlationId);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
import { StatelessWebexPlugin } from '@webex/webex-core';
|
2
|
+
import TurnDiscovery, { TurnDiscoveryResult } from './turnDiscovery';
|
3
|
+
import Meeting from '../meeting';
|
4
|
+
export { type TurnDiscoveryResult, type TurnServerInfo, type TurnDiscoverySkipReason, } from './turnDiscovery';
|
5
|
+
/**
|
6
|
+
* Roap options
|
7
|
+
* @typedef {Object} RoapOptions
|
8
|
+
* @property {String} sdp
|
9
|
+
* @property {Meeting} meeting
|
10
|
+
* @property {Number} seq
|
11
|
+
* @property {Number} tieBreaker
|
12
|
+
* @property {Boolean} reconnect
|
13
|
+
*/
|
14
|
+
/**
|
15
|
+
* @typedef {Object} SeqOptions
|
16
|
+
* @property {String} correlationId
|
17
|
+
* @property {String} mediaId
|
18
|
+
* @property {Number} seq
|
19
|
+
*/
|
20
|
+
/**
|
21
|
+
* @class Roap
|
22
|
+
* @export
|
23
|
+
* @private
|
24
|
+
*/
|
25
|
+
export default class Roap extends StatelessWebexPlugin {
|
26
|
+
attrs: any;
|
27
|
+
lastRoapOffer: any;
|
28
|
+
options: any;
|
29
|
+
roapHandler: any;
|
30
|
+
roapRequest: any;
|
31
|
+
turnDiscovery: TurnDiscovery;
|
32
|
+
/**
|
33
|
+
*
|
34
|
+
* @param {Object} attrs
|
35
|
+
* @param {Object} options
|
36
|
+
*/
|
37
|
+
constructor(attrs: any, options: any);
|
38
|
+
/**
|
39
|
+
*
|
40
|
+
* @param {SeqOptions} options
|
41
|
+
* @returns {null}
|
42
|
+
* @memberof Roap
|
43
|
+
*/
|
44
|
+
sendRoapOK(options: any): Promise<any>;
|
45
|
+
/**
|
46
|
+
* Sends a ROAP answer...
|
47
|
+
* @param {SeqOptions} options
|
48
|
+
* @param {Boolean} options.audioMuted
|
49
|
+
* @param {Boolean} options.videoMuted
|
50
|
+
* @returns {Promise}
|
51
|
+
* @memberof Roap
|
52
|
+
*/
|
53
|
+
sendRoapAnswer(options: any): any;
|
54
|
+
/**
|
55
|
+
* Sends a ROAP error...
|
56
|
+
* @param {Object} options
|
57
|
+
* @returns {Promise}
|
58
|
+
* @memberof Roap
|
59
|
+
*/
|
60
|
+
sendRoapError(options: any): any;
|
61
|
+
/**
|
62
|
+
* sends a roap media request
|
63
|
+
* @param {RoapOptions} options
|
64
|
+
* @returns {Promise}
|
65
|
+
* @memberof Roap
|
66
|
+
*/
|
67
|
+
sendRoapMediaRequest(options: any): any;
|
68
|
+
/**
|
69
|
+
* Performs a TURN server discovery procedure, which involves exchanging
|
70
|
+
* some roap messages with the server. This exchange has to be done before
|
71
|
+
* any other roap messages are sent
|
72
|
+
*
|
73
|
+
* @param {Meeting} meeting
|
74
|
+
* @param {Boolean} isReconnecting should be set to true if this is a new
|
75
|
+
* media connection just after a reconnection
|
76
|
+
* @param {Boolean} [isForced]
|
77
|
+
* @returns {Promise}
|
78
|
+
*/
|
79
|
+
doTurnDiscovery(meeting: Meeting, isReconnecting: boolean, isForced?: boolean): Promise<TurnDiscoveryResult>;
|
80
|
+
generateTurnDiscoveryRequestMessage(meeting: Meeting, isForced: boolean): Promise<{
|
81
|
+
roapMessage?: object;
|
82
|
+
turnDiscoverySkippedReason: string;
|
83
|
+
}>;
|
84
|
+
handleTurnDiscoveryHttpResponse(meeting: Meeting, httpResponse: object): Promise<TurnDiscoveryResult>;
|
85
|
+
abortTurnDiscovery(): void;
|
86
|
+
}
|
package/dist/roap/index.js
CHANGED
@@ -20,7 +20,6 @@ var _constants = require("../constants");
|
|
20
20
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
21
21
|
var _request = _interopRequireDefault(require("./request"));
|
22
22
|
var _turnDiscovery = _interopRequireDefault(require("./turnDiscovery"));
|
23
|
-
var _util = _interopRequireDefault(require("../meeting/util"));
|
24
23
|
var _metrics = _interopRequireDefault(require("../metrics"));
|
25
24
|
var _constants2 = _interopRequireDefault(require("../metrics/constants"));
|
26
25
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
@@ -113,7 +112,7 @@ var Roap = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
113
112
|
roapMessage: roapMessage,
|
114
113
|
locusSelfUrl: meeting.selfUrl,
|
115
114
|
mediaId: options.mediaId,
|
116
|
-
|
115
|
+
isMultistream: meeting.isMultistream,
|
117
116
|
locusMediaRequest: meeting.locusMediaRequest
|
118
117
|
}).then(function () {
|
119
118
|
_loggerProxy.default.logger.log("Roap:index#sendRoapOK --> ROAP OK sent with seq ".concat(options.seq));
|
@@ -144,7 +143,7 @@ var Roap = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
144
143
|
roapMessage: roapMessage,
|
145
144
|
locusSelfUrl: meeting.selfUrl,
|
146
145
|
mediaId: options.mediaId,
|
147
|
-
|
146
|
+
isMultistream: meeting.isMultistream,
|
148
147
|
locusMediaRequest: meeting.locusMediaRequest
|
149
148
|
});
|
150
149
|
}
|
@@ -170,7 +169,7 @@ var Roap = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
170
169
|
roapMessage: roapMessage,
|
171
170
|
locusSelfUrl: meeting.selfUrl,
|
172
171
|
mediaId: options.mediaId,
|
173
|
-
|
172
|
+
isMultistream: meeting.isMultistream,
|
174
173
|
locusMediaRequest: meeting.locusMediaRequest
|
175
174
|
}).then(function () {
|
176
175
|
_loggerProxy.default.logger.log("Roap:index#sendRoapError --> ROAP ERROR sent with seq ".concat(options.seq));
|
@@ -207,10 +206,9 @@ var Roap = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
207
206
|
roapMessage: roapMessage,
|
208
207
|
locusSelfUrl: meeting.selfUrl,
|
209
208
|
mediaId: sendEmptyMediaId ? '' : meeting.mediaId,
|
210
|
-
|
209
|
+
isMultistream: meeting.isMultistream,
|
211
210
|
preferTranscoding: !meeting.isMultistream,
|
212
|
-
locusMediaRequest: meeting.locusMediaRequest
|
213
|
-
ipVersion: _util.default.getIpVersion(meeting.webex)
|
211
|
+
locusMediaRequest: meeting.locusMediaRequest
|
214
212
|
}).then(function (_ref) {
|
215
213
|
var _mediaConnections$;
|
216
214
|
var locus = _ref.locus,
|
@@ -229,14 +227,16 @@ var Roap = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
229
227
|
errorType = _remoteSdp$roapMessag.errorType,
|
230
228
|
errorCause = _remoteSdp$roapMessag.errorCause,
|
231
229
|
headers = _remoteSdp$roapMessag.headers;
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
230
|
+
if (messageType === _constants.ROAP.ROAP_TYPES.ANSWER) {
|
231
|
+
roapAnswer = {
|
232
|
+
seq: answerSeq,
|
233
|
+
messageType: messageType,
|
234
|
+
sdp: sdps[0],
|
235
|
+
errorType: errorType,
|
236
|
+
errorCause: errorCause,
|
237
|
+
headers: headers
|
238
|
+
};
|
239
|
+
}
|
240
240
|
}
|
241
241
|
}
|
242
242
|
if (!roapAnswer) {
|
package/dist/roap/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_constants","_loggerProxy","_interopRequireDefault","_request","_turnDiscovery","_util","_metrics","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Roap","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","roapRequest","RoapRequest","turnDiscovery","TurnDiscovery","_createClass2","key","value","sendRoapOK","_this2","_promise","resolve","then","meeting","webex","meetings","meetingCollection","getByKey","correlationId","roapMessage","messageType","ROAP","ROAP_TYPES","OK","version","ROAP_VERSION","seq","LoggerProxy","logger","log","concat","sendRoap","locusSelfUrl","selfUrl","mediaId","meetingId","id","locusMediaRequest","sendRoapAnswer","ANSWER","sdps","sdp","sendRoapError","ERROR","errorType","sendRoapMediaRequest","tieBreaker","OFFER","headers","sendEmptyMediaId","preferTranscoding","isMultistream","ipVersion","MeetingUtil","getIpVersion","_ref","_mediaConnections$","locus","mediaConnections","updateMediaConnections","roapAnswer","remoteSdp","JSON","parse","_remoteSdp$roapMessag","answerSeq","errorCause","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ROAP_HTTP_RESPONSE_MISSING","doTurnDiscovery","isReconnecting","isForced","generateTurnDiscoveryRequestMessage","handleTurnDiscoveryHttpResponse","httpResponse","abortTurnDiscovery","abort","StatelessWebexPlugin"],"sources":["index.ts"],"sourcesContent":["// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport {ROAP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport RoapRequest from './request';\nimport TurnDiscovery, {TurnDiscoveryResult} from './turnDiscovery';\nimport Meeting from '../meeting';\nimport MeetingUtil from '../meeting/util';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nexport {\n type TurnDiscoveryResult,\n type TurnServerInfo,\n type TurnDiscoverySkipReason,\n} from './turnDiscovery';\n\n/**\n * Roap options\n * @typedef {Object} RoapOptions\n * @property {String} sdp\n * @property {Meeting} meeting\n * @property {Number} seq\n * @property {Number} tieBreaker\n * @property {Boolean} reconnect\n */\n\n/**\n * @typedef {Object} SeqOptions\n * @property {String} correlationId\n * @property {String} mediaId\n * @property {Number} seq\n */\n\n/**\n * @class Roap\n * @export\n * @private\n */\nexport default class Roap extends StatelessWebexPlugin {\n attrs: any;\n lastRoapOffer: any;\n options: any;\n roapHandler: any;\n roapRequest: any;\n turnDiscovery: TurnDiscovery;\n\n /**\n *\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n super({}, options);\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof Roap\n */\n this.attrs = attrs;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof Roap\n */\n this.options = options;\n /**\n * The Roap Request Server Proxy Object\n * @instance\n * @type {RoapRequest}\n * @private\n * @memberof Roap\n */\n // @ts-ignore\n this.roapRequest = new RoapRequest({}, options);\n\n this.turnDiscovery = new TurnDiscovery(this.roapRequest);\n }\n\n /**\n *\n * @param {SeqOptions} options\n * @returns {null}\n * @memberof Roap\n */\n public sendRoapOK(options: any) {\n return Promise.resolve().then(() => {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.OK,\n version: ROAP.ROAP_VERSION,\n seq: options.seq,\n };\n\n LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sending with seq ${options.seq}`);\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n meetingId: meeting.id,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(() => {\n LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sent with seq ${options.seq}`);\n });\n });\n }\n\n /**\n * Sends a ROAP answer...\n * @param {SeqOptions} options\n * @param {Boolean} options.audioMuted\n * @param {Boolean} options.videoMuted\n * @returns {Promise}\n * @memberof Roap\n */\n public sendRoapAnswer(options: any) {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.ANSWER,\n sdps: [options.sdp],\n version: ROAP.ROAP_VERSION,\n seq: options.seq,\n };\n\n return this.roapRequest.sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n meetingId: meeting.id,\n locusMediaRequest: meeting.locusMediaRequest,\n });\n }\n\n /**\n * Sends a ROAP error...\n * @param {Object} options\n * @returns {Promise}\n * @memberof Roap\n */\n sendRoapError(options) {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.ERROR,\n version: ROAP.ROAP_VERSION,\n errorType: options.errorType,\n seq: options.seq,\n };\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n meetingId: meeting.id,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(() => {\n LoggerProxy.logger.log(\n `Roap:index#sendRoapError --> ROAP ERROR sent with seq ${options.seq}`\n );\n });\n }\n\n /**\n * sends a roap media request\n * @param {RoapOptions} options\n * @returns {Promise}\n * @memberof Roap\n */\n sendRoapMediaRequest(options: any) {\n const {meeting, seq, sdp, tieBreaker} = options;\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.OFFER,\n sdps: [sdp],\n version: ROAP.ROAP_VERSION,\n seq,\n tieBreaker,\n headers: ['includeAnswerInHttpResponse', 'noOkInTransaction'],\n };\n\n // The only time we want to send an empty media id is when we are reconnecting, because this way we tell Locus\n // that it needs to create a new confluence, but when reconnecting we always send TURN_DISCOVERY_REQUEST first,\n // so we don't need to ever send an empty media id here\n const sendEmptyMediaId = false;\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: sendEmptyMediaId ? '' : meeting.mediaId,\n meetingId: meeting.id,\n preferTranscoding: !meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n ipVersion: MeetingUtil.getIpVersion(meeting.webex),\n })\n .then(({locus, mediaConnections}) => {\n if (mediaConnections) {\n meeting.updateMediaConnections(mediaConnections);\n }\n\n let roapAnswer;\n\n if (mediaConnections?.[0]?.remoteSdp) {\n const remoteSdp = JSON.parse(mediaConnections[0].remoteSdp);\n\n if (remoteSdp.roapMessage) {\n const {\n seq: answerSeq,\n messageType,\n sdps,\n errorType,\n errorCause,\n headers,\n } = remoteSdp.roapMessage;\n\n roapAnswer = {\n seq: answerSeq,\n messageType,\n sdp: sdps[0],\n errorType,\n errorCause,\n headers,\n };\n }\n }\n\n if (!roapAnswer) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_HTTP_RESPONSE_MISSING, {\n correlationId: meeting.correlationId,\n messageType: 'ANSWER',\n isMultistream: meeting.isMultistream,\n });\n }\n\n return {locus, roapAnswer};\n });\n }\n\n /**\n * Performs a TURN server discovery procedure, which involves exchanging\n * some roap messages with the server. This exchange has to be done before\n * any other roap messages are sent\n *\n * @param {Meeting} meeting\n * @param {Boolean} isReconnecting should be set to true if this is a new\n * media connection just after a reconnection\n * @param {Boolean} [isForced]\n * @returns {Promise}\n */\n doTurnDiscovery(\n meeting: Meeting,\n isReconnecting: boolean,\n isForced?: boolean\n ): Promise<TurnDiscoveryResult> {\n return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting, isForced);\n }\n\n generateTurnDiscoveryRequestMessage(meeting: Meeting, isForced: boolean) {\n return this.turnDiscovery.generateTurnDiscoveryRequestMessage(meeting, isForced);\n }\n\n handleTurnDiscoveryHttpResponse(meeting: Meeting, httpResponse: object) {\n return this.turnDiscovery.handleTurnDiscoveryHttpResponse(meeting, httpResponse);\n }\n\n abortTurnDiscovery() {\n return this.turnDiscovery.abort();\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_webexCore","require","_constants","_loggerProxy","_interopRequireDefault","_request","_turnDiscovery","_metrics","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Roap","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","roapRequest","RoapRequest","turnDiscovery","TurnDiscovery","_createClass2","key","value","sendRoapOK","_this2","_promise","resolve","then","meeting","webex","meetings","meetingCollection","getByKey","correlationId","roapMessage","messageType","ROAP","ROAP_TYPES","OK","version","ROAP_VERSION","seq","LoggerProxy","logger","log","concat","sendRoap","locusSelfUrl","selfUrl","mediaId","isMultistream","locusMediaRequest","sendRoapAnswer","ANSWER","sdps","sdp","sendRoapError","ERROR","errorType","sendRoapMediaRequest","tieBreaker","OFFER","headers","sendEmptyMediaId","preferTranscoding","_ref","_mediaConnections$","locus","mediaConnections","updateMediaConnections","roapAnswer","remoteSdp","JSON","parse","_remoteSdp$roapMessag","answerSeq","errorCause","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ROAP_HTTP_RESPONSE_MISSING","doTurnDiscovery","isReconnecting","isForced","generateTurnDiscoveryRequestMessage","handleTurnDiscoveryHttpResponse","httpResponse","abortTurnDiscovery","abort","StatelessWebexPlugin"],"sources":["index.ts"],"sourcesContent":["// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport {ROAP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport RoapRequest from './request';\nimport TurnDiscovery, {TurnDiscoveryResult} from './turnDiscovery';\nimport Meeting from '../meeting';\nimport MeetingUtil from '../meeting/util';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nexport {\n type TurnDiscoveryResult,\n type TurnServerInfo,\n type TurnDiscoverySkipReason,\n} from './turnDiscovery';\n\n/**\n * Roap options\n * @typedef {Object} RoapOptions\n * @property {String} sdp\n * @property {Meeting} meeting\n * @property {Number} seq\n * @property {Number} tieBreaker\n * @property {Boolean} reconnect\n */\n\n/**\n * @typedef {Object} SeqOptions\n * @property {String} correlationId\n * @property {String} mediaId\n * @property {Number} seq\n */\n\n/**\n * @class Roap\n * @export\n * @private\n */\nexport default class Roap extends StatelessWebexPlugin {\n attrs: any;\n lastRoapOffer: any;\n options: any;\n roapHandler: any;\n roapRequest: any;\n turnDiscovery: TurnDiscovery;\n\n /**\n *\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n super({}, options);\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof Roap\n */\n this.attrs = attrs;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof Roap\n */\n this.options = options;\n /**\n * The Roap Request Server Proxy Object\n * @instance\n * @type {RoapRequest}\n * @private\n * @memberof Roap\n */\n // @ts-ignore\n this.roapRequest = new RoapRequest({}, options);\n\n this.turnDiscovery = new TurnDiscovery(this.roapRequest);\n }\n\n /**\n *\n * @param {SeqOptions} options\n * @returns {null}\n * @memberof Roap\n */\n public sendRoapOK(options: any) {\n return Promise.resolve().then(() => {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.OK,\n version: ROAP.ROAP_VERSION,\n seq: options.seq,\n };\n\n LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sending with seq ${options.seq}`);\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n isMultistream: meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(() => {\n LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sent with seq ${options.seq}`);\n });\n });\n }\n\n /**\n * Sends a ROAP answer...\n * @param {SeqOptions} options\n * @param {Boolean} options.audioMuted\n * @param {Boolean} options.videoMuted\n * @returns {Promise}\n * @memberof Roap\n */\n public sendRoapAnswer(options: any) {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.ANSWER,\n sdps: [options.sdp],\n version: ROAP.ROAP_VERSION,\n seq: options.seq,\n };\n\n return this.roapRequest.sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n isMultistream: meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n });\n }\n\n /**\n * Sends a ROAP error...\n * @param {Object} options\n * @returns {Promise}\n * @memberof Roap\n */\n sendRoapError(options) {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.ERROR,\n version: ROAP.ROAP_VERSION,\n errorType: options.errorType,\n seq: options.seq,\n };\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n isMultistream: meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(() => {\n LoggerProxy.logger.log(\n `Roap:index#sendRoapError --> ROAP ERROR sent with seq ${options.seq}`\n );\n });\n }\n\n /**\n * sends a roap media request\n * @param {RoapOptions} options\n * @returns {Promise}\n * @memberof Roap\n */\n sendRoapMediaRequest(options: any) {\n const {meeting, seq, sdp, tieBreaker} = options;\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.OFFER,\n sdps: [sdp],\n version: ROAP.ROAP_VERSION,\n seq,\n tieBreaker,\n headers: ['includeAnswerInHttpResponse', 'noOkInTransaction'],\n };\n\n // The only time we want to send an empty media id is when we are reconnecting, because this way we tell Locus\n // that it needs to create a new confluence, but when reconnecting we always send TURN_DISCOVERY_REQUEST first,\n // so we don't need to ever send an empty media id here\n const sendEmptyMediaId = false;\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: sendEmptyMediaId ? '' : meeting.mediaId,\n isMultistream: meeting.isMultistream,\n preferTranscoding: !meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(({locus, mediaConnections}) => {\n if (mediaConnections) {\n meeting.updateMediaConnections(mediaConnections);\n }\n\n let roapAnswer;\n\n if (mediaConnections?.[0]?.remoteSdp) {\n const remoteSdp = JSON.parse(mediaConnections[0].remoteSdp);\n\n if (remoteSdp.roapMessage) {\n const {\n seq: answerSeq,\n messageType,\n sdps,\n errorType,\n errorCause,\n headers,\n } = remoteSdp.roapMessage;\n\n if (messageType === ROAP.ROAP_TYPES.ANSWER) {\n roapAnswer = {\n seq: answerSeq,\n messageType,\n sdp: sdps[0],\n errorType,\n errorCause,\n headers,\n };\n }\n }\n }\n\n if (!roapAnswer) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_HTTP_RESPONSE_MISSING, {\n correlationId: meeting.correlationId,\n messageType: 'ANSWER',\n isMultistream: meeting.isMultistream,\n });\n }\n\n return {locus, roapAnswer};\n });\n }\n\n /**\n * Performs a TURN server discovery procedure, which involves exchanging\n * some roap messages with the server. This exchange has to be done before\n * any other roap messages are sent\n *\n * @param {Meeting} meeting\n * @param {Boolean} isReconnecting should be set to true if this is a new\n * media connection just after a reconnection\n * @param {Boolean} [isForced]\n * @returns {Promise}\n */\n doTurnDiscovery(\n meeting: Meeting,\n isReconnecting: boolean,\n isForced?: boolean\n ): Promise<TurnDiscoveryResult> {\n return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting, isForced);\n }\n\n generateTurnDiscoveryRequestMessage(meeting: Meeting, isForced: boolean) {\n return this.turnDiscovery.generateTurnDiscoveryRequestMessage(meeting, isForced);\n }\n\n handleTurnDiscoveryHttpResponse(meeting: Meeting, httpResponse: object) {\n return this.turnDiscovery.handleTurnDiscoveryHttpResponse(meeting, httpResponse);\n }\n\n abortTurnDiscovery() {\n return this.turnDiscovery.abort();\n }\n}\n"],"mappings":"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"}
|