@webex/calling 3.10.0-next.13 → 3.10.0-next.14
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 +118 -124
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +189 -201
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallSettings/CallSettings.js +17 -18
- package/dist/CallSettings/CallSettings.js.map +1 -1
- package/dist/CallSettings/CallSettings.test.js +14 -14
- package/dist/CallSettings/CallSettings.test.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.js +19 -20
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +32 -32
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.js +135 -137
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.test.js +145 -149
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +198 -201
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +168 -168
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.js +7 -8
- package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.test.js +24 -24
- package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +364 -366
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +340 -340
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +15 -18
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +113 -113
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/line/index.js +57 -74
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +22 -22
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +293 -300
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +246 -246
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +24 -24
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +20 -20
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +28 -28
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +250 -253
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +60 -60
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Errors/catalog/CallError.js +7 -10
- package/dist/Errors/catalog/CallError.js.map +1 -1
- package/dist/Errors/catalog/CallingDeviceError.js +6 -9
- package/dist/Errors/catalog/CallingDeviceError.js.map +1 -1
- package/dist/Errors/catalog/ExtendedError.js +6 -8
- package/dist/Errors/catalog/ExtendedError.js.map +1 -1
- package/dist/Errors/catalog/LineError.js +6 -9
- package/dist/Errors/catalog/LineError.js.map +1 -1
- package/dist/Events/impl/index.js +11 -13
- package/dist/Events/impl/index.js.map +1 -1
- package/dist/Metrics/index.js +1 -2
- package/dist/Metrics/index.js.map +1 -1
- package/dist/SDKConnector/index.js +1 -2
- package/dist/SDKConnector/index.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +126 -127
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.test.js +98 -98
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.js +84 -85
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.test.js +72 -72
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/Voicemail.js +58 -61
- package/dist/Voicemail/Voicemail.js.map +1 -1
- package/dist/Voicemail/Voicemail.test.js +20 -20
- package/dist/Voicemail/Voicemail.test.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.js +116 -117
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.test.js +140 -140
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
- package/dist/common/Utils.js +168 -167
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +120 -120
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/testUtil.js +3 -3
- package/dist/common/testUtil.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","require","_constants","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","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","_deleteRegistration","_asyncToGenerator2","_regenerator","mark","_callee","deviceId","deviceUrl","_response","response","wrap","_callee$","_context","prev","t0","fetch","t1","DEVICES_ENDPOINT_RESOURCE","t2","HTTP_METHODS","DELETE","t3","t4","t5","t6","CISCO_DEVICE_URL","credentials","getUserToken","t7","sent","t8","t9","WEBEX_WEB_CLIENT","uuid","t10","t11","SPARK_USER_AGENT","t12","CALLING_USER_AGENT","t13","t14","headers","t15","warn","_stringify","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","abrupt","json","stop","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee2","deviceInfo","_callee2$","_context2","clientDeviceUri","request","uri","POST","body","service","ALLOWED_SERVICES","MOBIUS","postRegistration","_x4","_restorePreviousRegistration","_callee4","caller","_this","abort","_callee4$","_context4","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee3","_callee3$","_context3","restartRegistration","includes","undefined","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee5","_callee5$","_context5","KEEPALIVE_UTIL","isDeviceRegistered","startFailoverTimer","handle404KeepaliveFailure","_x6","_handle429Retry","_callee7","_this2","interval","_callee7$","_context7","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","clearKeepaliveTimer","_callee6","_this2$deviceInfo$dev","_callee6$","_context6","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","attempt","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","_this3","timeElapsed","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args10","_callee10$","_context10","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","_now","max","_callee9","_callee9$","_context9","runExclusive","_callee8","currentTime","_callee8$","_context8","_callee1","_callee1$","_context1","_callee0","_callee0$","_context0","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_isPrimaryActive","_callee11","status","_iterator","_step","mobiusUrl","baseUri","_ref7","statusCode","_callee11$","_context11","replace","URL_ENDPOINT","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee12","_callee12$","_context12","executeFailback","_executeFailback","_callee14","_this5","_callee14$","_context14","_callee13","primaryServerStatus","abortNew","_callee13$","_context13","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee15","_callee15$","_context15","_x9","_handleConnectionRestoration","_callee17","retry","_this6","_callee17$","_context17","HANDLE_CONNECTION_RESTORATION","_callee16","_callee16$","_context16","handleConnectionRestoration","_x0","restoreRegistrationCallBack","_this7","_ref1","_callee18","restoreData","logContext","restore","finalError","_callee18$","_context18","isRegRetry","getExistingDevice","setRegRetry","_x1","_x10","_triggerRegistration","_callee19","_callee19$","_context19","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee20","_this8","servers","_iterator2","_step2","_loop","_ret","_args21","_callee20$","_context21","REGISTER_UTIL","_this8$backupMobiusUr","serverType","_this8$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this8$deviceInfo$dev2","resp","_loop$","_context20","CONNECTING","REGISTERED","trackingid","REGISTER","setDeviceInfo","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","_x11","_startKeepaliveTimer","_callee23","_this9","RETRY_COUNT_THRESHOLD","_callee23$","_context24","_callee22","accessToken","blob","blobUrl","_callee22$","_context23","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","String","retryCountThreshold","onmessage","_ref11","_callee21","event","error","_callee21$","_context22","data","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","err","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECT_ON_FAILURE_UTIL","RECONNECTING","_x15","_x12","_x13","_x14","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee24","_this$deviceInfo$devi","_this$deviceInfo$devi2","_callee24$","_context25","DEREGISTER","registerRetry","devices","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee25","_callee25$","_context26","RECONNECT_ON_FAILURE","_x16","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';\nimport webWorkerStr from './webWorkerStr';\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 WorkerMessageType,\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 FAILOVER_UTIL,\n REGISTER_UTIL,\n RETRY_TIMER_UPPER_LIMIT,\n KEEPALIVE_UTIL,\n REGISTRATION_UTIL,\n METHODS,\n URL_ENDPOINT,\n RECONNECT_ON_FAILURE_UTIL,\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.Timeout;\n private activeMobiusUrl!: string;\n\n private rehomingIntervalMin: number;\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 private webWorker: Worker | undefined;\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 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: ${JSON.stringify(error)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DELETE_REGISTRATION,\n });\n\n await uploadLogs();\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 if (this.retryAfter) {\n if (this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n // If retry-after is less than threshold, honor it and schedule retry\n setTimeout(async () => {\n await this.restartRegistration(caller);\n }, this.retryAfter * 1000);\n } else if (\n this.primaryMobiusUris.includes(this.activeMobiusUrl) &&\n this.backupMobiusUris.length > 0\n ) {\n // If we are using primary and got 429, switch to backup\n abort = await this.attemptRegistrationWithServers(caller, this.backupMobiusUris);\n } else {\n // If we are using backup and got 429, restart registration\n this.restartRegistration(caller);\n }\n this.retryAfter = undefined;\n\n return true;\n }\n }\n\n return abort;\n }\n\n /**\n * Callback for handling 404 response from the server for register keepalive\n */\n private async handle404KeepaliveFailure(caller: string): Promise<void> {\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Callback for handling 429 retry response from the server\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 if (caller === KEEPALIVE_UTIL) {\n this.clearKeepaliveTimer();\n setTimeout(async () => {\n log.log(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n\n // Resume the keepalive after waiting for the retry after period\n await this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n }, retryAfter * 1000);\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 = 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 private async isPrimaryActive() {\n let status;\n for (const mobiusUrl of this.primaryMobiusUris) {\n try {\n const baseUri = mobiusUrl.replace(URL_ENDPOINT, '/');\n // eslint-disable-next-line no-await-in-loop\n const response = await this.webex.request({\n uri: `${baseUri}ping`,\n method: HTTP_METHODS.GET,\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 const {statusCode} = response as WebexRequestPayload;\n if (statusCode === 200) {\n log.info(`Ping successful for primary Mobius: ${mobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n status = 'up';\n break;\n }\n } catch (error) {\n log.warn(\n `Ping failed for primary Mobius: ${mobiusUrl} with error: ${JSON.stringify(error)}`,\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n status = 'down';\n }\n }\n\n return status === 'up';\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 const primaryServerStatus = await this.isPrimaryActive();\n if (Object.keys(this.callManager.getActiveCalls()).length === 0 && primaryServerStatus) {\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(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n }\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('Network is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\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 METHODS.HANDLE_CONNECTION_RESTORATION\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(METHODS.HANDLE_CONNECTION_RESTORATION);\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.setActiveMobiusUrl(url);\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} responseTrackingId: ${resp.headers?.trackingid}`,\n {\n file: REGISTRATION_FILE,\n method: METHODS.REGISTER,\n }\n );\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 // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n\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 async startKeepaliveTimer(url: string, interval: number, serverType: SERVER_TYPE) {\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered()) {\n const accessToken = await this.webex.credentials.getUserToken();\n\n if (!this.webWorker) {\n const blob = new Blob([webWorkerStr], {type: 'application/javascript'});\n const blobUrl = URL.createObjectURL(blob);\n this.webWorker = new Worker(blobUrl);\n URL.revokeObjectURL(blobUrl);\n\n this.webWorker.postMessage({\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: String(accessToken),\n deviceUrl: String(this.webex.internal.device.url),\n interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\n url,\n });\n\n this.webWorker.onmessage = async (event: MessageEvent) => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n };\n if (event.data.type === WorkerMessageType.KEEPALIVE_SUCCESS) {\n log.info(`Sent Keepalive, status: ${event.data.statusCode}`, logContext);\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n\n if (event.data.type === WorkerMessageType.KEEPALIVE_FAILURE) {\n const error = <WebexRequestPayload>event.data.err;\n log.warn(\n `Keep-alive missed ${event.data.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\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n KEEPALIVE_UTIL,\n serverType,\n error.headers?.trackingid ?? '',\n event.data.keepAliveRetryCount,\n clientError\n );\n },\n {method: KEEPALIVE_UTIL, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) =>\n this.handle429Retry(retryAfter, retryCaller)\n );\n\n if (abort || event.data.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 await uploadLogs();\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL);\n } else if (error.statusCode === 404) {\n this.handle404KeepaliveFailure(KEEPALIVE_UTIL);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n };\n }\n }\n });\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.webWorker) {\n this.webWorker.postMessage({type: WorkerMessageType.CLEAR_KEEPALIVE});\n this.webWorker.terminate();\n this.webWorker = 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: ${JSON.stringify(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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_uuid","require","_constants","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","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","_deleteRegistration","_asyncToGenerator2","_regenerator","mark","_callee","deviceId","deviceUrl","_response","response","_t","_t2","_t3","_t4","_t5","_t6","_t7","_t8","_t9","wrap","_context","prev","fetch","DEVICES_ENDPOINT_RESOURCE","HTTP_METHODS","DELETE","CISCO_DEVICE_URL","credentials","getUserToken","sent","WEBEX_WEB_CLIENT","uuid","SPARK_USER_AGENT","CALLING_USER_AGENT","headers","warn","_stringify","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","abrupt","json","stop","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee2","deviceInfo","_context2","clientDeviceUri","request","uri","POST","body","service","ALLOWED_SERVICES","MOBIUS","postRegistration","_x4","_restorePreviousRegistration","_callee4","caller","_this","abort","_context4","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee3","_context3","restartRegistration","includes","undefined","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee5","_context5","KEEPALIVE_UTIL","isDeviceRegistered","startFailoverTimer","handle404KeepaliveFailure","_x6","_handle429Retry","_callee7","_this2","interval","_context7","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","clearKeepaliveTimer","_callee6","_this2$deviceInfo$dev","_context6","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","attempt","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","_this3","timeElapsed","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args10","_context10","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","_now","max","_callee9","_context9","runExclusive","_callee8","currentTime","_context8","_callee1","_context1","_callee0","_context0","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_isPrimaryActive","_callee11","status","_iterator","_step","mobiusUrl","baseUri","_ref7","statusCode","_t0","_t1","_context11","replace","URL_ENDPOINT","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee12","_context12","executeFailback","_executeFailback","_callee14","_this5","_context14","_callee13","primaryServerStatus","abortNew","_context13","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee15","_context15","_x9","_handleConnectionRestoration","_callee17","retry","_this6","_context17","HANDLE_CONNECTION_RESTORATION","_callee16","_context16","handleConnectionRestoration","_x0","restoreRegistrationCallBack","_this7","_ref1","_callee18","restoreData","logContext","restore","finalError","_context18","isRegRetry","getExistingDevice","setRegRetry","_x1","_x10","_triggerRegistration","_callee19","_context19","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee20","_this8","servers","_iterator2","_step2","_loop","_ret","_args21","_t11","_context21","REGISTER_UTIL","_this8$backupMobiusUr","serverType","_this8$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this8$deviceInfo$dev2","resp","_t10","_context20","CONNECTING","REGISTERED","trackingid","REGISTER","setDeviceInfo","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","t0","_x11","_startKeepaliveTimer","_callee23","_this9","RETRY_COUNT_THRESHOLD","_context24","_callee22","accessToken","blob","blobUrl","_context23","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","String","retryCountThreshold","onmessage","_ref11","_callee21","event","error","_context22","data","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","err","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECT_ON_FAILURE_UTIL","RECONNECTING","_x15","_x12","_x13","_x14","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee24","_this$deviceInfo$devi","_this$deviceInfo$devi2","_t12","_context25","DEREGISTER","registerRetry","devices","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee25","_context26","RECONNECT_ON_FAILURE","_x16","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';\nimport webWorkerStr from './webWorkerStr';\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 WorkerMessageType,\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 FAILOVER_UTIL,\n REGISTER_UTIL,\n RETRY_TIMER_UPPER_LIMIT,\n KEEPALIVE_UTIL,\n REGISTRATION_UTIL,\n METHODS,\n URL_ENDPOINT,\n RECONNECT_ON_FAILURE_UTIL,\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.Timeout;\n private activeMobiusUrl!: string;\n\n private rehomingIntervalMin: number;\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 private webWorker: Worker | undefined;\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 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: ${JSON.stringify(error)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DELETE_REGISTRATION,\n });\n\n await uploadLogs();\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 if (this.retryAfter) {\n if (this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n // If retry-after is less than threshold, honor it and schedule retry\n setTimeout(async () => {\n await this.restartRegistration(caller);\n }, this.retryAfter * 1000);\n } else if (\n this.primaryMobiusUris.includes(this.activeMobiusUrl) &&\n this.backupMobiusUris.length > 0\n ) {\n // If we are using primary and got 429, switch to backup\n abort = await this.attemptRegistrationWithServers(caller, this.backupMobiusUris);\n } else {\n // If we are using backup and got 429, restart registration\n this.restartRegistration(caller);\n }\n this.retryAfter = undefined;\n\n return true;\n }\n }\n\n return abort;\n }\n\n /**\n * Callback for handling 404 response from the server for register keepalive\n */\n private async handle404KeepaliveFailure(caller: string): Promise<void> {\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Callback for handling 429 retry response from the server\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 if (caller === KEEPALIVE_UTIL) {\n this.clearKeepaliveTimer();\n setTimeout(async () => {\n log.log(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n\n // Resume the keepalive after waiting for the retry after period\n await this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n }, retryAfter * 1000);\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 = 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 private async isPrimaryActive() {\n let status;\n for (const mobiusUrl of this.primaryMobiusUris) {\n try {\n const baseUri = mobiusUrl.replace(URL_ENDPOINT, '/');\n // eslint-disable-next-line no-await-in-loop\n const response = await this.webex.request({\n uri: `${baseUri}ping`,\n method: HTTP_METHODS.GET,\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 const {statusCode} = response as WebexRequestPayload;\n if (statusCode === 200) {\n log.info(`Ping successful for primary Mobius: ${mobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n status = 'up';\n break;\n }\n } catch (error) {\n log.warn(\n `Ping failed for primary Mobius: ${mobiusUrl} with error: ${JSON.stringify(error)}`,\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n status = 'down';\n }\n }\n\n return status === 'up';\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 const primaryServerStatus = await this.isPrimaryActive();\n if (Object.keys(this.callManager.getActiveCalls()).length === 0 && primaryServerStatus) {\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(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n }\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('Network is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\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 METHODS.HANDLE_CONNECTION_RESTORATION\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(METHODS.HANDLE_CONNECTION_RESTORATION);\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.setActiveMobiusUrl(url);\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} responseTrackingId: ${resp.headers?.trackingid}`,\n {\n file: REGISTRATION_FILE,\n method: METHODS.REGISTER,\n }\n );\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 // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n\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 async startKeepaliveTimer(url: string, interval: number, serverType: SERVER_TYPE) {\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered()) {\n const accessToken = await this.webex.credentials.getUserToken();\n\n if (!this.webWorker) {\n const blob = new Blob([webWorkerStr], {type: 'application/javascript'});\n const blobUrl = URL.createObjectURL(blob);\n this.webWorker = new Worker(blobUrl);\n URL.revokeObjectURL(blobUrl);\n\n this.webWorker.postMessage({\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: String(accessToken),\n deviceUrl: String(this.webex.internal.device.url),\n interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\n url,\n });\n\n this.webWorker.onmessage = async (event: MessageEvent) => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n };\n if (event.data.type === WorkerMessageType.KEEPALIVE_SUCCESS) {\n log.info(`Sent Keepalive, status: ${event.data.statusCode}`, logContext);\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n\n if (event.data.type === WorkerMessageType.KEEPALIVE_FAILURE) {\n const error = <WebexRequestPayload>event.data.err;\n log.warn(\n `Keep-alive missed ${event.data.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\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n KEEPALIVE_UTIL,\n serverType,\n error.headers?.trackingid ?? '',\n event.data.keepAliveRetryCount,\n clientError\n );\n },\n {method: KEEPALIVE_UTIL, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) =>\n this.handle429Retry(retryAfter, retryCaller)\n );\n\n if (abort || event.data.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 await uploadLogs();\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL);\n } else if (error.statusCode === 404) {\n this.handle404KeepaliveFailure(KEEPALIVE_UTIL);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n };\n }\n }\n });\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.webWorker) {\n this.webWorker.postMessage({type: WorkerMessageType.CLEAR_KEEPALIVE});\n this.webWorker.terminate();\n this.webWorker = 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: ${JSON.stringify(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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","ignoreList":[]}
|