@webex/calling 3.10.0-next.8 → 3.10.0-wxc-disconnect.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/CallHistory/CallHistory.js +41 -42
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +5 -120
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallSettings/UcmBackendConnector.js +6 -6
  6. package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
  7. package/dist/CallSettings/UcmBackendConnector.test.js +1 -2
  8. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
  9. package/dist/CallSettings/WxCallBackendConnector.js +43 -38
  10. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
  11. package/dist/CallSettings/WxCallBackendConnector.test.js +1 -4
  12. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
  13. package/dist/CallingClient/CallingClient.js +207 -161
  14. package/dist/CallingClient/CallingClient.js.map +1 -1
  15. package/dist/CallingClient/CallingClient.test.js +290 -152
  16. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  17. package/dist/CallingClient/calling/call.js +53 -50
  18. package/dist/CallingClient/calling/call.js.map +1 -1
  19. package/dist/CallingClient/calling/call.test.js +51 -93
  20. package/dist/CallingClient/calling/call.test.js.map +1 -1
  21. package/dist/CallingClient/calling/callManager.test.js +1 -1
  22. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  23. package/dist/CallingClient/registration/register.js +4 -5
  24. package/dist/CallingClient/registration/register.js.map +1 -1
  25. package/dist/CallingClient/registration/webWorker.js +3 -3
  26. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  27. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  28. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  29. package/dist/Contacts/ContactsClient.js +45 -39
  30. package/dist/Contacts/ContactsClient.js.map +1 -1
  31. package/dist/Contacts/ContactsClient.test.js +3 -4
  32. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  33. package/dist/Events/impl/index.js +1 -1
  34. package/dist/Events/impl/index.js.map +1 -1
  35. package/dist/Logger/index.js +3 -3
  36. package/dist/Logger/index.js.map +1 -1
  37. package/dist/Logger/index.test.js +1 -1
  38. package/dist/Logger/index.test.js.map +1 -1
  39. package/dist/SDKConnector/types.js.map +1 -1
  40. package/dist/Voicemail/BroadworksBackendConnector.js +54 -47
  41. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
  42. package/dist/Voicemail/BroadworksBackendConnector.test.js +2 -10
  43. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
  44. package/dist/Voicemail/UcmBackendConnector.js +32 -29
  45. package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
  46. package/dist/Voicemail/Voicemail.js +102 -77
  47. package/dist/Voicemail/Voicemail.js.map +1 -1
  48. package/dist/Voicemail/WxCallBackendConnector.js +59 -46
  49. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
  50. package/dist/Voicemail/WxCallBackendConnector.test.js +18 -44
  51. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
  52. package/dist/common/Utils.js +2 -2
  53. package/dist/common/Utils.js.map +1 -1
  54. package/dist/common/Utils.test.js +8 -4
  55. package/dist/common/Utils.test.js.map +1 -1
  56. package/dist/common/testUtil.js +1 -2
  57. package/dist/common/testUtil.js.map +1 -1
  58. package/dist/module/CallHistory/CallHistory.js +11 -20
  59. package/dist/module/CallSettings/UcmBackendConnector.js +2 -1
  60. package/dist/module/CallSettings/WxCallBackendConnector.js +15 -10
  61. package/dist/module/CallingClient/CallingClient.js +123 -83
  62. package/dist/module/CallingClient/calling/call.js +23 -17
  63. package/dist/module/CallingClient/registration/register.js +3 -3
  64. package/dist/module/CallingClient/registration/webWorker.js +2 -2
  65. package/dist/module/CallingClient/registration/webWorkerStr.js +2 -2
  66. package/dist/module/Contacts/ContactsClient.js +25 -19
  67. package/dist/module/Events/impl/index.js +1 -1
  68. package/dist/module/Logger/index.js +2 -2
  69. package/dist/module/Voicemail/BroadworksBackendConnector.js +18 -10
  70. package/dist/module/Voicemail/UcmBackendConnector.js +11 -7
  71. package/dist/module/Voicemail/Voicemail.js +68 -42
  72. package/dist/module/Voicemail/WxCallBackendConnector.js +28 -14
  73. package/dist/module/common/Utils.js +2 -2
  74. package/dist/module/common/testUtil.js +0 -1
  75. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  76. package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
  77. package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
  78. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  79. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  80. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  81. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  82. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  83. package/dist/types/Contacts/ContactsClient.d.ts +0 -1
  84. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  85. package/dist/types/Logger/index.d.ts +2 -1
  86. package/dist/types/Logger/index.d.ts.map +1 -1
  87. package/dist/types/SDKConnector/types.d.ts +0 -10
  88. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  89. package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
  90. package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
  91. package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
  92. package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
  93. package/dist/types/common/Utils.d.ts.map +1 -1
  94. package/dist/types/common/testUtil.d.ts +0 -1
  95. package/dist/types/common/testUtil.d.ts.map +1 -1
  96. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","require","_constants","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Registration","exports","webex","serviceData","mutex","lineEmitter","logLevel","jwe","_classCallCheck2","sdkConnector","SDKConnector","isCCFlow","indicator","ServiceIndicator","CONTACT_CENTER","getWebex","setWebex","userId","internal","device","registrationStatus","RegistrationStatus","IDLE","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","_createClass2","key","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","concat","METHOD_START_MESSAGE","method","METHODS","UPDATE_ACTIVE_MOBIUS","file","updateActiveMobius","setMobiusServers","SET_MOBIUS_SERVERS","_deleteRegistration","_asyncToGenerator2","_regenerator","mark","_callee","deviceId","deviceUrl","_response","response","wrap","_callee$","_context","prev","t0","fetch","t1","DEVICES_ENDPOINT_RESOURCE","t2","HTTP_METHODS","DELETE","t3","t4","t5","t6","CISCO_DEVICE_URL","credentials","getUserToken","t7","sent","t8","t9","WEBEX_WEB_CLIENT","uuid","t10","t11","SPARK_USER_AGENT","t12","CALLING_USER_AGENT","t13","t14","headers","t15","warn","_stringify","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","abrupt","json","stop","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee2","deviceInfo","_callee2$","_context2","clientDeviceUri","request","uri","POST","body","service","ALLOWED_SERVICES","MOBIUS","postRegistration","_x4","_restorePreviousRegistration","_callee3","caller","abort","_callee3$","_context3","attemptRegistrationWithServers","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee4","_callee4$","_context4","KEEPALIVE_UTIL","isDeviceRegistered","startFailoverTimer","handle404KeepaliveFailure","_x6","_handle429Retry","_callee6","retryAfter","_this","interval","_callee6$","_context6","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","restartRegistration","clearKeepaliveTimer","setTimeout","_callee5","_this$deviceInfo$devi","_callee5$","_context5","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","attempt","undefined","BASE_REG_RETRY_TIMER_VAL_IN_SEC","Math","pow","BASE_REG_TIMER_MFACTOR","floor","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee1","_this2","timeElapsed","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args1","_callee1$","_context1","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","_now","max","_callee8","_callee8$","_context8","runExclusive","_callee7","currentTime","_callee7$","_context7","RETRY_TIMER_UPPER_LIMIT","_callee0","_callee0$","_context0","_callee9","_callee9$","_context9","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_isPrimaryActive","_callee10","status","_iterator","_step","mobiusUrl","baseUri","_ref6","statusCode","_callee10$","_context10","replace","URL_ENDPOINT","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this3","_callee11","_callee11$","_context11","executeFailback","_executeFailback","_callee13","_this4","_callee13$","_context13","_callee12","primaryServerStatus","abortNew","_callee12$","_context12","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee14","_callee14$","_context14","_x9","_handleConnectionRestoration","_callee16","retry","_this5","_callee16$","_context16","HANDLE_CONNECTION_RESTORATION","_callee15","_callee15$","_context15","handleConnectionRestoration","_x0","restoreRegistrationCallBack","_this6","_ref0","_callee17","restoreData","logContext","restore","finalError","_callee17$","_context17","isRegRetry","getExistingDevice","setRegRetry","_x1","_x10","_triggerRegistration","_callee18","_callee18$","_context18","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee19","_this7","servers","_iterator2","_step2","_loop","_ret","_args20","_callee19$","_context20","REGISTER_UTIL","_this7$backupMobiusUr","serverType","_this7$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this7$deviceInfo$dev2","resp","_loop$","_context19","includes","CONNECTING","REGISTERED","trackingid","REGISTER","setDeviceInfo","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","_x11","_startKeepaliveTimer","_callee22","_this8","RETRY_COUNT_THRESHOLD","_callee22$","_context23","_callee21","accessToken","blob","blobUrl","_callee21$","_context22","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","String","retryCountThreshold","onmessage","_ref10","_callee20","event","error","_callee20$","_context21","data","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","err","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECTING","_x15","_x12","_x13","_x14","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee23","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_callee23$","_context24","DEREGISTER","registerRetry","devices","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee24","_callee24$","_context25","RECONNECT_ON_FAILURE","_x16","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {emitFinalFailure, handleRegistrationErrors, uploadLogs} from '../../common';\nimport webWorkerStr from './webWorkerStr';\n\nimport {\n IMetricManager,\n METRIC_EVENT,\n METRIC_TYPE,\n REG_ACTION,\n SERVER_TYPE,\n} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {ICallManager} from '../calling/types';\nimport {getCallManager} from '../calling';\nimport {LOGGER} from '../../Logger/types';\nimport log from '../../Logger';\nimport {IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n IDeviceInfo,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DEVICES_ENDPOINT_RESOURCE,\n SPARK_USER_AGENT,\n WEBEX_WEB_CLIENT,\n BASE_REG_RETRY_TIMER_VAL_IN_SEC,\n BASE_REG_TIMER_MFACTOR,\n SEC_TO_MSEC_MFACTOR,\n REG_RANDOM_T_FACTOR_UPPER_LIMIT,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n MINUTES_TO_SEC_MFACTOR,\n REG_429_RETRY_UTIL,\n REG_FAILBACK_429_MAX_RETRIES,\n FAILBACK_UTIL,\n REGISTRATION_FILE,\n DEFAULT_REHOMING_INTERVAL_MIN,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_KEEPALIVE_INTERVAL,\n FAILOVER_UTIL,\n REGISTER_UTIL,\n RETRY_TIMER_UPPER_LIMIT,\n KEEPALIVE_UTIL,\n REGISTRATION_UTIL,\n METHODS,\n URL_ENDPOINT,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\n\n/**\n *\n */\nexport class Registration implements IRegistration {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private userId = '';\n\n private serviceData: ServiceData;\n\n private failback429RetryAttempts: number;\n private registrationStatus: RegistrationStatus;\n private failbackTimer?: NodeJS.Timeout;\n private activeMobiusUrl!: string;\n\n private rehomingIntervalMin: number;\n private rehomingIntervalMax: number;\n private mutex: Mutex;\n private metricManager: IMetricManager;\n private lineEmitter: LineEmitterCallback;\n private callManager: ICallManager;\n private deviceInfo: IDeviceInfo = {};\n private primaryMobiusUris: string[];\n private backupMobiusUris: string[];\n private registerRetry = false;\n private reconnectPending = false;\n private jwe?: string;\n private isCCFlow = false;\n private failoverImmediately = false;\n private retryAfter: number | undefined;\n private scheduled429Retry = false;\n private webWorker: Worker | undefined;\n\n /**\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n ) {\n this.jwe = jwe;\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\n this.isCCFlow = serviceData.indicator === ServiceIndicator.CONTACT_CENTER;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.userId = this.webex.internal.device.userId;\n this.registrationStatus = RegistrationStatus.IDLE;\n this.failback429RetryAttempts = 0;\n log.setLogger(logLevel, REGISTRATION_FILE);\n this.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n this.mutex = mutex;\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n this.lineEmitter = lineEmitter;\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n }\n\n public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`${METHOD_START_MESSAGE} with ${url}`, {\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n file: REGISTRATION_FILE,\n });\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n log.log(METHOD_START_MESSAGE, {method: METHODS.SET_MOBIUS_SERVERS, file: REGISTRATION_FILE});\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of delete device.\n *\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n let response;\n try {\n response = await fetch(`${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`, {\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n Authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${WEBEX_WEB_CLIENT}_${uuid()}`,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n } catch (error) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(error)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DELETE_REGISTRATION,\n });\n\n await uploadLogs();\n }\n\n this.setStatus(RegistrationStatus.INACTIVE);\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n return <WebexRequestPayload>response?.json();\n }\n\n /**\n * Implementation of POST request for device registration.\n *\n */\n private async postRegistration(url: string) {\n const deviceInfo = {\n userId: this.userId,\n clientDeviceUri: this.webex.internal.device.url,\n serviceData: this.jwe ? {...this.serviceData, jwe: this.jwe} : this.serviceData,\n };\n\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}device`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceInfo.clientDeviceUri,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: deviceInfo,\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n /**\n * Re-attempts registration with the mobius url it was last registered\n * to, that mobius url is expected to be updated already in this.activeMobiusUrl.\n */\n private async restorePreviousRegistration(caller: string): Promise<boolean> {\n let abort = false;\n\n if (this.activeMobiusUrl) {\n abort = await this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);\n }\n\n return abort;\n }\n\n /**\n * Callback for handling 404 response from the server for register keepalive\n */\n private async handle404KeepaliveFailure(caller: string): Promise<void> {\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Callback for handling 429 retry response from the server\n */\n private async handle429Retry(retryAfter: number, caller: string): Promise<void> {\n if (caller === FAILBACK_UTIL) {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\n }\n\n this.clearFailbackTimer();\n this.failback429RetryAttempts += 1;\n log.log(`Received 429 while rehoming, 429 retry count : ${this.failback429RetryAttempts}`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n this.scheduled429Retry = true;\n const abort = await this.restorePreviousRegistration(REG_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(REG_429_RETRY_UTIL);\n }\n } else if (caller === KEEPALIVE_UTIL) {\n this.clearKeepaliveTimer();\n setTimeout(async () => {\n log.log(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n\n // Resume the keepalive after waiting for the retry after period\n await this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n }, retryAfter * 1000);\n } else {\n this.retryAfter = retryAfter;\n }\n }\n\n /**\n * Calculates and returns a random interval value using input argument\n * attempt as the variable factor.\n *\n * attempted already.\n */\n private getRegRetryInterval(attempt = 1): number {\n return (\n BASE_REG_RETRY_TIMER_VAL_IN_SEC +\n BASE_REG_TIMER_MFACTOR ** attempt +\n Math.floor(\n (Math.random() * (REG_RANDOM_T_FACTOR_UPPER_LIMIT - SEC_TO_MSEC_MFACTOR + 1) +\n SEC_TO_MSEC_MFACTOR) /\n SEC_TO_MSEC_MFACTOR\n )\n );\n }\n\n /**\n * Schedules registration retry with primary mobius servers at a random\n * interval calculated based on the number of times registration retry is already done\n * Once the time taken since the beginning of retry attempt exceeds the\n * retry threshold, it switches over to backup mobius servers.\n *\n */\n private async startFailoverTimer(attempt = 1, timeElapsed = 0) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n const TIMER_THRESHOLD = REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n if (timeElapsed + interval > TIMER_THRESHOLD) {\n const excessVal = timeElapsed + interval - TIMER_THRESHOLD;\n\n interval -= excessVal;\n }\n\n if (this.retryAfter != null && interval < this.retryAfter) {\n this.failoverImmediately = this.retryAfter + timeElapsed > TIMER_THRESHOLD;\n }\n\n let abort;\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n if (this.retryAfter != null) {\n interval = Math.max(interval, this.retryAfter);\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL);\n const currentTime = Math.floor(Date.now() / 1000);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(\n `Scheduled retry with primary in ${interval} seconds, number of attempts : ${attempt}`,\n loggerContext\n );\n } else if (this.backupMobiusUris.length) {\n log.info('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n\n if (this.retryAfter != null && this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n interval = interval < this.retryAfter ? this.retryAfter : interval;\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(`Scheduled retry with backup servers in ${interval} seconds.`, loggerContext);\n }\n } else {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n }\n\n /**\n * Clears the failback timer if running.\n */\n private clearFailbackTimer() {\n if (this.failbackTimer) {\n clearTimeout(this.failbackTimer);\n this.failbackTimer = undefined;\n }\n }\n\n private async isPrimaryActive() {\n let status;\n for (const mobiusUrl of this.primaryMobiusUris) {\n try {\n const baseUri = mobiusUrl.replace(URL_ENDPOINT, '/');\n // eslint-disable-next-line no-await-in-loop\n const response = await this.webex.request({\n uri: `${baseUri}ping`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n const {statusCode} = response as WebexRequestPayload;\n if (statusCode === 200) {\n log.info(`Ping successful for primary Mobius: ${mobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n status = 'up';\n break;\n }\n } catch (error) {\n log.warn(\n `Ping failed for primary Mobius: ${mobiusUrl} with error: ${JSON.stringify(error)}`,\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n status = 'down';\n }\n }\n\n return status === 'up';\n }\n\n /**\n * Returns true if device is registered with a backup mobius.\n */\n private isFailbackRequired(): boolean {\n return this.isDeviceRegistered() && this.primaryMobiusUris.indexOf(this.activeMobiusUrl) === -1;\n }\n\n /**\n * Calculates and returns a random value between rehomingIntervalMin and\n * rehomingIntervalMax.\n */\n private getFailbackInterval(): number {\n return Math.floor(\n Math.random() * (this.rehomingIntervalMax - this.rehomingIntervalMin + 1) +\n this.rehomingIntervalMin\n );\n }\n\n /**\n * Starts failback timer to move to primary mobius if device\n * is registered with a backup mobius.\n */\n private initiateFailback() {\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n }\n } else {\n this.failback429RetryAttempts = 0;\n this.clearFailbackTimer();\n }\n }\n\n /**\n * Starts failback timer with the interval value received.\n *\n */\n private startFailbackTimer(intervalInSeconds: number) {\n this.failbackTimer = setTimeout(\n async () => this.executeFailback(),\n intervalInSeconds * SEC_TO_MSEC_MFACTOR\n );\n log.log(`Failback scheduled after ${intervalInSeconds} seconds.`, {\n file: REGISTRATION_FILE,\n method: this.startFailbackTimer.name,\n });\n }\n\n /**\n * Core logic for the failback processing, scheduled and executed\n * at failback timer expiry.\n */\n private async executeFailback() {\n await this.mutex.runExclusive(async () => {\n if (this.isFailbackRequired()) {\n const primaryServerStatus = await this.isPrimaryActive();\n if (Object.keys(this.callManager.getActiveCalls()).length === 0 && primaryServerStatus) {\n log.info(`Attempting failback to primary.`, {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n });\n await this.deregister();\n const abort = await this.attemptRegistrationWithServers(FAILBACK_UTIL);\n\n if (this.scheduled429Retry || abort || this.isDeviceRegistered()) {\n return;\n }\n\n const abortNew = await this.restorePreviousRegistration(FAILBACK_UTIL);\n\n if (abortNew) {\n this.clearFailbackTimer();\n\n return;\n }\n\n if (!this.isDeviceRegistered()) {\n await this.restartRegistration(this.executeFailback.name);\n } else {\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n } else {\n log.info(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n }\n );\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n }\n });\n }\n\n /**\n * Updates rehomingIntervalMin and rehomingIntervalMax values\n * if received in registration response from a primary mobius\n * server.\n *\n */\n private setIntervalValues(deviceInfo: IDeviceInfo) {\n if (this.primaryMobiusUris.indexOf(this.activeMobiusUrl) !== -1) {\n this.rehomingIntervalMin = deviceInfo?.rehomingIntervalMin\n ? deviceInfo.rehomingIntervalMin\n : DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = deviceInfo?.rehomingIntervalMax\n ? deviceInfo.rehomingIntervalMax\n : DEFAULT_REHOMING_INTERVAL_MAX;\n }\n }\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n public getDeviceInfo(): IDeviceInfo {\n return this.deviceInfo;\n }\n\n /**\n * Checks if the device is currently registered.\n *\n * by checking if isRegistered state is set to\n * ACTIVE, else false.\n */\n public isDeviceRegistered(): boolean {\n return this.registrationStatus === RegistrationStatus.ACTIVE;\n }\n\n public getStatus(): RegistrationStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: RegistrationStatus) {\n this.registrationStatus = value;\n }\n\n /**\n * Start fresh registration cycle with the mobius\n * server list already present.\n *\n */\n private async restartRegistration(caller: string) {\n /*\n * Cancel any failback timer running\n * and start fresh registration attempt with retry as true.\n */\n this.clearFailbackTimer();\n this.failback429RetryAttempts = 0;\n const abort = await this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n */\n public async handleConnectionRestoration(retry: boolean): Promise<boolean> {\n log.info(METHOD_START_MESSAGE, {\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n file: REGISTRATION_FILE,\n });\n await this.mutex.runExclusive(async () => {\n /* Check retry once again to see if another timer thread has not finished the job already. */\n if (retry) {\n log.log('Network is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n });\n this.clearKeepaliveTimer();\n if (this.isDeviceRegistered()) {\n // eslint-disable-next-line no-await-in-loop\n await this.deregister();\n }\n\n /*\n * Do not attempt registration if mobius url is not set in this.activeMobiusUrl\n * as that'd mean initial registration itself is not finished yet, let\n * failover timer handle the registration in that case.\n */\n if (this.activeMobiusUrl) {\n /*\n * When restoring connectivity, register with same url first\n * where it was registered last even if it was a backup url,\n * because failback timer may already be running to register\n * it back to primary.\n */\n const abort = await this.restorePreviousRegistration(\n METHODS.HANDLE_CONNECTION_RESTORATION\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(METHODS.HANDLE_CONNECTION_RESTORATION);\n }\n }\n retry = false;\n }\n });\n\n return retry;\n }\n\n /**\n * Callback function for restoring registration in case of failure during initial registration\n * due to device registration already exists.\n *\n */\n private restoreRegistrationCallBack() {\n return async (restoreData: IDeviceInfo, caller: string) => {\n const logContext = {file: REGISTRATION_FILE, method: caller};\n if (!this.isRegRetry()) {\n log.info('Registration restoration in progress.', logContext);\n const restore = this.getExistingDevice(restoreData);\n\n if (restore) {\n this.setRegRetry(true);\n await this.deregister();\n const finalError = await this.restorePreviousRegistration(caller);\n this.setRegRetry(false);\n if (this.isDeviceRegistered()) {\n log.info('Registration restored successfully.', logContext);\n }\n\n return finalError;\n }\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n\n return false;\n };\n }\n\n /**\n * Triggers the registration with the given list of Mobius servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n public async triggerRegistration() {\n if (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n REGISTRATION_UTIL,\n this.primaryMobiusUris\n );\n\n if (!this.isDeviceRegistered() && !abort) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Attempts registration with the server list received in\n * argument one by one until registration either succeeds with\n * one or all of them are tried.\n *\n * attempt has hit a final error and a retry should not be scheduled\n * else false.\n */\n private async attemptRegistrationWithServers(\n caller: string,\n servers: string[] = this.primaryMobiusUris\n ): Promise<boolean> {\n let abort = false;\n this.retryAfter = undefined;\n\n if (this.failoverImmediately) {\n return abort;\n }\n\n if (this.isDeviceRegistered()) {\n log.info(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n\n return abort;\n }\n for (const url of servers) {\n const serverType =\n (this.primaryMobiusUris.includes(url) && 'PRIMARY') ||\n (this.backupMobiusUris?.includes(url) && 'BACKUP') ||\n 'UNKNOWN';\n try {\n abort = false;\n this.registrationStatus = RegistrationStatus.INACTIVE;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.info(`[${caller}] : Mobius url to contact: ${url}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.setActiveMobiusUrl(url);\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n log.log(\n `Registration successful for deviceId: ${this.deviceInfo.device?.deviceId} userId: ${this.userId} responseTrackingId: ${resp.headers?.trackingid}`,\n {\n file: REGISTRATION_FILE,\n method: METHODS.REGISTER,\n }\n );\n this.setIntervalValues(this.deviceInfo);\n this.metricManager.setDeviceInfo(this.deviceInfo);\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n resp.headers?.trackingid ?? '',\n undefined,\n undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n serverType\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars\n abort = await handleRegistrationErrors(\n body,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n body.headers?.trackingid ?? '',\n undefined,\n clientError\n );\n },\n {method: caller, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) => this.handle429Retry(retryAfter, retryCaller),\n this.restoreRegistrationCallBack()\n );\n if (this.registrationStatus === RegistrationStatus.ACTIVE) {\n log.info(\n `[${caller}] : Device is already restored, active mobius url: ${this.activeMobiusUrl}`,\n {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n }\n );\n break;\n }\n if (abort) {\n this.setStatus(RegistrationStatus.INACTIVE);\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n\n break;\n }\n }\n }\n\n return abort;\n }\n\n /**\n * This method sets up a timer to periodically send keep-alive requests to maintain a connection.\n * It handles retries, error handling, and re-registration attempts based on the response, ensuring continuous connectivity with the server.\n */\n private async startKeepaliveTimer(url: string, interval: number, serverType: SERVER_TYPE) {\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered()) {\n const accessToken = await this.webex.credentials.getUserToken();\n\n if (!this.webWorker) {\n const blob = new Blob([webWorkerStr], {type: 'application/javascript'});\n const blobUrl = URL.createObjectURL(blob);\n this.webWorker = new Worker(blobUrl);\n URL.revokeObjectURL(blobUrl);\n\n this.webWorker.postMessage({\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: String(accessToken),\n deviceUrl: String(this.webex.internal.device.url),\n interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\n url,\n });\n\n this.webWorker.onmessage = async (event: MessageEvent) => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n };\n if (event.data.type === WorkerMessageType.KEEPALIVE_SUCCESS) {\n log.info(`Sent Keepalive, status: ${event.data.statusCode}`, logContext);\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n\n if (event.data.type === WorkerMessageType.KEEPALIVE_FAILURE) {\n const error = <WebexRequestPayload>event.data.err;\n log.warn(\n `Keep-alive missed ${event.data.keepAliveRetryCount} times. Status -> ${error.statusCode} `,\n logContext\n );\n\n const abort = await handleRegistrationErrors(\n error,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }\n\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n KEEPALIVE_UTIL,\n serverType,\n error.headers?.trackingid ?? '',\n event.data.keepAliveRetryCount,\n clientError\n );\n },\n {method: KEEPALIVE_UTIL, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) =>\n this.handle429Retry(retryAfter, retryCaller)\n );\n\n if (abort || event.data.keepAliveRetryCount >= RETRY_COUNT_THRESHOLD) {\n this.failoverImmediately = this.isCCFlow;\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n await uploadLogs();\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(KEEPALIVE_UTIL);\n } else if (error.statusCode === 404) {\n this.handle404KeepaliveFailure(KEEPALIVE_UTIL);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n };\n }\n }\n });\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.webWorker) {\n this.webWorker.postMessage({type: WorkerMessageType.CLEAR_KEEPALIVE});\n this.webWorker.terminate();\n this.webWorker = undefined;\n }\n }\n\n public isReconnectPending(): boolean {\n return this.reconnectPending;\n }\n\n public async deregister() {\n try {\n await this.deleteRegistration(\n this.activeMobiusUrl as string,\n this.deviceInfo.device?.deviceId as string,\n this.deviceInfo.device?.clientDeviceUri as string\n );\n log.log('Registration successfully deregistered', {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n } catch (err) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(err)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(RegistrationStatus.INACTIVE);\n }\n\n /**\n * Indicates whether the calling client is in a mode\n * to retry registration.\n */\n private isRegRetry(): boolean {\n return this.registerRetry;\n }\n\n /**\n * Sets the received value in instance variable\n * registerRetry for registration retry cases.\n *\n */\n private setRegRetry(value: boolean) {\n this.registerRetry = value;\n }\n\n /**\n * Restores the deviceInfo object in callingClient when receiving a 403 with error code 101.\n *\n */\n private getExistingDevice(restoreData: IDeviceInfo) {\n if (restoreData.devices && restoreData.devices.length > 0) {\n this.deviceInfo = {\n userId: restoreData.userId,\n device: restoreData.devices[0],\n keepaliveInterval: DEFAULT_KEEPALIVE_INTERVAL,\n rehomingIntervalMax: DEFAULT_REHOMING_INTERVAL_MAX,\n rehomingIntervalMin: DEFAULT_REHOMING_INTERVAL_MIN,\n };\n\n const stringToReplace = `${DEVICES_ENDPOINT_RESOURCE}/${restoreData.devices[0].deviceId}`;\n\n const uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n this.setActiveMobiusUrl(uri);\n this.registrationStatus = RegistrationStatus.ACTIVE;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Invoked to re-register in cases when the registration\n * is lost due to some failure.\n * If there are active calls, it will only mark reconnectPending\n * as true and then retry will happen when this method gets\n * invoked again on receiving all calls cleared event from\n * callManager.\n *\n */\n public async reconnectOnFailure(caller: string) {\n log.info(METHOD_START_MESSAGE, {method: METHODS.RECONNECT_ON_FAILURE, file: REGISTRATION_FILE});\n this.reconnectPending = false;\n if (!this.isDeviceRegistered()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n const abort = await this.restorePreviousRegistration(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(caller);\n }\n } else {\n this.reconnectPending = true;\n log.info('Active call(s) present, deferred reconnect till call cleanup.', {\n file: REGISTRATION_FILE,\n method: METHODS.RECONNECT_ON_FAILURE,\n });\n }\n }\n }\n}\n\n/*\n */\nexport const createRegistration = (\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_uuid","require","_constants","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Registration","exports","webex","serviceData","mutex","lineEmitter","logLevel","jwe","_classCallCheck2","sdkConnector","SDKConnector","isCCFlow","indicator","ServiceIndicator","CONTACT_CENTER","getWebex","setWebex","userId","internal","device","registrationStatus","RegistrationStatus","IDLE","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","_createClass2","key","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","concat","METHOD_START_MESSAGE","method","METHODS","UPDATE_ACTIVE_MOBIUS","file","updateActiveMobius","setMobiusServers","SET_MOBIUS_SERVERS","_deleteRegistration","_asyncToGenerator2","_regenerator","mark","_callee","deviceId","deviceUrl","_response","response","wrap","_callee$","_context","prev","t0","fetch","t1","DEVICES_ENDPOINT_RESOURCE","t2","HTTP_METHODS","DELETE","t3","t4","t5","t6","CISCO_DEVICE_URL","credentials","getUserToken","t7","sent","t8","t9","WEBEX_WEB_CLIENT","uuid","t10","t11","SPARK_USER_AGENT","t12","CALLING_USER_AGENT","t13","t14","headers","t15","warn","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","abrupt","json","stop","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee2","deviceInfo","_callee2$","_context2","clientDeviceUri","request","uri","POST","body","service","ALLOWED_SERVICES","MOBIUS","postRegistration","_x4","_restorePreviousRegistration","_callee3","caller","abort","_callee3$","_context3","attemptRegistrationWithServers","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee4","_callee4$","_context4","KEEPALIVE_UTIL","isDeviceRegistered","startFailoverTimer","handle404KeepaliveFailure","_x6","_handle429Retry","_callee6","retryAfter","_this","interval","_callee6$","_context6","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","restartRegistration","clearKeepaliveTimer","setTimeout","_callee5","_this$deviceInfo$devi","_callee5$","_context5","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","attempt","undefined","BASE_REG_RETRY_TIMER_VAL_IN_SEC","Math","pow","BASE_REG_TIMER_MFACTOR","floor","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee1","_this2","timeElapsed","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args1","_callee1$","_context1","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","_now","max","_callee8","_callee8$","_context8","runExclusive","_callee7","currentTime","_callee7$","_context7","RETRY_TIMER_UPPER_LIMIT","_callee0","_callee0$","_context0","_callee9","_callee9$","_context9","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_isPrimaryActive","_callee10","status","_iterator","_step","mobiusUrl","baseUri","_ref6","statusCode","_callee10$","_context10","replace","URL_ENDPOINT","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this3","_callee11","_callee11$","_context11","executeFailback","_executeFailback","_callee13","_this4","_callee13$","_context13","_callee12","primaryServerStatus","abortNew","_callee12$","_context12","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee14","_callee14$","_context14","_x9","_handleConnectionRestoration","_callee16","retry","_this5","_callee16$","_context16","HANDLE_CONNECTION_RESTORATION","_callee15","_callee15$","_context15","handleConnectionRestoration","_x0","restoreRegistrationCallBack","_this6","_ref0","_callee17","restoreData","logContext","restore","finalError","_callee17$","_context17","isRegRetry","getExistingDevice","setRegRetry","_x1","_x10","_triggerRegistration","_callee18","_callee18$","_context18","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee19","_this7","servers","_iterator2","_step2","_loop","_ret","_args20","_callee19$","_context20","REGISTER_UTIL","_this7$backupMobiusUr","serverType","_this7$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this7$deviceInfo$dev2","resp","_loop$","_context19","includes","CONNECTING","REGISTERED","trackingid","REGISTER","setDeviceInfo","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","_x11","_startKeepaliveTimer","_callee22","_this8","RETRY_COUNT_THRESHOLD","_callee22$","_context23","_callee21","accessToken","blob","blobUrl","_callee21$","_context22","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","String","retryCountThreshold","onmessage","_ref10","_callee20","event","error","_callee20$","_context21","data","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","err","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECTING","_x15","_x12","_x13","_x14","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee23","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_callee23$","_context24","DEREGISTER","registerRetry","devices","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee24","_callee24$","_context25","RECONNECT_ON_FAILURE","_x16","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {emitFinalFailure, handleRegistrationErrors, uploadLogs} from '../../common';\nimport webWorkerStr from './webWorkerStr';\n\nimport {\n IMetricManager,\n METRIC_EVENT,\n METRIC_TYPE,\n REG_ACTION,\n SERVER_TYPE,\n} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {ICallManager} from '../calling/types';\nimport {getCallManager} from '../calling';\nimport {LOGGER} from '../../Logger/types';\nimport log from '../../Logger';\nimport {IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n IDeviceInfo,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DEVICES_ENDPOINT_RESOURCE,\n SPARK_USER_AGENT,\n WEBEX_WEB_CLIENT,\n BASE_REG_RETRY_TIMER_VAL_IN_SEC,\n BASE_REG_TIMER_MFACTOR,\n SEC_TO_MSEC_MFACTOR,\n REG_RANDOM_T_FACTOR_UPPER_LIMIT,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n MINUTES_TO_SEC_MFACTOR,\n REG_429_RETRY_UTIL,\n REG_FAILBACK_429_MAX_RETRIES,\n FAILBACK_UTIL,\n REGISTRATION_FILE,\n DEFAULT_REHOMING_INTERVAL_MIN,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_KEEPALIVE_INTERVAL,\n FAILOVER_UTIL,\n REGISTER_UTIL,\n RETRY_TIMER_UPPER_LIMIT,\n KEEPALIVE_UTIL,\n REGISTRATION_UTIL,\n METHODS,\n URL_ENDPOINT,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\n\n/**\n *\n */\nexport class Registration implements IRegistration {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private userId = '';\n\n private serviceData: ServiceData;\n\n private failback429RetryAttempts: number;\n private registrationStatus: RegistrationStatus;\n private failbackTimer?: NodeJS.Timeout;\n private activeMobiusUrl!: string;\n\n private rehomingIntervalMin: number;\n private rehomingIntervalMax: number;\n private mutex: Mutex;\n private metricManager: IMetricManager;\n private lineEmitter: LineEmitterCallback;\n private callManager: ICallManager;\n private deviceInfo: IDeviceInfo = {};\n private primaryMobiusUris: string[];\n private backupMobiusUris: string[];\n private registerRetry = false;\n private reconnectPending = false;\n private jwe?: string;\n private isCCFlow = false;\n private failoverImmediately = false;\n private retryAfter: number | undefined;\n private scheduled429Retry = false;\n private webWorker: Worker | undefined;\n\n /**\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n ) {\n this.jwe = jwe;\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\n this.isCCFlow = serviceData.indicator === ServiceIndicator.CONTACT_CENTER;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.userId = this.webex.internal.device.userId;\n this.registrationStatus = RegistrationStatus.IDLE;\n this.failback429RetryAttempts = 0;\n log.setLogger(logLevel, REGISTRATION_FILE);\n this.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n this.mutex = mutex;\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n this.lineEmitter = lineEmitter;\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n }\n\n public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`${METHOD_START_MESSAGE} with ${url}`, {\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n file: REGISTRATION_FILE,\n });\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n log.log(METHOD_START_MESSAGE, {method: METHODS.SET_MOBIUS_SERVERS, file: REGISTRATION_FILE});\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of delete device.\n *\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n let response;\n try {\n response = await fetch(`${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`, {\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n Authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${WEBEX_WEB_CLIENT}_${uuid()}`,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n } catch (error) {\n log.warn(`Delete failed with Mobius ${error}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DELETE_REGISTRATION,\n });\n\n await uploadLogs();\n }\n\n this.setStatus(RegistrationStatus.INACTIVE);\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n return <WebexRequestPayload>response?.json();\n }\n\n /**\n * Implementation of POST request for device registration.\n *\n */\n private async postRegistration(url: string) {\n const deviceInfo = {\n userId: this.userId,\n clientDeviceUri: this.webex.internal.device.url,\n serviceData: this.jwe ? {...this.serviceData, jwe: this.jwe} : this.serviceData,\n };\n\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}device`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceInfo.clientDeviceUri,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: deviceInfo,\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n /**\n * Re-attempts registration with the mobius url it was last registered\n * to, that mobius url is expected to be updated already in this.activeMobiusUrl.\n */\n private async restorePreviousRegistration(caller: string): Promise<boolean> {\n let abort = false;\n\n if (this.activeMobiusUrl) {\n abort = await this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);\n }\n\n return abort;\n }\n\n /**\n * Callback for handling 404 response from the server for register keepalive\n */\n private async handle404KeepaliveFailure(caller: string): Promise<void> {\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Callback for handling 429 retry response from the server\n */\n private async handle429Retry(retryAfter: number, caller: string): Promise<void> {\n if (caller === FAILBACK_UTIL) {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\n }\n\n this.clearFailbackTimer();\n this.failback429RetryAttempts += 1;\n log.log(`Received 429 while rehoming, 429 retry count : ${this.failback429RetryAttempts}`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n this.scheduled429Retry = true;\n const abort = await this.restorePreviousRegistration(REG_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(REG_429_RETRY_UTIL);\n }\n } else if (caller === KEEPALIVE_UTIL) {\n this.clearKeepaliveTimer();\n setTimeout(async () => {\n log.log(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n\n // Resume the keepalive after waiting for the retry after period\n await this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n }, retryAfter * 1000);\n } else {\n this.retryAfter = retryAfter;\n }\n }\n\n /**\n * Calculates and returns a random interval value using input argument\n * attempt as the variable factor.\n *\n * attempted already.\n */\n private getRegRetryInterval(attempt = 1): number {\n return (\n BASE_REG_RETRY_TIMER_VAL_IN_SEC +\n BASE_REG_TIMER_MFACTOR ** attempt +\n Math.floor(\n (Math.random() * (REG_RANDOM_T_FACTOR_UPPER_LIMIT - SEC_TO_MSEC_MFACTOR + 1) +\n SEC_TO_MSEC_MFACTOR) /\n SEC_TO_MSEC_MFACTOR\n )\n );\n }\n\n /**\n * Schedules registration retry with primary mobius servers at a random\n * interval calculated based on the number of times registration retry is already done\n * Once the time taken since the beginning of retry attempt exceeds the\n * retry threshold, it switches over to backup mobius servers.\n *\n */\n private async startFailoverTimer(attempt = 1, timeElapsed = 0) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n const TIMER_THRESHOLD = REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n if (timeElapsed + interval > TIMER_THRESHOLD) {\n const excessVal = timeElapsed + interval - TIMER_THRESHOLD;\n\n interval -= excessVal;\n }\n\n if (this.retryAfter != null && interval < this.retryAfter) {\n this.failoverImmediately = this.retryAfter + timeElapsed > TIMER_THRESHOLD;\n }\n\n let abort;\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n if (this.retryAfter != null) {\n interval = Math.max(interval, this.retryAfter);\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL);\n const currentTime = Math.floor(Date.now() / 1000);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(\n `Scheduled retry with primary in ${interval} seconds, number of attempts : ${attempt}`,\n loggerContext\n );\n } else if (this.backupMobiusUris.length) {\n log.info('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n\n if (this.retryAfter != null && this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n interval = interval < this.retryAfter ? this.retryAfter : interval;\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(`Scheduled retry with backup servers in ${interval} seconds.`, loggerContext);\n }\n } else {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n }\n\n /**\n * Clears the failback timer if running.\n */\n private clearFailbackTimer() {\n if (this.failbackTimer) {\n clearTimeout(this.failbackTimer);\n this.failbackTimer = undefined;\n }\n }\n\n private async isPrimaryActive() {\n let status;\n for (const mobiusUrl of this.primaryMobiusUris) {\n try {\n const baseUri = mobiusUrl.replace(URL_ENDPOINT, '/');\n // eslint-disable-next-line no-await-in-loop\n const response = await this.webex.request({\n uri: `${baseUri}ping`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n const {statusCode} = response as WebexRequestPayload;\n if (statusCode === 200) {\n log.info(`Ping successful for primary Mobius: ${mobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n status = 'up';\n break;\n }\n } catch (error) {\n log.warn(`Ping failed for primary Mobius: ${mobiusUrl} with error: ${error}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n status = 'down';\n }\n }\n\n return status === 'up';\n }\n\n /**\n * Returns true if device is registered with a backup mobius.\n */\n private isFailbackRequired(): boolean {\n return this.isDeviceRegistered() && this.primaryMobiusUris.indexOf(this.activeMobiusUrl) === -1;\n }\n\n /**\n * Calculates and returns a random value between rehomingIntervalMin and\n * rehomingIntervalMax.\n */\n private getFailbackInterval(): number {\n return Math.floor(\n Math.random() * (this.rehomingIntervalMax - this.rehomingIntervalMin + 1) +\n this.rehomingIntervalMin\n );\n }\n\n /**\n * Starts failback timer to move to primary mobius if device\n * is registered with a backup mobius.\n */\n private initiateFailback() {\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n }\n } else {\n this.failback429RetryAttempts = 0;\n this.clearFailbackTimer();\n }\n }\n\n /**\n * Starts failback timer with the interval value received.\n *\n */\n private startFailbackTimer(intervalInSeconds: number) {\n this.failbackTimer = setTimeout(\n async () => this.executeFailback(),\n intervalInSeconds * SEC_TO_MSEC_MFACTOR\n );\n log.log(`Failback scheduled after ${intervalInSeconds} seconds.`, {\n file: REGISTRATION_FILE,\n method: this.startFailbackTimer.name,\n });\n }\n\n /**\n * Core logic for the failback processing, scheduled and executed\n * at failback timer expiry.\n */\n private async executeFailback() {\n await this.mutex.runExclusive(async () => {\n if (this.isFailbackRequired()) {\n const primaryServerStatus = await this.isPrimaryActive();\n if (Object.keys(this.callManager.getActiveCalls()).length === 0 && primaryServerStatus) {\n log.info(`Attempting failback to primary.`, {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n });\n await this.deregister();\n const abort = await this.attemptRegistrationWithServers(FAILBACK_UTIL);\n\n if (this.scheduled429Retry || abort || this.isDeviceRegistered()) {\n return;\n }\n\n const abortNew = await this.restorePreviousRegistration(FAILBACK_UTIL);\n\n if (abortNew) {\n this.clearFailbackTimer();\n\n return;\n }\n\n if (!this.isDeviceRegistered()) {\n await this.restartRegistration(this.executeFailback.name);\n } else {\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n } else {\n log.info(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n }\n );\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n }\n });\n }\n\n /**\n * Updates rehomingIntervalMin and rehomingIntervalMax values\n * if received in registration response from a primary mobius\n * server.\n *\n */\n private setIntervalValues(deviceInfo: IDeviceInfo) {\n if (this.primaryMobiusUris.indexOf(this.activeMobiusUrl) !== -1) {\n this.rehomingIntervalMin = deviceInfo?.rehomingIntervalMin\n ? deviceInfo.rehomingIntervalMin\n : DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = deviceInfo?.rehomingIntervalMax\n ? deviceInfo.rehomingIntervalMax\n : DEFAULT_REHOMING_INTERVAL_MAX;\n }\n }\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n public getDeviceInfo(): IDeviceInfo {\n return this.deviceInfo;\n }\n\n /**\n * Checks if the device is currently registered.\n *\n * by checking if isRegistered state is set to\n * ACTIVE, else false.\n */\n public isDeviceRegistered(): boolean {\n return this.registrationStatus === RegistrationStatus.ACTIVE;\n }\n\n public getStatus(): RegistrationStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: RegistrationStatus) {\n this.registrationStatus = value;\n }\n\n /**\n * Start fresh registration cycle with the mobius\n * server list already present.\n *\n */\n private async restartRegistration(caller: string) {\n /*\n * Cancel any failback timer running\n * and start fresh registration attempt with retry as true.\n */\n this.clearFailbackTimer();\n this.failback429RetryAttempts = 0;\n const abort = await this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n */\n public async handleConnectionRestoration(retry: boolean): Promise<boolean> {\n log.info(METHOD_START_MESSAGE, {\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n file: REGISTRATION_FILE,\n });\n await this.mutex.runExclusive(async () => {\n /* Check retry once again to see if another timer thread has not finished the job already. */\n if (retry) {\n log.log('Network is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n });\n this.clearKeepaliveTimer();\n if (this.isDeviceRegistered()) {\n // eslint-disable-next-line no-await-in-loop\n await this.deregister();\n }\n\n /*\n * Do not attempt registration if mobius url is not set in this.activeMobiusUrl\n * as that'd mean initial registration itself is not finished yet, let\n * failover timer handle the registration in that case.\n */\n if (this.activeMobiusUrl) {\n /*\n * When restoring connectivity, register with same url first\n * where it was registered last even if it was a backup url,\n * because failback timer may already be running to register\n * it back to primary.\n */\n const abort = await this.restorePreviousRegistration(\n METHODS.HANDLE_CONNECTION_RESTORATION\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(METHODS.HANDLE_CONNECTION_RESTORATION);\n }\n }\n retry = false;\n }\n });\n\n return retry;\n }\n\n /**\n * Callback function for restoring registration in case of failure during initial registration\n * due to device registration already exists.\n *\n */\n private restoreRegistrationCallBack() {\n return async (restoreData: IDeviceInfo, caller: string) => {\n const logContext = {file: REGISTRATION_FILE, method: caller};\n if (!this.isRegRetry()) {\n log.info('Registration restoration in progress.', logContext);\n const restore = this.getExistingDevice(restoreData);\n\n if (restore) {\n this.setRegRetry(true);\n await this.deregister();\n const finalError = await this.restorePreviousRegistration(caller);\n this.setRegRetry(false);\n if (this.isDeviceRegistered()) {\n log.info('Registration restored successfully.', logContext);\n }\n\n return finalError;\n }\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n\n return false;\n };\n }\n\n /**\n * Triggers the registration with the given list of Mobius servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n public async triggerRegistration() {\n if (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n REGISTRATION_UTIL,\n this.primaryMobiusUris\n );\n\n if (!this.isDeviceRegistered() && !abort) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Attempts registration with the server list received in\n * argument one by one until registration either succeeds with\n * one or all of them are tried.\n *\n * attempt has hit a final error and a retry should not be scheduled\n * else false.\n */\n private async attemptRegistrationWithServers(\n caller: string,\n servers: string[] = this.primaryMobiusUris\n ): Promise<boolean> {\n let abort = false;\n this.retryAfter = undefined;\n\n if (this.failoverImmediately) {\n return abort;\n }\n\n if (this.isDeviceRegistered()) {\n log.info(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n\n return abort;\n }\n for (const url of servers) {\n const serverType =\n (this.primaryMobiusUris.includes(url) && 'PRIMARY') ||\n (this.backupMobiusUris?.includes(url) && 'BACKUP') ||\n 'UNKNOWN';\n try {\n abort = false;\n this.registrationStatus = RegistrationStatus.INACTIVE;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.info(`[${caller}] : Mobius url to contact: ${url}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.setActiveMobiusUrl(url);\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n log.log(\n `Registration successful for deviceId: ${this.deviceInfo.device?.deviceId} userId: ${this.userId} responseTrackingId: ${resp.headers?.trackingid}`,\n {\n file: REGISTRATION_FILE,\n method: METHODS.REGISTER,\n }\n );\n this.setIntervalValues(this.deviceInfo);\n this.metricManager.setDeviceInfo(this.deviceInfo);\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n resp.headers?.trackingid ?? '',\n undefined,\n undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n serverType\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars\n abort = await handleRegistrationErrors(\n body,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n body.headers?.trackingid ?? '',\n undefined,\n clientError\n );\n },\n {method: caller, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) => this.handle429Retry(retryAfter, retryCaller),\n this.restoreRegistrationCallBack()\n );\n if (this.registrationStatus === RegistrationStatus.ACTIVE) {\n log.info(\n `[${caller}] : Device is already restored, active mobius url: ${this.activeMobiusUrl}`,\n {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n }\n );\n break;\n }\n if (abort) {\n this.setStatus(RegistrationStatus.INACTIVE);\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n\n break;\n }\n }\n }\n\n return abort;\n }\n\n /**\n * This method sets up a timer to periodically send keep-alive requests to maintain a connection.\n * It handles retries, error handling, and re-registration attempts based on the response, ensuring continuous connectivity with the server.\n */\n private async startKeepaliveTimer(url: string, interval: number, serverType: SERVER_TYPE) {\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered()) {\n const accessToken = await this.webex.credentials.getUserToken();\n\n if (!this.webWorker) {\n const blob = new Blob([webWorkerStr], {type: 'application/javascript'});\n const blobUrl = URL.createObjectURL(blob);\n this.webWorker = new Worker(blobUrl);\n URL.revokeObjectURL(blobUrl);\n\n this.webWorker.postMessage({\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: String(accessToken),\n deviceUrl: String(this.webex.internal.device.url),\n interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\n url,\n });\n\n this.webWorker.onmessage = async (event: MessageEvent) => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n };\n if (event.data.type === WorkerMessageType.KEEPALIVE_SUCCESS) {\n log.info(`Sent Keepalive, status: ${event.data.statusCode}`, logContext);\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n\n if (event.data.type === WorkerMessageType.KEEPALIVE_FAILURE) {\n const error = <WebexRequestPayload>event.data.err;\n log.warn(\n `Keep-alive missed ${event.data.keepAliveRetryCount} times. Status -> ${error.statusCode} `,\n logContext\n );\n\n const abort = await handleRegistrationErrors(\n error,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }\n\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n KEEPALIVE_UTIL,\n serverType,\n error.headers?.trackingid ?? '',\n event.data.keepAliveRetryCount,\n clientError\n );\n },\n {method: KEEPALIVE_UTIL, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) =>\n this.handle429Retry(retryAfter, retryCaller)\n );\n\n if (abort || event.data.keepAliveRetryCount >= RETRY_COUNT_THRESHOLD) {\n this.failoverImmediately = this.isCCFlow;\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n await uploadLogs();\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(KEEPALIVE_UTIL);\n } else if (error.statusCode === 404) {\n this.handle404KeepaliveFailure(KEEPALIVE_UTIL);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n };\n }\n }\n });\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.webWorker) {\n this.webWorker.postMessage({type: WorkerMessageType.CLEAR_KEEPALIVE});\n this.webWorker.terminate();\n this.webWorker = undefined;\n }\n }\n\n public isReconnectPending(): boolean {\n return this.reconnectPending;\n }\n\n public async deregister() {\n try {\n await this.deleteRegistration(\n this.activeMobiusUrl as string,\n this.deviceInfo.device?.deviceId as string,\n this.deviceInfo.device?.clientDeviceUri as string\n );\n log.log('Registration successfully deregistered', {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n } catch (err) {\n log.warn(`Delete failed with Mobius: ${err}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(RegistrationStatus.INACTIVE);\n }\n\n /**\n * Indicates whether the calling client is in a mode\n * to retry registration.\n */\n private isRegRetry(): boolean {\n return this.registerRetry;\n }\n\n /**\n * Sets the received value in instance variable\n * registerRetry for registration retry cases.\n *\n */\n private setRegRetry(value: boolean) {\n this.registerRetry = value;\n }\n\n /**\n * Restores the deviceInfo object in callingClient when receiving a 403 with error code 101.\n *\n */\n private getExistingDevice(restoreData: IDeviceInfo) {\n if (restoreData.devices && restoreData.devices.length > 0) {\n this.deviceInfo = {\n userId: restoreData.userId,\n device: restoreData.devices[0],\n keepaliveInterval: DEFAULT_KEEPALIVE_INTERVAL,\n rehomingIntervalMax: DEFAULT_REHOMING_INTERVAL_MAX,\n rehomingIntervalMin: DEFAULT_REHOMING_INTERVAL_MIN,\n };\n\n const stringToReplace = `${DEVICES_ENDPOINT_RESOURCE}/${restoreData.devices[0].deviceId}`;\n\n const uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n this.setActiveMobiusUrl(uri);\n this.registrationStatus = RegistrationStatus.ACTIVE;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Invoked to re-register in cases when the registration\n * is lost due to some failure.\n * If there are active calls, it will only mark reconnectPending\n * as true and then retry will happen when this method gets\n * invoked again on receiving all calls cleared event from\n * callManager.\n *\n */\n public async reconnectOnFailure(caller: string) {\n log.info(METHOD_START_MESSAGE, {method: METHODS.RECONNECT_ON_FAILURE, file: REGISTRATION_FILE});\n this.reconnectPending = false;\n if (!this.isDeviceRegistered()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n const abort = await this.restorePreviousRegistration(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(caller);\n }\n } else {\n this.reconnectPending = true;\n log.info('Active call(s) present, deferred reconnect till call cleanup.', {\n file: REGISTRATION_FILE,\n method: METHODS.RECONNECT_ON_FAILURE,\n });\n }\n }\n }\n}\n\n/*\n */\nexport const createRegistration = (\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe);\n"],"mappings":"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","ignoreList":[]}
@@ -63,7 +63,7 @@ var messageHandler = function messageHandler(event) {
63
63
  keepaliveTimer = undefined;
64
64
  }
65
65
  keepaliveTimer = setInterval(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
66
- var res, statusCode, _err$headers, _err$headers2, headers, error;
66
+ var res, statusCode, headers, error;
67
67
  return _regenerator.default.wrap(function _callee2$(_context2) {
68
68
  while (1) switch (_context2.prev = _context2.next) {
69
69
  case 0:
@@ -90,10 +90,10 @@ var messageHandler = function messageHandler(event) {
90
90
  _context2.prev = 10;
91
91
  _context2.t0 = _context2["catch"](1);
92
92
  headers = {};
93
- if ((_err$headers = _context2.t0.headers) !== null && _err$headers !== void 0 && _err$headers.has('Retry-After')) {
93
+ if (_context2.t0.headers.has('Retry-After')) {
94
94
  headers['retry-after'] = _context2.t0.headers.get('Retry-After');
95
95
  }
96
- if ((_err$headers2 = _context2.t0.headers) !== null && _err$headers2 !== void 0 && _err$headers2.has('Trackingid')) {
96
+ if (_context2.t0.headers.has('Trackingid')) {
97
97
  // eslint-disable-next-line dot-notation
98
98
  headers['trackingid'] = _context2.t0.headers.get('Trackingid');
99
99
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","require","_types","keepaliveTimer","messageHandler","event","type","data","postKeepAlive","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","accessToken","deviceUrl","url","response","wrap","_callee$","_context","prev","next","fetch","concat","method","HTTP_METHODS","POST","headers","Authorization","trackingId","uuid","sent","ok","abrupt","stop","_x","_x2","_x3","apply","arguments","WorkerMessageType","START_KEEPALIVE","keepAliveRetryCount","_event$data","interval","retryCountThreshold","clearInterval","undefined","setInterval","_callee2","res","statusCode","_err$headers","_err$headers2","error","_callee2$","_context2","status","postMessage","KEEPALIVE_SUCCESS","t0","has","get","statusText","KEEPALIVE_FAILURE","err","CLEAR_KEEPALIVE","self","addEventListener","_default","exports"],"sources":["webWorker.ts"],"sourcesContent":["/* eslint-env worker */\nimport {v4 as uuid} from 'uuid';\nimport {HTTP_METHODS, KeepaliveStatusMessage, WorkerMessageType} from '../../common/types';\n\nlet keepaliveTimer: NodeJS.Timeout | undefined;\n\nconst messageHandler = (event: MessageEvent) => {\n const {type} = event.data;\n\n const postKeepAlive = async (accessToken: string, deviceUrl: string, url: string) => {\n const response = await fetch(`${url}/status`, {\n method: HTTP_METHODS.POST,\n headers: {\n 'cisco-device-url': deviceUrl,\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: `${accessToken}`,\n trackingId: `web_worker_${uuid()}`,\n },\n });\n\n if (!response.ok) {\n throw response;\n }\n\n return response;\n };\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n let keepAliveRetryCount = 0;\n const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;\n\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n\n keepaliveTimer = setInterval(async () => {\n if (keepAliveRetryCount < retryCountThreshold) {\n try {\n const res = await postKeepAlive(accessToken, deviceUrl, url);\n const statusCode = res.status;\n if (keepAliveRetryCount > 0) {\n postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode,\n } as KeepaliveStatusMessage);\n }\n keepAliveRetryCount = 0;\n } catch (err: any) {\n const headers = {} as Record<string, string>;\n if (err.headers?.has('Retry-After')) {\n headers['retry-after'] = err.headers.get('Retry-After');\n }\n\n if (err.headers?.has('Trackingid')) {\n // eslint-disable-next-line dot-notation\n headers['trackingid'] = err.headers.get('Trackingid');\n }\n\n const error = {\n headers,\n statusCode: err.status,\n statusText: err.statusText,\n type: err.type,\n };\n keepAliveRetryCount += 1;\n postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: error,\n keepAliveRetryCount,\n } as KeepaliveStatusMessage);\n }\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n }\n};\n\n// eslint-disable-next-line no-restricted-globals\nself.addEventListener('message', messageHandler);\nexport default messageHandler;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_uuid","require","_types","keepaliveTimer","messageHandler","event","type","data","postKeepAlive","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","accessToken","deviceUrl","url","response","wrap","_callee$","_context","prev","next","fetch","concat","method","HTTP_METHODS","POST","headers","Authorization","trackingId","uuid","sent","ok","abrupt","stop","_x","_x2","_x3","apply","arguments","WorkerMessageType","START_KEEPALIVE","keepAliveRetryCount","_event$data","interval","retryCountThreshold","clearInterval","undefined","setInterval","_callee2","res","statusCode","error","_callee2$","_context2","status","postMessage","KEEPALIVE_SUCCESS","t0","has","get","statusText","KEEPALIVE_FAILURE","err","CLEAR_KEEPALIVE","self","addEventListener","_default","exports"],"sources":["webWorker.ts"],"sourcesContent":["/* eslint-env worker */\nimport {v4 as uuid} from 'uuid';\nimport {HTTP_METHODS, KeepaliveStatusMessage, WorkerMessageType} from '../../common/types';\n\nlet keepaliveTimer: NodeJS.Timeout | undefined;\n\nconst messageHandler = (event: MessageEvent) => {\n const {type} = event.data;\n\n const postKeepAlive = async (accessToken: string, deviceUrl: string, url: string) => {\n const response = await fetch(`${url}/status`, {\n method: HTTP_METHODS.POST,\n headers: {\n 'cisco-device-url': deviceUrl,\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: `${accessToken}`,\n trackingId: `web_worker_${uuid()}`,\n },\n });\n\n if (!response.ok) {\n throw response;\n }\n\n return response;\n };\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n let keepAliveRetryCount = 0;\n const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;\n\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n\n keepaliveTimer = setInterval(async () => {\n if (keepAliveRetryCount < retryCountThreshold) {\n try {\n const res = await postKeepAlive(accessToken, deviceUrl, url);\n const statusCode = res.status;\n if (keepAliveRetryCount > 0) {\n postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode,\n } as KeepaliveStatusMessage);\n }\n keepAliveRetryCount = 0;\n } catch (err: any) {\n const headers = {} as Record<string, string>;\n if (err.headers.has('Retry-After')) {\n headers['retry-after'] = err.headers.get('Retry-After');\n }\n\n if (err.headers.has('Trackingid')) {\n // eslint-disable-next-line dot-notation\n headers['trackingid'] = err.headers.get('Trackingid');\n }\n\n const error = {\n headers,\n statusCode: err.status,\n statusText: err.statusText,\n type: err.type,\n };\n keepAliveRetryCount += 1;\n postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: error,\n keepAliveRetryCount,\n } as KeepaliveStatusMessage);\n }\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n }\n};\n\n// eslint-disable-next-line no-restricted-globals\nself.addEventListener('message', messageHandler);\nexport default messageHandler;\n"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,6 @@ exports.default = void 0;
10
10
  * It can be used to create a Blob URL for the worker instead of loading it from a separate file
11
11
  */
12
12
 
13
- var webWorkerStr = "/* eslint-env worker */\n\nconst uuid = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n// Enum values from the original imports\nconst HTTP_METHODS = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n PATCH: 'PATCH',\n};\n\nconst WorkerMessageType = {\n START_KEEPALIVE: 'START_KEEPALIVE',\n CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',\n KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',\n KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',\n};\n\nlet keepaliveTimer;\n\nconst messageHandler = (event) => {\n const {type} = event.data;\n\n const postKeepAlive = async (accessToken, deviceUrl, url) => {\n const response = await fetch(`${url}/status`, {\n method: HTTP_METHODS.POST,\n headers: {\n 'cisco-device-url': deviceUrl,\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: `${accessToken}`,\n trackingId: `web_worker_${uuid()}`,\n },\n });\n\n if (!response.ok) {\n throw response;\n }\n\n return response;\n };\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n let keepAliveRetryCount = 0;\n const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;\n\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n\n keepaliveTimer = setInterval(async () => {\n if (keepAliveRetryCount < retryCountThreshold) {\n try {\n const res = await postKeepAlive(accessToken, deviceUrl, url);\n const statusCode = res.status;\n if (keepAliveRetryCount > 0) {\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode,\n });\n }\n keepAliveRetryCount = 0;\n } catch (err) {\n let headers = {};\n if(err.headers?.has('Retry-After')) {\n headers['retry-after'] = err.headers.get('Retry-After');\n } \n\n if(err.headers?.has('Trackingid')) {\n headers['trackingid'] = err.headers.get('Trackingid');\n } \n\n const error = {\n headers,\n statusCode: err.status,\n statusText: err.statusText,\n type: err.type,\n };\n\n keepAliveRetryCount += 1\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: error,\n keepAliveRetryCount,\n });\n }\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n }\n};\n\nself.addEventListener('message', messageHandler);\n";
13
+ var webWorkerStr = "/* eslint-env worker */\n\nconst uuid = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n// Enum values from the original imports\nconst HTTP_METHODS = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n PATCH: 'PATCH',\n};\n\nconst WorkerMessageType = {\n START_KEEPALIVE: 'START_KEEPALIVE',\n CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',\n KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',\n KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',\n};\n\nlet keepaliveTimer;\n\nconst messageHandler = (event) => {\n const {type} = event.data;\n\n const postKeepAlive = async (accessToken, deviceUrl, url) => {\n const response = await fetch(`${url}/status`, {\n method: HTTP_METHODS.POST,\n headers: {\n 'cisco-device-url': deviceUrl,\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: `${accessToken}`,\n trackingId: `web_worker_${uuid()}`,\n },\n });\n\n if (!response.ok) {\n throw response;\n }\n\n return response;\n };\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n let keepAliveRetryCount = 0;\n const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;\n\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n\n keepaliveTimer = setInterval(async () => {\n if (keepAliveRetryCount < retryCountThreshold) {\n try {\n const res = await postKeepAlive(accessToken, deviceUrl, url);\n const statusCode = res.status;\n if (keepAliveRetryCount > 0) {\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode,\n });\n }\n keepAliveRetryCount = 0;\n } catch (err) {\n let headers = {};\n if(err.headers.has('Retry-After')) {\n headers['retry-after'] = err.headers.get('Retry-After');\n } \n\n if(err.headers.has('Trackingid')) {\n headers['trackingid'] = err.headers.get('Trackingid');\n } \n\n const error = {\n headers,\n statusCode: err.status,\n statusText: err.statusText,\n type: err.type,\n };\n\n keepAliveRetryCount += 1\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: error,\n keepAliveRetryCount,\n });\n }\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n }\n};\n\nself.addEventListener('message', messageHandler);\n";
14
14
  var _default = exports.default = webWorkerStr;
15
15
  //# sourceMappingURL=webWorkerStr.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["webWorkerStr","_default","exports","default"],"sources":["webWorkerStr.ts"],"sourcesContent":["/**\n * This file contains the stringified version of the web worker code from webWorker.ts\n * It can be used to create a Blob URL for the worker instead of loading it from a separate file\n */\n\nconst webWorkerStr = `/* eslint-env worker */\n\nconst uuid = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n// Enum values from the original imports\nconst HTTP_METHODS = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n PATCH: 'PATCH',\n};\n\nconst WorkerMessageType = {\n START_KEEPALIVE: 'START_KEEPALIVE',\n CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',\n KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',\n KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',\n};\n\nlet keepaliveTimer;\n\nconst messageHandler = (event) => {\n const {type} = event.data;\n\n const postKeepAlive = async (accessToken, deviceUrl, url) => {\n const response = await fetch(\\`\\${url}/status\\`, {\n method: HTTP_METHODS.POST,\n headers: {\n 'cisco-device-url': deviceUrl,\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: \\`\\${accessToken}\\`,\n trackingId: \\`web_worker_\\${uuid()}\\`,\n },\n });\n\n if (!response.ok) {\n throw response;\n }\n\n return response;\n };\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n let keepAliveRetryCount = 0;\n const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;\n\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n\n keepaliveTimer = setInterval(async () => {\n if (keepAliveRetryCount < retryCountThreshold) {\n try {\n const res = await postKeepAlive(accessToken, deviceUrl, url);\n const statusCode = res.status;\n if (keepAliveRetryCount > 0) {\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode,\n });\n }\n keepAliveRetryCount = 0;\n } catch (err) {\n let headers = {};\n if(err.headers?.has('Retry-After')) {\n headers['retry-after'] = err.headers.get('Retry-After');\n } \n\n if(err.headers?.has('Trackingid')) {\n headers['trackingid'] = err.headers.get('Trackingid');\n } \n\n const error = {\n headers,\n statusCode: err.status,\n statusText: err.statusText,\n type: err.type,\n };\n\n keepAliveRetryCount += 1\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: error,\n keepAliveRetryCount,\n });\n }\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n }\n};\n\nself.addEventListener('message', messageHandler);\n`;\n\nexport default webWorkerStr;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;AAEA,IAAMA,YAAY,2zFA2GjB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaH,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["webWorkerStr","_default","exports","default"],"sources":["webWorkerStr.ts"],"sourcesContent":["/**\n * This file contains the stringified version of the web worker code from webWorker.ts\n * It can be used to create a Blob URL for the worker instead of loading it from a separate file\n */\n\nconst webWorkerStr = `/* eslint-env worker */\n\nconst uuid = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n// Enum values from the original imports\nconst HTTP_METHODS = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n PATCH: 'PATCH',\n};\n\nconst WorkerMessageType = {\n START_KEEPALIVE: 'START_KEEPALIVE',\n CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',\n KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',\n KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',\n};\n\nlet keepaliveTimer;\n\nconst messageHandler = (event) => {\n const {type} = event.data;\n\n const postKeepAlive = async (accessToken, deviceUrl, url) => {\n const response = await fetch(\\`\\${url}/status\\`, {\n method: HTTP_METHODS.POST,\n headers: {\n 'cisco-device-url': deviceUrl,\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: \\`\\${accessToken}\\`,\n trackingId: \\`web_worker_\\${uuid()}\\`,\n },\n });\n\n if (!response.ok) {\n throw response;\n }\n\n return response;\n };\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n let keepAliveRetryCount = 0;\n const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;\n\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n\n keepaliveTimer = setInterval(async () => {\n if (keepAliveRetryCount < retryCountThreshold) {\n try {\n const res = await postKeepAlive(accessToken, deviceUrl, url);\n const statusCode = res.status;\n if (keepAliveRetryCount > 0) {\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode,\n });\n }\n keepAliveRetryCount = 0;\n } catch (err) {\n let headers = {};\n if(err.headers.has('Retry-After')) {\n headers['retry-after'] = err.headers.get('Retry-After');\n } \n\n if(err.headers.has('Trackingid')) {\n headers['trackingid'] = err.headers.get('Trackingid');\n } \n\n const error = {\n headers,\n statusCode: err.status,\n statusText: err.statusText,\n type: err.type,\n };\n\n keepAliveRetryCount += 1\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: error,\n keepAliveRetryCount,\n });\n }\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n }\n};\n\nself.addEventListener('message', messageHandler);\n`;\n\nexport default webWorkerStr;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;AAEA,IAAMA,YAAY,yzFA2GjB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaH,YAAY","ignoreList":[]}