@webex/calling 3.12.0-next.47 → 3.12.0-next.49

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 (47) hide show
  1. package/dist/CallingClient/CallingClient.js +48 -23
  2. package/dist/CallingClient/CallingClient.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.test.js +91 -25
  4. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  5. package/dist/CallingClient/constants.js +2 -0
  6. package/dist/CallingClient/constants.js.map +1 -1
  7. package/dist/CallingClient/types.js.map +1 -1
  8. package/dist/CallingClient/utils/constants.js +13 -1
  9. package/dist/CallingClient/utils/constants.js.map +1 -1
  10. package/dist/CallingClient/utils/request.js +61 -0
  11. package/dist/CallingClient/utils/request.js.map +1 -1
  12. package/dist/CallingClient/utils/request.test.js +87 -0
  13. package/dist/CallingClient/utils/request.test.js.map +1 -1
  14. package/dist/CallingClient/utils/types.js.map +1 -1
  15. package/dist/Events/types.js +11 -1
  16. package/dist/Events/types.js.map +1 -1
  17. package/dist/index.js +12 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/mobius-socket/mobius-socket.js +9 -1
  20. package/dist/mobius-socket/mobius-socket.js.map +1 -1
  21. package/dist/mobius-socket/mobius-socket.test.js +57 -4
  22. package/dist/mobius-socket/mobius-socket.test.js.map +1 -1
  23. package/dist/module/CallingClient/CallingClient.js +7 -0
  24. package/dist/module/CallingClient/constants.js +2 -0
  25. package/dist/module/CallingClient/utils/constants.js +6 -0
  26. package/dist/module/CallingClient/utils/request.js +40 -1
  27. package/dist/module/Events/types.js +4 -0
  28. package/dist/module/index.js +1 -1
  29. package/dist/module/mobius-socket/mobius-socket.js +4 -0
  30. package/dist/types/CallingClient/CallingClient.d.ts +1 -0
  31. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  32. package/dist/types/CallingClient/constants.d.ts +2 -0
  33. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  34. package/dist/types/CallingClient/types.d.ts +1 -0
  35. package/dist/types/CallingClient/types.d.ts.map +1 -1
  36. package/dist/types/CallingClient/utils/constants.d.ts +5 -0
  37. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -1
  38. package/dist/types/CallingClient/utils/request.d.ts +4 -1
  39. package/dist/types/CallingClient/utils/request.d.ts.map +1 -1
  40. package/dist/types/CallingClient/utils/types.d.ts +5 -0
  41. package/dist/types/CallingClient/utils/types.d.ts.map +1 -1
  42. package/dist/types/Events/types.d.ts +10 -2
  43. package/dist/types/Events/types.d.ts.map +1 -1
  44. package/dist/types/index.d.ts +1 -1
  45. package/dist/types/index.d.ts.map +1 -1
  46. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -1
  47. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","require","_testUtil","_types","_Logger","_interopRequireDefault","_request","_mobiusSocket","_Metrics","_types2","_wsFeatureFlag","_constants","jest","mock","getMobiusSocketInstance","fn","getMetricManager","isMobiusWssEnabled","v4","describe","webex","mockMobiusSocket","mockMetricManager","infoSpy","logSpy","warnSpy","errorSpy","beforeEach","APIRequest","resetInstance","getTestUtilsWebex","clearAllMocks","connect","mockResolvedValue","undefined","disconnect","sendWssRequest","statusCode","trackingId","data","deviceId","isConnected","mockReturnValue","getConnectedWebSocketUrl","on","off","submitMobiusSocketMetric","uuid","spyOn","log","afterEach","it","apiRequest","getInstance","expect","toBeDefined","toHaveBeenCalledWith","file","method","toThrow","instance1","instance2","toBe","not","createAPIRequest","toBeInstanceOf","result","isSocketEnabled","_asyncToGenerator2","default","_regenerator","mark","_callee","wrap","_context","prev","next","connectToMobiusSocket","sent","toHaveBeenCalled","stop","_callee2","wssUrl","_context2","_callee3","_context3","METRIC_EVENT","MOBIUS_SOCKET","MOBIUS_SOCKET_ACTION","CONNECT","METRIC_TYPE","BEHAVIORAL","_callee4","connectionError","_context4","statusMessage","response","error","metadata","mockRejectedValue","rejects","toEqual","body","headers","trackingid","stringContaining","MOBIUS_SOCKET_ERROR","any","String","_callee5","minimalError","_context5","_callee6","_context6","disconnectFromMobiusSocket","_callee7","_context7","DISCONNECT","_callee8","options","_context8","code","reason","_callee9","_context9","Error","resolves","_callee0","_context0","_callee1","requestOptions","expectedResponse","_context1","uri","HTTP_METHODS","POST","userId","request","makeRequest","_callee10","_context10","GET","_callee11","_context11","_callee12","_context12","objectContaining","type","MOBIUS_SOCKET_MESSAGE_TYPE","REGISTER","_callee13","_context13","_callee14","_context14","_callee15","_context15","userAgent","authorization","_callee16","_context16","credentials","getUserToken","CALL_HOLD","_callee17","_context17","_callee18","wsResponse","_context18","correlationId","_callee19","wsError","_context19","callback","registerMobiusSocketListener","Function","mockEvent","eventId","eventType","attachedCallback","calls","LISTENER_REGISTERED","unregisterMobiusSocketListener","LISTENER_UNREGISTERED"],"sources":["request.test.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {getTestUtilsWebex} from '../../common/testUtil';\nimport {HTTP_METHODS, WebexRequestPayload} from '../../common/types';\nimport log from '../../Logger';\nimport {APIRequest, createAPIRequest} from './request';\nimport {getMobiusSocketInstance} from '../../mobius-socket';\nimport {getMetricManager} from '../../Metrics';\nimport {METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION} from '../../Metrics/types';\nimport {isMobiusWssEnabled} from './wsFeatureFlag';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\nimport {MobiusSocketResponse, MobiusAsyncEvent} from './types';\n\n// Mock dependencies\njest.mock('../../mobius-socket', () => ({\n getMobiusSocketInstance: jest.fn(),\n}));\njest.mock('../../Metrics', () => ({\n getMetricManager: jest.fn(),\n}));\njest.mock('./wsFeatureFlag', () => ({\n isMobiusWssEnabled: jest.fn(),\n}));\njest.mock('uuid', () => ({\n v4: jest.fn(),\n}));\n\ndescribe('APIRequest', () => {\n let webex: ReturnType<typeof getTestUtilsWebex>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mockMobiusSocket: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mockMetricManager: any;\n let infoSpy: jest.SpyInstance;\n let logSpy: jest.SpyInstance;\n let warnSpy: jest.SpyInstance;\n let errorSpy: jest.SpyInstance;\n\n beforeEach(() => {\n APIRequest.resetInstance();\n webex = getTestUtilsWebex();\n jest.clearAllMocks();\n\n mockMobiusSocket = {\n connect: jest.fn().mockResolvedValue(undefined),\n disconnect: jest.fn().mockResolvedValue(undefined),\n sendWssRequest: jest.fn().mockResolvedValue({\n statusCode: 200,\n trackingId: 'test-tracking-id',\n data: {deviceId: 'test-device-id'},\n }),\n isConnected: jest.fn().mockReturnValue(false),\n getConnectedWebSocketUrl: jest.fn().mockReturnValue('wss://test.webex.com'),\n on: jest.fn(),\n off: jest.fn(),\n };\n\n mockMetricManager = {\n submitMobiusSocketMetric: jest.fn(),\n };\n\n (getMobiusSocketInstance as jest.Mock).mockReturnValue(mockMobiusSocket);\n (getMetricManager as jest.Mock).mockReturnValue(mockMetricManager);\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n (uuid as jest.Mock).mockReturnValue('mock-uuid-12345');\n\n infoSpy = jest.spyOn(log, 'info');\n logSpy = jest.spyOn(log, 'log');\n warnSpy = jest.spyOn(log, 'warn');\n errorSpy = jest.spyOn(log, 'error');\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('Constructor and singleton pattern', () => {\n it('should create instance with webex config and HTTP transport', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n expect(apiRequest).toBeDefined();\n expect(getMobiusSocketInstance).toHaveBeenCalledWith(webex);\n expect(getMetricManager).toHaveBeenCalledWith(webex);\n expect(isMobiusWssEnabled).toHaveBeenCalledWith(webex);\n expect(infoSpy).toHaveBeenCalledWith('APIRequest initialized with transport: HTTP', {\n file: 'REQUEST',\n method: 'constructor',\n });\n });\n\n it('should create instance with webex config and WSS transport when feature flag enabled', () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(true);\n\n const apiRequest = APIRequest.getInstance({webex});\n\n expect(apiRequest).toBeDefined();\n expect(infoSpy).toHaveBeenCalledWith('APIRequest initialized with transport: WSS', {\n file: 'REQUEST',\n method: 'constructor',\n });\n });\n\n it('should throw error if webex is missing from config', () => {\n expect(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n APIRequest.getInstance({webex: undefined as any});\n }).toThrow('WebexSDK instance is required');\n\n expect(errorSpy).toHaveBeenCalledWith(\n 'APIRequest instantiation failed: WebexSDK instance is required',\n {\n file: 'REQUEST',\n method: 'constructor',\n }\n );\n });\n\n it('should return same instance on subsequent getInstance() calls', () => {\n const instance1 = APIRequest.getInstance({webex});\n const instance2 = APIRequest.getInstance({webex});\n\n expect(instance1).toBe(instance2);\n });\n\n it('should clear singleton when resetInstance() is called', () => {\n const instance1 = APIRequest.getInstance({webex});\n\n APIRequest.resetInstance();\n\n const instance2 = APIRequest.getInstance({webex});\n\n expect(instance1).not.toBe(instance2);\n });\n });\n\n describe('createAPIRequest factory', () => {\n it('should create APIRequest instance using factory function', () => {\n const apiRequest = createAPIRequest({webex});\n\n expect(apiRequest).toBeDefined();\n expect(apiRequest).toBeInstanceOf(APIRequest);\n });\n });\n\n describe('isSocketEnabled', () => {\n it('should return false when WSS is disabled', () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = apiRequest.isSocketEnabled();\n\n expect(result).toBe(false);\n });\n\n it('should return true when WSS is enabled', () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(true);\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = apiRequest.isSocketEnabled();\n\n expect(result).toBe(true);\n });\n });\n\n describe('connectToMobiusSocket', () => {\n it('should return immediately if socket is already connected', async () => {\n mockMobiusSocket.isConnected.mockReturnValue(true);\n mockMobiusSocket.getConnectedWebSocketUrl.mockReturnValue('wss://existing.webex.com');\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = await apiRequest.connectToMobiusSocket('wss://test.webex.com');\n\n expect(result).toBe('wss://existing.webex.com');\n expect(mockMobiusSocket.connect).not.toHaveBeenCalled();\n expect(infoSpy).toHaveBeenCalledWith('Mobius WebSocket already connected', {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n });\n expect(mockMetricManager.submitMobiusSocketMetric).not.toHaveBeenCalled();\n });\n\n it('should initiate new connection if not connected', async () => {\n mockMobiusSocket.isConnected.mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const wssUrl = 'wss://test.webex.com/api/v1';\n\n const result = await apiRequest.connectToMobiusSocket(wssUrl);\n\n expect(mockMobiusSocket.connect).toHaveBeenCalledWith(wssUrl);\n expect(result).toBe(wssUrl);\n expect(infoSpy).toHaveBeenCalledWith(\n 'Mobius WebSocket not connected, initiating connection',\n {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n }\n );\n });\n\n it('should submit success metric on successful connection', async () => {\n mockMobiusSocket.isConnected.mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const wssUrl = 'wss://mobius.webex.com/api/v1';\n\n await apiRequest.connectToMobiusSocket(wssUrl);\n\n expect(logSpy).toHaveBeenCalledWith('Mobius WebSocket connected successfully', {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n });\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n });\n\n it('should throw normalized error on connection failure', async () => {\n const connectionError = {\n statusCode: 503,\n statusMessage: 'Service Unavailable',\n trackingId: 'error-tracking-id',\n response: {\n statusCode: 503,\n trackingId: 'error-tracking-id',\n data: {error: 'Connection failed'},\n metadata: {'x-error': 'true'},\n },\n };\n mockMobiusSocket.isConnected.mockReturnValue(false);\n mockMobiusSocket.connect.mockRejectedValue(connectionError);\n const apiRequest = APIRequest.getInstance({webex});\n const wssUrl = 'wss://mobius.webex.com/api/v1';\n\n await expect(apiRequest.connectToMobiusSocket(wssUrl)).rejects.toEqual({\n statusCode: 503,\n body: {error: 'Connection failed'},\n headers: {\n trackingid: 'error-tracking-id',\n 'x-error': 'true',\n },\n });\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mobius WebSocket connection failed'),\n {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n }\n );\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined,\n expect.any(String)\n );\n });\n\n it('should handle connection error with minimal error object', async () => {\n const minimalError = {statusCode: 500};\n mockMobiusSocket.isConnected.mockReturnValue(false);\n mockMobiusSocket.connect.mockRejectedValue(minimalError);\n const apiRequest = APIRequest.getInstance({webex});\n\n await expect(apiRequest.connectToMobiusSocket('wss://test.webex.com')).rejects.toEqual({\n statusCode: 500,\n body: undefined,\n headers: {\n trackingid: '',\n },\n });\n });\n });\n\n describe('disconnectFromMobiusSocket', () => {\n it('should disconnect successfully', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n await apiRequest.disconnectFromMobiusSocket();\n\n expect(mockMobiusSocket.disconnect).toHaveBeenCalledWith(undefined);\n expect(infoSpy).toHaveBeenCalledWith('Disconnecting from Mobius WebSocket', {\n file: 'REQUEST',\n method: 'disconnectFromMobiusSocket',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius WebSocket disconnected successfully', {\n file: 'REQUEST',\n method: 'disconnectFromMobiusSocket',\n });\n });\n\n it('should submit success metric after disconnect', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n await apiRequest.disconnectFromMobiusSocket();\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n 'wss://test.webex.com'\n );\n });\n\n it('should disconnect with custom options', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const options = {code: 1000, reason: 'Normal closure'};\n\n await apiRequest.disconnectFromMobiusSocket(options);\n\n expect(mockMobiusSocket.disconnect).toHaveBeenCalledWith(options);\n });\n\n it('should handle disconnect error silently and log warning', async () => {\n mockMobiusSocket.disconnect.mockRejectedValue(new Error('Disconnect failed'));\n const apiRequest = APIRequest.getInstance({webex});\n\n await expect(apiRequest.disconnectFromMobiusSocket()).resolves.not.toThrow();\n\n expect(warnSpy).toHaveBeenCalledWith(\n 'Mobius WebSocket disconnection failed: Error: Disconnect failed',\n {\n file: 'REQUEST',\n method: 'disconnectFromMobiusSocket',\n }\n );\n });\n\n it('should submit error metric on disconnect failure', async () => {\n mockMobiusSocket.disconnect.mockRejectedValue(new Error('Disconnect failed'));\n const apiRequest = APIRequest.getInstance({webex});\n\n await apiRequest.disconnectFromMobiusSocket();\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n 'wss://test.webex.com',\n undefined,\n 'Error: Disconnect failed'\n );\n });\n });\n\n describe('makeRequest - HTTP transport', () => {\n it('should route through webex.request when WSS is disabled', async () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n body: {userId: 'user-123'},\n };\n const expectedResponse: WebexRequestPayload = {\n statusCode: 200,\n body: {deviceId: 'device-456'},\n };\n webex.request.mockResolvedValue(expectedResponse);\n\n const result = await apiRequest.makeRequest(requestOptions);\n\n expect(webex.request).toHaveBeenCalledWith(requestOptions);\n expect(result).toEqual(expectedResponse);\n expect(infoSpy).toHaveBeenCalledWith('Dispatching request via HTTP ', {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n\n it('should pass request options unchanged to webex.request', async () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/devices/device-123',\n method: HTTP_METHODS.GET,\n headers: {'x-custom-header': 'value'},\n };\n webex.request.mockResolvedValue({statusCode: 200});\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(webex.request).toHaveBeenCalledWith(requestOptions);\n });\n\n it('should return webex.request result directly', async () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const expectedResponse = {\n statusCode: 404,\n body: {error: 'Not found'},\n headers: {'x-tracking-id': 'track-123'},\n };\n webex.request.mockResolvedValue(expectedResponse);\n\n const result = await apiRequest.makeRequest({\n uri: '/api/v1/test',\n method: HTTP_METHODS.GET,\n });\n\n expect(result).toEqual(expectedResponse);\n });\n });\n\n describe('makeRequest - WebSocket transport', () => {\n beforeEach(() => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(true);\n });\n\n it('should derive socket message type from URI and method', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n body: {userId: 'user-123'},\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n type: MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER,\n })\n );\n expect(infoSpy).toHaveBeenCalledWith('Dispatching request via WSS ', {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n\n it('should throw error if message type is UNKNOWN', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/unrecognized/path',\n method: HTTP_METHODS.POST,\n };\n\n await expect(apiRequest.makeRequest(requestOptions)).rejects.toThrow(\n 'Unknown Mobius Socket message type: UNKNOWN'\n );\n\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Unknown Mobius Socket message type'),\n {\n file: 'REQUEST',\n method: 'makeRequest',\n }\n );\n });\n\n it('should generate tracking ID with webex-js-sdk prefix', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(uuid).toHaveBeenCalled();\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n trackingId: 'webex-js-sdk_mock-uuid-12345',\n })\n );\n });\n\n it('should send WSS request with correct payload structure', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n body: {userId: 'user-123'},\n headers: {'x-custom': 'header-value'},\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith({\n type: MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER,\n trackingId: 'webex-js-sdk_mock-uuid-12345',\n metadata: {\n 'x-custom': 'header-value',\n userAgent: 'webex-calling/beta',\n authorization: '',\n },\n data: {userId: 'user-123'},\n });\n });\n\n it('should get user token for supplementary services (CALL_HOLD)', async () => {\n webex.credentials.getUserToken.mockResolvedValue('Bearer token-abc-123');\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/devices/device-123/services/callhold/hold',\n method: HTTP_METHODS.POST,\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(webex.credentials.getUserToken).toHaveBeenCalled();\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n type: MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD,\n metadata: expect.objectContaining({\n authorization: 'Bearer token-abc-123',\n }),\n })\n );\n });\n\n it('should not get user token for non-supplementary services', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(webex.credentials.getUserToken).not.toHaveBeenCalled();\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n metadata: expect.objectContaining({\n authorization: '',\n }),\n })\n );\n });\n\n it('should normalize success response to WebexRequestPayload shape', async () => {\n const wsResponse: MobiusSocketResponse = {\n type: 'register.response',\n statusCode: 201,\n statusMessage: 'Created',\n trackingId: 'track-123',\n data: {deviceId: 'device-456', correlationId: 'corr-789'},\n metadata: {'x-response-header': 'value'},\n };\n mockMobiusSocket.sendWssRequest.mockResolvedValue(wsResponse);\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = await apiRequest.makeRequest({\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n });\n\n expect(result).toEqual({\n statusCode: 201,\n body: {deviceId: 'device-456', correlationId: 'corr-789'},\n headers: {\n trackingid: 'track-123',\n 'x-response-header': 'value',\n },\n });\n expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('WSS request succeeded'), {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n\n it('should normalize error to WebexRequestPayload shape', async () => {\n const wsError = {\n statusCode: 400,\n statusMessage: 'Bad Request',\n trackingId: 'error-track-456',\n response: {\n statusCode: 400,\n trackingId: 'error-track-456',\n data: {error: 'Invalid request'},\n metadata: {'x-error-code': 'ERR001'},\n },\n };\n mockMobiusSocket.sendWssRequest.mockRejectedValue(wsError);\n const apiRequest = APIRequest.getInstance({webex});\n\n await expect(\n apiRequest.makeRequest({\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n })\n ).rejects.toEqual({\n statusCode: 400,\n body: {error: 'Invalid request'},\n headers: {\n trackingid: 'error-track-456',\n 'x-error-code': 'ERR001',\n },\n });\n\n expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('WSS request failed'), {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n });\n\n describe('registerMobiusSocketListener', () => {\n it('should attach listener to event:async_event', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const callback = jest.fn();\n\n apiRequest.registerMobiusSocketListener(callback);\n\n expect(mockMobiusSocket.on).toHaveBeenCalledWith('event:async_event', expect.any(Function));\n expect(infoSpy).toHaveBeenCalledWith('Attaching Mobius async event listener', {\n file: 'REQUEST',\n method: 'registerMobiusSocketListener',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius async event listener attached', {\n file: 'REQUEST',\n method: 'registerMobiusSocketListener',\n });\n });\n\n it('should invoke callback with event data when async event received', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const callback = jest.fn();\n const mockEvent: MobiusAsyncEvent = {\n type: 'event:async_event',\n eventId: 'evt-123',\n trackingId: 'track-456',\n data: {\n eventType: 'registration.down',\n } as any,\n };\n\n apiRequest.registerMobiusSocketListener(callback);\n\n const attachedCallback = mockMobiusSocket.on.mock.calls[0][1];\n attachedCallback(mockEvent);\n\n expect(callback).toHaveBeenCalledWith(mockEvent);\n });\n\n it('should submit LISTENER_REGISTERED metric', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const callback = jest.fn();\n\n apiRequest.registerMobiusSocketListener(callback);\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n });\n });\n\n describe('unregisterMobiusSocketListener', () => {\n it('should detach listener from event:async_event', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n apiRequest.unregisterMobiusSocketListener();\n\n expect(mockMobiusSocket.off).toHaveBeenCalledWith('event:async_event');\n expect(infoSpy).toHaveBeenCalledWith('Detaching Mobius async event listener', {\n file: 'REQUEST',\n method: 'unregisterMobiusSocketListener',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius async event listener detached', {\n file: 'REQUEST',\n method: 'unregisterMobiusSocketListener',\n });\n });\n\n it('should submit LISTENER_UNREGISTERED metric', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n apiRequest.unregisterMobiusSocketListener();\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_uuid","require","_testUtil","_types","_Logger","_interopRequireDefault","_request","_mobiusSocket","_Metrics","_types2","_wsFeatureFlag","_constants","jest","mock","getMobiusSocketInstance","fn","getMetricManager","isMobiusWssEnabled","v4","describe","webex","mockMobiusSocket","mockMetricManager","infoSpy","logSpy","warnSpy","errorSpy","beforeEach","APIRequest","resetInstance","getTestUtilsWebex","clearAllMocks","connect","mockResolvedValue","undefined","disconnect","sendWssRequest","statusCode","trackingId","data","deviceId","isConnected","mockReturnValue","getConnectedWebSocketUrl","on","off","submitMobiusSocketMetric","uuid","spyOn","log","afterEach","it","apiRequest","getInstance","expect","toBeDefined","toHaveBeenCalledWith","file","method","toThrow","instance1","instance2","toBe","not","createAPIRequest","toBeInstanceOf","result","isSocketEnabled","each","connected","isSocketConnected","toHaveBeenCalled","_asyncToGenerator2","default","_regenerator","mark","_callee","wrap","_context","prev","next","connectToMobiusSocket","sent","stop","_callee2","wssUrl","_context2","_callee3","_context3","METRIC_EVENT","MOBIUS_SOCKET","MOBIUS_SOCKET_ACTION","CONNECT","METRIC_TYPE","BEHAVIORAL","_callee4","connectionError","_context4","statusMessage","response","error","metadata","mockRejectedValue","rejects","toEqual","body","headers","trackingid","stringContaining","MOBIUS_SOCKET_ERROR","any","String","_callee5","minimalError","_context5","_callee6","_context6","disconnectFromMobiusSocket","_callee7","_context7","DISCONNECT","_callee8","options","_context8","code","reason","_callee9","_context9","Error","resolves","_callee0","_context0","_callee1","requestOptions","expectedResponse","_context1","uri","HTTP_METHODS","POST","userId","request","makeRequest","_callee10","_context10","GET","_callee11","_context11","_callee12","_context12","objectContaining","type","MOBIUS_SOCKET_MESSAGE_TYPE","REGISTER","_callee13","_context13","_callee14","_context14","_callee15","_context15","userAgent","authorization","_callee16","_context16","credentials","getUserToken","CALL_HOLD","_callee17","_context17","_callee18","wsResponse","_context18","correlationId","_callee19","wsError","_context19","callback","registerMobiusSocketListener","Function","mockEvent","eventId","eventType","attachedCallback","calls","LISTENER_REGISTERED","unregisterMobiusSocketListener","LISTENER_UNREGISTERED","getHandlerFor","eventName","call","find","_ref20","_ref21","_slicedToArray2","name","registerMobiusSocketConnectionListener","onConnected","onDisconnected","toHaveBeenCalledTimes","MOBIUS_SOCKET_DISCONNECT_REASON","PERMANENT","TRANSIENT","REPLACED","unregisterMobiusSocketConnectionListener"],"sources":["request.test.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {getTestUtilsWebex} from '../../common/testUtil';\nimport {HTTP_METHODS, WebexRequestPayload} from '../../common/types';\nimport log from '../../Logger';\nimport {APIRequest, createAPIRequest} from './request';\nimport {getMobiusSocketInstance} from '../../mobius-socket';\nimport {getMetricManager} from '../../Metrics';\nimport {METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION} from '../../Metrics/types';\nimport {isMobiusWssEnabled} from './wsFeatureFlag';\nimport {MOBIUS_SOCKET_DISCONNECT_REASON, MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\nimport {MobiusSocketResponse, MobiusAsyncEvent} from './types';\n\n// Mock dependencies\njest.mock('../../mobius-socket', () => ({\n getMobiusSocketInstance: jest.fn(),\n}));\njest.mock('../../Metrics', () => ({\n getMetricManager: jest.fn(),\n}));\njest.mock('./wsFeatureFlag', () => ({\n isMobiusWssEnabled: jest.fn(),\n}));\njest.mock('uuid', () => ({\n v4: jest.fn(),\n}));\n\ndescribe('APIRequest', () => {\n let webex: ReturnType<typeof getTestUtilsWebex>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mockMobiusSocket: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mockMetricManager: any;\n let infoSpy: jest.SpyInstance;\n let logSpy: jest.SpyInstance;\n let warnSpy: jest.SpyInstance;\n let errorSpy: jest.SpyInstance;\n\n beforeEach(() => {\n APIRequest.resetInstance();\n webex = getTestUtilsWebex();\n jest.clearAllMocks();\n\n mockMobiusSocket = {\n connect: jest.fn().mockResolvedValue(undefined),\n disconnect: jest.fn().mockResolvedValue(undefined),\n sendWssRequest: jest.fn().mockResolvedValue({\n statusCode: 200,\n trackingId: 'test-tracking-id',\n data: {deviceId: 'test-device-id'},\n }),\n isConnected: jest.fn().mockReturnValue(false),\n getConnectedWebSocketUrl: jest.fn().mockReturnValue('wss://test.webex.com'),\n on: jest.fn(),\n off: jest.fn(),\n };\n\n mockMetricManager = {\n submitMobiusSocketMetric: jest.fn(),\n };\n\n (getMobiusSocketInstance as jest.Mock).mockReturnValue(mockMobiusSocket);\n (getMetricManager as jest.Mock).mockReturnValue(mockMetricManager);\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n (uuid as jest.Mock).mockReturnValue('mock-uuid-12345');\n\n infoSpy = jest.spyOn(log, 'info');\n logSpy = jest.spyOn(log, 'log');\n warnSpy = jest.spyOn(log, 'warn');\n errorSpy = jest.spyOn(log, 'error');\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('Constructor and singleton pattern', () => {\n it('should create instance with webex config and HTTP transport', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n expect(apiRequest).toBeDefined();\n expect(getMobiusSocketInstance).toHaveBeenCalledWith(webex);\n expect(getMetricManager).toHaveBeenCalledWith(webex);\n expect(isMobiusWssEnabled).toHaveBeenCalledWith(webex);\n expect(infoSpy).toHaveBeenCalledWith('APIRequest initialized with transport: HTTP', {\n file: 'REQUEST',\n method: 'constructor',\n });\n });\n\n it('should create instance with webex config and WSS transport when feature flag enabled', () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(true);\n\n const apiRequest = APIRequest.getInstance({webex});\n\n expect(apiRequest).toBeDefined();\n expect(infoSpy).toHaveBeenCalledWith('APIRequest initialized with transport: WSS', {\n file: 'REQUEST',\n method: 'constructor',\n });\n });\n\n it('should throw error if webex is missing from config', () => {\n expect(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n APIRequest.getInstance({webex: undefined as any});\n }).toThrow('WebexSDK instance is required');\n\n expect(errorSpy).toHaveBeenCalledWith(\n 'APIRequest instantiation failed: WebexSDK instance is required',\n {\n file: 'REQUEST',\n method: 'constructor',\n }\n );\n });\n\n it('should return same instance on subsequent getInstance() calls', () => {\n const instance1 = APIRequest.getInstance({webex});\n const instance2 = APIRequest.getInstance({webex});\n\n expect(instance1).toBe(instance2);\n });\n\n it('should clear singleton when resetInstance() is called', () => {\n const instance1 = APIRequest.getInstance({webex});\n\n APIRequest.resetInstance();\n\n const instance2 = APIRequest.getInstance({webex});\n\n expect(instance1).not.toBe(instance2);\n });\n });\n\n describe('createAPIRequest factory', () => {\n it('should create APIRequest instance using factory function', () => {\n const apiRequest = createAPIRequest({webex});\n\n expect(apiRequest).toBeDefined();\n expect(apiRequest).toBeInstanceOf(APIRequest);\n });\n });\n\n describe('isSocketEnabled', () => {\n it('should return false when WSS is disabled', () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = apiRequest.isSocketEnabled();\n\n expect(result).toBe(false);\n });\n\n it('should return true when WSS is enabled', () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(true);\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = apiRequest.isSocketEnabled();\n\n expect(result).toBe(true);\n });\n });\n\n describe('isSocketConnected', () => {\n it.each([true, false])(\n 'should delegate to the Mobius socket isConnected() and return %s',\n (connected) => {\n mockMobiusSocket.isConnected.mockReturnValue(connected);\n const apiRequest = APIRequest.getInstance({webex});\n\n expect(apiRequest.isSocketConnected()).toBe(connected);\n expect(mockMobiusSocket.isConnected).toHaveBeenCalled();\n }\n );\n });\n\n describe('connectToMobiusSocket', () => {\n it('should return immediately if socket is already connected', async () => {\n mockMobiusSocket.isConnected.mockReturnValue(true);\n mockMobiusSocket.getConnectedWebSocketUrl.mockReturnValue('wss://existing.webex.com');\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = await apiRequest.connectToMobiusSocket('wss://test.webex.com');\n\n expect(result).toBe('wss://existing.webex.com');\n expect(mockMobiusSocket.connect).not.toHaveBeenCalled();\n expect(infoSpy).toHaveBeenCalledWith('Mobius WebSocket already connected', {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n });\n expect(mockMetricManager.submitMobiusSocketMetric).not.toHaveBeenCalled();\n });\n\n it('should initiate new connection if not connected', async () => {\n mockMobiusSocket.isConnected.mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const wssUrl = 'wss://test.webex.com/api/v1';\n\n const result = await apiRequest.connectToMobiusSocket(wssUrl);\n\n expect(mockMobiusSocket.connect).toHaveBeenCalledWith(wssUrl);\n expect(result).toBe(wssUrl);\n expect(infoSpy).toHaveBeenCalledWith(\n 'Mobius WebSocket not connected, initiating connection',\n {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n }\n );\n });\n\n it('should submit success metric on successful connection', async () => {\n mockMobiusSocket.isConnected.mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const wssUrl = 'wss://mobius.webex.com/api/v1';\n\n await apiRequest.connectToMobiusSocket(wssUrl);\n\n expect(logSpy).toHaveBeenCalledWith('Mobius WebSocket connected successfully', {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n });\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n });\n\n it('should throw normalized error on connection failure', async () => {\n const connectionError = {\n statusCode: 503,\n statusMessage: 'Service Unavailable',\n trackingId: 'error-tracking-id',\n response: {\n statusCode: 503,\n trackingId: 'error-tracking-id',\n data: {error: 'Connection failed'},\n metadata: {'x-error': 'true'},\n },\n };\n mockMobiusSocket.isConnected.mockReturnValue(false);\n mockMobiusSocket.connect.mockRejectedValue(connectionError);\n const apiRequest = APIRequest.getInstance({webex});\n const wssUrl = 'wss://mobius.webex.com/api/v1';\n\n await expect(apiRequest.connectToMobiusSocket(wssUrl)).rejects.toEqual({\n statusCode: 503,\n body: {error: 'Connection failed'},\n headers: {\n trackingid: 'error-tracking-id',\n 'x-error': 'true',\n },\n });\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mobius WebSocket connection failed'),\n {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n }\n );\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined,\n expect.any(String)\n );\n });\n\n it('should handle connection error with minimal error object', async () => {\n const minimalError = {statusCode: 500};\n mockMobiusSocket.isConnected.mockReturnValue(false);\n mockMobiusSocket.connect.mockRejectedValue(minimalError);\n const apiRequest = APIRequest.getInstance({webex});\n\n await expect(apiRequest.connectToMobiusSocket('wss://test.webex.com')).rejects.toEqual({\n statusCode: 500,\n body: undefined,\n headers: {\n trackingid: '',\n },\n });\n });\n });\n\n describe('disconnectFromMobiusSocket', () => {\n it('should disconnect successfully', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n await apiRequest.disconnectFromMobiusSocket();\n\n expect(mockMobiusSocket.disconnect).toHaveBeenCalledWith(undefined);\n expect(infoSpy).toHaveBeenCalledWith('Disconnecting from Mobius WebSocket', {\n file: 'REQUEST',\n method: 'disconnectFromMobiusSocket',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius WebSocket disconnected successfully', {\n file: 'REQUEST',\n method: 'disconnectFromMobiusSocket',\n });\n });\n\n it('should submit success metric after disconnect', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n await apiRequest.disconnectFromMobiusSocket();\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n 'wss://test.webex.com'\n );\n });\n\n it('should disconnect with custom options', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const options = {code: 1000, reason: 'Normal closure'};\n\n await apiRequest.disconnectFromMobiusSocket(options);\n\n expect(mockMobiusSocket.disconnect).toHaveBeenCalledWith(options);\n });\n\n it('should handle disconnect error silently and log warning', async () => {\n mockMobiusSocket.disconnect.mockRejectedValue(new Error('Disconnect failed'));\n const apiRequest = APIRequest.getInstance({webex});\n\n await expect(apiRequest.disconnectFromMobiusSocket()).resolves.not.toThrow();\n\n expect(warnSpy).toHaveBeenCalledWith(\n 'Mobius WebSocket disconnection failed: Error: Disconnect failed',\n {\n file: 'REQUEST',\n method: 'disconnectFromMobiusSocket',\n }\n );\n });\n\n it('should submit error metric on disconnect failure', async () => {\n mockMobiusSocket.disconnect.mockRejectedValue(new Error('Disconnect failed'));\n const apiRequest = APIRequest.getInstance({webex});\n\n await apiRequest.disconnectFromMobiusSocket();\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n 'wss://test.webex.com',\n undefined,\n 'Error: Disconnect failed'\n );\n });\n });\n\n describe('makeRequest - HTTP transport', () => {\n it('should route through webex.request when WSS is disabled', async () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n body: {userId: 'user-123'},\n };\n const expectedResponse: WebexRequestPayload = {\n statusCode: 200,\n body: {deviceId: 'device-456'},\n };\n webex.request.mockResolvedValue(expectedResponse);\n\n const result = await apiRequest.makeRequest(requestOptions);\n\n expect(webex.request).toHaveBeenCalledWith(requestOptions);\n expect(result).toEqual(expectedResponse);\n expect(infoSpy).toHaveBeenCalledWith('Dispatching request via HTTP ', {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n\n it('should pass request options unchanged to webex.request', async () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/devices/device-123',\n method: HTTP_METHODS.GET,\n headers: {'x-custom-header': 'value'},\n };\n webex.request.mockResolvedValue({statusCode: 200});\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(webex.request).toHaveBeenCalledWith(requestOptions);\n });\n\n it('should return webex.request result directly', async () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const expectedResponse = {\n statusCode: 404,\n body: {error: 'Not found'},\n headers: {'x-tracking-id': 'track-123'},\n };\n webex.request.mockResolvedValue(expectedResponse);\n\n const result = await apiRequest.makeRequest({\n uri: '/api/v1/test',\n method: HTTP_METHODS.GET,\n });\n\n expect(result).toEqual(expectedResponse);\n });\n });\n\n describe('makeRequest - WebSocket transport', () => {\n beforeEach(() => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(true);\n });\n\n it('should derive socket message type from URI and method', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n body: {userId: 'user-123'},\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n type: MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER,\n })\n );\n expect(infoSpy).toHaveBeenCalledWith('Dispatching request via WSS ', {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n\n it('should throw error if message type is UNKNOWN', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/unrecognized/path',\n method: HTTP_METHODS.POST,\n };\n\n await expect(apiRequest.makeRequest(requestOptions)).rejects.toThrow(\n 'Unknown Mobius Socket message type: UNKNOWN'\n );\n\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Unknown Mobius Socket message type'),\n {\n file: 'REQUEST',\n method: 'makeRequest',\n }\n );\n });\n\n it('should generate tracking ID with webex-js-sdk prefix', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(uuid).toHaveBeenCalled();\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n trackingId: 'webex-js-sdk_mock-uuid-12345',\n })\n );\n });\n\n it('should send WSS request with correct payload structure', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n body: {userId: 'user-123'},\n headers: {'x-custom': 'header-value'},\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith({\n type: MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER,\n trackingId: 'webex-js-sdk_mock-uuid-12345',\n metadata: {\n 'x-custom': 'header-value',\n userAgent: 'webex-calling/beta',\n authorization: '',\n },\n data: {userId: 'user-123'},\n });\n });\n\n it('should get user token for supplementary services (CALL_HOLD)', async () => {\n webex.credentials.getUserToken.mockResolvedValue('Bearer token-abc-123');\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/devices/device-123/services/callhold/hold',\n method: HTTP_METHODS.POST,\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(webex.credentials.getUserToken).toHaveBeenCalled();\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n type: MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD,\n metadata: expect.objectContaining({\n authorization: 'Bearer token-abc-123',\n }),\n })\n );\n });\n\n it('should not get user token for non-supplementary services', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(webex.credentials.getUserToken).not.toHaveBeenCalled();\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n metadata: expect.objectContaining({\n authorization: '',\n }),\n })\n );\n });\n\n it('should normalize success response to WebexRequestPayload shape', async () => {\n const wsResponse: MobiusSocketResponse = {\n type: 'register.response',\n statusCode: 201,\n statusMessage: 'Created',\n trackingId: 'track-123',\n data: {deviceId: 'device-456', correlationId: 'corr-789'},\n metadata: {'x-response-header': 'value'},\n };\n mockMobiusSocket.sendWssRequest.mockResolvedValue(wsResponse);\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = await apiRequest.makeRequest({\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n });\n\n expect(result).toEqual({\n statusCode: 201,\n body: {deviceId: 'device-456', correlationId: 'corr-789'},\n headers: {\n trackingid: 'track-123',\n 'x-response-header': 'value',\n },\n });\n expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('WSS request succeeded'), {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n\n it('should normalize error to WebexRequestPayload shape', async () => {\n const wsError = {\n statusCode: 400,\n statusMessage: 'Bad Request',\n trackingId: 'error-track-456',\n response: {\n statusCode: 400,\n trackingId: 'error-track-456',\n data: {error: 'Invalid request'},\n metadata: {'x-error-code': 'ERR001'},\n },\n };\n mockMobiusSocket.sendWssRequest.mockRejectedValue(wsError);\n const apiRequest = APIRequest.getInstance({webex});\n\n await expect(\n apiRequest.makeRequest({\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n })\n ).rejects.toEqual({\n statusCode: 400,\n body: {error: 'Invalid request'},\n headers: {\n trackingid: 'error-track-456',\n 'x-error-code': 'ERR001',\n },\n });\n\n expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('WSS request failed'), {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n });\n\n describe('registerMobiusSocketListener', () => {\n it('should attach listener to event:async_event', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const callback = jest.fn();\n\n apiRequest.registerMobiusSocketListener(callback);\n\n expect(mockMobiusSocket.on).toHaveBeenCalledWith('event:async_event', expect.any(Function));\n expect(infoSpy).toHaveBeenCalledWith('Attaching Mobius async event listener', {\n file: 'REQUEST',\n method: 'registerMobiusSocketListener',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius async event listener attached', {\n file: 'REQUEST',\n method: 'registerMobiusSocketListener',\n });\n });\n\n it('should invoke callback with event data when async event received', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const callback = jest.fn();\n const mockEvent: MobiusAsyncEvent = {\n type: 'event:async_event',\n eventId: 'evt-123',\n trackingId: 'track-456',\n data: {\n eventType: 'registration.down',\n } as any,\n };\n\n apiRequest.registerMobiusSocketListener(callback);\n\n const attachedCallback = mockMobiusSocket.on.mock.calls[0][1];\n attachedCallback(mockEvent);\n\n expect(callback).toHaveBeenCalledWith(mockEvent);\n });\n\n it('should submit LISTENER_REGISTERED metric', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const callback = jest.fn();\n\n apiRequest.registerMobiusSocketListener(callback);\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n });\n });\n\n describe('unregisterMobiusSocketListener', () => {\n it('should detach listener from event:async_event', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n apiRequest.unregisterMobiusSocketListener();\n\n expect(mockMobiusSocket.off).toHaveBeenCalledWith('event:async_event');\n expect(infoSpy).toHaveBeenCalledWith('Detaching Mobius async event listener', {\n file: 'REQUEST',\n method: 'unregisterMobiusSocketListener',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius async event listener detached', {\n file: 'REQUEST',\n method: 'unregisterMobiusSocketListener',\n });\n });\n\n it('should submit LISTENER_UNREGISTERED metric', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n apiRequest.unregisterMobiusSocketListener();\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n });\n });\n\n describe('registerMobiusSocketConnectionListener', () => {\n const getHandlerFor = (eventName: string): ((...args: unknown[]) => void) => {\n const call = mockMobiusSocket.on.mock.calls.find(([name]: [string]) => name === eventName);\n\n return call[1];\n };\n\n it('should attach listeners to online and offline.* socket events', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n apiRequest.registerMobiusSocketConnectionListener({\n onConnected: jest.fn(),\n onDisconnected: jest.fn(),\n });\n\n expect(mockMobiusSocket.on).toHaveBeenCalledWith('online', expect.any(Function));\n expect(mockMobiusSocket.on).toHaveBeenCalledWith('offline.permanent', expect.any(Function));\n expect(mockMobiusSocket.on).toHaveBeenCalledWith('offline.transient', expect.any(Function));\n expect(mockMobiusSocket.on).toHaveBeenCalledWith('offline.replaced', expect.any(Function));\n expect(infoSpy).toHaveBeenCalledWith('Attaching Mobius socket connection listener', {\n file: 'REQUEST',\n method: 'registerMobiusSocketConnectionListener',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius socket connection listener attached', {\n file: 'REQUEST',\n method: 'registerMobiusSocketConnectionListener',\n });\n });\n\n it('should invoke onConnected when the online event fires', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const onConnected = jest.fn();\n\n apiRequest.registerMobiusSocketConnectionListener({\n onConnected,\n onDisconnected: jest.fn(),\n });\n\n getHandlerFor('online')();\n\n expect(onConnected).toHaveBeenCalledTimes(1);\n });\n\n it.each([\n ['offline.permanent', MOBIUS_SOCKET_DISCONNECT_REASON.PERMANENT],\n ['offline.transient', MOBIUS_SOCKET_DISCONNECT_REASON.TRANSIENT],\n ['offline.replaced', MOBIUS_SOCKET_DISCONNECT_REASON.REPLACED],\n ])('should invoke onDisconnected with %s reason when %s fires', (eventName, reason) => {\n const apiRequest = APIRequest.getInstance({webex});\n const onDisconnected = jest.fn();\n\n apiRequest.registerMobiusSocketConnectionListener({\n onConnected: jest.fn(),\n onDisconnected,\n });\n\n getHandlerFor(eventName as string)();\n\n expect(onDisconnected).toHaveBeenCalledTimes(1);\n expect(onDisconnected).toHaveBeenCalledWith(reason);\n });\n });\n\n describe('unregisterMobiusSocketConnectionListener', () => {\n it('should detach listeners from online and offline.* socket events', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n apiRequest.unregisterMobiusSocketConnectionListener();\n\n expect(mockMobiusSocket.off).toHaveBeenCalledWith('online');\n expect(mockMobiusSocket.off).toHaveBeenCalledWith('offline.permanent');\n expect(mockMobiusSocket.off).toHaveBeenCalledWith('offline.transient');\n expect(mockMobiusSocket.off).toHaveBeenCalledWith('offline.replaced');\n expect(infoSpy).toHaveBeenCalledWith('Detaching Mobius socket connection listener', {\n file: 'REQUEST',\n method: 'unregisterMobiusSocketConnectionListener',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius socket connection listener detached', {\n file: 'REQUEST',\n method: 'unregisterMobiusSocketConnectionListener',\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {MobiusCallData, MobiusRegistrationDownData} from '../calling/types';\nimport {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\n\n/**\n * Configuration for APIRequest class\n */\nexport interface APIRequestConfig {\n /** Webex SDK instance for making requests */\n webex: WebexSDK;\n}\n\n/**\n * Request options for makeRequest method (alias for compatibility)\n */\nexport type APIRequestOptions = WebexRequestPayload;\n\n/**\n * Request options for Mobius WebSocket requests\n */\nexport interface MobiusSocketRequestOptions {\n /** Request type (typically HTTP method like GET, POST, etc.) */\n type: string;\n /** Unique tracking ID for the request */\n trackingId: string;\n /** Optional metadata (uri, service, headers, etc.) */\n metadata?: Record<string, unknown>;\n /** Optional request data/body */\n data?: unknown;\n}\n\n/**\n * Response structure for Mobius WebSocket requests\n */\nexport type MobiusSocketResponse = {\n type: string;\n trackingId: string;\n statusCode: number;\n statusMessage: string;\n metadata?: Record<string, unknown>;\n data?: unknown;\n};\n\n/**\n * Function signature for MobiusSocket.sendWssRequest.\n * Sends a websocket request data and resolves when the matching response arrives.\n */\nexport type SendWssRequestFn = (\n data: MobiusSocketRequestOptions,\n options?: Record<string, unknown>\n) => Promise<MobiusSocketResponse>;\n\nexport type MobiusAsyncEvent = {\n type: string;\n eventId: string;\n trackingId: string;\n data: MobiusCallData | MobiusRegistrationDownData;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {MobiusCallData, MobiusRegistrationDownData} from '../calling/types';\nimport {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\nimport {MOBIUS_SOCKET_DISCONNECT_REASON} from './constants';\n\n/**\n * Configuration for APIRequest class\n */\nexport interface APIRequestConfig {\n /** Webex SDK instance for making requests */\n webex: WebexSDK;\n}\n\n/**\n * Request options for makeRequest method (alias for compatibility)\n */\nexport type APIRequestOptions = WebexRequestPayload;\n\n/**\n * Request options for Mobius WebSocket requests\n */\nexport interface MobiusSocketRequestOptions {\n /** Request type (typically HTTP method like GET, POST, etc.) */\n type: string;\n /** Unique tracking ID for the request */\n trackingId: string;\n /** Optional metadata (uri, service, headers, etc.) */\n metadata?: Record<string, unknown>;\n /** Optional request data/body */\n data?: unknown;\n}\n\n/**\n * Response structure for Mobius WebSocket requests\n */\nexport type MobiusSocketResponse = {\n type: string;\n trackingId: string;\n statusCode: number;\n statusMessage: string;\n metadata?: Record<string, unknown>;\n data?: unknown;\n};\n\n/**\n * Function signature for MobiusSocket.sendWssRequest.\n * Sends a websocket request data and resolves when the matching response arrives.\n */\nexport type SendWssRequestFn = (\n data: MobiusSocketRequestOptions,\n options?: Record<string, unknown>\n) => Promise<MobiusSocketResponse>;\n\nexport type MobiusAsyncEvent = {\n type: string;\n eventId: string;\n trackingId: string;\n data: MobiusCallData | MobiusRegistrationDownData;\n};\n\n/**\n * Callbacks invoked when the Mobius WebSocket connects or disconnects.\n */\nexport type MobiusSocketConnectionListener = {\n onConnected: () => void;\n onDisconnected: (reason: MOBIUS_SOCKET_DISCONNECT_REASON) => void;\n};\n"],"mappings":"","ignoreList":[]}
@@ -4,8 +4,16 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
4
4
  _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.SessionType = exports.SUPPLEMENTARY_SERVICES = exports.MOBIUS_MIDCALL_STATE = exports.MOBIUS_EVENT_KEYS = exports.MEDIA_CONNECTION_EVENT_KEYS = exports.LINE_EVENT_KEYS = exports.Disposition = exports.COMMON_EVENT_KEYS = exports.CALL_EVENT_KEYS = exports.CALLING_CLIENT_EVENT_KEYS = void 0;
7
+ exports.MOBIUS_MIDCALL_STATE = exports.MOBIUS_EVENT_KEYS = exports.MEDIA_CONNECTION_EVENT_KEYS = exports.LINE_EVENT_KEYS = exports.Disposition = exports.COMMON_EVENT_KEYS = exports.CALL_EVENT_KEYS = exports.CALLING_CLIENT_EVENT_KEYS = void 0;
8
+ _Object$defineProperty(exports, "MOBIUS_SOCKET_DISCONNECT_REASON", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _constants.MOBIUS_SOCKET_DISCONNECT_REASON;
12
+ }
13
+ });
14
+ exports.SessionType = exports.SUPPLEMENTARY_SERVICES = void 0;
8
15
  var _types = require("../CallingClient/line/types");
16
+ var _constants = require("../CallingClient/utils/constants");
9
17
  /* eslint-disable @typescript-eslint/no-unused-vars */
10
18
  // TODO: remove once we define the payloads
11
19
  /** External Eventing Start */
@@ -25,6 +33,8 @@ var CALLING_CLIENT_EVENT_KEYS = exports.CALLING_CLIENT_EVENT_KEYS = /*#__PURE__*
25
33
  CALLING_CLIENT_EVENT_KEYS["OUTGOING_CALL"] = "callingClient:outgoing_call";
26
34
  CALLING_CLIENT_EVENT_KEYS["USER_SESSION_INFO"] = "callingClient:user_recent_sessions";
27
35
  CALLING_CLIENT_EVENT_KEYS["ALL_CALLS_CLEARED"] = "callingClient:all_calls_cleared";
36
+ CALLING_CLIENT_EVENT_KEYS["MOBIUS_SOCKET_CONNECTED"] = "callingClient:mobius_socket_connected";
37
+ CALLING_CLIENT_EVENT_KEYS["MOBIUS_SOCKET_DISCONNECTED"] = "callingClient:mobius_socket_disconnected";
28
38
  return CALLING_CLIENT_EVENT_KEYS;
29
39
  }({});
30
40
  var CALL_EVENT_KEYS = exports.CALL_EVENT_KEYS = /*#__PURE__*/function (CALL_EVENT_KEYS) {
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","COMMON_EVENT_KEYS","exports","LINE_EVENT_KEYS","CALLING_CLIENT_EVENT_KEYS","CALL_EVENT_KEYS","SUPPLEMENTARY_SERVICES","MOBIUS_MIDCALL_STATE","Disposition","SessionType","MOBIUS_EVENT_KEYS","MEDIA_CONNECTION_EVENT_KEYS","CALL_STATE"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */ // TODO: remove once we define the payloads\nimport {ILine} from '../api';\nimport {LINE_EVENTS} from '../CallingClient/line/types';\nimport type {ICall} from '../CallingClient/calling/types';\nimport {CallId, DisplayInformation} from '../common/types';\nimport {CallError, CallingClientError, LineError} from '../Errors';\n\n/** External Eventing Start */\nexport enum COMMON_EVENT_KEYS {\n CB_VOICEMESSAGE_CONTENT_GET = 'call_back_voicemail_content_get',\n CALL_HISTORY_USER_SESSION_INFO = 'callHistory:user_recent_sessions',\n CALL_HISTORY_USER_VIEWED_SESSIONS = 'callHistory:user_viewed_sessions',\n CALL_HISTORY_USER_SESSIONS_DELETED = 'callHistory:user_sessions_deleted',\n}\n\nexport enum LINE_EVENT_KEYS {\n INCOMING_CALL = 'incoming_call',\n}\n\nexport enum CALLING_CLIENT_EVENT_KEYS {\n ERROR = 'callingClient:error',\n OUTGOING_CALL = 'callingClient:outgoing_call',\n USER_SESSION_INFO = 'callingClient:user_recent_sessions',\n ALL_CALLS_CLEARED = 'callingClient:all_calls_cleared',\n}\n\nexport enum CALL_EVENT_KEYS {\n ALERTING = 'alerting',\n CALL_ERROR = 'call_error',\n CALLER_ID = 'caller_id',\n CONNECT = 'connect',\n DISCONNECT = 'disconnect',\n ESTABLISHED = 'established',\n HELD = 'held',\n HOLD_ERROR = 'hold_error',\n PROGRESS = 'progress',\n REMOTE_MEDIA = 'remote_media',\n RESUME_ERROR = 'resume_error',\n RESUMED = 'resumed',\n TRANSFER_ERROR = 'transfer_error',\n}\n\nexport enum SUPPLEMENTARY_SERVICES {\n HOLD = 'hold',\n RESUME = 'resume',\n DIVERT = 'divert',\n TRANSFER = 'transfer',\n PARK = 'park',\n}\n\nexport enum MOBIUS_MIDCALL_STATE {\n HELD = 'HELD',\n CONNECTED = 'CONNECTED',\n}\n\nexport enum Disposition {\n ANSWERED = 'Answered',\n CANCELED = 'Canceled',\n INITIATED = 'Initiated',\n MISSED = 'MISSED',\n}\n\nexport type CallRecordLink = {\n locusUrl?: string;\n conversationUrl?: string;\n callbackAddress: string;\n};\n\nexport type CallBackInfo = {\n callbackAddress: string;\n callbackType: string;\n};\n\nexport type LookUpInfo = {\n lookupLink: string;\n type: string;\n};\n\nexport type CallRecordSelf = {\n id: string;\n name?: string;\n phoneNumber?: string;\n cucmDN?: string;\n ucmLineNumber?: number;\n};\n\nexport type CallRecordListOther = {\n ownerId?: string;\n id: string;\n name?: string;\n sipUrl?: string;\n primaryDisplayString?: string;\n secondaryDisplayString?: string;\n isPrivate: boolean;\n callbackAddress: string;\n phoneNumber?: string;\n contact?: string;\n email?: string;\n};\n\nexport type RedirectionDetails = {\n phoneNumber?: string;\n sipUrl?: string;\n name?: string;\n reason: string;\n userId?: string;\n isPrivate: boolean;\n};\n\nexport enum SessionType {\n SPARK = 'SPARK',\n WEBEX_CALLING = 'WEBEXCALLING',\n}\n\nexport type UserSession = {\n id: string;\n sessionId: string;\n disposition: Disposition;\n startTime: string;\n endTime: string;\n url: string;\n durationSeconds: number;\n joinedDurationSeconds: number;\n participantCount: number;\n isDeleted: boolean;\n isPMR: boolean;\n correlationIds: string[];\n links: CallRecordLink;\n self: CallRecordSelf;\n durationSecs: number;\n other: CallRecordListOther;\n sessionType: SessionType;\n direction: string;\n callingSpecifics?: {\n redirectionDetails: RedirectionDetails;\n };\n};\n\nexport type CallingParty = {\n name?: string;\n number?: string;\n privacyEnabled?: boolean;\n userId?: string;\n address?: string;\n};\n\nexport type Item = {\n id?: string;\n duration?: number;\n callingParty?: CallingParty;\n urgent?: boolean;\n confidential?: boolean;\n read?: boolean;\n created?: string;\n messageId?: string;\n time?: number;\n};\n\nexport enum MOBIUS_EVENT_KEYS {\n SERVER_EVENT_INCLUSIVE = 'event:mobius',\n CALL_SESSION_EVENT_INCLUSIVE = 'event:janus.user_recent_sessions',\n CALL_SESSION_EVENT_LEGACY = 'event:janus.user_sessions',\n CALL_SESSION_EVENT_VIEWED = 'event:janus.user_viewed_sessions',\n CALL_SESSION_EVENT_DELETED = 'event:janus.user_sessions_deleted',\n}\n\nexport type CallSessionData = {\n userSessions: {\n userSessions: UserSession[];\n statusCode: number;\n };\n eventType:\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY;\n};\n\nexport type CallSessionEvent = {\n id: string;\n data: CallSessionData;\n timestamp: number;\n trackingId: string;\n};\n\nexport enum MEDIA_CONNECTION_EVENT_KEYS {\n ROAP_MESSAGE_TO_SEND = 'roap:messageToSend',\n MEDIA_TYPE_AUDIO = 'audio',\n}\n\nexport type CallerIdDisplay = {\n correlationId: string;\n callerId: DisplayInformation;\n};\n\nexport type LineEventTypes = {\n [LINE_EVENTS.CONNECTING]: () => void;\n [LINE_EVENTS.ERROR]: (error: LineError) => void;\n [LINE_EVENTS.RECONNECTED]: () => void;\n [LINE_EVENTS.RECONNECTING]: () => void;\n [LINE_EVENTS.REGISTERED]: (lineInfo: ILine) => void;\n [LINE_EVENTS.UNREGISTERED]: () => void;\n [LINE_EVENTS.INCOMING_CALL]: (callObj: ICall) => void;\n};\n\nexport type CallEventTypes = {\n [CALL_EVENT_KEYS.CALL_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.CALLER_ID]: (display: CallerIdDisplay) => void;\n [CALL_EVENT_KEYS.CONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.DISCONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.ESTABLISHED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HELD]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HOLD_ERROR]: (error: CallError) => void;\n [LINE_EVENT_KEYS.INCOMING_CALL]: (callObj: ICall) => void;\n [CALL_EVENT_KEYS.PROGRESS]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.REMOTE_MEDIA]: (track: MediaStreamTrack) => void;\n [CALL_EVENT_KEYS.RESUME_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.RESUMED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.TRANSFER_ERROR]: (error: CallError) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type MessageId = {\n messageId: string;\n};\n\nexport type VoicemailEventTypes = {\n [COMMON_EVENT_KEYS.CB_VOICEMESSAGE_CONTENT_GET]: (messageId: MessageId) => void;\n};\n\nexport type CallingClientEventTypes = {\n [CALLING_CLIENT_EVENT_KEYS.ERROR]: (error: CallingClientError) => void;\n [CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [CALLING_CLIENT_EVENT_KEYS.OUTGOING_CALL]: (callId: string) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type CallHistoryEventTypes = {\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS]: (event: CallSessionViewedEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED]: (event: CallSessionDeletedEvent) => void;\n};\n/* External Eventing End */\n\n/** Internal Eventing Start */\nenum CALL_STATE {\n HELD = 'held',\n REMOTE_HELD = 'remoteheld',\n CONNECTED = 'connected',\n}\n\ntype eventType = string;\n\ntype callProgressData = {\n alerting: boolean;\n inbandROAP: boolean;\n};\n\nexport type CallerIdInfo = {\n 'x-broadworks-remote-party-info'?: string;\n 'p-asserted-identity'?: string;\n from?: string;\n};\n\ntype callId = string;\ntype deviceId = string;\ntype correlationId = string;\ntype callUrl = string;\ntype causecode = number;\ntype cause = string;\n\ntype eventData = {\n callerId: CallerIdInfo;\n callState: CALL_STATE;\n};\n\ntype midCallServiceData = {\n eventType: eventType;\n eventData: eventData;\n};\n\ntype midCallService = Array<midCallServiceData>;\ninterface BaseMessage {\n eventType: eventType;\n correlationId: correlationId;\n deviceId: deviceId;\n callId: callId;\n callUrl: callUrl;\n}\nexport interface CallSetupMessage extends BaseMessage {\n callerId: CallerIdInfo;\n trackingId: string;\n alertType: string;\n}\n\n/** Internal Eventing End */\n\n/** State Machine Events */\n\nexport type CallEvent =\n /* Received Events */\n | {type: 'E_RECV_CALL_SETUP'; data?: unknown}\n | {type: 'E_RECV_CALL_PROGRESS'; data?: unknown}\n | {type: 'E_RECV_CALL_CONNECT'; data?: unknown}\n | {type: 'E_RECV_CALL_DISCONNECT'; data?: unknown}\n\n /* Sent Events */\n | {type: 'E_SEND_CALL_SETUP'; data?: unknown}\n | {type: 'E_SEND_CALL_ALERTING'; data?: unknown}\n | {type: 'E_SEND_CALL_CONNECT'; data?: unknown}\n | {type: 'E_SEND_CALL_DISCONNECT'; data?: unknown}\n\n /* Common Events */\n | {type: 'E_CALL_ESTABLISHED'; data?: unknown}\n | {type: 'E_CALL_INFO'; data?: unknown}\n | {type: 'E_UNKNOWN'; data?: unknown}\n | {type: 'E_CALL_CLEARED'; data?: unknown}\n | {type: 'E_CALL_HOLD'; data?: unknown}\n | {type: 'E_CALL_RESUME'; data?: unknown};\n\n/* ROAP Events */\nexport type RoapEvent =\n | {type: 'E_SEND_ROAP_OFFER'; data?: unknown}\n | {type: 'E_SEND_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER'; data?: unknown}\n | {type: 'E_RECV_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_ROAP_ERROR'; data?: unknown}\n | {type: 'E_ROAP_OK'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER_REQUEST'; data?: unknown} // ROAP request to explicitly ask Client to do OFFER\n | {type: 'E_ROAP_TEARDOWN'; data?: unknown};\n\n// TODO: export RoapMessage type from the media SDK to use here\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface RoapMessage {\n seq: number;\n messageType: 'OFFER' | 'ANSWER' | 'OK' | 'ERROR' | 'OFFER_REQUEST' | 'OFFER_RESPONSE';\n offererSessionId?: string;\n answererSessionId?: string;\n sdp?: string;\n version?: string;\n tieBreaker?: string;\n errorType?: string;\n}\n\nexport interface RoapMessageEvent {\n roapMessage: RoapMessage;\n}\n\nexport type UserReadSessions = {\n sessionId: string;\n};\n\nexport type CallSessionViewedData = {\n userReadSessions: {\n userReadSessions: UserReadSessions[];\n statusCode: number;\n };\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED;\n};\n\nexport type CallSessionViewedEvent = {\n id: string;\n data: CallSessionViewedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type CallSessionDeletedData = {\n deletedSessions: string[];\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED;\n};\n\nexport type CallSessionDeletedEvent = {\n id: string;\n data: CallSessionDeletedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type EndTimeSessionId = {\n endTime: string;\n sessionId: string;\n};\n\nexport type SanitizedEndTimeAndSessionId = {\n endTime: number;\n sessionId: string;\n};\n\nexport type UCMLine = {\n dnorpattern: string;\n index: number;\n label: string | null;\n};\n\nexport type UCMDevice = {\n name: string;\n model: number;\n lines: UCMLine[];\n};\n\nexport type UCMLinesApiResponse = {\n devices: UCMDevice[];\n};\n"],"mappings":";;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAFA;AAAuD;AAOvD;AAAA,IACYC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAOjBE,eAAe,GAAAD,OAAA,CAAAC,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAIfC,yBAAyB,GAAAF,OAAA,CAAAE,yBAAA,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAAA,IAOzBC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAgBfC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAQtBC,oBAAoB,GAAAL,OAAA,CAAAK,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAAA,IAKpBC,WAAW,GAAAN,OAAA,CAAAM,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAsDXC,WAAW,GAAAP,OAAA,CAAAO,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAiDXC,iBAAiB,GAAAR,OAAA,CAAAQ,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAyBjBC,2BAA2B,GAAAT,OAAA,CAAAS,2BAAA,0BAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAAA,OAA3BA,2BAA2B;AAAA;AAyDvC;AAEA;AAAA,IACKC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA,EAAVA,UAAU;AAkDf;AAEA;AAuBA;AAWA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_constants","COMMON_EVENT_KEYS","exports","LINE_EVENT_KEYS","CALLING_CLIENT_EVENT_KEYS","CALL_EVENT_KEYS","SUPPLEMENTARY_SERVICES","MOBIUS_MIDCALL_STATE","Disposition","SessionType","MOBIUS_EVENT_KEYS","MEDIA_CONNECTION_EVENT_KEYS","CALL_STATE"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */ // TODO: remove once we define the payloads\nimport {ILine} from '../api';\nimport {LINE_EVENTS} from '../CallingClient/line/types';\nimport type {ICall} from '../CallingClient/calling/types';\nimport {CallId, DisplayInformation} from '../common/types';\nimport {CallError, CallingClientError, LineError} from '../Errors';\nimport {MOBIUS_SOCKET_DISCONNECT_REASON} from '../CallingClient/utils/constants';\n\nexport {MOBIUS_SOCKET_DISCONNECT_REASON};\n\n/** External Eventing Start */\nexport enum COMMON_EVENT_KEYS {\n CB_VOICEMESSAGE_CONTENT_GET = 'call_back_voicemail_content_get',\n CALL_HISTORY_USER_SESSION_INFO = 'callHistory:user_recent_sessions',\n CALL_HISTORY_USER_VIEWED_SESSIONS = 'callHistory:user_viewed_sessions',\n CALL_HISTORY_USER_SESSIONS_DELETED = 'callHistory:user_sessions_deleted',\n}\n\nexport enum LINE_EVENT_KEYS {\n INCOMING_CALL = 'incoming_call',\n}\n\nexport enum CALLING_CLIENT_EVENT_KEYS {\n ERROR = 'callingClient:error',\n OUTGOING_CALL = 'callingClient:outgoing_call',\n USER_SESSION_INFO = 'callingClient:user_recent_sessions',\n ALL_CALLS_CLEARED = 'callingClient:all_calls_cleared',\n MOBIUS_SOCKET_CONNECTED = 'callingClient:mobius_socket_connected',\n MOBIUS_SOCKET_DISCONNECTED = 'callingClient:mobius_socket_disconnected',\n}\n\nexport type MobiusSocketDisconnectedEvent = {\n reason: MOBIUS_SOCKET_DISCONNECT_REASON;\n};\n\nexport enum CALL_EVENT_KEYS {\n ALERTING = 'alerting',\n CALL_ERROR = 'call_error',\n CALLER_ID = 'caller_id',\n CONNECT = 'connect',\n DISCONNECT = 'disconnect',\n ESTABLISHED = 'established',\n HELD = 'held',\n HOLD_ERROR = 'hold_error',\n PROGRESS = 'progress',\n REMOTE_MEDIA = 'remote_media',\n RESUME_ERROR = 'resume_error',\n RESUMED = 'resumed',\n TRANSFER_ERROR = 'transfer_error',\n}\n\nexport enum SUPPLEMENTARY_SERVICES {\n HOLD = 'hold',\n RESUME = 'resume',\n DIVERT = 'divert',\n TRANSFER = 'transfer',\n PARK = 'park',\n}\n\nexport enum MOBIUS_MIDCALL_STATE {\n HELD = 'HELD',\n CONNECTED = 'CONNECTED',\n}\n\nexport enum Disposition {\n ANSWERED = 'Answered',\n CANCELED = 'Canceled',\n INITIATED = 'Initiated',\n MISSED = 'MISSED',\n}\n\nexport type CallRecordLink = {\n locusUrl?: string;\n conversationUrl?: string;\n callbackAddress: string;\n};\n\nexport type CallBackInfo = {\n callbackAddress: string;\n callbackType: string;\n};\n\nexport type LookUpInfo = {\n lookupLink: string;\n type: string;\n};\n\nexport type CallRecordSelf = {\n id: string;\n name?: string;\n phoneNumber?: string;\n cucmDN?: string;\n ucmLineNumber?: number;\n};\n\nexport type CallRecordListOther = {\n ownerId?: string;\n id: string;\n name?: string;\n sipUrl?: string;\n primaryDisplayString?: string;\n secondaryDisplayString?: string;\n isPrivate: boolean;\n callbackAddress: string;\n phoneNumber?: string;\n contact?: string;\n email?: string;\n};\n\nexport type RedirectionDetails = {\n phoneNumber?: string;\n sipUrl?: string;\n name?: string;\n reason: string;\n userId?: string;\n isPrivate: boolean;\n};\n\nexport enum SessionType {\n SPARK = 'SPARK',\n WEBEX_CALLING = 'WEBEXCALLING',\n}\n\nexport type UserSession = {\n id: string;\n sessionId: string;\n disposition: Disposition;\n startTime: string;\n endTime: string;\n url: string;\n durationSeconds: number;\n joinedDurationSeconds: number;\n participantCount: number;\n isDeleted: boolean;\n isPMR: boolean;\n correlationIds: string[];\n links: CallRecordLink;\n self: CallRecordSelf;\n durationSecs: number;\n other: CallRecordListOther;\n sessionType: SessionType;\n direction: string;\n callingSpecifics?: {\n redirectionDetails: RedirectionDetails;\n };\n};\n\nexport type CallingParty = {\n name?: string;\n number?: string;\n privacyEnabled?: boolean;\n userId?: string;\n address?: string;\n};\n\nexport type Item = {\n id?: string;\n duration?: number;\n callingParty?: CallingParty;\n urgent?: boolean;\n confidential?: boolean;\n read?: boolean;\n created?: string;\n messageId?: string;\n time?: number;\n};\n\nexport enum MOBIUS_EVENT_KEYS {\n SERVER_EVENT_INCLUSIVE = 'event:mobius',\n CALL_SESSION_EVENT_INCLUSIVE = 'event:janus.user_recent_sessions',\n CALL_SESSION_EVENT_LEGACY = 'event:janus.user_sessions',\n CALL_SESSION_EVENT_VIEWED = 'event:janus.user_viewed_sessions',\n CALL_SESSION_EVENT_DELETED = 'event:janus.user_sessions_deleted',\n}\n\nexport type CallSessionData = {\n userSessions: {\n userSessions: UserSession[];\n statusCode: number;\n };\n eventType:\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY;\n};\n\nexport type CallSessionEvent = {\n id: string;\n data: CallSessionData;\n timestamp: number;\n trackingId: string;\n};\n\nexport enum MEDIA_CONNECTION_EVENT_KEYS {\n ROAP_MESSAGE_TO_SEND = 'roap:messageToSend',\n MEDIA_TYPE_AUDIO = 'audio',\n}\n\nexport type CallerIdDisplay = {\n correlationId: string;\n callerId: DisplayInformation;\n};\n\nexport type LineEventTypes = {\n [LINE_EVENTS.CONNECTING]: () => void;\n [LINE_EVENTS.ERROR]: (error: LineError) => void;\n [LINE_EVENTS.RECONNECTED]: () => void;\n [LINE_EVENTS.RECONNECTING]: () => void;\n [LINE_EVENTS.REGISTERED]: (lineInfo: ILine) => void;\n [LINE_EVENTS.UNREGISTERED]: () => void;\n [LINE_EVENTS.INCOMING_CALL]: (callObj: ICall) => void;\n};\n\nexport type CallEventTypes = {\n [CALL_EVENT_KEYS.CALL_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.CALLER_ID]: (display: CallerIdDisplay) => void;\n [CALL_EVENT_KEYS.CONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.DISCONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.ESTABLISHED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HELD]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HOLD_ERROR]: (error: CallError) => void;\n [LINE_EVENT_KEYS.INCOMING_CALL]: (callObj: ICall) => void;\n [CALL_EVENT_KEYS.PROGRESS]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.REMOTE_MEDIA]: (track: MediaStreamTrack) => void;\n [CALL_EVENT_KEYS.RESUME_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.RESUMED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.TRANSFER_ERROR]: (error: CallError) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type MessageId = {\n messageId: string;\n};\n\nexport type VoicemailEventTypes = {\n [COMMON_EVENT_KEYS.CB_VOICEMESSAGE_CONTENT_GET]: (messageId: MessageId) => void;\n};\n\nexport type CallingClientEventTypes = {\n [CALLING_CLIENT_EVENT_KEYS.ERROR]: (error: CallingClientError) => void;\n [CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [CALLING_CLIENT_EVENT_KEYS.OUTGOING_CALL]: (callId: string) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n [CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_CONNECTED]: () => void;\n [CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_DISCONNECTED]: (\n event: MobiusSocketDisconnectedEvent\n ) => void;\n};\n\nexport type CallHistoryEventTypes = {\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS]: (event: CallSessionViewedEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED]: (event: CallSessionDeletedEvent) => void;\n};\n/* External Eventing End */\n\n/** Internal Eventing Start */\nenum CALL_STATE {\n HELD = 'held',\n REMOTE_HELD = 'remoteheld',\n CONNECTED = 'connected',\n}\n\ntype eventType = string;\n\ntype callProgressData = {\n alerting: boolean;\n inbandROAP: boolean;\n};\n\nexport type CallerIdInfo = {\n 'x-broadworks-remote-party-info'?: string;\n 'p-asserted-identity'?: string;\n from?: string;\n};\n\ntype callId = string;\ntype deviceId = string;\ntype correlationId = string;\ntype callUrl = string;\ntype causecode = number;\ntype cause = string;\n\ntype eventData = {\n callerId: CallerIdInfo;\n callState: CALL_STATE;\n};\n\ntype midCallServiceData = {\n eventType: eventType;\n eventData: eventData;\n};\n\ntype midCallService = Array<midCallServiceData>;\ninterface BaseMessage {\n eventType: eventType;\n correlationId: correlationId;\n deviceId: deviceId;\n callId: callId;\n callUrl: callUrl;\n}\nexport interface CallSetupMessage extends BaseMessage {\n callerId: CallerIdInfo;\n trackingId: string;\n alertType: string;\n}\n\n/** Internal Eventing End */\n\n/** State Machine Events */\n\nexport type CallEvent =\n /* Received Events */\n | {type: 'E_RECV_CALL_SETUP'; data?: unknown}\n | {type: 'E_RECV_CALL_PROGRESS'; data?: unknown}\n | {type: 'E_RECV_CALL_CONNECT'; data?: unknown}\n | {type: 'E_RECV_CALL_DISCONNECT'; data?: unknown}\n\n /* Sent Events */\n | {type: 'E_SEND_CALL_SETUP'; data?: unknown}\n | {type: 'E_SEND_CALL_ALERTING'; data?: unknown}\n | {type: 'E_SEND_CALL_CONNECT'; data?: unknown}\n | {type: 'E_SEND_CALL_DISCONNECT'; data?: unknown}\n\n /* Common Events */\n | {type: 'E_CALL_ESTABLISHED'; data?: unknown}\n | {type: 'E_CALL_INFO'; data?: unknown}\n | {type: 'E_UNKNOWN'; data?: unknown}\n | {type: 'E_CALL_CLEARED'; data?: unknown}\n | {type: 'E_CALL_HOLD'; data?: unknown}\n | {type: 'E_CALL_RESUME'; data?: unknown};\n\n/* ROAP Events */\nexport type RoapEvent =\n | {type: 'E_SEND_ROAP_OFFER'; data?: unknown}\n | {type: 'E_SEND_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER'; data?: unknown}\n | {type: 'E_RECV_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_ROAP_ERROR'; data?: unknown}\n | {type: 'E_ROAP_OK'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER_REQUEST'; data?: unknown} // ROAP request to explicitly ask Client to do OFFER\n | {type: 'E_ROAP_TEARDOWN'; data?: unknown};\n\n// TODO: export RoapMessage type from the media SDK to use here\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface RoapMessage {\n seq: number;\n messageType: 'OFFER' | 'ANSWER' | 'OK' | 'ERROR' | 'OFFER_REQUEST' | 'OFFER_RESPONSE';\n offererSessionId?: string;\n answererSessionId?: string;\n sdp?: string;\n version?: string;\n tieBreaker?: string;\n errorType?: string;\n}\n\nexport interface RoapMessageEvent {\n roapMessage: RoapMessage;\n}\n\nexport type UserReadSessions = {\n sessionId: string;\n};\n\nexport type CallSessionViewedData = {\n userReadSessions: {\n userReadSessions: UserReadSessions[];\n statusCode: number;\n };\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED;\n};\n\nexport type CallSessionViewedEvent = {\n id: string;\n data: CallSessionViewedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type CallSessionDeletedData = {\n deletedSessions: string[];\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED;\n};\n\nexport type CallSessionDeletedEvent = {\n id: string;\n data: CallSessionDeletedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type EndTimeSessionId = {\n endTime: string;\n sessionId: string;\n};\n\nexport type SanitizedEndTimeAndSessionId = {\n endTime: number;\n sessionId: string;\n};\n\nexport type UCMLine = {\n dnorpattern: string;\n index: number;\n label: string | null;\n};\n\nexport type UCMDevice = {\n name: string;\n model: number;\n lines: UCMLine[];\n};\n\nexport type UCMLinesApiResponse = {\n devices: UCMDevice[];\n};\n"],"mappings":";;;;;;;;;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,UAAA,GAAAD,OAAA;AANA;AAAuD;AAUvD;AAAA,IACYE,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAOjBE,eAAe,GAAAD,OAAA,CAAAC,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAIfC,yBAAyB,GAAAF,OAAA,CAAAE,yBAAA,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAAA,IAazBC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAgBfC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAQtBC,oBAAoB,GAAAL,OAAA,CAAAK,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAAA,IAKpBC,WAAW,GAAAN,OAAA,CAAAM,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAsDXC,WAAW,GAAAP,OAAA,CAAAO,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAiDXC,iBAAiB,GAAAR,OAAA,CAAAQ,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAyBjBC,2BAA2B,GAAAT,OAAA,CAAAS,2BAAA,0BAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAAA,OAA3BA,2BAA2B;AAAA;AA6DvC;AAEA;AAAA,IACKC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA,EAAVA,UAAU;AAkDf;AAEA;AAuBA;AAWA;AACA","ignoreList":[]}
package/dist/index.js CHANGED
@@ -203,6 +203,18 @@ _Object$defineProperty(exports, "Logger", {
203
203
  return _Logger.default;
204
204
  }
205
205
  });
206
+ _Object$defineProperty(exports, "MOBIUS_SOCKET_DISCONNECT_REASON", {
207
+ enumerable: true,
208
+ get: function get() {
209
+ return _types8.MOBIUS_SOCKET_DISCONNECT_REASON;
210
+ }
211
+ });
212
+ _Object$defineProperty(exports, "MobiusSocketDisconnectedEvent", {
213
+ enumerable: true,
214
+ get: function get() {
215
+ return _types8.MobiusSocketDisconnectedEvent;
216
+ }
217
+ });
206
218
  _Object$defineProperty(exports, "NoiseReductionEffect", {
207
219
  enumerable: true,
208
220
  get: function get() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_mediaHelpers","require","_CallSettings","_ContactsClient","_CallingClient","_CallHistory","_Voicemail","_Logger","_interopRequireDefault","_types","_types2","_types3","_types4","_types5","_types6","_types7","_types8","_types9","_Errors","_types0","_types1"],"sources":["index.ts"],"sourcesContent":["import {NoiseReductionEffect, createMicrophoneStream} from '@webex/media-helpers';\nimport {createCallSettingsClient} from './CallSettings/CallSettings';\nimport {createContactsClient} from './Contacts/ContactsClient';\nimport {createClient} from './CallingClient/CallingClient';\nimport {createCallHistoryClient} from './CallHistory/CallHistory';\nimport {createVoicemailClient} from './Voicemail/Voicemail';\nimport Logger from './Logger';\n\nexport {\n createClient,\n createCallHistoryClient,\n createCallSettingsClient,\n createContactsClient,\n createMicrophoneStream,\n createVoicemailClient,\n Logger,\n NoiseReductionEffect,\n};\n\nexport {ERROR_LAYER, ERROR_TYPE} from './Errors/types';\nexport {ICallingClient} from './CallingClient/types';\nexport {ICallHistory, JanusResponseEvent} from './CallHistory/types';\nexport {\n CallForwardSetting,\n CallForwardAlwaysSetting,\n CallSettingResponse,\n ICallSettings,\n ToggleSetting,\n VoicemailSetting,\n} from './CallSettings/types';\nexport {Contact, ContactResponse, GroupType, IContacts} from './Contacts/types';\nexport {IVoicemail, SummaryInfo, VoicemailResponseEvent} from './Voicemail/types';\nexport {ILine, LINE_EVENTS} from './CallingClient/line/types';\nexport {\n CALLING_CLIENT_EVENT_KEYS,\n CALL_EVENT_KEYS,\n CallerIdDisplay,\n Disposition,\n LINE_EVENT_KEYS,\n COMMON_EVENT_KEYS,\n UserSession,\n} from './Events/types';\nexport {\n CallDetails,\n CallDirection,\n CallType,\n DisplayInformation,\n SORT,\n SORT_BY,\n} from './common/types';\nexport {CallError, LineError} from './Errors';\nexport {ICall, TransferType} from './CallingClient/calling/types';\nexport {LOGGER} from './Logger/types';\nexport {LocalMicrophoneStream} from '@webex/media-helpers';\nexport {CallingClientConfig} from './CallingClient/types';\nexport {ServiceIndicator} from './common/types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAC,sBAAA,CAAAP,OAAA;AAaA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,OAAA,GAAAT,OAAA;AACA,IAAAU,OAAA,GAAAV,OAAA;AACA,IAAAW,OAAA,GAAAX,OAAA;AAQA,IAAAY,OAAA,GAAAZ,OAAA;AACA,IAAAa,OAAA,GAAAb,OAAA;AACA,IAAAc,OAAA,GAAAd,OAAA;AACA,IAAAe,OAAA,GAAAf,OAAA;AASA,IAAAgB,OAAA,GAAAhB,OAAA;AAQA,IAAAiB,OAAA,GAAAjB,OAAA;AACA,IAAAkB,OAAA,GAAAlB,OAAA;AACA,IAAAmB,OAAA,GAAAnB,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_mediaHelpers","require","_CallSettings","_ContactsClient","_CallingClient","_CallHistory","_Voicemail","_Logger","_interopRequireDefault","_types","_types2","_types3","_types4","_types5","_types6","_types7","_types8","_types9","_Errors","_types0","_types1"],"sources":["index.ts"],"sourcesContent":["import {NoiseReductionEffect, createMicrophoneStream} from '@webex/media-helpers';\nimport {createCallSettingsClient} from './CallSettings/CallSettings';\nimport {createContactsClient} from './Contacts/ContactsClient';\nimport {createClient} from './CallingClient/CallingClient';\nimport {createCallHistoryClient} from './CallHistory/CallHistory';\nimport {createVoicemailClient} from './Voicemail/Voicemail';\nimport Logger from './Logger';\n\nexport {\n createClient,\n createCallHistoryClient,\n createCallSettingsClient,\n createContactsClient,\n createMicrophoneStream,\n createVoicemailClient,\n Logger,\n NoiseReductionEffect,\n};\n\nexport {ERROR_LAYER, ERROR_TYPE} from './Errors/types';\nexport {ICallingClient} from './CallingClient/types';\nexport {ICallHistory, JanusResponseEvent} from './CallHistory/types';\nexport {\n CallForwardSetting,\n CallForwardAlwaysSetting,\n CallSettingResponse,\n ICallSettings,\n ToggleSetting,\n VoicemailSetting,\n} from './CallSettings/types';\nexport {Contact, ContactResponse, GroupType, IContacts} from './Contacts/types';\nexport {IVoicemail, SummaryInfo, VoicemailResponseEvent} from './Voicemail/types';\nexport {ILine, LINE_EVENTS} from './CallingClient/line/types';\nexport {\n CALLING_CLIENT_EVENT_KEYS,\n CALL_EVENT_KEYS,\n CallerIdDisplay,\n Disposition,\n LINE_EVENT_KEYS,\n COMMON_EVENT_KEYS,\n MOBIUS_SOCKET_DISCONNECT_REASON,\n MobiusSocketDisconnectedEvent,\n UserSession,\n} from './Events/types';\nexport {\n CallDetails,\n CallDirection,\n CallType,\n DisplayInformation,\n SORT,\n SORT_BY,\n} from './common/types';\nexport {CallError, LineError} from './Errors';\nexport {ICall, TransferType} from './CallingClient/calling/types';\nexport {LOGGER} from './Logger/types';\nexport {LocalMicrophoneStream} from '@webex/media-helpers';\nexport {CallingClientConfig} from './CallingClient/types';\nexport {ServiceIndicator} from './common/types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAC,sBAAA,CAAAP,OAAA;AAaA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,OAAA,GAAAT,OAAA;AACA,IAAAU,OAAA,GAAAV,OAAA;AACA,IAAAW,OAAA,GAAAX,OAAA;AAQA,IAAAY,OAAA,GAAAZ,OAAA;AACA,IAAAa,OAAA,GAAAb,OAAA;AACA,IAAAc,OAAA,GAAAd,OAAA;AACA,IAAAe,OAAA,GAAAf,OAAA;AAWA,IAAAgB,OAAA,GAAAhB,OAAA;AAQA,IAAAiB,OAAA,GAAAjB,OAAA;AACA,IAAAkB,OAAA,GAAAlB,OAAA;AACA,IAAAmB,OAAA,GAAAnB,OAAA","ignoreList":[]}
@@ -715,6 +715,10 @@ var MobiusSocket = /*#__PURE__*/function (_EventEmitter) {
715
715
  // Handle the same way we do for registration.down event from Mobius.
716
716
  this.logger.info("socket closed with 4001; will not reconnect", loggerContext);
717
717
  this.emitEvent('event:async_event', _constants.MOBIUS_SOCKET_4001_EVENT);
718
+ // 4001 means the socket is offline and will not reconnect, so surface a
719
+ // permanent disconnect to connection-lifecycle listeners (which only observe
720
+ // the suffixed offline.* events) in addition to the registration.down signal.
721
+ if (isActiveSocket) this.emitEvent('offline.permanent', event);
718
722
  return _context.abrupt("continue", 13);
719
723
  case 5:
720
724
  this.logger.info("socket disconnected; ".concat(event.reason), loggerContext);
@@ -751,8 +755,12 @@ var MobiusSocket = /*#__PURE__*/function (_EventEmitter) {
751
755
  case 10:
752
756
  return _context.abrupt("continue", 13);
753
757
  case 11:
754
- // Silently ignore too many requests
758
+ // Too many requests: the socket is torn down and not auto-reconnected, so surface
759
+ // a permanent disconnect to connection-lifecycle listeners (which only observe the
760
+ // suffixed offline.* events) instead of leaving them unaware of the close.
761
+ // Silently ignore (do not attempt reconnect)
755
762
  this.logger.error("too many requests, statusCode=".concat(event.code), loggerContext);
763
+ if (isActiveSocket) this.emitEvent('offline.permanent', event);
756
764
  return _context.abrupt("continue", 13);
757
765
  case 12:
758
766
  this.logger.info("socket disconnected unexpectedly; will not reconnect", loggerContext);