@webex/calling 3.12.0-next.37 → 3.12.0-next.39

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 (33) hide show
  1. package/dist/CallingClient/line/index.js +4 -1
  2. package/dist/CallingClient/line/index.js.map +1 -1
  3. package/dist/CallingClient/registration/register.js +21 -3
  4. package/dist/CallingClient/registration/register.js.map +1 -1
  5. package/dist/CallingClient/registration/types.js.map +1 -1
  6. package/dist/CallingClient/utils/request.js +7 -2
  7. package/dist/CallingClient/utils/request.js.map +1 -1
  8. package/dist/Contacts/ContactsClient.js +13 -11
  9. package/dist/Contacts/ContactsClient.js.map +1 -1
  10. package/dist/mobius-socket/config.js +1 -1
  11. package/dist/mobius-socket/config.js.map +1 -1
  12. package/dist/mobius-socket/mobius-socket-events.test.js +10 -3
  13. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -1
  14. package/dist/mobius-socket/mobius-socket.js +123 -82
  15. package/dist/mobius-socket/mobius-socket.js.map +1 -1
  16. package/dist/mobius-socket/mobius-socket.test.js +7 -0
  17. package/dist/mobius-socket/mobius-socket.test.js.map +1 -1
  18. package/dist/module/CallingClient/line/index.js +2 -2
  19. package/dist/module/CallingClient/registration/register.js +10 -2
  20. package/dist/module/CallingClient/utils/request.js +3 -0
  21. package/dist/module/Contacts/ContactsClient.js +1 -1
  22. package/dist/module/mobius-socket/config.js +1 -1
  23. package/dist/module/mobius-socket/mobius-socket.js +39 -18
  24. package/dist/types/CallingClient/line/index.d.ts +1 -1
  25. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  26. package/dist/types/CallingClient/registration/register.d.ts +1 -1
  27. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  28. package/dist/types/CallingClient/registration/types.d.ts +1 -1
  29. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  30. package/dist/types/CallingClient/utils/request.d.ts +1 -0
  31. package/dist/types/CallingClient/utils/request.d.ts.map +1 -1
  32. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -1
  33. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","require","_mobiusSocket","_Logger","_interopRequireDefault","_mobiusSocketMapper","_constants","_wsFeatureFlag","_constants2","_Metrics","_types","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","normalizeWsResponse","wsResponse","_ref","_ref2","statusCode","body","data","undefined","headers","trackingid","trackingId","metadata","normalizeWsError","err","_ref3","_wsErr$response","_ref4","_wsErr$trackingId","_wsErr$response2","_ref5","_wsErr$response3","wsErr","response","APIRequest","exports","config","_classCallCheck2","logContext","file","REQUEST_FILE","method","METHODS","CONSTRUCTOR","webex","log","error","Error","isMobiusSocketEnabled","isMobiusWssEnabled","mobiusSocket","getMobiusSocketInstance","metricManager","getMetricManager","info","concat","_createClass2","key","value","isSocketEnabled","_connectToMobiusSocket","_asyncToGenerator2","_regenerator","mark","_callee","wssUrl","_this$metricManager","_this$metricManager2","_t","wrap","_context","prev","next","CONNECT_TO_MOBIUS_SOCKET","isConnected","abrupt","getConnectedWebSocketUrl","connect","submitMobiusSocketMetric","METRIC_EVENT","MOBIUS_SOCKET","MOBIUS_SOCKET_ACTION","CONNECT","METRIC_TYPE","BEHAVIORAL","warn","String","MOBIUS_SOCKET_ERROR","stop","connectToMobiusSocket","_x","_disconnectFromMobiusSocket","_callee2","options","_this$metricManager3","_this$metricManager4","_t2","_context2","DISCONNECT_FROM_MOBIUS_SOCKET","disconnect","DISCONNECT","disconnectFromMobiusSocket","_x2","_makeRequest","_callee3","request","socketType","isSupplementaryService","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_t1","_t10","_t11","_t12","_t13","_t14","_context3","MAKE_REQUEST","uuid","deriveMobiusSocketMessageType","uri","MOBIUS_SOCKET_MESSAGE_TYPE","UNKNOWN","isSupplementaryServiceMessageType","CALLING_USER_AGENT","credentials","getUserToken","sent","call","userAgent","authorization","sendWssRequest","type","makeRequest","_x3","registerMobiusSocketListener","cb","_this$metricManager5","REGISTER_MOBIUS_SOCKET_LISTENER","on","_data$data$eventType","_data$data","trace","eventType","LISTENER_REGISTERED","unregisterMobiusSocketListener","_this$metricManager6","UNREGISTER_MOBIUS_SOCKET_LISTENER","off","LISTENER_UNREGISTERED","getInstance","instance","resetInstance","createAPIRequest"],"sources":["request.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {getMobiusSocketInstance} from '../../mobius-socket';\nimport {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\nimport log from '../../Logger';\nimport {APIRequestConfig, APIRequestOptions, MobiusAsyncEvent, MobiusSocketResponse} from './types';\nimport {\n deriveMobiusSocketMessageType,\n isSupplementaryServiceMessageType,\n} from './mobiusSocketMapper';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\nimport {isMobiusWssEnabled} from './wsFeatureFlag';\nimport {CALLING_USER_AGENT, METHODS, REQUEST_FILE} from '../constants';\nimport {getMetricManager} from '../../Metrics';\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION} from '../../Metrics/types';\n\n/**\n * Converts a MobiusSocketResponse into the WebexRequestPayload shape that\n * all callers (registration, call, keepalive error-handlers) expect.\n */\nfunction normalizeWsResponse(wsResponse: MobiusSocketResponse): WebexRequestPayload {\n return {\n statusCode: wsResponse.statusCode,\n body: (wsResponse.data as object) ?? undefined,\n headers: {\n trackingid: wsResponse.trackingId,\n ...((wsResponse.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * Converts a MobiusSocketResponseError rejection into a WebexRequestPayload-shaped\n * error so handleRegistrationErrors / handleCallErrors can process it identically.\n */\nfunction normalizeWsError(err: unknown): WebexRequestPayload {\n const wsErr = err as {\n statusCode?: number;\n statusMessage?: string;\n response?: MobiusSocketResponse;\n trackingId?: string;\n };\n\n return {\n statusCode: wsErr.statusCode,\n body: (wsErr.response?.data as object) ?? undefined,\n headers: {\n trackingid: wsErr.trackingId ?? wsErr.response?.trackingId ?? '',\n ...((wsErr.response?.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * APIRequest routes Mobius traffic over HTTP (`webex.request`) or the Mobius WebSocket path\n * (`mobiusSocketRequest`). `isMobiusSocketEnabled` is set in the constructor from WDM\n * `webrtc-calling-over-ws` and/or SDK config (interim until WDM is fully in prod).\n */\nexport class APIRequest {\n // eslint-disable-next-line no-use-before-define\n private static instance: APIRequest | undefined;\n private isMobiusSocketEnabled: boolean;\n private webex: WebexSDK;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private mobiusSocket: any;\n private metricManager: IMetricManager;\n\n static getInstance(config: APIRequestConfig): APIRequest {\n if (!APIRequest.instance) {\n APIRequest.instance = new APIRequest(config);\n }\n\n return APIRequest.instance;\n }\n\n static resetInstance(): void {\n APIRequest.instance = undefined;\n }\n\n /**\n * @param config - Webex instance plus optional SDK Mobius-socket override\n */\n constructor(config: APIRequestConfig) {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONSTRUCTOR,\n };\n\n if (!config.webex) {\n log.error('APIRequest instantiation failed: WebexSDK instance is required', logContext);\n throw new Error('WebexSDK instance is required');\n }\n\n this.webex = config.webex;\n this.isMobiusSocketEnabled = isMobiusWssEnabled(config.webex) || false;\n this.mobiusSocket = getMobiusSocketInstance(this.webex);\n this.metricManager = getMetricManager(this.webex);\n\n log.info(\n `APIRequest initialized with transport: ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'}`,\n logContext\n );\n }\n\n /**\n * Whether the Mobius WebSocket transport is active for this instance.\n */\n public isSocketEnabled(): boolean {\n return this.isMobiusSocketEnabled;\n }\n\n /**\n * Ensures the Mobius WebSocket is connected before sending API requests.\n * If the socket is already connected, resolves immediately. Otherwise,\n * initiates a new connection to the provided WebSocket URL.\n * On failure, throws a normalized WebexRequestPayload-shaped error.\n *\n * @param wssUrl - The Mobius WebSocket URL to connect to.\n */\n public async connectToMobiusSocket(wssUrl: string): Promise<string | undefined> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONNECT_TO_MOBIUS_SOCKET,\n };\n\n if (this.mobiusSocket.isConnected()) {\n log.info('Mobius WebSocket already connected', logContext);\n\n return this.mobiusSocket.getConnectedWebSocketUrl();\n }\n\n log.info('Mobius WebSocket not connected, initiating connection', logContext);\n\n try {\n await this.mobiusSocket.connect(wssUrl);\n log.log('Mobius WebSocket connected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n\n return wssUrl;\n } catch (err) {\n log.warn(`Mobius WebSocket connection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined,\n String(err)\n );\n\n throw normalizeWsError(err);\n }\n }\n\n /**\n * Disconnects the default session from the Mobius WebSocket.\n */\n public async disconnectFromMobiusSocket(options?: {code: number; reason: string}): Promise<void> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.DISCONNECT_FROM_MOBIUS_SOCKET,\n };\n\n log.info('Disconnecting from Mobius WebSocket', logContext);\n\n const wssUrl = this.mobiusSocket.getConnectedWebSocketUrl();\n\n try {\n await this.mobiusSocket.disconnect(options);\n log.log('Mobius WebSocket disconnected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n } catch (err) {\n // silent error - no need to throw an error\n log.warn(`Mobius WebSocket disconnection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined, // add trackingId\n String(err)\n );\n }\n }\n\n /**\n * Makes a request using HTTP or WebSocket transport per the flag set in the constructor.\n * When using WebSocket, the response is normalized to the WebexRequestPayload shape\n * so callers do not need to know which transport was used.\n * @param request - Request options (uri, method, body, headers, service)\n * @returns Promise resolving to WebexRequestPayload\n */\n public async makeRequest(request: APIRequestOptions): Promise<WebexRequestPayload> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.MAKE_REQUEST,\n };\n log.info(`Dispatching request via ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'} `, logContext);\n\n if (this.isMobiusSocketEnabled) {\n const trackingId = `webex-js-sdk_${uuid()}`;\n const socketType = deriveMobiusSocketMessageType(request.uri, request.method);\n\n if (socketType === MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN) {\n log.error(\n `Unknown Mobius Socket message type for uri: ${request.uri}, httpMethod: ${request.method}`,\n logContext\n );\n throw new Error(`Unknown Mobius Socket message type: ${socketType}`);\n }\n\n const isSupplementaryService = isSupplementaryServiceMessageType(socketType);\n\n try {\n const wsResponse: MobiusSocketResponse = await this.mobiusSocket.sendWssRequest({\n type: socketType,\n trackingId,\n metadata: {\n ...request.headers,\n userAgent: CALLING_USER_AGENT,\n authorization: `${\n (isSupplementaryService && (await this.webex.credentials.getUserToken())) || ''\n }`,\n },\n data: request.body,\n });\n\n log.log(\n `WSS request succeeded - socketType: ${socketType}, trackingId: ${trackingId}, statusCode: ${wsResponse.statusCode}`,\n logContext\n );\n\n return normalizeWsResponse(wsResponse);\n } catch (err) {\n log.error(\n `WSS request failed - socketType: ${socketType}, trackingId: ${trackingId}, error: ${String(\n err\n )}`,\n logContext\n );\n throw normalizeWsError(err);\n }\n }\n\n return this.webex.request(request) as Promise<WebexRequestPayload>;\n }\n\n public registerMobiusSocketListener(cb: (data?: MobiusAsyncEvent) => void): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Attaching Mobius async event listener', logContext);\n\n this.mobiusSocket.on('event:async_event', (data: MobiusAsyncEvent) => {\n log.trace(\n `Mobius async event received - eventType: ${data?.data?.eventType ?? 'unknown'}`,\n logContext\n );\n cb(data);\n });\n\n log.log('Mobius async event listener attached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n\n public unregisterMobiusSocketListener(): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Detaching Mobius async event listener', logContext);\n this.mobiusSocket.off('event:async_event');\n log.log('Mobius async event listener detached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n}\n\n/**\n * Factory function to create a singleton APIRequest instance\n * @param config - Configuration object for APIRequest\n * @returns APIRequest instance\n */\nexport const createAPIRequest = (config: APIRequestConfig): APIRequest =>\n APIRequest.getInstance(config);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_uuid","require","_mobiusSocket","_Logger","_interopRequireDefault","_mobiusSocketMapper","_constants","_wsFeatureFlag","_constants2","_Metrics","_types","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","normalizeWsResponse","wsResponse","_ref","_ref2","statusCode","body","data","undefined","headers","trackingid","trackingId","metadata","normalizeWsError","err","_ref3","_wsErr$response","_ref4","_wsErr$trackingId","_wsErr$response2","_ref5","_wsErr$response3","wsErr","response","APIRequest","exports","config","_classCallCheck2","logContext","file","REQUEST_FILE","method","METHODS","CONSTRUCTOR","webex","log","error","Error","isMobiusSocketEnabled","isMobiusWssEnabled","mobiusSocket","getMobiusSocketInstance","metricManager","getMetricManager","info","concat","_createClass2","key","value","isSocketEnabled","_connectToMobiusSocket","_asyncToGenerator2","_regenerator","mark","_callee","wssUrl","_this$metricManager","_this$metricManager2","_t","wrap","_context","prev","next","CONNECT_TO_MOBIUS_SOCKET","isConnected","abrupt","getConnectedWebSocketUrl","connect","submitMobiusSocketMetric","METRIC_EVENT","MOBIUS_SOCKET","MOBIUS_SOCKET_ACTION","CONNECT","METRIC_TYPE","BEHAVIORAL","warn","String","MOBIUS_SOCKET_ERROR","stop","connectToMobiusSocket","_x","_disconnectFromMobiusSocket","_callee2","options","_this$metricManager3","_this$metricManager4","_t2","_context2","DISCONNECT_FROM_MOBIUS_SOCKET","disconnect","DISCONNECT","disconnectFromMobiusSocket","_x2","_makeRequest","_callee3","request","socketType","isSupplementaryService","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_t1","_t10","_t11","_t12","_t13","_t14","_context3","MAKE_REQUEST","uuid","deriveMobiusSocketMessageType","uri","MOBIUS_SOCKET_MESSAGE_TYPE","UNKNOWN","isSupplementaryServiceMessageType","CALLING_USER_AGENT","credentials","getUserToken","sent","call","userAgent","authorization","sendWssRequest","type","makeRequest","_x3","registerMobiusSocketListener","cb","_this$metricManager5","REGISTER_MOBIUS_SOCKET_LISTENER","on","_data$data$eventType","_data$data","trace","eventType","LISTENER_REGISTERED","unregisterMobiusSocketListener","_this$metricManager6","UNREGISTER_MOBIUS_SOCKET_LISTENER","off","LISTENER_UNREGISTERED","getInstance","instance","resetInstance","createAPIRequest"],"sources":["request.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {getMobiusSocketInstance} from '../../mobius-socket';\nimport {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\nimport log from '../../Logger';\nimport {APIRequestConfig, APIRequestOptions, MobiusAsyncEvent, MobiusSocketResponse} from './types';\nimport {\n deriveMobiusSocketMessageType,\n isSupplementaryServiceMessageType,\n} from './mobiusSocketMapper';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\nimport {isMobiusWssEnabled} from './wsFeatureFlag';\nimport {CALLING_USER_AGENT, METHODS, REQUEST_FILE} from '../constants';\nimport {getMetricManager} from '../../Metrics';\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION} from '../../Metrics/types';\n\n/**\n * Converts a MobiusSocketResponse into the WebexRequestPayload shape that\n * all callers (registration, call, keepalive error-handlers) expect.\n */\nfunction normalizeWsResponse(wsResponse: MobiusSocketResponse): WebexRequestPayload {\n return {\n statusCode: wsResponse.statusCode,\n body: (wsResponse.data as object) ?? undefined,\n headers: {\n trackingid: wsResponse.trackingId,\n ...((wsResponse.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * Converts a MobiusSocketResponseError rejection into a WebexRequestPayload-shaped\n * error so handleRegistrationErrors / handleCallErrors can process it identically.\n */\nfunction normalizeWsError(err: unknown): WebexRequestPayload {\n const wsErr = err as {\n statusCode?: number;\n statusMessage?: string;\n response?: MobiusSocketResponse;\n trackingId?: string;\n };\n\n return {\n statusCode: wsErr.statusCode,\n body: (wsErr.response?.data as object) ?? undefined,\n headers: {\n trackingid: wsErr.trackingId ?? wsErr.response?.trackingId ?? '',\n ...((wsErr.response?.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * APIRequest routes Mobius traffic over HTTP (`webex.request`) or the Mobius WebSocket path\n * (`mobiusSocketRequest`). `isMobiusSocketEnabled` is set in the constructor from WDM\n * `webrtc-calling-over-ws` and/or SDK config (interim until WDM is fully in prod).\n */\nexport class APIRequest {\n // eslint-disable-next-line no-use-before-define\n private static instance: APIRequest | undefined;\n private isMobiusSocketEnabled: boolean;\n private webex: WebexSDK;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private mobiusSocket: any;\n private metricManager: IMetricManager;\n\n static getInstance(config: APIRequestConfig): APIRequest {\n if (!APIRequest.instance) {\n APIRequest.instance = new APIRequest(config);\n }\n\n return APIRequest.instance;\n }\n\n static resetInstance(): void {\n APIRequest.instance = undefined;\n }\n\n /**\n * @param config - Webex instance plus optional SDK Mobius-socket override\n */\n constructor(config: APIRequestConfig) {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONSTRUCTOR,\n };\n\n if (!config.webex) {\n log.error('APIRequest instantiation failed: WebexSDK instance is required', logContext);\n throw new Error('WebexSDK instance is required');\n }\n\n this.webex = config.webex;\n this.isMobiusSocketEnabled = isMobiusWssEnabled(config.webex) || false;\n this.mobiusSocket = getMobiusSocketInstance(this.webex);\n this.metricManager = getMetricManager(this.webex);\n\n log.info(\n `APIRequest initialized with transport: ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'}`,\n logContext\n );\n }\n\n /**\n * Whether the Mobius WebSocket transport is active for this instance.\n */\n public isSocketEnabled(): boolean {\n return this.isMobiusSocketEnabled;\n }\n\n /**\n * Ensures the Mobius WebSocket is connected before sending API requests.\n * If the socket is already connected, resolves immediately. Otherwise,\n * initiates a new connection to the provided WebSocket URL.\n * On failure, throws a normalized WebexRequestPayload-shaped error.\n *\n * @param wssUrl - The Mobius WebSocket URL to connect to.\n */\n public async connectToMobiusSocket(wssUrl: string): Promise<string | undefined> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONNECT_TO_MOBIUS_SOCKET,\n };\n\n if (this.mobiusSocket.isConnected()) {\n log.info('Mobius WebSocket already connected', logContext);\n\n return this.mobiusSocket.getConnectedWebSocketUrl();\n }\n\n log.info('Mobius WebSocket not connected, initiating connection', logContext);\n\n try {\n await this.mobiusSocket.connect(wssUrl);\n log.log('Mobius WebSocket connected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n\n return wssUrl;\n } catch (err) {\n log.warn(`Mobius WebSocket connection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined,\n String(err)\n );\n\n throw normalizeWsError(err);\n }\n }\n\n public getConnectedWebSocketUrl() {\n return this.mobiusSocket.getConnectedWebSocketUrl();\n }\n\n /**\n * Disconnects the default session from the Mobius WebSocket.\n */\n public async disconnectFromMobiusSocket(options?: {code: number; reason: string}): Promise<void> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.DISCONNECT_FROM_MOBIUS_SOCKET,\n };\n\n log.info('Disconnecting from Mobius WebSocket', logContext);\n\n const wssUrl = this.mobiusSocket.getConnectedWebSocketUrl();\n\n try {\n await this.mobiusSocket.disconnect(options);\n log.log('Mobius WebSocket disconnected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n } catch (err) {\n // silent error - no need to throw an error\n log.warn(`Mobius WebSocket disconnection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined, // add trackingId\n String(err)\n );\n }\n }\n\n /**\n * Makes a request using HTTP or WebSocket transport per the flag set in the constructor.\n * When using WebSocket, the response is normalized to the WebexRequestPayload shape\n * so callers do not need to know which transport was used.\n * @param request - Request options (uri, method, body, headers, service)\n * @returns Promise resolving to WebexRequestPayload\n */\n public async makeRequest(request: APIRequestOptions): Promise<WebexRequestPayload> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.MAKE_REQUEST,\n };\n log.info(`Dispatching request via ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'} `, logContext);\n\n if (this.isMobiusSocketEnabled) {\n const trackingId = `webex-js-sdk_${uuid()}`;\n const socketType = deriveMobiusSocketMessageType(request.uri, request.method);\n\n if (socketType === MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN) {\n log.error(\n `Unknown Mobius Socket message type for uri: ${request.uri}, httpMethod: ${request.method}`,\n logContext\n );\n throw new Error(`Unknown Mobius Socket message type: ${socketType}`);\n }\n\n const isSupplementaryService = isSupplementaryServiceMessageType(socketType);\n\n try {\n const wsResponse: MobiusSocketResponse = await this.mobiusSocket.sendWssRequest({\n type: socketType,\n trackingId,\n metadata: {\n ...request.headers,\n userAgent: CALLING_USER_AGENT,\n authorization: `${\n (isSupplementaryService && (await this.webex.credentials.getUserToken())) || ''\n }`,\n },\n data: request.body,\n });\n\n log.log(\n `WSS request succeeded - socketType: ${socketType}, trackingId: ${trackingId}, statusCode: ${wsResponse.statusCode}`,\n logContext\n );\n\n return normalizeWsResponse(wsResponse);\n } catch (err) {\n log.error(\n `WSS request failed - socketType: ${socketType}, trackingId: ${trackingId}, error: ${String(\n err\n )}`,\n logContext\n );\n throw normalizeWsError(err);\n }\n }\n\n return this.webex.request(request) as Promise<WebexRequestPayload>;\n }\n\n public registerMobiusSocketListener(cb: (data?: MobiusAsyncEvent) => void): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Attaching Mobius async event listener', logContext);\n\n this.mobiusSocket.on('event:async_event', (data: MobiusAsyncEvent) => {\n log.trace(\n `Mobius async event received - eventType: ${data?.data?.eventType ?? 'unknown'}`,\n logContext\n );\n cb(data);\n });\n\n log.log('Mobius async event listener attached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n\n public unregisterMobiusSocketListener(): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Detaching Mobius async event listener', logContext);\n this.mobiusSocket.off('event:async_event');\n log.log('Mobius async event listener detached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n}\n\n/**\n * Factory function to create a singleton APIRequest instance\n * @param config - Configuration object for APIRequest\n * @returns APIRequest instance\n */\nexport const createAPIRequest = (config: APIRequestConfig): APIRequest =>\n APIRequest.getInstance(config);\n"],"mappings":"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","ignoreList":[]}
@@ -677,28 +677,30 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
677
677
  }
678
678
  return _context11.abrupt("return", this.encryptionKeyUrl);
679
679
  case 1:
680
- // istanbul ignore else
681
- if (this.groups === undefined) {
682
- this.getContacts();
680
+ if (!(this.groups === undefined)) {
681
+ _context11.next = 2;
682
+ break;
683
683
  }
684
- // istanbul ignore else
684
+ _context11.next = 2;
685
+ return this.getContacts();
686
+ case 2:
685
687
  if (!(this.groups && this.groups.length)) {
686
- _context11.next = 2;
688
+ _context11.next = 3;
687
689
  break;
688
690
  }
689
691
  return _context11.abrupt("return", this.groups[0].encryptionKeyUrl);
690
- case 2:
691
- _context11.next = 3;
692
- return this.createNewEncryptionKeyUrl();
693
692
  case 3:
693
+ _context11.next = 4;
694
+ return this.createNewEncryptionKeyUrl();
695
+ case 4:
694
696
  this.encryptionKeyUrl = _context11.sent;
695
697
  _Logger.default.log("Creating a default group: ".concat(_constants2.DEFAULT_GROUP_NAME), {
696
698
  file: _constants2.CONTACTS_CLIENT,
697
699
  method: this.fetchEncryptionKeyUrl.name
698
700
  });
699
- _context11.next = 4;
701
+ _context11.next = 5;
700
702
  return this.createContactGroup(_constants2.DEFAULT_GROUP_NAME, this.encryptionKeyUrl);
701
- case 4:
703
+ case 5:
702
704
  response = _context11.sent;
703
705
  if ((_response$data$group = response.data.group) !== null && _response$data$group !== void 0 && _response$data$group.groupId) {
704
706
  this.defaultGroupId = (_response$data$group2 = response.data.group) === null || _response$data$group2 === void 0 ? void 0 : _response$data$group2.groupId;
@@ -708,7 +710,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
708
710
  });
709
711
  }
710
712
  return _context11.abrupt("return", this.encryptionKeyUrl);
711
- case 5:
713
+ case 6:
712
714
  case "end":
713
715
  return _context11.stop();
714
716
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_this$webex$internal$","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","contactsServiceUrl","internal","services","_serviceUrls","contactsService","get","_activeServices","log","setLogger","level","CONTACTS_CLIENT","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_t3","_t4","_context4","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_t","_t2","_context3","_slicedToArray2","_x7","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_t7","_t8","_context7","_ref9","_callee6","_ref8","_ref0","_t5","_t6","_context6","_x0","_x9","_ref1","_ref10","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee1","_this5","contactList","cloudContactsMap","_response$headers","response","responseBody","contactIdList","totalContacts","MAX_CONTACTS_PER_QUERY","i","contactIdListChunk","query","result","slicedCloudContactsMap","resolvedContacts","contactResponse","errorStatus","_t9","_t0","_context1","METHODS","GET_CONTACTS","info","METHOD_START_MESSAGE","request","uri","concat","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","statusCode","headers","trackingid","body","Error","_ref11","_callee9","_context9","ContactType","CUSTOM","CLOUD","_x1","_keys","slice","SCIM_ID_FILTER","join","OR","scimQuery","_ref12","_callee0","group","idx","_context0","_x10","_x11","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","_stringify","serviceErrorCodeHandler","uploadLogs","getContacts","_createNewEncryptionKeyUrl","_callee10","unboundedKeyUri","unboundedKeys","_context10","CREATE_NEW_ENCRYPTION_KEY_URL","kms","createUnboundKeys","count","createResource","keyUris","createNewEncryptionKeyUrl","_fetchEncryptionKeyUrl","_callee11","_response$data$group","_response$data$group2","_context11","FETCH_ENCRYPTION_KEY_URL","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee12","_context12","FETCH_DEFAULT_GROUP","fetchDefaultGroup","_createContactGroup","_callee13","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_response$headers2","_this$groups","_t1","_t10","_context13","CREATE_CONTACT_GROUP","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x12","_x13","_x14","_deleteContactGroup","_callee14","_response$headers3","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_t11","_context14","DELETE_CONTACT_GROUP","DELETE","findIndex","splice","deleteContactGroup","_x15","_createContact","_callee15","contactInfo","_response$headers4","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_t12","_t13","_context15","CREATE_CONTACT","createContact","_x16","_deleteContact","_callee16","_this$contacts3","contactToDelete","_this$contacts4","_t14","_context16","DELETE_CONTACT","deleteContact","_x17","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_CLIENT,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n METHODS,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler, uploadLogs} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n private contactsServiceUrl: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n this.contactsServiceUrl =\n this.webex.internal.services._serviceUrls?.contactsService ||\n this.webex.internal.services.get(\n this.webex.internal.services._activeServices.contactsService\n );\n log.setLogger(logger.level, CONTACTS_CLIENT);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.GET_CONTACTS,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${response.statusCode} and Response trackingId: ${response?.headers?.trackingid}`,\n loggerContext\n );\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n await Promise.all(\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n })\n );\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const totalContacts = contactIdList.length;\n const MAX_CONTACTS_PER_QUERY = 50;\n\n for (let i = 0; i < totalContacts; i += MAX_CONTACTS_PER_QUERY) {\n try {\n const contactIdListChunk = contactIdList.slice(i, i + MAX_CONTACTS_PER_QUERY);\n const query = contactIdListChunk.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n\n const slicedCloudContactsMap = Object.fromEntries(\n Object.entries(cloudContactsMap).slice(i, i + MAX_CONTACTS_PER_QUERY)\n );\n\n const resolvedContacts = this.resolveCloudContacts(\n slicedCloudContactsMap,\n result.body as SCIMListResponse\n );\n\n if (resolvedContacts) {\n resolvedContacts.forEach((item) => contactList.push(item));\n }\n } catch (error: any) {\n log.warn(\n `Error processing contact chunk ${i}-${i + MAX_CONTACTS_PER_QUERY}`,\n loggerContext\n );\n }\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log('Successfully fetched contacts and groups', loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Error fetching contacts: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.log(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n log.log(`Successfully created default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_DEFAULT_GROUP,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.defaultGroupId) {\n log.log(`Using existing default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n log.log(`Found default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.log('No default group found.', {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n const groupId = group.groupId;\n log.log(`Successfully created new default group with ID: ${groupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with displayName: ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n log.log(`Contact group ${displayName} successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to create contact group: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with groupId: ${groupId}`, loggerContext);\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n log.log(`Contact group ${groupId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact group ${groupId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n log.log(`Contact successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Failed to create contact: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactId: ${contactId}`, loggerContext);\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n log.log(`Contact ${contactId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact ${contactId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_this$webex$internal$","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","contactsServiceUrl","internal","services","_serviceUrls","contactsService","get","_activeServices","log","setLogger","level","CONTACTS_CLIENT","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_t3","_t4","_context4","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_t","_t2","_context3","_slicedToArray2","_x7","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_t7","_t8","_context7","_ref9","_callee6","_ref8","_ref0","_t5","_t6","_context6","_x0","_x9","_ref1","_ref10","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee1","_this5","contactList","cloudContactsMap","_response$headers","response","responseBody","contactIdList","totalContacts","MAX_CONTACTS_PER_QUERY","i","contactIdListChunk","query","result","slicedCloudContactsMap","resolvedContacts","contactResponse","errorStatus","_t9","_t0","_context1","METHODS","GET_CONTACTS","info","METHOD_START_MESSAGE","request","uri","concat","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","statusCode","headers","trackingid","body","Error","_ref11","_callee9","_context9","ContactType","CUSTOM","CLOUD","_x1","_keys","slice","SCIM_ID_FILTER","join","OR","scimQuery","_ref12","_callee0","group","idx","_context0","_x10","_x11","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","_stringify","serviceErrorCodeHandler","uploadLogs","getContacts","_createNewEncryptionKeyUrl","_callee10","unboundedKeyUri","unboundedKeys","_context10","CREATE_NEW_ENCRYPTION_KEY_URL","kms","createUnboundKeys","count","createResource","keyUris","createNewEncryptionKeyUrl","_fetchEncryptionKeyUrl","_callee11","_response$data$group","_response$data$group2","_context11","FETCH_ENCRYPTION_KEY_URL","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee12","_context12","FETCH_DEFAULT_GROUP","fetchDefaultGroup","_createContactGroup","_callee13","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_response$headers2","_this$groups","_t1","_t10","_context13","CREATE_CONTACT_GROUP","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x12","_x13","_x14","_deleteContactGroup","_callee14","_response$headers3","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_t11","_context14","DELETE_CONTACT_GROUP","DELETE","findIndex","splice","deleteContactGroup","_x15","_createContact","_callee15","contactInfo","_response$headers4","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_t12","_t13","_context15","CREATE_CONTACT","createContact","_x16","_deleteContact","_callee16","_this$contacts3","contactToDelete","_this$contacts4","_t14","_context16","DELETE_CONTACT","deleteContact","_x17","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_CLIENT,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n METHODS,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler, uploadLogs} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n private contactsServiceUrl: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n this.contactsServiceUrl =\n this.webex.internal.services._serviceUrls?.contactsService ||\n this.webex.internal.services.get(\n this.webex.internal.services._activeServices.contactsService\n );\n log.setLogger(logger.level, CONTACTS_CLIENT);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.GET_CONTACTS,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${response.statusCode} and Response trackingId: ${response?.headers?.trackingid}`,\n loggerContext\n );\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n await Promise.all(\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n })\n );\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const totalContacts = contactIdList.length;\n const MAX_CONTACTS_PER_QUERY = 50;\n\n for (let i = 0; i < totalContacts; i += MAX_CONTACTS_PER_QUERY) {\n try {\n const contactIdListChunk = contactIdList.slice(i, i + MAX_CONTACTS_PER_QUERY);\n const query = contactIdListChunk.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n\n const slicedCloudContactsMap = Object.fromEntries(\n Object.entries(cloudContactsMap).slice(i, i + MAX_CONTACTS_PER_QUERY)\n );\n\n const resolvedContacts = this.resolveCloudContacts(\n slicedCloudContactsMap,\n result.body as SCIMListResponse\n );\n\n if (resolvedContacts) {\n resolvedContacts.forEach((item) => contactList.push(item));\n }\n } catch (error: any) {\n log.warn(\n `Error processing contact chunk ${i}-${i + MAX_CONTACTS_PER_QUERY}`,\n loggerContext\n );\n }\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log('Successfully fetched contacts and groups', loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Error fetching contacts: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n await this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.log(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n log.log(`Successfully created default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_DEFAULT_GROUP,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.defaultGroupId) {\n log.log(`Using existing default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n log.log(`Found default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.log('No default group found.', {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n const groupId = group.groupId;\n log.log(`Successfully created new default group with ID: ${groupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with displayName: ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n log.log(`Contact group ${displayName} successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to create contact group: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with groupId: ${groupId}`, loggerContext);\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n log.log(`Contact group ${groupId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact group ${groupId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n log.log(`Contact successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Failed to create contact: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactId: ${contactId}`, loggerContext);\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n log.log(`Contact ${contactId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact ${contactId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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","ignoreList":[]}
@@ -14,7 +14,7 @@ var mobiusSocketConfig = {
14
14
  backoffTimeMax: 32000,
15
15
  backoffTimeReset: 1000,
16
16
  initialConnectionMaxRetries: 0,
17
- maxRetries: 0,
17
+ maxRetries: 3,
18
18
  forceCloseDelay: 2000,
19
19
  dedupCacheMaxSize: 1000
20
20
  };
@@ -1 +1 @@
1
- {"version":3,"names":["mobiusSocketConfig","wssResponseTimeout","backoffTimeMax","backoffTimeReset","initialConnectionMaxRetries","maxRetries","forceCloseDelay","dedupCacheMaxSize","_default","exports","default","mobiusSocket"],"sources":["config.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport interface MobiusSocketConfig {\n /** Milliseconds to wait for websocket request/response messages, including auth. */\n wssResponseTimeout: number;\n /** Maximum milliseconds between connection attempts. */\n backoffTimeMax: number;\n /** Initial milliseconds between connection attempts. */\n backoffTimeReset: number;\n /** Maximum number of retries for the initial connect() flow before rejecting. */\n initialConnectionMaxRetries: number;\n /** Maximum number of retries for reconnect attempts. 0 means unlimited. */\n maxRetries: number;\n /** Milliseconds to wait for a close frame before forcing closure. */\n forceCloseDelay: number;\n /** Maximum eventIds retained in the dedup cache to suppress duplicate async_event messages. */\n dedupCacheMaxSize: number;\n}\n\nconst mobiusSocketConfig: MobiusSocketConfig = {\n wssResponseTimeout: 10000,\n backoffTimeMax: 32000,\n backoffTimeReset: 1000,\n initialConnectionMaxRetries: 0,\n maxRetries: 0,\n forceCloseDelay: 2000,\n dedupCacheMaxSize: 1000,\n};\n\nexport default {\n mobiusSocket: mobiusSocketConfig,\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAmBA,IAAMA,kBAAsC,GAAG;EAC7CC,kBAAkB,EAAE,KAAK;EACzBC,cAAc,EAAE,KAAK;EACrBC,gBAAgB,EAAE,IAAI;EACtBC,2BAA2B,EAAE,CAAC;EAC9BC,UAAU,EAAE,CAAC;EACbC,eAAe,EAAE,IAAI;EACrBC,iBAAiB,EAAE;AACrB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa;EACbC,YAAY,EAAEX;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["mobiusSocketConfig","wssResponseTimeout","backoffTimeMax","backoffTimeReset","initialConnectionMaxRetries","maxRetries","forceCloseDelay","dedupCacheMaxSize","_default","exports","default","mobiusSocket"],"sources":["config.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport interface MobiusSocketConfig {\n /** Milliseconds to wait for websocket request/response messages, including auth. */\n wssResponseTimeout: number;\n /** Maximum milliseconds between connection attempts. */\n backoffTimeMax: number;\n /** Initial milliseconds between connection attempts. */\n backoffTimeReset: number;\n /** Maximum number of retries for the initial connect() flow before rejecting. */\n initialConnectionMaxRetries: number;\n /** Maximum number of retries for reconnect attempts. 0 means unlimited. */\n maxRetries: number;\n /** Milliseconds to wait for a close frame before forcing closure. */\n forceCloseDelay: number;\n /** Maximum eventIds retained in the dedup cache to suppress duplicate async_event messages. */\n dedupCacheMaxSize: number;\n}\n\nconst mobiusSocketConfig: MobiusSocketConfig = {\n wssResponseTimeout: 10000,\n backoffTimeMax: 32000,\n backoffTimeReset: 1000,\n initialConnectionMaxRetries: 0,\n maxRetries: 3,\n forceCloseDelay: 2000,\n dedupCacheMaxSize: 1000,\n};\n\nexport default {\n mobiusSocket: mobiusSocketConfig,\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAmBA,IAAMA,kBAAsC,GAAG;EAC7CC,kBAAkB,EAAE,KAAK;EACzBC,cAAc,EAAE,KAAK;EACrBC,gBAAgB,EAAE,IAAI;EACtBC,2BAA2B,EAAE,CAAC;EAC9BC,UAAU,EAAE,CAAC;EACbC,eAAe,EAAE,IAAI;EACrBC,iBAAiB,EAAE;AACrB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa;EACbC,YAAY,EAAEX;AAChB,CAAC","ignoreList":[]}
@@ -168,6 +168,13 @@ describe('plugin-mobiusSocket', function () {
168
168
  return promise;
169
169
  });
170
170
  mobiusSocket = new _index.default(webex, _objectSpread({}, _config.default.mobiusSocket));
171
+ mobiusSocket.logger = {
172
+ debug: jest.fn(),
173
+ error: jest.fn(),
174
+ info: jest.fn(),
175
+ log: jest.fn(),
176
+ warn: jest.fn()
177
+ };
171
178
  });
172
179
  it('removes all listeners for an event when off() is called without a listener', function () {
173
180
  var firstListener = _sinon.default.stub();
@@ -300,11 +307,11 @@ describe('plugin-mobiusSocket', function () {
300
307
  var events = [{
301
308
  code: 1000,
302
309
  reason: 'idle',
303
- action: 'reconnect'
310
+ action: 'close'
304
311
  }, {
305
312
  code: 1000,
306
313
  reason: 'done (forced)',
307
- action: 'reconnect'
314
+ action: 'close'
308
315
  }, {
309
316
  code: 1000,
310
317
  reason: 'pong not received',
@@ -321,7 +328,7 @@ describe('plugin-mobiusSocket', function () {
321
328
  action: 'close'
322
329
  }, {
323
330
  code: 1001,
324
- action: 'reconnect'
331
+ action: 'close'
325
332
  }, {
326
333
  code: 1005,
327
334
  action: 'reconnect'