@webex/calling 3.12.0-mobius-socket.10 → 3.12.0-mobius-socket.12

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.
Files changed (81) hide show
  1. package/dist/CallingClient/CallingClient.test.js +2 -2
  2. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  3. package/dist/CallingClient/calling/call.test.js +1 -1
  4. package/dist/CallingClient/calling/call.test.js.map +1 -1
  5. package/dist/CallingClient/line/line.test.js +2 -2
  6. package/dist/CallingClient/line/line.test.js.map +1 -1
  7. package/dist/CallingClient/registration/register.js +76 -43
  8. package/dist/CallingClient/registration/register.js.map +1 -1
  9. package/dist/CallingClient/registration/register.test.js +1 -1
  10. package/dist/CallingClient/registration/register.test.js.map +1 -1
  11. package/dist/CallingClient/registration/types.js.map +1 -1
  12. package/dist/CallingClient/utils/request.js +2 -2
  13. package/dist/CallingClient/utils/request.js.map +1 -1
  14. package/dist/common/Utils.js +70 -30
  15. package/dist/common/Utils.js.map +1 -1
  16. package/dist/mobius-socket/config.js +61 -0
  17. package/dist/mobius-socket/config.js.map +1 -0
  18. package/dist/mobius-socket/errors.js +106 -0
  19. package/dist/mobius-socket/errors.js.map +1 -0
  20. package/dist/mobius-socket/index.js +101 -0
  21. package/dist/mobius-socket/index.js.map +1 -0
  22. package/dist/mobius-socket/mobius-socket-events.test.js +511 -0
  23. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  24. package/dist/mobius-socket/mobius-socket.js +1191 -0
  25. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  26. package/dist/mobius-socket/mobius-socket.test.js +2107 -0
  27. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  28. package/dist/mobius-socket/socket/constants.js +20 -0
  29. package/dist/mobius-socket/socket/constants.js.map +1 -0
  30. package/dist/mobius-socket/socket/index.js +15 -0
  31. package/dist/mobius-socket/socket/index.js.map +1 -0
  32. package/dist/mobius-socket/socket/socket-base.js +632 -0
  33. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  34. package/dist/mobius-socket/socket/socket.js +19 -0
  35. package/dist/mobius-socket/socket/socket.js.map +1 -0
  36. package/dist/mobius-socket/socket/socket.shim.js +36 -0
  37. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  38. package/dist/mobius-socket/socket.test.js +752 -0
  39. package/dist/mobius-socket/socket.test.js.map +1 -0
  40. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  41. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  42. package/dist/mobius-socket/test/promise-tick.js +29 -0
  43. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  44. package/dist/module/CallingClient/registration/register.js +30 -7
  45. package/dist/module/CallingClient/utils/request.js +1 -1
  46. package/dist/module/common/Utils.js +17 -4
  47. package/dist/module/mobius-socket/config.js +18 -0
  48. package/dist/module/mobius-socket/errors.js +30 -0
  49. package/dist/module/mobius-socket/index.js +24 -0
  50. package/dist/module/mobius-socket/mobius-socket.js +761 -0
  51. package/dist/module/mobius-socket/socket/constants.js +10 -0
  52. package/dist/module/mobius-socket/socket/index.js +4 -0
  53. package/dist/module/mobius-socket/socket/socket-base.js +374 -0
  54. package/dist/module/mobius-socket/socket/socket.js +9 -0
  55. package/dist/module/mobius-socket/socket/socket.shim.js +24 -0
  56. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  57. package/dist/types/CallingClient/registration/types.d.ts +1 -1
  58. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  59. package/dist/types/common/Utils.d.ts +4 -1
  60. package/dist/types/common/Utils.d.ts.map +1 -1
  61. package/dist/types/mobius-socket/config.d.ts +15 -0
  62. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  63. package/dist/types/mobius-socket/errors.d.ts +13 -0
  64. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  65. package/dist/types/mobius-socket/index.d.ts +9 -0
  66. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  67. package/dist/types/mobius-socket/mobius-socket.d.ts +62 -0
  68. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  69. package/dist/types/mobius-socket/socket/constants.d.ts +11 -0
  70. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  71. package/dist/types/mobius-socket/socket/index.d.ts +2 -0
  72. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  73. package/dist/types/mobius-socket/socket/socket-base.d.ts +38 -0
  74. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  75. package/dist/types/mobius-socket/socket/socket.d.ts +3 -0
  76. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  77. package/dist/types/mobius-socket/socket/socket.shim.d.ts +3 -0
  78. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  79. package/package.json +16 -3
  80. package/src/mobius-socket/socket/socket.js +13 -0
  81. package/src/mobius-socket/socket/socket.shim.js +31 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_request","_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","apiRequest","APIRequest","getInstance","_createClass2","key","getFailoverCacheKey","concat","FAILOVER_CACHE_PREFIX","saveFailoverState","failoverState","localStorage","setItem","_stringify","error","warn","String","file","method","clearFailoverState","removeItem","_unused","_resumeFailover","_asyncToGenerator2","_regenerator","mark","_callee","cachedState","currentTime","newElapsed","_t","wrap","_context","prev","getItem","JSON","parse","undefined","isDeviceRegistered","Math","floor","_now","timeElapsed","retryScheduledTime","startFailoverTimer","attempt","abrupt","stop","resumeFailover","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","METHOD_START_MESSAGE","METHODS","UPDATE_ACTIVE_MOBIUS","updateActiveMobius","setDeviceInfo","devicesInfo","_devicesInfo$devices","_slicedToArray2","devices","deviceInfo","setMobiusServers","SET_MOBIUS_SERVERS","_deleteRegistration","_callee2","deviceId","deviceUrl","response","requestObj","_t2","_context2","uri","DEVICES_ENDPOINT_RESOURCE","HTTP_METHODS","DELETE","headers","CISCO_DEVICE_URL","SPARK_USER_AGENT","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","isSocketEnabled","body","makeRequest","sent","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee3","_context3","clientDeviceUri","POST","postRegistration","_x4","_restorePreviousRegistration","_callee5","caller","_this","abort","_context5","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee4","_context4","restartRegistration","includes","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee6","_context6","KEEPALIVE_UTIL","handle404KeepaliveFailure","_x6","_handle429Retry","_callee8","_this2","interval","_context8","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","clearKeepaliveTimer","_callee7","_this2$deviceInfo$dev","_context7","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","BASE_REG_RETRY_TIMER_VAL_IN_SEC","pow","BASE_REG_TIMER_MFACTOR","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee11","_this3","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args11","_context11","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","max","serverType","_callee0","_context0","runExclusive","_callee9","_context9","_callee10","_context10","_callee1","_context1","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_postKeepAlive","_callee12","_this$deviceInfo$devi","_context12","postKeepAlive","_x9","_x0","_isPrimaryActive","_callee13","status","_iterator","_step","mobiusUrl","baseUri","_ref7","statusCode","_t3","_t4","_context13","replace","URL_ENDPOINT","request","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee14","_context14","executeFailback","_executeFailback","_callee16","_this5","_context16","_callee15","primaryServerStatus","abortNew","_context15","_keys","getActiveCalls","deregister","disconnectFromMobiusSocket","code","reason","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee17","_context17","_x1","_handleConnectionRestoration","_callee19","retry","_this6","_context19","HANDLE_CONNECTION_RESTORATION","_callee18","_context18","handleConnectionRestoration","_x10","restoreRegistrationCallBack","_this7","_ref1","_callee20","restoreData","logContext","restore","finalError","_context20","isRegRetry","getExistingDevice","setRegRetry","_x11","_x12","_triggerRegistration","_callee21","_context21","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee22","_this8","servers","connectedWebSocketUrl","_iterator2","_step2","_loop","_ret","_args23","_t6","_context23","REGISTER_UTIL","_this8$backupMobiusUr","_this8$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this8$deviceInfo$dev2","wssNormalizedUrl","resp","_t5","_context22","CONNECTING","endsWith","connectToMobiusSocket","REGISTERED","trackingid","REGISTER","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","t0","_x13","_startKeepaliveTimer","_callee25","_this9","RETRY_COUNT_THRESHOLD","_context26","_callee24","blob","blobUrl","_context25","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","retryCountThreshold","onmessage","_ref11","_callee23","event","_this9$webWorker","res","_err$headers","_this9$webWorker2","_error","_t7","_context24","data","SEND_KEEPALIVE","KEEPALIVE_RESULT","statusText","err","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECT_ON_FAILURE_UTIL","RECONNECTING","_x17","_x14","_x15","_x16","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee26","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_t8","_context27","DEREGISTER","registerRetry","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee27","_context28","RECONNECT_ON_FAILURE","_x18","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {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 {FailoverCacheState, IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n Devices,\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 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 FAILOVER_CACHE_PREFIX,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\nimport {APIRequest} from '../utils/request';\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 private apiRequest: APIRequest;\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 this.apiRequest = APIRequest.getInstance({webex: this.webex});\n }\n\n private getFailoverCacheKey(): string {\n return `${FAILOVER_CACHE_PREFIX}.${this.userId || 'unknown'}`;\n }\n\n private saveFailoverState(failoverState: FailoverCacheState): void {\n try {\n localStorage.setItem(this.getFailoverCacheKey(), JSON.stringify(failoverState));\n } catch (error) {\n log.warn(`Storing failover state in cache failed with error: ${String(error)}`, {\n file: REGISTRATION_FILE,\n method: 'saveFailoverState',\n });\n }\n }\n\n private clearFailoverState(): void {\n try {\n localStorage.removeItem(this.getFailoverCacheKey());\n } catch {\n log.warn('Clearing failover state from localStorage failed', {\n file: REGISTRATION_FILE,\n method: 'clearFailoverState',\n });\n }\n }\n\n private async resumeFailover(): Promise<boolean> {\n try {\n const cachedState = localStorage.getItem(this.getFailoverCacheKey());\n const failoverState = cachedState\n ? (JSON.parse(cachedState) as FailoverCacheState)\n : undefined;\n if (failoverState && !this.isDeviceRegistered()) {\n const currentTime = Math.floor(Date.now() / 1000);\n const newElapsed =\n failoverState.timeElapsed + (currentTime - failoverState.retryScheduledTime);\n\n this.clearFailoverState();\n await this.startFailoverTimer(failoverState.attempt, newElapsed);\n\n return true;\n }\n } catch (error) {\n log.warn(`No failover state found in cache`, {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n });\n }\n\n return false;\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 /**\n * Populate deviceInfo using a devices response body.\n */\n public setDeviceInfo(devicesInfo: Devices): void {\n const [device] = devicesInfo.devices;\n\n this.deviceInfo = {\n userId: devicesInfo.userId,\n device,\n devices: devicesInfo.devices,\n };\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\n const requestObj = {\n uri: `${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`,\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n };\n\n if (this.apiRequest.isSocketEnabled()) {\n // @ts-ignore - body is added for mobius wss support, it is not used for mobius http\n requestObj.body = {\n deviceId,\n };\n }\n\n try {\n response = await this.apiRequest.makeRequest(requestObj);\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 response as WebexRequestPayload;\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 this.apiRequest.makeRequest({\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 }) as Promise<WebexRequestPayload>;\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 this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: scheduledTime,\n serverType: 'primary',\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 this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: Math.floor(Date.now() / 1000),\n serverType: 'backup',\n });\n\n log.info('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n\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(\n (clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n },\n loggerContext,\n interval < 0 ? 'Timer threshold exceeded during failover' : undefined\n );\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 postKeepAlive(deviceUrl: string, url: string) {\n return this.apiRequest.makeRequest({\n uri: `${url}/status`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n deviceId: this.deviceInfo.device?.deviceId,\n },\n service: ALLOWED_SERVICES.MOBIUS,\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, '/').replace('wss://', 'https://');\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\n if (this.apiRequest.isSocketEnabled()) {\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n }\n\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 (await this.resumeFailover()) {\n return;\n }\n\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 let connectedWebSocketUrl: string | 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\n if (this.apiRequest.isSocketEnabled()) {\n const wssNormalizedUrl = url.endsWith('/') ? url.slice(0, -1) : url;\n\n // eslint-disable-next-line no-await-in-loop\n connectedWebSocketUrl = await this.apiRequest.connectToMobiusSocket(wssNormalizedUrl);\n connectedWebSocketUrl = connectedWebSocketUrl ? `${connectedWebSocketUrl}/` : undefined;\n }\n\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.clearFailoverState();\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.setActiveMobiusUrl(connectedWebSocketUrl || 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 connectedWebSocketUrl = undefined;\n // eslint-disable-next-line no-await-in-loop\n await this.apiRequest.disconnectFromMobiusSocket({code: 3050, reason: 'done (permanent)'});\n\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 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 interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\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.SEND_KEEPALIVE) {\n try {\n const res = await this.postKeepAlive(String(this.webex.internal.device.url), url);\n\n this.webWorker?.postMessage({\n type: WorkerMessageType.KEEPALIVE_RESULT,\n statusCode: res.statusCode,\n });\n } catch (err: any) {\n const error = {\n headers: {\n trackingid: err.headers?.trackingid,\n 'retry-after': err.headers['retry-after'],\n },\n statusCode: err.statusCode,\n statusText: err.statusText,\n type: err.type,\n };\n\n this.webWorker?.postMessage({\n type: WorkerMessageType.KEEPALIVE_RESULT,\n err: error,\n });\n }\n }\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 = event.data.err as WebexRequestPayload;\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 this.clearFailoverState();\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 let uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n\n if (this.apiRequest.isSocketEnabled()) {\n uri = uri.replace('https://', 'wss://');\n }\n\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":["_constants","require","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_request","_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","apiRequest","APIRequest","getInstance","_createClass2","key","getFailoverCacheKey","concat","FAILOVER_CACHE_PREFIX","saveFailoverState","failoverState","localStorage","setItem","_stringify","error","warn","String","file","method","clearFailoverState","removeItem","_unused","_resumeFailover","_asyncToGenerator2","_regenerator","mark","_callee","cachedState","currentTime","newElapsed","_t","wrap","_context","prev","getItem","JSON","parse","undefined","isDeviceRegistered","Math","floor","_now","timeElapsed","retryScheduledTime","startFailoverTimer","attempt","abrupt","stop","resumeFailover","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","METHOD_START_MESSAGE","METHODS","UPDATE_ACTIVE_MOBIUS","updateActiveMobius","setDeviceInfo","devicesInfo","_devicesInfo$devices","_slicedToArray2","devices","deviceInfo","setMobiusServers","SET_MOBIUS_SERVERS","_deleteRegistration","_callee2","deviceId","deviceUrl","response","requestObj","_t2","_context2","uri","DEVICES_ENDPOINT_RESOURCE","HTTP_METHODS","DELETE","headers","CISCO_DEVICE_URL","SPARK_USER_AGENT","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","isSocketEnabled","body","makeRequest","sent","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee3","_context3","clientDeviceUri","POST","postRegistration","_x4","_restorePreviousRegistration","_callee5","caller","_this","abort","_context5","disconnectFromMobiusSocket","code","reason","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee4","_context4","restartRegistration","includes","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee6","_context6","KEEPALIVE_UTIL","handle404KeepaliveFailure","_x6","_handle429Retry","_callee8","_this2","interval","_context8","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","clearKeepaliveTimer","_callee7","_this2$deviceInfo$dev","_context7","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","BASE_REG_RETRY_TIMER_VAL_IN_SEC","pow","BASE_REG_TIMER_MFACTOR","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee11","_this3","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args11","_context11","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","max","serverType","_callee0","_context0","runExclusive","_callee9","_context9","_callee10","_context10","_callee1","_context1","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_postKeepAlive","_callee12","_this$deviceInfo$devi","_context12","postKeepAlive","_x9","_x0","_isPrimaryActive","_callee13","status","_iterator","_step","mobiusUrl","baseUri","_ref7","statusCode","_t3","_t4","_context13","replace","URL_ENDPOINT","request","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee14","_context14","executeFailback","_executeFailback","_callee16","_this5","_context16","_callee15","primaryServerStatus","abortNew","_context15","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee17","_context17","_x1","_handleConnectionRestoration","_callee19","retry","_this6","_context19","HANDLE_CONNECTION_RESTORATION","_callee18","_context18","handleConnectionRestoration","_x10","restoreRegistrationCallBack","_this7","_ref1","_callee20","restoreData","logContext","restore","finalError","_context20","isRegRetry","getExistingDevice","setRegRetry","_x11","_x12","_triggerRegistration","_callee21","_context21","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee22","_this8","servers","connectedWebSocketUrl","_iterator2","_step2","_loop","_ret","_args23","_t6","_context23","REGISTER_UTIL","_this8$backupMobiusUr","_this8$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this8$deviceInfo$dev2","wssNormalizedUrl","resp","_yield$handleRegistra","shouldDisconnect","_t5","_context22","CONNECTING","endsWith","connectToMobiusSocket","REGISTERED","trackingid","REGISTER","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","isFinalError","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","t0","_x13","_startKeepaliveTimer","_callee25","_this9","RETRY_COUNT_THRESHOLD","_context26","_callee24","blob","blobUrl","_context25","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","retryCountThreshold","onmessage","_ref11","_callee23","event","_this9$webWorker","res","_err$headers","_this9$webWorker2","_error","_yield$handleRegistra2","_t7","_context24","data","SEND_KEEPALIVE","KEEPALIVE_RESULT","statusText","err","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECT_ON_FAILURE_UTIL","RECONNECTING","_x17","_x14","_x15","_x16","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee26","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_t8","_context27","DEREGISTER","registerRetry","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee27","_context28","RECONNECT_ON_FAILURE","_x18","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {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 {FailoverCacheState, IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n Devices,\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 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 FAILOVER_CACHE_PREFIX,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\nimport {APIRequest} from '../utils/request';\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 private apiRequest: APIRequest;\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 this.apiRequest = APIRequest.getInstance({webex: this.webex});\n }\n\n private getFailoverCacheKey(): string {\n return `${FAILOVER_CACHE_PREFIX}.${this.userId || 'unknown'}`;\n }\n\n private saveFailoverState(failoverState: FailoverCacheState): void {\n try {\n localStorage.setItem(this.getFailoverCacheKey(), JSON.stringify(failoverState));\n } catch (error) {\n log.warn(`Storing failover state in cache failed with error: ${String(error)}`, {\n file: REGISTRATION_FILE,\n method: 'saveFailoverState',\n });\n }\n }\n\n private clearFailoverState(): void {\n try {\n localStorage.removeItem(this.getFailoverCacheKey());\n } catch {\n log.warn('Clearing failover state from localStorage failed', {\n file: REGISTRATION_FILE,\n method: 'clearFailoverState',\n });\n }\n }\n\n private async resumeFailover(): Promise<boolean> {\n try {\n const cachedState = localStorage.getItem(this.getFailoverCacheKey());\n const failoverState = cachedState\n ? (JSON.parse(cachedState) as FailoverCacheState)\n : undefined;\n if (failoverState && !this.isDeviceRegistered()) {\n const currentTime = Math.floor(Date.now() / 1000);\n const newElapsed =\n failoverState.timeElapsed + (currentTime - failoverState.retryScheduledTime);\n\n this.clearFailoverState();\n await this.startFailoverTimer(failoverState.attempt, newElapsed);\n\n return true;\n }\n } catch (error) {\n log.warn(`No failover state found in cache`, {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n });\n }\n\n return false;\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 /**\n * Populate deviceInfo using a devices response body.\n */\n public setDeviceInfo(devicesInfo: Devices): void {\n const [device] = devicesInfo.devices;\n\n this.deviceInfo = {\n userId: devicesInfo.userId,\n device,\n devices: devicesInfo.devices,\n };\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\n const requestObj = {\n uri: `${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`,\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n };\n\n if (this.apiRequest.isSocketEnabled()) {\n // @ts-ignore - body is added for mobius wss support, it is not used for mobius http\n requestObj.body = {\n deviceId,\n };\n }\n\n try {\n response = await this.apiRequest.makeRequest(requestObj);\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 response as WebexRequestPayload;\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 this.apiRequest.makeRequest({\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 }) as Promise<WebexRequestPayload>;\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.apiRequest.isSocketEnabled()) {\n log.info(`Disconnecting from Mobius socket to restore previous registration.`, {\n file: REGISTRATION_FILE,\n method: 'restorePreviousRegistration',\n });\n\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n }\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 await 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 this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: scheduledTime,\n serverType: 'primary',\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 if (this.apiRequest.isSocketEnabled()) {\n log.info(\n 'Disconnecting from primary Mobius socket for failover to backup servers',\n loggerContext\n );\n\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n }\n\n this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: Math.floor(Date.now() / 1000),\n serverType: 'backup',\n });\n\n log.info('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n\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(\n (clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n },\n loggerContext,\n interval < 0 ? 'Timer threshold exceeded during failover' : undefined\n );\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 postKeepAlive(deviceUrl: string, url: string) {\n return this.apiRequest.makeRequest({\n uri: `${url}/status`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n deviceId: this.deviceInfo.device?.deviceId,\n },\n service: ALLOWED_SERVICES.MOBIUS,\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, '/').replace('wss://', 'https://');\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\n if (this.apiRequest.isSocketEnabled()) {\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n }\n\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 (await this.resumeFailover()) {\n return;\n }\n\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 let connectedWebSocketUrl: string | 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\n if (this.apiRequest.isSocketEnabled()) {\n const wssNormalizedUrl = url.endsWith('/') ? url.slice(0, -1) : url;\n\n // eslint-disable-next-line no-await-in-loop\n connectedWebSocketUrl = await this.apiRequest.connectToMobiusSocket(wssNormalizedUrl);\n connectedWebSocketUrl = connectedWebSocketUrl ? `${connectedWebSocketUrl}/` : undefined;\n }\n\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.clearFailoverState();\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.setActiveMobiusUrl(connectedWebSocketUrl || 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 const {finalError, shouldDisconnect} = await handleRegistrationErrors(\n body,\n (clientError, isFinalError) => {\n if (isFinalError) {\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 servers.length\n );\n\n abort = finalError;\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\n /**\n * 1. This is to ensure that registration error is handled before moving to the disconnect step.\n * 2. We are not tearing down the socket if there is only one server in the list during the failover/re-attempt process.\n * 3. Connection should not be torn down for 429 error case because retry will happen, which takes care disconnect/connect step.\n */\n if (shouldDisconnect && this.apiRequest.isSocketEnabled()) {\n connectedWebSocketUrl = undefined;\n // eslint-disable-next-line no-await-in-loop\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n }\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 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 interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\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.SEND_KEEPALIVE) {\n try {\n const res = await this.postKeepAlive(String(this.webex.internal.device.url), url);\n\n this.webWorker?.postMessage({\n type: WorkerMessageType.KEEPALIVE_RESULT,\n statusCode: res.statusCode,\n });\n } catch (err: any) {\n const error = {\n headers: {\n trackingid: err.headers?.trackingid,\n 'retry-after': err.headers['retry-after'],\n },\n statusCode: err.statusCode,\n statusText: err.statusText,\n type: err.type,\n };\n\n this.webWorker?.postMessage({\n type: WorkerMessageType.KEEPALIVE_RESULT,\n err: error,\n });\n }\n }\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 = event.data.err as WebexRequestPayload;\n log.warn(\n `Keep-alive missed ${event.data.keepAliveRetryCount} times. Status -> ${error.statusCode} `,\n logContext\n );\n\n const {finalError: 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 this.clearFailoverState();\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 let uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n\n if (this.apiRequest.isSocketEnabled()) {\n uri = uri.replace('https://', 'wss://');\n }\n\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":[]}
@@ -36,7 +36,7 @@ var _request = require("../utils/request");
36
36
  function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
37
37
  function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
38
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; } /* eslint-disable @typescript-eslint/no-shadow */
39
- jest.mock('@webex/internal-plugin-mobius-socket', function () {
39
+ jest.mock('../../mobius-socket', function () {
40
40
  return {
41
41
  getMobiusSocketInstance: jest.fn().mockReturnValue({
42
42
  sendWssRequest: jest.fn()