@webex/calling 3.12.0-next.41 → 3.12.0-next.42

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.
@@ -1800,6 +1800,7 @@ var Registration = exports.Registration = /*#__PURE__*/function () {
1800
1800
  var uri = restoreData.devices[0].uri.replace(stringToReplace, '');
1801
1801
  if (this.apiRequest.isSocketEnabled()) {
1802
1802
  uri = uri.replace('https://', 'wss://');
1803
+ uri = !uri.endsWith('/') ? "".concat(uri, "/") : uri;
1803
1804
  }
1804
1805
  this.setActiveMobiusUrl(uri);
1805
1806
  this.registrationStatus = _types2.RegistrationStatus.ACTIVE;
@@ -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","getServerType","url","_this$backupMobiusUri","includes","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","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","loggerContext","abort","_context5","RESTORE_PREVIOUS_REGISTRATION","getConnectedWebSocketUrl","disconnectFromMobiusSocket","code","reason","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee4","_context4","restartRegistration","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee6","_context6","HANDLE_404_KEEPALIVE_FAILURE","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","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","INITIATE_FAILBACK","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee14","_context14","executeFailback","_executeFailback","_callee16","_this5","_context16","EXECUTE_FAILBACK","_callee15","primaryServerStatus","abortNew","_context15","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee17","_context17","RESTART_REGISTRATION","_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","TRIGGER_REGISTRATION","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee22","_this8","servers","connectedWebSocketUrl","_iterator2","_step2","_loop","_ret","_args23","_t6","_context23","REGISTER_UTIL","_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","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","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","closeMobiusWss","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_args27","_t8","_context27","DEREGISTER","registerRetry","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee27","_context28","RECONNECT_ON_FAILURE","_x18","_handleRegistrationDownEvent","_callee28","_event$trackingId","_event$eventId","_Object$values","_Object$values2","activeCall","_context29","HANDLE_REGISTRATION_DOWN_EVENT","trackingId","eventId","_values","end","performRegistrationDownCleanup","handleRegistrationDownEvent","_x19","_performRegistrationDownCleanup","_callee30","_this0","_context31","_callee29","_t9","_context30","_x20","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, MobiusAsyncEvent} 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 getServerType(url: string): SERVER_TYPE {\n return (\n (this.primaryMobiusUris.includes(url) && 'PRIMARY') ||\n (this.backupMobiusUris?.includes(url) && 'BACKUP') ||\n 'UNKNOWN'\n );\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.RESTORE_PREVIOUS_REGISTRATION,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} - caller: ${caller}, activeMobiusUrl: ${this.activeMobiusUrl}`,\n loggerContext\n );\n\n let abort = false;\n\n if (\n this.apiRequest.isSocketEnabled() &&\n `${this.apiRequest.getConnectedWebSocketUrl()}/` !== this.activeMobiusUrl\n ) {\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 log.log(\n `restorePreviousRegistration completed via 429 retry-after path - caller: ${caller}`,\n loggerContext\n );\n\n return true;\n }\n }\n\n log.log(\n `restorePreviousRegistration completed - caller: ${caller}, deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_404_KEEPALIVE_FAILURE,\n };\n\n log.info(`${METHOD_START_MESSAGE} - caller: ${caller}`, loggerContext);\n\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n log.warn(\n 'Keepalive 404 recovery: re-registration did not complete, starting failover timer',\n loggerContext\n );\n await this.startFailoverTimer();\n } else {\n log.log(\n `Keepalive 404 recovery handled - deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\n );\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 log.log('Mobius socket disconnect complete prior to backup failover', loggerContext);\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.INITIATE_FAILBACK,\n };\n\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n log.info(\n `Scheduling failback to primary - intervalMinutes: ${intervalInMinutes}`,\n loggerContext\n );\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n } else {\n log.info('Failback timer already scheduled, skipping', loggerContext);\n }\n } else {\n log.info('Failback not required, clearing any pending failback timer', loggerContext);\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.EXECUTE_FAILBACK,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\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.`, loggerContext);\n await this.deregister();\n\n if (this.apiRequest.isSocketEnabled()) {\n log.info(\n 'Disconnecting from backup Mobius socket for failback to primary',\n loggerContext\n );\n\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n\n log.log('Mobius socket disconnect complete prior to primary failback', loggerContext);\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(loggerContext.method);\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 loggerContext\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.RESTART_REGISTRATION,\n };\n\n log.info(`${METHOD_START_MESSAGE} - caller: ${caller}`, loggerContext);\n\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 log.log(\n `restartRegistration completed - caller: ${caller}, deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.TRIGGER_REGISTRATION,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (await this.resumeFailover()) {\n log.info('Registration trigger handled by resumeFailover path', loggerContext);\n\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 log.log(\n `triggerRegistration completed - deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\n );\n } else {\n log.warn('triggerRegistration skipped: no primary Mobius URIs available', loggerContext);\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n };\n\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(\n `[${caller}] : Device already registered with : ${this.activeMobiusUrl}`,\n loggerContext\n );\n\n return abort;\n }\n for (const url of servers) {\n const serverType = this.getServerType(url);\n\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}`, loggerContext);\n\n if (this.apiRequest.isSocketEnabled()) {\n const wssNormalizedUrl = url.endsWith('/') ? url.slice(0, -1) : url;\n\n log.info(\n `[${caller}] : Connecting to Mobius WebSocket - serverType: ${serverType}, wssUrl: ${wssNormalizedUrl}`,\n loggerContext\n );\n\n // eslint-disable-next-line no-await-in-loop\n connectedWebSocketUrl = await this.apiRequest.connectToMobiusSocket(wssNormalizedUrl);\n connectedWebSocketUrl = connectedWebSocketUrl ? `${connectedWebSocketUrl}/` : undefined;\n\n log.log(\n `[${caller}] : Mobius WebSocket connected - serverType: ${serverType}, connectedWebSocketUrl: ${connectedWebSocketUrl}`,\n loggerContext\n );\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 loggerContext\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 loggerContext\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\n log.info(\n `[${caller}] : Tearing down Mobius WebSocket after registration error - serverType: ${serverType}`,\n loggerContext\n );\n\n // eslint-disable-next-line no-await-in-loop\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n\n log.log(\n `[${caller}] : Mobius WebSocket disconnect complete after registration error - serverType: ${serverType}`,\n loggerContext\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(closeMobiusWss = false) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\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', loggerContext);\n } catch (err) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(err)}`, loggerContext);\n }\n\n if (closeMobiusWss) {\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n log.log('Mobius socket disconnect complete after deregistration', loggerContext);\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 * Handles an async REGISTRATION_DOWN event emitted by Mobius. Ends the first\n * active call (if any) and runs registration-side cleanup.\n *\n * @param event - The Mobius async event payload (trackingId/eventId used for logs).\n */\n public async handleRegistrationDownEvent(event?: MobiusAsyncEvent): Promise<void> {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_REGISTRATION_DOWN_EVENT,\n };\n\n log.info(\n `Registration down received - trackingId: ${event?.trackingId ?? 'unknown'}, eventId: ${\n event?.eventId ?? 'unknown'\n }`,\n loggerContext\n );\n\n const [activeCall] = Object.values(this.callManager.getActiveCalls());\n activeCall?.end();\n\n await this.performRegistrationDownCleanup(METHODS.HANDLE_REGISTRATION_DOWN_EVENT);\n }\n\n /**\n * Cleans up registration-side state after a Mobius registration-down event.\n *\n * Stops timers, resets transient flags, clears failover cache, sets status to\n * INACTIVE, tears down the Mobius WebSocket (when enabled), and finally emits\n * `LINE_EVENTS.UNREGISTERED` so the SDK consumer is notified.\n *\n * Runs under the shared mutex to avoid racing with other registration flows.\n *\n * @param caller - Identifier of the caller, used for logs.\n */\n private async performRegistrationDownCleanup(caller: string): Promise<void> {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_REGISTRATION_DOWN_EVENT,\n };\n\n log.info(`[${caller}] : Running registration-down cleanup`, loggerContext);\n\n await this.mutex.runExclusive(async () => {\n this.clearFailbackTimer();\n this.clearKeepaliveTimer();\n\n this.reconnectPending = false;\n this.scheduled429Retry = false;\n this.failoverImmediately = false;\n this.retryAfter = undefined;\n this.registerRetry = false;\n\n this.clearFailoverState();\n this.setStatus(RegistrationStatus.INACTIVE);\n\n if (this.apiRequest.isSocketEnabled()) {\n try {\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n log.log('Mobius socket disconnect complete after registration-down', loggerContext);\n } catch (err) {\n log.warn(\n `Mobius socket disconnect failed after registration-down: ${String(err)}`,\n loggerContext\n );\n }\n }\n\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\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","getServerType","url","_this$backupMobiusUri","includes","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","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","loggerContext","abort","_context5","RESTORE_PREVIOUS_REGISTRATION","getConnectedWebSocketUrl","disconnectFromMobiusSocket","code","reason","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee4","_context4","restartRegistration","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee6","_context6","HANDLE_404_KEEPALIVE_FAILURE","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","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","INITIATE_FAILBACK","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee14","_context14","executeFailback","_executeFailback","_callee16","_this5","_context16","EXECUTE_FAILBACK","_callee15","primaryServerStatus","abortNew","_context15","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee17","_context17","RESTART_REGISTRATION","_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","TRIGGER_REGISTRATION","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee22","_this8","servers","connectedWebSocketUrl","_iterator2","_step2","_loop","_ret","_args23","_t6","_context23","REGISTER_UTIL","_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","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","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","closeMobiusWss","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_args27","_t8","_context27","DEREGISTER","registerRetry","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee27","_context28","RECONNECT_ON_FAILURE","_x18","_handleRegistrationDownEvent","_callee28","_event$trackingId","_event$eventId","_Object$values","_Object$values2","activeCall","_context29","HANDLE_REGISTRATION_DOWN_EVENT","trackingId","eventId","_values","end","performRegistrationDownCleanup","handleRegistrationDownEvent","_x19","_performRegistrationDownCleanup","_callee30","_this0","_context31","_callee29","_t9","_context30","_x20","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, MobiusAsyncEvent} 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 getServerType(url: string): SERVER_TYPE {\n return (\n (this.primaryMobiusUris.includes(url) && 'PRIMARY') ||\n (this.backupMobiusUris?.includes(url) && 'BACKUP') ||\n 'UNKNOWN'\n );\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.RESTORE_PREVIOUS_REGISTRATION,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} - caller: ${caller}, activeMobiusUrl: ${this.activeMobiusUrl}`,\n loggerContext\n );\n\n let abort = false;\n\n if (\n this.apiRequest.isSocketEnabled() &&\n `${this.apiRequest.getConnectedWebSocketUrl()}/` !== this.activeMobiusUrl\n ) {\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 log.log(\n `restorePreviousRegistration completed via 429 retry-after path - caller: ${caller}`,\n loggerContext\n );\n\n return true;\n }\n }\n\n log.log(\n `restorePreviousRegistration completed - caller: ${caller}, deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_404_KEEPALIVE_FAILURE,\n };\n\n log.info(`${METHOD_START_MESSAGE} - caller: ${caller}`, loggerContext);\n\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n log.warn(\n 'Keepalive 404 recovery: re-registration did not complete, starting failover timer',\n loggerContext\n );\n await this.startFailoverTimer();\n } else {\n log.log(\n `Keepalive 404 recovery handled - deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\n );\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 log.log('Mobius socket disconnect complete prior to backup failover', loggerContext);\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.INITIATE_FAILBACK,\n };\n\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n log.info(\n `Scheduling failback to primary - intervalMinutes: ${intervalInMinutes}`,\n loggerContext\n );\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n } else {\n log.info('Failback timer already scheduled, skipping', loggerContext);\n }\n } else {\n log.info('Failback not required, clearing any pending failback timer', loggerContext);\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.EXECUTE_FAILBACK,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\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.`, loggerContext);\n await this.deregister();\n\n if (this.apiRequest.isSocketEnabled()) {\n log.info(\n 'Disconnecting from backup Mobius socket for failback to primary',\n loggerContext\n );\n\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n\n log.log('Mobius socket disconnect complete prior to primary failback', loggerContext);\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(loggerContext.method);\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 loggerContext\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.RESTART_REGISTRATION,\n };\n\n log.info(`${METHOD_START_MESSAGE} - caller: ${caller}`, loggerContext);\n\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 log.log(\n `restartRegistration completed - caller: ${caller}, deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.TRIGGER_REGISTRATION,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (await this.resumeFailover()) {\n log.info('Registration trigger handled by resumeFailover path', loggerContext);\n\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 log.log(\n `triggerRegistration completed - deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\n );\n } else {\n log.warn('triggerRegistration skipped: no primary Mobius URIs available', loggerContext);\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 const loggerContext = {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n };\n\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(\n `[${caller}] : Device already registered with : ${this.activeMobiusUrl}`,\n loggerContext\n );\n\n return abort;\n }\n for (const url of servers) {\n const serverType = this.getServerType(url);\n\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}`, loggerContext);\n\n if (this.apiRequest.isSocketEnabled()) {\n const wssNormalizedUrl = url.endsWith('/') ? url.slice(0, -1) : url;\n\n log.info(\n `[${caller}] : Connecting to Mobius WebSocket - serverType: ${serverType}, wssUrl: ${wssNormalizedUrl}`,\n loggerContext\n );\n\n // eslint-disable-next-line no-await-in-loop\n connectedWebSocketUrl = await this.apiRequest.connectToMobiusSocket(wssNormalizedUrl);\n connectedWebSocketUrl = connectedWebSocketUrl ? `${connectedWebSocketUrl}/` : undefined;\n\n log.log(\n `[${caller}] : Mobius WebSocket connected - serverType: ${serverType}, connectedWebSocketUrl: ${connectedWebSocketUrl}`,\n loggerContext\n );\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 loggerContext\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 loggerContext\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\n log.info(\n `[${caller}] : Tearing down Mobius WebSocket after registration error - serverType: ${serverType}`,\n loggerContext\n );\n\n // eslint-disable-next-line no-await-in-loop\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n\n log.log(\n `[${caller}] : Mobius WebSocket disconnect complete after registration error - serverType: ${serverType}`,\n loggerContext\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(closeMobiusWss = false) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\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', loggerContext);\n } catch (err) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(err)}`, loggerContext);\n }\n\n if (closeMobiusWss) {\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n log.log('Mobius socket disconnect complete after deregistration', loggerContext);\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 uri = !uri.endsWith('/') ? `${uri}/` : uri;\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 * Handles an async REGISTRATION_DOWN event emitted by Mobius. Ends the first\n * active call (if any) and runs registration-side cleanup.\n *\n * @param event - The Mobius async event payload (trackingId/eventId used for logs).\n */\n public async handleRegistrationDownEvent(event?: MobiusAsyncEvent): Promise<void> {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_REGISTRATION_DOWN_EVENT,\n };\n\n log.info(\n `Registration down received - trackingId: ${event?.trackingId ?? 'unknown'}, eventId: ${\n event?.eventId ?? 'unknown'\n }`,\n loggerContext\n );\n\n const [activeCall] = Object.values(this.callManager.getActiveCalls());\n activeCall?.end();\n\n await this.performRegistrationDownCleanup(METHODS.HANDLE_REGISTRATION_DOWN_EVENT);\n }\n\n /**\n * Cleans up registration-side state after a Mobius registration-down event.\n *\n * Stops timers, resets transient flags, clears failover cache, sets status to\n * INACTIVE, tears down the Mobius WebSocket (when enabled), and finally emits\n * `LINE_EVENTS.UNREGISTERED` so the SDK consumer is notified.\n *\n * Runs under the shared mutex to avoid racing with other registration flows.\n *\n * @param caller - Identifier of the caller, used for logs.\n */\n private async performRegistrationDownCleanup(caller: string): Promise<void> {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_REGISTRATION_DOWN_EVENT,\n };\n\n log.info(`[${caller}] : Running registration-down cleanup`, loggerContext);\n\n await this.mutex.runExclusive(async () => {\n this.clearFailbackTimer();\n this.clearKeepaliveTimer();\n\n this.reconnectPending = false;\n this.scheduled429Retry = false;\n this.failoverImmediately = false;\n this.retryAfter = undefined;\n this.registerRetry = false;\n\n this.clearFailoverState();\n this.setStatus(RegistrationStatus.INACTIVE);\n\n if (this.apiRequest.isSocketEnabled()) {\n try {\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n log.log('Mobius socket disconnect complete after registration-down', loggerContext);\n } catch (err) {\n log.warn(\n `Mobius socket disconnect failed after registration-down: ${String(err)}`,\n loggerContext\n );\n }\n }\n\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\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":[]}
@@ -88,7 +88,7 @@ function deriveMobiusSocketMessageType(uri, httpMethodType) {
88
88
  // --- Device-level operations ---
89
89
 
90
90
  // Device keepalive: .../devices/{deviceId}/status (no /calls/ in path)
91
- if (uri.includes('/devices/') && uri.endsWith('/status')) {
91
+ if (!uri.includes('/calls/') && uri.endsWith('/status')) {
92
92
  return _constants2.MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS;
93
93
  }
94
94
 
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_Logger","_interopRequireDefault","_constants","_constants2","deriveMobiusSocketMessageType","uri","httpMethodType","logContext","file","MOBIUS_SOCKET_MAPPER_FILE","method","METHODS","DERIVE_MOBIUS_SOCKET_MESSAGE_TYPE","log","warn","MOBIUS_SOCKET_MESSAGE_TYPE","UNKNOWN","includes","CALL_HOLD","CALL_RESUME","CALL_TRANSFER","concat","CALL_MEDIA","CALL_STATUS","match","HTTP_METHODS","PATCH","CALL_STATE","DELETE","CALL_DELETE","endsWith","CALL_SETUP","DEVICE_STATUS","REGISTER","UNREGISTER","GET","DEVICE_GET","DEVICE_LIST","isSupplementaryServiceMessageType","exports","type"],"sources":["mobiusSocketMapper.ts"],"sourcesContent":["import {HTTP_METHODS} from '../../common/types';\nimport log from '../../Logger';\nimport {METHODS, MOBIUS_SOCKET_MAPPER_FILE} from '../constants';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\n\n/**\n * Derives the Mobius Socket message type from the URI and HTTP method.\n * Uses both the URI path pattern and the HTTP method to disambiguate operations\n * that share the same endpoint (e.g., PATCH vs DELETE on calls/{callId}).\n *\n * @param uri - The request URI\n * @param httpMethodType - The HTTP method used for the request\n * @returns The socket message type based on the URI pattern and HTTP method\n *\n * @example\n * deriveMobiusSocketMessageType('/api/v1/calling/web/device', HTTP_METHODS.POST)\n * // returns 'register'\n *\n * deriveMobiusSocketMessageType('/api/v1/calling/web/devices/abc123/calls/xyz789', HTTP_METHODS.PATCH)\n * // returns 'call_state'\n *\n * deriveMobiusSocketMessageType('/api/v1/calling/web/devices/abc123/calls/xyz789', HTTP_METHODS.DELETE)\n * // returns 'call_delete'\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function deriveMobiusSocketMessageType(\n uri?: string,\n httpMethodType?: HTTP_METHODS\n): MOBIUS_SOCKET_MESSAGE_TYPE {\n const logContext = {\n file: MOBIUS_SOCKET_MAPPER_FILE,\n method: METHODS.DERIVE_MOBIUS_SOCKET_MESSAGE_TYPE,\n };\n\n if (!uri) {\n log.warn('Cannot derive Mobius socket message type: uri is empty', logContext);\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n }\n\n // --- Supplementary services: .../services/{service}/{action} ---\n if (uri.includes('/services')) {\n if (uri.includes('/callhold/hold')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD;\n }\n if (uri.includes('/callhold/resume')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME;\n }\n if (uri.includes('/calltransfer/commit')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER;\n }\n\n log.warn(\n `Unrecognized supplementary service uri - uri: ${uri}, httpMethod: ${httpMethodType}`,\n logContext\n );\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n }\n\n // --- Call sub-resource actions (checked before bare calls/{callId}) ---\n\n // Call media: .../calls/{callId}/media\n if (uri.includes('/calls/') && uri.includes('/media')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA;\n }\n\n // Call status: .../calls/{callId}/status\n if (uri.includes('/calls/') && uri.includes('/status')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS;\n }\n\n // Call state or delete: .../calls/{callId} (PATCH → state, DELETE → delete)\n if (uri.match(/\\/calls\\/[^/]+$/)) {\n if (httpMethodType === HTTP_METHODS.PATCH) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE;\n }\n if (httpMethodType === HTTP_METHODS.DELETE) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE;\n }\n\n log.warn(\n `Unrecognized httpMethod for calls/{callId} - uri: ${uri}, httpMethod: ${httpMethodType}`,\n logContext\n );\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n }\n\n // Call setup: .../devices/{deviceId}/call (singular)\n if (uri.endsWith('/call')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP;\n }\n\n // --- Device-level operations ---\n\n // Device keepalive: .../devices/{deviceId}/status (no /calls/ in path)\n if (uri.includes('/devices/') && uri.endsWith('/status')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS;\n }\n\n // Device registration: .../calling/web/device (singular)\n if (uri.endsWith('/device')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER;\n }\n\n // Device unregister or get: .../devices/{deviceId} (DELETE → unregister, GET → device_get)\n if (uri.match(/\\/devices\\/[^/?]+$/) && !uri.includes('/calls')) {\n if (httpMethodType === HTTP_METHODS.DELETE) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNREGISTER;\n }\n if (httpMethodType === HTTP_METHODS.GET) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_GET;\n }\n\n log.warn(\n `Unrecognized httpMethod for devices/{deviceId} - uri: ${uri}, httpMethod: ${httpMethodType}`,\n logContext\n );\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n }\n\n // Device list: .../devices or .../devices?userid=...\n if (uri.includes('/devices') && !uri.match(/\\/devices\\/[^/?]+/)) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST;\n }\n\n log.warn(\n `Unrecognized uri pattern for Mobius socket - uri: ${uri}, httpMethod: ${httpMethodType}`,\n logContext\n );\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n}\n\nexport const isSupplementaryServiceMessageType = (type: MOBIUS_SOCKET_MESSAGE_TYPE): boolean =>\n [\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD,\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME,\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER,\n ].includes(type);\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,6BAA6BA,CAC3CC,GAAY,EACZC,cAA6B,EACD;EAC5B,IAAMC,UAAU,GAAG;IACjBC,IAAI,EAAEC,oCAAyB;IAC/BC,MAAM,EAAEC,kBAAO,CAACC;EAClB,CAAC;EAED,IAAI,CAACP,GAAG,EAAE;IACRQ,eAAG,CAACC,IAAI,CAAC,wDAAwD,EAAEP,UAAU,CAAC;IAE9E,OAAOQ,sCAA0B,CAACC,OAAO;EAC3C;;EAEA;EACA,IAAIX,GAAG,CAACY,QAAQ,CAAC,WAAW,CAAC,EAAE;IAC7B,IAAIZ,GAAG,CAACY,QAAQ,CAAC,gBAAgB,CAAC,EAAE;MAClC,OAAOF,sCAA0B,CAACG,SAAS;IAC7C;IACA,IAAIb,GAAG,CAACY,QAAQ,CAAC,kBAAkB,CAAC,EAAE;MACpC,OAAOF,sCAA0B,CAACI,WAAW;IAC/C;IACA,IAAId,GAAG,CAACY,QAAQ,CAAC,sBAAsB,CAAC,EAAE;MACxC,OAAOF,sCAA0B,CAACK,aAAa;IACjD;IAEAP,eAAG,CAACC,IAAI,kDAAAO,MAAA,CAC2ChB,GAAG,oBAAAgB,MAAA,CAAiBf,cAAc,GACnFC,UACF,CAAC;IAED,OAAOQ,sCAA0B,CAACC,OAAO;EAC3C;;EAEA;;EAEA;EACA,IAAIX,GAAG,CAACY,QAAQ,CAAC,SAAS,CAAC,IAAIZ,GAAG,CAACY,QAAQ,CAAC,QAAQ,CAAC,EAAE;IACrD,OAAOF,sCAA0B,CAACO,UAAU;EAC9C;;EAEA;EACA,IAAIjB,GAAG,CAACY,QAAQ,CAAC,SAAS,CAAC,IAAIZ,GAAG,CAACY,QAAQ,CAAC,SAAS,CAAC,EAAE;IACtD,OAAOF,sCAA0B,CAACQ,WAAW;EAC/C;;EAEA;EACA,IAAIlB,GAAG,CAACmB,KAAK,CAAC,iBAAiB,CAAC,EAAE;IAChC,IAAIlB,cAAc,KAAKmB,mBAAY,CAACC,KAAK,EAAE;MACzC,OAAOX,sCAA0B,CAACY,UAAU;IAC9C;IACA,IAAIrB,cAAc,KAAKmB,mBAAY,CAACG,MAAM,EAAE;MAC1C,OAAOb,sCAA0B,CAACc,WAAW;IAC/C;IAEAhB,eAAG,CAACC,IAAI,sDAAAO,MAAA,CAC+ChB,GAAG,oBAAAgB,MAAA,CAAiBf,cAAc,GACvFC,UACF,CAAC;IAED,OAAOQ,sCAA0B,CAACC,OAAO;EAC3C;;EAEA;EACA,IAAIX,GAAG,CAACyB,QAAQ,CAAC,OAAO,CAAC,EAAE;IACzB,OAAOf,sCAA0B,CAACgB,UAAU;EAC9C;;EAEA;;EAEA;EACA,IAAI1B,GAAG,CAACY,QAAQ,CAAC,WAAW,CAAC,IAAIZ,GAAG,CAACyB,QAAQ,CAAC,SAAS,CAAC,EAAE;IACxD,OAAOf,sCAA0B,CAACiB,aAAa;EACjD;;EAEA;EACA,IAAI3B,GAAG,CAACyB,QAAQ,CAAC,SAAS,CAAC,EAAE;IAC3B,OAAOf,sCAA0B,CAACkB,QAAQ;EAC5C;;EAEA;EACA,IAAI5B,GAAG,CAACmB,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAACnB,GAAG,CAACY,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAC9D,IAAIX,cAAc,KAAKmB,mBAAY,CAACG,MAAM,EAAE;MAC1C,OAAOb,sCAA0B,CAACmB,UAAU;IAC9C;IACA,IAAI5B,cAAc,KAAKmB,mBAAY,CAACU,GAAG,EAAE;MACvC,OAAOpB,sCAA0B,CAACqB,UAAU;IAC9C;IAEAvB,eAAG,CAACC,IAAI,0DAAAO,MAAA,CACmDhB,GAAG,oBAAAgB,MAAA,CAAiBf,cAAc,GAC3FC,UACF,CAAC;IAED,OAAOQ,sCAA0B,CAACC,OAAO;EAC3C;;EAEA;EACA,IAAIX,GAAG,CAACY,QAAQ,CAAC,UAAU,CAAC,IAAI,CAACZ,GAAG,CAACmB,KAAK,CAAC,mBAAmB,CAAC,EAAE;IAC/D,OAAOT,sCAA0B,CAACsB,WAAW;EAC/C;EAEAxB,eAAG,CAACC,IAAI,sDAAAO,MAAA,CAC+ChB,GAAG,oBAAAgB,MAAA,CAAiBf,cAAc,GACvFC,UACF,CAAC;EAED,OAAOQ,sCAA0B,CAACC,OAAO;AAC3C;AAEO,IAAMsB,iCAAiC,GAAAC,OAAA,CAAAD,iCAAA,GAAG,SAApCA,iCAAiCA,CAAIE,IAAgC;EAAA,OAChF,CACEzB,sCAA0B,CAACG,SAAS,EACpCH,sCAA0B,CAACI,WAAW,EACtCJ,sCAA0B,CAACK,aAAa,CACzC,CAACH,QAAQ,CAACuB,IAAI,CAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_Logger","_interopRequireDefault","_constants","_constants2","deriveMobiusSocketMessageType","uri","httpMethodType","logContext","file","MOBIUS_SOCKET_MAPPER_FILE","method","METHODS","DERIVE_MOBIUS_SOCKET_MESSAGE_TYPE","log","warn","MOBIUS_SOCKET_MESSAGE_TYPE","UNKNOWN","includes","CALL_HOLD","CALL_RESUME","CALL_TRANSFER","concat","CALL_MEDIA","CALL_STATUS","match","HTTP_METHODS","PATCH","CALL_STATE","DELETE","CALL_DELETE","endsWith","CALL_SETUP","DEVICE_STATUS","REGISTER","UNREGISTER","GET","DEVICE_GET","DEVICE_LIST","isSupplementaryServiceMessageType","exports","type"],"sources":["mobiusSocketMapper.ts"],"sourcesContent":["import {HTTP_METHODS} from '../../common/types';\nimport log from '../../Logger';\nimport {METHODS, MOBIUS_SOCKET_MAPPER_FILE} from '../constants';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\n\n/**\n * Derives the Mobius Socket message type from the URI and HTTP method.\n * Uses both the URI path pattern and the HTTP method to disambiguate operations\n * that share the same endpoint (e.g., PATCH vs DELETE on calls/{callId}).\n *\n * @param uri - The request URI\n * @param httpMethodType - The HTTP method used for the request\n * @returns The socket message type based on the URI pattern and HTTP method\n *\n * @example\n * deriveMobiusSocketMessageType('/api/v1/calling/web/device', HTTP_METHODS.POST)\n * // returns 'register'\n *\n * deriveMobiusSocketMessageType('/api/v1/calling/web/devices/abc123/calls/xyz789', HTTP_METHODS.PATCH)\n * // returns 'call_state'\n *\n * deriveMobiusSocketMessageType('/api/v1/calling/web/devices/abc123/calls/xyz789', HTTP_METHODS.DELETE)\n * // returns 'call_delete'\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function deriveMobiusSocketMessageType(\n uri?: string,\n httpMethodType?: HTTP_METHODS\n): MOBIUS_SOCKET_MESSAGE_TYPE {\n const logContext = {\n file: MOBIUS_SOCKET_MAPPER_FILE,\n method: METHODS.DERIVE_MOBIUS_SOCKET_MESSAGE_TYPE,\n };\n\n if (!uri) {\n log.warn('Cannot derive Mobius socket message type: uri is empty', logContext);\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n }\n\n // --- Supplementary services: .../services/{service}/{action} ---\n if (uri.includes('/services')) {\n if (uri.includes('/callhold/hold')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD;\n }\n if (uri.includes('/callhold/resume')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME;\n }\n if (uri.includes('/calltransfer/commit')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER;\n }\n\n log.warn(\n `Unrecognized supplementary service uri - uri: ${uri}, httpMethod: ${httpMethodType}`,\n logContext\n );\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n }\n\n // --- Call sub-resource actions (checked before bare calls/{callId}) ---\n\n // Call media: .../calls/{callId}/media\n if (uri.includes('/calls/') && uri.includes('/media')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA;\n }\n\n // Call status: .../calls/{callId}/status\n if (uri.includes('/calls/') && uri.includes('/status')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS;\n }\n\n // Call state or delete: .../calls/{callId} (PATCH → state, DELETE → delete)\n if (uri.match(/\\/calls\\/[^/]+$/)) {\n if (httpMethodType === HTTP_METHODS.PATCH) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE;\n }\n if (httpMethodType === HTTP_METHODS.DELETE) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE;\n }\n\n log.warn(\n `Unrecognized httpMethod for calls/{callId} - uri: ${uri}, httpMethod: ${httpMethodType}`,\n logContext\n );\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n }\n\n // Call setup: .../devices/{deviceId}/call (singular)\n if (uri.endsWith('/call')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP;\n }\n\n // --- Device-level operations ---\n\n // Device keepalive: .../devices/{deviceId}/status (no /calls/ in path)\n if (!uri.includes('/calls/') && uri.endsWith('/status')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS;\n }\n\n // Device registration: .../calling/web/device (singular)\n if (uri.endsWith('/device')) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER;\n }\n\n // Device unregister or get: .../devices/{deviceId} (DELETE → unregister, GET → device_get)\n if (uri.match(/\\/devices\\/[^/?]+$/) && !uri.includes('/calls')) {\n if (httpMethodType === HTTP_METHODS.DELETE) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNREGISTER;\n }\n if (httpMethodType === HTTP_METHODS.GET) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_GET;\n }\n\n log.warn(\n `Unrecognized httpMethod for devices/{deviceId} - uri: ${uri}, httpMethod: ${httpMethodType}`,\n logContext\n );\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n }\n\n // Device list: .../devices or .../devices?userid=...\n if (uri.includes('/devices') && !uri.match(/\\/devices\\/[^/?]+/)) {\n return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST;\n }\n\n log.warn(\n `Unrecognized uri pattern for Mobius socket - uri: ${uri}, httpMethod: ${httpMethodType}`,\n logContext\n );\n\n return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;\n}\n\nexport const isSupplementaryServiceMessageType = (type: MOBIUS_SOCKET_MESSAGE_TYPE): boolean =>\n [\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD,\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME,\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER,\n ].includes(type);\n"],"mappings":"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","ignoreList":[]}
@@ -116,6 +116,12 @@ describe('mobiusSocketMapper', function () {
116
116
  expect(result).toBe(_constants.MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);
117
117
  expect(warnSpy).not.toHaveBeenCalled();
118
118
  });
119
+ it('should return DEVICE_STATUS for /status URI without /devices/ segment in path', function () {
120
+ var uri = '/api/v1/calling/web/status';
121
+ var result = (0, _mobiusSocketMapper.deriveMobiusSocketMessageType)(uri, _types.HTTP_METHODS.POST);
122
+ expect(result).toBe(_constants.MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);
123
+ expect(warnSpy).not.toHaveBeenCalled();
124
+ });
119
125
  it('should return DEVICE_LIST for devices list URI without trailing ID', function () {
120
126
  var uri = '/api/v1/calling/web/devices';
121
127
  var result = (0, _mobiusSocketMapper.deriveMobiusSocketMessageType)(uri, _types.HTTP_METHODS.GET);
@@ -155,10 +161,14 @@ describe('mobiusSocketMapper', function () {
155
161
  method: 'deriveMobiusSocketMessageType'
156
162
  });
157
163
  });
158
- it('should handle URI with /calls/ in path correctly for DEVICE_STATUS (not call-related)', function () {
159
- var uri = '/api/v1/calling/web/devices/device-123/status';
164
+ it('should never return DEVICE_STATUS when /calls/ is present in path ending with /status', function () {
165
+ // The DEVICE_STATUS check explicitly excludes URIs containing /calls/. Any
166
+ // call-scoped /status URI must resolve to CALL_STATUS via the earlier branch,
167
+ // and must never fall through to DEVICE_STATUS even if check ordering changes.
168
+ var uri = '/api/v1/calling/web/devices/device-123/calls/call-456/status';
160
169
  var result = (0, _mobiusSocketMapper.deriveMobiusSocketMessageType)(uri, _types.HTTP_METHODS.PATCH);
161
- expect(result).toBe(_constants.MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);
170
+ expect(result).toBe(_constants.MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS);
171
+ expect(result).not.toBe(_constants.MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);
162
172
  expect(warnSpy).not.toHaveBeenCalled();
163
173
  });
164
174
  it('should prioritize call sub-resources over bare call patterns', function () {
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_Logger","_interopRequireDefault","_mobiusSocketMapper","_constants","describe","warnSpy","beforeEach","jest","clearAllMocks","spyOn","log","it","uri","result","deriveMobiusSocketMessageType","HTTP_METHODS","POST","expect","toBe","MOBIUS_SOCKET_MESSAGE_TYPE","CALL_HOLD","not","toHaveBeenCalled","CALL_RESUME","CALL_TRANSFER","UNKNOWN","toHaveBeenCalledWith","concat","file","method","CALL_SETUP","PATCH","CALL_MEDIA","CALL_STATUS","CALL_STATE","DELETE","CALL_DELETE","GET","REGISTER","UNREGISTER","DEVICE_GET","DEVICE_STATUS","DEVICE_LIST","undefined","mediaUri","statusUri","isSupplementaryServiceMessageType"],"sources":["mobiusSocketMapper.test.ts"],"sourcesContent":["import {HTTP_METHODS} from '../../common/types';\nimport log from '../../Logger';\nimport {\n deriveMobiusSocketMessageType,\n isSupplementaryServiceMessageType,\n} from './mobiusSocketMapper';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\n\ndescribe('mobiusSocketMapper', () => {\n let warnSpy: jest.SpyInstance;\n\n beforeEach(() => {\n jest.clearAllMocks();\n warnSpy = jest.spyOn(log, 'warn');\n });\n\n describe('deriveMobiusSocketMessageType', () => {\n describe('Supplementary services', () => {\n it('should return CALL_HOLD for hold service URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/callhold/hold';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_RESUME for resume service URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/callhold/resume';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_TRANSFER for transfer commit service URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/calltransfer/commit';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNKNOWN and log warning for unrecognized supplementary service', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/unknown/action';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized supplementary service uri - uri: ${uri}, httpMethod: ${HTTP_METHODS.POST}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n });\n\n describe('Call operations', () => {\n it('should return CALL_SETUP for call setup URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/call';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_MEDIA for call media URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456/media';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_STATUS for call status URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_STATE for calls/{callId} with PATCH method', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_DELETE for calls/{callId} with DELETE method', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.DELETE);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNKNOWN and log warning for calls/{callId} with unrecognized HTTP method', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized httpMethod for calls/{callId} - uri: ${uri}, httpMethod: ${HTTP_METHODS.GET}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n });\n\n describe('Device operations', () => {\n it('should return REGISTER for device registration URI', () => {\n const uri = '/api/v1/calling/web/device';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNREGISTER for devices/{deviceId} with DELETE method', () => {\n const uri = '/api/v1/calling/web/devices/device-123';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.DELETE);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNREGISTER);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_GET for devices/{deviceId} with GET method', () => {\n const uri = '/api/v1/calling/web/devices/device-123';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_GET);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNKNOWN and log warning for devices/{deviceId} with unrecognized HTTP method', () => {\n const uri = '/api/v1/calling/web/devices/device-123';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized httpMethod for devices/{deviceId} - uri: ${uri}, httpMethod: ${HTTP_METHODS.PATCH}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should return DEVICE_STATUS for devices/{deviceId}/status URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_LIST for devices list URI without trailing ID', () => {\n const uri = '/api/v1/calling/web/devices';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_LIST for devices list URI with query parameters', () => {\n const uri = '/api/v1/calling/web/devices?userid=user-789';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Edge cases', () => {\n it('should return UNKNOWN and log warning when uri is undefined', () => {\n const result = deriveMobiusSocketMessageType(undefined, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n 'Cannot derive Mobius socket message type: uri is empty',\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should return UNKNOWN and log warning when uri is empty string', () => {\n const result = deriveMobiusSocketMessageType('', HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n 'Cannot derive Mobius socket message type: uri is empty',\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should return UNKNOWN and log warning for completely unrecognized URI pattern', () => {\n const uri = '/api/v1/completely/unrecognized/path';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized uri pattern for Mobius socket - uri: ${uri}, httpMethod: ${HTTP_METHODS.POST}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should handle URI with /calls/ in path correctly for DEVICE_STATUS (not call-related)', () => {\n const uri = '/api/v1/calling/web/devices/device-123/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should prioritize call sub-resources over bare call patterns', () => {\n const mediaUri = '/api/v1/calling/web/devices/device-123/calls/call-456/media';\n const statusUri = '/api/v1/calling/web/devices/device-123/calls/call-456/status';\n\n expect(deriveMobiusSocketMessageType(mediaUri, HTTP_METHODS.PATCH)).toBe(\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA\n );\n expect(deriveMobiusSocketMessageType(statusUri, HTTP_METHODS.PATCH)).toBe(\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS\n );\n });\n });\n });\n\n describe('isSupplementaryServiceMessageType', () => {\n it('should return true for CALL_HOLD message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD);\n\n expect(result).toBe(true);\n });\n\n it('should return true for CALL_RESUME message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME);\n\n expect(result).toBe(true);\n });\n\n it('should return true for CALL_TRANSFER message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER);\n\n expect(result).toBe(true);\n });\n\n it('should return false for REGISTER message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER);\n\n expect(result).toBe(false);\n });\n\n it('should return false for CALL_SETUP message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP);\n\n expect(result).toBe(false);\n });\n\n it('should return false for CALL_STATE message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE);\n\n expect(result).toBe(false);\n });\n\n it('should return false for CALL_DELETE message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE);\n\n expect(result).toBe(false);\n });\n\n it('should return false for DEVICE_STATUS message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n\n expect(result).toBe(false);\n });\n\n it('should return false for UNKNOWN message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n\n expect(result).toBe(false);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_Logger","_interopRequireDefault","_mobiusSocketMapper","_constants","describe","warnSpy","beforeEach","jest","clearAllMocks","spyOn","log","it","uri","result","deriveMobiusSocketMessageType","HTTP_METHODS","POST","expect","toBe","MOBIUS_SOCKET_MESSAGE_TYPE","CALL_HOLD","not","toHaveBeenCalled","CALL_RESUME","CALL_TRANSFER","UNKNOWN","toHaveBeenCalledWith","concat","file","method","CALL_SETUP","PATCH","CALL_MEDIA","CALL_STATUS","CALL_STATE","DELETE","CALL_DELETE","GET","REGISTER","UNREGISTER","DEVICE_GET","DEVICE_STATUS","DEVICE_LIST","undefined","mediaUri","statusUri","isSupplementaryServiceMessageType"],"sources":["mobiusSocketMapper.test.ts"],"sourcesContent":["import {HTTP_METHODS} from '../../common/types';\nimport log from '../../Logger';\nimport {\n deriveMobiusSocketMessageType,\n isSupplementaryServiceMessageType,\n} from './mobiusSocketMapper';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\n\ndescribe('mobiusSocketMapper', () => {\n let warnSpy: jest.SpyInstance;\n\n beforeEach(() => {\n jest.clearAllMocks();\n warnSpy = jest.spyOn(log, 'warn');\n });\n\n describe('deriveMobiusSocketMessageType', () => {\n describe('Supplementary services', () => {\n it('should return CALL_HOLD for hold service URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/callhold/hold';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_RESUME for resume service URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/callhold/resume';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_TRANSFER for transfer commit service URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/calltransfer/commit';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNKNOWN and log warning for unrecognized supplementary service', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/unknown/action';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized supplementary service uri - uri: ${uri}, httpMethod: ${HTTP_METHODS.POST}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n });\n\n describe('Call operations', () => {\n it('should return CALL_SETUP for call setup URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/call';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_MEDIA for call media URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456/media';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_STATUS for call status URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_STATE for calls/{callId} with PATCH method', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_DELETE for calls/{callId} with DELETE method', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.DELETE);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNKNOWN and log warning for calls/{callId} with unrecognized HTTP method', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized httpMethod for calls/{callId} - uri: ${uri}, httpMethod: ${HTTP_METHODS.GET}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n });\n\n describe('Device operations', () => {\n it('should return REGISTER for device registration URI', () => {\n const uri = '/api/v1/calling/web/device';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNREGISTER for devices/{deviceId} with DELETE method', () => {\n const uri = '/api/v1/calling/web/devices/device-123';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.DELETE);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNREGISTER);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_GET for devices/{deviceId} with GET method', () => {\n const uri = '/api/v1/calling/web/devices/device-123';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_GET);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNKNOWN and log warning for devices/{deviceId} with unrecognized HTTP method', () => {\n const uri = '/api/v1/calling/web/devices/device-123';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized httpMethod for devices/{deviceId} - uri: ${uri}, httpMethod: ${HTTP_METHODS.PATCH}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should return DEVICE_STATUS for devices/{deviceId}/status URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_STATUS for /status URI without /devices/ segment in path', () => {\n const uri = '/api/v1/calling/web/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_LIST for devices list URI without trailing ID', () => {\n const uri = '/api/v1/calling/web/devices';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_LIST for devices list URI with query parameters', () => {\n const uri = '/api/v1/calling/web/devices?userid=user-789';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Edge cases', () => {\n it('should return UNKNOWN and log warning when uri is undefined', () => {\n const result = deriveMobiusSocketMessageType(undefined, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n 'Cannot derive Mobius socket message type: uri is empty',\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should return UNKNOWN and log warning when uri is empty string', () => {\n const result = deriveMobiusSocketMessageType('', HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n 'Cannot derive Mobius socket message type: uri is empty',\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should return UNKNOWN and log warning for completely unrecognized URI pattern', () => {\n const uri = '/api/v1/completely/unrecognized/path';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized uri pattern for Mobius socket - uri: ${uri}, httpMethod: ${HTTP_METHODS.POST}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should never return DEVICE_STATUS when /calls/ is present in path ending with /status', () => {\n // The DEVICE_STATUS check explicitly excludes URIs containing /calls/. Any\n // call-scoped /status URI must resolve to CALL_STATUS via the earlier branch,\n // and must never fall through to DEVICE_STATUS even if check ordering changes.\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS);\n expect(result).not.toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should prioritize call sub-resources over bare call patterns', () => {\n const mediaUri = '/api/v1/calling/web/devices/device-123/calls/call-456/media';\n const statusUri = '/api/v1/calling/web/devices/device-123/calls/call-456/status';\n\n expect(deriveMobiusSocketMessageType(mediaUri, HTTP_METHODS.PATCH)).toBe(\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA\n );\n expect(deriveMobiusSocketMessageType(statusUri, HTTP_METHODS.PATCH)).toBe(\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS\n );\n });\n });\n });\n\n describe('isSupplementaryServiceMessageType', () => {\n it('should return true for CALL_HOLD message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD);\n\n expect(result).toBe(true);\n });\n\n it('should return true for CALL_RESUME message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME);\n\n expect(result).toBe(true);\n });\n\n it('should return true for CALL_TRANSFER message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER);\n\n expect(result).toBe(true);\n });\n\n it('should return false for REGISTER message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER);\n\n expect(result).toBe(false);\n });\n\n it('should return false for CALL_SETUP message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP);\n\n expect(result).toBe(false);\n });\n\n it('should return false for CALL_STATE message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE);\n\n expect(result).toBe(false);\n });\n\n it('should return false for CALL_DELETE message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE);\n\n expect(result).toBe(false);\n });\n\n it('should return false for DEVICE_STATUS message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n\n expect(result).toBe(false);\n });\n\n it('should return false for UNKNOWN message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n\n expect(result).toBe(false);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -814,6 +814,7 @@ export class Registration {
814
814
  let uri = restoreData.devices[0].uri.replace(stringToReplace, '');
815
815
  if (this.apiRequest.isSocketEnabled()) {
816
816
  uri = uri.replace('https://', 'wss://');
817
+ uri = !uri.endsWith('/') ? `${uri}/` : uri;
817
818
  }
818
819
  this.setActiveMobiusUrl(uri);
819
820
  this.registrationStatus = RegistrationStatus.ACTIVE;
@@ -43,7 +43,7 @@ export function deriveMobiusSocketMessageType(uri, httpMethodType) {
43
43
  if (uri.endsWith('/call')) {
44
44
  return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP;
45
45
  }
46
- if (uri.includes('/devices/') && uri.endsWith('/status')) {
46
+ if (!uri.includes('/calls/') && uri.endsWith('/status')) {
47
47
  return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS;
48
48
  }
49
49
  if (uri.endsWith('/device')) {
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/registration/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/registration/register.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -147,5 +147,5 @@
147
147
  "staticpath": "docs",
148
148
  "noprompt": true
149
149
  },
150
- "version": "3.12.0-next.41"
150
+ "version": "3.12.0-next.42"
151
151
  }