@webex/calling 3.8.0 → 3.8.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallHistory/CallHistory.js +100 -63
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +115 -19
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallHistory/constants.js +9 -1
- package/dist/CallHistory/constants.js.map +1 -1
- package/dist/CallSettings/CallSettings.js +46 -13
- package/dist/CallSettings/CallSettings.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.js +62 -18
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +70 -7
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.js +153 -103
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.test.js +52 -15
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/constants.js +15 -1
- package/dist/CallSettings/constants.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +220 -159
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +53 -24
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +251 -189
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +96 -41
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +73 -48
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +96 -37
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/constants.js +105 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +47 -18
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +2 -2
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +359 -297
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +561 -163
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +156 -102
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +197 -49
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Contacts/constants.js +11 -1
- package/dist/Contacts/constants.js.map +1 -1
- package/dist/Errors/types.js +2 -0
- package/dist/Errors/types.js.map +1 -1
- package/dist/Events/impl/index.js +1 -1
- package/dist/Events/impl/index.js.map +1 -1
- package/dist/Metrics/index.js +102 -41
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +10 -4
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +4 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +154 -91
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.test.js +99 -19
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.js +105 -54
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.test.js +127 -17
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/Voicemail.js +198 -79
- package/dist/Voicemail/Voicemail.js.map +1 -1
- package/dist/Voicemail/Voicemail.test.js +188 -23
- package/dist/Voicemail/Voicemail.test.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.js +277 -161
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.test.js +268 -10
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/constants.js +25 -1
- package/dist/Voicemail/constants.js.map +1 -1
- package/dist/Voicemail/types.js.map +1 -1
- package/dist/common/Utils.js +168 -104
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +199 -35
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/constants.js +2 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/testUtil.js +3 -0
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +32 -13
- package/dist/module/CallHistory/constants.js +6 -0
- package/dist/module/CallSettings/CallSettings.js +36 -3
- package/dist/module/CallSettings/UcmBackendConnector.js +50 -5
- package/dist/module/CallSettings/WxCallBackendConnector.js +54 -18
- package/dist/module/CallSettings/constants.js +12 -0
- package/dist/module/CallingClient/CallingClient.js +54 -16
- package/dist/module/CallingClient/calling/call.js +172 -121
- package/dist/module/CallingClient/calling/callManager.js +51 -26
- package/dist/module/CallingClient/constants.js +102 -2
- package/dist/module/CallingClient/line/index.js +37 -8
- package/dist/module/CallingClient/registration/register.js +103 -64
- package/dist/module/Contacts/ContactsClient.js +65 -21
- package/dist/module/Contacts/constants.js +10 -0
- package/dist/module/Errors/types.js +2 -0
- package/dist/module/Events/impl/index.js +1 -1
- package/dist/module/Metrics/index.js +57 -2
- package/dist/module/Metrics/types.js +3 -0
- package/dist/module/Voicemail/BroadworksBackendConnector.js +66 -17
- package/dist/module/Voicemail/UcmBackendConnector.js +51 -11
- package/dist/module/Voicemail/Voicemail.js +109 -9
- package/dist/module/Voicemail/WxCallBackendConnector.js +67 -18
- package/dist/module/Voicemail/constants.js +21 -0
- package/dist/module/common/Utils.js +51 -12
- package/dist/module/common/constants.js +1 -0
- package/dist/module/common/testUtil.js +3 -0
- package/dist/module/index.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallHistory/constants.d.ts +6 -0
- package/dist/types/CallHistory/constants.d.ts.map +1 -1
- package/dist/types/CallSettings/CallSettings.d.ts.map +1 -1
- package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/CallSettings/constants.d.ts +12 -0
- package/dist/types/CallSettings/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts +2 -3
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +102 -2
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +3 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +1 -0
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
- package/dist/types/Contacts/constants.d.ts +10 -0
- package/dist/types/Contacts/constants.d.ts.map +1 -1
- package/dist/types/Errors/types.d.ts +2 -0
- package/dist/types/Errors/types.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +7 -2
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +11 -2
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/Voicemail.d.ts +1 -1
- package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts +3 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/constants.d.ts +21 -0
- package/dist/types/Voicemail/constants.d.ts.map +1 -1
- package/dist/types/Voicemail/types.d.ts +1 -1
- package/dist/types/Voicemail/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +4 -4
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/constants.d.ts +1 -0
- package/dist/types/common/constants.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +3 -0
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +12 -0
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -17,7 +17,8 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/
|
|
|
17
17
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
18
18
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
19
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
20
|
-
var _constants = require("
|
|
20
|
+
var _constants = require("../../common/constants");
|
|
21
|
+
var _constants2 = require("../constants");
|
|
21
22
|
var _types = require("../../Events/types");
|
|
22
23
|
var _impl = require("../../Events/impl");
|
|
23
24
|
var _SDKConnector = _interopRequireDefault(require("../../SDKConnector"));
|
|
@@ -55,6 +56,10 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
55
56
|
* @param destination -.
|
|
56
57
|
*/
|
|
57
58
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createCall", function (direction, deviceId, lineId, destination) {
|
|
59
|
+
_Logger.default.info("".concat(_constants.METHOD_START_MESSAGE, " with ").concat(direction, ", ").concat(deviceId, " and ").concat(lineId), {
|
|
60
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
61
|
+
method: _constants2.METHODS.CREATE_CALL
|
|
62
|
+
});
|
|
58
63
|
_Logger.default.log('Creating call object', {});
|
|
59
64
|
var newCall = (0, _call3.createCall)(_this.activeMobiusUrl, _this.webex, direction, deviceId, lineId, function (correlationId) {
|
|
60
65
|
delete _this.callCollection[correlationId];
|
|
@@ -63,6 +68,10 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
63
68
|
if (activeCalls === 0) {
|
|
64
69
|
/* Notify CallingClient when all calls are cleared. */
|
|
65
70
|
_this.emit(_types.CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED);
|
|
71
|
+
_Logger.default.log('All calls have been cleared', {
|
|
72
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
73
|
+
method: _constants2.METHODS.CREATE_CALL
|
|
74
|
+
});
|
|
66
75
|
}
|
|
67
76
|
}, _this.serviceIndicator, destination);
|
|
68
77
|
_this.callCollection[newCall.getCorrelationId()] = newCall;
|
|
@@ -104,6 +113,10 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
104
113
|
*/
|
|
105
114
|
function updateActiveMobius(url) {
|
|
106
115
|
this.activeMobiusUrl = url;
|
|
116
|
+
_Logger.default.log("Successfully updated active Mobius URL to: ".concat(url), {
|
|
117
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
118
|
+
method: _constants2.METHODS.UPDATE_ACTIVE_MOBIUS
|
|
119
|
+
});
|
|
107
120
|
}
|
|
108
121
|
|
|
109
122
|
/**
|
|
@@ -129,6 +142,10 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
129
142
|
return _ref.apply(this, arguments);
|
|
130
143
|
};
|
|
131
144
|
}());
|
|
145
|
+
_Logger.default.info('Successfully registered listener for Mobius events', {
|
|
146
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
147
|
+
method: _constants2.METHODS.REGISTER_SESSIONS_LISTENER
|
|
148
|
+
});
|
|
132
149
|
}
|
|
133
150
|
|
|
134
151
|
/**
|
|
@@ -142,6 +159,10 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
142
159
|
key: "dequeueWsEvents",
|
|
143
160
|
value: function dequeueWsEvents(event) {
|
|
144
161
|
var _this3 = this;
|
|
162
|
+
_Logger.default.info("".concat(_constants.METHOD_START_MESSAGE, " with event ").concat(event), {
|
|
163
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
164
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
165
|
+
});
|
|
145
166
|
var mobiusEvent = event;
|
|
146
167
|
var _mobiusEvent$data = mobiusEvent.data,
|
|
147
168
|
callId = _mobiusEvent$data.callId,
|
|
@@ -150,8 +171,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
150
171
|
case _types3.MobiusEventType.CALL_SETUP:
|
|
151
172
|
{
|
|
152
173
|
_Logger.default.log("Received call Setup message for call: ".concat(callId), {
|
|
153
|
-
file:
|
|
154
|
-
method:
|
|
174
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
175
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
155
176
|
});
|
|
156
177
|
/* Check whether MidCall or not */
|
|
157
178
|
if (mobiusEvent.data.midCallService) {
|
|
@@ -160,9 +181,9 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
160
181
|
if (call) {
|
|
161
182
|
call.handleMidCallEvent(midCallEvent);
|
|
162
183
|
} else {
|
|
163
|
-
_Logger.default.
|
|
164
|
-
file:
|
|
165
|
-
method:
|
|
184
|
+
_Logger.default.info("Dropping midcall event of type: ".concat(midCallEvent.eventType, " as it doesn't match with any existing call"), {
|
|
185
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
186
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
166
187
|
});
|
|
167
188
|
}
|
|
168
189
|
});
|
|
@@ -184,28 +205,28 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
184
205
|
var lineId = this.getLineId(mobiusEvent.data.deviceId);
|
|
185
206
|
newCall = this.createCall(_types2.CallDirection.INBOUND, mobiusEvent.data.deviceId, lineId, {});
|
|
186
207
|
_Logger.default.log("New incoming call created with correlationId from Call Setup message: ".concat(newCall.getCorrelationId()), {
|
|
187
|
-
file:
|
|
188
|
-
method:
|
|
208
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
209
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
189
210
|
});
|
|
190
211
|
newCall.setCallId(callId);
|
|
191
212
|
if (mobiusEvent.data.broadworksCorrelationInfo) {
|
|
192
|
-
_Logger.default.
|
|
193
|
-
file:
|
|
194
|
-
method:
|
|
213
|
+
_Logger.default.info("Found broadworksCorrelationInfo: ".concat(mobiusEvent.data.broadworksCorrelationInfo), {
|
|
214
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
215
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
195
216
|
});
|
|
196
217
|
newCall.setBroadworksCorrelationInfo(mobiusEvent.data.broadworksCorrelationInfo);
|
|
197
218
|
}
|
|
198
219
|
} else {
|
|
199
220
|
_Logger.default.info("Found the call Object with a matching callId: ".concat(callId, " from our records with correlationId: ").concat(newId), {
|
|
200
|
-
file:
|
|
201
|
-
method:
|
|
221
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
222
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
202
223
|
});
|
|
203
224
|
newCall = this.getCall(newId);
|
|
204
225
|
}
|
|
205
226
|
if (mobiusEvent.data.callerId) {
|
|
206
227
|
_Logger.default.info('Processing Caller-Id data', {
|
|
207
|
-
file:
|
|
208
|
-
method:
|
|
228
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
229
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
209
230
|
});
|
|
210
231
|
newCall.startCallerIdResolution(mobiusEvent.data.callerId);
|
|
211
232
|
}
|
|
@@ -221,8 +242,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
221
242
|
case _types3.MobiusEventType.CALL_PROGRESS:
|
|
222
243
|
{
|
|
223
244
|
_Logger.default.log("Received call progress mobiusEvent for call: ".concat(correlationId), {
|
|
224
|
-
file:
|
|
225
|
-
method:
|
|
245
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
246
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
226
247
|
});
|
|
227
248
|
var call = this.getCall(correlationId);
|
|
228
249
|
call.sendCallStateMachineEvt({
|
|
@@ -234,8 +255,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
234
255
|
case _types3.MobiusEventType.CALL_MEDIA:
|
|
235
256
|
{
|
|
236
257
|
_Logger.default.log("Received call media mobiusEvent for call: ".concat(correlationId), {
|
|
237
|
-
file:
|
|
238
|
-
method:
|
|
258
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
259
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
239
260
|
});
|
|
240
261
|
var activeCall;
|
|
241
262
|
if (correlationId) {
|
|
@@ -254,8 +275,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
254
275
|
/* Call.Media arrived after Call.Setup but the correlationId was Null. */
|
|
255
276
|
|
|
256
277
|
_Logger.default.info("Found the call Object with a matching callId: ".concat(callId, " from our records with correlationId: ").concat(_newId), {
|
|
257
|
-
file:
|
|
258
|
-
method:
|
|
278
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
279
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
259
280
|
});
|
|
260
281
|
activeCall = this.getCall(_newId);
|
|
261
282
|
} else {
|
|
@@ -264,8 +285,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
264
285
|
var _lineId = this.getLineId(mobiusEvent.data.deviceId);
|
|
265
286
|
activeCall = this.createCall(_types2.CallDirection.INBOUND, mobiusEvent.data.deviceId, _lineId, {});
|
|
266
287
|
_Logger.default.log("New incoming call created with correlationId from ROAP Message: ".concat(activeCall.getCorrelationId()), {
|
|
267
|
-
file:
|
|
268
|
-
method:
|
|
288
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
289
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
269
290
|
});
|
|
270
291
|
activeCall.setCallId(callId);
|
|
271
292
|
}
|
|
@@ -275,20 +296,20 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
275
296
|
/* Only Handle if the call is present */
|
|
276
297
|
|
|
277
298
|
_Logger.default.info("SDP from mobius ".concat((_mobiusEvent$data$mes = mobiusEvent.data.message) === null || _mobiusEvent$data$mes === void 0 ? void 0 : _mobiusEvent$data$mes.sdp), {
|
|
278
|
-
file:
|
|
279
|
-
method:
|
|
299
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
300
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
280
301
|
});
|
|
281
302
|
_Logger.default.log("ROAP message from mobius with type: ".concat((_mobiusEvent$data$mes2 = mobiusEvent.data.message) === null || _mobiusEvent$data$mes2 === void 0 ? void 0 : _mobiusEvent$data$mes2.messageType, ", seq: ").concat((_mobiusEvent$data$mes3 = mobiusEvent.data.message) === null || _mobiusEvent$data$mes3 === void 0 ? void 0 : _mobiusEvent$data$mes3.seq, " , version: ").concat((_mobiusEvent$data$mes4 = mobiusEvent.data.message) === null || _mobiusEvent$data$mes4 === void 0 ? void 0 : _mobiusEvent$data$mes4.version), {
|
|
282
|
-
file:
|
|
283
|
-
method:
|
|
303
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
304
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
284
305
|
});
|
|
285
306
|
var mediaState = (_mobiusEvent$data$mes5 = mobiusEvent.data.message) === null || _mobiusEvent$data$mes5 === void 0 ? void 0 : _mobiusEvent$data$mes5.messageType;
|
|
286
307
|
switch (mediaState) {
|
|
287
308
|
case _types3.MediaState.OFFER:
|
|
288
309
|
{
|
|
289
310
|
_Logger.default.log('Received OFFER', {
|
|
290
|
-
file:
|
|
291
|
-
method:
|
|
311
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
312
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
292
313
|
});
|
|
293
314
|
activeCall.sendMediaStateMachineEvt({
|
|
294
315
|
type: 'E_RECV_ROAP_OFFER',
|
|
@@ -299,8 +320,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
299
320
|
case _types3.MediaState.ANSWER:
|
|
300
321
|
{
|
|
301
322
|
_Logger.default.log('Received ANSWER', {
|
|
302
|
-
file:
|
|
303
|
-
method:
|
|
323
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
324
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
304
325
|
});
|
|
305
326
|
activeCall.sendMediaStateMachineEvt({
|
|
306
327
|
type: 'E_RECV_ROAP_ANSWER',
|
|
@@ -311,8 +332,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
311
332
|
case _types3.MediaState.OFFER_REQUEST:
|
|
312
333
|
{
|
|
313
334
|
_Logger.default.log('Received OFFER_REQUEST', {
|
|
314
|
-
file:
|
|
315
|
-
method:
|
|
335
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
336
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
316
337
|
});
|
|
317
338
|
activeCall.sendMediaStateMachineEvt({
|
|
318
339
|
type: 'E_RECV_ROAP_OFFER_REQUEST',
|
|
@@ -323,8 +344,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
323
344
|
case _types3.MediaState.OK:
|
|
324
345
|
{
|
|
325
346
|
_Logger.default.log('Received OK', {
|
|
326
|
-
file:
|
|
327
|
-
method:
|
|
347
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
348
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
328
349
|
});
|
|
329
350
|
var mediaOk = {
|
|
330
351
|
received: true,
|
|
@@ -339,23 +360,23 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
339
360
|
case _types3.MediaState.ERROR:
|
|
340
361
|
{
|
|
341
362
|
_Logger.default.log('Received Error...', {
|
|
342
|
-
file:
|
|
343
|
-
method:
|
|
363
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
364
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
344
365
|
});
|
|
345
366
|
break;
|
|
346
367
|
}
|
|
347
368
|
default:
|
|
348
369
|
{
|
|
349
370
|
_Logger.default.log("Unknown Media mobiusEvent: ".concat(mediaState, " "), {
|
|
350
|
-
file:
|
|
351
|
-
method:
|
|
371
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
372
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
352
373
|
});
|
|
353
374
|
}
|
|
354
375
|
}
|
|
355
376
|
} else {
|
|
356
|
-
_Logger.default.
|
|
357
|
-
file:
|
|
358
|
-
method:
|
|
377
|
+
_Logger.default.info("CorrelationId: ".concat(correlationId, " doesn't exist , discarding.."), {
|
|
378
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
379
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
359
380
|
});
|
|
360
381
|
// TODO: Maybe add a queue for these mobiusEvents per callID and handle them once the call is setup ?
|
|
361
382
|
}
|
|
@@ -365,8 +386,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
365
386
|
case _types3.MobiusEventType.CALL_CONNECTED:
|
|
366
387
|
{
|
|
367
388
|
_Logger.default.log("Received call connect for call: ".concat(correlationId), {
|
|
368
|
-
file:
|
|
369
|
-
method:
|
|
389
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
390
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
370
391
|
});
|
|
371
392
|
var _call = this.getCall(correlationId);
|
|
372
393
|
_call.sendCallStateMachineEvt({
|
|
@@ -378,8 +399,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
378
399
|
case _types3.MobiusEventType.CALL_DISCONNECTED:
|
|
379
400
|
{
|
|
380
401
|
_Logger.default.log("Received call disconnect for call: ".concat(correlationId), {
|
|
381
|
-
file:
|
|
382
|
-
method:
|
|
402
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
403
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
383
404
|
});
|
|
384
405
|
var _call2 = this.getCall(correlationId);
|
|
385
406
|
if (_call2) {
|
|
@@ -392,8 +413,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
392
413
|
default:
|
|
393
414
|
{
|
|
394
415
|
_Logger.default.log("Unknown Call Event mobiusEvent: ".concat(mobiusEvent.data.eventType), {
|
|
395
|
-
file:
|
|
396
|
-
method:
|
|
416
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
417
|
+
method: _constants2.METHODS.DEQUEUE_WS_EVENTS
|
|
397
418
|
});
|
|
398
419
|
}
|
|
399
420
|
}
|
|
@@ -406,6 +427,10 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
406
427
|
*/
|
|
407
428
|
function updateLine(deviceId, line) {
|
|
408
429
|
this.lineDict[deviceId] = line;
|
|
430
|
+
_Logger.default.log("Successfully updated line for deviceId: ".concat(deviceId), {
|
|
431
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
432
|
+
method: _constants2.METHODS.UPDATE_LINE
|
|
433
|
+
});
|
|
409
434
|
}
|
|
410
435
|
|
|
411
436
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_constants","require","_types","_impl","_SDKConnector","_interopRequireDefault","_types2","_types3","_call3","_Logger","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","callManager","CallManager","exports","_Eventing","_inherits2","_super","webex","indicator","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","direction","deviceId","lineId","destination","log","newCall","createCall","activeMobiusUrl","correlationId","callCollection","activeCalls","_keys","getActiveCalls","length","info","concat","getCorrelationId","emit","CALLING_CLIENT_EVENT_KEYS","ALL_CALLS_CLEARED","serviceIndicator","sdkConnector","SDKConnector","getWebex","setWebex","lineDict","listenForWsEvents","_createClass2","key","value","updateActiveMobius","url","_this2","registerListener","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_callee$","_context","prev","next","dequeueWsEvents","stop","_x","_this3","mobiusEvent","_mobiusEvent$data","data","callId","eventType","MobiusEventType","CALL_SETUP","file","CALL_MANAGER_FILE","method","midCallService","forEach","midCallEvent","getCall","handleMidCallEvent","newId","find","id","getCallId","getLineId","CallDirection","INBOUND","setCallId","broadworksCorrelationInfo","setBroadworksCorrelationInfo","callerId","startCallerIdResolution","LINE_EVENT_KEYS","INCOMING_CALL","sendCallStateMachineEvt","type","CALL_PROGRESS","CALL_MEDIA","activeCall","_mobiusEvent$data$mes","_mobiusEvent$data$mes2","_mobiusEvent$data$mes3","_mobiusEvent$data$mes4","_mobiusEvent$data$mes5","message","sdp","messageType","seq","version","mediaState","MediaState","OFFER","sendMediaStateMachineEvt","ANSWER","OFFER_REQUEST","OK","mediaOk","received","ERROR","CALL_CONNECTED","CALL_DISCONNECTED","updateLine","line","Eventing","getCallManager"],"sources":["callManager.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable valid-jsdoc */\nimport {CALL_MANAGER_FILE} from '../constants';\nimport {CALLING_CLIENT_EVENT_KEYS, CallEventTypes, LINE_EVENT_KEYS} from '../../Events/types';\nimport {Eventing} from '../../Events/impl';\nimport SDKConnector from '../../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {CallDetails, CallDirection, CorrelationId, ServiceIndicator} from '../../common/types';\nimport {\n ICall,\n ICallManager,\n MediaState,\n MidCallEvent,\n MobiusCallEvent,\n MobiusEventType,\n} from './types';\nimport {createCall} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\n\nlet callManager: ICallManager;\n\n/**\n *\n */\nexport class CallManager extends Eventing<CallEventTypes> implements ICallManager {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callCollection: Record<CorrelationId, ICall>;\n\n private activeMobiusUrl!: string;\n\n private serviceIndicator: ServiceIndicator;\n\n private lineDict: Record<string, ILine>;\n\n /**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\n constructor(webex: WebexSDK, indicator: ServiceIndicator) {\n super();\n this.sdkConnector = SDKConnector;\n this.serviceIndicator = indicator;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.lineDict = {};\n this.webex = this.sdkConnector.getWebex();\n this.callCollection = {};\n this.activeMobiusUrl = '';\n this.listenForWsEvents();\n }\n\n /**\n * @param direction -.\n * @param deviceId -.\n * @param destination -.\n */\n public createCall = (\n direction: CallDirection,\n deviceId: string,\n lineId: string,\n destination?: CallDetails\n ): ICall => {\n log.log('Creating call object', {});\n const newCall = createCall(\n this.activeMobiusUrl,\n this.webex,\n direction,\n deviceId,\n lineId,\n (correlationId: CorrelationId) => {\n delete this.callCollection[correlationId];\n const activeCalls = Object.keys(this.getActiveCalls()).length;\n\n log.info(\n `DELETE:: Deleted corelationId: ${newCall.getCorrelationId()} from CallManager, Number of call records :- ${activeCalls}`,\n {}\n );\n if (activeCalls === 0) {\n /* Notify CallingClient when all calls are cleared. */\n this.emit(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED);\n }\n },\n this.serviceIndicator,\n destination\n );\n\n this.callCollection[newCall.getCorrelationId()] = newCall;\n log.log(`New call created with correlationId: ${newCall.getCorrelationId()}`, {});\n log.info(\n `ADD:: Added corelationId: ${newCall.getCorrelationId()} to CallManager , Number of call records now:- ${\n Object.keys(this.getActiveCalls()).length\n }`,\n {}\n );\n\n return newCall;\n };\n\n /**\n * Update Active Mobius Url.\n *\n * @param url - Mobius Url.\n */\n public updateActiveMobius(url: string) {\n this.activeMobiusUrl = url;\n }\n\n /**\n * A listener for Mobius events.\n */\n private listenForWsEvents() {\n this.sdkConnector.registerListener('event:mobius', async (event) => {\n this.dequeueWsEvents(event);\n });\n }\n\n /**\n * This a Queue where Mobius Events are reported by the underlying Mercury\n * Connection. We handle the events in the order they are posted here. New call\n * Objects are generated from here.\n *\n * @param event - Mobius Events.\n */\n private dequeueWsEvents(event: unknown) {\n const mobiusEvent = event as MobiusCallEvent;\n const {callId, correlationId} = mobiusEvent.data;\n\n switch (mobiusEvent.data.eventType) {\n case MobiusEventType.CALL_SETUP: {\n log.log(`Received call Setup message for call: ${callId}`, {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n /* Check whether MidCall or not */\n if (mobiusEvent.data.midCallService) {\n mobiusEvent.data.midCallService.forEach((midCallEvent: MidCallEvent) => {\n const call = this.getCall(correlationId);\n\n if (call) {\n call.handleMidCallEvent(midCallEvent);\n } else {\n log.log(\n `Dropping midcall event of type: ${midCallEvent.eventType} as it doesn't match with any existing call`,\n {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n }\n );\n }\n });\n\n return;\n }\n /* Check if the Call.Media was processed before Call.Setup.\n * In that case , the Call Object is already created while processing\n * Media message.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n let newCall: ICall;\n\n if (!newId) {\n /* This means it's a new call ...\n * Create an incoming call object and add to our records\n */\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n newCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from Call Setup message: ${newCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n }\n );\n newCall.setCallId(callId);\n if (mobiusEvent.data.broadworksCorrelationInfo) {\n log.log(\n `Found broadworksCorrelationInfo: ${mobiusEvent.data.broadworksCorrelationInfo}`,\n {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n }\n );\n newCall.setBroadworksCorrelationInfo(mobiusEvent.data.broadworksCorrelationInfo);\n }\n } else {\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n }\n );\n newCall = this.getCall(newId);\n }\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n newCall.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n /* Signal Line */\n\n this.emit(LINE_EVENT_KEYS.INCOMING_CALL, newCall);\n\n newCall.sendCallStateMachineEvt({type: 'E_RECV_CALL_SETUP', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_PROGRESS: {\n log.log(`Received call progress mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n const call = this.getCall(correlationId);\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_PROGRESS', data: mobiusEvent.data});\n break;\n }\n case MobiusEventType.CALL_MEDIA: {\n log.log(`Received call media mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n\n let activeCall: ICall;\n\n if (correlationId) {\n /* The Call.Media message had correlation id (Except the first message) */\n activeCall = this.getCall(correlationId);\n } else {\n /* This is possibly the first Media message for the call.\n * We should scan our record to see if we can find a call with\n * this callId.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n\n if (newId) {\n /* Call.Media arrived after Call.Setup but the correlationId was Null. */\n\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n }\n );\n activeCall = this.getCall(newId);\n } else {\n /* If Call.Media arrived before Call.Setup , we create the Call Object here */\n\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n activeCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from ROAP Message: ${activeCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n }\n );\n activeCall.setCallId(callId);\n }\n }\n\n if (activeCall) {\n /* Only Handle if the call is present */\n\n log.info(`SDP from mobius ${mobiusEvent.data.message?.sdp}`, {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n log.log(\n `ROAP message from mobius with type: ${mobiusEvent.data.message?.messageType}, seq: ${mobiusEvent.data.message?.seq} , version: ${mobiusEvent.data.message?.version}`,\n {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n }\n );\n const mediaState = mobiusEvent.data.message?.messageType;\n\n switch (mediaState) {\n case MediaState.OFFER: {\n log.log('Received OFFER', {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.ANSWER: {\n log.log('Received ANSWER', {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_ANSWER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OFFER_REQUEST: {\n log.log('Received OFFER_REQUEST', {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER_REQUEST',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OK: {\n log.log('Received OK', {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n const mediaOk = {\n received: true,\n message: mobiusEvent.data.message,\n };\n\n activeCall.sendMediaStateMachineEvt({\n type: 'E_ROAP_OK',\n data: mediaOk,\n });\n break;\n }\n case MediaState.ERROR: {\n log.log('Received Error...', {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n break;\n }\n default: {\n log.log(`Unknown Media mobiusEvent: ${mediaState} `, {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n }\n }\n } else {\n log.log(`CorrelationId: ${correlationId} doesn't exist , discarding..`, {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n // TODO: Maybe add a queue for these mobiusEvents per callID and handle them once the call is setup ?\n }\n break;\n }\n case MobiusEventType.CALL_CONNECTED: {\n log.log(`Received call connect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n const call = this.getCall(correlationId);\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_CONNECT', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_DISCONNECTED: {\n log.log(`Received call disconnect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n const call = this.getCall(correlationId);\n\n if (call) {\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n }\n break;\n }\n default: {\n log.log(`Unknown Call Event mobiusEvent: ${mobiusEvent.data.eventType}`, {\n file: CALL_MANAGER_FILE,\n method: 'dequeueWsEvents',\n });\n }\n }\n }\n\n /**\n * @param correlationId -.\n */\n public getCall = (correlationId: CorrelationId): ICall => {\n return this.callCollection[correlationId];\n };\n\n /**\n *\n */\n public getActiveCalls = (): Record<string, ICall> => {\n return this.callCollection;\n };\n\n /**\n * Adds line instance to lineDict\n */\n public updateLine(deviceId: string, line: ILine) {\n this.lineDict[deviceId] = line;\n }\n\n /**\n * Retrieves line id\n */\n private getLineId(deviceId: string) {\n return this.lineDict[deviceId].lineId;\n }\n}\n\n/**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\nexport const getCallManager = (webex: WebexSDK, indicator: ServiceIndicator): ICallManager => {\n if (!callManager) {\n callManager = new CallManager(webex, indicator);\n }\n\n return callManager;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_constants","require","_constants2","_types","_impl","_SDKConnector","_interopRequireDefault","_types2","_types3","_call3","_Logger","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","callManager","CallManager","exports","_Eventing","_inherits2","_super","webex","indicator","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","direction","deviceId","lineId","destination","log","info","concat","METHOD_START_MESSAGE","file","CALL_MANAGER_FILE","method","METHODS","CREATE_CALL","newCall","createCall","activeMobiusUrl","correlationId","callCollection","activeCalls","_keys","getActiveCalls","length","getCorrelationId","emit","CALLING_CLIENT_EVENT_KEYS","ALL_CALLS_CLEARED","serviceIndicator","sdkConnector","SDKConnector","getWebex","setWebex","lineDict","listenForWsEvents","_createClass2","key","value","updateActiveMobius","url","UPDATE_ACTIVE_MOBIUS","_this2","registerListener","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_callee$","_context","prev","next","dequeueWsEvents","stop","_x","REGISTER_SESSIONS_LISTENER","_this3","DEQUEUE_WS_EVENTS","mobiusEvent","_mobiusEvent$data","data","callId","eventType","MobiusEventType","CALL_SETUP","midCallService","forEach","midCallEvent","getCall","handleMidCallEvent","newId","find","id","getCallId","getLineId","CallDirection","INBOUND","setCallId","broadworksCorrelationInfo","setBroadworksCorrelationInfo","callerId","startCallerIdResolution","LINE_EVENT_KEYS","INCOMING_CALL","sendCallStateMachineEvt","type","CALL_PROGRESS","CALL_MEDIA","activeCall","_mobiusEvent$data$mes","_mobiusEvent$data$mes2","_mobiusEvent$data$mes3","_mobiusEvent$data$mes4","_mobiusEvent$data$mes5","message","sdp","messageType","seq","version","mediaState","MediaState","OFFER","sendMediaStateMachineEvt","ANSWER","OFFER_REQUEST","OK","mediaOk","received","ERROR","CALL_CONNECTED","CALL_DISCONNECTED","updateLine","line","UPDATE_LINE","Eventing","getCallManager"],"sources":["callManager.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable valid-jsdoc */\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {CALL_MANAGER_FILE, METHODS} from '../constants';\nimport {CALLING_CLIENT_EVENT_KEYS, CallEventTypes, LINE_EVENT_KEYS} from '../../Events/types';\nimport {Eventing} from '../../Events/impl';\nimport SDKConnector from '../../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {CallDetails, CallDirection, CorrelationId, ServiceIndicator} from '../../common/types';\nimport {\n ICall,\n ICallManager,\n MediaState,\n MidCallEvent,\n MobiusCallEvent,\n MobiusEventType,\n} from './types';\nimport {createCall} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\n\nlet callManager: ICallManager;\n\n/**\n *\n */\nexport class CallManager extends Eventing<CallEventTypes> implements ICallManager {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callCollection: Record<CorrelationId, ICall>;\n\n private activeMobiusUrl!: string;\n\n private serviceIndicator: ServiceIndicator;\n\n private lineDict: Record<string, ILine>;\n\n /**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\n constructor(webex: WebexSDK, indicator: ServiceIndicator) {\n super();\n this.sdkConnector = SDKConnector;\n this.serviceIndicator = indicator;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.lineDict = {};\n this.webex = this.sdkConnector.getWebex();\n this.callCollection = {};\n this.activeMobiusUrl = '';\n this.listenForWsEvents();\n }\n\n /**\n * @param direction -.\n * @param deviceId -.\n * @param destination -.\n */\n public createCall = (\n direction: CallDirection,\n deviceId: string,\n lineId: string,\n destination?: CallDetails\n ): ICall => {\n log.info(`${METHOD_START_MESSAGE} with ${direction}, ${deviceId} and ${lineId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n log.log('Creating call object', {});\n const newCall = createCall(\n this.activeMobiusUrl,\n this.webex,\n direction,\n deviceId,\n lineId,\n (correlationId: CorrelationId) => {\n delete this.callCollection[correlationId];\n const activeCalls = Object.keys(this.getActiveCalls()).length;\n\n log.info(\n `DELETE:: Deleted corelationId: ${newCall.getCorrelationId()} from CallManager, Number of call records :- ${activeCalls}`,\n {}\n );\n if (activeCalls === 0) {\n /* Notify CallingClient when all calls are cleared. */\n this.emit(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED);\n log.log('All calls have been cleared', {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n }\n },\n this.serviceIndicator,\n destination\n );\n\n this.callCollection[newCall.getCorrelationId()] = newCall;\n log.log(`New call created with correlationId: ${newCall.getCorrelationId()}`, {});\n log.info(\n `ADD:: Added corelationId: ${newCall.getCorrelationId()} to CallManager , Number of call records now:- ${\n Object.keys(this.getActiveCalls()).length\n }`,\n {}\n );\n\n return newCall;\n };\n\n /**\n * Update Active Mobius Url.\n *\n * @param url - Mobius Url.\n */\n public updateActiveMobius(url: string) {\n this.activeMobiusUrl = url;\n log.log(`Successfully updated active Mobius URL to: ${url}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n });\n }\n\n /**\n * A listener for Mobius events.\n */\n private listenForWsEvents() {\n this.sdkConnector.registerListener('event:mobius', async (event) => {\n this.dequeueWsEvents(event);\n });\n log.info('Successfully registered listener for Mobius events', {\n file: CALL_MANAGER_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n }\n\n /**\n * This a Queue where Mobius Events are reported by the underlying Mercury\n * Connection. We handle the events in the order they are posted here. New call\n * Objects are generated from here.\n *\n * @param event - Mobius Events.\n */\n private dequeueWsEvents(event: unknown) {\n log.info(`${METHOD_START_MESSAGE} with event ${event}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mobiusEvent = event as MobiusCallEvent;\n const {callId, correlationId} = mobiusEvent.data;\n\n switch (mobiusEvent.data.eventType) {\n case MobiusEventType.CALL_SETUP: {\n log.log(`Received call Setup message for call: ${callId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n /* Check whether MidCall or not */\n if (mobiusEvent.data.midCallService) {\n mobiusEvent.data.midCallService.forEach((midCallEvent: MidCallEvent) => {\n const call = this.getCall(correlationId);\n\n if (call) {\n call.handleMidCallEvent(midCallEvent);\n } else {\n log.info(\n `Dropping midcall event of type: ${midCallEvent.eventType} as it doesn't match with any existing call`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n }\n });\n\n return;\n }\n /* Check if the Call.Media was processed before Call.Setup.\n * In that case , the Call Object is already created while processing\n * Media message.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n let newCall: ICall;\n\n if (!newId) {\n /* This means it's a new call ...\n * Create an incoming call object and add to our records\n */\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n newCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from Call Setup message: ${newCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setCallId(callId);\n if (mobiusEvent.data.broadworksCorrelationInfo) {\n log.info(\n `Found broadworksCorrelationInfo: ${mobiusEvent.data.broadworksCorrelationInfo}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setBroadworksCorrelationInfo(mobiusEvent.data.broadworksCorrelationInfo);\n }\n } else {\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall = this.getCall(newId);\n }\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n newCall.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n /* Signal Line */\n\n this.emit(LINE_EVENT_KEYS.INCOMING_CALL, newCall);\n\n newCall.sendCallStateMachineEvt({type: 'E_RECV_CALL_SETUP', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_PROGRESS: {\n log.log(`Received call progress mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_PROGRESS', data: mobiusEvent.data});\n break;\n }\n case MobiusEventType.CALL_MEDIA: {\n log.log(`Received call media mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n\n let activeCall: ICall;\n\n if (correlationId) {\n /* The Call.Media message had correlation id (Except the first message) */\n activeCall = this.getCall(correlationId);\n } else {\n /* This is possibly the first Media message for the call.\n * We should scan our record to see if we can find a call with\n * this callId.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n\n if (newId) {\n /* Call.Media arrived after Call.Setup but the correlationId was Null. */\n\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall = this.getCall(newId);\n } else {\n /* If Call.Media arrived before Call.Setup , we create the Call Object here */\n\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n activeCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from ROAP Message: ${activeCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall.setCallId(callId);\n }\n }\n\n if (activeCall) {\n /* Only Handle if the call is present */\n\n log.info(`SDP from mobius ${mobiusEvent.data.message?.sdp}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n log.log(\n `ROAP message from mobius with type: ${mobiusEvent.data.message?.messageType}, seq: ${mobiusEvent.data.message?.seq} , version: ${mobiusEvent.data.message?.version}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n const mediaState = mobiusEvent.data.message?.messageType;\n\n switch (mediaState) {\n case MediaState.OFFER: {\n log.log('Received OFFER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.ANSWER: {\n log.log('Received ANSWER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_ANSWER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OFFER_REQUEST: {\n log.log('Received OFFER_REQUEST', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER_REQUEST',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OK: {\n log.log('Received OK', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mediaOk = {\n received: true,\n message: mobiusEvent.data.message,\n };\n\n activeCall.sendMediaStateMachineEvt({\n type: 'E_ROAP_OK',\n data: mediaOk,\n });\n break;\n }\n case MediaState.ERROR: {\n log.log('Received Error...', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n break;\n }\n default: {\n log.log(`Unknown Media mobiusEvent: ${mediaState} `, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n } else {\n log.info(`CorrelationId: ${correlationId} doesn't exist , discarding..`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n // TODO: Maybe add a queue for these mobiusEvents per callID and handle them once the call is setup ?\n }\n break;\n }\n case MobiusEventType.CALL_CONNECTED: {\n log.log(`Received call connect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_CONNECT', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_DISCONNECTED: {\n log.log(`Received call disconnect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (call) {\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n }\n break;\n }\n default: {\n log.log(`Unknown Call Event mobiusEvent: ${mobiusEvent.data.eventType}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n }\n\n /**\n * @param correlationId -.\n */\n public getCall = (correlationId: CorrelationId): ICall => {\n return this.callCollection[correlationId];\n };\n\n /**\n *\n */\n public getActiveCalls = (): Record<string, ICall> => {\n return this.callCollection;\n };\n\n /**\n * Adds line instance to lineDict\n */\n public updateLine(deviceId: string, line: ILine) {\n this.lineDict[deviceId] = line;\n log.log(`Successfully updated line for deviceId: ${deviceId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_LINE,\n });\n }\n\n /**\n * Retrieves line id\n */\n private getLineId(deviceId: string) {\n return this.lineDict[deviceId].lineId;\n }\n}\n\n/**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\nexport const getCallManager = (webex: WebexSDK, indicator: ServiceIndicator): ICallManager => {\n if (!callManager) {\n callManager = new CallManager(webex, indicator);\n }\n\n return callManager;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAC,sBAAA,CAAAL,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAQA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,OAAA,GAAAJ,sBAAA,CAAAL,OAAA;AAA+B,SAAAU,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAN,KAAA,EAAAO,SAAA,EAAAH,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAQ,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAP,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAY,OAAA,qBAAAJ,kBAAA,oBAAAA,kBAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,kBAAA,CAAAO,OAAA,8CAAAI,CAAA,sBAlB/B,kCACA;AAoBA,IAAIC,WAAyB;;AAE7B;AACA;AACA;AAFA,IAGaC,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAAE,SAAA;EAAA,IAAAC,UAAA,CAAApB,OAAA,EAAAiB,WAAA,EAAAE,SAAA;EAAA,IAAAE,MAAA,GAAA5B,YAAA,CAAAwB,WAAA;EAatB;AACF;AACA;AACA;EACE,SAAAA,YAAYK,KAAe,EAAEC,SAA2B,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAzB,OAAA,QAAAiB,WAAA;IACxDO,KAAA,GAAAH,MAAA,CAAAP,IAAA;IAAQ,IAAAY,gBAAA,CAAA1B,OAAA,MAAA2B,uBAAA,CAAA3B,OAAA,EAAAwB,KAAA;IAAA,IAAAE,gBAAA,CAAA1B,OAAA,MAAA2B,uBAAA,CAAA3B,OAAA,EAAAwB,KAAA;IAAA,IAAAE,gBAAA,CAAA1B,OAAA,MAAA2B,uBAAA,CAAA3B,OAAA,EAAAwB,KAAA;IAAA,IAAAE,gBAAA,CAAA1B,OAAA,MAAA2B,uBAAA,CAAA3B,OAAA,EAAAwB,KAAA;IAAA,IAAAE,gBAAA,CAAA1B,OAAA,MAAA2B,uBAAA,CAAA3B,OAAA,EAAAwB,KAAA;IAAA,IAAAE,gBAAA,CAAA1B,OAAA,MAAA2B,uBAAA,CAAA3B,OAAA,EAAAwB,KAAA;IAaV;AACF;AACA;AACA;AACA;IAJE,IAAAE,gBAAA,CAAA1B,OAAA,MAAA2B,uBAAA,CAAA3B,OAAA,EAAAwB,KAAA,iBAKoB,UAClBI,SAAwB,EACxBC,QAAgB,EAChBC,MAAc,EACdC,WAAyB,EACf;MACVC,eAAG,CAACC,IAAI,IAAAC,MAAA,CAAIC,+BAAoB,YAAAD,MAAA,CAASN,SAAS,QAAAM,MAAA,CAAKL,QAAQ,WAAAK,MAAA,CAAQJ,MAAM,GAAI;QAC/EM,IAAI,EAAEC,6BAAiB;QACvBC,MAAM,EAAEC,mBAAO,CAACC;MAClB,CAAC,CAAC;MACFR,eAAG,CAACA,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;MACnC,IAAMS,OAAO,GAAG,IAAAC,iBAAU,EACxBlB,KAAA,CAAKmB,eAAe,EACpBnB,KAAA,CAAKF,KAAK,EACVM,SAAS,EACTC,QAAQ,EACRC,MAAM,EACN,UAACc,aAA4B,EAAK;QAChC,OAAOpB,KAAA,CAAKqB,cAAc,CAACD,aAAa,CAAC;QACzC,IAAME,WAAW,GAAG,IAAAC,KAAA,CAAA/C,OAAA,EAAYwB,KAAA,CAAKwB,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM;QAE7DjB,eAAG,CAACC,IAAI,mCAAAC,MAAA,CAC4BO,OAAO,CAACS,gBAAgB,CAAC,CAAC,mDAAAhB,MAAA,CAAgDY,WAAW,GACvH,CAAC,CACH,CAAC;QACD,IAAIA,WAAW,KAAK,CAAC,EAAE;UACrB;UACAtB,KAAA,CAAK2B,IAAI,CAACC,gCAAyB,CAACC,iBAAiB,CAAC;UACtDrB,eAAG,CAACA,GAAG,CAAC,6BAA6B,EAAE;YACrCI,IAAI,EAAEC,6BAAiB;YACvBC,MAAM,EAAEC,mBAAO,CAACC;UAClB,CAAC,CAAC;QACJ;MACF,CAAC,EACDhB,KAAA,CAAK8B,gBAAgB,EACrBvB,WACF,CAAC;MAEDP,KAAA,CAAKqB,cAAc,CAACJ,OAAO,CAACS,gBAAgB,CAAC,CAAC,CAAC,GAAGT,OAAO;MACzDT,eAAG,CAACA,GAAG,yCAAAE,MAAA,CAAyCO,OAAO,CAACS,gBAAgB,CAAC,CAAC,GAAI,CAAC,CAAC,CAAC;MACjFlB,eAAG,CAACC,IAAI,8BAAAC,MAAA,CACuBO,OAAO,CAACS,gBAAgB,CAAC,CAAC,qDAAAhB,MAAA,CACrD,IAAAa,KAAA,CAAA/C,OAAA,EAAYwB,KAAA,CAAKwB,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,GAE3C,CAAC,CACH,CAAC;MAED,OAAOR,OAAO;IAChB,CAAC;IA8TD;AACF;AACA;IAFE,IAAAf,gBAAA,CAAA1B,OAAA,MAAA2B,uBAAA,CAAA3B,OAAA,EAAAwB,KAAA,cAGiB,UAACoB,aAA4B,EAAY;MACxD,OAAOpB,KAAA,CAAKqB,cAAc,CAACD,aAAa,CAAC;IAC3C,CAAC;IAED;AACF;AACA;IAFE,IAAAlB,gBAAA,CAAA1B,OAAA,MAAA2B,uBAAA,CAAA3B,OAAA,EAAAwB,KAAA,qBAGwB,YAA6B;MACnD,OAAOA,KAAA,CAAKqB,cAAc;IAC5B,CAAC;IA3YCrB,KAAA,CAAK+B,YAAY,GAAGC,qBAAY;IAChChC,KAAA,CAAK8B,gBAAgB,GAAG/B,SAAS;IACjC,IAAI,CAACC,KAAA,CAAK+B,YAAY,CAACE,QAAQ,CAAC,CAAC,EAAE;MACjCD,qBAAY,CAACE,QAAQ,CAACpC,KAAK,CAAC;IAC9B;IACAE,KAAA,CAAKmC,QAAQ,GAAG,CAAC,CAAC;IAClBnC,KAAA,CAAKF,KAAK,GAAGE,KAAA,CAAK+B,YAAY,CAACE,QAAQ,CAAC,CAAC;IACzCjC,KAAA,CAAKqB,cAAc,GAAG,CAAC,CAAC;IACxBrB,KAAA,CAAKmB,eAAe,GAAG,EAAE;IACzBnB,KAAA,CAAKoC,iBAAiB,CAAC,CAAC;IAAC,OAAApC,KAAA;EAC3B;EAAC,IAAAqC,aAAA,CAAA7D,OAAA,EAAAiB,WAAA;IAAA6C,GAAA;IAAAC,KAAA;IAyDD;AACF;AACA;AACA;AACA;IACE,SAAAC,mBAA0BC,GAAW,EAAE;MACrC,IAAI,CAACtB,eAAe,GAAGsB,GAAG;MAC1BjC,eAAG,CAACA,GAAG,+CAAAE,MAAA,CAA+C+B,GAAG,GAAI;QAC3D7B,IAAI,EAAEC,6BAAiB;QACvBC,MAAM,EAAEC,mBAAO,CAAC2B;MAClB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;EAFE;IAAAJ,GAAA;IAAAC,KAAA,EAGA,SAAAH,kBAAA,EAA4B;MAAA,IAAAO,MAAA;MAC1B,IAAI,CAACZ,YAAY,CAACa,gBAAgB,CAAC,cAAc;QAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAtE,OAAA,gBAAAuE,YAAA,CAAAvE,OAAA,CAAAwE,IAAA,CAAE,SAAAC,QAAOC,KAAK;UAAA,OAAAH,YAAA,CAAAvE,OAAA,CAAA2E,IAAA,UAAAC,SAAAC,QAAA;YAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;cAAA;gBAC7DZ,MAAI,CAACa,eAAe,CAACN,KAAK,CAAC;cAAC;cAAA;gBAAA,OAAAG,QAAA,CAAAI,IAAA;YAAA;UAAA,GAAAR,OAAA;QAAA,CAC7B;QAAA,iBAAAS,EAAA;UAAA,OAAAb,IAAA,CAAA/D,KAAA,OAAAD,SAAA;QAAA;MAAA,IAAC;MACF2B,eAAG,CAACC,IAAI,CAAC,oDAAoD,EAAE;QAC7DG,IAAI,EAAEC,6BAAiB;QACvBC,MAAM,EAAEC,mBAAO,CAAC4C;MAClB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAArB,GAAA;IAAAC,KAAA,EAOA,SAAAiB,gBAAwBN,KAAc,EAAE;MAAA,IAAAU,MAAA;MACtCpD,eAAG,CAACC,IAAI,IAAAC,MAAA,CAAIC,+BAAoB,kBAAAD,MAAA,CAAewC,KAAK,GAAI;QACtDtC,IAAI,EAAEC,6BAAiB;QACvBC,MAAM,EAAEC,mBAAO,CAAC8C;MAClB,CAAC,CAAC;MACF,IAAMC,WAAW,GAAGZ,KAAwB;MAC5C,IAAAa,iBAAA,GAAgCD,WAAW,CAACE,IAAI;QAAzCC,MAAM,GAAAF,iBAAA,CAANE,MAAM;QAAE7C,aAAa,GAAA2C,iBAAA,CAAb3C,aAAa;MAE5B,QAAQ0C,WAAW,CAACE,IAAI,CAACE,SAAS;QAChC,KAAKC,uBAAe,CAACC,UAAU;UAAE;YAC/B5D,eAAG,CAACA,GAAG,0CAAAE,MAAA,CAA0CuD,MAAM,GAAI;cACzDrD,IAAI,EAAEC,6BAAiB;cACvBC,MAAM,EAAEC,mBAAO,CAAC8C;YAClB,CAAC,CAAC;YACF;YACA,IAAIC,WAAW,CAACE,IAAI,CAACK,cAAc,EAAE;cACnCP,WAAW,CAACE,IAAI,CAACK,cAAc,CAACC,OAAO,CAAC,UAACC,YAA0B,EAAK;gBACtE,IAAMjF,IAAI,GAAGsE,MAAI,CAACY,OAAO,CAACpD,aAAa,CAAC;gBAExC,IAAI9B,IAAI,EAAE;kBACRA,IAAI,CAACmF,kBAAkB,CAACF,YAAY,CAAC;gBACvC,CAAC,MAAM;kBACL/D,eAAG,CAACC,IAAI,oCAAAC,MAAA,CAC6B6D,YAAY,CAACL,SAAS,kDACzD;oBACEtD,IAAI,EAAEC,6BAAiB;oBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;kBAClB,CACF,CAAC;gBACH;cACF,CAAC,CAAC;cAEF;YACF;YACA;AACR;AACA;AACA;;YAEQ,IAAMa,KAAK,GAAI,IAAAnD,KAAA,CAAA/C,OAAA,EAAY,IAAI,CAAC6C,cAAc,CAAC,CAAmBsD,IAAI,CACpE,UAACC,EAAE;cAAA,OAAKhB,MAAI,CAACvC,cAAc,CAACuD,EAAE,CAAC,CAACC,SAAS,CAAC,CAAC,KAAKZ,MAAM;YAAA,CACxD,CAAC;YACD,IAAIhD,OAAc;YAElB,IAAI,CAACyD,KAAK,EAAE;cACV;AACV;AACA;cACU,IAAMpE,MAAM,GAAG,IAAI,CAACwE,SAAS,CAAChB,WAAW,CAACE,IAAI,CAAC3D,QAAQ,CAAC;cACxDY,OAAO,GAAG,IAAI,CAACC,UAAU,CACvB6D,qBAAa,CAACC,OAAO,EACrBlB,WAAW,CAACE,IAAI,CAAC3D,QAAQ,EACzBC,MAAM,EACN,CAAC,CACH,CAAC;cACDE,eAAG,CAACA,GAAG,0EAAAE,MAAA,CACoEO,OAAO,CAACS,gBAAgB,CAAC,CAAC,GACnG;gBACEd,IAAI,EAAEC,6BAAiB;gBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;cAClB,CACF,CAAC;cACD5C,OAAO,CAACgE,SAAS,CAAChB,MAAM,CAAC;cACzB,IAAIH,WAAW,CAACE,IAAI,CAACkB,yBAAyB,EAAE;gBAC9C1E,eAAG,CAACC,IAAI,qCAAAC,MAAA,CAC8BoD,WAAW,CAACE,IAAI,CAACkB,yBAAyB,GAC9E;kBACEtE,IAAI,EAAEC,6BAAiB;kBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;gBAClB,CACF,CAAC;gBACD5C,OAAO,CAACkE,4BAA4B,CAACrB,WAAW,CAACE,IAAI,CAACkB,yBAAyB,CAAC;cAClF;YACF,CAAC,MAAM;cACL1E,eAAG,CAACC,IAAI,kDAAAC,MAAA,CAC2CuD,MAAM,4CAAAvD,MAAA,CAAyCgE,KAAK,GACrG;gBACE9D,IAAI,EAAEC,6BAAiB;gBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;cAClB,CACF,CAAC;cACD5C,OAAO,GAAG,IAAI,CAACuD,OAAO,CAACE,KAAK,CAAC;YAC/B;YAEA,IAAIZ,WAAW,CAACE,IAAI,CAACoB,QAAQ,EAAE;cAC7B5E,eAAG,CAACC,IAAI,CAAC,2BAA2B,EAAE;gBACpCG,IAAI,EAAEC,6BAAiB;gBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;cAClB,CAAC,CAAC;cACF5C,OAAO,CAACoE,uBAAuB,CAACvB,WAAW,CAACE,IAAI,CAACoB,QAAQ,CAAC;YAC5D;YACA;;YAEA,IAAI,CAACzD,IAAI,CAAC2D,sBAAe,CAACC,aAAa,EAAEtE,OAAO,CAAC;YAEjDA,OAAO,CAACuE,uBAAuB,CAAC;cAACC,IAAI,EAAE,mBAAmB;cAAEzB,IAAI,EAAEF,WAAW,CAACE;YAAI,CAAC,CAAC;YAEpF;UACF;QACA,KAAKG,uBAAe,CAACuB,aAAa;UAAE;YAClClF,eAAG,CAACA,GAAG,iDAAAE,MAAA,CAAiDU,aAAa,GAAI;cACvER,IAAI,EAAEC,6BAAiB;cACvBC,MAAM,EAAEC,mBAAO,CAAC8C;YAClB,CAAC,CAAC;YACF,IAAMvE,IAAI,GAAG,IAAI,CAACkF,OAAO,CAACpD,aAAa,CAAC;YAExC9B,IAAI,CAACkG,uBAAuB,CAAC;cAACC,IAAI,EAAE,sBAAsB;cAAEzB,IAAI,EAAEF,WAAW,CAACE;YAAI,CAAC,CAAC;YACpF;UACF;QACA,KAAKG,uBAAe,CAACwB,UAAU;UAAE;YAC/BnF,eAAG,CAACA,GAAG,8CAAAE,MAAA,CAA8CU,aAAa,GAAI;cACpER,IAAI,EAAEC,6BAAiB;cACvBC,MAAM,EAAEC,mBAAO,CAAC8C;YAClB,CAAC,CAAC;YAEF,IAAI+B,UAAiB;YAErB,IAAIxE,aAAa,EAAE;cACjB;cACAwE,UAAU,GAAG,IAAI,CAACpB,OAAO,CAACpD,aAAa,CAAC;YAC1C,CAAC,MAAM;cACL;AACV;AACA;AACA;;cAEU,IAAMsD,MAAK,GAAI,IAAAnD,KAAA,CAAA/C,OAAA,EAAY,IAAI,CAAC6C,cAAc,CAAC,CAAmBsD,IAAI,CACpE,UAACC,EAAE;gBAAA,OAAKhB,MAAI,CAACvC,cAAc,CAACuD,EAAE,CAAC,CAACC,SAAS,CAAC,CAAC,KAAKZ,MAAM;cAAA,CACxD,CAAC;cAED,IAAIS,MAAK,EAAE;gBACT;;gBAEAlE,eAAG,CAACC,IAAI,kDAAAC,MAAA,CAC2CuD,MAAM,4CAAAvD,MAAA,CAAyCgE,MAAK,GACrG;kBACE9D,IAAI,EAAEC,6BAAiB;kBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;gBAClB,CACF,CAAC;gBACD+B,UAAU,GAAG,IAAI,CAACpB,OAAO,CAACE,MAAK,CAAC;cAClC,CAAC,MAAM;gBACL;;gBAEA,IAAMpE,OAAM,GAAG,IAAI,CAACwE,SAAS,CAAChB,WAAW,CAACE,IAAI,CAAC3D,QAAQ,CAAC;gBACxDuF,UAAU,GAAG,IAAI,CAAC1E,UAAU,CAC1B6D,qBAAa,CAACC,OAAO,EACrBlB,WAAW,CAACE,IAAI,CAAC3D,QAAQ,EACzBC,OAAM,EACN,CAAC,CACH,CAAC;gBACDE,eAAG,CAACA,GAAG,oEAAAE,MAAA,CAC8DkF,UAAU,CAAClE,gBAAgB,CAAC,CAAC,GAChG;kBACEd,IAAI,EAAEC,6BAAiB;kBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;gBAClB,CACF,CAAC;gBACD+B,UAAU,CAACX,SAAS,CAAChB,MAAM,CAAC;cAC9B;YACF;YAEA,IAAI2B,UAAU,EAAE;cAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;cACd;;cAEAzF,eAAG,CAACC,IAAI,oBAAAC,MAAA,EAAAmF,qBAAA,GAAoB/B,WAAW,CAACE,IAAI,CAACkC,OAAO,cAAAL,qBAAA,uBAAxBA,qBAAA,CAA0BM,GAAG,GAAI;gBAC3DvF,IAAI,EAAEC,6BAAiB;gBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;cAClB,CAAC,CAAC;cACFrD,eAAG,CAACA,GAAG,yCAAAE,MAAA,EAAAoF,sBAAA,GACmChC,WAAW,CAACE,IAAI,CAACkC,OAAO,cAAAJ,sBAAA,uBAAxBA,sBAAA,CAA0BM,WAAW,aAAA1F,MAAA,EAAAqF,sBAAA,GAAUjC,WAAW,CAACE,IAAI,CAACkC,OAAO,cAAAH,sBAAA,uBAAxBA,sBAAA,CAA0BM,GAAG,kBAAA3F,MAAA,EAAAsF,sBAAA,GAAelC,WAAW,CAACE,IAAI,CAACkC,OAAO,cAAAF,sBAAA,uBAAxBA,sBAAA,CAA0BM,OAAO,GACpK;gBACE1F,IAAI,EAAEC,6BAAiB;gBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;cAClB,CACF,CAAC;cACD,IAAM0C,UAAU,IAAAN,sBAAA,GAAGnC,WAAW,CAACE,IAAI,CAACkC,OAAO,cAAAD,sBAAA,uBAAxBA,sBAAA,CAA0BG,WAAW;cAExD,QAAQG,UAAU;gBAChB,KAAKC,kBAAU,CAACC,KAAK;kBAAE;oBACrBjG,eAAG,CAACA,GAAG,CAAC,gBAAgB,EAAE;sBACxBI,IAAI,EAAEC,6BAAiB;sBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;oBAClB,CAAC,CAAC;oBACF+B,UAAU,CAACc,wBAAwB,CAAC;sBAClCjB,IAAI,EAAE,mBAAmB;sBACzBzB,IAAI,EAAEF,WAAW,CAACE,IAAI,CAACkC;oBACzB,CAAC,CAAC;oBACF;kBACF;gBACA,KAAKM,kBAAU,CAACG,MAAM;kBAAE;oBACtBnG,eAAG,CAACA,GAAG,CAAC,iBAAiB,EAAE;sBACzBI,IAAI,EAAEC,6BAAiB;sBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;oBAClB,CAAC,CAAC;oBACF+B,UAAU,CAACc,wBAAwB,CAAC;sBAClCjB,IAAI,EAAE,oBAAoB;sBAC1BzB,IAAI,EAAEF,WAAW,CAACE,IAAI,CAACkC;oBACzB,CAAC,CAAC;oBACF;kBACF;gBACA,KAAKM,kBAAU,CAACI,aAAa;kBAAE;oBAC7BpG,eAAG,CAACA,GAAG,CAAC,wBAAwB,EAAE;sBAChCI,IAAI,EAAEC,6BAAiB;sBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;oBAClB,CAAC,CAAC;oBACF+B,UAAU,CAACc,wBAAwB,CAAC;sBAClCjB,IAAI,EAAE,2BAA2B;sBACjCzB,IAAI,EAAEF,WAAW,CAACE,IAAI,CAACkC;oBACzB,CAAC,CAAC;oBACF;kBACF;gBACA,KAAKM,kBAAU,CAACK,EAAE;kBAAE;oBAClBrG,eAAG,CAACA,GAAG,CAAC,aAAa,EAAE;sBACrBI,IAAI,EAAEC,6BAAiB;sBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;oBAClB,CAAC,CAAC;oBACF,IAAMiD,OAAO,GAAG;sBACdC,QAAQ,EAAE,IAAI;sBACdb,OAAO,EAAEpC,WAAW,CAACE,IAAI,CAACkC;oBAC5B,CAAC;oBAEDN,UAAU,CAACc,wBAAwB,CAAC;sBAClCjB,IAAI,EAAE,WAAW;sBACjBzB,IAAI,EAAE8C;oBACR,CAAC,CAAC;oBACF;kBACF;gBACA,KAAKN,kBAAU,CAACQ,KAAK;kBAAE;oBACrBxG,eAAG,CAACA,GAAG,CAAC,mBAAmB,EAAE;sBAC3BI,IAAI,EAAEC,6BAAiB;sBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;oBAClB,CAAC,CAAC;oBACF;kBACF;gBACA;kBAAS;oBACPrD,eAAG,CAACA,GAAG,+BAAAE,MAAA,CAA+B6F,UAAU,QAAK;sBACnD3F,IAAI,EAAEC,6BAAiB;sBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;oBAClB,CAAC,CAAC;kBACJ;cACF;YACF,CAAC,MAAM;cACLrD,eAAG,CAACC,IAAI,mBAAAC,MAAA,CAAmBU,aAAa,oCAAiC;gBACvER,IAAI,EAAEC,6BAAiB;gBACvBC,MAAM,EAAEC,mBAAO,CAAC8C;cAClB,CAAC,CAAC;cACF;YACF;;YACA;UACF;QACA,KAAKM,uBAAe,CAAC8C,cAAc;UAAE;YACnCzG,eAAG,CAACA,GAAG,oCAAAE,MAAA,CAAoCU,aAAa,GAAI;cAC1DR,IAAI,EAAEC,6BAAiB;cACvBC,MAAM,EAAEC,mBAAO,CAAC8C;YAClB,CAAC,CAAC;YACF,IAAMvE,KAAI,GAAG,IAAI,CAACkF,OAAO,CAACpD,aAAa,CAAC;YAExC9B,KAAI,CAACkG,uBAAuB,CAAC;cAACC,IAAI,EAAE,qBAAqB;cAAEzB,IAAI,EAAEF,WAAW,CAACE;YAAI,CAAC,CAAC;YAEnF;UACF;QACA,KAAKG,uBAAe,CAAC+C,iBAAiB;UAAE;YACtC1G,eAAG,CAACA,GAAG,uCAAAE,MAAA,CAAuCU,aAAa,GAAI;cAC7DR,IAAI,EAAEC,6BAAiB;cACvBC,MAAM,EAAEC,mBAAO,CAAC8C;YAClB,CAAC,CAAC;YACF,IAAMvE,MAAI,GAAG,IAAI,CAACkF,OAAO,CAACpD,aAAa,CAAC;YAExC,IAAI9B,MAAI,EAAE;cACRA,MAAI,CAACkG,uBAAuB,CAAC;gBAACC,IAAI,EAAE;cAAwB,CAAC,CAAC;YAChE;YACA;UACF;QACA;UAAS;YACPjF,eAAG,CAACA,GAAG,oCAAAE,MAAA,CAAoCoD,WAAW,CAACE,IAAI,CAACE,SAAS,GAAI;cACvEtD,IAAI,EAAEC,6BAAiB;cACvBC,MAAM,EAAEC,mBAAO,CAAC8C;YAClB,CAAC,CAAC;UACJ;MACF;IACF;EAAC;IAAAvB,GAAA;IAAAC,KAAA;IAgBD;AACF;AACA;IACE,SAAA4E,WAAkB9G,QAAgB,EAAE+G,IAAW,EAAE;MAC/C,IAAI,CAACjF,QAAQ,CAAC9B,QAAQ,CAAC,GAAG+G,IAAI;MAC9B5G,eAAG,CAACA,GAAG,4CAAAE,MAAA,CAA4CL,QAAQ,GAAI;QAC7DO,IAAI,EAAEC,6BAAiB;QACvBC,MAAM,EAAEC,mBAAO,CAACsG;MAClB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;EAFE;IAAA/E,GAAA;IAAAC,KAAA,EAGA,SAAAuC,UAAkBzE,QAAgB,EAAE;MAClC,OAAO,IAAI,CAAC8B,QAAQ,CAAC9B,QAAQ,CAAC,CAACC,MAAM;IACvC;EAAC;EAAA,OAAAb,WAAA;AAAA,EAhb8B6H,cAAQ;AAmbzC;AACA;AACA;AACA;AACO,IAAMC,cAAc,GAAA7H,OAAA,CAAA6H,cAAA,GAAG,SAAjBA,cAAcA,CAAIzH,KAAe,EAAEC,SAA2B,EAAmB;EAC5F,IAAI,CAACP,WAAW,EAAE;IAChBA,WAAW,GAAG,IAAIC,WAAW,CAACK,KAAK,EAAEC,SAAS,CAAC;EACjD;EAEA,OAAOP,WAAW;AACpB,CAAC"}
|