@webex/calling 3.5.0 → 3.6.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/CallHistory/CallHistory.js +195 -67
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +331 -108
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallHistory/callHistoryFixtures.js +25 -1
- package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
- package/dist/CallHistory/constants.js +4 -1
- package/dist/CallHistory/constants.js.map +1 -1
- package/dist/CallHistory/types.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +2 -2
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +1 -1
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.js +14 -5
- package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.test.js +6 -6
- package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +434 -348
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +516 -386
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +6 -6
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +3 -3
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +6 -1
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +2 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +14 -7
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +84 -22
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/line/types.js.map +1 -1
- package/dist/CallingClient/registration/register.js +79 -59
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +1 -1
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/types.js.map +1 -1
- package/dist/Events/types.js +2 -0
- package/dist/Events/types.js.map +1 -1
- package/dist/common/Utils.js +18 -13
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +97 -0
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/constants.js +4 -3
- package/dist/common/constants.js.map +1 -1
- package/dist/common/types.js +1 -0
- package/dist/common/types.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +64 -2
- package/dist/module/CallHistory/callHistoryFixtures.js +24 -0
- package/dist/module/CallHistory/constants.js +3 -0
- package/dist/module/CallingClient/CallingClient.js +1 -1
- package/dist/module/CallingClient/calling/CallerId/index.js +6 -6
- package/dist/module/CallingClient/calling/call.js +66 -22
- package/dist/module/CallingClient/calling/callManager.js +5 -5
- package/dist/module/CallingClient/calling/types.js +5 -0
- package/dist/module/CallingClient/constants.js +1 -2
- package/dist/module/CallingClient/line/index.js +14 -8
- package/dist/module/CallingClient/registration/register.js +12 -4
- package/dist/module/Events/types.js +2 -0
- package/dist/module/common/Utils.js +12 -5
- package/dist/module/common/constants.js +3 -2
- package/dist/module/common/types.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts +4 -2
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallHistory/callHistoryFixtures.d.ts +6 -2
- package/dist/types/CallHistory/callHistoryFixtures.d.ts.map +1 -1
- package/dist/types/CallHistory/constants.d.ts +3 -0
- package/dist/types/CallHistory/constants.d.ts.map +1 -1
- package/dist/types/CallHistory/types.d.ts +9 -0
- package/dist/types/CallHistory/types.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/CallerId/index.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +7 -5
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +6 -2
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +1 -2
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts +3 -2
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/line/types.d.ts +1 -1
- package/dist/types/CallingClient/line/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +4 -2
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/types.d.ts +1 -0
- package/dist/types/CallingClient/types.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts +1 -1
- package/dist/types/Events/types.d.ts +15 -2
- package/dist/types/Events/types.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts +1 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts +1 -1
- package/dist/types/common/Utils.d.ts +2 -2
- 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/types.d.ts +2 -1
- package/dist/types/common/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -50,13 +50,13 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
50
50
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "serviceIndicator", void 0);
|
|
51
51
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lineDict", void 0);
|
|
52
52
|
/**
|
|
53
|
-
* @param destination -.
|
|
54
53
|
* @param direction -.
|
|
55
54
|
* @param deviceId -.
|
|
55
|
+
* @param destination -.
|
|
56
56
|
*/
|
|
57
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createCall", function (
|
|
57
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createCall", function (direction, deviceId, lineId, destination) {
|
|
58
58
|
_Logger.default.log('Creating call object', {});
|
|
59
|
-
var newCall = (0, _call3.createCall)(_this.activeMobiusUrl, _this.webex,
|
|
59
|
+
var newCall = (0, _call3.createCall)(_this.activeMobiusUrl, _this.webex, direction, deviceId, lineId, function (correlationId) {
|
|
60
60
|
delete _this.callCollection[correlationId];
|
|
61
61
|
var activeCalls = (0, _keys.default)(_this.getActiveCalls()).length;
|
|
62
62
|
_Logger.default.info("DELETE:: Deleted corelationId: ".concat(newCall.getCorrelationId(), " from CallManager, Number of call records :- ").concat(activeCalls), {});
|
|
@@ -64,7 +64,7 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
64
64
|
/* Notify CallingClient when all calls are cleared. */
|
|
65
65
|
_this.emit(_types.CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED);
|
|
66
66
|
}
|
|
67
|
-
}, _this.serviceIndicator);
|
|
67
|
+
}, _this.serviceIndicator, destination);
|
|
68
68
|
_this.callCollection[newCall.getCorrelationId()] = newCall;
|
|
69
69
|
_Logger.default.log("New call created with correlationId: ".concat(newCall.getCorrelationId()), {});
|
|
70
70
|
_Logger.default.info("ADD:: Added corelationId: ".concat(newCall.getCorrelationId(), " to CallManager , Number of call records now:- ").concat((0, _keys.default)(_this.getActiveCalls()).length), {});
|
|
@@ -182,7 +182,7 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
182
182
|
* Create an incoming call object and add to our records
|
|
183
183
|
*/
|
|
184
184
|
var lineId = this.getLineId(mobiusEvent.data.deviceId);
|
|
185
|
-
newCall = this.createCall(
|
|
185
|
+
newCall = this.createCall(_types2.CallDirection.INBOUND, mobiusEvent.data.deviceId, lineId, {});
|
|
186
186
|
_Logger.default.log("New incoming call created with correlationId from Call Setup message: ".concat(newCall.getCorrelationId()), {
|
|
187
187
|
file: _constants.CALL_MANAGER_FILE,
|
|
188
188
|
method: 'dequeueWsEvents'
|
|
@@ -262,7 +262,7 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
262
262
|
/* If Call.Media arrived before Call.Setup , we create the Call Object here */
|
|
263
263
|
|
|
264
264
|
var _lineId = this.getLineId(mobiusEvent.data.deviceId);
|
|
265
|
-
activeCall = this.createCall(
|
|
265
|
+
activeCall = this.createCall(_types2.CallDirection.INBOUND, mobiusEvent.data.deviceId, _lineId, {});
|
|
266
266
|
_Logger.default.log("New incoming call created with correlationId from ROAP Message: ".concat(activeCall.getCorrelationId()), {
|
|
267
267
|
file: _constants.CALL_MANAGER_FILE,
|
|
268
268
|
method: 'dequeueWsEvents'
|
|
@@ -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","destination","direction","deviceId","lineId","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 destination -.\n * @param direction -.\n * @param deviceId -.\n */\n public createCall = (\n destination: CallDetails,\n direction: CallDirection,\n deviceId: string,\n lineId: string\n ): ICall => {\n log.log('Creating call object', {});\n const newCall = createCall(\n this.activeMobiusUrl,\n this.webex,\n destination,\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 );\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 {} as CallDetails,\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId\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 {} as CallDetails,\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId\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","_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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"}
|
|
@@ -167,7 +167,7 @@ describe('Call Manager Tests with respect to calls', function () {
|
|
|
167
167
|
});
|
|
168
168
|
expect(callManager).toBeTruthy();
|
|
169
169
|
_context.next = 5;
|
|
170
|
-
return callManager.createCall(
|
|
170
|
+
return callManager.createCall(_types.CallDirection.OUTBOUND, deviceId, mockLineId, dest);
|
|
171
171
|
case 5:
|
|
172
172
|
call = _context.sent;
|
|
173
173
|
call.setCallId('8a67806f-fc4d-446b-a131-31e71ea5b020');
|
|
@@ -275,7 +275,7 @@ describe('Call Manager Tests with respect to calls', function () {
|
|
|
275
275
|
|
|
276
276
|
/* lets add a call to disconnect it later */
|
|
277
277
|
_context5.next = 3;
|
|
278
|
-
return callManager.createCall(
|
|
278
|
+
return callManager.createCall(_types.CallDirection.OUTBOUND, deviceId, mockLineId, dest);
|
|
279
279
|
case 3:
|
|
280
280
|
expect((0, _keys.default)(callManager.getActiveCalls()).length).toBe(1);
|
|
281
281
|
/* clear the last added call */
|
|
@@ -476,7 +476,7 @@ describe('Coverage for Events listener', function () {
|
|
|
476
476
|
beforeEach(function () {
|
|
477
477
|
callManager = (0, _callManager.getCallManager)(webex, defaultServiceIndicator);
|
|
478
478
|
callManager.removeAllListeners(_types3.LINE_EVENT_KEYS.INCOMING_CALL);
|
|
479
|
-
call = callManager.createCall(
|
|
479
|
+
call = callManager.createCall(_types.CallDirection.OUTBOUND, deviceId, mockLineId, dest);
|
|
480
480
|
call.setCallId(dummyCallId);
|
|
481
481
|
setupEvent.data.correlationId = call.getCorrelationId();
|
|
482
482
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Utils","require","_types","_testUtil","_callManager","_types2","_call","_Logger","_interopRequireDefault","_types3","webex","getTestUtilsWebex","defaultServiceIndicator","ServiceIndicator","CALLING","mediaEvent","id","data","message","messageType","sdp","seq","version","callId","callUrl","deviceId","correlationId","eventType","timestamp","trackingId","alertType","headers","sequenceNumber","filterMessage","setupEvent","callerId","from","broadworksCorrelationInfo","disconnectEvent","causecode","cause","dest","type","CallType","URI","address","successResponseBody","statusCode","body","device","callData","callState","MobiusCallState","PROCEEDING","mockLineId","mockLine","lineId","describe","dummyResponse","patchMock","jest","spyOn","Call","prototype","setDisconnectReasonMock","deleteCallMock","initMediaConnectionMock","mediaRoapEventsListenerMock","mediaTrackListenerMock","postMediaMock","mockResolvedValue","mockReturnValue","callManager","beforeEach","getCallManager","removeAllListeners","LINE_EVENT_KEYS","INCOMING_CALL","expect","_keys","default","getActiveCalls","length","toBe","afterEach","calls","_values","forEach","call","end","it","toBeTruthy","callManagerNew","toMatchObject","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","updateLine","request","mockReturnValueOnce","createCall","CallDirection","OUTBOUND","sent","setCallId","getCallId","toStrictEqual","stop","_callee2","_callee2$","_context2","on","callObj","getBroadworksCorrelationInfo","waitForMsecs","toHaveBeenCalledWith","ALERTING","_callee3","_callee3$","_context3","_callee4","_callee4$","_context4","getCorrelationId","toHaveBeenCalled","_callee5","_callee5$","_context5","not","_callee6","warnSpy","_callee6$","_context6","mockRejectedValue","log","file","method","_callee8","_callee8$","_context8","_ref8","_callee7","mediaSpy","mediaClose","track","_callee7$","_context7","state","value","answer","localAudioTrack","CONNECTED","_x","apply","arguments","dummyCallId","funcSpy","callSpy","logSpy","_callee9","eventData","_callee9$","_context9","toHaveBeenLastCalledWith","_callee10","_callee10$","_context10","_callee11","_callee11$","_context11","_callee12","mediaOK","_callee12$","_context12","received","_callee13","_callee13$","_context13","_callee14","_callee14$","_context14","_callee15","_callee15$","_context15","_callee16","connectEvent","_callee16$","_context16","JSON","parse","_stringify","_callee17","answerEvent","_callee17$","_context17","_callee18","_callee18$","_context18"],"sources":["callManager.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable dot-notation */\nimport {waitForMsecs} from '../../common/Utils';\nimport {CallDirection, CallType, ServiceIndicator} from '../../common/types';\nimport {getTestUtilsWebex} from '../../common/testUtil';\nimport {getCallManager} from './callManager';\nimport {ICall, ICallManager, MobiusCallState} from './types';\nimport {Call} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\nimport {LINE_EVENT_KEYS} from '../../Events/types';\n\nconst webex = getTestUtilsWebex();\nconst defaultServiceIndicator = ServiceIndicator.CALLING;\n\nconst mediaEvent = {\n id: '73e6a2b2-968c-44ea-a536-e7702722f8d8',\n data: {\n message: {\n messageType: 'OFFER',\n sdp: 'v=0\\r\\no=BroadWorks 175625 1653906127914 IN IP4 207.182.171.180\\r\\ns=-\\r\\nc=IN IP4 207.182.171.180\\r\\nt=0 0\\r\\na=ice-lite\\r\\nm=audio 19564 UDP/TLS/RTP/SAVPF 99 9 0 8 18 102 101\\r\\na=sendrecv\\r\\na=rtpmap:99 opus/48000/2\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:18 G729/8000\\r\\na=fmtp:18 annexb=no\\r\\na=rtpmap:102 iLBC/8000\\r\\na=fmtp:102 mode=30\\r\\na=rtpmap:101 telephone-event/8000\\r\\na=rtcp-mux\\r\\na=setup:actpass\\r\\na=ssrc:379289707 cname:HC3h2tromqGgnGaf\\r\\na=ice-ufrag:mLbW\\r\\na=ice-pwd:Hct9MYtML1sedttd8fLCg9aJ\\r\\na=fingerprint:sha-256 5E:F5:3D:98:57:03:D7:73:8F:C3:D4:FC:EC:FE:7F:4D:04:D8:EE:2A:29:C4:9F:35:C5:0F:D1:2D:CE:E4:AE:AA\\r\\na=candidate:mse 1 UDP 2130706431 207.182.171.180 19564 typ host\\r\\na=candidate:mse 2 UDP 2130706430 207.182.171.180 19565 typ host',\n seq: 1,\n version: '2',\n },\n callId: 'f2e89262-7d9a-489f-b65d-3b56a31c7bfe',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/14ef3832-a7af-4457-a660-fd1918d627d0]',\n deviceId: '375b8503-f716-3407-853b-cd9a8c4419a7',\n correlationId: '',\n eventType: 'mobius.media',\n },\n timestamp: 1653906128188,\n trackingId: 'ROUTER_62949AD0-DB6E-01BB-595A-03158964595A',\n alertType: 'full',\n headers: {},\n sequenceNumber: 7,\n filterMessage: false,\n};\n\nconst setupEvent = {\n id: '3ee919c7-202d-4f8c-9b74-e5ee8a693dfa',\n data: {\n callerId: {\n 'x-broadworks-remote-party-info':\n 'userId=\"hkkcq0ekby@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865895;ext=5008;country-code=1\";externalId=652fe0c7-05ce-4acd-8bda-9a080830187f',\n from: '\"Bob Marley\" <sip:5008@207.182.171.130;user=phone>;tag=379221777-1653906128003-',\n },\n callId: 'f2e89262-7d9a-489f-b65d-3b56a31c7bfe',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/14ef3832-a7af-4457-a660-fd1918d627d0]',\n deviceId: '375b8503-f716-3407-853b-cd9a8c4419a7',\n correlationId: '',\n eventType: 'mobius.call',\n broadworksCorrelationInfo: 'Sample_broadworksCorrelationInfo',\n },\n timestamp: 1653906128159,\n trackingId: 'ROUTER_62949AD0-DB6E-01BB-595A-03158964595A',\n alertType: 'full',\n headers: {},\n sequenceNumber: 6,\n filterMessage: false,\n};\n\nconst disconnectEvent = {\n id: 'f3e37504-5867-48ea-8d67-4e82b3ce1755',\n data: {\n causecode: 0,\n cause: 'Normal disconnect',\n callId: 'cbfe802c-cc8d-407f-863d-0abf8d6cc497',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/5691641c-7f0c-47a4-b248-e585ebcf653d]',\n deviceId: 'b9270663-54c8-3540-b01f-ed807dc5f9e8',\n correlationId: '',\n eventType: 'mobius.calldisconnected',\n },\n timestamp: 1653925625934,\n trackingId: 'NA_fe7efbbc-de52-438c-a6c3-58e96db230ba',\n alertType: 'full',\n headers: {},\n sequenceNumber: 6,\n filterMessage: false,\n};\nconst deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';\nconst dest = {\n type: CallType.URI,\n address: 'tel:5003',\n};\n\nconst successResponseBody = {\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n};\n\nconst mockLineId = 'e4e8ee2a-a154-4e52-8f11-ef4cde2dce72';\nconst mockLine = {\n lineId: mockLineId,\n} as ILine;\n\ndescribe('Call Manager Tests with respect to calls', () => {\n const dummyResponse = {\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n },\n };\n\n const patchMock = jest.spyOn(Call.prototype as any, 'patch');\n const setDisconnectReasonMock = jest.spyOn(Call.prototype as any, 'setDisconnectReason');\n const deleteCallMock = jest.spyOn(Call.prototype as any, 'delete');\n const initMediaConnectionMock = jest.spyOn(Call.prototype as any, 'initMediaConnection');\n const mediaRoapEventsListenerMock = jest.spyOn(Call.prototype as any, 'mediaRoapEventsListener');\n const mediaTrackListenerMock = jest.spyOn(Call.prototype as any, 'mediaTrackListener');\n const postMediaMock = jest.spyOn(Call.prototype as any, 'postMedia');\n\n deleteCallMock.mockResolvedValue(dummyResponse); // Both are using dummy response\n setDisconnectReasonMock.mockReturnValue({});\n initMediaConnectionMock.mockReturnValue({});\n mediaRoapEventsListenerMock.mockReturnValue({});\n mediaTrackListenerMock.mockReturnValue({});\n postMediaMock.mockResolvedValue({});\n\n let callManager: ICallManager;\n\n beforeEach(() => {\n callManager = getCallManager(webex, defaultServiceIndicator);\n callManager.removeAllListeners(LINE_EVENT_KEYS.INCOMING_CALL);\n /* expect 0 calls at the beginning of each test as we are clearing calls at the end of every test case */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n afterEach(() => {\n /* lets clear all calls at the end of every test case */\n const calls = Object.values(callManager.getActiveCalls());\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('check instance of call manager', () => {\n expect(callManager).toBeTruthy();\n });\n\n it('Check whether callManager is singleton', () => {\n const callManagerNew = getCallManager(webex, defaultServiceIndicator);\n\n expect(callManager).toMatchObject(callManagerNew);\n });\n\n it('create a call using call manager', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n webex.request.mockReturnValueOnce({\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n });\n\n expect(callManager).toBeTruthy();\n const call = await callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n call.setCallId('8a67806f-fc4d-446b-a131-31e71ea5b020');\n\n expect(call).toBeTruthy();\n expect(call.getCallId()).toStrictEqual('8a67806f-fc4d-446b-a131-31e71ea5b020');\n expect(call.lineId).toStrictEqual(mockLineId);\n });\n\n it('Accept an incoming call from Mobius where Call Setup was the first message', async () => {\n callManager.updateLine('375b8503-f716-3407-853b-cd9a8c4419a7', mockLine);\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n expect(callObj.getBroadworksCorrelationInfo()).toStrictEqual(\n setupEvent.data.broadworksCorrelationInfo\n );\n expect(callObj.lineId).toStrictEqual(mockLineId);\n });\n patchMock.mockResolvedValue(dummyResponse);\n\n await callManager['dequeueWsEvents'](setupEvent);\n await waitForMsecs(50);\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n /* setUp event should create the call and count will be 1 for new call */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Accept an incoming call from Mobius where Media Event was the first message', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n patchMock.mockResolvedValue(dummyResponse);\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n expect(callObj['remoteRoapMessage'].sdp).toStrictEqual(mediaEvent.data.message.sdp);\n });\n\n await callManager['dequeueWsEvents'](mediaEvent);\n /* check whether SDP is buffered */\n await callManager['dequeueWsEvents'](setupEvent);\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Disconnect a call if received a Call Disconnect event', async () => {\n webex.request.mockReturnValueOnce(successResponseBody);\n\n /* lets add a call to disconnect it later */\n const call = await callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n /* clear the last added call */\n\n patchMock.mockResolvedValue(dummyResponse);\n disconnectEvent.data.correlationId = call.getCorrelationId();\n callManager['dequeueWsEvents'](disconnectEvent);\n\n /* Add a small delay , to simulate sending of Delete request and clearing from Call records */\n await waitForMsecs(50);\n\n expect(deleteCallMock).toHaveBeenCalled();\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n it('Do not Disconnect a call if call has been disconnected already', async () => {\n webex.request.mockReturnValueOnce(successResponseBody);\n\n /* lets add a call to disconnect it later */\n await callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n /* clear the last added call */\n\n patchMock.mockResolvedValue(dummyResponse);\n disconnectEvent.data.correlationId = '1234';\n callManager['dequeueWsEvents'](disconnectEvent);\n\n /* Add a small delay , to simulate sending of Delete request and clearing from Call records */\n await waitForMsecs(50);\n\n expect(deleteCallMock).not.toHaveBeenCalled();\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Accept an incoming call but Outgoing patch request fails', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n /* Intentionally failing the Patch with 503 */\n dummyResponse.statusCode = 503;\n patchMock.mockRejectedValue(dummyResponse);\n\n const warnSpy = jest.spyOn(log, 'warn');\n\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n await callManager['dequeueWsEvents'](setupEvent);\n await waitForMsecs(50);\n\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n expect(warnSpy).toHaveBeenCalledWith('Failed to signal call progression', {\n file: 'call',\n method: 'handleOutgoingCallAlerting',\n });\n /* No calls should have been added as call progress failed */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n it('Walk through an End to End call', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n let call: ICall;\n\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, async (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n call = callObj;\n await waitForMsecs(50);\n\n const mediaSpy = jest.spyOn(call['mediaConnection'], 'roapMessageReceived');\n const mediaClose = jest.spyOn(call['mediaConnection'], 'close').mockReturnValue({});\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(3);\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_PROGRESS');\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n\n /* Receive ROAP Offer */\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_RECV_ROAP_OFFER');\n\n const track = {} as MediaStreamTrack;\n\n /* User answers the call */\n await call.answer({localAudioTrack: track});\n await waitForMsecs(50);\n\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.CONNECTED);\n expect(mediaSpy).toHaveBeenCalled(); /* We pass the offer to media connection */\n\n /* We are manually sending this event , ideally it will sent by MediaConnection. */\n call['sendMediaStateMachineEvt']({type: 'E_SEND_ROAP_ANSWER'});\n\n await waitForMsecs(50);\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_SEND_ROAP_ANSWER');\n\n /* Simulate ROAP_OK */\n mediaEvent.data.message.messageType = 'OK';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n\n expect(mediaSpy).toHaveBeenCalled();\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n /* Simulate ROAP Offer_request */\n mediaEvent.data.message.messageType = 'OFFER_REQUEST';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(mediaSpy).toHaveBeenCalled();\n\n /* We are manually sending this event , ideally it will sent by Media Connection. */\n call['sendMediaStateMachineEvt']({type: 'E_SEND_ROAP_OFFER'});\n\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_SEND_ROAP_OFFER');\n\n /* Simulate ROAP Answer */\n mediaEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(mediaSpy).toHaveBeenCalled();\n\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n /* Start Call disconnect */\n disconnectEvent.data.correlationId = call.getCorrelationId();\n callManager['dequeueWsEvents'](disconnectEvent);\n await waitForMsecs(50);\n\n expect(deleteCallMock).toHaveBeenCalled();\n expect(mediaClose).toHaveBeenCalled();\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_TEARDOWN');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_CLEARED');\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(2);\n });\n\n patchMock.mockResolvedValue(dummyResponse);\n await callManager['dequeueWsEvents'](setupEvent);\n });\n});\n\ndescribe('Coverage for Events listener', () => {\n let callManager: ICallManager;\n let call: ICall;\n const dummyCallId = '8a67806f-fc4d-4469-a131-31e71ec5b011';\n\n webex.request.mockReturnValueOnce({\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n });\n\n beforeEach(() => {\n callManager = getCallManager(webex, defaultServiceIndicator);\n callManager.removeAllListeners(LINE_EVENT_KEYS.INCOMING_CALL);\n call = callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n call.setCallId(dummyCallId);\n setupEvent.data.correlationId = call.getCorrelationId();\n });\n\n const funcSpy = jest.spyOn(Call.prototype as any, 'sendMediaStateMachineEvt');\n const callSpy = jest.spyOn(Call.prototype as any, 'sendCallStateMachineEvt');\n const logSpy = jest.spyOn(log, 'log');\n\n it('When Offer is received', async () => {\n mediaEvent.data.callId = dummyCallId;\n\n await callManager['dequeueWsEvents'](mediaEvent);\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_OFFER'};\n\n expect(funcSpy).toHaveBeenLastCalledWith(eventData);\n });\n\n it('When Answer is received', async () => {\n mediaEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_ANSWER'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Offer Request is received', async () => {\n mediaEvent.data.message.messageType = 'OFFER_REQUEST';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_OFFER_REQUEST'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When OK is received', async () => {\n mediaEvent.data.message.messageType = 'OK';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const mediaOK = {received: true, message: mediaEvent.data.message};\n const eventData = {data: mediaOK, type: 'E_ROAP_OK'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Error is Received', async () => {\n mediaEvent.data.message.messageType = 'ERROR';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n expect(logSpy).toHaveBeenCalledWith('Received Error...', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('When Unknown event is Received', async () => {\n mediaEvent.data.message.messageType = 'UNKNOWN';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n expect(logSpy).toHaveBeenCalledWith('Unknown Media mobiusEvent: UNKNOWN ', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('When Progress/Connect event is Received', async () => {\n setupEvent.data.eventType = 'mobius.callprogress';\n await callManager['dequeueWsEvents'](setupEvent);\n expect(callSpy).toHaveBeenCalledWith({type: 'E_RECV_CALL_PROGRESS', data: setupEvent.data});\n });\n\n it('Silently discard an event in the state machine', async () => {\n call['callStateMachine'].state.value = 'S_SEND_CALL_CONNECT';\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n\n const connectEvent = JSON.parse(JSON.stringify(setupEvent));\n\n connectEvent.data.eventType = 'mobius.callconnected';\n await callManager['dequeueWsEvents'](connectEvent);\n\n /* There should not be any state change */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n });\n\n it('Silently discard an ROAP_ANSWER after being in ROAP_OK state', async () => {\n call['mediaStateMachine'].state.value = 'S_ROAP_OK';\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n\n const answerEvent = JSON.parse(JSON.stringify(mediaEvent));\n\n answerEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](answerEvent);\n\n /* There should not be any state change */\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n });\n\n it('When Unknown Call event is Received', async () => {\n setupEvent.data.eventType = 'mobius.callunknown';\n await callManager['dequeueWsEvents'](setupEvent);\n expect(logSpy).toHaveBeenCalledWith('Unknown Call Event mobiusEvent: mobius.callunknown', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n});\n"],"mappings":";;;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAC,sBAAA,CAAAP,OAAA;AAEA,IAAAQ,OAAA,GAAAR,OAAA;AAVA;AACA;;AAWA,IAAMS,KAAK,GAAG,IAAAC,2BAAiB,EAAC,CAAC;AACjC,IAAMC,uBAAuB,GAAGC,uBAAgB,CAACC,OAAO;AAExD,IAAMC,UAAU,GAAG;EACjBC,EAAE,EAAE,sCAAsC;EAC1CC,IAAI,EAAE;IACJC,OAAO,EAAE;MACPC,WAAW,EAAE,OAAO;MACpBC,GAAG,EAAE,8yBAA8yB;MACnzBC,GAAG,EAAE,CAAC;MACNC,OAAO,EAAE;IACX,CAAC;IACDC,MAAM,EAAE,sCAAsC;IAC9CC,OAAO,EACL,2FAA2F;IAC7FC,QAAQ,EAAE,sCAAsC;IAChDC,aAAa,EAAE,EAAE;IACjBC,SAAS,EAAE;EACb,CAAC;EACDC,SAAS,EAAE,aAAa;EACxBC,UAAU,EAAE,6CAA6C;EACzDC,SAAS,EAAE,MAAM;EACjBC,OAAO,EAAE,CAAC,CAAC;EACXC,cAAc,EAAE,CAAC;EACjBC,aAAa,EAAE;AACjB,CAAC;AAED,IAAMC,UAAU,GAAG;EACjBlB,EAAE,EAAE,sCAAsC;EAC1CC,IAAI,EAAE;IACJkB,QAAQ,EAAE;MACR,gCAAgC,EAC9B,qJAAqJ;MACvJC,IAAI,EAAE;IACR,CAAC;IACDb,MAAM,EAAE,sCAAsC;IAC9CC,OAAO,EACL,2FAA2F;IAC7FC,QAAQ,EAAE,sCAAsC;IAChDC,aAAa,EAAE,EAAE;IACjBC,SAAS,EAAE,aAAa;IACxBU,yBAAyB,EAAE;EAC7B,CAAC;EACDT,SAAS,EAAE,aAAa;EACxBC,UAAU,EAAE,6CAA6C;EACzDC,SAAS,EAAE,MAAM;EACjBC,OAAO,EAAE,CAAC,CAAC;EACXC,cAAc,EAAE,CAAC;EACjBC,aAAa,EAAE;AACjB,CAAC;AAED,IAAMK,eAAe,GAAG;EACtBtB,EAAE,EAAE,sCAAsC;EAC1CC,IAAI,EAAE;IACJsB,SAAS,EAAE,CAAC;IACZC,KAAK,EAAE,mBAAmB;IAC1BjB,MAAM,EAAE,sCAAsC;IAC9CC,OAAO,EACL,2FAA2F;IAC7FC,QAAQ,EAAE,sCAAsC;IAChDC,aAAa,EAAE,EAAE;IACjBC,SAAS,EAAE;EACb,CAAC;EACDC,SAAS,EAAE,aAAa;EACxBC,UAAU,EAAE,yCAAyC;EACrDC,SAAS,EAAE,MAAM;EACjBC,OAAO,EAAE,CAAC,CAAC;EACXC,cAAc,EAAE,CAAC;EACjBC,aAAa,EAAE;AACjB,CAAC;AACD,IAAMR,QAAQ,GAAG,sCAAsC;AACvD,IAAMgB,IAAI,GAAG;EACXC,IAAI,EAAEC,eAAQ,CAACC,GAAG;EAClBC,OAAO,EAAE;AACX,CAAC;AAED,IAAMC,mBAAmB,GAAG;EAC1BC,UAAU,EAAE,GAAG;EACfC,IAAI,EAAE;IACJC,MAAM,EAAE;MACNxB,QAAQ,EAAE,sCAAsC;MAChDC,aAAa,EAAE;IACjB,CAAC;IACDH,MAAM,EAAE,sCAAsC;IAC9C2B,QAAQ,EAAE;MACRC,SAAS,EAAEC,uBAAe,CAACC;IAC7B;EACF;AACF,CAAC;AAED,IAAMC,UAAU,GAAG,sCAAsC;AACzD,IAAMC,QAAQ,GAAG;EACfC,MAAM,EAAEF;AACV,CAAU;AAEVG,QAAQ,CAAC,0CAA0C,EAAE,YAAM;EACzD,IAAMC,aAAa,GAAG;IACpBX,UAAU,EAAE,GAAG;IACfC,IAAI,EAAE;MACJC,MAAM,EAAE;QACNxB,QAAQ,EAAE,sCAAsC;QAChDC,aAAa,EAAE;MACjB;IACF;EACF,CAAC;EAED,IAAMiC,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACC,UAAI,CAACC,SAAS,EAAS,OAAO,CAAC;EAC5D,IAAMC,uBAAuB,GAAGJ,IAAI,CAACC,KAAK,CAACC,UAAI,CAACC,SAAS,EAAS,qBAAqB,CAAC;EACxF,IAAME,cAAc,GAAGL,IAAI,CAACC,KAAK,CAACC,UAAI,CAACC,SAAS,EAAS,QAAQ,CAAC;EAClE,IAAMG,uBAAuB,GAAGN,IAAI,CAACC,KAAK,CAACC,UAAI,CAACC,SAAS,EAAS,qBAAqB,CAAC;EACxF,IAAMI,2BAA2B,GAAGP,IAAI,CAACC,KAAK,CAACC,UAAI,CAACC,SAAS,EAAS,yBAAyB,CAAC;EAChG,IAAMK,sBAAsB,GAAGR,IAAI,CAACC,KAAK,CAACC,UAAI,CAACC,SAAS,EAAS,oBAAoB,CAAC;EACtF,IAAMM,aAAa,GAAGT,IAAI,CAACC,KAAK,CAACC,UAAI,CAACC,SAAS,EAAS,WAAW,CAAC;EAEpEE,cAAc,CAACK,iBAAiB,CAACZ,aAAa,CAAC,CAAC,CAAC;EACjDM,uBAAuB,CAACO,eAAe,CAAC,CAAC,CAAC,CAAC;EAC3CL,uBAAuB,CAACK,eAAe,CAAC,CAAC,CAAC,CAAC;EAC3CJ,2BAA2B,CAACI,eAAe,CAAC,CAAC,CAAC,CAAC;EAC/CH,sBAAsB,CAACG,eAAe,CAAC,CAAC,CAAC,CAAC;EAC1CF,aAAa,CAACC,iBAAiB,CAAC,CAAC,CAAC,CAAC;EAEnC,IAAIE,WAAyB;EAE7BC,UAAU,CAAC,YAAM;IACfD,WAAW,GAAG,IAAAE,2BAAc,EAAChE,KAAK,EAAEE,uBAAuB,CAAC;IAC5D4D,WAAW,CAACG,kBAAkB,CAACC,uBAAe,CAACC,aAAa,CAAC;IAC7D;IACAC,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;EAClE,CAAC,CAAC;EAEFC,SAAS,CAAC,YAAM;IACd;IACA,IAAMC,KAAK,GAAG,IAAAC,OAAA,CAAAN,OAAA,EAAcR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC;IAEzDI,KAAK,CAACE,OAAO,CAAC,UAACC,IAAI,EAAK;MACtBA,IAAI,CAACC,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFC,EAAE,CAAC,gCAAgC,EAAE,YAAM;IACzCZ,MAAM,CAACN,WAAW,CAAC,CAACmB,UAAU,CAAC,CAAC;EAClC,CAAC,CAAC;EAEFD,EAAE,CAAC,wCAAwC,EAAE,YAAM;IACjD,IAAME,cAAc,GAAG,IAAAlB,2BAAc,EAAChE,KAAK,EAAEE,uBAAuB,CAAC;IAErEkE,MAAM,CAACN,WAAW,CAAC,CAACqB,aAAa,CAACD,cAAc,CAAC;EACnD,CAAC,CAAC;EAEFF,EAAE,CAAC,kCAAkC,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAC,QAAA;IAAA,IAAAT,IAAA;IAAA,OAAAO,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UACrC9B,WAAW,CAAC+B,UAAU,CAAC,sCAAsC,EAAEhD,QAAQ,CAAC;UACxE7C,KAAK,CAAC8F,OAAO,CAACC,mBAAmB,CAAC;YAChC1D,UAAU,EAAE,GAAG;YACfC,IAAI,EAAE;cACJC,MAAM,EAAE;gBACNxB,QAAQ,EAAE,sCAAsC;gBAChDC,aAAa,EAAE;cACjB,CAAC;cACDH,MAAM,EAAE,sCAAsC;cAC9C2B,QAAQ,EAAE;gBACRC,SAAS,EAAEC,uBAAe,CAACC;cAC7B;YACF;UACF,CAAC,CAAC;UAEFyB,MAAM,CAACN,WAAW,CAAC,CAACmB,UAAU,CAAC,CAAC;UAACS,QAAA,CAAAE,IAAA;UAAA,OACd9B,WAAW,CAACkC,UAAU,CAACjE,IAAI,EAAEkE,oBAAa,CAACC,QAAQ,EAAEnF,QAAQ,EAAE6B,UAAU,CAAC;QAAA;UAAvFkC,IAAI,GAAAY,QAAA,CAAAS,IAAA;UAEVrB,IAAI,CAACsB,SAAS,CAAC,sCAAsC,CAAC;UAEtDhC,MAAM,CAACU,IAAI,CAAC,CAACG,UAAU,CAAC,CAAC;UACzBb,MAAM,CAACU,IAAI,CAACuB,SAAS,CAAC,CAAC,CAAC,CAACC,aAAa,CAAC,sCAAsC,CAAC;UAC9ElC,MAAM,CAACU,IAAI,CAAChC,MAAM,CAAC,CAACwD,aAAa,CAAC1D,UAAU,CAAC;QAAC;QAAA;UAAA,OAAA8C,QAAA,CAAAa,IAAA;MAAA;IAAA,GAAAhB,OAAA;EAAA,CAC/C,GAAC;EAEFP,EAAE,CAAC,4EAA4E,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAkB,SAAA;IAAA,OAAAnB,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAiB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAf,IAAA,GAAAe,SAAA,CAAAd,IAAA;QAAA;UAC/E9B,WAAW,CAAC+B,UAAU,CAAC,sCAAsC,EAAEhD,QAAQ,CAAC;UACxEiB,WAAW,CAAC6C,EAAE,CAACzC,uBAAe,CAACC,aAAa,EAAE,UAACyC,OAAc,EAAK;YAChExC,MAAM,CAACwC,OAAO,CAACP,SAAS,CAAC,CAAC,CAAC,CAACC,aAAa,CAAC9E,UAAU,CAACjB,IAAI,CAACM,MAAM,CAAC;YACjEuD,MAAM,CAACwC,OAAO,CAACC,4BAA4B,CAAC,CAAC,CAAC,CAACP,aAAa,CAC1D9E,UAAU,CAACjB,IAAI,CAACoB,yBAClB,CAAC;YACDyC,MAAM,CAACwC,OAAO,CAAC9D,MAAM,CAAC,CAACwD,aAAa,CAAC1D,UAAU,CAAC;UAClD,CAAC,CAAC;UACFK,SAAS,CAACW,iBAAiB,CAACZ,aAAa,CAAC;UAAC0D,SAAA,CAAAd,IAAA;UAAA,OAErC9B,WAAW,CAAC,iBAAiB,CAAC,CAACtC,UAAU,CAAC;QAAA;UAAAkF,SAAA,CAAAd,IAAA;UAAA,OAC1C,IAAAkB,mBAAY,EAAC,EAAE,CAAC;QAAA;UAAAJ,SAAA,CAAAd,IAAA;UAAA,OAChB9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;QAAA;UAAAqG,SAAA,CAAAd,IAAA;UAAA,OAC1C,IAAAkB,mBAAY,EAAC,EAAE,CAAC;QAAA;UAEtB1C,MAAM,CAACnB,SAAS,CAAC,CAAC8D,oBAAoB,CAACrE,uBAAe,CAACsE,QAAQ,CAAC;UAChE;UACA5C,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAiC,SAAA,CAAAH,IAAA;MAAA;IAAA,GAAAC,QAAA;EAAA,CAClE,GAAC;EAEFxB,EAAE,CAAC,6EAA6E,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAA2B,SAAA;IAAA,OAAA5B,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAA0B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAxB,IAAA,GAAAwB,SAAA,CAAAvB,IAAA;QAAA;UAChF9B,WAAW,CAAC+B,UAAU,CAAC,sCAAsC,EAAEhD,QAAQ,CAAC;UACxEI,SAAS,CAACW,iBAAiB,CAACZ,aAAa,CAAC;UAC1Cc,WAAW,CAAC6C,EAAE,CAACzC,uBAAe,CAACC,aAAa,EAAE,UAACyC,OAAc,EAAK;YAChExC,MAAM,CAACwC,OAAO,CAACP,SAAS,CAAC,CAAC,CAAC,CAACC,aAAa,CAAC9E,UAAU,CAACjB,IAAI,CAACM,MAAM,CAAC;YACjEuD,MAAM,CAACwC,OAAO,CAAC,mBAAmB,CAAC,CAAClG,GAAG,CAAC,CAAC4F,aAAa,CAACjG,UAAU,CAACE,IAAI,CAACC,OAAO,CAACE,GAAG,CAAC;UACrF,CAAC,CAAC;UAACyG,SAAA,CAAAvB,IAAA;UAAA,OAEG9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;QAAA;UAAA8G,SAAA,CAAAvB,IAAA;UAAA,OAE1C9B,WAAW,CAAC,iBAAiB,CAAC,CAACtC,UAAU,CAAC;QAAA;UAChD4C,MAAM,CAACnB,SAAS,CAAC,CAAC8D,oBAAoB,CAACrE,uBAAe,CAACsE,QAAQ,CAAC;UAChE5C,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;QAAC;QAAA;UAAA,OAAA0C,SAAA,CAAAZ,IAAA;MAAA;IAAA,GAAAU,QAAA;EAAA,CAClE,GAAC;EAEFjC,EAAE,CAAC,uDAAuD,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAA8B,SAAA;IAAA,IAAAtC,IAAA;IAAA,OAAAO,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAA6B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA3B,IAAA,GAAA2B,SAAA,CAAA1B,IAAA;QAAA;UAC1D5F,KAAK,CAAC8F,OAAO,CAACC,mBAAmB,CAAC3D,mBAAmB,CAAC;;UAEtD;UAAAkF,SAAA,CAAA1B,IAAA;UAAA,OACmB9B,WAAW,CAACkC,UAAU,CAACjE,IAAI,EAAEkE,oBAAa,CAACC,QAAQ,EAAEnF,QAAQ,EAAE6B,UAAU,CAAC;QAAA;UAAvFkC,IAAI,GAAAwC,SAAA,CAAAnB,IAAA;UAEV/B,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;UAChE;;UAEAxB,SAAS,CAACW,iBAAiB,CAACZ,aAAa,CAAC;UAC1CpB,eAAe,CAACrB,IAAI,CAACS,aAAa,GAAG8D,IAAI,CAACyC,gBAAgB,CAAC,CAAC;UAC5DzD,WAAW,CAAC,iBAAiB,CAAC,CAAClC,eAAe,CAAC;;UAE/C;UAAA0F,SAAA,CAAA1B,IAAA;UAAA,OACM,IAAAkB,mBAAY,EAAC,EAAE,CAAC;QAAA;UAEtB1C,MAAM,CAACb,cAAc,CAAC,CAACiE,gBAAgB,CAAC,CAAC;UACzCpD,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;QAAC;QAAA;UAAA,OAAA6C,SAAA,CAAAf,IAAA;MAAA;IAAA,GAAAa,QAAA;EAAA,CAClE,GAAC;EAEFpC,EAAE,CAAC,gEAAgE,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAmC,SAAA;IAAA,OAAApC,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAkC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAhC,IAAA,GAAAgC,SAAA,CAAA/B,IAAA;QAAA;UACnE5F,KAAK,CAAC8F,OAAO,CAACC,mBAAmB,CAAC3D,mBAAmB,CAAC;;UAEtD;UAAAuF,SAAA,CAAA/B,IAAA;UAAA,OACM9B,WAAW,CAACkC,UAAU,CAACjE,IAAI,EAAEkE,oBAAa,CAACC,QAAQ,EAAEnF,QAAQ,EAAE6B,UAAU,CAAC;QAAA;UAEhFwB,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;UAChE;;UAEAxB,SAAS,CAACW,iBAAiB,CAACZ,aAAa,CAAC;UAC1CpB,eAAe,CAACrB,IAAI,CAACS,aAAa,GAAG,MAAM;UAC3C8C,WAAW,CAAC,iBAAiB,CAAC,CAAClC,eAAe,CAAC;;UAE/C;UAAA+F,SAAA,CAAA/B,IAAA;UAAA,OACM,IAAAkB,mBAAY,EAAC,EAAE,CAAC;QAAA;UAEtB1C,MAAM,CAACb,cAAc,CAAC,CAACqE,GAAG,CAACJ,gBAAgB,CAAC,CAAC;UAC7CpD,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAkD,SAAA,CAAApB,IAAA;MAAA;IAAA,GAAAkB,QAAA;EAAA,CAClE,GAAC;EAEFzC,EAAE,CAAC,0DAA0D,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAuC,SAAA;IAAA,IAAAC,OAAA;IAAA,OAAAzC,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAuC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAArC,IAAA,GAAAqC,SAAA,CAAApC,IAAA;QAAA;UAC7D9B,WAAW,CAAC+B,UAAU,CAAC,sCAAsC,EAAEhD,QAAQ,CAAC;UACxE;UACAG,aAAa,CAACX,UAAU,GAAG,GAAG;UAC9BY,SAAS,CAACgF,iBAAiB,CAACjF,aAAa,CAAC;UAEpC8E,OAAO,GAAG5E,IAAI,CAACC,KAAK,CAAC+E,eAAG,EAAE,MAAM,CAAC;UAAAF,SAAA,CAAApC,IAAA;UAAA,OAEjC9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;QAAA;UAAA2H,SAAA,CAAApC,IAAA;UAAA,OAC1C,IAAAkB,mBAAY,EAAC,EAAE,CAAC;QAAA;UAAAkB,SAAA,CAAApC,IAAA;UAAA,OAChB9B,WAAW,CAAC,iBAAiB,CAAC,CAACtC,UAAU,CAAC;QAAA;UAAAwG,SAAA,CAAApC,IAAA;UAAA,OAC1C,IAAAkB,mBAAY,EAAC,EAAE,CAAC;QAAA;UAEtB1C,MAAM,CAACnB,SAAS,CAAC,CAAC8D,oBAAoB,CAACrE,uBAAe,CAACsE,QAAQ,CAAC;UAChE5C,MAAM,CAAC0D,OAAO,CAAC,CAACf,oBAAoB,CAAC,mCAAmC,EAAE;YACxEoB,IAAI,EAAE,MAAM;YACZC,MAAM,EAAE;UACV,CAAC,CAAC;UACF;UACAhE,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAuD,SAAA,CAAAzB,IAAA;MAAA;IAAA,GAAAsB,QAAA;EAAA,CAClE,GAAC;EAEF7C,EAAE,CAAC,iCAAiC,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAA+C,SAAA;IAAA,IAAAvD,IAAA;IAAA,OAAAO,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAA8C,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA5C,IAAA,GAAA4C,SAAA,CAAA3C,IAAA;QAAA;UACpC9B,WAAW,CAAC+B,UAAU,CAAC,sCAAsC,EAAEhD,QAAQ,CAAC;UAGxEiB,WAAW,CAAC6C,EAAE,CAACzC,uBAAe,CAACC,aAAa;YAAA,IAAAqE,KAAA,OAAApD,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAmD,SAAO7B,OAAc;cAAA,IAAA8B,QAAA,EAAAC,UAAA,EAAAC,KAAA;cAAA,OAAAvD,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAqD,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAnD,IAAA,GAAAmD,SAAA,CAAAlD,IAAA;kBAAA;oBACjExB,MAAM,CAACwC,OAAO,CAACP,SAAS,CAAC,CAAC,CAAC,CAACC,aAAa,CAAC9E,UAAU,CAACjB,IAAI,CAACM,MAAM,CAAC;oBACjEiE,IAAI,GAAG8B,OAAO;oBAACkC,SAAA,CAAAlD,IAAA;oBAAA,OACT,IAAAkB,mBAAY,EAAC,EAAE,CAAC;kBAAA;oBAEhB4B,QAAQ,GAAGxF,IAAI,CAACC,KAAK,CAAC2B,IAAI,CAAC,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;oBACrE6D,UAAU,GAAGzF,IAAI,CAACC,KAAK,CAAC2B,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAACjB,eAAe,CAAC,CAAC,CAAC,CAAC;oBAEnFO,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;oBAChEL,MAAM,CAACU,IAAI,CAAC,kBAAkB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,sBAAsB,CAAC;oBAClFlC,MAAM,CAACnB,SAAS,CAAC,CAAC8D,oBAAoB,CAACrE,uBAAe,CAACsE,QAAQ,CAAC;;oBAEhE;oBAAA8B,SAAA,CAAAlD,IAAA;oBAAA,OACM9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;kBAAA;oBAAAyI,SAAA,CAAAlD,IAAA;oBAAA,OAC1C,IAAAkB,mBAAY,EAAC,EAAE,CAAC;kBAAA;oBACtB1C,MAAM,CAACU,IAAI,CAAC,mBAAmB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,mBAAmB,CAAC;oBAE1EsC,KAAK,GAAG,CAAC,CAAC;oBAEhB;oBAAAE,SAAA,CAAAlD,IAAA;oBAAA,OACMd,IAAI,CAACmE,MAAM,CAAC;sBAACC,eAAe,EAAEN;oBAAK,CAAC,CAAC;kBAAA;oBAAAE,SAAA,CAAAlD,IAAA;oBAAA,OACrC,IAAAkB,mBAAY,EAAC,EAAE,CAAC;kBAAA;oBAEtB1C,MAAM,CAACU,IAAI,CAAC,kBAAkB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,qBAAqB,CAAC;oBACjFlC,MAAM,CAACnB,SAAS,CAAC,CAAC8D,oBAAoB,CAACrE,uBAAe,CAACyG,SAAS,CAAC;oBACjE/E,MAAM,CAACsE,QAAQ,CAAC,CAAClB,gBAAgB,CAAC,CAAC,CAAC,CAAC;;oBAErC;oBACA1C,IAAI,CAAC,0BAA0B,CAAC,CAAC;sBAAC9C,IAAI,EAAE;oBAAoB,CAAC,CAAC;oBAAC8G,SAAA,CAAAlD,IAAA;oBAAA,OAEzD,IAAAkB,mBAAY,EAAC,EAAE,CAAC;kBAAA;oBACtB1C,MAAM,CAACU,IAAI,CAAC,mBAAmB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,oBAAoB,CAAC;;oBAEjF;oBACAjG,UAAU,CAACE,IAAI,CAACC,OAAO,CAACC,WAAW,GAAG,IAAI;oBAACqI,SAAA,CAAAlD,IAAA;oBAAA,OACrC9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;kBAAA;oBAAAyI,SAAA,CAAAlD,IAAA;oBAAA,OAC1C,IAAAkB,mBAAY,EAAC,EAAE,CAAC;kBAAA;oBAEtB1C,MAAM,CAACsE,QAAQ,CAAC,CAAClB,gBAAgB,CAAC,CAAC;oBACnCpD,MAAM,CAACU,IAAI,CAAC,mBAAmB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,WAAW,CAAC;oBACxElC,MAAM,CAACU,IAAI,CAAC,kBAAkB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,oBAAoB,CAAC;;oBAEhF;oBACAjG,UAAU,CAACE,IAAI,CAACC,OAAO,CAACC,WAAW,GAAG,eAAe;oBAACqI,SAAA,CAAAlD,IAAA;oBAAA,OAChD9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;kBAAA;oBAAAyI,SAAA,CAAAlD,IAAA;oBAAA,OAC1C,IAAAkB,mBAAY,EAAC,EAAE,CAAC;kBAAA;oBACtB1C,MAAM,CAACsE,QAAQ,CAAC,CAAClB,gBAAgB,CAAC,CAAC;;oBAEnC;oBACA1C,IAAI,CAAC,0BAA0B,CAAC,CAAC;sBAAC9C,IAAI,EAAE;oBAAmB,CAAC,CAAC;oBAE7DoC,MAAM,CAACU,IAAI,CAAC,mBAAmB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,mBAAmB,CAAC;;oBAEhF;oBACAjG,UAAU,CAACE,IAAI,CAACC,OAAO,CAACC,WAAW,GAAG,QAAQ;oBAACqI,SAAA,CAAAlD,IAAA;oBAAA,OACzC9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;kBAAA;oBAAAyI,SAAA,CAAAlD,IAAA;oBAAA,OAC1C,IAAAkB,mBAAY,EAAC,EAAE,CAAC;kBAAA;oBACtB1C,MAAM,CAACsE,QAAQ,CAAC,CAAClB,gBAAgB,CAAC,CAAC;oBAEnCpD,MAAM,CAACU,IAAI,CAAC,mBAAmB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,WAAW,CAAC;oBACxElC,MAAM,CAACU,IAAI,CAAC,kBAAkB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,oBAAoB,CAAC;;oBAEhF;oBACA1E,eAAe,CAACrB,IAAI,CAACS,aAAa,GAAG8D,IAAI,CAACyC,gBAAgB,CAAC,CAAC;oBAC5DzD,WAAW,CAAC,iBAAiB,CAAC,CAAClC,eAAe,CAAC;oBAACkH,SAAA,CAAAlD,IAAA;oBAAA,OAC1C,IAAAkB,mBAAY,EAAC,EAAE,CAAC;kBAAA;oBAEtB1C,MAAM,CAACb,cAAc,CAAC,CAACiE,gBAAgB,CAAC,CAAC;oBACzCpD,MAAM,CAACuE,UAAU,CAAC,CAACnB,gBAAgB,CAAC,CAAC;oBACrCpD,MAAM,CAACU,IAAI,CAAC,mBAAmB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,iBAAiB,CAAC;oBAC9ElC,MAAM,CAACU,IAAI,CAAC,kBAAkB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,gBAAgB,CAAC;oBAE5ElC,MAAM,CAAC,IAAAC,KAAA,CAAAC,OAAA,EAAYR,WAAW,CAACS,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;kBAAC;kBAAA;oBAAA,OAAAqE,SAAA,CAAAvC,IAAA;gBAAA;cAAA,GAAAkC,QAAA;YAAA,CAClE;YAAA,iBAAAW,EAAA;cAAA,OAAAZ,KAAA,CAAAa,KAAA,OAAAC,SAAA;YAAA;UAAA,IAAC;UAEFrG,SAAS,CAACW,iBAAiB,CAACZ,aAAa,CAAC;UAACuF,SAAA,CAAA3C,IAAA;UAAA,OACrC9B,WAAW,CAAC,iBAAiB,CAAC,CAACtC,UAAU,CAAC;QAAA;QAAA;UAAA,OAAA+G,SAAA,CAAAhC,IAAA;MAAA;IAAA,GAAA8B,QAAA;EAAA,CACjD,GAAC;AACJ,CAAC,CAAC;AAEFtF,QAAQ,CAAC,8BAA8B,EAAE,YAAM;EAC7C,IAAIe,WAAyB;EAC7B,IAAIgB,IAAW;EACf,IAAMyE,WAAW,GAAG,sCAAsC;EAE1DvJ,KAAK,CAAC8F,OAAO,CAACC,mBAAmB,CAAC;IAChC1D,UAAU,EAAE,GAAG;IACfC,IAAI,EAAE;MACJC,MAAM,EAAE;QACNxB,QAAQ,EAAE,sCAAsC;QAChDC,aAAa,EAAE;MACjB,CAAC;MACDH,MAAM,EAAE,sCAAsC;MAC9C2B,QAAQ,EAAE;QACRC,SAAS,EAAEC,uBAAe,CAACC;MAC7B;IACF;EACF,CAAC,CAAC;EAEFoB,UAAU,CAAC,YAAM;IACfD,WAAW,GAAG,IAAAE,2BAAc,EAAChE,KAAK,EAAEE,uBAAuB,CAAC;IAC5D4D,WAAW,CAACG,kBAAkB,CAACC,uBAAe,CAACC,aAAa,CAAC;IAC7DW,IAAI,GAAGhB,WAAW,CAACkC,UAAU,CAACjE,IAAI,EAAEkE,oBAAa,CAACC,QAAQ,EAAEnF,QAAQ,EAAE6B,UAAU,CAAC;IACjFkC,IAAI,CAACsB,SAAS,CAACmD,WAAW,CAAC;IAC3B/H,UAAU,CAACjB,IAAI,CAACS,aAAa,GAAG8D,IAAI,CAACyC,gBAAgB,CAAC,CAAC;EACzD,CAAC,CAAC;EAEF,IAAMiC,OAAO,GAAGtG,IAAI,CAACC,KAAK,CAACC,UAAI,CAACC,SAAS,EAAS,0BAA0B,CAAC;EAC7E,IAAMoG,OAAO,GAAGvG,IAAI,CAACC,KAAK,CAACC,UAAI,CAACC,SAAS,EAAS,yBAAyB,CAAC;EAC5E,IAAMqG,MAAM,GAAGxG,IAAI,CAACC,KAAK,CAAC+E,eAAG,EAAE,KAAK,CAAC;EAErClD,EAAE,CAAC,wBAAwB,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAqE,SAAA;IAAA,IAAAC,SAAA;IAAA,OAAAvE,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAqE,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAnE,IAAA,GAAAmE,SAAA,CAAAlE,IAAA;QAAA;UAC3BvF,UAAU,CAACE,IAAI,CAACM,MAAM,GAAG0I,WAAW;UAACO,SAAA,CAAAlE,IAAA;UAAA,OAE/B9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;QAAA;UAC1CuJ,SAAS,GAAG;YAACrJ,IAAI,EAAEF,UAAU,CAACE,IAAI,CAACC,OAAO;YAAEwB,IAAI,EAAE;UAAmB,CAAC;UAE5EoC,MAAM,CAACoF,OAAO,CAAC,CAACO,wBAAwB,CAACH,SAAS,CAAC;QAAC;QAAA;UAAA,OAAAE,SAAA,CAAAvD,IAAA;MAAA;IAAA,GAAAoD,QAAA;EAAA,CACrD,GAAC;EAEF3E,EAAE,CAAC,yBAAyB,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAA0E,UAAA;IAAA,IAAAJ,SAAA;IAAA,OAAAvE,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAyE,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAvE,IAAA,GAAAuE,UAAA,CAAAtE,IAAA;QAAA;UAC5BvF,UAAU,CAACE,IAAI,CAACC,OAAO,CAACC,WAAW,GAAG,QAAQ;UAACyJ,UAAA,CAAAtE,IAAA;UAAA,OACzC9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;QAAA;UAE1CuJ,SAAS,GAAG;YAACrJ,IAAI,EAAEF,UAAU,CAACE,IAAI,CAACC,OAAO;YAAEwB,IAAI,EAAE;UAAoB,CAAC;UAE7EoC,MAAM,CAACoF,OAAO,CAAC,CAACzC,oBAAoB,CAAC6C,SAAS,CAAC;QAAC;QAAA;UAAA,OAAAM,UAAA,CAAA3D,IAAA;MAAA;IAAA,GAAAyD,SAAA;EAAA,CACjD,GAAC;EAEFhF,EAAE,CAAC,gCAAgC,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAA6E,UAAA;IAAA,IAAAP,SAAA;IAAA,OAAAvE,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAA4E,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAA1E,IAAA,GAAA0E,UAAA,CAAAzE,IAAA;QAAA;UACnCvF,UAAU,CAACE,IAAI,CAACC,OAAO,CAACC,WAAW,GAAG,eAAe;UAAC4J,UAAA,CAAAzE,IAAA;UAAA,OAChD9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;QAAA;UAE1CuJ,SAAS,GAAG;YAACrJ,IAAI,EAAEF,UAAU,CAACE,IAAI,CAACC,OAAO;YAAEwB,IAAI,EAAE;UAA2B,CAAC;UAEpFoC,MAAM,CAACoF,OAAO,CAAC,CAACzC,oBAAoB,CAAC6C,SAAS,CAAC;QAAC;QAAA;UAAA,OAAAS,UAAA,CAAA9D,IAAA;MAAA;IAAA,GAAA4D,SAAA;EAAA,CACjD,GAAC;EAEFnF,EAAE,CAAC,qBAAqB,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAgF,UAAA;IAAA,IAAAC,OAAA,EAAAX,SAAA;IAAA,OAAAvE,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAgF,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAA9E,IAAA,GAAA8E,UAAA,CAAA7E,IAAA;QAAA;UACxBvF,UAAU,CAACE,IAAI,CAACC,OAAO,CAACC,WAAW,GAAG,IAAI;UAACgK,UAAA,CAAA7E,IAAA;UAAA,OACrC9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;QAAA;UAE1CkK,OAAO,GAAG;YAACG,QAAQ,EAAE,IAAI;YAAElK,OAAO,EAAEH,UAAU,CAACE,IAAI,CAACC;UAAO,CAAC;UAC5DoJ,SAAS,GAAG;YAACrJ,IAAI,EAAEgK,OAAO;YAAEvI,IAAI,EAAE;UAAW,CAAC;UAEpDoC,MAAM,CAACoF,OAAO,CAAC,CAACzC,oBAAoB,CAAC6C,SAAS,CAAC;QAAC;QAAA;UAAA,OAAAa,UAAA,CAAAlE,IAAA;MAAA;IAAA,GAAA+D,SAAA;EAAA,CACjD,GAAC;EAEFtF,EAAE,CAAC,wBAAwB,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAqF,UAAA;IAAA,OAAAtF,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAoF,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAlF,IAAA,GAAAkF,UAAA,CAAAjF,IAAA;QAAA;UAC3BvF,UAAU,CAACE,IAAI,CAACC,OAAO,CAACC,WAAW,GAAG,OAAO;UAACoK,UAAA,CAAAjF,IAAA;UAAA,OACxC9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;QAAA;UAEhD+D,MAAM,CAACsF,MAAM,CAAC,CAAC3C,oBAAoB,CAAC,mBAAmB,EAAE;YACvDoB,IAAI,EAAE,aAAa;YACnBC,MAAM,EAAE;UACV,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAyC,UAAA,CAAAtE,IAAA;MAAA;IAAA,GAAAoE,SAAA;EAAA,CACJ,GAAC;EAEF3F,EAAE,CAAC,gCAAgC,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAwF,UAAA;IAAA,OAAAzF,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAuF,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAArF,IAAA,GAAAqF,UAAA,CAAApF,IAAA;QAAA;UACnCvF,UAAU,CAACE,IAAI,CAACC,OAAO,CAACC,WAAW,GAAG,SAAS;UAACuK,UAAA,CAAApF,IAAA;UAAA,OAC1C9B,WAAW,CAAC,iBAAiB,CAAC,CAACzD,UAAU,CAAC;QAAA;UAEhD+D,MAAM,CAACsF,MAAM,CAAC,CAAC3C,oBAAoB,CAAC,qCAAqC,EAAE;YACzEoB,IAAI,EAAE,aAAa;YACnBC,MAAM,EAAE;UACV,CAAC,CAAC;QAAC;QAAA;UAAA,OAAA4C,UAAA,CAAAzE,IAAA;MAAA;IAAA,GAAAuE,SAAA;EAAA,CACJ,GAAC;EAEF9F,EAAE,CAAC,yCAAyC,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAA2F,UAAA;IAAA,OAAA5F,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAA0F,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAxF,IAAA,GAAAwF,UAAA,CAAAvF,IAAA;QAAA;UAC5CpE,UAAU,CAACjB,IAAI,CAACU,SAAS,GAAG,qBAAqB;UAACkK,UAAA,CAAAvF,IAAA;UAAA,OAC5C9B,WAAW,CAAC,iBAAiB,CAAC,CAACtC,UAAU,CAAC;QAAA;UAChD4C,MAAM,CAACqF,OAAO,CAAC,CAAC1C,oBAAoB,CAAC;YAAC/E,IAAI,EAAE,sBAAsB;YAAEzB,IAAI,EAAEiB,UAAU,CAACjB;UAAI,CAAC,CAAC;QAAC;QAAA;UAAA,OAAA4K,UAAA,CAAA5E,IAAA;MAAA;IAAA,GAAA0E,SAAA;EAAA,CAC7F,GAAC;EAEFjG,EAAE,CAAC,gDAAgD,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAA8F,UAAA;IAAA,IAAAC,YAAA;IAAA,OAAAhG,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAA8F,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAA5F,IAAA,GAAA4F,UAAA,CAAA3F,IAAA;QAAA;UACnDd,IAAI,CAAC,kBAAkB,CAAC,CAACiE,KAAK,CAACC,KAAK,GAAG,qBAAqB;UAC5D5E,MAAM,CAACU,IAAI,CAAC,kBAAkB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,qBAAqB,CAAC;UAE3E+E,YAAY,GAAGG,IAAI,CAACC,KAAK,CAAC,IAAAC,UAAA,CAAApH,OAAA,EAAe9C,UAAU,CAAC,CAAC;UAE3D6J,YAAY,CAAC9K,IAAI,CAACU,SAAS,GAAG,sBAAsB;UAACsK,UAAA,CAAA3F,IAAA;UAAA,OAC/C9B,WAAW,CAAC,iBAAiB,CAAC,CAACuH,YAAY,CAAC;QAAA;UAElD;UACAjH,MAAM,CAACU,IAAI,CAAC,kBAAkB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,qBAAqB,CAAC;QAAC;QAAA;UAAA,OAAAiF,UAAA,CAAAhF,IAAA;MAAA;IAAA,GAAA6E,SAAA;EAAA,CACnF,GAAC;EAEFpG,EAAE,CAAC,8DAA8D,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAqG,UAAA;IAAA,IAAAC,WAAA;IAAA,OAAAvG,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAqG,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAnG,IAAA,GAAAmG,UAAA,CAAAlG,IAAA;QAAA;UACjEd,IAAI,CAAC,mBAAmB,CAAC,CAACiE,KAAK,CAACC,KAAK,GAAG,WAAW;UACnD5E,MAAM,CAACU,IAAI,CAAC,mBAAmB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,WAAW,CAAC;UAElEsF,WAAW,GAAGJ,IAAI,CAACC,KAAK,CAAC,IAAAC,UAAA,CAAApH,OAAA,EAAejE,UAAU,CAAC,CAAC;UAE1DuL,WAAW,CAACrL,IAAI,CAACC,OAAO,CAACC,WAAW,GAAG,QAAQ;UAACqL,UAAA,CAAAlG,IAAA;UAAA,OAC1C9B,WAAW,CAAC,iBAAiB,CAAC,CAAC8H,WAAW,CAAC;QAAA;UAEjD;UACAxH,MAAM,CAACU,IAAI,CAAC,mBAAmB,CAAC,CAACiE,KAAK,CAACC,KAAK,CAAC,CAAC1C,aAAa,CAAC,WAAW,CAAC;QAAC;QAAA;UAAA,OAAAwF,UAAA,CAAAvF,IAAA;MAAA;IAAA,GAAAoF,SAAA;EAAA,CAC1E,GAAC;EAEF3G,EAAE,CAAC,qCAAqC,mBAAAI,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAE,SAAAyG,UAAA;IAAA,OAAA1G,YAAA,CAAAf,OAAA,CAAAkB,IAAA,UAAAwG,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAtG,IAAA,GAAAsG,UAAA,CAAArG,IAAA;QAAA;UACxCpE,UAAU,CAACjB,IAAI,CAACU,SAAS,GAAG,oBAAoB;UAACgL,UAAA,CAAArG,IAAA;UAAA,OAC3C9B,WAAW,CAAC,iBAAiB,CAAC,CAACtC,UAAU,CAAC;QAAA;UAChD4C,MAAM,CAACsF,MAAM,CAAC,CAAC3C,oBAAoB,CAAC,oDAAoD,EAAE;YACxFoB,IAAI,EAAE,aAAa;YACnBC,MAAM,EAAE;UACV,CAAC,CAAC;QAAC;QAAA;UAAA,OAAA6D,UAAA,CAAA1F,IAAA;MAAA;IAAA,GAAAwF,SAAA;EAAA,CACJ,GAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"names":["_Utils","require","_types","_testUtil","_callManager","_types2","_call","_Logger","_interopRequireDefault","_types3","webex","getTestUtilsWebex","defaultServiceIndicator","ServiceIndicator","CALLING","mediaEvent","id","data","message","messageType","sdp","seq","version","callId","callUrl","deviceId","correlationId","eventType","timestamp","trackingId","alertType","headers","sequenceNumber","filterMessage","setupEvent","callerId","from","broadworksCorrelationInfo","disconnectEvent","causecode","cause","dest","type","CallType","URI","address","successResponseBody","statusCode","body","device","callData","callState","MobiusCallState","PROCEEDING","mockLineId","mockLine","lineId","describe","dummyResponse","patchMock","jest","spyOn","Call","prototype","setDisconnectReasonMock","deleteCallMock","initMediaConnectionMock","mediaRoapEventsListenerMock","mediaTrackListenerMock","postMediaMock","mockResolvedValue","mockReturnValue","callManager","beforeEach","getCallManager","removeAllListeners","LINE_EVENT_KEYS","INCOMING_CALL","expect","_keys","default","getActiveCalls","length","toBe","afterEach","calls","_values","forEach","call","end","it","toBeTruthy","callManagerNew","toMatchObject","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","updateLine","request","mockReturnValueOnce","createCall","CallDirection","OUTBOUND","sent","setCallId","getCallId","toStrictEqual","stop","_callee2","_callee2$","_context2","on","callObj","getBroadworksCorrelationInfo","waitForMsecs","toHaveBeenCalledWith","ALERTING","_callee3","_callee3$","_context3","_callee4","_callee4$","_context4","getCorrelationId","toHaveBeenCalled","_callee5","_callee5$","_context5","not","_callee6","warnSpy","_callee6$","_context6","mockRejectedValue","log","file","method","_callee8","_callee8$","_context8","_ref8","_callee7","mediaSpy","mediaClose","track","_callee7$","_context7","state","value","answer","localAudioTrack","CONNECTED","_x","apply","arguments","dummyCallId","funcSpy","callSpy","logSpy","_callee9","eventData","_callee9$","_context9","toHaveBeenLastCalledWith","_callee10","_callee10$","_context10","_callee11","_callee11$","_context11","_callee12","mediaOK","_callee12$","_context12","received","_callee13","_callee13$","_context13","_callee14","_callee14$","_context14","_callee15","_callee15$","_context15","_callee16","connectEvent","_callee16$","_context16","JSON","parse","_stringify","_callee17","answerEvent","_callee17$","_context17","_callee18","_callee18$","_context18"],"sources":["callManager.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable dot-notation */\nimport {waitForMsecs} from '../../common/Utils';\nimport {CallDirection, CallType, ServiceIndicator} from '../../common/types';\nimport {getTestUtilsWebex} from '../../common/testUtil';\nimport {getCallManager} from './callManager';\nimport {ICall, ICallManager, MobiusCallState} from './types';\nimport {Call} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\nimport {LINE_EVENT_KEYS} from '../../Events/types';\n\nconst webex = getTestUtilsWebex();\nconst defaultServiceIndicator = ServiceIndicator.CALLING;\n\nconst mediaEvent = {\n id: '73e6a2b2-968c-44ea-a536-e7702722f8d8',\n data: {\n message: {\n messageType: 'OFFER',\n sdp: 'v=0\\r\\no=BroadWorks 175625 1653906127914 IN IP4 207.182.171.180\\r\\ns=-\\r\\nc=IN IP4 207.182.171.180\\r\\nt=0 0\\r\\na=ice-lite\\r\\nm=audio 19564 UDP/TLS/RTP/SAVPF 99 9 0 8 18 102 101\\r\\na=sendrecv\\r\\na=rtpmap:99 opus/48000/2\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:18 G729/8000\\r\\na=fmtp:18 annexb=no\\r\\na=rtpmap:102 iLBC/8000\\r\\na=fmtp:102 mode=30\\r\\na=rtpmap:101 telephone-event/8000\\r\\na=rtcp-mux\\r\\na=setup:actpass\\r\\na=ssrc:379289707 cname:HC3h2tromqGgnGaf\\r\\na=ice-ufrag:mLbW\\r\\na=ice-pwd:Hct9MYtML1sedttd8fLCg9aJ\\r\\na=fingerprint:sha-256 5E:F5:3D:98:57:03:D7:73:8F:C3:D4:FC:EC:FE:7F:4D:04:D8:EE:2A:29:C4:9F:35:C5:0F:D1:2D:CE:E4:AE:AA\\r\\na=candidate:mse 1 UDP 2130706431 207.182.171.180 19564 typ host\\r\\na=candidate:mse 2 UDP 2130706430 207.182.171.180 19565 typ host',\n seq: 1,\n version: '2',\n },\n callId: 'f2e89262-7d9a-489f-b65d-3b56a31c7bfe',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/14ef3832-a7af-4457-a660-fd1918d627d0]',\n deviceId: '375b8503-f716-3407-853b-cd9a8c4419a7',\n correlationId: '',\n eventType: 'mobius.media',\n },\n timestamp: 1653906128188,\n trackingId: 'ROUTER_62949AD0-DB6E-01BB-595A-03158964595A',\n alertType: 'full',\n headers: {},\n sequenceNumber: 7,\n filterMessage: false,\n};\n\nconst setupEvent = {\n id: '3ee919c7-202d-4f8c-9b74-e5ee8a693dfa',\n data: {\n callerId: {\n 'x-broadworks-remote-party-info':\n 'userId=\"hkkcq0ekby@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865895;ext=5008;country-code=1\";externalId=652fe0c7-05ce-4acd-8bda-9a080830187f',\n from: '\"Bob Marley\" <sip:5008@207.182.171.130;user=phone>;tag=379221777-1653906128003-',\n },\n callId: 'f2e89262-7d9a-489f-b65d-3b56a31c7bfe',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/14ef3832-a7af-4457-a660-fd1918d627d0]',\n deviceId: '375b8503-f716-3407-853b-cd9a8c4419a7',\n correlationId: '',\n eventType: 'mobius.call',\n broadworksCorrelationInfo: 'Sample_broadworksCorrelationInfo',\n },\n timestamp: 1653906128159,\n trackingId: 'ROUTER_62949AD0-DB6E-01BB-595A-03158964595A',\n alertType: 'full',\n headers: {},\n sequenceNumber: 6,\n filterMessage: false,\n};\n\nconst disconnectEvent = {\n id: 'f3e37504-5867-48ea-8d67-4e82b3ce1755',\n data: {\n causecode: 0,\n cause: 'Normal disconnect',\n callId: 'cbfe802c-cc8d-407f-863d-0abf8d6cc497',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/5691641c-7f0c-47a4-b248-e585ebcf653d]',\n deviceId: 'b9270663-54c8-3540-b01f-ed807dc5f9e8',\n correlationId: '',\n eventType: 'mobius.calldisconnected',\n },\n timestamp: 1653925625934,\n trackingId: 'NA_fe7efbbc-de52-438c-a6c3-58e96db230ba',\n alertType: 'full',\n headers: {},\n sequenceNumber: 6,\n filterMessage: false,\n};\nconst deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';\nconst dest = {\n type: CallType.URI,\n address: 'tel:5003',\n};\n\nconst successResponseBody = {\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n};\n\nconst mockLineId = 'e4e8ee2a-a154-4e52-8f11-ef4cde2dce72';\nconst mockLine = {\n lineId: mockLineId,\n} as ILine;\n\ndescribe('Call Manager Tests with respect to calls', () => {\n const dummyResponse = {\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n },\n };\n\n const patchMock = jest.spyOn(Call.prototype as any, 'patch');\n const setDisconnectReasonMock = jest.spyOn(Call.prototype as any, 'setDisconnectReason');\n const deleteCallMock = jest.spyOn(Call.prototype as any, 'delete');\n const initMediaConnectionMock = jest.spyOn(Call.prototype as any, 'initMediaConnection');\n const mediaRoapEventsListenerMock = jest.spyOn(Call.prototype as any, 'mediaRoapEventsListener');\n const mediaTrackListenerMock = jest.spyOn(Call.prototype as any, 'mediaTrackListener');\n const postMediaMock = jest.spyOn(Call.prototype as any, 'postMedia');\n\n deleteCallMock.mockResolvedValue(dummyResponse); // Both are using dummy response\n setDisconnectReasonMock.mockReturnValue({});\n initMediaConnectionMock.mockReturnValue({});\n mediaRoapEventsListenerMock.mockReturnValue({});\n mediaTrackListenerMock.mockReturnValue({});\n postMediaMock.mockResolvedValue({});\n\n let callManager: ICallManager;\n\n beforeEach(() => {\n callManager = getCallManager(webex, defaultServiceIndicator);\n callManager.removeAllListeners(LINE_EVENT_KEYS.INCOMING_CALL);\n /* expect 0 calls at the beginning of each test as we are clearing calls at the end of every test case */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n afterEach(() => {\n /* lets clear all calls at the end of every test case */\n const calls = Object.values(callManager.getActiveCalls());\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('check instance of call manager', () => {\n expect(callManager).toBeTruthy();\n });\n\n it('Check whether callManager is singleton', () => {\n const callManagerNew = getCallManager(webex, defaultServiceIndicator);\n\n expect(callManager).toMatchObject(callManagerNew);\n });\n\n it('create a call using call manager', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n webex.request.mockReturnValueOnce({\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n });\n\n expect(callManager).toBeTruthy();\n const call = await callManager.createCall(CallDirection.OUTBOUND, deviceId, mockLineId, dest);\n\n call.setCallId('8a67806f-fc4d-446b-a131-31e71ea5b020');\n\n expect(call).toBeTruthy();\n expect(call.getCallId()).toStrictEqual('8a67806f-fc4d-446b-a131-31e71ea5b020');\n expect(call.lineId).toStrictEqual(mockLineId);\n });\n\n it('Accept an incoming call from Mobius where Call Setup was the first message', async () => {\n callManager.updateLine('375b8503-f716-3407-853b-cd9a8c4419a7', mockLine);\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n expect(callObj.getBroadworksCorrelationInfo()).toStrictEqual(\n setupEvent.data.broadworksCorrelationInfo\n );\n expect(callObj.lineId).toStrictEqual(mockLineId);\n });\n patchMock.mockResolvedValue(dummyResponse);\n\n await callManager['dequeueWsEvents'](setupEvent);\n await waitForMsecs(50);\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n /* setUp event should create the call and count will be 1 for new call */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Accept an incoming call from Mobius where Media Event was the first message', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n patchMock.mockResolvedValue(dummyResponse);\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n expect(callObj['remoteRoapMessage'].sdp).toStrictEqual(mediaEvent.data.message.sdp);\n });\n\n await callManager['dequeueWsEvents'](mediaEvent);\n /* check whether SDP is buffered */\n await callManager['dequeueWsEvents'](setupEvent);\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Disconnect a call if received a Call Disconnect event', async () => {\n webex.request.mockReturnValueOnce(successResponseBody);\n\n /* lets add a call to disconnect it later */\n const call = await callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n /* clear the last added call */\n\n patchMock.mockResolvedValue(dummyResponse);\n disconnectEvent.data.correlationId = call.getCorrelationId();\n callManager['dequeueWsEvents'](disconnectEvent);\n\n /* Add a small delay , to simulate sending of Delete request and clearing from Call records */\n await waitForMsecs(50);\n\n expect(deleteCallMock).toHaveBeenCalled();\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n it('Do not Disconnect a call if call has been disconnected already', async () => {\n webex.request.mockReturnValueOnce(successResponseBody);\n\n /* lets add a call to disconnect it later */\n await callManager.createCall(CallDirection.OUTBOUND, deviceId, mockLineId, dest);\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n /* clear the last added call */\n\n patchMock.mockResolvedValue(dummyResponse);\n disconnectEvent.data.correlationId = '1234';\n callManager['dequeueWsEvents'](disconnectEvent);\n\n /* Add a small delay , to simulate sending of Delete request and clearing from Call records */\n await waitForMsecs(50);\n\n expect(deleteCallMock).not.toHaveBeenCalled();\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Accept an incoming call but Outgoing patch request fails', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n /* Intentionally failing the Patch with 503 */\n dummyResponse.statusCode = 503;\n patchMock.mockRejectedValue(dummyResponse);\n\n const warnSpy = jest.spyOn(log, 'warn');\n\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n await callManager['dequeueWsEvents'](setupEvent);\n await waitForMsecs(50);\n\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n expect(warnSpy).toHaveBeenCalledWith('Failed to signal call progression', {\n file: 'call',\n method: 'handleOutgoingCallAlerting',\n });\n /* No calls should have been added as call progress failed */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n it('Walk through an End to End call', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n let call: ICall;\n\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, async (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n call = callObj;\n await waitForMsecs(50);\n\n const mediaSpy = jest.spyOn(call['mediaConnection'], 'roapMessageReceived');\n const mediaClose = jest.spyOn(call['mediaConnection'], 'close').mockReturnValue({});\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(3);\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_PROGRESS');\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n\n /* Receive ROAP Offer */\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_RECV_ROAP_OFFER');\n\n const track = {} as MediaStreamTrack;\n\n /* User answers the call */\n await call.answer({localAudioTrack: track});\n await waitForMsecs(50);\n\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.CONNECTED);\n expect(mediaSpy).toHaveBeenCalled(); /* We pass the offer to media connection */\n\n /* We are manually sending this event , ideally it will sent by MediaConnection. */\n call['sendMediaStateMachineEvt']({type: 'E_SEND_ROAP_ANSWER'});\n\n await waitForMsecs(50);\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_SEND_ROAP_ANSWER');\n\n /* Simulate ROAP_OK */\n mediaEvent.data.message.messageType = 'OK';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n\n expect(mediaSpy).toHaveBeenCalled();\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n /* Simulate ROAP Offer_request */\n mediaEvent.data.message.messageType = 'OFFER_REQUEST';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(mediaSpy).toHaveBeenCalled();\n\n /* We are manually sending this event , ideally it will sent by Media Connection. */\n call['sendMediaStateMachineEvt']({type: 'E_SEND_ROAP_OFFER'});\n\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_SEND_ROAP_OFFER');\n\n /* Simulate ROAP Answer */\n mediaEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(mediaSpy).toHaveBeenCalled();\n\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n /* Start Call disconnect */\n disconnectEvent.data.correlationId = call.getCorrelationId();\n callManager['dequeueWsEvents'](disconnectEvent);\n await waitForMsecs(50);\n\n expect(deleteCallMock).toHaveBeenCalled();\n expect(mediaClose).toHaveBeenCalled();\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_TEARDOWN');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_CLEARED');\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(2);\n });\n\n patchMock.mockResolvedValue(dummyResponse);\n await callManager['dequeueWsEvents'](setupEvent);\n });\n});\n\ndescribe('Coverage for Events listener', () => {\n let callManager: ICallManager;\n let call: ICall;\n const dummyCallId = '8a67806f-fc4d-4469-a131-31e71ec5b011';\n\n webex.request.mockReturnValueOnce({\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n });\n\n beforeEach(() => {\n callManager = getCallManager(webex, defaultServiceIndicator);\n callManager.removeAllListeners(LINE_EVENT_KEYS.INCOMING_CALL);\n call = callManager.createCall(CallDirection.OUTBOUND, deviceId, mockLineId, dest);\n call.setCallId(dummyCallId);\n setupEvent.data.correlationId = call.getCorrelationId();\n });\n\n const funcSpy = jest.spyOn(Call.prototype as any, 'sendMediaStateMachineEvt');\n const callSpy = jest.spyOn(Call.prototype as any, 'sendCallStateMachineEvt');\n const logSpy = jest.spyOn(log, 'log');\n\n it('When Offer is received', async () => {\n mediaEvent.data.callId = dummyCallId;\n\n await callManager['dequeueWsEvents'](mediaEvent);\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_OFFER'};\n\n expect(funcSpy).toHaveBeenLastCalledWith(eventData);\n });\n\n it('When Answer is received', async () => {\n mediaEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_ANSWER'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Offer Request is received', async () => {\n mediaEvent.data.message.messageType = 'OFFER_REQUEST';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_OFFER_REQUEST'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When OK is received', async () => {\n mediaEvent.data.message.messageType = 'OK';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const mediaOK = {received: true, message: mediaEvent.data.message};\n const eventData = {data: mediaOK, type: 'E_ROAP_OK'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Error is Received', async () => {\n mediaEvent.data.message.messageType = 'ERROR';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n expect(logSpy).toHaveBeenCalledWith('Received Error...', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('When Unknown event is Received', async () => {\n mediaEvent.data.message.messageType = 'UNKNOWN';\n await callManager['dequeueWsEvents'](mediaEvent);\n\n expect(logSpy).toHaveBeenCalledWith('Unknown Media mobiusEvent: UNKNOWN ', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('When Progress/Connect event is Received', async () => {\n setupEvent.data.eventType = 'mobius.callprogress';\n await callManager['dequeueWsEvents'](setupEvent);\n expect(callSpy).toHaveBeenCalledWith({type: 'E_RECV_CALL_PROGRESS', data: setupEvent.data});\n });\n\n it('Silently discard an event in the state machine', async () => {\n call['callStateMachine'].state.value = 'S_SEND_CALL_CONNECT';\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n\n const connectEvent = JSON.parse(JSON.stringify(setupEvent));\n\n connectEvent.data.eventType = 'mobius.callconnected';\n await callManager['dequeueWsEvents'](connectEvent);\n\n /* There should not be any state change */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n });\n\n it('Silently discard an ROAP_ANSWER after being in ROAP_OK state', async () => {\n call['mediaStateMachine'].state.value = 'S_ROAP_OK';\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n\n const answerEvent = JSON.parse(JSON.stringify(mediaEvent));\n\n answerEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](answerEvent);\n\n /* There should not be any state change */\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n });\n\n it('When Unknown Call event is Received', async () => {\n setupEvent.data.eventType = 'mobius.callunknown';\n await callManager['dequeueWsEvents'](setupEvent);\n expect(logSpy).toHaveBeenCalledWith('Unknown Call Event mobiusEvent: mobius.callunknown', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n});\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
|
|
|
4
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.TransferType = exports.RoapScenario = exports.MobiusEventType = exports.MobiusCallState = exports.MidCallEventType = exports.MediaState = exports.DisconnectCode = exports.DisconnectCause = void 0;
|
|
7
|
+
exports.TransferType = exports.RoapScenario = exports.MobiusEventType = exports.MobiusCallState = exports.MidCallEventType = exports.MediaState = exports.MUTE_TYPE = exports.DisconnectCode = exports.DisconnectCause = void 0;
|
|
8
8
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
9
9
|
var MobiusEventType = exports.MobiusEventType = /*#__PURE__*/function (MobiusEventType) {
|
|
10
10
|
MobiusEventType["CALL_SETUP"] = "mobius.call";
|
|
@@ -60,6 +60,11 @@ var TransferType = exports.TransferType = /*#__PURE__*/function (TransferType) {
|
|
|
60
60
|
TransferType["CONSULT"] = "CONSULT";
|
|
61
61
|
return TransferType;
|
|
62
62
|
}({});
|
|
63
|
+
var MUTE_TYPE = exports.MUTE_TYPE = /*#__PURE__*/function (MUTE_TYPE) {
|
|
64
|
+
MUTE_TYPE["USER"] = "user_mute";
|
|
65
|
+
MUTE_TYPE["SYSTEM"] = "system_mute";
|
|
66
|
+
return MUTE_TYPE;
|
|
67
|
+
}({});
|
|
63
68
|
/**
|
|
64
69
|
* Represents an interface for managing call-related operations.
|
|
65
70
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MobiusEventType","exports","MediaState","DisconnectCode","DisconnectCause","MidCallEventType","RoapScenario","MobiusCallState","TransferType"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {LocalMicrophoneStream} from '@webex/internal-media-core';\nimport {CallError} from '../../Errors/catalog/CallError';\nimport {\n CallDetails,\n CallDirection,\n CallId,\n CorrelationId,\n DisplayInformation,\n} from '../../common/types';\nimport {Eventing} from '../../Events/impl';\nimport {CallerIdInfo, CallEvent, CallEventTypes, RoapEvent, RoapMessage} from '../../Events/types';\nimport {ILine} from '../line/types';\n\nexport enum MobiusEventType {\n CALL_SETUP = 'mobius.call',\n CALL_PROGRESS = 'mobius.callprogress',\n CALL_CONNECTED = 'mobius.callconnected',\n CALL_MEDIA = 'mobius.media',\n CALL_DISCONNECTED = 'mobius.calldisconnected',\n}\n\nexport enum MediaState {\n OFFER = 'OFFER',\n ANSWER = 'ANSWER',\n OFFER_REQUEST = 'OFFER_REQUEST',\n OK = 'OK',\n ERROR = 'ERROR',\n}\n\nexport enum DisconnectCode {\n BUSY = 115,\n NORMAL = 0,\n MEDIA_INACTIVITY = 131,\n}\n\nexport enum DisconnectCause {\n BUSY = 'User Busy.',\n NORMAL = 'Normal Disconnect.',\n MEDIA_INACTIVITY = 'Media Inactivity.',\n}\n\n/* Work in Progress */\nexport enum MidCallEventType {\n CALL_INFO = 'callInfo',\n CALL_STATE = 'callState',\n}\n\nexport type MidCallCallerId = {\n callerId: CallerIdInfo;\n};\nexport type DisconnectReason = {\n code: DisconnectCode;\n cause: DisconnectCause;\n};\n\nexport enum RoapScenario {\n ANSWER = 'ANSWER',\n OK = 'OK',\n OFFER = 'OFFER',\n ERROR = 'ERROR',\n OFFER_RESPONSE = 'OFFER_RESPONSE',\n}\n\nexport enum MobiusCallState {\n PROCEEDING = 'sig_proceeding',\n PROGRESS = 'sig_progress',\n ALERTING = 'sig_alerting',\n CONNECTED = 'sig_connected',\n}\n\nexport type MobiusCallResponse = {\n statusCode: number;\n body: {\n device: {\n deviceId: string;\n correlationId: string;\n };\n callId: CallId;\n callData?: {\n callState: MobiusCallState;\n };\n };\n};\n\nexport type MidCallEvent = {\n eventType: string;\n eventData: unknown;\n};\n\nexport type SupplementaryServiceState = {\n callState: string;\n};\n\nexport type MobiusCallData = {\n callProgressData?: {\n alerting: boolean;\n inbandMedia: boolean;\n };\n message?: RoapMessage;\n callerId: {\n from: string;\n };\n midCallService?: Array<MidCallEvent>;\n callId: CallId;\n callUrl: string;\n deviceId: string;\n correlationId: string;\n eventType: MobiusEventType;\n broadworksCorrelationInfo?: string;\n};\n\nexport type MobiusCallEvent = {\n id: string;\n data: MobiusCallData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type PatchResponse = {\n statusCode: number;\n body: {\n device: {\n deviceId: string;\n correlationId: string;\n };\n callId: CallId;\n };\n};\n\nexport type SSResponse = {\n statusCode: number;\n body: {\n device: {\n deviceId: string;\n correlationId: string;\n };\n callId: CallId;\n };\n};\n\nexport type DivertContext = {\n destination: string;\n toVoicemail: boolean;\n};\n\nexport type TransferContext = {\n transferorCallId: CallId;\n destination?: string;\n transferToCallId?: CallId;\n};\n\nexport enum TransferType {\n BLIND = 'BLIND',\n CONSULT = 'CONSULT',\n}\n\nexport type ParkContext = {\n isGroupPark: boolean;\n destination: string;\n};\n\nexport type MediaContext = {\n previousState: string; // To be used for midcall and error handling.\n};\n\nexport type VoiceQualityMetrics = {\n VoRxCodec: string;\n VoPktSizeMs: number;\n maxJitter: number;\n VoOneWayDelayMs: number;\n networkType: string;\n hwType: string;\n};\n\nexport type TransmitterVqPayload = {\n VoTxCodec: string;\n rtpBitRate: number;\n};\n\nexport type ReceiveStatistics = {\n Dur: number;\n Pkt: number;\n Oct: number;\n LatePkt: number;\n LostPkt: number;\n AvgJit: number;\n VQMetrics: VoiceQualityMetrics;\n};\n\nexport type TransmitStatistics = {\n Dur: number;\n Pkt: number;\n Oct: number;\n VQMetrics: TransmitterVqPayload;\n};\n\nexport type CallRtpStats = {\n 'rtp-rxstat': ReceiveStatistics;\n 'rtp-txstat': TransmitStatistics;\n};\n\n/**\n * Represents an interface for managing call-related operations.\n */\nexport interface ICall extends Eventing<CallEventTypes> {\n /**\n * Fetches the identifier of the line associated with this call.\n *\n */\n lineId: string;\n\n /**\n * Fetches the unique call identifier.\n *\n */\n getCallId(): string;\n\n /**\n * Fetches the correlation identifier for this call.\n *\n */\n getCorrelationId(): string;\n\n /**\n * Fetches the direction of the call (e.g., inbound or outbound).\n *\n */\n getDirection(): CallDirection;\n\n /**\n * Sets the call identifier.\n *\n * @param callId - The new call identifier.\n */\n setCallId(callId: CallId): void;\n\n /**\n * Sends a call state machine event.\n *\n * @param event - The call event to send.\n * @ignore\n */\n sendCallStateMachineEvt(event: CallEvent): void;\n\n /**\n * Sends a media state machine event.\n *\n * @param event - The Roap event to send.\n * @ignore\n */\n sendMediaStateMachineEvt(event: RoapEvent): void;\n\n /**\n * Fetches the reason for disconnecting the call.\n *\n */\n getDisconnectReason(): DisconnectReason;\n\n /**\n * Disconnects the call.\n */\n end(): void;\n\n /**\n * Checks if the call is muted.\n *\n */\n isMuted(): boolean;\n\n /**\n * Checks if the call is connected.\n *\n */\n isConnected(): boolean;\n\n /**\n * Checks if the call is on hold.\n *\n */\n isHeld(): boolean;\n\n /**\n * Performs a hold or resume action on the call.\n */\n doHoldResume(): void;\n\n /**\n * Mutes or unmutes the call's local audio stream.\n *\n * @param localAudioStream - The local audio stream to mute or unmute.\n */\n mute(localAudioStream: LocalMicrophoneStream): void;\n\n /**\n * Fetches the caller information associated with the call.\n *\n */\n getCallerInfo(): DisplayInformation;\n\n /**\n * Initiates caller ID resolution for the call.\n * callerInfo data can be retrieved later by calling {@link getCallerInfo} method.\n * @param callerInfo - The caller ID information to resolve.\n */\n startCallerIdResolution(callerInfo: CallerIdInfo): void;\n\n /**\n * Handles a mid-call event.\n * @param event - The mid-call event to handle.\n * @ignore\n */\n handleMidCallEvent(event: MidCallEvent): void;\n\n /**\n * Dials the call using the provided local audio stream.\n *\n * @param localAudioStream - The local audio stream for the call.\n * @example\n * ```\n * const localAudioStream = await Calling.createMicrophoneStream({audio: true});\n * call.dial(localAudioStream);\n * ```\n */\n dial(localAudioStream: LocalMicrophoneStream): void;\n\n /**\n * Sends a DTMF digit during the call.\n *\n * @param tone - The DTMF tone to send.\n * @example\n * ```\n * call.sendDigit('1');\n * ```\n */\n sendDigit(tone: string): void;\n\n /**\n * Answers the call using the provided local audio stream.\n *\n * @param localAudioStream - The local audio stream for the call.\n *\n * @example\n * ```\n * const localAudioStream = await Calling.createMicrophoneStream({audio: true});\n * call.answer(localAudioStream);\n * ```\n */\n answer(localAudioStream: LocalMicrophoneStream): void;\n\n /**\n * Completes a call transfer.\n *\n * @param transferType - The type of transfer to perform. Eg. BLIND or CONSULT.\n * @param transferCallId - The call identifier for the transfer incase of Consult transfer (optional).\n * @param transferTarget - The target for the transfer incase of Blind transfer(optional).\n * @example\n * ```\n * // blind transfer\n * call.completeTransfer('BLIND', undefined, '5998');\n *\n * // consult transfer\n * call.completeTransfer('CONSULT', secondCall.getCallId(), undefined);\n * ```\n */\n completeTransfer(\n transferType: TransferType,\n transferCallId?: CallId,\n transferTarget?: string\n ): void;\n\n /**\n * Change the audio stream of the call.\n *\n * @param newAudioStream - The new audio stream to be used in the call.\n */\n updateMedia(newAudioStream: LocalMicrophoneStream): void;\n\n /**\n * Fetches the information related to the call's Broadworks correlationId.\n *\n */\n getBroadworksCorrelationInfo(): string | undefined;\n\n /**\n * Sets the Broadworks correlation information for the call.\n *\n * @param broadworksCorrelationInfo - The Broadworks correlation information.\n */\n setBroadworksCorrelationInfo(broadworksCorrelationInfo: string): void;\n\n /**\n * Fetches the RTP (Real-time Transport Protocol) statistics for the call.\n *\n */\n getCallRtpStats(): Promise<CallRtpStats>;\n}\n\nexport type DeleteRecordCallBack = (callId: CallId) => void;\nexport type CallEmitterCallBack = (callerInfo: DisplayInformation) => void;\nexport type CallErrorEmitterCallBack = (error: CallError) => void;\nexport type RetryCallBack = (interval: number) => void;\n\n/**\n * Represents an interface for managing calls within a call manager.\n */\nexport interface ICallManager extends Eventing<CallEventTypes> {\n /**\n * Creates a call with the specified details.\n *\n * @param destination - The call details including destination information.\n * @param direction - The direction of the call (e.g., incoming or outgoing).\n * @param deviceId - The unique identifier of the device associated with the call.\n * @param lineId - The identifier of the line to which the call belongs.\n */\n createCall(\n destination: CallDetails,\n direction: CallDirection,\n deviceId: string,\n lineId: string\n ): ICall;\n\n /**\n * Retrieves a call based on its unique call identifier.\n *\n * @param correlationId - The unique identifier for the call at client\n */\n getCall(correlationId: CorrelationId): ICall;\n\n /**\n * Updates the active Mobius server URL.\n *\n * @param url - The new Mobius server URL to set.\n */\n updateActiveMobius(url: string): void;\n\n /**\n * Retrieves a dictionary of active calls, where each key is a call identifier\n * and the corresponding value is the call object.\n *\n */\n getActiveCalls(): Record<string, ICall>;\n\n /**\n * Updates a line associated with a specific device.\n *\n * @param deviceId - The unique identifier of the device.\n * @param line - The updated line object as {@link ILine}.\n */\n updateLine(deviceId: string, line: ILine): void;\n}\n"],"mappings":";;;;;;;AAAA;AAAA,IAcYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAQfE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAQVC,cAAc,GAAAF,OAAA,CAAAE,cAAA,0BAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAAA,IAMdC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAM3B;AAAA,IACYC,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAAA,IAahBC,YAAY,GAAAL,OAAA,CAAAK,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAA,IAQZC,eAAe,GAAAN,OAAA,CAAAM,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAwFfC,YAAY,GAAAP,OAAA,CAAAO,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAkDxB;AACA;AACA;AAuMA;AACA;AACA"}
|
|
1
|
+
{"version":3,"names":["MobiusEventType","exports","MediaState","DisconnectCode","DisconnectCause","MidCallEventType","RoapScenario","MobiusCallState","TransferType","MUTE_TYPE"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {LocalMicrophoneStream} from '@webex/internal-media-core';\nimport {CallError} from '../../Errors/catalog/CallError';\nimport {\n CallDetails,\n CallDirection,\n CallId,\n CorrelationId,\n DisplayInformation,\n} from '../../common/types';\nimport {Eventing} from '../../Events/impl';\nimport {CallerIdInfo, CallEvent, CallEventTypes, RoapEvent, RoapMessage} from '../../Events/types';\nimport {ILine} from '../line/types';\n\nexport enum MobiusEventType {\n CALL_SETUP = 'mobius.call',\n CALL_PROGRESS = 'mobius.callprogress',\n CALL_CONNECTED = 'mobius.callconnected',\n CALL_MEDIA = 'mobius.media',\n CALL_DISCONNECTED = 'mobius.calldisconnected',\n}\n\nexport enum MediaState {\n OFFER = 'OFFER',\n ANSWER = 'ANSWER',\n OFFER_REQUEST = 'OFFER_REQUEST',\n OK = 'OK',\n ERROR = 'ERROR',\n}\n\nexport enum DisconnectCode {\n BUSY = 115,\n NORMAL = 0,\n MEDIA_INACTIVITY = 131,\n}\n\nexport enum DisconnectCause {\n BUSY = 'User Busy.',\n NORMAL = 'Normal Disconnect.',\n MEDIA_INACTIVITY = 'Media Inactivity.',\n}\n\n/* Work in Progress */\nexport enum MidCallEventType {\n CALL_INFO = 'callInfo',\n CALL_STATE = 'callState',\n}\n\nexport type MidCallCallerId = {\n callerId: CallerIdInfo;\n};\nexport type DisconnectReason = {\n code: DisconnectCode;\n cause: DisconnectCause;\n};\n\nexport enum RoapScenario {\n ANSWER = 'ANSWER',\n OK = 'OK',\n OFFER = 'OFFER',\n ERROR = 'ERROR',\n OFFER_RESPONSE = 'OFFER_RESPONSE',\n}\n\nexport enum MobiusCallState {\n PROCEEDING = 'sig_proceeding',\n PROGRESS = 'sig_progress',\n ALERTING = 'sig_alerting',\n CONNECTED = 'sig_connected',\n}\n\nexport type MobiusCallResponse = {\n statusCode: number;\n body: {\n device: {\n deviceId: string;\n correlationId: string;\n };\n callId: CallId;\n callData?: {\n callState: MobiusCallState;\n };\n };\n};\n\nexport type MidCallEvent = {\n eventType: string;\n eventData: unknown;\n};\n\nexport type SupplementaryServiceState = {\n callState: string;\n};\n\nexport type MobiusCallData = {\n callProgressData?: {\n alerting: boolean;\n inbandMedia: boolean;\n };\n message?: RoapMessage;\n callerId: {\n from: string;\n };\n midCallService?: Array<MidCallEvent>;\n callId: CallId;\n callUrl: string;\n deviceId: string;\n correlationId: string;\n eventType: MobiusEventType;\n broadworksCorrelationInfo?: string;\n};\n\nexport type MobiusCallEvent = {\n id: string;\n data: MobiusCallData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type PatchResponse = {\n statusCode: number;\n body: {\n device: {\n deviceId: string;\n correlationId: string;\n };\n callId: CallId;\n };\n};\n\nexport type SSResponse = {\n statusCode: number;\n body: {\n device: {\n deviceId: string;\n correlationId: string;\n };\n callId: CallId;\n };\n};\n\nexport type DivertContext = {\n destination: string;\n toVoicemail: boolean;\n};\n\nexport type TransferContext = {\n transferorCallId: CallId;\n destination?: string;\n transferToCallId?: CallId;\n};\n\nexport enum TransferType {\n BLIND = 'BLIND',\n CONSULT = 'CONSULT',\n}\n\nexport enum MUTE_TYPE {\n USER = 'user_mute',\n SYSTEM = 'system_mute',\n}\n\nexport type ParkContext = {\n isGroupPark: boolean;\n destination: string;\n};\n\nexport type MediaContext = {\n previousState: string; // To be used for midcall and error handling.\n};\n\nexport type VoiceQualityMetrics = {\n VoRxCodec: string;\n VoPktSizeMs: number;\n maxJitter: number;\n VoOneWayDelayMs: number;\n networkType: string;\n hwType: string;\n};\n\nexport type TransmitterVqPayload = {\n VoTxCodec: string;\n rtpBitRate: number;\n};\n\nexport type ReceiveStatistics = {\n Dur: number;\n Pkt: number;\n Oct: number;\n LatePkt: number;\n LostPkt: number;\n AvgJit: number;\n VQMetrics: VoiceQualityMetrics;\n};\n\nexport type TransmitStatistics = {\n Dur: number;\n Pkt: number;\n Oct: number;\n VQMetrics: TransmitterVqPayload;\n};\n\nexport type CallRtpStats = {\n 'rtp-rxstat': ReceiveStatistics;\n 'rtp-txstat': TransmitStatistics;\n};\n\n/**\n * Represents an interface for managing call-related operations.\n */\nexport interface ICall extends Eventing<CallEventTypes> {\n /**\n * Fetches the identifier of the line associated with this call.\n *\n */\n lineId: string;\n\n /**\n * Fetches the unique call identifier.\n *\n */\n getCallId(): string;\n\n /**\n * Fetches the correlation identifier for this call.\n *\n */\n getCorrelationId(): string;\n\n /**\n * Fetches the direction of the call (e.g., inbound or outbound).\n *\n */\n getDirection(): CallDirection;\n\n /**\n * Sets the call identifier.\n *\n * @param callId - The new call identifier.\n */\n setCallId(callId: CallId): void;\n\n /**\n * Sends a call state machine event.\n *\n * @param event - The call event to send.\n * @ignore\n */\n sendCallStateMachineEvt(event: CallEvent): void;\n\n /**\n * Sends a media state machine event.\n *\n * @param event - The Roap event to send.\n * @ignore\n */\n sendMediaStateMachineEvt(event: RoapEvent): void;\n\n /**\n * Fetches the reason for disconnecting the call.\n *\n */\n getDisconnectReason(): DisconnectReason;\n\n /**\n * Disconnects the call.\n */\n end(): void;\n\n /**\n * Checks if the call is muted.\n *\n */\n isMuted(): boolean;\n\n /**\n * Checks if the call is connected.\n *\n */\n isConnected(): boolean;\n\n /**\n * Checks if the call is on hold.\n *\n */\n isHeld(): boolean;\n\n /**\n * Performs a hold or resume action on the call.\n */\n doHoldResume(): void;\n\n /**\n * Mutes or unmutes the call's local audio stream.\n *\n * @param localAudioStream - The local audio stream to mute or unmute.\n * @param muteType - Identifies if mute was triggered by system or user.\n */\n mute(localAudioStream: LocalMicrophoneStream, muteType?: MUTE_TYPE): void;\n\n /**\n * Fetches the caller information associated with the call.\n *\n */\n getCallerInfo(): DisplayInformation;\n\n /**\n * Initiates caller ID resolution for the call.\n * callerInfo data can be retrieved later by calling {@link getCallerInfo} method.\n * @param callerInfo - The caller ID information to resolve.\n */\n startCallerIdResolution(callerInfo: CallerIdInfo): void;\n\n /**\n * Handles a mid-call event.\n * @param event - The mid-call event to handle.\n * @ignore\n */\n handleMidCallEvent(event: MidCallEvent): void;\n\n /**\n * Dials the call using the provided local audio stream.\n *\n * @param localAudioStream - The local audio stream for the call.\n * @example\n * ```\n * const localAudioStream = await Calling.createMicrophoneStream({audio: true});\n * call.dial(localAudioStream);\n * ```\n */\n dial(localAudioStream: LocalMicrophoneStream): void;\n\n /**\n * Sends a DTMF digit during the call.\n *\n * @param tone - The DTMF tone to send.\n * @example\n * ```\n * call.sendDigit('1');\n * ```\n */\n sendDigit(tone: string): void;\n\n /**\n * Answers the call using the provided local audio stream.\n *\n * @param localAudioStream - The local audio stream for the call.\n *\n * @example\n * ```\n * const localAudioStream = await Calling.createMicrophoneStream({audio: true});\n * call.answer(localAudioStream);\n * ```\n */\n answer(localAudioStream: LocalMicrophoneStream): void;\n\n /**\n * Completes a call transfer.\n *\n * @param transferType - The type of transfer to perform. Eg. BLIND or CONSULT.\n * @param transferCallId - The call identifier for the transfer incase of Consult transfer (optional).\n * @param transferTarget - The target for the transfer incase of Blind transfer(optional).\n * @example\n * ```\n * // blind transfer\n * call.completeTransfer('BLIND', undefined, '5998');\n *\n * // consult transfer\n * call.completeTransfer('CONSULT', secondCall.getCallId(), undefined);\n * ```\n */\n completeTransfer(\n transferType: TransferType,\n transferCallId?: CallId,\n transferTarget?: string\n ): void;\n\n /**\n * Change the audio stream of the call.\n *\n * @param newAudioStream - The new audio stream to be used in the call.\n */\n updateMedia(newAudioStream: LocalMicrophoneStream): void;\n\n /**\n * Fetches the information related to the call's Broadworks correlationId.\n *\n */\n getBroadworksCorrelationInfo(): string | undefined;\n\n /**\n * Sets the Broadworks correlation information for the call.\n *\n * @param broadworksCorrelationInfo - The Broadworks correlation information.\n */\n setBroadworksCorrelationInfo(broadworksCorrelationInfo: string): void;\n\n /**\n * Fetches the RTP (Real-time Transport Protocol) statistics for the call.\n *\n */\n getCallRtpStats(): Promise<CallRtpStats>;\n}\n\nexport type DeleteRecordCallBack = (callId: CallId) => void;\nexport type CallEmitterCallBack = (callerInfo: DisplayInformation) => void;\nexport type CallErrorEmitterCallBack = (error: CallError) => void;\nexport type RetryCallBack = (interval: number) => void;\n\n/**\n * Represents an interface for managing calls within a call manager.\n */\nexport interface ICallManager extends Eventing<CallEventTypes> {\n /**\n * Creates a call with the specified details.\n *\n * @param destination - The call details including destination information.\n * @param direction - The direction of the call (e.g., incoming or outgoing).\n * @param deviceId - The unique identifier of the device associated with the call.\n * @param lineId - The identifier of the line to which the call belongs.\n */\n createCall(\n direction: CallDirection,\n deviceId: string,\n lineId: string,\n destination?: CallDetails\n ): ICall;\n\n /**\n * Retrieves a call based on its unique call identifier.\n *\n * @param correlationId - The unique identifier for the call at client\n */\n getCall(correlationId: CorrelationId): ICall;\n\n /**\n * Updates the active Mobius server URL.\n *\n * @param url - The new Mobius server URL to set.\n */\n updateActiveMobius(url: string): void;\n\n /**\n * Retrieves a dictionary of active calls, where each key is a call identifier\n * and the corresponding value is the call object.\n *\n */\n getActiveCalls(): Record<string, ICall>;\n\n /**\n * Updates a line associated with a specific device.\n *\n * @param deviceId - The unique identifier of the device.\n * @param line - The updated line object as {@link ILine}.\n */\n updateLine(deviceId: string, line: ILine): void;\n}\n"],"mappings":";;;;;;;AAAA;AAAA,IAcYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAQfE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAQVC,cAAc,GAAAF,OAAA,CAAAE,cAAA,0BAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAAA,IAMdC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAM3B;AAAA,IACYC,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAAA,IAahBC,YAAY,GAAAL,OAAA,CAAAK,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAA,IAQZC,eAAe,GAAAN,OAAA,CAAAM,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAwFfC,YAAY,GAAAP,OAAA,CAAAO,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAA,IAKZC,SAAS,GAAAR,OAAA,CAAAQ,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAkDrB;AACA;AACA;AAwMA;AACA;AACA"}
|
|
@@ -4,7 +4,7 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
|
|
|
4
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.WEB_AGENT = exports.WEBEX_WEB_CLIENT = exports.WEBEX = exports.VERSION = exports.
|
|
7
|
+
exports.WEB_AGENT = exports.WEBEX_WEB_CLIENT = exports.WEBEX = exports.VERSION = exports.VALID_PHONE_REGEX = exports.UTILS_FILE = exports.USER_AGENT_VERSION = exports.URL_ENDPOINT = exports.TYPE = exports.TRANSPORT = exports.TRANSFER_ENDPOINT = exports.TOTAL_SAMPLES_DURATION = exports.TOTAL_ROUND_TRIP_TIME = exports.TIMESTAMP = exports.TARGET_BIT_RATE = exports.SUPPLEMENTARY_SERVICES_TIMEOUT = exports.SPARK_USER_AGENT = exports.SELECTED_CANDIDATE_PAIR_ID = exports.SEC_TO_MSEC_MFACTOR = exports.RTP_TX_STAT = exports.RTP_RX_STAT = exports.RTC_ICE_CANDIDATE_PAIR = exports.RTC_ICE_CANDIDATE = exports.RTC_CODEC = exports.ROUND_TRIP_TIME_MEASUREMENTS = exports.RESUME_ENDPOINT = exports.REPO_NAME = exports.REMOTE_INBOUND_RTP = exports.REG_TRY_BACKUP_TIMER_VAL_IN_SEC = exports.REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC = exports.REG_RANDOM_T_FACTOR_UPPER_LIMIT = exports.REG_FAILBACK_429_MAX_RETRIES = exports.REGISTRATION_FILE = exports.REGISTER_UTIL = exports.REGISTER_RETRY_TIMEOUT = exports.RECONNECT_UTIL = exports.PACKETS_SENT = exports.PACKETS_RECEIVED = exports.PACKETS_LOST = exports.PACKETS_DISCARDED = exports.OUTBOUND_RTP = exports.OUTBOUND_CODEC_MATCH = exports.NOISE_REDUCTION_EFFECT = exports.NETWORK_TYPE = exports.NETWORK_FLAP_TIMEOUT = exports.NETWORK_CHANGE_DETECTION_UTIL = exports.MOBIUS_US_PROD = exports.MOBIUS_US_INT = exports.MOBIUS_EU_PROD = exports.MOBIUS_EU_INT = exports.MINUTES_TO_SEC_MFACTOR = exports.MIME_TYPE = exports.METRIC_FILE = exports.MEDIA_SOURCE = exports.MEDIA_ID = exports.MEDIA_ENDPOINT_RESOURCE = exports.LOCAL_CANDIDATE_ID = exports.LINE_FILE = exports.KEEPALIVE_UTIL = exports.JITTER_BUFFER_EMITTED_COUNT = exports.JITTER_BUFFER_DELAY = exports.IP_ENDPOINT = exports.INITIAL_SEQ_NUMBER = exports.INBOUND_RTP = exports.INBOUND_CODEC_MATCH = exports.ICE_CANDIDATES_TIMEOUT = exports.HOLD_ENDPOINT = exports.GET_MOBIUS_SERVERS_UTIL = exports.FAILOVER_UTIL = exports.FAILBACK_UTIL = exports.FAILBACK_429_RETRY_UTIL = exports.DUMMY_MOBIUS_URL = exports.DUMMY_METRICS = exports.DISCOVERY_URL = exports.DEVICES_ENDPOINT_RESOURCE = exports.DEFAULT_SESSION_TIMER = exports.DEFAULT_REHOMING_INTERVAL_MIN = exports.DEFAULT_REHOMING_INTERVAL_MAX = exports.DEFAULT_LOCAL_CALL_ID = exports.DEFAULT_KEEPALIVE_INTERVAL = exports.CRLF = exports.CODEC_ID = exports.CISCO_DEVICE_URL = exports.CALL_TRANSFER_SERVICE = exports.CALL_STATUS_RESOURCE = exports.CALL_MANAGER_FILE = exports.CALL_HOLD_SERVICE = exports.CALL_FILE = exports.CALL_ENDPOINT_RESOURCE = exports.CALLS_ENDPOINT_RESOURCE = exports.CALLS_CLEARED_HANDLER_UTIL = exports.CALLING_USER_AGENT = exports.CALLING_CLIENT_FILE = exports.CALLER_ID_FILE = exports.BYTES_SENT = exports.BYTES_RECEIVED = exports.BASE_REG_TIMER_MFACTOR = exports.BASE_REG_RETRY_TIMER_VAL_IN_SEC = exports.API_V1 = void 0;
|
|
8
8
|
var VERSION = exports.VERSION = 'unknown';
|
|
9
9
|
var USER_AGENT_VERSION = exports.USER_AGENT_VERSION = 'beta';
|
|
10
10
|
var REPO_NAME = exports.REPO_NAME = 'webex-calling';
|
|
@@ -49,7 +49,6 @@ var DUMMY_METRICS = exports.DUMMY_METRICS = {
|
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
var DUMMY_MOBIUS_URL = exports.DUMMY_MOBIUS_URL = 'https://mobius.aintgen-a-1.int.infra.webex.com/api/v1';
|
|
52
|
-
var FETCH_NAME = exports.FETCH_NAME = /^[a-zA-Z ]+/;
|
|
53
52
|
var IP_ENDPOINT = exports.IP_ENDPOINT = 'myip';
|
|
54
53
|
var INITIAL_SEQ_NUMBER = exports.INITIAL_SEQ_NUMBER = 1;
|
|
55
54
|
var MEDIA_ENDPOINT_RESOURCE = exports.MEDIA_ENDPOINT_RESOURCE = 'media';
|
|
@@ -64,7 +63,7 @@ var REGISTER_RETRY_TIMEOUT = exports.REGISTER_RETRY_TIMEOUT = 10000;
|
|
|
64
63
|
var SUPPLEMENTARY_SERVICES_TIMEOUT = exports.SUPPLEMENTARY_SERVICES_TIMEOUT = 10000;
|
|
65
64
|
var API_V1 = exports.API_V1 = '/api/v1';
|
|
66
65
|
var URL_ENDPOINT = exports.URL_ENDPOINT = '/calling/web/';
|
|
67
|
-
var
|
|
66
|
+
var VALID_PHONE_REGEX = exports.VALID_PHONE_REGEX = /[\d\s()*#+.-]+/;
|
|
68
67
|
var WEB_AGENT = exports.WEB_AGENT = '(web)';
|
|
69
68
|
var WEBEX = exports.WEBEX = 'webex';
|
|
70
69
|
var WEBEX_WEB_CLIENT = exports.WEBEX_WEB_CLIENT = 'webex-web-client';
|