@webex/calling 3.12.0-next.9 → 3.12.0-next.91
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.
- package/dist/CallRecording/CallRecording.js +160 -0
- package/dist/CallRecording/CallRecording.js.map +1 -0
- package/dist/CallRecording/CallRecording.test.js +257 -0
- package/dist/CallRecording/CallRecording.test.js.map +1 -0
- package/dist/CallRecording/WxcCallRecordingConnector.js +577 -0
- package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
- package/dist/CallRecording/WxcCallRecordingConnector.test.js +652 -0
- package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
- package/dist/CallRecording/callRecordingFixtures.js +235 -0
- package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
- package/dist/CallRecording/constants.js +50 -0
- package/dist/CallRecording/constants.js.map +1 -0
- package/dist/CallRecording/types.js +137 -0
- package/dist/CallRecording/types.js.map +1 -0
- package/dist/CallRecording/utils.js +42 -0
- package/dist/CallRecording/utils.js.map +1 -0
- package/dist/CallRecording/utils.test.js +97 -0
- package/dist/CallRecording/utils.test.js.map +1 -0
- package/dist/CallingClient/CallingClient.js +456 -226
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +513 -154
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +634 -454
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +809 -451
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +106 -35
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +140 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +5 -0
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +32 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +8 -1
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +62 -10
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +890 -497
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +649 -58
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js +26 -0
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +41 -104
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +39 -153
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
- package/dist/CallingClient/types.js +7 -0
- package/dist/CallingClient/types.js.map +1 -1
- package/dist/CallingClient/utils/constants.js +58 -0
- package/dist/CallingClient/utils/constants.js.map +1 -0
- package/dist/CallingClient/utils/index.js +63 -0
- package/dist/CallingClient/utils/index.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
- package/dist/CallingClient/utils/request.js +435 -0
- package/dist/CallingClient/utils/request.js.map +1 -0
- package/dist/CallingClient/utils/request.test.js +999 -0
- package/dist/CallingClient/utils/request.test.js.map +1 -0
- package/dist/CallingClient/utils/types.js +7 -0
- package/dist/CallingClient/utils/types.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
- package/dist/Contacts/ContactsClient.js +13 -11
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +3 -8
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Errors/types.js +2 -0
- package/dist/Errors/types.js.map +1 -1
- package/dist/Events/types.js +38 -1
- package/dist/Events/types.js.map +1 -1
- package/dist/Metrics/index.js +63 -2
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +357 -1
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +19 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/api.js +56 -0
- package/dist/api.js.map +1 -1
- package/dist/common/Utils.js +212 -71
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +417 -181
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/testUtil.js +10 -5
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +3 -0
- package/dist/common/types.js.map +1 -1
- package/dist/index.js +171 -40
- package/dist/index.js.map +1 -1
- package/dist/mobius-socket/config.js +24 -0
- package/dist/mobius-socket/config.js.map +1 -0
- package/dist/mobius-socket/errors.js +143 -0
- package/dist/mobius-socket/errors.js.map +1 -0
- package/dist/mobius-socket/errors.test.js +20 -0
- package/dist/mobius-socket/errors.test.js.map +1 -0
- package/dist/mobius-socket/index.js +57 -0
- package/dist/mobius-socket/index.js.map +1 -0
- package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.js +849 -0
- package/dist/mobius-socket/mobius-socket.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.test.js +1898 -0
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
- package/dist/mobius-socket/socket/constants.js +55 -0
- package/dist/mobius-socket/socket/constants.js.map +1 -0
- package/dist/mobius-socket/socket/index.js +15 -0
- package/dist/mobius-socket/socket/index.js.map +1 -0
- package/dist/mobius-socket/socket/socket-base.js +604 -0
- package/dist/mobius-socket/socket/socket-base.js.map +1 -0
- package/dist/mobius-socket/socket/socket.js +19 -0
- package/dist/mobius-socket/socket/socket.js.map +1 -0
- package/dist/mobius-socket/socket/socket.shim.js +26 -0
- package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
- package/dist/mobius-socket/socket/types.js +7 -0
- package/dist/mobius-socket/socket/types.js.map +1 -0
- package/dist/mobius-socket/socket.test.js +727 -0
- package/dist/mobius-socket/socket.test.js.map +1 -0
- package/dist/mobius-socket/test/mocha-helpers.js +23 -0
- package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
- package/dist/mobius-socket/test/promise-tick.js +28 -0
- package/dist/mobius-socket/test/promise-tick.js.map +1 -0
- package/dist/mobius-socket/types.js +7 -0
- package/dist/mobius-socket/types.js.map +1 -0
- package/dist/module/CallRecording/CallRecording.js +56 -0
- package/dist/module/CallRecording/WxcCallRecordingConnector.js +257 -0
- package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
- package/dist/module/CallRecording/constants.js +28 -0
- package/dist/module/CallRecording/types.js +19 -0
- package/dist/module/CallRecording/utils.js +14 -0
- package/dist/module/CallingClient/CallingClient.js +126 -10
- package/dist/module/CallingClient/calling/call.js +198 -66
- package/dist/module/CallingClient/calling/callManager.js +51 -11
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +27 -0
- package/dist/module/CallingClient/line/index.js +4 -2
- package/dist/module/CallingClient/registration/register.js +266 -64
- package/dist/module/CallingClient/registration/types.js +5 -1
- package/dist/module/CallingClient/registration/webWorker.js +42 -61
- package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
- package/dist/module/CallingClient/utils/constants.js +36 -0
- package/dist/module/CallingClient/utils/index.js +5 -0
- package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
- package/dist/module/CallingClient/utils/request.js +211 -0
- package/dist/module/CallingClient/utils/types.js +1 -0
- package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
- package/dist/module/Contacts/ContactsClient.js +1 -1
- package/dist/module/Errors/types.js +2 -0
- package/dist/module/Events/types.js +23 -0
- package/dist/module/Metrics/index.js +48 -1
- package/dist/module/Metrics/types.js +18 -0
- package/dist/module/api.js +3 -2
- package/dist/module/common/Utils.js +85 -22
- package/dist/module/common/testUtil.js +6 -1
- package/dist/module/common/types.js +3 -0
- package/dist/module/index.js +7 -3
- package/dist/module/mobius-socket/config.js +15 -0
- package/dist/module/mobius-socket/errors.js +58 -0
- package/dist/module/mobius-socket/index.js +24 -0
- package/dist/module/mobius-socket/mobius-socket.js +593 -0
- package/dist/module/mobius-socket/socket/constants.js +26 -0
- package/dist/module/mobius-socket/socket/index.js +4 -0
- package/dist/module/mobius-socket/socket/socket-base.js +368 -0
- package/dist/module/mobius-socket/socket/socket.js +9 -0
- package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
- package/dist/module/mobius-socket/socket/types.js +1 -0
- package/dist/module/mobius-socket/types.js +1 -0
- package/dist/types/CallRecording/CallRecording.d.ts +18 -0
- package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
- package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
- package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
- package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
- package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
- package/dist/types/CallRecording/constants.d.ts +29 -0
- package/dist/types/CallRecording/constants.d.ts.map +1 -0
- package/dist/types/CallRecording/types.d.ts +176 -0
- package/dist/types/CallRecording/types.d.ts.map +1 -0
- package/dist/types/CallRecording/utils.d.ts +3 -0
- package/dist/types/CallRecording/utils.d.ts.map +1 -0
- package/dist/types/CallingClient/CallingClient.d.ts +8 -0
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +17 -3
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +8 -4
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +38 -9
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +27 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts +1 -1
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +8 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +27 -2
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
- package/dist/types/CallingClient/types.d.ts +4 -2
- package/dist/types/CallingClient/types.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/constants.d.ts +35 -0
- package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/index.d.ts +6 -0
- package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/request.d.ts +28 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/types.d.ts +34 -0
- package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
- package/dist/types/Errors/types.d.ts +2 -0
- package/dist/types/Errors/types.d.ts.map +1 -1
- package/dist/types/Events/types.d.ts +80 -6
- package/dist/types/Events/types.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +19 -2
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +39 -12
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/api.d.ts +6 -4
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +9 -4
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +5 -1
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +5 -1
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +9 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/mobius-socket/config.d.ts +17 -0
- package/dist/types/mobius-socket/config.d.ts.map +1 -0
- package/dist/types/mobius-socket/errors.d.ts +32 -0
- package/dist/types/mobius-socket/errors.d.ts.map +1 -0
- package/dist/types/mobius-socket/index.d.ts +14 -0
- package/dist/types/mobius-socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/index.d.ts +5 -0
- package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/types.d.ts +61 -0
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
- package/dist/types/mobius-socket/types.d.ts +21 -0
- package/dist/types/mobius-socket/types.d.ts.map +1 -0
- package/package.json +21 -5
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- package/src/mobius-socket/socket/socket.ts +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_types","require","_Logger","_interopRequireDefault","_mobiusSocketMapper","_constants","describe","warnSpy","beforeEach","jest","clearAllMocks","spyOn","log","it","uri","result","deriveMobiusSocketMessageType","HTTP_METHODS","POST","expect","toBe","MOBIUS_SOCKET_MESSAGE_TYPE","CALL_HOLD","not","toHaveBeenCalled","CALL_RESUME","CALL_TRANSFER","UNKNOWN","toHaveBeenCalledWith","concat","file","method","CALL_SETUP","PATCH","CALL_MEDIA","CALL_STATUS","CALL_STATE","DELETE","CALL_DELETE","GET","REGISTER","UNREGISTER","DEVICE_GET","DEVICE_STATUS","DEVICE_LIST","undefined","mediaUri","statusUri","isSupplementaryServiceMessageType"],"sources":["mobiusSocketMapper.test.ts"],"sourcesContent":["import {HTTP_METHODS} from '../../common/types';\nimport log from '../../Logger';\nimport {\n deriveMobiusSocketMessageType,\n isSupplementaryServiceMessageType,\n} from './mobiusSocketMapper';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\n\ndescribe('mobiusSocketMapper', () => {\n let warnSpy: jest.SpyInstance;\n\n beforeEach(() => {\n jest.clearAllMocks();\n warnSpy = jest.spyOn(log, 'warn');\n });\n\n describe('deriveMobiusSocketMessageType', () => {\n describe('Supplementary services', () => {\n it('should return CALL_HOLD for hold service URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/callhold/hold';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_RESUME for resume service URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/callhold/resume';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_TRANSFER for transfer commit service URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/calltransfer/commit';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNKNOWN and log warning for unrecognized supplementary service', () => {\n const uri = '/api/v1/calling/web/devices/device-123/services/unknown/action';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized supplementary service uri - uri: ${uri}, httpMethod: ${HTTP_METHODS.POST}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n });\n\n describe('Call operations', () => {\n it('should return CALL_SETUP for call setup URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/call';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_MEDIA for call media URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456/media';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_STATUS for call status URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_STATE for calls/{callId} with PATCH method', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return CALL_DELETE for calls/{callId} with DELETE method', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.DELETE);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNKNOWN and log warning for calls/{callId} with unrecognized HTTP method', () => {\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized httpMethod for calls/{callId} - uri: ${uri}, httpMethod: ${HTTP_METHODS.GET}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n });\n\n describe('Device operations', () => {\n it('should return REGISTER for device registration URI', () => {\n const uri = '/api/v1/calling/web/device';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNREGISTER for devices/{deviceId} with DELETE method', () => {\n const uri = '/api/v1/calling/web/devices/device-123';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.DELETE);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNREGISTER);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_GET for devices/{deviceId} with GET method', () => {\n const uri = '/api/v1/calling/web/devices/device-123';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_GET);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return UNKNOWN and log warning for devices/{deviceId} with unrecognized HTTP method', () => {\n const uri = '/api/v1/calling/web/devices/device-123';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized httpMethod for devices/{deviceId} - uri: ${uri}, httpMethod: ${HTTP_METHODS.PATCH}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should return DEVICE_STATUS for devices/{deviceId}/status URI', () => {\n const uri = '/api/v1/calling/web/devices/device-123/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_STATUS for /status URI without /devices/ segment in path', () => {\n const uri = '/api/v1/calling/web/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_LIST for devices list URI without trailing ID', () => {\n const uri = '/api/v1/calling/web/devices';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should return DEVICE_LIST for devices list URI with query parameters', () => {\n const uri = '/api/v1/calling/web/devices?userid=user-789';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Edge cases', () => {\n it('should return UNKNOWN and log warning when uri is undefined', () => {\n const result = deriveMobiusSocketMessageType(undefined, HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n 'Cannot derive Mobius socket message type: uri is empty',\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should return UNKNOWN and log warning when uri is empty string', () => {\n const result = deriveMobiusSocketMessageType('', HTTP_METHODS.GET);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n 'Cannot derive Mobius socket message type: uri is empty',\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should return UNKNOWN and log warning for completely unrecognized URI pattern', () => {\n const uri = '/api/v1/completely/unrecognized/path';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.POST);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n expect(warnSpy).toHaveBeenCalledWith(\n `Unrecognized uri pattern for Mobius socket - uri: ${uri}, httpMethod: ${HTTP_METHODS.POST}`,\n {\n file: 'mobiusSocketMapper',\n method: 'deriveMobiusSocketMessageType',\n }\n );\n });\n\n it('should never return DEVICE_STATUS when /calls/ is present in path ending with /status', () => {\n // The DEVICE_STATUS check explicitly excludes URIs containing /calls/. Any\n // call-scoped /status URI must resolve to CALL_STATUS via the earlier branch,\n // and must never fall through to DEVICE_STATUS even if check ordering changes.\n const uri = '/api/v1/calling/web/devices/device-123/calls/call-456/status';\n const result = deriveMobiusSocketMessageType(uri, HTTP_METHODS.PATCH);\n\n expect(result).toBe(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS);\n expect(result).not.toBe(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n expect(warnSpy).not.toHaveBeenCalled();\n });\n\n it('should prioritize call sub-resources over bare call patterns', () => {\n const mediaUri = '/api/v1/calling/web/devices/device-123/calls/call-456/media';\n const statusUri = '/api/v1/calling/web/devices/device-123/calls/call-456/status';\n\n expect(deriveMobiusSocketMessageType(mediaUri, HTTP_METHODS.PATCH)).toBe(\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA\n );\n expect(deriveMobiusSocketMessageType(statusUri, HTTP_METHODS.PATCH)).toBe(\n MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS\n );\n });\n });\n });\n\n describe('isSupplementaryServiceMessageType', () => {\n it('should return true for CALL_HOLD message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD);\n\n expect(result).toBe(true);\n });\n\n it('should return true for CALL_RESUME message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME);\n\n expect(result).toBe(true);\n });\n\n it('should return true for CALL_TRANSFER message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER);\n\n expect(result).toBe(true);\n });\n\n it('should return false for REGISTER message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER);\n\n expect(result).toBe(false);\n });\n\n it('should return false for CALL_SETUP message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP);\n\n expect(result).toBe(false);\n });\n\n it('should return false for CALL_STATE message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE);\n\n expect(result).toBe(false);\n });\n\n it('should return false for CALL_DELETE message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE);\n\n expect(result).toBe(false);\n });\n\n it('should return false for DEVICE_STATUS message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS);\n\n expect(result).toBe(false);\n });\n\n it('should return false for UNKNOWN message type', () => {\n const result = isSupplementaryServiceMessageType(MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN);\n\n expect(result).toBe(false);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
4
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
5
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
6
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
7
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
8
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
9
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
10
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
11
|
+
value: true
|
|
12
|
+
});
|
|
13
|
+
exports.createAPIRequest = exports.APIRequest = void 0;
|
|
14
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
15
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
16
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
17
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
18
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
19
|
+
var _uuid = require("uuid");
|
|
20
|
+
var _mobiusSocket = require("../../mobius-socket");
|
|
21
|
+
var _Logger = _interopRequireDefault(require("../../Logger"));
|
|
22
|
+
var _mobiusSocketMapper = require("./mobiusSocketMapper");
|
|
23
|
+
var _constants = require("./constants");
|
|
24
|
+
var _wsFeatureFlag = require("./wsFeatureFlag");
|
|
25
|
+
var _constants2 = require("../constants");
|
|
26
|
+
var _Metrics = require("../../Metrics");
|
|
27
|
+
var _types = require("../../Metrics/types");
|
|
28
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
29
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
30
|
+
/**
|
|
31
|
+
* Converts a MobiusSocketResponse into the WebexRequestPayload shape that
|
|
32
|
+
* all callers (registration, call, keepalive error-handlers) expect.
|
|
33
|
+
*/
|
|
34
|
+
function normalizeWsResponse(wsResponse) {
|
|
35
|
+
var _ref, _ref2;
|
|
36
|
+
return {
|
|
37
|
+
statusCode: wsResponse.statusCode,
|
|
38
|
+
body: (_ref = wsResponse.data) !== null && _ref !== void 0 ? _ref : undefined,
|
|
39
|
+
headers: _objectSpread({
|
|
40
|
+
trackingid: wsResponse.trackingId
|
|
41
|
+
}, (_ref2 = wsResponse.metadata) !== null && _ref2 !== void 0 ? _ref2 : {})
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Converts a MobiusSocketResponseError rejection into a WebexRequestPayload-shaped
|
|
47
|
+
* error so handleRegistrationErrors / handleCallErrors can process it identically.
|
|
48
|
+
*/
|
|
49
|
+
function normalizeWsError(err) {
|
|
50
|
+
var _ref3, _wsErr$response, _ref4, _wsErr$trackingId, _wsErr$response2, _ref5, _wsErr$response3;
|
|
51
|
+
var wsErr = err;
|
|
52
|
+
return {
|
|
53
|
+
statusCode: wsErr.statusCode,
|
|
54
|
+
body: (_ref3 = (_wsErr$response = wsErr.response) === null || _wsErr$response === void 0 ? void 0 : _wsErr$response.data) !== null && _ref3 !== void 0 ? _ref3 : undefined,
|
|
55
|
+
headers: _objectSpread({
|
|
56
|
+
trackingid: (_ref4 = (_wsErr$trackingId = wsErr.trackingId) !== null && _wsErr$trackingId !== void 0 ? _wsErr$trackingId : (_wsErr$response2 = wsErr.response) === null || _wsErr$response2 === void 0 ? void 0 : _wsErr$response2.trackingId) !== null && _ref4 !== void 0 ? _ref4 : ''
|
|
57
|
+
}, (_ref5 = (_wsErr$response3 = wsErr.response) === null || _wsErr$response3 === void 0 ? void 0 : _wsErr$response3.metadata) !== null && _ref5 !== void 0 ? _ref5 : {})
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* APIRequest routes Mobius traffic over HTTP (`webex.request`) or the Mobius WebSocket path
|
|
63
|
+
* (`mobiusSocketRequest`). `isMobiusSocketEnabled` is set in the constructor from WDM
|
|
64
|
+
* `webrtc-calling-over-ws` and/or SDK config (interim until WDM is fully in prod).
|
|
65
|
+
*/
|
|
66
|
+
var APIRequest = exports.APIRequest = /*#__PURE__*/function () {
|
|
67
|
+
/**
|
|
68
|
+
* @param config - Webex instance plus optional SDK Mobius-socket override
|
|
69
|
+
*/
|
|
70
|
+
function APIRequest(config) {
|
|
71
|
+
(0, _classCallCheck2.default)(this, APIRequest);
|
|
72
|
+
(0, _defineProperty2.default)(this, "isMobiusSocketEnabled", void 0);
|
|
73
|
+
(0, _defineProperty2.default)(this, "webex", void 0);
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
75
|
+
(0, _defineProperty2.default)(this, "mobiusSocket", void 0);
|
|
76
|
+
(0, _defineProperty2.default)(this, "metricManager", void 0);
|
|
77
|
+
var logContext = {
|
|
78
|
+
file: _constants2.REQUEST_FILE,
|
|
79
|
+
method: _constants2.METHODS.CONSTRUCTOR
|
|
80
|
+
};
|
|
81
|
+
if (!config.webex) {
|
|
82
|
+
_Logger.default.error('APIRequest instantiation failed: WebexSDK instance is required', logContext);
|
|
83
|
+
throw new Error('WebexSDK instance is required');
|
|
84
|
+
}
|
|
85
|
+
this.webex = config.webex;
|
|
86
|
+
this.isMobiusSocketEnabled = (0, _wsFeatureFlag.isMobiusWssEnabled)(config.webex) || false;
|
|
87
|
+
this.mobiusSocket = (0, _mobiusSocket.getMobiusSocketInstance)(this.webex);
|
|
88
|
+
this.metricManager = (0, _Metrics.getMetricManager)(this.webex);
|
|
89
|
+
_Logger.default.info("APIRequest initialized with transport: ".concat(this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'), logContext);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Whether the Mobius WebSocket transport is active for this instance.
|
|
94
|
+
*/
|
|
95
|
+
return (0, _createClass2.default)(APIRequest, [{
|
|
96
|
+
key: "isSocketEnabled",
|
|
97
|
+
value: function isSocketEnabled() {
|
|
98
|
+
return this.isMobiusSocketEnabled;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Overrides the active Mobius transport for subsequent requests.
|
|
103
|
+
*
|
|
104
|
+
* The constructor seeds this from the `webrtc-calling-over-ws` feature flag, but
|
|
105
|
+
* registration may need to fall back to HTTP for a Mobius server group that has no
|
|
106
|
+
* WSS URL (even while the feature is enabled). Toggling this keeps all transport-gated
|
|
107
|
+
* paths (connect, teardown, makeRequest) consistent for the group being registered.
|
|
108
|
+
*
|
|
109
|
+
* @param enabled - `true` to route over the Mobius WebSocket, `false` for HTTP.
|
|
110
|
+
*/
|
|
111
|
+
}, {
|
|
112
|
+
key: "setSocketEnabled",
|
|
113
|
+
value: function setSocketEnabled(enabled) {
|
|
114
|
+
this.isMobiusSocketEnabled = enabled;
|
|
115
|
+
_Logger.default.info("APIRequest transport set to: ".concat(enabled ? 'WSS' : 'HTTP'), {
|
|
116
|
+
file: _constants2.REQUEST_FILE,
|
|
117
|
+
method: _constants2.METHODS.SET_SOCKET_ENABLED
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Ensures the Mobius WebSocket is connected before sending API requests.
|
|
123
|
+
* If the socket is already connected, resolves immediately. Otherwise,
|
|
124
|
+
* initiates a new connection to the provided WebSocket URL.
|
|
125
|
+
* On failure, throws a normalized WebexRequestPayload-shaped error.
|
|
126
|
+
*
|
|
127
|
+
* @param wssUrl - The Mobius WebSocket URL to connect to.
|
|
128
|
+
*/
|
|
129
|
+
}, {
|
|
130
|
+
key: "connectToMobiusSocket",
|
|
131
|
+
value: (function () {
|
|
132
|
+
var _connectToMobiusSocket = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(wssUrl) {
|
|
133
|
+
var logContext, _this$metricManager, _this$metricManager2, _t;
|
|
134
|
+
return _regenerator.default.wrap(function (_context) {
|
|
135
|
+
while (1) switch (_context.prev = _context.next) {
|
|
136
|
+
case 0:
|
|
137
|
+
logContext = {
|
|
138
|
+
file: _constants2.REQUEST_FILE,
|
|
139
|
+
method: _constants2.METHODS.CONNECT_TO_MOBIUS_SOCKET
|
|
140
|
+
};
|
|
141
|
+
if (!this.mobiusSocket.isConnected()) {
|
|
142
|
+
_context.next = 1;
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
_Logger.default.info('Mobius WebSocket already connected', logContext);
|
|
146
|
+
return _context.abrupt("return", this.mobiusSocket.getConnectedWebSocketUrl());
|
|
147
|
+
case 1:
|
|
148
|
+
_Logger.default.info('Mobius WebSocket not connected, initiating connection', logContext);
|
|
149
|
+
_context.prev = 2;
|
|
150
|
+
_context.next = 3;
|
|
151
|
+
return this.mobiusSocket.connect(wssUrl);
|
|
152
|
+
case 3:
|
|
153
|
+
_Logger.default.log('Mobius WebSocket connected successfully', logContext);
|
|
154
|
+
(_this$metricManager = this.metricManager) === null || _this$metricManager === void 0 ? void 0 : _this$metricManager.submitMobiusSocketMetric(_types.METRIC_EVENT.MOBIUS_SOCKET, _types.MOBIUS_SOCKET_ACTION.CONNECT, _types.METRIC_TYPE.BEHAVIORAL, wssUrl);
|
|
155
|
+
return _context.abrupt("return", wssUrl);
|
|
156
|
+
case 4:
|
|
157
|
+
_context.prev = 4;
|
|
158
|
+
_t = _context["catch"](2);
|
|
159
|
+
_Logger.default.warn("Mobius WebSocket connection failed: ".concat(String(_t)), logContext);
|
|
160
|
+
(_this$metricManager2 = this.metricManager) === null || _this$metricManager2 === void 0 ? void 0 : _this$metricManager2.submitMobiusSocketMetric(_types.METRIC_EVENT.MOBIUS_SOCKET_ERROR, _types.MOBIUS_SOCKET_ACTION.CONNECT, _types.METRIC_TYPE.BEHAVIORAL, wssUrl, undefined, String(_t));
|
|
161
|
+
throw normalizeWsError(_t);
|
|
162
|
+
case 5:
|
|
163
|
+
case "end":
|
|
164
|
+
return _context.stop();
|
|
165
|
+
}
|
|
166
|
+
}, _callee, this, [[2, 4]]);
|
|
167
|
+
}));
|
|
168
|
+
function connectToMobiusSocket(_x) {
|
|
169
|
+
return _connectToMobiusSocket.apply(this, arguments);
|
|
170
|
+
}
|
|
171
|
+
return connectToMobiusSocket;
|
|
172
|
+
}())
|
|
173
|
+
}, {
|
|
174
|
+
key: "getConnectedWebSocketUrl",
|
|
175
|
+
value: function getConnectedWebSocketUrl() {
|
|
176
|
+
return this.mobiusSocket.getConnectedWebSocketUrl();
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Disconnects the default session from the Mobius WebSocket.
|
|
181
|
+
*/
|
|
182
|
+
}, {
|
|
183
|
+
key: "disconnectFromMobiusSocket",
|
|
184
|
+
value: (function () {
|
|
185
|
+
var _disconnectFromMobiusSocket = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
|
|
186
|
+
var logContext, wssUrl, _this$metricManager3, _this$metricManager4, _t2;
|
|
187
|
+
return _regenerator.default.wrap(function (_context2) {
|
|
188
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
189
|
+
case 0:
|
|
190
|
+
logContext = {
|
|
191
|
+
file: _constants2.REQUEST_FILE,
|
|
192
|
+
method: _constants2.METHODS.DISCONNECT_FROM_MOBIUS_SOCKET
|
|
193
|
+
};
|
|
194
|
+
_Logger.default.info('Disconnecting from Mobius WebSocket', logContext);
|
|
195
|
+
wssUrl = this.mobiusSocket.getConnectedWebSocketUrl();
|
|
196
|
+
_context2.prev = 1;
|
|
197
|
+
_context2.next = 2;
|
|
198
|
+
return this.mobiusSocket.disconnect(options);
|
|
199
|
+
case 2:
|
|
200
|
+
_Logger.default.log('Mobius WebSocket disconnected successfully', logContext);
|
|
201
|
+
(_this$metricManager3 = this.metricManager) === null || _this$metricManager3 === void 0 ? void 0 : _this$metricManager3.submitMobiusSocketMetric(_types.METRIC_EVENT.MOBIUS_SOCKET, _types.MOBIUS_SOCKET_ACTION.DISCONNECT, _types.METRIC_TYPE.BEHAVIORAL, wssUrl);
|
|
202
|
+
_context2.next = 4;
|
|
203
|
+
break;
|
|
204
|
+
case 3:
|
|
205
|
+
_context2.prev = 3;
|
|
206
|
+
_t2 = _context2["catch"](1);
|
|
207
|
+
// silent error - no need to throw an error
|
|
208
|
+
_Logger.default.warn("Mobius WebSocket disconnection failed: ".concat(String(_t2)), logContext);
|
|
209
|
+
(_this$metricManager4 = this.metricManager) === null || _this$metricManager4 === void 0 ? void 0 : _this$metricManager4.submitMobiusSocketMetric(_types.METRIC_EVENT.MOBIUS_SOCKET_ERROR, _types.MOBIUS_SOCKET_ACTION.DISCONNECT, _types.METRIC_TYPE.BEHAVIORAL, wssUrl, undefined,
|
|
210
|
+
// add trackingId
|
|
211
|
+
String(_t2));
|
|
212
|
+
case 4:
|
|
213
|
+
case "end":
|
|
214
|
+
return _context2.stop();
|
|
215
|
+
}
|
|
216
|
+
}, _callee2, this, [[1, 3]]);
|
|
217
|
+
}));
|
|
218
|
+
function disconnectFromMobiusSocket(_x2) {
|
|
219
|
+
return _disconnectFromMobiusSocket.apply(this, arguments);
|
|
220
|
+
}
|
|
221
|
+
return disconnectFromMobiusSocket;
|
|
222
|
+
}()
|
|
223
|
+
/**
|
|
224
|
+
* Makes a request using HTTP or WebSocket transport per the flag set in the constructor.
|
|
225
|
+
* When using WebSocket, the response is normalized to the WebexRequestPayload shape
|
|
226
|
+
* so callers do not need to know which transport was used.
|
|
227
|
+
* @param request - Request options (uri, method, body, headers, service)
|
|
228
|
+
* @returns Promise resolving to WebexRequestPayload
|
|
229
|
+
*/
|
|
230
|
+
)
|
|
231
|
+
}, {
|
|
232
|
+
key: "makeRequest",
|
|
233
|
+
value: (function () {
|
|
234
|
+
var _makeRequest = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(request) {
|
|
235
|
+
var logContext, trackingId, socketType, isSupplementaryService, wsResponse, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0, _t1, _t10, _t11, _t12, _t13, _t14;
|
|
236
|
+
return _regenerator.default.wrap(function (_context3) {
|
|
237
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
238
|
+
case 0:
|
|
239
|
+
logContext = {
|
|
240
|
+
file: _constants2.REQUEST_FILE,
|
|
241
|
+
method: _constants2.METHODS.MAKE_REQUEST
|
|
242
|
+
};
|
|
243
|
+
_Logger.default.info("Dispatching request via ".concat(this.isMobiusSocketEnabled ? 'WSS' : 'HTTP', " "), logContext);
|
|
244
|
+
if (!this.isMobiusSocketEnabled) {
|
|
245
|
+
_context3.next = 8;
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
trackingId = "webex-js-sdk_".concat((0, _uuid.v4)());
|
|
249
|
+
socketType = (0, _mobiusSocketMapper.deriveMobiusSocketMessageType)(request.uri, request.method);
|
|
250
|
+
if (!(socketType === _constants.MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN)) {
|
|
251
|
+
_context3.next = 1;
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
_Logger.default.error("Unknown Mobius Socket message type for uri: ".concat(request.uri, ", httpMethod: ").concat(request.method), logContext);
|
|
255
|
+
throw new Error("Unknown Mobius Socket message type: ".concat(socketType));
|
|
256
|
+
case 1:
|
|
257
|
+
isSupplementaryService = (0, _mobiusSocketMapper.isSupplementaryServiceMessageType)(socketType);
|
|
258
|
+
_context3.prev = 2;
|
|
259
|
+
_t3 = this.mobiusSocket;
|
|
260
|
+
_t4 = socketType;
|
|
261
|
+
_t5 = trackingId;
|
|
262
|
+
_t6 = _objectSpread;
|
|
263
|
+
_t7 = _objectSpread({}, request.headers);
|
|
264
|
+
_t8 = {};
|
|
265
|
+
_t9 = _constants2.CALLING_USER_AGENT;
|
|
266
|
+
_t0 = "";
|
|
267
|
+
_t10 = isSupplementaryService;
|
|
268
|
+
if (!_t10) {
|
|
269
|
+
_context3.next = 4;
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
_context3.next = 3;
|
|
273
|
+
return this.webex.credentials.getUserToken();
|
|
274
|
+
case 3:
|
|
275
|
+
_t10 = _context3.sent;
|
|
276
|
+
case 4:
|
|
277
|
+
_t1 = _t10;
|
|
278
|
+
if (_t1) {
|
|
279
|
+
_context3.next = 5;
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
_t1 = '';
|
|
283
|
+
case 5:
|
|
284
|
+
_t11 = _t0.concat.call(_t0, _t1);
|
|
285
|
+
_t12 = _t6(_t7, _t8, {
|
|
286
|
+
userAgent: _t9,
|
|
287
|
+
authorization: _t11
|
|
288
|
+
});
|
|
289
|
+
_t13 = request.body;
|
|
290
|
+
_context3.next = 6;
|
|
291
|
+
return _t3.sendWssRequest.call(_t3, {
|
|
292
|
+
type: _t4,
|
|
293
|
+
trackingId: _t5,
|
|
294
|
+
metadata: _t12,
|
|
295
|
+
data: _t13
|
|
296
|
+
});
|
|
297
|
+
case 6:
|
|
298
|
+
wsResponse = _context3.sent;
|
|
299
|
+
_Logger.default.log("WSS request succeeded - socketType: ".concat(socketType, ", trackingId: ").concat(trackingId, ", statusCode: ").concat(wsResponse.statusCode), logContext);
|
|
300
|
+
return _context3.abrupt("return", normalizeWsResponse(wsResponse));
|
|
301
|
+
case 7:
|
|
302
|
+
_context3.prev = 7;
|
|
303
|
+
_t14 = _context3["catch"](2);
|
|
304
|
+
_Logger.default.error("WSS request failed - socketType: ".concat(socketType, ", trackingId: ").concat(trackingId, ", error: ").concat(String(_t14)), logContext);
|
|
305
|
+
throw normalizeWsError(_t14);
|
|
306
|
+
case 8:
|
|
307
|
+
return _context3.abrupt("return", this.webex.request(request));
|
|
308
|
+
case 9:
|
|
309
|
+
case "end":
|
|
310
|
+
return _context3.stop();
|
|
311
|
+
}
|
|
312
|
+
}, _callee3, this, [[2, 7]]);
|
|
313
|
+
}));
|
|
314
|
+
function makeRequest(_x3) {
|
|
315
|
+
return _makeRequest.apply(this, arguments);
|
|
316
|
+
}
|
|
317
|
+
return makeRequest;
|
|
318
|
+
}())
|
|
319
|
+
}, {
|
|
320
|
+
key: "registerMobiusSocketListener",
|
|
321
|
+
value: function registerMobiusSocketListener(cb) {
|
|
322
|
+
var _this$metricManager5;
|
|
323
|
+
var logContext = {
|
|
324
|
+
file: _constants2.REQUEST_FILE,
|
|
325
|
+
method: _constants2.METHODS.REGISTER_MOBIUS_SOCKET_LISTENER
|
|
326
|
+
};
|
|
327
|
+
_Logger.default.info('Attaching Mobius async event listener', logContext);
|
|
328
|
+
this.mobiusSocket.on('event:async_event', function (data) {
|
|
329
|
+
var _data$data$eventType, _data$data;
|
|
330
|
+
_Logger.default.trace("Mobius async event received - eventType: ".concat((_data$data$eventType = data === null || data === void 0 ? void 0 : (_data$data = data.data) === null || _data$data === void 0 ? void 0 : _data$data.eventType) !== null && _data$data$eventType !== void 0 ? _data$data$eventType : 'unknown'), logContext);
|
|
331
|
+
cb(data);
|
|
332
|
+
});
|
|
333
|
+
_Logger.default.log('Mobius async event listener attached', logContext);
|
|
334
|
+
(_this$metricManager5 = this.metricManager) === null || _this$metricManager5 === void 0 ? void 0 : _this$metricManager5.submitMobiusSocketMetric(_types.METRIC_EVENT.MOBIUS_SOCKET, _types.MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED, _types.METRIC_TYPE.BEHAVIORAL);
|
|
335
|
+
}
|
|
336
|
+
}, {
|
|
337
|
+
key: "unregisterMobiusSocketListener",
|
|
338
|
+
value: function unregisterMobiusSocketListener() {
|
|
339
|
+
var _this$metricManager6;
|
|
340
|
+
var logContext = {
|
|
341
|
+
file: _constants2.REQUEST_FILE,
|
|
342
|
+
method: _constants2.METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER
|
|
343
|
+
};
|
|
344
|
+
_Logger.default.info('Detaching Mobius async event listener', logContext);
|
|
345
|
+
this.mobiusSocket.off('event:async_event');
|
|
346
|
+
_Logger.default.log('Mobius async event listener detached', logContext);
|
|
347
|
+
(_this$metricManager6 = this.metricManager) === null || _this$metricManager6 === void 0 ? void 0 : _this$metricManager6.submitMobiusSocketMetric(_types.METRIC_EVENT.MOBIUS_SOCKET, _types.MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED, _types.METRIC_TYPE.BEHAVIORAL);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Bridges the underlying Mobius socket connect/disconnect lifecycle to the caller.
|
|
352
|
+
* The socket emits `online` on every successful (re)connect and `offline.*` on close,
|
|
353
|
+
* where the suffix distinguishes the disconnect reason.
|
|
354
|
+
*
|
|
355
|
+
* @param listener - Callbacks invoked on connect and disconnect transitions.
|
|
356
|
+
*/
|
|
357
|
+
}, {
|
|
358
|
+
key: "registerMobiusSocketConnectionListener",
|
|
359
|
+
value: function registerMobiusSocketConnectionListener(listener) {
|
|
360
|
+
var logContext = {
|
|
361
|
+
file: _constants2.REQUEST_FILE,
|
|
362
|
+
method: _constants2.METHODS.REGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER
|
|
363
|
+
};
|
|
364
|
+
_Logger.default.info('Attaching Mobius socket connection listener', logContext);
|
|
365
|
+
this.mobiusSocket.on('online', function () {
|
|
366
|
+
_Logger.default.log('Mobius socket connected', logContext);
|
|
367
|
+
listener.onConnected();
|
|
368
|
+
});
|
|
369
|
+
this.mobiusSocket.on('offline.permanent', function () {
|
|
370
|
+
_Logger.default.log('Mobius socket disconnected (permanent)', logContext);
|
|
371
|
+
listener.onDisconnected(_constants.MOBIUS_SOCKET_DISCONNECT_REASON.PERMANENT);
|
|
372
|
+
});
|
|
373
|
+
this.mobiusSocket.on('offline.transient', function () {
|
|
374
|
+
_Logger.default.log('Mobius socket disconnected (transient)', logContext);
|
|
375
|
+
listener.onDisconnected(_constants.MOBIUS_SOCKET_DISCONNECT_REASON.TRANSIENT);
|
|
376
|
+
});
|
|
377
|
+
this.mobiusSocket.on('offline.replaced', function () {
|
|
378
|
+
_Logger.default.log('Mobius socket disconnected (replaced)', logContext);
|
|
379
|
+
listener.onDisconnected(_constants.MOBIUS_SOCKET_DISCONNECT_REASON.REPLACED);
|
|
380
|
+
});
|
|
381
|
+
_Logger.default.log('Mobius socket connection listener attached', logContext);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Whether the underlying Mobius WebSocket is currently connected.
|
|
386
|
+
*
|
|
387
|
+
* Useful for consumers that subscribe to connection events after the socket may
|
|
388
|
+
* already be up (the socket only emits `online` on a fresh (re)connect), so they
|
|
389
|
+
* can reconcile the initial connected state instead of waiting for the next event.
|
|
390
|
+
*/
|
|
391
|
+
}, {
|
|
392
|
+
key: "isSocketConnected",
|
|
393
|
+
value: function isSocketConnected() {
|
|
394
|
+
return this.mobiusSocket.isConnected();
|
|
395
|
+
}
|
|
396
|
+
}, {
|
|
397
|
+
key: "unregisterMobiusSocketConnectionListener",
|
|
398
|
+
value: function unregisterMobiusSocketConnectionListener() {
|
|
399
|
+
var logContext = {
|
|
400
|
+
file: _constants2.REQUEST_FILE,
|
|
401
|
+
method: _constants2.METHODS.UNREGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER
|
|
402
|
+
};
|
|
403
|
+
_Logger.default.info('Detaching Mobius socket connection listener', logContext);
|
|
404
|
+
this.mobiusSocket.off('online');
|
|
405
|
+
this.mobiusSocket.off('offline.permanent');
|
|
406
|
+
this.mobiusSocket.off('offline.transient');
|
|
407
|
+
this.mobiusSocket.off('offline.replaced');
|
|
408
|
+
_Logger.default.log('Mobius socket connection listener detached', logContext);
|
|
409
|
+
}
|
|
410
|
+
}], [{
|
|
411
|
+
key: "getInstance",
|
|
412
|
+
value: function getInstance(config) {
|
|
413
|
+
if (!APIRequest.instance) {
|
|
414
|
+
APIRequest.instance = new APIRequest(config);
|
|
415
|
+
}
|
|
416
|
+
return APIRequest.instance;
|
|
417
|
+
}
|
|
418
|
+
}, {
|
|
419
|
+
key: "resetInstance",
|
|
420
|
+
value: function resetInstance() {
|
|
421
|
+
APIRequest.instance = undefined;
|
|
422
|
+
}
|
|
423
|
+
}]);
|
|
424
|
+
}();
|
|
425
|
+
/**
|
|
426
|
+
* Factory function to create a singleton APIRequest instance
|
|
427
|
+
* @param config - Configuration object for APIRequest
|
|
428
|
+
* @returns APIRequest instance
|
|
429
|
+
*/
|
|
430
|
+
// eslint-disable-next-line no-use-before-define
|
|
431
|
+
(0, _defineProperty2.default)(APIRequest, "instance", void 0);
|
|
432
|
+
var createAPIRequest = exports.createAPIRequest = function createAPIRequest(config) {
|
|
433
|
+
return APIRequest.getInstance(config);
|
|
434
|
+
};
|
|
435
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_uuid","require","_mobiusSocket","_Logger","_interopRequireDefault","_mobiusSocketMapper","_constants","_wsFeatureFlag","_constants2","_Metrics","_types","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","normalizeWsResponse","wsResponse","_ref","_ref2","statusCode","body","data","undefined","headers","trackingid","trackingId","metadata","normalizeWsError","err","_ref3","_wsErr$response","_ref4","_wsErr$trackingId","_wsErr$response2","_ref5","_wsErr$response3","wsErr","response","APIRequest","exports","config","_classCallCheck2","logContext","file","REQUEST_FILE","method","METHODS","CONSTRUCTOR","webex","log","error","Error","isMobiusSocketEnabled","isMobiusWssEnabled","mobiusSocket","getMobiusSocketInstance","metricManager","getMetricManager","info","concat","_createClass2","key","value","isSocketEnabled","setSocketEnabled","enabled","SET_SOCKET_ENABLED","_connectToMobiusSocket","_asyncToGenerator2","_regenerator","mark","_callee","wssUrl","_this$metricManager","_this$metricManager2","_t","wrap","_context","prev","next","CONNECT_TO_MOBIUS_SOCKET","isConnected","abrupt","getConnectedWebSocketUrl","connect","submitMobiusSocketMetric","METRIC_EVENT","MOBIUS_SOCKET","MOBIUS_SOCKET_ACTION","CONNECT","METRIC_TYPE","BEHAVIORAL","warn","String","MOBIUS_SOCKET_ERROR","stop","connectToMobiusSocket","_x","_disconnectFromMobiusSocket","_callee2","options","_this$metricManager3","_this$metricManager4","_t2","_context2","DISCONNECT_FROM_MOBIUS_SOCKET","disconnect","DISCONNECT","disconnectFromMobiusSocket","_x2","_makeRequest","_callee3","request","socketType","isSupplementaryService","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_t1","_t10","_t11","_t12","_t13","_t14","_context3","MAKE_REQUEST","uuid","deriveMobiusSocketMessageType","uri","MOBIUS_SOCKET_MESSAGE_TYPE","UNKNOWN","isSupplementaryServiceMessageType","CALLING_USER_AGENT","credentials","getUserToken","sent","call","userAgent","authorization","sendWssRequest","type","makeRequest","_x3","registerMobiusSocketListener","cb","_this$metricManager5","REGISTER_MOBIUS_SOCKET_LISTENER","on","_data$data$eventType","_data$data","trace","eventType","LISTENER_REGISTERED","unregisterMobiusSocketListener","_this$metricManager6","UNREGISTER_MOBIUS_SOCKET_LISTENER","off","LISTENER_UNREGISTERED","registerMobiusSocketConnectionListener","listener","REGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER","onConnected","onDisconnected","MOBIUS_SOCKET_DISCONNECT_REASON","PERMANENT","TRANSIENT","REPLACED","isSocketConnected","unregisterMobiusSocketConnectionListener","UNREGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER","getInstance","instance","resetInstance","createAPIRequest"],"sources":["request.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {getMobiusSocketInstance} from '../../mobius-socket';\nimport {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\nimport log from '../../Logger';\nimport {\n APIRequestConfig,\n APIRequestOptions,\n MobiusAsyncEvent,\n MobiusSocketConnectionListener,\n MobiusSocketResponse,\n} from './types';\nimport {\n deriveMobiusSocketMessageType,\n isSupplementaryServiceMessageType,\n} from './mobiusSocketMapper';\nimport {MOBIUS_SOCKET_DISCONNECT_REASON, MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\nimport {isMobiusWssEnabled} from './wsFeatureFlag';\nimport {CALLING_USER_AGENT, METHODS, REQUEST_FILE} from '../constants';\nimport {getMetricManager} from '../../Metrics';\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION} from '../../Metrics/types';\n\n/**\n * Converts a MobiusSocketResponse into the WebexRequestPayload shape that\n * all callers (registration, call, keepalive error-handlers) expect.\n */\nfunction normalizeWsResponse(wsResponse: MobiusSocketResponse): WebexRequestPayload {\n return {\n statusCode: wsResponse.statusCode,\n body: (wsResponse.data as object) ?? undefined,\n headers: {\n trackingid: wsResponse.trackingId,\n ...((wsResponse.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * Converts a MobiusSocketResponseError rejection into a WebexRequestPayload-shaped\n * error so handleRegistrationErrors / handleCallErrors can process it identically.\n */\nfunction normalizeWsError(err: unknown): WebexRequestPayload {\n const wsErr = err as {\n statusCode?: number;\n statusMessage?: string;\n response?: MobiusSocketResponse;\n trackingId?: string;\n };\n\n return {\n statusCode: wsErr.statusCode,\n body: (wsErr.response?.data as object) ?? undefined,\n headers: {\n trackingid: wsErr.trackingId ?? wsErr.response?.trackingId ?? '',\n ...((wsErr.response?.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * APIRequest routes Mobius traffic over HTTP (`webex.request`) or the Mobius WebSocket path\n * (`mobiusSocketRequest`). `isMobiusSocketEnabled` is set in the constructor from WDM\n * `webrtc-calling-over-ws` and/or SDK config (interim until WDM is fully in prod).\n */\nexport class APIRequest {\n // eslint-disable-next-line no-use-before-define\n private static instance: APIRequest | undefined;\n private isMobiusSocketEnabled: boolean;\n private webex: WebexSDK;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private mobiusSocket: any;\n private metricManager: IMetricManager;\n\n static getInstance(config: APIRequestConfig): APIRequest {\n if (!APIRequest.instance) {\n APIRequest.instance = new APIRequest(config);\n }\n\n return APIRequest.instance;\n }\n\n static resetInstance(): void {\n APIRequest.instance = undefined;\n }\n\n /**\n * @param config - Webex instance plus optional SDK Mobius-socket override\n */\n constructor(config: APIRequestConfig) {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONSTRUCTOR,\n };\n\n if (!config.webex) {\n log.error('APIRequest instantiation failed: WebexSDK instance is required', logContext);\n throw new Error('WebexSDK instance is required');\n }\n\n this.webex = config.webex;\n this.isMobiusSocketEnabled = isMobiusWssEnabled(config.webex) || false;\n this.mobiusSocket = getMobiusSocketInstance(this.webex);\n this.metricManager = getMetricManager(this.webex);\n\n log.info(\n `APIRequest initialized with transport: ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'}`,\n logContext\n );\n }\n\n /**\n * Whether the Mobius WebSocket transport is active for this instance.\n */\n public isSocketEnabled(): boolean {\n return this.isMobiusSocketEnabled;\n }\n\n /**\n * Overrides the active Mobius transport for subsequent requests.\n *\n * The constructor seeds this from the `webrtc-calling-over-ws` feature flag, but\n * registration may need to fall back to HTTP for a Mobius server group that has no\n * WSS URL (even while the feature is enabled). Toggling this keeps all transport-gated\n * paths (connect, teardown, makeRequest) consistent for the group being registered.\n *\n * @param enabled - `true` to route over the Mobius WebSocket, `false` for HTTP.\n */\n public setSocketEnabled(enabled: boolean): void {\n this.isMobiusSocketEnabled = enabled;\n\n log.info(`APIRequest transport set to: ${enabled ? 'WSS' : 'HTTP'}`, {\n file: REQUEST_FILE,\n method: METHODS.SET_SOCKET_ENABLED,\n });\n }\n\n /**\n * Ensures the Mobius WebSocket is connected before sending API requests.\n * If the socket is already connected, resolves immediately. Otherwise,\n * initiates a new connection to the provided WebSocket URL.\n * On failure, throws a normalized WebexRequestPayload-shaped error.\n *\n * @param wssUrl - The Mobius WebSocket URL to connect to.\n */\n public async connectToMobiusSocket(wssUrl: string): Promise<string | undefined> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONNECT_TO_MOBIUS_SOCKET,\n };\n\n if (this.mobiusSocket.isConnected()) {\n log.info('Mobius WebSocket already connected', logContext);\n\n return this.mobiusSocket.getConnectedWebSocketUrl();\n }\n\n log.info('Mobius WebSocket not connected, initiating connection', logContext);\n\n try {\n await this.mobiusSocket.connect(wssUrl);\n log.log('Mobius WebSocket connected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n\n return wssUrl;\n } catch (err) {\n log.warn(`Mobius WebSocket connection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined,\n String(err)\n );\n\n throw normalizeWsError(err);\n }\n }\n\n public getConnectedWebSocketUrl() {\n return this.mobiusSocket.getConnectedWebSocketUrl();\n }\n\n /**\n * Disconnects the default session from the Mobius WebSocket.\n */\n public async disconnectFromMobiusSocket(options?: {code: number; reason: string}): Promise<void> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.DISCONNECT_FROM_MOBIUS_SOCKET,\n };\n\n log.info('Disconnecting from Mobius WebSocket', logContext);\n\n const wssUrl = this.mobiusSocket.getConnectedWebSocketUrl();\n\n try {\n await this.mobiusSocket.disconnect(options);\n log.log('Mobius WebSocket disconnected successfully', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n } catch (err) {\n // silent error - no need to throw an error\n log.warn(`Mobius WebSocket disconnection failed: ${String(err)}`, logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined, // add trackingId\n String(err)\n );\n }\n }\n\n /**\n * Makes a request using HTTP or WebSocket transport per the flag set in the constructor.\n * When using WebSocket, the response is normalized to the WebexRequestPayload shape\n * so callers do not need to know which transport was used.\n * @param request - Request options (uri, method, body, headers, service)\n * @returns Promise resolving to WebexRequestPayload\n */\n public async makeRequest(request: APIRequestOptions): Promise<WebexRequestPayload> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.MAKE_REQUEST,\n };\n log.info(`Dispatching request via ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'} `, logContext);\n\n if (this.isMobiusSocketEnabled) {\n const trackingId = `webex-js-sdk_${uuid()}`;\n const socketType = deriveMobiusSocketMessageType(request.uri, request.method);\n\n if (socketType === MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN) {\n log.error(\n `Unknown Mobius Socket message type for uri: ${request.uri}, httpMethod: ${request.method}`,\n logContext\n );\n throw new Error(`Unknown Mobius Socket message type: ${socketType}`);\n }\n\n const isSupplementaryService = isSupplementaryServiceMessageType(socketType);\n\n try {\n const wsResponse: MobiusSocketResponse = await this.mobiusSocket.sendWssRequest({\n type: socketType,\n trackingId,\n metadata: {\n ...request.headers,\n userAgent: CALLING_USER_AGENT,\n authorization: `${\n (isSupplementaryService && (await this.webex.credentials.getUserToken())) || ''\n }`,\n },\n data: request.body,\n });\n\n log.log(\n `WSS request succeeded - socketType: ${socketType}, trackingId: ${trackingId}, statusCode: ${wsResponse.statusCode}`,\n logContext\n );\n\n return normalizeWsResponse(wsResponse);\n } catch (err) {\n log.error(\n `WSS request failed - socketType: ${socketType}, trackingId: ${trackingId}, error: ${String(\n err\n )}`,\n logContext\n );\n throw normalizeWsError(err);\n }\n }\n\n return this.webex.request(request) as Promise<WebexRequestPayload>;\n }\n\n public registerMobiusSocketListener(cb: (data?: MobiusAsyncEvent) => void): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Attaching Mobius async event listener', logContext);\n\n this.mobiusSocket.on('event:async_event', (data: MobiusAsyncEvent) => {\n log.trace(\n `Mobius async event received - eventType: ${data?.data?.eventType ?? 'unknown'}`,\n logContext\n );\n cb(data);\n });\n\n log.log('Mobius async event listener attached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n\n public unregisterMobiusSocketListener(): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,\n };\n\n log.info('Detaching Mobius async event listener', logContext);\n this.mobiusSocket.off('event:async_event');\n log.log('Mobius async event listener detached', logContext);\n\n this.metricManager?.submitMobiusSocketMetric(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n }\n\n /**\n * Bridges the underlying Mobius socket connect/disconnect lifecycle to the caller.\n * The socket emits `online` on every successful (re)connect and `offline.*` on close,\n * where the suffix distinguishes the disconnect reason.\n *\n * @param listener - Callbacks invoked on connect and disconnect transitions.\n */\n public registerMobiusSocketConnectionListener(listener: MobiusSocketConnectionListener): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.REGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER,\n };\n\n log.info('Attaching Mobius socket connection listener', logContext);\n\n this.mobiusSocket.on('online', () => {\n log.log('Mobius socket connected', logContext);\n listener.onConnected();\n });\n\n this.mobiusSocket.on('offline.permanent', () => {\n log.log('Mobius socket disconnected (permanent)', logContext);\n listener.onDisconnected(MOBIUS_SOCKET_DISCONNECT_REASON.PERMANENT);\n });\n\n this.mobiusSocket.on('offline.transient', () => {\n log.log('Mobius socket disconnected (transient)', logContext);\n listener.onDisconnected(MOBIUS_SOCKET_DISCONNECT_REASON.TRANSIENT);\n });\n\n this.mobiusSocket.on('offline.replaced', () => {\n log.log('Mobius socket disconnected (replaced)', logContext);\n listener.onDisconnected(MOBIUS_SOCKET_DISCONNECT_REASON.REPLACED);\n });\n\n log.log('Mobius socket connection listener attached', logContext);\n }\n\n /**\n * Whether the underlying Mobius WebSocket is currently connected.\n *\n * Useful for consumers that subscribe to connection events after the socket may\n * already be up (the socket only emits `online` on a fresh (re)connect), so they\n * can reconcile the initial connected state instead of waiting for the next event.\n */\n public isSocketConnected(): boolean {\n return this.mobiusSocket.isConnected();\n }\n\n public unregisterMobiusSocketConnectionListener(): void {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.UNREGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER,\n };\n\n log.info('Detaching Mobius socket connection listener', logContext);\n this.mobiusSocket.off('online');\n this.mobiusSocket.off('offline.permanent');\n this.mobiusSocket.off('offline.transient');\n this.mobiusSocket.off('offline.replaced');\n log.log('Mobius socket connection listener detached', logContext);\n }\n}\n\n/**\n * Factory function to create a singleton APIRequest instance\n * @param config - Configuration object for APIRequest\n * @returns APIRequest instance\n */\nexport const createAPIRequest = (config: APIRequestConfig): APIRequest =>\n APIRequest.getInstance(config);\n"],"mappings":"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","ignoreList":[]}
|