@webex/calling 3.8.0 → 3.8.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallHistory/CallHistory.js +100 -63
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +115 -19
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallHistory/constants.js +9 -1
- package/dist/CallHistory/constants.js.map +1 -1
- package/dist/CallSettings/CallSettings.js +46 -13
- package/dist/CallSettings/CallSettings.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.js +62 -18
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +70 -7
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.js +153 -103
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.test.js +52 -15
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/constants.js +15 -1
- package/dist/CallSettings/constants.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +220 -159
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +53 -24
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +251 -189
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +96 -41
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +73 -48
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +96 -37
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/constants.js +105 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +47 -18
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +2 -2
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +359 -297
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +561 -163
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +156 -102
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +197 -49
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Contacts/constants.js +11 -1
- package/dist/Contacts/constants.js.map +1 -1
- package/dist/Errors/types.js +2 -0
- package/dist/Errors/types.js.map +1 -1
- package/dist/Events/impl/index.js +1 -1
- package/dist/Events/impl/index.js.map +1 -1
- package/dist/Metrics/index.js +102 -41
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +10 -4
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +4 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +154 -91
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.test.js +99 -19
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.js +105 -54
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.test.js +127 -17
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/Voicemail.js +198 -79
- package/dist/Voicemail/Voicemail.js.map +1 -1
- package/dist/Voicemail/Voicemail.test.js +188 -23
- package/dist/Voicemail/Voicemail.test.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.js +277 -161
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.test.js +268 -10
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/constants.js +25 -1
- package/dist/Voicemail/constants.js.map +1 -1
- package/dist/Voicemail/types.js.map +1 -1
- package/dist/common/Utils.js +168 -104
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +199 -35
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/constants.js +2 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/testUtil.js +3 -0
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +32 -13
- package/dist/module/CallHistory/constants.js +6 -0
- package/dist/module/CallSettings/CallSettings.js +36 -3
- package/dist/module/CallSettings/UcmBackendConnector.js +50 -5
- package/dist/module/CallSettings/WxCallBackendConnector.js +54 -18
- package/dist/module/CallSettings/constants.js +12 -0
- package/dist/module/CallingClient/CallingClient.js +54 -16
- package/dist/module/CallingClient/calling/call.js +172 -121
- package/dist/module/CallingClient/calling/callManager.js +51 -26
- package/dist/module/CallingClient/constants.js +102 -2
- package/dist/module/CallingClient/line/index.js +37 -8
- package/dist/module/CallingClient/registration/register.js +103 -64
- package/dist/module/Contacts/ContactsClient.js +65 -21
- package/dist/module/Contacts/constants.js +10 -0
- package/dist/module/Errors/types.js +2 -0
- package/dist/module/Events/impl/index.js +1 -1
- package/dist/module/Metrics/index.js +57 -2
- package/dist/module/Metrics/types.js +3 -0
- package/dist/module/Voicemail/BroadworksBackendConnector.js +66 -17
- package/dist/module/Voicemail/UcmBackendConnector.js +51 -11
- package/dist/module/Voicemail/Voicemail.js +109 -9
- package/dist/module/Voicemail/WxCallBackendConnector.js +67 -18
- package/dist/module/Voicemail/constants.js +21 -0
- package/dist/module/common/Utils.js +51 -12
- package/dist/module/common/constants.js +1 -0
- package/dist/module/common/testUtil.js +3 -0
- package/dist/module/index.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallHistory/constants.d.ts +6 -0
- package/dist/types/CallHistory/constants.d.ts.map +1 -1
- package/dist/types/CallSettings/CallSettings.d.ts.map +1 -1
- package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/CallSettings/constants.d.ts +12 -0
- package/dist/types/CallSettings/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts +2 -3
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +102 -2
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +3 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +1 -0
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
- package/dist/types/Contacts/constants.d.ts +10 -0
- package/dist/types/Contacts/constants.d.ts.map +1 -1
- package/dist/types/Errors/types.d.ts +2 -0
- package/dist/types/Errors/types.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +7 -2
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +11 -2
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/Voicemail.d.ts +1 -1
- package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts +3 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/constants.d.ts +21 -0
- package/dist/types/Voicemail/constants.d.ts.map +1 -1
- package/dist/types/Voicemail/types.d.ts +1 -1
- package/dist/types/Voicemail/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +4 -4
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/constants.d.ts +1 -0
- package/dist/types/common/constants.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +3 -0
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +12 -0
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","require","_types","_common","_types2","_Metrics","_calling","_Logger","_interopRequireDefault","_SDKConnector","_types3","_constants","_types4","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ownKeys","r","t","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Registration","exports","webex","serviceData","mutex","lineEmitter","logLevel","jwe","_classCallCheck2","sdkConnector","SDKConnector","isCCFlow","indicator","ServiceIndicator","CONTACT_CENTER","getWebex","setWebex","userId","internal","device","registrationStatus","RegistrationStatus","IDLE","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","_createClass2","key","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","concat","method","file","updateActiveMobius","setMobiusServers","_postKeepAlive","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","abrupt","request","uri","HTTP_METHODS","POST","headers","CISCO_DEVICE_URL","SPARK_USER_AGENT","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","stop","postKeepAlive","_x","_deleteRegistration","_callee2","deviceId","deviceUrl","_response","response","_callee2$","_context2","t0","fetch","t1","DEVICES_ENDPOINT_RESOURCE","t2","DELETE","t3","t4","t5","t6","credentials","getUserToken","t7","sent","t8","t9","WEBEX_WEB_CLIENT","uuid","t10","t11","t12","t13","t14","t15","warn","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","json","deleteRegistration","_x2","_x3","_x4","_postRegistration","_callee3","deviceInfo","_callee3$","_context3","clientDeviceUri","body","postRegistration","_x5","_restorePreviousRegistration","_callee4","caller","abort","_callee4$","_context4","attemptRegistrationWithServers","restorePreviousRegistration","_x6","_scheduleFailback429Retry","_callee5","interval","_callee5$","_context5","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","FAILBACK_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","isDeviceRegistered","restartRegistration","scheduleFailback429Retry","attempt","undefined","BASE_REG_RETRY_TIMER_VAL_IN_SEC","Math","pow","BASE_REG_TIMER_MFACTOR","floor","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee10","_this","timeElapsed","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args10","_callee10$","_context10","startFailoverTimer","REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","_now","setTimeout","_callee7","_callee7$","_context7","runExclusive","_callee6","currentTime","_callee6$","_context6","_callee9","_callee9$","_context9","_callee8","_callee8$","_context8","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this2","_callee11","_callee11$","_context11","executeFailback","_executeFailback","_callee13","_this3","_callee13$","_context13","_callee12","abortNew","_callee12$","_context12","_keys","getActiveCalls","deregister","FAILBACK_UTIL","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee14","_callee14$","_context14","_x7","_handleConnectionRestoration","_callee16","retry","_this4","_callee16$","_context16","_callee15","_callee15$","_context15","handleConnectionRestoration","clearKeepaliveTimer","_x8","restoreRegistrationCallBack","_this5","_ref8","_callee17","restoreData","logContext","restore","finalError","_callee17$","_context17","isRegRetry","getExistingDevice","setRegRetry","_x9","_x10","_triggerRegistration","_callee18","_callee18$","_context18","triggerRegistration","_attemptRegistrationWithServers","_callee19","_this6","servers","_iterator","_step","_this$deviceInfo$devi","resp","error","_args19","_callee19$","_context19","CONNECTING","REGISTERED","setDeviceInfo","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","startKeepaliveTimer","keepaliveInterval","handleRegistrationErrors","REGISTRATION_ERROR","statusCode","ERROR_CODE","TOO_MANY_REQUESTS","finish","_x11","_this7","keepAliveRetryCount","RETRY_COUNT_THRESHOLD","keepaliveTimer","setInterval","_callee21","_callee21$","_context21","_callee20","res","_callee20$","_context20","RECONNECTED","KEEPALIVE_FAILURE","reconnectOnFailure","RECONNECTING","clearInterval","isReconnectPending","reconnectPending","_deregister","_callee22","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_callee22$","_context22","registerRetry","devices","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","replace","_reconnectOnFailure","_callee23","_callee23$","_context23","_x12","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {Mutex} from 'async-mutex';\nimport {ERROR_CODE} from '../../Errors/types';\nimport {emitFinalFailure, handleRegistrationErrors} from '../../common';\n\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, REG_ACTION} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {ICallManager} from '../calling/types';\nimport {getCallManager} from '../calling';\nimport {LOGGER} from '../../Logger/types';\nimport log from '../../Logger';\nimport {IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n IDeviceInfo,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n WebexRequestPayload,\n} from '../../common/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DEVICES_ENDPOINT_RESOURCE,\n SPARK_USER_AGENT,\n WEBEX_WEB_CLIENT,\n BASE_REG_RETRY_TIMER_VAL_IN_SEC,\n BASE_REG_TIMER_MFACTOR,\n SEC_TO_MSEC_MFACTOR,\n REG_RANDOM_T_FACTOR_UPPER_LIMIT,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n MINUTES_TO_SEC_MFACTOR,\n FAILBACK_429_RETRY_UTIL,\n REG_FAILBACK_429_MAX_RETRIES,\n FAILBACK_UTIL,\n REGISTRATION_FILE,\n DEFAULT_REHOMING_INTERVAL_MIN,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_KEEPALIVE_INTERVAL,\n REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\n\n/**\n *\n */\nexport class Registration implements IRegistration {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private userId = '';\n\n private serviceData: ServiceData;\n\n private failback429RetryAttempts: number;\n private registrationStatus: RegistrationStatus;\n private failbackTimer?: NodeJS.Timer;\n private activeMobiusUrl!: string;\n\n private keepaliveTimer: NodeJS.Timer | undefined;\n private rehomingIntervalMin: number;\n\n private rehomingIntervalMax: number;\n private mutex: Mutex;\n private metricManager: IMetricManager;\n private lineEmitter: LineEmitterCallback;\n private callManager: ICallManager;\n private deviceInfo: IDeviceInfo = {};\n private primaryMobiusUris: string[];\n private backupMobiusUris: string[];\n private registerRetry = false;\n private reconnectPending = false;\n private jwe?: string;\n private isCCFlow = false;\n private failoverImmediately = false;\n\n /**\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n ) {\n this.jwe = jwe;\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\n this.isCCFlow = serviceData.indicator === ServiceIndicator.CONTACT_CENTER;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.userId = this.webex.internal.device.userId;\n this.registrationStatus = RegistrationStatus.IDLE;\n this.failback429RetryAttempts = 0;\n log.setLogger(logLevel, REGISTRATION_FILE);\n this.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n this.mutex = mutex;\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n this.lineEmitter = lineEmitter;\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n }\n\n public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`ActiveMobiusUrl: ${url}`, {method: 'setActiveMobiusUrl', file: REGISTRATION_FILE});\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of sending keepalive.\n *\n */\n private async postKeepAlive(url: string) {\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}/status`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n /**\n * Implementation of delete device.\n *\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n let response;\n try {\n response = await fetch(`${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`, {\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n Authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${WEBEX_WEB_CLIENT}_${uuid()}`,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n } catch (error) {\n log.warn(`Delete failed with Mobius`, {});\n }\n\n this.setStatus(RegistrationStatus.INACTIVE);\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n return <WebexRequestPayload>response?.json();\n }\n\n /**\n * Implementation of POST request for device registration.\n *\n */\n private async postRegistration(url: string) {\n const deviceInfo = {\n userId: this.userId,\n clientDeviceUri: this.webex.internal.device.url,\n serviceData: this.jwe ? {...this.serviceData, jwe: this.jwe} : this.serviceData,\n };\n\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}device`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceInfo.clientDeviceUri,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: deviceInfo,\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n /**\n * Re-attempts registration with the mobius url it was last registered\n * to, that mobius url is expected to be updated already in this.activeMobiusUrl.\n */\n private async restorePreviousRegistration(caller: string): Promise<boolean> {\n let abort = false;\n\n if (this.activeMobiusUrl) {\n abort = await this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);\n }\n\n return abort;\n }\n\n /**\n * When a failback request is rejected with 429, it means the\n * request did not even land on primary mobius to know if it\n * can handle this device registration now, in such cases this\n * method is called to retry sooner than the rehoming timer value.\n */\n private async scheduleFailback429Retry() {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\n }\n this.clearFailbackTimer();\n this.failback429RetryAttempts += 1;\n log.log(`Received 429 while rehoming, 429 retry count : ${this.failback429RetryAttempts}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n const abort = await this.restorePreviousRegistration(FAILBACK_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(FAILBACK_429_RETRY_UTIL);\n }\n }\n\n /**\n * Calculates and returns a random interval value using input argument\n * attempt as the variable factor.\n *\n * attempted already.\n */\n private getRegRetryInterval(attempt = 1): number {\n return (\n BASE_REG_RETRY_TIMER_VAL_IN_SEC +\n BASE_REG_TIMER_MFACTOR ** attempt +\n Math.floor(\n (Math.random() * (REG_RANDOM_T_FACTOR_UPPER_LIMIT - SEC_TO_MSEC_MFACTOR + 1) +\n SEC_TO_MSEC_MFACTOR) /\n SEC_TO_MSEC_MFACTOR\n )\n );\n }\n\n /**\n * Schedules registration retry with primary mobius servers at a random\n * interval calculated based on the number of times registration retry is already done\n * Once the time taken since the beginning of retry attempt exceeds the\n * retry threshold, it switches over to backup mobius servers.\n *\n */\n private async startFailoverTimer(attempt = 1, timeElapsed = 0) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: this.startFailoverTimer.name,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n const TIMER_THRESHOLD = this.isCCFlow\n ? REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC\n : REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n if (timeElapsed + interval > TIMER_THRESHOLD) {\n const excessVal = timeElapsed + interval - TIMER_THRESHOLD;\n\n interval -= excessVal;\n }\n\n let abort;\n\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(this.startFailoverTimer.name);\n const currentTime = Math.floor(Date.now() / 1000);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(\n `Scheduled retry with primary in ${interval} seconds, number of attempts : ${attempt}`,\n loggerContext\n );\n } else if (this.backupMobiusUris.length) {\n log.log('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(\n this.startFailoverTimer.name,\n this.backupMobiusUris\n );\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(\n this.startFailoverTimer.name,\n this.backupMobiusUris\n );\n if (!abort && !this.isDeviceRegistered()) {\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(`Scheduled retry with backup servers in ${interval} seconds.`, loggerContext);\n }\n } else {\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n }\n\n /**\n * Clears the failback timer if running.\n */\n private clearFailbackTimer() {\n if (this.failbackTimer) {\n clearTimeout(this.failbackTimer);\n this.failbackTimer = undefined;\n }\n }\n\n /**\n * Returns true if device is registered with a backup mobius.\n */\n private isFailbackRequired(): boolean {\n return this.isDeviceRegistered() && this.primaryMobiusUris.indexOf(this.activeMobiusUrl) === -1;\n }\n\n /**\n * Calculates and returns a random value between rehomingIntervalMin and\n * rehomingIntervalMax.\n */\n private getFailbackInterval(): number {\n return Math.floor(\n Math.random() * (this.rehomingIntervalMax - this.rehomingIntervalMin + 1) +\n this.rehomingIntervalMin\n );\n }\n\n /**\n * Starts failback timer to move to primary mobius if device\n * is registered with a backup mobius.\n */\n private initiateFailback() {\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n }\n } else {\n this.failback429RetryAttempts = 0;\n this.clearFailbackTimer();\n }\n }\n\n /**\n * Starts failback timer with the interval value received.\n *\n */\n private startFailbackTimer(intervalInSeconds: number) {\n this.failbackTimer = setTimeout(\n async () => this.executeFailback(),\n intervalInSeconds * SEC_TO_MSEC_MFACTOR\n );\n log.log(`Failback scheduled after ${intervalInSeconds} seconds.`, {\n file: REGISTRATION_FILE,\n method: this.startFailbackTimer.name,\n });\n }\n\n /**\n * Core logic for the failback processing, scheduled and executed\n * at failback timer expiry.\n */\n private async executeFailback() {\n await this.mutex.runExclusive(async () => {\n if (this.isFailbackRequired()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n log.info(`Attempting failback to primary.`, {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n });\n await this.deregister();\n const abort = await this.attemptRegistrationWithServers(FAILBACK_UTIL);\n if (!abort && !this.isDeviceRegistered()) {\n const abortNew = await this.restorePreviousRegistration(FAILBACK_UTIL);\n\n if (abortNew) {\n this.clearFailbackTimer();\n\n return;\n }\n\n if (!this.isDeviceRegistered()) {\n await this.restartRegistration(this.executeFailback.name);\n } else {\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n }\n } else {\n log.info('Active calls present, deferring failback to next cycle.', {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n });\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n }\n });\n }\n\n /**\n * Updates rehomingIntervalMin and rehomingIntervalMax values\n * if received in registration response from a primary mobius\n * server.\n *\n */\n private setIntervalValues(deviceInfo: IDeviceInfo) {\n if (this.primaryMobiusUris.indexOf(this.activeMobiusUrl) !== -1) {\n this.rehomingIntervalMin = deviceInfo?.rehomingIntervalMin\n ? deviceInfo.rehomingIntervalMin\n : DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = deviceInfo?.rehomingIntervalMax\n ? deviceInfo.rehomingIntervalMax\n : DEFAULT_REHOMING_INTERVAL_MAX;\n }\n }\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n public getDeviceInfo(): IDeviceInfo {\n return this.deviceInfo;\n }\n\n /**\n * Checks if the device is currently registered.\n *\n * by checking if isRegistered state is set to\n * ACTIVE, else false.\n */\n public isDeviceRegistered(): boolean {\n return this.registrationStatus === RegistrationStatus.ACTIVE;\n }\n\n public getStatus(): RegistrationStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: RegistrationStatus) {\n this.registrationStatus = value;\n }\n\n /**\n * Start fresh registration cycle with the mobius\n * server list already present.\n *\n */\n private async restartRegistration(caller: string) {\n /*\n * Cancel any failback timer running\n * and start fresh registration attempt with retry as true.\n */\n this.clearFailbackTimer();\n this.failback429RetryAttempts = 0;\n const abort = await this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n */\n public async handleConnectionRestoration(retry: boolean): Promise<boolean> {\n await this.mutex.runExclusive(async () => {\n /* Check retry once again to see if another timer thread has not finished the job already. */\n if (retry) {\n log.info('Mercury connection is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: this.handleConnectionRestoration.name,\n });\n this.clearKeepaliveTimer();\n if (this.isDeviceRegistered()) {\n // eslint-disable-next-line no-await-in-loop\n await this.deregister();\n }\n\n /*\n * Do not attempt registration if mobius url is not set in this.activeMobiusUrl\n * as that'd mean initial registration itself is not finished yet, let\n * failover timer handle the registration in that case.\n */\n if (this.activeMobiusUrl) {\n /*\n * When restoring connectivity, register with same url first\n * where it was registered last even if it was a backup url,\n * because failback timer may already be running to register\n * it back to primary.\n */\n const abort = await this.restorePreviousRegistration(\n this.handleConnectionRestoration.name\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(this.handleConnectionRestoration.name);\n }\n }\n retry = false;\n }\n });\n\n return retry;\n }\n\n /**\n * Callback function for restoring registration in case of failure during initial registration\n * due to device registration already exists.\n *\n */\n private restoreRegistrationCallBack() {\n return async (restoreData: IDeviceInfo, caller: string) => {\n const logContext = {file: REGISTRATION_FILE, method: caller};\n if (!this.isRegRetry()) {\n log.info('Registration restoration in progress.', logContext);\n const restore = this.getExistingDevice(restoreData);\n\n if (restore) {\n this.setRegRetry(true);\n await this.deregister();\n const finalError = await this.restorePreviousRegistration(caller);\n this.setRegRetry(false);\n if (this.isDeviceRegistered()) {\n log.info('Registration restored successfully.', logContext);\n }\n\n return finalError;\n }\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n\n return false;\n };\n }\n\n /**\n * Triggers the registration with the given list of Mobius servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n public async triggerRegistration() {\n if (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n this.triggerRegistration.name,\n this.primaryMobiusUris\n );\n\n if (!this.isDeviceRegistered() && !abort) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Attempts registration with the server list received in\n * argument one by one until registration either succeeds with\n * one or all of them are tried.\n *\n * attempt has hit a final error and a retry should not be scheduled\n * else false.\n */\n private async attemptRegistrationWithServers(\n caller: string,\n servers: string[] = this.primaryMobiusUris\n ): Promise<boolean> {\n let abort = false;\n\n if (this.failoverImmediately) {\n return abort;\n }\n\n if (this.isDeviceRegistered()) {\n log.log(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n });\n\n return abort;\n }\n for (const url of servers) {\n try {\n abort = false;\n this.registrationStatus = RegistrationStatus.INACTIVE;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.log(`[${caller}] : Mobius url to contact: ${url}`, {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n });\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n this.setActiveMobiusUrl(url);\n this.setIntervalValues(this.deviceInfo);\n this.metricManager.setDeviceInfo(this.deviceInfo);\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n\n // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars\n abort = await handleRegistrationErrors(\n body,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n clientError\n );\n },\n {method: this.attemptRegistrationWithServers.name, file: REGISTRATION_FILE},\n this.restoreRegistrationCallBack()\n );\n if (this.registrationStatus === RegistrationStatus.ACTIVE) {\n log.info(\n `[${caller}] : Device is already restored, active mobius url: ${this.activeMobiusUrl}`,\n {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n }\n );\n break;\n }\n if (abort) {\n this.setStatus(RegistrationStatus.INACTIVE);\n break;\n } else if (caller === this.executeFailback.name) {\n const error = body.statusCode;\n\n if (error === ERROR_CODE.TOO_MANY_REQUESTS) {\n // eslint-disable-next-line no-await-in-loop\n await this.scheduleFailback429Retry();\n abort = true;\n break;\n }\n }\n }\n }\n\n return abort;\n }\n\n /**\n * This method sets up a timer to periodically send keep-alive requests to maintain a connection.\n * It handles retries, error handling, and re-registration attempts based on the response, ensuring continuous connectivity with the server.\n */\n private startKeepaliveTimer(url: string, interval: number) {\n let keepAliveRetryCount = 0;\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n this.keepaliveTimer = setInterval(async () => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: this.startKeepaliveTimer.name,\n };\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered() && keepAliveRetryCount < RETRY_COUNT_THRESHOLD) {\n try {\n const res = await this.postKeepAlive(url);\n log.info(`Sent Keepalive, status: ${res.statusCode}`, logContext);\n if (keepAliveRetryCount > 0) {\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n keepAliveRetryCount = 0;\n } catch (err: unknown) {\n keepAliveRetryCount += 1;\n const error = <WebexRequestPayload>err;\n\n log.warn(\n `Keep-alive missed ${keepAliveRetryCount} times. Status -> ${error.statusCode} `,\n logContext\n );\n\n const abort = await handleRegistrationErrors(\n error,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n clientError\n );\n },\n {method: this.startKeepaliveTimer.name, file: REGISTRATION_FILE}\n );\n\n if (abort || keepAliveRetryCount >= RETRY_COUNT_THRESHOLD) {\n this.failoverImmediately = this.isCCFlow;\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(this.startKeepaliveTimer.name);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n }\n });\n }, interval * 1000);\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = undefined;\n }\n }\n\n public isReconnectPending(): boolean {\n return this.reconnectPending;\n }\n\n public async deregister() {\n try {\n await this.deleteRegistration(\n this.activeMobiusUrl as string,\n this.deviceInfo.device?.deviceId as string,\n this.deviceInfo.device?.clientDeviceUri as string\n );\n } catch (err) {\n log.warn(`Delete failed with Mobius`, {});\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(RegistrationStatus.INACTIVE);\n }\n\n /**\n * Indicates whether the calling client is in a mode\n * to retry registration.\n */\n private isRegRetry(): boolean {\n return this.registerRetry;\n }\n\n /**\n * Sets the received value in instance variable\n * registerRetry for registration retry cases.\n *\n */\n private setRegRetry(value: boolean) {\n this.registerRetry = value;\n }\n\n /**\n * Restores the deviceInfo object in callingClient when receiving a 403 with error code 101.\n *\n */\n private getExistingDevice(restoreData: IDeviceInfo) {\n if (restoreData.devices && restoreData.devices.length > 0) {\n this.deviceInfo = {\n userId: restoreData.userId,\n device: restoreData.devices[0],\n keepaliveInterval: DEFAULT_KEEPALIVE_INTERVAL,\n rehomingIntervalMax: DEFAULT_REHOMING_INTERVAL_MAX,\n rehomingIntervalMin: DEFAULT_REHOMING_INTERVAL_MIN,\n };\n\n const stringToReplace = `${DEVICES_ENDPOINT_RESOURCE}/${restoreData.devices[0].deviceId}`;\n\n const uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n this.setActiveMobiusUrl(uri);\n this.registrationStatus = RegistrationStatus.ACTIVE;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Invoked to re-register in cases when the registration\n * is lost due to some failure.\n * If there are active calls, it will only mark reconnectPending\n * as true and then retry will happen when this method gets\n * invoked again on receiving all calls cleared event from\n * callManager.\n *\n */\n public async reconnectOnFailure(caller: string) {\n this.reconnectPending = false;\n if (!this.isDeviceRegistered()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n const abort = await this.restorePreviousRegistration(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(caller);\n }\n } else {\n this.reconnectPending = true;\n log.info('Active call(s) present, deferred reconnect till call cleanup.', {\n file: REGISTRATION_FILE,\n method: this.reconnectOnFailure.name,\n });\n }\n }\n }\n}\n\n/*\n */\nexport const createRegistration = (\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_uuid","require","_constants","_common","_types","_Metrics","_calling","_Logger","_interopRequireDefault","_SDKConnector","_types2","_constants2","_types3","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ownKeys","r","t","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Registration","exports","webex","serviceData","mutex","lineEmitter","logLevel","jwe","_classCallCheck2","sdkConnector","SDKConnector","isCCFlow","indicator","ServiceIndicator","CONTACT_CENTER","getWebex","setWebex","userId","internal","device","registrationStatus","RegistrationStatus","IDLE","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","_createClass2","key","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","concat","METHOD_START_MESSAGE","method","METHODS","UPDATE_ACTIVE_MOBIUS","file","updateActiveMobius","setMobiusServers","SET_MOBIUS_SERVERS","_postKeepAlive","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","abrupt","request","uri","HTTP_METHODS","POST","headers","CISCO_DEVICE_URL","SPARK_USER_AGENT","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","stop","postKeepAlive","_x","_deleteRegistration","_callee2","deviceId","deviceUrl","_response","response","_callee2$","_context2","t0","fetch","t1","DEVICES_ENDPOINT_RESOURCE","t2","DELETE","t3","t4","t5","t6","credentials","getUserToken","t7","sent","t8","t9","WEBEX_WEB_CLIENT","uuid","t10","t11","t12","t13","t14","t15","warn","DEREGISTER","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","json","deleteRegistration","_x2","_x3","_x4","_postRegistration","_callee3","deviceInfo","_callee3$","_context3","clientDeviceUri","body","postRegistration","_x5","_restorePreviousRegistration","_callee4","caller","abort","_callee4$","_context4","attemptRegistrationWithServers","restorePreviousRegistration","_x6","_handle429Retry","_callee5","retryAfter","interval","_callee5$","_context5","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","isDeviceRegistered","restartRegistration","handle429Retry","_x7","_x8","attempt","undefined","BASE_REG_RETRY_TIMER_VAL_IN_SEC","Math","pow","BASE_REG_TIMER_MFACTOR","floor","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee10","_this","timeElapsed","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args10","_callee10$","_context10","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","_now","max","setTimeout","_callee7","_callee7$","_context7","runExclusive","_callee6","currentTime","_callee6$","_context6","startFailoverTimer","RETRY_TIMER_UPPER_LIMIT","_callee9","_callee9$","_context9","_callee8","_callee8$","_context8","uploadLogs","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this2","_callee11","_callee11$","_context11","executeFailback","_executeFailback","_callee13","_this3","_callee13$","_context13","_callee12","abortNew","_callee12$","_context12","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee14","_callee14$","_context14","_x9","_handleConnectionRestoration","_callee16","retry","_this4","_callee16$","_context16","HANDLE_CONNECTION_RESTORATION","_callee15","_callee15$","_context15","handleConnectionRestoration","clearKeepaliveTimer","_x10","restoreRegistrationCallBack","_this5","_ref8","_callee17","restoreData","logContext","restore","finalError","_callee17$","_context17","isRegRetry","getExistingDevice","setRegRetry","_x11","_x12","_triggerRegistration","_callee18","_callee18$","_context18","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee19","_this6","servers","_iterator","_step","_loop","_ret","_args20","_callee19$","_context20","REGISTER_UTIL","_this6$backupMobiusUr","serverType","_this6$deviceInfo$dev","_resp$headers$trackin","_resp$headers","_this6$deviceInfo$dev2","resp","_loop$","_context19","includes","CONNECTING","REGISTERED","REGISTER","setDeviceInfo","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","trackingid","startKeepaliveTimer","keepaliveInterval","handleRegistrationErrors","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","finish","_x13","_this7","keepAliveRetryCount","RETRY_COUNT_THRESHOLD","keepaliveTimer","setInterval","_callee21","_callee21$","_context22","KEEPALIVE_UTIL","_callee20","res","error","_callee20$","_context21","statusCode","RECONNECTED","_error$headers$tracki","_error$headers","KEEPALIVE_FAILURE","reconnectOnFailure","RECONNECTING","clearInterval","isReconnectPending","reconnectPending","_deregister","_callee22","_this$deviceInfo$devi","_this$deviceInfo$devi2","_callee22$","_context23","registerRetry","devices","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","replace","_reconnectOnFailure","_callee23","_callee23$","_context24","RECONNECT_ON_FAILURE","_x14","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {emitFinalFailure, handleRegistrationErrors, uploadLogs} from '../../common';\n\nimport {\n IMetricManager,\n METRIC_EVENT,\n METRIC_TYPE,\n REG_ACTION,\n SERVER_TYPE,\n} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {ICallManager} from '../calling/types';\nimport {getCallManager} from '../calling';\nimport {LOGGER} from '../../Logger/types';\nimport log from '../../Logger';\nimport {IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n IDeviceInfo,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n WebexRequestPayload,\n} from '../../common/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DEVICES_ENDPOINT_RESOURCE,\n SPARK_USER_AGENT,\n WEBEX_WEB_CLIENT,\n BASE_REG_RETRY_TIMER_VAL_IN_SEC,\n BASE_REG_TIMER_MFACTOR,\n SEC_TO_MSEC_MFACTOR,\n REG_RANDOM_T_FACTOR_UPPER_LIMIT,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n MINUTES_TO_SEC_MFACTOR,\n REG_429_RETRY_UTIL,\n REG_FAILBACK_429_MAX_RETRIES,\n FAILBACK_UTIL,\n REGISTRATION_FILE,\n DEFAULT_REHOMING_INTERVAL_MIN,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_KEEPALIVE_INTERVAL,\n REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC,\n FAILOVER_UTIL,\n REGISTER_UTIL,\n RETRY_TIMER_UPPER_LIMIT,\n KEEPALIVE_UTIL,\n REGISTRATION_UTIL,\n METHODS,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\n\n/**\n *\n */\nexport class Registration implements IRegistration {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private userId = '';\n\n private serviceData: ServiceData;\n\n private failback429RetryAttempts: number;\n private registrationStatus: RegistrationStatus;\n private failbackTimer?: NodeJS.Timer;\n private activeMobiusUrl!: string;\n\n private keepaliveTimer: NodeJS.Timer | undefined;\n private rehomingIntervalMin: number;\n\n private rehomingIntervalMax: number;\n private mutex: Mutex;\n private metricManager: IMetricManager;\n private lineEmitter: LineEmitterCallback;\n private callManager: ICallManager;\n private deviceInfo: IDeviceInfo = {};\n private primaryMobiusUris: string[];\n private backupMobiusUris: string[];\n private registerRetry = false;\n private reconnectPending = false;\n private jwe?: string;\n private isCCFlow = false;\n private failoverImmediately = false;\n private retryAfter: number | undefined;\n private scheduled429Retry = false;\n\n /**\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n ) {\n this.jwe = jwe;\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\n this.isCCFlow = serviceData.indicator === ServiceIndicator.CONTACT_CENTER;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.userId = this.webex.internal.device.userId;\n this.registrationStatus = RegistrationStatus.IDLE;\n this.failback429RetryAttempts = 0;\n log.setLogger(logLevel, REGISTRATION_FILE);\n this.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n this.mutex = mutex;\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n this.lineEmitter = lineEmitter;\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n }\n\n public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`${METHOD_START_MESSAGE} with ${url}`, {\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n file: REGISTRATION_FILE,\n });\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n log.log(METHOD_START_MESSAGE, {method: METHODS.SET_MOBIUS_SERVERS, file: REGISTRATION_FILE});\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of sending keepalive.\n *\n */\n private async postKeepAlive(url: string) {\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}/status`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n /**\n * Implementation of delete device.\n *\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n let response;\n try {\n response = await fetch(`${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`, {\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n Authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${WEBEX_WEB_CLIENT}_${uuid()}`,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n } catch (error) {\n log.warn(`Delete failed with Mobius ${error}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n }\n\n this.setStatus(RegistrationStatus.INACTIVE);\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n return <WebexRequestPayload>response?.json();\n }\n\n /**\n * Implementation of POST request for device registration.\n *\n */\n private async postRegistration(url: string) {\n const deviceInfo = {\n userId: this.userId,\n clientDeviceUri: this.webex.internal.device.url,\n serviceData: this.jwe ? {...this.serviceData, jwe: this.jwe} : this.serviceData,\n };\n\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}device`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceInfo.clientDeviceUri,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: deviceInfo,\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n /**\n * Re-attempts registration with the mobius url it was last registered\n * to, that mobius url is expected to be updated already in this.activeMobiusUrl.\n */\n private async restorePreviousRegistration(caller: string): Promise<boolean> {\n let abort = false;\n\n if (this.activeMobiusUrl) {\n abort = await this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);\n }\n\n return abort;\n }\n\n /**\n *\n */\n private async handle429Retry(retryAfter: number, caller: string): Promise<void> {\n if (caller === FAILBACK_UTIL) {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\n }\n\n this.clearFailbackTimer();\n this.failback429RetryAttempts += 1;\n log.log(`Received 429 while rehoming, 429 retry count : ${this.failback429RetryAttempts}`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n this.scheduled429Retry = true;\n const abort = await this.restorePreviousRegistration(REG_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(REG_429_RETRY_UTIL);\n }\n } else {\n this.retryAfter = retryAfter;\n }\n }\n\n /**\n * Calculates and returns a random interval value using input argument\n * attempt as the variable factor.\n *\n * attempted already.\n */\n private getRegRetryInterval(attempt = 1): number {\n return (\n BASE_REG_RETRY_TIMER_VAL_IN_SEC +\n BASE_REG_TIMER_MFACTOR ** attempt +\n Math.floor(\n (Math.random() * (REG_RANDOM_T_FACTOR_UPPER_LIMIT - SEC_TO_MSEC_MFACTOR + 1) +\n SEC_TO_MSEC_MFACTOR) /\n SEC_TO_MSEC_MFACTOR\n )\n );\n }\n\n /**\n * Schedules registration retry with primary mobius servers at a random\n * interval calculated based on the number of times registration retry is already done\n * Once the time taken since the beginning of retry attempt exceeds the\n * retry threshold, it switches over to backup mobius servers.\n *\n */\n private async startFailoverTimer(attempt = 1, timeElapsed = 0) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n const TIMER_THRESHOLD = this.isCCFlow\n ? REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC\n : REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n if (timeElapsed + interval > TIMER_THRESHOLD) {\n const excessVal = timeElapsed + interval - TIMER_THRESHOLD;\n\n interval -= excessVal;\n }\n\n if (this.retryAfter != null && interval < this.retryAfter) {\n this.failoverImmediately = this.retryAfter + timeElapsed > TIMER_THRESHOLD;\n }\n\n let abort;\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n if (this.retryAfter != null) {\n interval = Math.max(interval, this.retryAfter);\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL);\n const currentTime = Math.floor(Date.now() / 1000);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(\n `Scheduled retry with primary in ${interval} seconds, number of attempts : ${attempt}`,\n loggerContext\n );\n } else if (this.backupMobiusUris.length) {\n log.info('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n\n if (this.retryAfter != null && this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n interval = interval < this.retryAfter ? this.retryAfter : interval;\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(`Scheduled retry with backup servers in ${interval} seconds.`, loggerContext);\n }\n } else {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n }\n\n /**\n * Clears the failback timer if running.\n */\n private clearFailbackTimer() {\n if (this.failbackTimer) {\n clearTimeout(this.failbackTimer);\n this.failbackTimer = undefined;\n }\n }\n\n /**\n * Returns true if device is registered with a backup mobius.\n */\n private isFailbackRequired(): boolean {\n return this.isDeviceRegistered() && this.primaryMobiusUris.indexOf(this.activeMobiusUrl) === -1;\n }\n\n /**\n * Calculates and returns a random value between rehomingIntervalMin and\n * rehomingIntervalMax.\n */\n private getFailbackInterval(): number {\n return Math.floor(\n Math.random() * (this.rehomingIntervalMax - this.rehomingIntervalMin + 1) +\n this.rehomingIntervalMin\n );\n }\n\n /**\n * Starts failback timer to move to primary mobius if device\n * is registered with a backup mobius.\n */\n private initiateFailback() {\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n }\n } else {\n this.failback429RetryAttempts = 0;\n this.clearFailbackTimer();\n }\n }\n\n /**\n * Starts failback timer with the interval value received.\n *\n */\n private startFailbackTimer(intervalInSeconds: number) {\n this.failbackTimer = setTimeout(\n async () => this.executeFailback(),\n intervalInSeconds * SEC_TO_MSEC_MFACTOR\n );\n log.log(`Failback scheduled after ${intervalInSeconds} seconds.`, {\n file: REGISTRATION_FILE,\n method: this.startFailbackTimer.name,\n });\n }\n\n /**\n * Core logic for the failback processing, scheduled and executed\n * at failback timer expiry.\n */\n private async executeFailback() {\n await this.mutex.runExclusive(async () => {\n if (this.isFailbackRequired()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n log.info(`Attempting failback to primary.`, {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n });\n await this.deregister();\n const abort = await this.attemptRegistrationWithServers(FAILBACK_UTIL);\n\n if (this.scheduled429Retry || abort || this.isDeviceRegistered()) {\n return;\n }\n\n const abortNew = await this.restorePreviousRegistration(FAILBACK_UTIL);\n\n if (abortNew) {\n this.clearFailbackTimer();\n\n return;\n }\n\n if (!this.isDeviceRegistered()) {\n await this.restartRegistration(this.executeFailback.name);\n } else {\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n } else {\n log.info('Active calls present, deferring failback to next cycle.', {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n });\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n }\n });\n }\n\n /**\n * Updates rehomingIntervalMin and rehomingIntervalMax values\n * if received in registration response from a primary mobius\n * server.\n *\n */\n private setIntervalValues(deviceInfo: IDeviceInfo) {\n if (this.primaryMobiusUris.indexOf(this.activeMobiusUrl) !== -1) {\n this.rehomingIntervalMin = deviceInfo?.rehomingIntervalMin\n ? deviceInfo.rehomingIntervalMin\n : DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = deviceInfo?.rehomingIntervalMax\n ? deviceInfo.rehomingIntervalMax\n : DEFAULT_REHOMING_INTERVAL_MAX;\n }\n }\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n public getDeviceInfo(): IDeviceInfo {\n return this.deviceInfo;\n }\n\n /**\n * Checks if the device is currently registered.\n *\n * by checking if isRegistered state is set to\n * ACTIVE, else false.\n */\n public isDeviceRegistered(): boolean {\n return this.registrationStatus === RegistrationStatus.ACTIVE;\n }\n\n public getStatus(): RegistrationStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: RegistrationStatus) {\n this.registrationStatus = value;\n }\n\n /**\n * Start fresh registration cycle with the mobius\n * server list already present.\n *\n */\n private async restartRegistration(caller: string) {\n /*\n * Cancel any failback timer running\n * and start fresh registration attempt with retry as true.\n */\n this.clearFailbackTimer();\n this.failback429RetryAttempts = 0;\n const abort = await this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n */\n public async handleConnectionRestoration(retry: boolean): Promise<boolean> {\n log.info(METHOD_START_MESSAGE, {\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n file: REGISTRATION_FILE,\n });\n await this.mutex.runExclusive(async () => {\n /* Check retry once again to see if another timer thread has not finished the job already. */\n if (retry) {\n log.log('Mercury connection is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: this.handleConnectionRestoration.name,\n });\n this.clearKeepaliveTimer();\n if (this.isDeviceRegistered()) {\n // eslint-disable-next-line no-await-in-loop\n await this.deregister();\n }\n\n /*\n * Do not attempt registration if mobius url is not set in this.activeMobiusUrl\n * as that'd mean initial registration itself is not finished yet, let\n * failover timer handle the registration in that case.\n */\n if (this.activeMobiusUrl) {\n /*\n * When restoring connectivity, register with same url first\n * where it was registered last even if it was a backup url,\n * because failback timer may already be running to register\n * it back to primary.\n */\n const abort = await this.restorePreviousRegistration(\n this.handleConnectionRestoration.name\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(this.handleConnectionRestoration.name);\n }\n }\n retry = false;\n }\n });\n\n return retry;\n }\n\n /**\n * Callback function for restoring registration in case of failure during initial registration\n * due to device registration already exists.\n *\n */\n private restoreRegistrationCallBack() {\n return async (restoreData: IDeviceInfo, caller: string) => {\n const logContext = {file: REGISTRATION_FILE, method: caller};\n if (!this.isRegRetry()) {\n log.info('Registration restoration in progress.', logContext);\n const restore = this.getExistingDevice(restoreData);\n\n if (restore) {\n this.setRegRetry(true);\n await this.deregister();\n const finalError = await this.restorePreviousRegistration(caller);\n this.setRegRetry(false);\n if (this.isDeviceRegistered()) {\n log.info('Registration restored successfully.', logContext);\n }\n\n return finalError;\n }\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n\n return false;\n };\n }\n\n /**\n * Triggers the registration with the given list of Mobius servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n public async triggerRegistration() {\n if (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n REGISTRATION_UTIL,\n this.primaryMobiusUris\n );\n\n if (!this.isDeviceRegistered() && !abort) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Attempts registration with the server list received in\n * argument one by one until registration either succeeds with\n * one or all of them are tried.\n *\n * attempt has hit a final error and a retry should not be scheduled\n * else false.\n */\n private async attemptRegistrationWithServers(\n caller: string,\n servers: string[] = this.primaryMobiusUris\n ): Promise<boolean> {\n let abort = false;\n this.retryAfter = undefined;\n\n if (this.failoverImmediately) {\n return abort;\n }\n\n if (this.isDeviceRegistered()) {\n log.info(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n\n return abort;\n }\n for (const url of servers) {\n const serverType =\n (this.primaryMobiusUris.includes(url) && 'PRIMARY') ||\n (this.backupMobiusUris?.includes(url) && 'BACKUP') ||\n 'UNKNOWN';\n try {\n abort = false;\n this.registrationStatus = RegistrationStatus.INACTIVE;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.info(`[${caller}] : Mobius url to contact: ${url}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n log.log(\n `Registration successful for deviceId: ${this.deviceInfo.device?.deviceId} userId: ${this.userId}`,\n {\n file: REGISTRATION_FILE,\n method: METHODS.REGISTER,\n }\n );\n this.setActiveMobiusUrl(url);\n this.setIntervalValues(this.deviceInfo);\n this.metricManager.setDeviceInfo(this.deviceInfo);\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n resp.headers?.trackingid ?? '',\n undefined,\n undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n serverType\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars\n abort = await handleRegistrationErrors(\n body,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n body.headers?.trackingid ?? '',\n undefined,\n clientError\n );\n },\n {method: caller, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) => this.handle429Retry(retryAfter, retryCaller),\n this.restoreRegistrationCallBack()\n );\n if (this.registrationStatus === RegistrationStatus.ACTIVE) {\n log.info(\n `[${caller}] : Device is already restored, active mobius url: ${this.activeMobiusUrl}`,\n {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n }\n );\n break;\n }\n if (abort) {\n this.setStatus(RegistrationStatus.INACTIVE);\n break;\n }\n }\n }\n\n return abort;\n }\n\n /**\n * This method sets up a timer to periodically send keep-alive requests to maintain a connection.\n * It handles retries, error handling, and re-registration attempts based on the response, ensuring continuous connectivity with the server.\n */\n private startKeepaliveTimer(url: string, interval: number, serverType: SERVER_TYPE) {\n let keepAliveRetryCount = 0;\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n this.keepaliveTimer = setInterval(async () => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n };\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered() && keepAliveRetryCount < RETRY_COUNT_THRESHOLD) {\n try {\n const res = await this.postKeepAlive(url);\n log.log(`Sent Keepalive, status: ${res.statusCode}`, logContext);\n if (keepAliveRetryCount > 0) {\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n keepAliveRetryCount = 0;\n } catch (err: unknown) {\n keepAliveRetryCount += 1;\n const error = <WebexRequestPayload>err;\n\n log.warn(\n `Keep-alive missed ${keepAliveRetryCount} times. Status -> ${error.statusCode} `,\n logContext\n );\n\n const abort = await handleRegistrationErrors(\n error,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n KEEPALIVE_UTIL,\n serverType,\n error.headers?.trackingid ?? '',\n keepAliveRetryCount,\n clientError\n );\n },\n {method: KEEPALIVE_UTIL, file: REGISTRATION_FILE}\n );\n\n if (abort || keepAliveRetryCount >= RETRY_COUNT_THRESHOLD) {\n this.failoverImmediately = this.isCCFlow;\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(KEEPALIVE_UTIL);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n }\n });\n }, interval * 1000);\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = undefined;\n }\n }\n\n public isReconnectPending(): boolean {\n return this.reconnectPending;\n }\n\n public async deregister() {\n try {\n await this.deleteRegistration(\n this.activeMobiusUrl as string,\n this.deviceInfo.device?.deviceId as string,\n this.deviceInfo.device?.clientDeviceUri as string\n );\n log.log('Registration successfully deregistered', {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n } catch (err) {\n log.warn(`Delete failed with Mobius: ${err}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(RegistrationStatus.INACTIVE);\n }\n\n /**\n * Indicates whether the calling client is in a mode\n * to retry registration.\n */\n private isRegRetry(): boolean {\n return this.registerRetry;\n }\n\n /**\n * Sets the received value in instance variable\n * registerRetry for registration retry cases.\n *\n */\n private setRegRetry(value: boolean) {\n this.registerRetry = value;\n }\n\n /**\n * Restores the deviceInfo object in callingClient when receiving a 403 with error code 101.\n *\n */\n private getExistingDevice(restoreData: IDeviceInfo) {\n if (restoreData.devices && restoreData.devices.length > 0) {\n this.deviceInfo = {\n userId: restoreData.userId,\n device: restoreData.devices[0],\n keepaliveInterval: DEFAULT_KEEPALIVE_INTERVAL,\n rehomingIntervalMax: DEFAULT_REHOMING_INTERVAL_MAX,\n rehomingIntervalMin: DEFAULT_REHOMING_INTERVAL_MIN,\n };\n\n const stringToReplace = `${DEVICES_ENDPOINT_RESOURCE}/${restoreData.devices[0].deviceId}`;\n\n const uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n this.setActiveMobiusUrl(uri);\n this.registrationStatus = RegistrationStatus.ACTIVE;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Invoked to re-register in cases when the registration\n * is lost due to some failure.\n * If there are active calls, it will only mark reconnectPending\n * as true and then retry will happen when this method gets\n * invoked again on receiving all calls cleared event from\n * callManager.\n *\n */\n public async reconnectOnFailure(caller: string) {\n log.info(METHOD_START_MESSAGE, {method: METHODS.RECONNECT_ON_FAILURE, file: REGISTRATION_FILE});\n this.reconnectPending = false;\n if (!this.isDeviceRegistered()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n const abort = await this.restorePreviousRegistration(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(caller);\n }\n } else {\n this.reconnectPending = true;\n log.info('Active call(s) present, deferred reconnect till call cleanup.', {\n file: REGISTRATION_FILE,\n method: METHODS.RECONNECT_ON_FAILURE,\n });\n }\n }\n }\n}\n\n/*\n */\nexport const createRegistration = (\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe);\n"],"mappings":"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"}
|