@webex/calling 3.9.0-next.5 → 3.9.0-next.7

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","require","_constants","_types","_types2","_constants2","_Logger","_interopRequireDefault","_registration","_impl","_LineError","_common","_SDKConnector","_types3","_callManager","_types4","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","_classPrivateFieldInitSpec","obj","privateMap","value","_checkPrivateRedeclaration","set","privateCollection","has","TypeError","_webex","_weakMap","_mutex","_sdkConnector","_primaryMobiusUris","_backupMobiusUris","Line","exports","_Eventing","_inherits2","_super","userId","clientDeviceUri","mutex","primaryMobiusUris","backupMobiusUris","logLevel","serviceDataConfig","jwe","phoneNumber","extension","voicemail","_this","_classCallCheck2","_assertThisInitialized2","writable","_defineProperty2","event","deviceInfo","lineError","log","info","METHOD_START_MESSAGE","file","LINE_FILE","method","METHODS","LINE_EMITTER","LINE_EVENTS","REGISTERED","normalizeLine","emit","UNREGISTERED","RECONNECTED","RECONNECTING","ERROR","registration","getStatus","_this$registration$ge","getDeviceInfo","device","deviceId","dest","MAKE_CALL","match","address","VALID_PHONE_REGEX","length","_this$registration$ge2","_call","sanitizedNumber","replace","formattedDest","type","concat","callManager","createCall","CallDirection","OUTBOUND","lineId","getCallId","warn","err","LineError","ERROR_TYPE","CALL_ERROR","RegistrationStatus","ACTIVE","serviceData","indicator","ServiceIndicator","GUEST_CALLING","_this$registration$ge3","undefined","correlationId","getCall","uuid","_classPrivateFieldSet2","SDKConnector","_classPrivateFieldGet2","getWebex","CALLING","domain","validateServiceData","createRegistration","lineEmitter","setLogger","getCallManager","incomingCallListener","_createClass2","key","_register","_asyncToGenerator2","_regenerator","mark","_callee2","_this2","wrap","_callee2$","_context2","prev","next","REGISTER","runExclusive","_callee","_callee$","_context","CONNECTING","setMobiusServers","triggerRegistration","stop","mobiusDeviceId","updateLine","register","_deregister","_callee3","_callee3$","_context3","DEREGISTER","deregister","setStatus","IDLE","_device$addresses","keepaliveInterval","callKeepaliveInterval","rehomingIntervalMin","rehomingIntervalMax","voicePortalNumber","voicePortalExtension","mobiusUri","uri","lastSeen","sipAddresses","addresses","getLoggingLevel","getLogLevel","getActiveMobiusUrl","_this3","INCOMING_CALL_LISTENER","on","LINE_EVENT_KEYS","INCOMING_CALL","callObj","Eventing"],"sources":["index.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport {v4 as uuid} from 'uuid';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {\n CallDetails,\n CallDirection,\n CorrelationId,\n IDeviceInfo,\n MobiusDeviceId,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n} from '../../common/types';\nimport {ILine, LINE_EVENTS} from './types';\nimport {LINE_FILE, METHODS, VALID_PHONE_REGEX} from '../constants';\nimport log from '../../Logger';\nimport {IRegistration} from '../registration/types';\nimport {createRegistration} from '../registration';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {CallingClientConfig} from '../types';\nimport {Eventing} from '../../Events/impl';\nimport {LineError} from '../../Errors/catalog/LineError';\nimport {LOGGER} from '../../Logger/types';\nimport {validateServiceData} from '../../common';\nimport SDKConnector from '../../SDKConnector';\nimport {LINE_EVENT_KEYS, LineEventTypes} from '../../Events/types';\nimport {ICall, ICallManager} from '../calling/types';\nimport {getCallManager} from '../calling/callManager';\nimport {ERROR_TYPE} from '../../Errors/types';\n\nexport default class Line extends Eventing<LineEventTypes> implements ILine {\n #webex: WebexSDK;\n\n #mutex: Mutex;\n\n #sdkConnector: ISDKConnector;\n\n public registration: IRegistration;\n\n public userId: string;\n\n public clientDeviceUri: string;\n\n public lineId: string;\n\n public mobiusDeviceId?: string;\n\n private mobiusUri?: string;\n\n public phoneNumber?: string;\n\n public extension?: string;\n\n public sipAddresses: string[] = [];\n\n public voicemail?: string;\n\n public lastSeen?: string;\n\n public keepaliveInterval?: number;\n\n public callKeepaliveInterval?: number;\n\n public rehomingIntervalMin?: number;\n\n public rehomingIntervalMax?: number;\n\n public voicePortalNumber?: number;\n\n public voicePortalExtension?: number;\n\n private callManager: ICallManager;\n\n private serviceData: ServiceData;\n\n #primaryMobiusUris: string[];\n\n #backupMobiusUris: string[];\n\n constructor(\n userId: string,\n clientDeviceUri: string,\n mutex: Mutex,\n primaryMobiusUris: string[],\n backupMobiusUris: string[],\n logLevel: LOGGER,\n serviceDataConfig?: CallingClientConfig['serviceData'],\n jwe?: string,\n phoneNumber?: string,\n extension?: string,\n voicemail?: string\n ) {\n super();\n this.lineId = uuid();\n this.userId = userId;\n this.clientDeviceUri = clientDeviceUri;\n this.phoneNumber = phoneNumber;\n this.extension = extension;\n this.voicemail = voicemail;\n\n this.#sdkConnector = SDKConnector;\n this.#webex = this.#sdkConnector.getWebex();\n this.#mutex = mutex;\n\n this.#primaryMobiusUris = primaryMobiusUris;\n this.#backupMobiusUris = backupMobiusUris;\n\n this.serviceData = serviceDataConfig?.indicator\n ? serviceDataConfig\n : {indicator: ServiceIndicator.CALLING, domain: ''};\n\n validateServiceData(this.serviceData);\n\n this.registration = createRegistration(\n this.#webex,\n this.serviceData,\n this.#mutex,\n this.lineEmitter,\n logLevel,\n jwe\n );\n\n log.setLogger(logLevel, LINE_FILE);\n\n this.callManager = getCallManager(this.#webex, this.serviceData.indicator);\n\n this.incomingCallListener();\n }\n\n /**\n * Wrapper to for device registration.\n */\n public async register() {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.REGISTER,\n });\n await this.#mutex.runExclusive(async () => {\n this.emit(LINE_EVENTS.CONNECTING);\n\n this.registration.setMobiusServers(this.#primaryMobiusUris, this.#backupMobiusUris);\n await this.registration.triggerRegistration();\n });\n if (this.mobiusDeviceId) {\n this.callManager.updateLine(this.mobiusDeviceId, this);\n }\n }\n\n /**\n * Wrapper to for device deregister.\n */\n public async deregister() {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.DEREGISTER,\n });\n await this.registration.deregister();\n this.registration.setStatus(RegistrationStatus.IDLE);\n }\n\n /**\n * To normalize line class with Mobius response\n */\n private normalizeLine(deviceInfo: IDeviceInfo) {\n const {\n device,\n keepaliveInterval,\n callKeepaliveInterval,\n rehomingIntervalMin,\n rehomingIntervalMax,\n voicePortalNumber,\n voicePortalExtension,\n } = deviceInfo;\n\n this.mobiusDeviceId = device?.deviceId;\n this.mobiusUri = device?.uri;\n this.lastSeen = device?.lastSeen;\n this.sipAddresses = device?.addresses ?? [];\n this.keepaliveInterval = keepaliveInterval;\n this.callKeepaliveInterval = callKeepaliveInterval;\n this.rehomingIntervalMin = rehomingIntervalMin;\n this.rehomingIntervalMax = rehomingIntervalMax;\n this.voicePortalNumber = voicePortalNumber;\n this.voicePortalExtension = voicePortalExtension;\n }\n\n /**\n * Line events emitter\n */\n public lineEmitter = (event: LINE_EVENTS, deviceInfo?: IDeviceInfo, lineError?: LineError) => {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.LINE_EMITTER,\n });\n switch (event) {\n case LINE_EVENTS.REGISTERED:\n if (deviceInfo) {\n this.normalizeLine(deviceInfo);\n this.emit(event, this);\n }\n break;\n case LINE_EVENTS.UNREGISTERED:\n case LINE_EVENTS.RECONNECTED:\n case LINE_EVENTS.RECONNECTING:\n this.emit(event);\n break;\n case LINE_EVENTS.ERROR:\n if (lineError) {\n this.emit(event, lineError);\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * To get the current log Level.\n */\n public getLoggingLevel(): LOGGER {\n return log.getLogLevel();\n }\n\n /**\n * To get active url of Mobius.\n */\n public getActiveMobiusUrl(): string {\n return this.registration.getActiveMobiusUrl();\n }\n\n /**\n * Gets registration status\n */\n public getStatus = (): RegistrationStatus => this.registration.getStatus();\n\n /**\n * Gets device id\n */\n public getDeviceId = (): MobiusDeviceId | undefined =>\n this.registration.getDeviceInfo().device?.deviceId;\n\n /**\n * Initiates a call to the specified destination.\n * @param dest - The call details including destination information.\n */\n public makeCall = (dest?: CallDetails): ICall | undefined => {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.MAKE_CALL,\n });\n let call;\n\n if (dest) {\n const match = dest.address.match(VALID_PHONE_REGEX);\n\n if (match && match[0].length === dest.address.length) {\n const sanitizedNumber = dest.address\n .replace(/[^[*+]\\d#]/gi, '')\n .replace(/\\s+/gi, '')\n .replace(/-/gi, '');\n const formattedDest = {\n type: dest.type,\n address: `tel:${sanitizedNumber}`,\n };\n\n call = this.callManager.createCall(\n CallDirection.OUTBOUND,\n this.registration.getDeviceInfo().device?.deviceId as string,\n this.lineId,\n formattedDest\n );\n log.log(`New call created, callId: ${call?.getCallId()}`, {\n file: LINE_FILE,\n method: METHODS.MAKE_CALL,\n });\n } else {\n log.warn('Invalid phone number detected', {\n file: LINE_FILE,\n method: METHODS.MAKE_CALL,\n });\n\n const err = new LineError(\n 'An invalid phone number was detected. Check the number and try again.',\n {},\n ERROR_TYPE.CALL_ERROR,\n RegistrationStatus.ACTIVE\n );\n\n this.emit(LINE_EVENTS.ERROR, err);\n }\n\n return call;\n }\n if (this.serviceData.indicator === ServiceIndicator.GUEST_CALLING) {\n call = this.callManager.createCall(\n CallDirection.OUTBOUND,\n this.registration.getDeviceInfo().device?.deviceId as string,\n this.lineId\n );\n log.info(`New guest call created, callId: ${call.getCallId()}`, {\n file: LINE_FILE,\n method: METHODS.MAKE_CALL,\n });\n\n return call;\n }\n\n return undefined;\n };\n\n /**\n * An Incoming Call listener.\n */\n private incomingCallListener() {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.INCOMING_CALL_LISTENER,\n });\n log.info('Listening for incoming calls... ', {\n file: LINE_FILE,\n method: METHODS.INCOMING_CALL_LISTENER,\n });\n this.callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n this.emit(LINE_EVENTS.INCOMING_CALL, callObj);\n });\n }\n\n /**\n * @param callId -.\n * @param correlationId -.\n */\n public getCall = (correlationId: CorrelationId): ICall => {\n return this.callManager.getCall(correlationId);\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_uuid","require","_constants","_types","_types2","_constants2","_Logger","_interopRequireDefault","_registration","_impl","_LineError","_common","_SDKConnector","_types3","_callManager","_types4","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","_classPrivateFieldInitSpec","obj","privateMap","value","_checkPrivateRedeclaration","set","privateCollection","has","TypeError","_webex","_weakMap","_mutex","_sdkConnector","_primaryMobiusUris","_backupMobiusUris","Line","exports","_Eventing","_inherits2","_super","userId","clientDeviceUri","mutex","primaryMobiusUris","backupMobiusUris","logLevel","serviceDataConfig","jwe","phoneNumber","extension","voicemail","_this","_classCallCheck2","_assertThisInitialized2","writable","_defineProperty2","event","deviceInfo","lineError","log","info","METHOD_START_MESSAGE","file","LINE_FILE","method","METHODS","LINE_EMITTER","LINE_EVENTS","REGISTERED","normalizeLine","emit","UNREGISTERED","RECONNECTED","RECONNECTING","ERROR","registration","getStatus","_this$registration$ge","getDeviceInfo","device","deviceId","dest","MAKE_CALL","match","address","VALID_PHONE_REGEX","length","_this$registration$ge2","_call","sanitizedNumber","replace","formattedDest","type","concat","callManager","createCall","CallDirection","OUTBOUND","lineId","getCallId","warn","err","LineError","ERROR_TYPE","CALL_ERROR","RegistrationStatus","ACTIVE","serviceData","indicator","ServiceIndicator","GUEST_CALLING","_this$registration$ge3","undefined","correlationId","getCall","uuid","_classPrivateFieldSet2","SDKConnector","_classPrivateFieldGet2","getWebex","CALLING","domain","validateServiceData","createRegistration","lineEmitter","setLogger","getCallManager","incomingCallListener","_createClass2","key","_register","_asyncToGenerator2","_regenerator","mark","_callee2","_this2","wrap","_callee2$","_context2","prev","next","REGISTER","runExclusive","_callee","_callee$","_context","CONNECTING","setMobiusServers","triggerRegistration","stop","register","_deregister","_callee3","_callee3$","_context3","DEREGISTER","deregister","setStatus","IDLE","_device$addresses","keepaliveInterval","callKeepaliveInterval","rehomingIntervalMin","rehomingIntervalMax","voicePortalNumber","voicePortalExtension","mobiusDeviceId","mobiusUri","uri","lastSeen","sipAddresses","addresses","updateLine","getLoggingLevel","getLogLevel","getActiveMobiusUrl","_this3","INCOMING_CALL_LISTENER","on","LINE_EVENT_KEYS","INCOMING_CALL","callObj","Eventing"],"sources":["index.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport {v4 as uuid} from 'uuid';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {\n CallDetails,\n CallDirection,\n CorrelationId,\n IDeviceInfo,\n MobiusDeviceId,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n} from '../../common/types';\nimport {ILine, LINE_EVENTS} from './types';\nimport {LINE_FILE, METHODS, VALID_PHONE_REGEX} from '../constants';\nimport log from '../../Logger';\nimport {IRegistration} from '../registration/types';\nimport {createRegistration} from '../registration';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {CallingClientConfig} from '../types';\nimport {Eventing} from '../../Events/impl';\nimport {LineError} from '../../Errors/catalog/LineError';\nimport {LOGGER} from '../../Logger/types';\nimport {validateServiceData} from '../../common';\nimport SDKConnector from '../../SDKConnector';\nimport {LINE_EVENT_KEYS, LineEventTypes} from '../../Events/types';\nimport {ICall, ICallManager} from '../calling/types';\nimport {getCallManager} from '../calling/callManager';\nimport {ERROR_TYPE} from '../../Errors/types';\n\nexport default class Line extends Eventing<LineEventTypes> implements ILine {\n #webex: WebexSDK;\n\n #mutex: Mutex;\n\n #sdkConnector: ISDKConnector;\n\n public registration: IRegistration;\n\n public userId: string;\n\n public clientDeviceUri: string;\n\n public lineId: string;\n\n public mobiusDeviceId?: string;\n\n private mobiusUri?: string;\n\n public phoneNumber?: string;\n\n public extension?: string;\n\n public sipAddresses: string[] = [];\n\n public voicemail?: string;\n\n public lastSeen?: string;\n\n public keepaliveInterval?: number;\n\n public callKeepaliveInterval?: number;\n\n public rehomingIntervalMin?: number;\n\n public rehomingIntervalMax?: number;\n\n public voicePortalNumber?: number;\n\n public voicePortalExtension?: number;\n\n private callManager: ICallManager;\n\n private serviceData: ServiceData;\n\n #primaryMobiusUris: string[];\n\n #backupMobiusUris: string[];\n\n constructor(\n userId: string,\n clientDeviceUri: string,\n mutex: Mutex,\n primaryMobiusUris: string[],\n backupMobiusUris: string[],\n logLevel: LOGGER,\n serviceDataConfig?: CallingClientConfig['serviceData'],\n jwe?: string,\n phoneNumber?: string,\n extension?: string,\n voicemail?: string\n ) {\n super();\n this.lineId = uuid();\n this.userId = userId;\n this.clientDeviceUri = clientDeviceUri;\n this.phoneNumber = phoneNumber;\n this.extension = extension;\n this.voicemail = voicemail;\n\n this.#sdkConnector = SDKConnector;\n this.#webex = this.#sdkConnector.getWebex();\n this.#mutex = mutex;\n\n this.#primaryMobiusUris = primaryMobiusUris;\n this.#backupMobiusUris = backupMobiusUris;\n\n this.serviceData = serviceDataConfig?.indicator\n ? serviceDataConfig\n : {indicator: ServiceIndicator.CALLING, domain: ''};\n\n validateServiceData(this.serviceData);\n\n this.registration = createRegistration(\n this.#webex,\n this.serviceData,\n this.#mutex,\n this.lineEmitter,\n logLevel,\n jwe\n );\n\n log.setLogger(logLevel, LINE_FILE);\n\n this.callManager = getCallManager(this.#webex, this.serviceData.indicator);\n\n this.incomingCallListener();\n }\n\n /**\n * Wrapper to for device registration.\n */\n public async register() {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.REGISTER,\n });\n await this.#mutex.runExclusive(async () => {\n this.emit(LINE_EVENTS.CONNECTING);\n\n this.registration.setMobiusServers(this.#primaryMobiusUris, this.#backupMobiusUris);\n await this.registration.triggerRegistration();\n });\n }\n\n /**\n * Wrapper to for device deregister.\n */\n public async deregister() {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.DEREGISTER,\n });\n await this.registration.deregister();\n this.registration.setStatus(RegistrationStatus.IDLE);\n }\n\n /**\n * To normalize line class with Mobius response\n */\n private normalizeLine(deviceInfo: IDeviceInfo) {\n const {\n device,\n keepaliveInterval,\n callKeepaliveInterval,\n rehomingIntervalMin,\n rehomingIntervalMax,\n voicePortalNumber,\n voicePortalExtension,\n } = deviceInfo;\n\n this.mobiusDeviceId = device?.deviceId;\n this.mobiusUri = device?.uri;\n this.lastSeen = device?.lastSeen;\n this.sipAddresses = device?.addresses ?? [];\n this.keepaliveInterval = keepaliveInterval;\n this.callKeepaliveInterval = callKeepaliveInterval;\n this.rehomingIntervalMin = rehomingIntervalMin;\n this.rehomingIntervalMax = rehomingIntervalMax;\n this.voicePortalNumber = voicePortalNumber;\n this.voicePortalExtension = voicePortalExtension;\n if (this.mobiusDeviceId) {\n this.callManager.updateLine(this.mobiusDeviceId, this);\n }\n }\n\n /**\n * Line events emitter\n */\n public lineEmitter = (event: LINE_EVENTS, deviceInfo?: IDeviceInfo, lineError?: LineError) => {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.LINE_EMITTER,\n });\n switch (event) {\n case LINE_EVENTS.REGISTERED:\n if (deviceInfo) {\n this.normalizeLine(deviceInfo);\n this.emit(event, this);\n }\n break;\n case LINE_EVENTS.UNREGISTERED:\n case LINE_EVENTS.RECONNECTED:\n case LINE_EVENTS.RECONNECTING:\n this.emit(event);\n break;\n case LINE_EVENTS.ERROR:\n if (lineError) {\n this.emit(event, lineError);\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * To get the current log Level.\n */\n public getLoggingLevel(): LOGGER {\n return log.getLogLevel();\n }\n\n /**\n * To get active url of Mobius.\n */\n public getActiveMobiusUrl(): string {\n return this.registration.getActiveMobiusUrl();\n }\n\n /**\n * Gets registration status\n */\n public getStatus = (): RegistrationStatus => this.registration.getStatus();\n\n /**\n * Gets device id\n */\n public getDeviceId = (): MobiusDeviceId | undefined =>\n this.registration.getDeviceInfo().device?.deviceId;\n\n /**\n * Initiates a call to the specified destination.\n * @param dest - The call details including destination information.\n */\n public makeCall = (dest?: CallDetails): ICall | undefined => {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.MAKE_CALL,\n });\n let call;\n\n if (dest) {\n const match = dest.address.match(VALID_PHONE_REGEX);\n\n if (match && match[0].length === dest.address.length) {\n const sanitizedNumber = dest.address\n .replace(/[^[*+]\\d#]/gi, '')\n .replace(/\\s+/gi, '')\n .replace(/-/gi, '');\n const formattedDest = {\n type: dest.type,\n address: `tel:${sanitizedNumber}`,\n };\n\n call = this.callManager.createCall(\n CallDirection.OUTBOUND,\n this.registration.getDeviceInfo().device?.deviceId as string,\n this.lineId,\n formattedDest\n );\n log.log(`New call created, callId: ${call?.getCallId()}`, {\n file: LINE_FILE,\n method: METHODS.MAKE_CALL,\n });\n } else {\n log.warn('Invalid phone number detected', {\n file: LINE_FILE,\n method: METHODS.MAKE_CALL,\n });\n\n const err = new LineError(\n 'An invalid phone number was detected. Check the number and try again.',\n {},\n ERROR_TYPE.CALL_ERROR,\n RegistrationStatus.ACTIVE\n );\n\n this.emit(LINE_EVENTS.ERROR, err);\n }\n\n return call;\n }\n if (this.serviceData.indicator === ServiceIndicator.GUEST_CALLING) {\n call = this.callManager.createCall(\n CallDirection.OUTBOUND,\n this.registration.getDeviceInfo().device?.deviceId as string,\n this.lineId\n );\n log.info(`New guest call created, callId: ${call.getCallId()}`, {\n file: LINE_FILE,\n method: METHODS.MAKE_CALL,\n });\n\n return call;\n }\n\n return undefined;\n };\n\n /**\n * An Incoming Call listener.\n */\n private incomingCallListener() {\n log.info(METHOD_START_MESSAGE, {\n file: LINE_FILE,\n method: METHODS.INCOMING_CALL_LISTENER,\n });\n log.info('Listening for incoming calls... ', {\n file: LINE_FILE,\n method: METHODS.INCOMING_CALL_LISTENER,\n });\n this.callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n this.emit(LINE_EVENTS.INCOMING_CALL, callObj);\n });\n }\n\n /**\n * @param callId -.\n * @param correlationId -.\n */\n public getCall = (correlationId: CorrelationId): ICall => {\n return this.callManager.getCall(correlationId);\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAUA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAC,sBAAA,CAAAN,OAAA;AAEA,IAAAO,aAAA,GAAAP,OAAA;AAGA,IAAAQ,KAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA;AAEA,IAAAU,OAAA,GAAAV,OAAA;AACA,IAAAW,aAAA,GAAAL,sBAAA,CAAAN,OAAA;AACA,IAAAY,OAAA,GAAAZ,OAAA;AAEA,IAAAa,YAAA,GAAAb,OAAA;AACA,IAAAc,OAAA,GAAAd,OAAA;AAA8C,SAAAe,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAN,KAAA,EAAAO,SAAA,EAAAH,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAQ,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAP,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAY,OAAA,qBAAAJ,kBAAA,oBAAAA,kBAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,kBAAA,CAAAO,OAAA,8CAAAI,CAAA;AAAA,SAAAC,2BAAAC,GAAA,EAAAC,UAAA,EAAAC,KAAA,IAAAC,0BAAA,CAAAH,GAAA,EAAAC,UAAA,GAAAA,UAAA,CAAAG,GAAA,CAAAJ,GAAA,EAAAE,KAAA;AAAA,SAAAC,2BAAAH,GAAA,EAAAK,iBAAA,QAAAA,iBAAA,CAAAC,GAAA,CAAAN,GAAA,eAAAO,SAAA;AAAA,IAAAC,MAAA,oBAAAC,QAAA,CAAA1B,OAAA;AAAA,IAAA2B,MAAA,oBAAAD,QAAA,CAAA1B,OAAA;AAAA,IAAA4B,aAAA,oBAAAF,QAAA,CAAA1B,OAAA;AAAA,IAAA6B,kBAAA,oBAAAH,QAAA,CAAA1B,OAAA;AAAA,IAAA8B,iBAAA,oBAAAJ,QAAA,CAAA1B,OAAA;AAAA,IAEzB+B,IAAI,GAAAC,OAAA,CAAAhC,OAAA,0BAAAiC,SAAA;EAAA,IAAAC,UAAA,CAAAlC,OAAA,EAAA+B,IAAA,EAAAE,SAAA;EAAA,IAAAE,MAAA,GAAA1C,YAAA,CAAAsC,IAAA;EAiDvB,SAAAA,KACEK,MAAc,EACdC,eAAuB,EACvBC,KAAY,EACZC,iBAA2B,EAC3BC,gBAA0B,EAC1BC,QAAgB,EAChBC,iBAAsD,EACtDC,GAAY,EACZC,WAAoB,EACpBC,SAAkB,EAClBC,SAAkB,EAClB;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAhD,OAAA,QAAA+B,IAAA;IACAgB,KAAA,GAAAZ,MAAA,CAAArB,IAAA;IAAQE,0BAAA,KAAAiC,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAtB,MAAA;MAAAyB,QAAA;MAAA/B,KAAA;IAAA;IAAAH,0BAAA,KAAAiC,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAApB,MAAA;MAAAuB,QAAA;MAAA/B,KAAA;IAAA;IAAAH,0BAAA,KAAAiC,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAnB,aAAA;MAAAsB,QAAA;MAAA/B,KAAA;IAAA;IAAA,IAAAgC,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,mBAvCsB,EAAE;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA,IAAAI,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA;IAAA/B,0BAAA,KAAAiC,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAlB,kBAAA;MAAAqB,QAAA;MAAA/B,KAAA;IAAA;IAAAH,0BAAA,KAAAiC,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAjB,iBAAA;MAAAoB,QAAA;MAAA/B,KAAA;IAAA;IAqIlC;AACF;AACA;IAFE,IAAAgC,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,kBAGqB,UAACK,KAAkB,EAAEC,UAAwB,EAAEC,SAAqB,EAAK;MAC5FC,eAAG,CAACC,IAAI,CAACC,+BAAoB,EAAE;QAC7BC,IAAI,EAAEC,qBAAS;QACfC,MAAM,EAAEC,mBAAO,CAACC;MAClB,CAAC,CAAC;MACF,QAAQV,KAAK;QACX,KAAKW,mBAAW,CAACC,UAAU;UACzB,IAAIX,UAAU,EAAE;YACdN,KAAA,CAAKkB,aAAa,CAACZ,UAAU,CAAC;YAC9BN,KAAA,CAAKmB,IAAI,CAACd,KAAK,MAAAH,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,CAAM,CAAC;UACxB;UACA;QACF,KAAKgB,mBAAW,CAACI,YAAY;QAC7B,KAAKJ,mBAAW,CAACK,WAAW;QAC5B,KAAKL,mBAAW,CAACM,YAAY;UAC3BtB,KAAA,CAAKmB,IAAI,CAACd,KAAK,CAAC;UAChB;QACF,KAAKW,mBAAW,CAACO,KAAK;UACpB,IAAIhB,SAAS,EAAE;YACbP,KAAA,CAAKmB,IAAI,CAACd,KAAK,EAAEE,SAAS,CAAC;UAC7B;UACA;QACF;UACE;MACJ;IACF,CAAC;IAgBD;AACF;AACA;IAFE,IAAAH,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,gBAGmB;MAAA,OAA0BA,KAAA,CAAKwB,YAAY,CAACC,SAAS,CAAC,CAAC;IAAA;IAE1E;AACF;AACA;IAFE,IAAArB,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,kBAGqB;MAAA,IAAA0B,qBAAA;MAAA,QAAAA,qBAAA,GACnB1B,KAAA,CAAKwB,YAAY,CAACG,aAAa,CAAC,CAAC,CAACC,MAAM,cAAAF,qBAAA,uBAAxCA,qBAAA,CAA0CG,QAAQ;IAAA;IAEpD;AACF;AACA;AACA;IAHE,IAAAzB,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,eAIkB,UAAC8B,IAAkB,EAAwB;MAC3DtB,eAAG,CAACC,IAAI,CAACC,+BAAoB,EAAE;QAC7BC,IAAI,EAAEC,qBAAS;QACfC,MAAM,EAAEC,mBAAO,CAACiB;MAClB,CAAC,CAAC;MACF,IAAIhE,IAAI;MAER,IAAI+D,IAAI,EAAE;QACR,IAAME,KAAK,GAAGF,IAAI,CAACG,OAAO,CAACD,KAAK,CAACE,6BAAiB,CAAC;QAEnD,IAAIF,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACG,MAAM,KAAKL,IAAI,CAACG,OAAO,CAACE,MAAM,EAAE;UAAA,IAAAC,sBAAA,EAAAC,KAAA;UACpD,IAAMC,eAAe,GAAGR,IAAI,CAACG,OAAO,CACjCM,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAC3BA,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CACpBA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;UACrB,IAAMC,aAAa,GAAG;YACpBC,IAAI,EAAEX,IAAI,CAACW,IAAI;YACfR,OAAO,SAAAS,MAAA,CAASJ,eAAe;UACjC,CAAC;UAEDvE,IAAI,GAAGiC,KAAA,CAAK2C,WAAW,CAACC,UAAU,CAChCC,oBAAa,CAACC,QAAQ,GAAAV,sBAAA,GACtBpC,KAAA,CAAKwB,YAAY,CAACG,aAAa,CAAC,CAAC,CAACC,MAAM,cAAAQ,sBAAA,uBAAxCA,sBAAA,CAA0CP,QAAQ,EAClD7B,KAAA,CAAK+C,MAAM,EACXP,aACF,CAAC;UACDhC,eAAG,CAACA,GAAG,8BAAAkC,MAAA,EAAAL,KAAA,GAA8BtE,IAAI,cAAAsE,KAAA,uBAAJA,KAAA,CAAMW,SAAS,CAAC,CAAC,GAAI;YACxDrC,IAAI,EAAEC,qBAAS;YACfC,MAAM,EAAEC,mBAAO,CAACiB;UAClB,CAAC,CAAC;QACJ,CAAC,MAAM;UACLvB,eAAG,CAACyC,IAAI,CAAC,+BAA+B,EAAE;YACxCtC,IAAI,EAAEC,qBAAS;YACfC,MAAM,EAAEC,mBAAO,CAACiB;UAClB,CAAC,CAAC;UAEF,IAAMmB,GAAG,GAAG,IAAIC,oBAAS,CACvB,uEAAuE,EACvE,CAAC,CAAC,EACFC,kBAAU,CAACC,UAAU,EACrBC,yBAAkB,CAACC,MACrB,CAAC;UAEDvD,KAAA,CAAKmB,IAAI,CAACH,mBAAW,CAACO,KAAK,EAAE2B,GAAG,CAAC;QACnC;QAEA,OAAOnF,IAAI;MACb;MACA,IAAIiC,KAAA,CAAKwD,WAAW,CAACC,SAAS,KAAKC,uBAAgB,CAACC,aAAa,EAAE;QAAA,IAAAC,sBAAA;QACjE7F,IAAI,GAAGiC,KAAA,CAAK2C,WAAW,CAACC,UAAU,CAChCC,oBAAa,CAACC,QAAQ,GAAAc,sBAAA,GACtB5D,KAAA,CAAKwB,YAAY,CAACG,aAAa,CAAC,CAAC,CAACC,MAAM,cAAAgC,sBAAA,uBAAxCA,sBAAA,CAA0C/B,QAAQ,EAClD7B,KAAA,CAAK+C,MACP,CAAC;QACDvC,eAAG,CAACC,IAAI,oCAAAiC,MAAA,CAAoC3E,IAAI,CAACiF,SAAS,CAAC,CAAC,GAAI;UAC9DrC,IAAI,EAAEC,qBAAS;UACfC,MAAM,EAAEC,mBAAO,CAACiB;QAClB,CAAC,CAAC;QAEF,OAAOhE,IAAI;MACb;MAEA,OAAO8F,SAAS;IAClB,CAAC;IAmBD;AACF;AACA;AACA;IAHE,IAAAzD,gBAAA,CAAAnD,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,cAIiB,UAAC8D,aAA4B,EAAY;MACxD,OAAO9D,KAAA,CAAK2C,WAAW,CAACoB,OAAO,CAACD,aAAa,CAAC;IAChD,CAAC;IAhPC9D,KAAA,CAAK+C,MAAM,GAAG,IAAAiB,QAAI,EAAC,CAAC;IACpBhE,KAAA,CAAKX,MAAM,GAAGA,MAAM;IACpBW,KAAA,CAAKV,eAAe,GAAGA,eAAe;IACtCU,KAAA,CAAKH,WAAW,GAAGA,WAAW;IAC9BG,KAAA,CAAKF,SAAS,GAAGA,SAAS;IAC1BE,KAAA,CAAKD,SAAS,GAAGA,SAAS;IAE1B,IAAAkE,sBAAA,CAAAhH,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAnB,aAAA,EAAqBqF,qBAAY;IACjC,IAAAD,sBAAA,CAAAhH,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAtB,MAAA,EAAc,IAAAyF,sBAAA,CAAAlH,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAnB,aAAA,EAAmBuF,QAAQ,CAAC,CAAC;IAC3C,IAAAH,sBAAA,CAAAhH,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAApB,MAAA,EAAcW,KAAK;IAEnB,IAAA0E,sBAAA,CAAAhH,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAlB,kBAAA,EAA0BU,iBAAiB;IAC3C,IAAAyE,sBAAA,CAAAhH,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAjB,iBAAA,EAAyBU,gBAAgB;IAEzCO,KAAA,CAAKwD,WAAW,GAAG7D,iBAAiB,aAAjBA,iBAAiB,eAAjBA,iBAAiB,CAAE8D,SAAS,GAC3C9D,iBAAiB,GACjB;MAAC8D,SAAS,EAAEC,uBAAgB,CAACW,OAAO;MAAEC,MAAM,EAAE;IAAE,CAAC;IAErD,IAAAC,2BAAmB,EAACvE,KAAA,CAAKwD,WAAW,CAAC;IAErCxD,KAAA,CAAKwB,YAAY,GAAG,IAAAgD,gCAAkB,MAAAL,sBAAA,CAAAlH,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAtB,MAAA,GAEpCsB,KAAA,CAAKwD,WAAW,MAAAW,sBAAA,CAAAlH,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAApB,MAAA,GAEhBoB,KAAA,CAAKyE,WAAW,EAChB/E,QAAQ,EACRE,GACF,CAAC;IAEDY,eAAG,CAACkE,SAAS,CAAChF,QAAQ,EAAEkB,qBAAS,CAAC;IAElCZ,KAAA,CAAK2C,WAAW,GAAG,IAAAgC,2BAAc,MAAAR,sBAAA,CAAAlH,OAAA,MAAAiD,uBAAA,CAAAjD,OAAA,EAAA+C,KAAA,GAAAtB,MAAA,GAAcsB,KAAA,CAAKwD,WAAW,CAACC,SAAS,CAAC;IAE1EzD,KAAA,CAAK4E,oBAAoB,CAAC,CAAC;IAAC,OAAA5E,KAAA;EAC9B;;EAEA;AACF;AACA;EAFE,IAAA6E,aAAA,CAAA5H,OAAA,EAAA+B,IAAA;IAAA8F,GAAA;IAAA1G,KAAA;MAAA,IAAA2G,SAAA,OAAAC,kBAAA,CAAA/H,OAAA,gBAAAgI,YAAA,CAAAhI,OAAA,CAAAiI,IAAA,CAGA,SAAAC,SAAA;QAAA,IAAAC,MAAA;QAAA,OAAAH,YAAA,CAAAhI,OAAA,CAAAoI,IAAA,UAAAC,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;YAAA;cACEjF,eAAG,CAACC,IAAI,CAACC,+BAAoB,EAAE;gBAC7BC,IAAI,EAAEC,qBAAS;gBACfC,MAAM,EAAEC,mBAAO,CAAC4E;cAClB,CAAC,CAAC;cAACH,SAAA,CAAAE,IAAA;cAAA,OACG,IAAAtB,sBAAA,CAAAlH,OAAA,MAAI,EAAA2B,MAAA,EAAQ+G,YAAY,mBAAAX,kBAAA,CAAA/H,OAAA,gBAAAgI,YAAA,CAAAhI,OAAA,CAAAiI,IAAA,CAAC,SAAAU,QAAA;gBAAA,OAAAX,YAAA,CAAAhI,OAAA,CAAAoI,IAAA,UAAAQ,SAAAC,QAAA;kBAAA,kBAAAA,QAAA,CAAAN,IAAA,GAAAM,QAAA,CAAAL,IAAA;oBAAA;sBAC7BL,MAAI,CAACjE,IAAI,CAACH,mBAAW,CAAC+E,UAAU,CAAC;sBAEjCX,MAAI,CAAC5D,YAAY,CAACwE,gBAAgB,KAAA7B,sBAAA,CAAAlH,OAAA,EAACmI,MAAI,EAAAtG,kBAAA,OAAAqF,sBAAA,CAAAlH,OAAA,EAAqBmI,MAAI,EAAArG,iBAAA,CAAkB,CAAC;sBAAC+G,QAAA,CAAAL,IAAA;sBAAA,OAC9EL,MAAI,CAAC5D,YAAY,CAACyE,mBAAmB,CAAC,CAAC;oBAAA;oBAAA;sBAAA,OAAAH,QAAA,CAAAI,IAAA;kBAAA;gBAAA,GAAAN,OAAA;cAAA,CAC9C,GAAC;YAAA;YAAA;cAAA,OAAAL,SAAA,CAAAW,IAAA;UAAA;QAAA,GAAAf,QAAA;MAAA,CACH;MAAA,SAAAgB,SAAA;QAAA,OAAApB,SAAA,CAAAxH,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAA6I,QAAA;IAAA;IAED;AACF;AACA;IAFE;EAAA;IAAArB,GAAA;IAAA1G,KAAA;MAAA,IAAAgI,WAAA,OAAApB,kBAAA,CAAA/H,OAAA,gBAAAgI,YAAA,CAAAhI,OAAA,CAAAiI,IAAA,CAGA,SAAAmB,SAAA;QAAA,OAAApB,YAAA,CAAAhI,OAAA,CAAAoI,IAAA,UAAAiB,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAf,IAAA,GAAAe,SAAA,CAAAd,IAAA;YAAA;cACEjF,eAAG,CAACC,IAAI,CAACC,+BAAoB,EAAE;gBAC7BC,IAAI,EAAEC,qBAAS;gBACfC,MAAM,EAAEC,mBAAO,CAAC0F;cAClB,CAAC,CAAC;cAACD,SAAA,CAAAd,IAAA;cAAA,OACG,IAAI,CAACjE,YAAY,CAACiF,UAAU,CAAC,CAAC;YAAA;cACpC,IAAI,CAACjF,YAAY,CAACkF,SAAS,CAACpD,yBAAkB,CAACqD,IAAI,CAAC;YAAC;YAAA;cAAA,OAAAJ,SAAA,CAAAL,IAAA;UAAA;QAAA,GAAAG,QAAA;MAAA,CACtD;MAAA,SAAAI,WAAA;QAAA,OAAAL,WAAA,CAAA7I,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAAmJ,UAAA;IAAA;IAED;AACF;AACA;IAFE;EAAA;IAAA3B,GAAA;IAAA1G,KAAA,EAGA,SAAA8C,cAAsBZ,UAAuB,EAAE;MAAA,IAAAsG,iBAAA;MAC7C,IACEhF,MAAM,GAOJtB,UAAU,CAPZsB,MAAM;QACNiF,iBAAiB,GAMfvG,UAAU,CANZuG,iBAAiB;QACjBC,qBAAqB,GAKnBxG,UAAU,CALZwG,qBAAqB;QACrBC,mBAAmB,GAIjBzG,UAAU,CAJZyG,mBAAmB;QACnBC,mBAAmB,GAGjB1G,UAAU,CAHZ0G,mBAAmB;QACnBC,iBAAiB,GAEf3G,UAAU,CAFZ2G,iBAAiB;QACjBC,oBAAoB,GAClB5G,UAAU,CADZ4G,oBAAoB;MAGtB,IAAI,CAACC,cAAc,GAAGvF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEC,QAAQ;MACtC,IAAI,CAACuF,SAAS,GAAGxF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEyF,GAAG;MAC5B,IAAI,CAACC,QAAQ,GAAG1F,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE0F,QAAQ;MAChC,IAAI,CAACC,YAAY,IAAAX,iBAAA,GAAGhF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE4F,SAAS,cAAAZ,iBAAA,cAAAA,iBAAA,GAAI,EAAE;MAC3C,IAAI,CAACC,iBAAiB,GAAGA,iBAAiB;MAC1C,IAAI,CAACC,qBAAqB,GAAGA,qBAAqB;MAClD,IAAI,CAACC,mBAAmB,GAAGA,mBAAmB;MAC9C,IAAI,CAACC,mBAAmB,GAAGA,mBAAmB;MAC9C,IAAI,CAACC,iBAAiB,GAAGA,iBAAiB;MAC1C,IAAI,CAACC,oBAAoB,GAAGA,oBAAoB;MAChD,IAAI,IAAI,CAACC,cAAc,EAAE;QACvB,IAAI,CAACxE,WAAW,CAAC8E,UAAU,CAAC,IAAI,CAACN,cAAc,EAAE,IAAI,CAAC;MACxD;IACF;EAAC;IAAArC,GAAA;IAAA1G,KAAA;IAgCD;AACF;AACA;IACE,SAAAsJ,gBAAA,EAAiC;MAC/B,OAAOlH,eAAG,CAACmH,WAAW,CAAC,CAAC;IAC1B;;IAEA;AACF;AACA;EAFE;IAAA7C,GAAA;IAAA1G,KAAA,EAGA,SAAAwJ,mBAAA,EAAoC;MAClC,OAAO,IAAI,CAACpG,YAAY,CAACoG,kBAAkB,CAAC,CAAC;IAC/C;EAAC;IAAA9C,GAAA;IAAA1G,KAAA;IAkFD;AACF;AACA;IACE,SAAAwG,qBAAA,EAA+B;MAAA,IAAAiD,MAAA;MAC7BrH,eAAG,CAACC,IAAI,CAACC,+BAAoB,EAAE;QAC7BC,IAAI,EAAEC,qBAAS;QACfC,MAAM,EAAEC,mBAAO,CAACgH;MAClB,CAAC,CAAC;MACFtH,eAAG,CAACC,IAAI,CAAC,kCAAkC,EAAE;QAC3CE,IAAI,EAAEC,qBAAS;QACfC,MAAM,EAAEC,mBAAO,CAACgH;MAClB,CAAC,CAAC;MACF,IAAI,CAACnF,WAAW,CAACoF,EAAE,CAACC,uBAAe,CAACC,aAAa,EAAE,UAACC,OAAc,EAAK;QACrEL,MAAI,CAAC1G,IAAI,CAACH,mBAAW,CAACiH,aAAa,EAAEC,OAAO,CAAC;MAC/C,CAAC,CAAC;IACJ;EAAC;EAAA,OAAAlJ,IAAA;AAAA,EAvS+BmJ,cAAQ"}
@@ -100,13 +100,14 @@ describe('Line Tests', function () {
100
100
  expect(line.getActiveMobiusUrl()).toEqual(primaryUrl);
101
101
  expect(line.getLoggingLevel()).toEqual(_types3.LOGGER.INFO);
102
102
  expect(line.getDeviceId()).toEqual(mockRegistrationBody.device.deviceId);
103
+ expect(line.callManager.lineDict[mockRegistrationBody.device.deviceId]).toEqual(line);
103
104
  webex.request.mockClear();
104
105
  jest.advanceTimersByTime(30 * 1000);
105
- _context.next = 16;
106
+ _context.next = 17;
106
107
  return _promise.default.resolve();
107
- case 16:
108
- jest.useRealTimers();
109
108
  case 17:
109
+ jest.useRealTimers();
110
+ case 18:
110
111
  case "end":
111
112
  return _context.stop();
112
113
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_asyncMutex","require","_testUtil","_registerFixtures","_common","_types","_types2","_","_interopRequireDefault","utils","_interopRequireWildcard","_SDKConnector","_constants","_types3","regUtils","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","describe","mutex","Mutex","webex","getTestUtilsWebex","SDKConnector","setWebex","defaultServiceData","indicator","ServiceIndicator","CALLING","domain","createRegistrationSpy","jest","spyOn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","primaryMobiusUris","fn","primary","backupMobiusUris","backup","userId","internal","device","clientDeviceUri","url","mockJwe","guestServiceData","GUEST_CALLING","guestName","handleErrorSpy","global","fetch","request","clearAllMocks","line","mockRegistrationBody","getMockDeviceInfo","discoveryBody","primaryUrl","concat","uris","registrationPayload","statusCode","body","beforeEach","Line","LOGGER","INFO","afterEach","clearAllTimers","useRealTimers","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","useFakeTimers","mockReturnValue","expect","toBeCalledOnceWith","any","anything","undefined","getStatus","toEqual","RegistrationStatus","IDLE","register","getMockRequestTemplate","serviceData","uri","method","not","toBeCalled","ACTIVE","getActiveMobiusUrl","getLoggingLevel","getDeviceId","deviceId","mockClear","advanceTimersByTime","_promise","resolve","stop","_callee2","guestLine","_callee2$","_context2","jwe","_callee3","_callee3$","_context3","LINE_EVENTS","ERROR","mockRejectedValue","on","error","message","toBe","waitForMsecs","INACTIVE","file","REGISTRATION_FILE","_callee4","_callee4$","_context4","mockReturnValueOnce","deregister","createCallSpy","callManager","makeCall","address","type","CallType","URI","CallDirection","OUTBOUND","lineId","toBeTruthy","getCall","getCorrelationId","direction","toStrictEqual","end","destination","done","toBeUndefined","assertions","toBeCalledWith","String"],"sources":["line.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport {\n getMobiusDiscoveryResponse,\n getMockDeviceInfo,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {URL} from '../registration/registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {\n CallDirection,\n CallType,\n MobiusServers,\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n} from '../../common/types';\nimport {LINE_EVENTS} from './types';\nimport Line from '.';\nimport * as utils from '../../common/Utils';\nimport SDKConnector from '../../SDKConnector';\nimport {REGISTRATION_FILE} from '../constants';\nimport {LOGGER} from '../../Logger/types';\nimport * as regUtils from '../registration/register';\n\ndescribe('Line Tests', () => {\n const mutex = new Mutex();\n const webex = getTestUtilsWebex();\n SDKConnector.setWebex(webex);\n\n const defaultServiceData = {indicator: ServiceIndicator.CALLING, domain: ''};\n const createRegistrationSpy = jest.spyOn(regUtils, 'createRegistration');\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mockJwe = 'mockJwe';\n const guestServiceData = {\n indicator: ServiceIndicator.GUEST_CALLING,\n domain: '',\n guestName: 'testUser',\n };\n\n const handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\n // Simulate node fetch by adding the mock webex.request\n global.fetch = webex.request;\n\n jest.clearAllMocks();\n\n describe('Line Registration tests', () => {\n let line;\n const mockRegistrationBody = getMockDeviceInfo();\n\n const discoveryBody: MobiusServers = getMobiusDiscoveryResponse();\n const primaryUrl = `${discoveryBody.primary.uris[0]}/calling/web/`;\n\n const registrationPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockRegistrationBody,\n });\n\n beforeEach(() => {\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n line.removeAllListeners();\n });\n\n it('verify successful Registration cases and keepalive', async () => {\n jest.useFakeTimers();\n webex.request.mockReturnValue(registrationPayload);\n\n expect(createRegistrationSpy).toBeCalledOnceWith(\n webex,\n defaultServiceData,\n expect.any(Mutex),\n expect.anything(),\n LOGGER.INFO,\n undefined\n );\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n await line.register();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n body: {\n userId,\n clientDeviceUri,\n serviceData: defaultServiceData,\n },\n uri: `${primaryUrl}device`,\n method: 'POST',\n });\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(line.getActiveMobiusUrl()).toEqual(primaryUrl);\n expect(line.getLoggingLevel()).toEqual(LOGGER.INFO);\n expect(line.getDeviceId()).toEqual(mockRegistrationBody.device.deviceId);\n\n webex.request.mockClear();\n\n jest.advanceTimersByTime(30 * 1000);\n await Promise.resolve();\n\n jest.useRealTimers();\n });\n\n it('verify successful Registration cases and keepalive for a guest user', async () => {\n createRegistrationSpy.mockClear();\n const guestLine = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO,\n guestServiceData,\n mockJwe\n );\n jest.useFakeTimers();\n webex.request.mockReturnValue(registrationPayload);\n\n expect(createRegistrationSpy).toBeCalledOnceWith(\n webex,\n guestServiceData,\n expect.any(Mutex),\n expect.anything(),\n LOGGER.INFO,\n mockJwe\n );\n expect(guestLine.getStatus()).toEqual(RegistrationStatus.IDLE);\n await guestLine.register();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n body: {\n userId,\n clientDeviceUri,\n serviceData: {...guestServiceData, jwe: mockJwe},\n },\n uri: `${primaryUrl}device`,\n method: 'POST',\n });\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(guestLine.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(guestLine.getActiveMobiusUrl()).toEqual(primaryUrl);\n expect(guestLine.getLoggingLevel()).toEqual(LOGGER.INFO);\n expect(guestLine.getDeviceId()).toEqual(mockRegistrationBody.device.deviceId);\n\n webex.request.mockClear();\n\n jest.advanceTimersByTime(30 * 1000);\n await Promise.resolve();\n\n jest.useRealTimers();\n });\n\n it('verify failure Registration cases all requests fail ', async () => {\n line.removeAllListeners(LINE_EVENTS.ERROR);\n\n webex.request.mockRejectedValue({\n statusCode: 401,\n });\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.'\n );\n });\n\n expect(line.getStatus()).toBe(RegistrationStatus.IDLE);\n line.register();\n await utils.waitForMsecs(20);\n\n expect(line.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(handleErrorSpy).toBeCalledOnceWith(\n expect.anything(),\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n },\n expect.anything(),\n expect.anything()\n );\n });\n\n it('verify successful de-registration cases', async () => {\n webex.request.mockReturnValueOnce(registrationPayload);\n\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n await line.register();\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n await line.deregister();\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n });\n });\n\n describe('Line calling tests', () => {\n let line;\n\n beforeEach(() => {\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n line.removeAllListeners();\n });\n it('Return a successful call object while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '5003', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:5003',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(line.getCall(call ? call.getCorrelationId() : '')).toBe(call);\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n call?.end();\n });\n\n it('Return a successful call object while making call to FAC codes', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '*25', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:*25',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n call?.end();\n });\n\n it('Remove spaces from dialled number while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '+91 123 456 7890', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:+911234567890',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n expect(call ? call.destination.address : undefined).toStrictEqual('tel:+911234567890');\n call?.end();\n });\n\n it('Remove hyphen from dialled number while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '123-456-7890', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:1234567890',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n expect(call ? call.destination.address : undefined).toStrictEqual('tel:1234567890');\n call?.end();\n });\n\n it('attempt to create call with incorrect number format 1', (done) => {\n // There may be other listeners , which may create race\n line.removeAllListeners(LINE_EVENTS.ERROR);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'An invalid phone number was detected. Check the number and try again.'\n );\n done();\n });\n try {\n const call = line.makeCall({address: 'select#$@^^', type: CallType.URI});\n\n expect(call).toBeUndefined();\n expect(createCallSpy).not.toBeCalledOnceWith({});\n } catch (error) {\n done(error);\n }\n });\n\n it('attempt to create call with incorrect number format 2', (done) => {\n expect.assertions(4);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'An invalid phone number was detected. Check the number and try again.'\n );\n done();\n });\n\n try {\n const call = line.makeCall({address: '+1@8883332505', type: CallType.URI});\n\n expect(call).toBeUndefined();\n expect(createCallSpy).not.toBeCalledOnceWith({});\n } catch (error) {\n done(error);\n }\n });\n\n it('attempt to create call with guest calling service indicator', () => {\n expect.assertions(2);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n // Mocking the serviceData to have GUEST_CALLING indicator\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO,\n {indicator: ServiceIndicator.GUEST_CALLING}\n );\n const call = line.makeCall();\n\n expect(call).toBeTruthy();\n expect(createCallSpy).toBeCalledWith(CallDirection.OUTBOUND, undefined, expect.any(String));\n });\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["_asyncMutex","require","_testUtil","_registerFixtures","_common","_types","_types2","_","_interopRequireDefault","utils","_interopRequireWildcard","_SDKConnector","_constants","_types3","regUtils","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","describe","mutex","Mutex","webex","getTestUtilsWebex","SDKConnector","setWebex","defaultServiceData","indicator","ServiceIndicator","CALLING","domain","createRegistrationSpy","jest","spyOn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","primaryMobiusUris","fn","primary","backupMobiusUris","backup","userId","internal","device","clientDeviceUri","url","mockJwe","guestServiceData","GUEST_CALLING","guestName","handleErrorSpy","global","fetch","request","clearAllMocks","line","mockRegistrationBody","getMockDeviceInfo","discoveryBody","primaryUrl","concat","uris","registrationPayload","statusCode","body","beforeEach","Line","LOGGER","INFO","afterEach","clearAllTimers","useRealTimers","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","useFakeTimers","mockReturnValue","expect","toBeCalledOnceWith","any","anything","undefined","getStatus","toEqual","RegistrationStatus","IDLE","register","getMockRequestTemplate","serviceData","uri","method","not","toBeCalled","ACTIVE","getActiveMobiusUrl","getLoggingLevel","getDeviceId","deviceId","callManager","lineDict","mockClear","advanceTimersByTime","_promise","resolve","stop","_callee2","guestLine","_callee2$","_context2","jwe","_callee3","_callee3$","_context3","LINE_EVENTS","ERROR","mockRejectedValue","on","error","message","toBe","waitForMsecs","INACTIVE","file","REGISTRATION_FILE","_callee4","_callee4$","_context4","mockReturnValueOnce","deregister","createCallSpy","makeCall","address","type","CallType","URI","CallDirection","OUTBOUND","lineId","toBeTruthy","getCall","getCorrelationId","direction","toStrictEqual","end","destination","done","toBeUndefined","assertions","toBeCalledWith","String"],"sources":["line.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport {\n getMobiusDiscoveryResponse,\n getMockDeviceInfo,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {URL} from '../registration/registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {\n CallDirection,\n CallType,\n MobiusServers,\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n} from '../../common/types';\nimport {LINE_EVENTS} from './types';\nimport Line from '.';\nimport * as utils from '../../common/Utils';\nimport SDKConnector from '../../SDKConnector';\nimport {REGISTRATION_FILE} from '../constants';\nimport {LOGGER} from '../../Logger/types';\nimport * as regUtils from '../registration/register';\n\ndescribe('Line Tests', () => {\n const mutex = new Mutex();\n const webex = getTestUtilsWebex();\n SDKConnector.setWebex(webex);\n\n const defaultServiceData = {indicator: ServiceIndicator.CALLING, domain: ''};\n const createRegistrationSpy = jest.spyOn(regUtils, 'createRegistration');\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mockJwe = 'mockJwe';\n const guestServiceData = {\n indicator: ServiceIndicator.GUEST_CALLING,\n domain: '',\n guestName: 'testUser',\n };\n\n const handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\n // Simulate node fetch by adding the mock webex.request\n global.fetch = webex.request;\n\n jest.clearAllMocks();\n\n describe('Line Registration tests', () => {\n let line;\n const mockRegistrationBody = getMockDeviceInfo();\n\n const discoveryBody: MobiusServers = getMobiusDiscoveryResponse();\n const primaryUrl = `${discoveryBody.primary.uris[0]}/calling/web/`;\n\n const registrationPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockRegistrationBody,\n });\n\n beforeEach(() => {\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n line.removeAllListeners();\n });\n\n it('verify successful Registration cases and keepalive', async () => {\n jest.useFakeTimers();\n webex.request.mockReturnValue(registrationPayload);\n\n expect(createRegistrationSpy).toBeCalledOnceWith(\n webex,\n defaultServiceData,\n expect.any(Mutex),\n expect.anything(),\n LOGGER.INFO,\n undefined\n );\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n await line.register();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n body: {\n userId,\n clientDeviceUri,\n serviceData: defaultServiceData,\n },\n uri: `${primaryUrl}device`,\n method: 'POST',\n });\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(line.getActiveMobiusUrl()).toEqual(primaryUrl);\n expect(line.getLoggingLevel()).toEqual(LOGGER.INFO);\n expect(line.getDeviceId()).toEqual(mockRegistrationBody.device.deviceId);\n expect(line.callManager.lineDict[mockRegistrationBody.device.deviceId]).toEqual(line);\n\n webex.request.mockClear();\n\n jest.advanceTimersByTime(30 * 1000);\n await Promise.resolve();\n\n jest.useRealTimers();\n });\n\n it('verify successful Registration cases and keepalive for a guest user', async () => {\n createRegistrationSpy.mockClear();\n const guestLine = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO,\n guestServiceData,\n mockJwe\n );\n jest.useFakeTimers();\n webex.request.mockReturnValue(registrationPayload);\n\n expect(createRegistrationSpy).toBeCalledOnceWith(\n webex,\n guestServiceData,\n expect.any(Mutex),\n expect.anything(),\n LOGGER.INFO,\n mockJwe\n );\n expect(guestLine.getStatus()).toEqual(RegistrationStatus.IDLE);\n await guestLine.register();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n body: {\n userId,\n clientDeviceUri,\n serviceData: {...guestServiceData, jwe: mockJwe},\n },\n uri: `${primaryUrl}device`,\n method: 'POST',\n });\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(guestLine.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(guestLine.getActiveMobiusUrl()).toEqual(primaryUrl);\n expect(guestLine.getLoggingLevel()).toEqual(LOGGER.INFO);\n expect(guestLine.getDeviceId()).toEqual(mockRegistrationBody.device.deviceId);\n\n webex.request.mockClear();\n\n jest.advanceTimersByTime(30 * 1000);\n await Promise.resolve();\n\n jest.useRealTimers();\n });\n\n it('verify failure Registration cases all requests fail ', async () => {\n line.removeAllListeners(LINE_EVENTS.ERROR);\n\n webex.request.mockRejectedValue({\n statusCode: 401,\n });\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.'\n );\n });\n\n expect(line.getStatus()).toBe(RegistrationStatus.IDLE);\n line.register();\n await utils.waitForMsecs(20);\n\n expect(line.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(handleErrorSpy).toBeCalledOnceWith(\n expect.anything(),\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n },\n expect.anything(),\n expect.anything()\n );\n });\n\n it('verify successful de-registration cases', async () => {\n webex.request.mockReturnValueOnce(registrationPayload);\n\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n await line.register();\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n await line.deregister();\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n });\n });\n\n describe('Line calling tests', () => {\n let line;\n\n beforeEach(() => {\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n line.removeAllListeners();\n });\n it('Return a successful call object while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '5003', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:5003',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(line.getCall(call ? call.getCorrelationId() : '')).toBe(call);\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n call?.end();\n });\n\n it('Return a successful call object while making call to FAC codes', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '*25', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:*25',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n call?.end();\n });\n\n it('Remove spaces from dialled number while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '+91 123 456 7890', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:+911234567890',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n expect(call ? call.destination.address : undefined).toStrictEqual('tel:+911234567890');\n call?.end();\n });\n\n it('Remove hyphen from dialled number while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '123-456-7890', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:1234567890',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n expect(call ? call.destination.address : undefined).toStrictEqual('tel:1234567890');\n call?.end();\n });\n\n it('attempt to create call with incorrect number format 1', (done) => {\n // There may be other listeners , which may create race\n line.removeAllListeners(LINE_EVENTS.ERROR);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'An invalid phone number was detected. Check the number and try again.'\n );\n done();\n });\n try {\n const call = line.makeCall({address: 'select#$@^^', type: CallType.URI});\n\n expect(call).toBeUndefined();\n expect(createCallSpy).not.toBeCalledOnceWith({});\n } catch (error) {\n done(error);\n }\n });\n\n it('attempt to create call with incorrect number format 2', (done) => {\n expect.assertions(4);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'An invalid phone number was detected. Check the number and try again.'\n );\n done();\n });\n\n try {\n const call = line.makeCall({address: '+1@8883332505', type: CallType.URI});\n\n expect(call).toBeUndefined();\n expect(createCallSpy).not.toBeCalledOnceWith({});\n } catch (error) {\n done(error);\n }\n });\n\n it('attempt to create call with guest calling service indicator', () => {\n expect.assertions(2);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n // Mocking the serviceData to have GUEST_CALLING indicator\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO,\n {indicator: ServiceIndicator.GUEST_CALLING}\n );\n const call = line.makeCall();\n\n expect(call).toBeTruthy();\n expect(createCallSpy).toBeCalledWith(CallDirection.OUTBOUND, undefined, expect.any(String));\n });\n });\n});\n"],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = windowsChromiumIceWarmup;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
12
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
13
+ // This file contains a workaround for a known issue in Windows Chromium-based browsers
14
+ // See: https://issues.chromium.org/issues/332933530
15
+ // There is a rare condition where WebRTC doesn't work on the first try due to ICE gathering issues.
16
+ // This function attempts to "warm up" the ICE gathering process by creating a pair of peer connections
17
+ // and forcing ICE candidate gathering and exchange before the actual call setup.
18
+ // We need to try establishing the connection through the srflx candidates since the host candidate won't work
19
+ // This is intended to be called once at the start of the calling SDK to reduce the likelihood of ICE issues later.
20
+ function waitForIceComplete(pc, timeoutMs) {
21
+ return new _promise.default(function (resolve) {
22
+ if (!pc) {
23
+ resolve({
24
+ ok: false,
25
+ reason: 'no-pc'
26
+ });
27
+ return;
28
+ }
29
+ if (pc.iceGatheringState === 'complete') {
30
+ resolve({
31
+ ok: true,
32
+ reached: 'already'
33
+ });
34
+ return;
35
+ }
36
+ var done = false;
37
+ var onChange = function onChange() {
38
+ if (pc.iceGatheringState === 'complete' && !done) {
39
+ done = true;
40
+ pc.removeEventListener('icegatheringstatechange', onChange);
41
+ resolve({
42
+ ok: true,
43
+ reached: 'event'
44
+ });
45
+ }
46
+ };
47
+ pc.addEventListener('icegatheringstatechange', onChange);
48
+
49
+ // timeout fallback
50
+ setTimeout(function () {
51
+ if (done) return;
52
+ done = true;
53
+ pc.removeEventListener('icegatheringstatechange', onChange);
54
+ resolve({
55
+ ok: pc.iceGatheringState === 'complete',
56
+ reached: 'timeout'
57
+ });
58
+ }, timeoutMs);
59
+ });
60
+ }
61
+ function windowsChromiumIceWarmup(_x) {
62
+ return _windowsChromiumIceWarmup.apply(this, arguments);
63
+ }
64
+ function _windowsChromiumIceWarmup() {
65
+ _windowsChromiumIceWarmup = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
66
+ var _ref$iceServers, iceServers, _ref$timeoutMs, timeoutMs, pc1, pc2, candidates, offer, answer;
67
+ return _regenerator.default.wrap(function _callee$(_context) {
68
+ while (1) switch (_context.prev = _context.next) {
69
+ case 0:
70
+ _ref$iceServers = _ref.iceServers, iceServers = _ref$iceServers === void 0 ? [{
71
+ urls: 'stun:stun01a-us.bcld.webex.com:5004'
72
+ }, {
73
+ urls: 'stun:stun02a-us.bcld.webex.com:5004'
74
+ }] : _ref$iceServers, _ref$timeoutMs = _ref.timeoutMs, timeoutMs = _ref$timeoutMs === void 0 ? 1000 : _ref$timeoutMs;
75
+ pc1 = new RTCPeerConnection({
76
+ iceServers: iceServers,
77
+ iceCandidatePoolSize: 1
78
+ });
79
+ pc2 = new RTCPeerConnection({
80
+ iceServers: iceServers,
81
+ iceCandidatePoolSize: 1
82
+ });
83
+ candidates = {
84
+ pc1: [],
85
+ pc2: []
86
+ };
87
+ pc1.onicecandidate = function (e) {
88
+ if (e.candidate && e.candidate.type !== 'host') {
89
+ candidates.pc1.push(e.candidate);
90
+ }
91
+ };
92
+ _context.next = 7;
93
+ return pc1.createDataChannel('warmup');
94
+ case 7:
95
+ _context.next = 9;
96
+ return pc1.addTransceiver('audio');
97
+ case 9:
98
+ _context.next = 11;
99
+ return pc1.createOffer();
100
+ case 11:
101
+ offer = _context.sent;
102
+ _context.next = 14;
103
+ return pc1.setLocalDescription(offer);
104
+ case 14:
105
+ _context.next = 16;
106
+ return waitForIceComplete(pc1, timeoutMs);
107
+ case 16:
108
+ _context.next = 18;
109
+ return pc2.setRemoteDescription(offer);
110
+ case 18:
111
+ pc2.onicecandidate = function (e) {
112
+ if (e.candidate && e.candidate.type !== 'host') {
113
+ candidates.pc2.push(e.candidate);
114
+ }
115
+ };
116
+ _context.next = 21;
117
+ return pc2.createAnswer();
118
+ case 21:
119
+ answer = _context.sent;
120
+ _context.next = 24;
121
+ return pc2.setLocalDescription(answer);
122
+ case 24:
123
+ _context.next = 26;
124
+ return pc1.setRemoteDescription(answer);
125
+ case 26:
126
+ _context.next = 28;
127
+ return waitForIceComplete(pc2, timeoutMs);
128
+ case 28:
129
+ _context.next = 30;
130
+ return _promise.default.all([].concat((0, _toConsumableArray2.default)(candidates.pc1.map(function (candidate) {
131
+ return pc2.addIceCandidate(candidate).catch(console.error);
132
+ })), (0, _toConsumableArray2.default)(candidates.pc2.map(function (candidate) {
133
+ return pc1.addIceCandidate(candidate).catch(console.error);
134
+ }))));
135
+ case 30:
136
+ pc1.close();
137
+ pc2.close();
138
+ case 32:
139
+ case "end":
140
+ return _context.stop();
141
+ }
142
+ }, _callee);
143
+ }));
144
+ return _windowsChromiumIceWarmup.apply(this, arguments);
145
+ }
146
+ //# sourceMappingURL=windowsChromiumIceWarmupUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["waitForIceComplete","pc","timeoutMs","_promise","default","resolve","ok","reason","iceGatheringState","reached","done","onChange","removeEventListener","addEventListener","setTimeout","windowsChromiumIceWarmup","_x","_windowsChromiumIceWarmup","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","_ref","_ref$iceServers","iceServers","_ref$timeoutMs","pc1","pc2","candidates","offer","answer","wrap","_callee$","_context","prev","next","urls","RTCPeerConnection","iceCandidatePoolSize","onicecandidate","e","candidate","type","push","createDataChannel","addTransceiver","createOffer","sent","setLocalDescription","setRemoteDescription","createAnswer","all","concat","_toConsumableArray2","map","addIceCandidate","catch","console","error","close","stop"],"sources":["windowsChromiumIceWarmupUtils.ts"],"sourcesContent":["// This file contains a workaround for a known issue in Windows Chromium-based browsers\n// See: https://issues.chromium.org/issues/332933530\n// There is a rare condition where WebRTC doesn't work on the first try due to ICE gathering issues.\n// This function attempts to \"warm up\" the ICE gathering process by creating a pair of peer connections\n// and forcing ICE candidate gathering and exchange before the actual call setup.\n// We need to try establishing the connection through the srflx candidates since the host candidate won't work\n// This is intended to be called once at the start of the calling SDK to reduce the likelihood of ICE issues later.\nfunction waitForIceComplete(pc: RTCPeerConnection, timeoutMs: number) {\n return new Promise((resolve) => {\n if (!pc) {\n resolve({ok: false, reason: 'no-pc'});\n\n return;\n }\n if (pc.iceGatheringState === 'complete') {\n resolve({ok: true, reached: 'already'});\n\n return;\n }\n\n let done = false;\n const onChange = () => {\n if (pc.iceGatheringState === 'complete' && !done) {\n done = true;\n pc.removeEventListener('icegatheringstatechange', onChange);\n resolve({ok: true, reached: 'event'});\n }\n };\n pc.addEventListener('icegatheringstatechange', onChange);\n\n // timeout fallback\n setTimeout(() => {\n if (done) return;\n done = true;\n pc.removeEventListener('icegatheringstatechange', onChange);\n resolve({ok: pc.iceGatheringState === 'complete', reached: 'timeout'});\n }, timeoutMs);\n });\n}\n\nexport default async function windowsChromiumIceWarmup({\n iceServers = [\n {urls: 'stun:stun01a-us.bcld.webex.com:5004'},\n {urls: 'stun:stun02a-us.bcld.webex.com:5004'},\n ],\n timeoutMs = 1000,\n}) {\n const pc1 = new RTCPeerConnection({iceServers, iceCandidatePoolSize: 1});\n const pc2 = new RTCPeerConnection({iceServers, iceCandidatePoolSize: 1});\n\n const candidates: {pc1: RTCIceCandidate[]; pc2: RTCIceCandidate[]} = {pc1: [], pc2: []};\n pc1.onicecandidate = (e) => {\n if (e.candidate && e.candidate.type !== 'host') {\n candidates.pc1.push(e.candidate);\n }\n };\n\n await pc1.createDataChannel('warmup');\n await pc1.addTransceiver('audio');\n\n const offer = await pc1.createOffer();\n await pc1.setLocalDescription(offer);\n\n await waitForIceComplete(pc1, timeoutMs);\n\n await pc2.setRemoteDescription(offer);\n pc2.onicecandidate = (e) => {\n if (e.candidate && e.candidate.type !== 'host') {\n candidates.pc2.push(e.candidate);\n }\n };\n\n const answer = await pc2.createAnswer();\n await pc2.setLocalDescription(answer);\n await pc1.setRemoteDescription(answer);\n\n await waitForIceComplete(pc2, timeoutMs);\n\n // Add ice candidates that were gathered\n await Promise.all([\n ...candidates.pc1.map((candidate) => pc2.addIceCandidate(candidate).catch(console.error)),\n ...candidates.pc2.map((candidate) => pc1.addIceCandidate(candidate).catch(console.error)),\n ]);\n\n pc1.close();\n pc2.close();\n}\n"],"mappings":"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"}
@@ -13,6 +13,7 @@ import { CALLING_CLIENT_FILE, CALLS_CLEARED_HANDLER_UTIL, CALLING_USER_AGENT, CI
13
13
  import Line from './line';
14
14
  import { METRIC_EVENT, REG_ACTION, METRIC_TYPE } from '../Metrics/types';
15
15
  import { getMetricManager } from '../Metrics';
16
+ import windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';
16
17
  export class CallingClient extends Eventing {
17
18
  sdkConnector;
18
19
  webex;
@@ -86,6 +87,19 @@ export class CallingClient extends Eventing {
86
87
  this.registerCallsClearedListener();
87
88
  }
88
89
  async init() {
90
+ try {
91
+ await windowsChromiumIceWarmup({
92
+ iceServers: [
93
+ { urls: 'stun:stun01a-us.bcld.webex.com:5004' },
94
+ { urls: 'stun:stun02a-us.bcld.webex.com:5004' },
95
+ ],
96
+ timeoutMs: 1000,
97
+ });
98
+ log.info(`ICE warmup completed`, '');
99
+ }
100
+ catch (err) {
101
+ log.warn(`ICE warmup failed: ${err}`, '');
102
+ }
89
103
  await this.getMobiusServers();
90
104
  await this.createLine();
91
105
  this.detectNetworkChange();
@@ -148,6 +148,7 @@ export const METHODS = {
148
148
  HANDLE_OUTGOING_ROAP_ANSWER: 'handleOutgoingRoapAnswer',
149
149
  HANDLE_INCOMING_ROAP_OFFER: 'handleIncomingRoapOffer',
150
150
  HANDLE_INCOMING_ROAP_ANSWER: 'handleIncomingRoapAnswer',
151
+ INIT: 'init',
151
152
  FORCE_SEND_STATS_REPORT: 'forceSendStatsReport',
152
153
  UPDATE_ACTIVE_MOBIUS: 'updateActiveMobius',
153
154
  DEQUEUE_WS_EVENTS: 'dequeueWsEvents',
@@ -69,9 +69,6 @@ export default class Line extends Eventing {
69
69
  this.registration.setMobiusServers(this.#primaryMobiusUris, this.#backupMobiusUris);
70
70
  await this.registration.triggerRegistration();
71
71
  });
72
- if (this.mobiusDeviceId) {
73
- this.callManager.updateLine(this.mobiusDeviceId, this);
74
- }
75
72
  }
76
73
  async deregister() {
77
74
  log.info(METHOD_START_MESSAGE, {
@@ -93,6 +90,9 @@ export default class Line extends Eventing {
93
90
  this.rehomingIntervalMax = rehomingIntervalMax;
94
91
  this.voicePortalNumber = voicePortalNumber;
95
92
  this.voicePortalExtension = voicePortalExtension;
93
+ if (this.mobiusDeviceId) {
94
+ this.callManager.updateLine(this.mobiusDeviceId, this);
95
+ }
96
96
  }
97
97
  lineEmitter = (event, deviceInfo, lineError) => {
98
98
  log.info(METHOD_START_MESSAGE, {
@@ -0,0 +1,62 @@
1
+ function waitForIceComplete(pc, timeoutMs) {
2
+ return new Promise((resolve) => {
3
+ if (!pc) {
4
+ resolve({ ok: false, reason: 'no-pc' });
5
+ return;
6
+ }
7
+ if (pc.iceGatheringState === 'complete') {
8
+ resolve({ ok: true, reached: 'already' });
9
+ return;
10
+ }
11
+ let done = false;
12
+ const onChange = () => {
13
+ if (pc.iceGatheringState === 'complete' && !done) {
14
+ done = true;
15
+ pc.removeEventListener('icegatheringstatechange', onChange);
16
+ resolve({ ok: true, reached: 'event' });
17
+ }
18
+ };
19
+ pc.addEventListener('icegatheringstatechange', onChange);
20
+ setTimeout(() => {
21
+ if (done)
22
+ return;
23
+ done = true;
24
+ pc.removeEventListener('icegatheringstatechange', onChange);
25
+ resolve({ ok: pc.iceGatheringState === 'complete', reached: 'timeout' });
26
+ }, timeoutMs);
27
+ });
28
+ }
29
+ export default async function windowsChromiumIceWarmup({ iceServers = [
30
+ { urls: 'stun:stun01a-us.bcld.webex.com:5004' },
31
+ { urls: 'stun:stun02a-us.bcld.webex.com:5004' },
32
+ ], timeoutMs = 1000, }) {
33
+ const pc1 = new RTCPeerConnection({ iceServers, iceCandidatePoolSize: 1 });
34
+ const pc2 = new RTCPeerConnection({ iceServers, iceCandidatePoolSize: 1 });
35
+ const candidates = { pc1: [], pc2: [] };
36
+ pc1.onicecandidate = (e) => {
37
+ if (e.candidate && e.candidate.type !== 'host') {
38
+ candidates.pc1.push(e.candidate);
39
+ }
40
+ };
41
+ await pc1.createDataChannel('warmup');
42
+ await pc1.addTransceiver('audio');
43
+ const offer = await pc1.createOffer();
44
+ await pc1.setLocalDescription(offer);
45
+ await waitForIceComplete(pc1, timeoutMs);
46
+ await pc2.setRemoteDescription(offer);
47
+ pc2.onicecandidate = (e) => {
48
+ if (e.candidate && e.candidate.type !== 'host') {
49
+ candidates.pc2.push(e.candidate);
50
+ }
51
+ };
52
+ const answer = await pc2.createAnswer();
53
+ await pc2.setLocalDescription(answer);
54
+ await pc1.setRemoteDescription(answer);
55
+ await waitForIceComplete(pc2, timeoutMs);
56
+ await Promise.all([
57
+ ...candidates.pc1.map((candidate) => pc2.addIceCandidate(candidate).catch(console.error)),
58
+ ...candidates.pc2.map((candidate) => pc1.addIceCandidate(candidate).catch(console.error)),
59
+ ]);
60
+ pc1.close();
61
+ pc2.close();
62
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"CallingClient.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/CallingClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAUpD,OAAO,EAAC,MAAM,EAAa,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAmB,aAAa,EAAe,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,uBAAuB,EAKxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EASL,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAC,KAAK,EAAe,MAAM,iBAAiB,CAAC;AAsBpD,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AAenC,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAC5F,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,aAAa,CAAiB;IAEtC,OAAO,CAAC,SAAS,CAAC,CAAsB;IAExC,OAAO,CAAC,iBAAiB,CAAW;IAEpC,OAAO,CAAC,gBAAgB,CAAW;IAEnC,OAAO,CAAC,cAAc,CAAgB;IAEtC,OAAO,CAAC,UAAU,CAAS;IAEpB,WAAW,EAAE,OAAO,KAAK,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAA6B;gBAKjC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB;IAwF5C,IAAI;YAWH,mBAAmB;YAwCnB,mBAAmB;YA0FnB,gBAAgB;IAuH9B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB,CAoBzB;IAMK,eAAe,IAAI,MAAM;IAQzB,eAAe,IAAI,aAAa;IAIvC,OAAO,CAAC,wBAAwB;YAgClB,UAAU;IAuBjB,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAOjC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAiBzC,gBAAgB,IAAI,KAAK,GAAG,SAAS;IAuB/B,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAQvD;AAOD,eAAO,MAAM,YAAY,UAChB,QAAQ,WACN,mBAAmB,KAC3B,QAAQ,cAAc,CAKxB,CAAC"}
1
+ {"version":3,"file":"CallingClient.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/CallingClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAUpD,OAAO,EAAC,MAAM,EAAa,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAmB,aAAa,EAAe,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,uBAAuB,EAKxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EASL,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAC,KAAK,EAAe,MAAM,iBAAiB,CAAC;AAsBpD,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AAgBnC,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAC5F,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,aAAa,CAAiB;IAEtC,OAAO,CAAC,SAAS,CAAC,CAAsB;IAExC,OAAO,CAAC,iBAAiB,CAAW;IAEpC,OAAO,CAAC,gBAAgB,CAAW;IAEnC,OAAO,CAAC,cAAc,CAAgB;IAEtC,OAAO,CAAC,UAAU,CAAS;IAEpB,WAAW,EAAE,OAAO,KAAK,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAA6B;gBAKjC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB;IAwF5C,IAAI;YAwBH,mBAAmB;YAwCnB,mBAAmB;YA0FnB,gBAAgB;IAuH9B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB,CAoBzB;IAMK,eAAe,IAAI,MAAM;IAQzB,eAAe,IAAI,aAAa;IAIvC,OAAO,CAAC,wBAAwB;YAgClB,UAAU;IAuBjB,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAOjC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAiBzC,gBAAgB,IAAI,KAAK,GAAG,SAAS;IAuB/B,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAQvD;AAOD,eAAO,MAAM,YAAY,UAChB,QAAQ,WACN,mBAAmB,KAC3B,QAAQ,cAAc,CAKxB,CAAC"}
@@ -148,6 +148,7 @@ export declare const METHODS: {
148
148
  HANDLE_OUTGOING_ROAP_ANSWER: string;
149
149
  HANDLE_INCOMING_ROAP_OFFER: string;
150
150
  HANDLE_INCOMING_ROAP_ANSWER: string;
151
+ INIT: string;
151
152
  FORCE_SEND_STATS_REPORT: string;
152
153
  UPDATE_ACTIVE_MOBIUS: string;
153
154
  DEQUEUE_WS_EVENTS: string;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/constants.ts"],"names":[],"mappings":"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"}