@webex/calling 3.11.0 → 3.12.0-llmrefactor.2
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/CallHistory/CallHistory.js +596 -0
- package/dist/CallHistory/CallHistory.js.map +1 -0
- package/dist/CallHistory/CallHistory.test.js +916 -0
- package/dist/CallHistory/CallHistory.test.js.map +1 -0
- package/dist/CallHistory/callHistoryFixtures.js +650 -0
- package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
- package/dist/CallHistory/constants.js +38 -0
- package/dist/CallHistory/constants.js.map +1 -0
- package/dist/CallHistory/types.js +7 -0
- package/dist/CallHistory/types.js.map +1 -0
- 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/CallSettings/CallSettings.js +311 -0
- package/dist/CallSettings/CallSettings.js.map +1 -0
- package/dist/CallSettings/CallSettings.test.js +122 -0
- package/dist/CallSettings/CallSettings.test.js.map +1 -0
- package/dist/CallSettings/UcmBackendConnector.js +308 -0
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
- package/dist/CallSettings/UcmBackendConnector.test.js +411 -0
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
- package/dist/CallSettings/WxCallBackendConnector.js +597 -0
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
- package/dist/CallSettings/WxCallBackendConnector.test.js +904 -0
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
- package/dist/CallSettings/constants.js +31 -0
- package/dist/CallSettings/constants.js.map +1 -0
- package/dist/CallSettings/testFixtures.js +68 -0
- package/dist/CallSettings/testFixtures.js.map +1 -0
- package/dist/CallSettings/types.js +7 -0
- package/dist/CallSettings/types.js.map +1 -0
- package/dist/CallingClient/CallingClient.js +1349 -0
- package/dist/CallingClient/CallingClient.js.map +1 -0
- package/dist/CallingClient/CallingClient.test.js +1625 -0
- package/dist/CallingClient/CallingClient.test.js.map +1 -0
- package/dist/CallingClient/callRecordFixtures.js +101 -0
- package/dist/CallingClient/callRecordFixtures.js.map +1 -0
- package/dist/CallingClient/calling/CallerId/index.js +275 -0
- package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
- package/dist/CallingClient/calling/CallerId/index.test.js +275 -0
- package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
- package/dist/CallingClient/calling/CallerId/types.js +7 -0
- package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
- package/dist/CallingClient/calling/call.js +3666 -0
- package/dist/CallingClient/calling/call.js.map +1 -0
- package/dist/CallingClient/calling/call.test.js +3970 -0
- package/dist/CallingClient/calling/call.test.js.map +1 -0
- package/dist/CallingClient/calling/callManager.js +531 -0
- package/dist/CallingClient/calling/callManager.js.map +1 -0
- package/dist/CallingClient/calling/callManager.test.js +881 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -0
- package/dist/CallingClient/calling/index.js +30 -0
- package/dist/CallingClient/calling/index.js.map +1 -0
- package/dist/CallingClient/calling/types.js +79 -0
- package/dist/CallingClient/calling/types.js.map +1 -0
- package/dist/CallingClient/callingClientFixtures.js +143 -0
- package/dist/CallingClient/callingClientFixtures.js.map +1 -0
- package/dist/CallingClient/constants.js +272 -0
- package/dist/CallingClient/constants.js.map +1 -0
- package/dist/CallingClient/line/index.js +339 -0
- package/dist/CallingClient/line/index.js.map +1 -0
- package/dist/CallingClient/line/line.test.js +379 -0
- package/dist/CallingClient/line/line.test.js.map +1 -0
- package/dist/CallingClient/line/types.js +21 -0
- package/dist/CallingClient/line/types.js.map +1 -0
- package/dist/CallingClient/registration/index.js +19 -0
- package/dist/CallingClient/registration/index.js.map +1 -0
- package/dist/CallingClient/registration/register.js +2079 -0
- package/dist/CallingClient/registration/register.js.map +1 -0
- package/dist/CallingClient/registration/register.test.js +2476 -0
- package/dist/CallingClient/registration/register.test.js.map +1 -0
- package/dist/CallingClient/registration/registerFixtures.js +36 -0
- package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
- package/dist/CallingClient/registration/types.js +33 -0
- package/dist/CallingClient/registration/types.js.map +1 -0
- package/dist/CallingClient/registration/webWorker.js +67 -0
- package/dist/CallingClient/registration/webWorker.js.map +1 -0
- package/dist/CallingClient/registration/webWorker.test.js +189 -0
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
- package/dist/CallingClient/registration/webWorkerStr.js +15 -0
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
- package/dist/CallingClient/types.js +14 -0
- package/dist/CallingClient/types.js.map +1 -0
- 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/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
- package/dist/Contacts/ContactsClient.js +1208 -0
- package/dist/Contacts/ContactsClient.js.map +1 -0
- package/dist/Contacts/ContactsClient.test.js +999 -0
- package/dist/Contacts/ContactsClient.test.js.map +1 -0
- package/dist/Contacts/constants.js +40 -0
- package/dist/Contacts/constants.js.map +1 -0
- package/dist/Contacts/contactFixtures.js +430 -0
- package/dist/Contacts/contactFixtures.js.map +1 -0
- package/dist/Contacts/types.js +43 -0
- package/dist/Contacts/types.js.map +1 -0
- package/dist/Errors/catalog/CallError.js +89 -0
- package/dist/Errors/catalog/CallError.js.map +1 -0
- package/dist/Errors/catalog/CallingDeviceError.js +83 -0
- package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
- package/dist/Errors/catalog/ExtendedError.js +42 -0
- package/dist/Errors/catalog/ExtendedError.js.map +1 -0
- package/dist/Errors/catalog/LineError.js +85 -0
- package/dist/Errors/catalog/LineError.js.map +1 -0
- package/dist/Errors/index.js +28 -0
- package/dist/Errors/index.js.map +1 -0
- package/dist/Errors/types.js +61 -0
- package/dist/Errors/types.js.map +1 -0
- package/dist/Events/impl/index.js +79 -0
- package/dist/Events/impl/index.js.map +1 -0
- package/dist/Events/types.js +134 -0
- package/dist/Events/types.js.map +1 -0
- package/dist/Logger/index.js +228 -0
- package/dist/Logger/index.js.map +1 -0
- package/dist/Logger/index.test.js +87 -0
- package/dist/Logger/index.test.js.map +1 -0
- package/dist/Logger/types.js +34 -0
- package/dist/Logger/types.js.map +1 -0
- package/dist/Metrics/index.js +595 -0
- package/dist/Metrics/index.js.map +1 -0
- package/dist/Metrics/index.test.js +819 -0
- package/dist/Metrics/index.test.js.map +1 -0
- package/dist/Metrics/types.js +82 -0
- package/dist/Metrics/types.js.map +1 -0
- package/dist/SDKConnector/index.js +102 -0
- package/dist/SDKConnector/index.js.map +1 -0
- package/dist/SDKConnector/index.test.js +9 -0
- package/dist/SDKConnector/index.test.js.map +1 -0
- package/dist/SDKConnector/types.js +7 -0
- package/dist/SDKConnector/types.js.map +1 -0
- package/dist/SDKConnector/utils.js +39 -0
- package/dist/SDKConnector/utils.js.map +1 -0
- package/dist/SDKConnector/utils.test.js +9 -0
- package/dist/SDKConnector/utils.test.js.map +1 -0
- package/dist/Voicemail/BroadworksBackendConnector.js +699 -0
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
- package/dist/Voicemail/BroadworksBackendConnector.test.js +820 -0
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
- package/dist/Voicemail/UcmBackendConnector.js +628 -0
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
- package/dist/Voicemail/UcmBackendConnector.test.js +738 -0
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
- package/dist/Voicemail/Voicemail.js +472 -0
- package/dist/Voicemail/Voicemail.js.map +1 -0
- package/dist/Voicemail/Voicemail.test.js +391 -0
- package/dist/Voicemail/Voicemail.test.js.map +1 -0
- package/dist/Voicemail/WxCallBackendConnector.js +657 -0
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
- package/dist/Voicemail/WxCallBackendConnector.test.js +1225 -0
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
- package/dist/Voicemail/constants.js +61 -0
- package/dist/Voicemail/constants.js.map +1 -0
- package/dist/Voicemail/types.js +7 -0
- package/dist/Voicemail/types.js.map +1 -0
- package/dist/Voicemail/voicemailFixture.js +524 -0
- package/dist/Voicemail/voicemailFixture.js.map +1 -0
- package/dist/api.js +213 -0
- package/dist/api.js.map +1 -0
- package/dist/common/Utils.js +1624 -0
- package/dist/common/Utils.js.map +1 -0
- package/dist/common/Utils.test.js +2225 -0
- package/dist/common/Utils.test.js.map +1 -0
- package/dist/common/constants.js +62 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/index.js +19 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/testUtil.js +988 -0
- package/dist/common/testUtil.js.map +1 -0
- package/dist/common/types.js +78 -0
- package/dist/common/types.js.map +1 -0
- package/dist/index.js +452 -0
- package/dist/index.js.map +1 -0
- 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/CallHistory/CallHistory.js +28 -17
- 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 +166 -8
- package/dist/module/CallingClient/calling/call.js +201 -68
- package/dist/module/CallingClient/calling/callManager.js +51 -11
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +29 -0
- package/dist/module/CallingClient/line/index.js +4 -2
- package/dist/module/CallingClient/registration/register.js +274 -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 -10
- 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/CallHistory/CallHistory.d.ts.map +1 -1
- 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 +10 -1
- 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 +29 -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 +10 -2
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +29 -3
- 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 +6 -3
- 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 -16
- 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 +9 -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
|
@@ -1,73 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { HTTP_METHODS, WorkerMessageType } from '../../common/types';
|
|
1
|
+
import { WorkerMessageType } from '../../common/types';
|
|
3
2
|
let keepaliveTimer;
|
|
3
|
+
let keepAliveRetryCount = 0;
|
|
4
|
+
let keepaliveInFlight = false;
|
|
5
|
+
const clearKeepaliveTimer = () => {
|
|
6
|
+
if (keepaliveTimer) {
|
|
7
|
+
clearInterval(keepaliveTimer);
|
|
8
|
+
keepaliveTimer = undefined;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
4
11
|
const messageHandler = (event) => {
|
|
5
12
|
const { type } = event.data;
|
|
6
|
-
const postKeepAlive = async (accessToken, deviceUrl, url) => {
|
|
7
|
-
const response = await fetch(`${url}/status`, {
|
|
8
|
-
method: HTTP_METHODS.POST,
|
|
9
|
-
headers: {
|
|
10
|
-
'cisco-device-url': deviceUrl,
|
|
11
|
-
'spark-user-agent': 'webex-calling/beta',
|
|
12
|
-
Authorization: `${accessToken}`,
|
|
13
|
-
trackingId: `web_worker_${uuid()}`,
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
if (!response.ok) {
|
|
17
|
-
throw response;
|
|
18
|
-
}
|
|
19
|
-
return response;
|
|
20
|
-
};
|
|
21
13
|
if (type === WorkerMessageType.START_KEEPALIVE) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const statusCode = res.status;
|
|
33
|
-
if (keepAliveRetryCount > 0) {
|
|
34
|
-
postMessage({
|
|
35
|
-
type: WorkerMessageType.KEEPALIVE_SUCCESS,
|
|
36
|
-
statusCode,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
keepAliveRetryCount = 0;
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
const headers = {};
|
|
43
|
-
if (err.headers?.has('Retry-After')) {
|
|
44
|
-
headers['retry-after'] = err.headers.get('Retry-After');
|
|
45
|
-
}
|
|
46
|
-
if (err.headers?.has('Trackingid')) {
|
|
47
|
-
headers['trackingid'] = err.headers.get('Trackingid');
|
|
48
|
-
}
|
|
49
|
-
const error = {
|
|
50
|
-
headers,
|
|
51
|
-
statusCode: err.status,
|
|
52
|
-
statusText: err.statusText,
|
|
53
|
-
type: err.type,
|
|
54
|
-
};
|
|
55
|
-
keepAliveRetryCount += 1;
|
|
56
|
-
postMessage({
|
|
57
|
-
type: WorkerMessageType.KEEPALIVE_FAILURE,
|
|
58
|
-
err: error,
|
|
59
|
-
keepAliveRetryCount,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
14
|
+
const { interval, retryCountThreshold } = event.data;
|
|
15
|
+
clearKeepaliveTimer();
|
|
16
|
+
keepAliveRetryCount = 0;
|
|
17
|
+
keepaliveInFlight = false;
|
|
18
|
+
keepaliveTimer = setInterval(() => {
|
|
19
|
+
if (keepAliveRetryCount < retryCountThreshold && !keepaliveInFlight) {
|
|
20
|
+
keepaliveInFlight = true;
|
|
21
|
+
postMessage({
|
|
22
|
+
type: WorkerMessageType.SEND_KEEPALIVE,
|
|
23
|
+
});
|
|
62
24
|
}
|
|
63
25
|
}, interval * 1000);
|
|
64
26
|
}
|
|
65
|
-
if (type === WorkerMessageType.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
27
|
+
if (type === WorkerMessageType.KEEPALIVE_RESULT) {
|
|
28
|
+
keepaliveInFlight = false;
|
|
29
|
+
if (event.data.err === undefined) {
|
|
30
|
+
if (keepAliveRetryCount > 0) {
|
|
31
|
+
postMessage({
|
|
32
|
+
type: WorkerMessageType.KEEPALIVE_SUCCESS,
|
|
33
|
+
statusCode: event.data.statusCode,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
keepAliveRetryCount = 0;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
keepAliveRetryCount += 1;
|
|
40
|
+
postMessage({
|
|
41
|
+
type: WorkerMessageType.KEEPALIVE_FAILURE,
|
|
42
|
+
err: event.data.err,
|
|
43
|
+
keepAliveRetryCount,
|
|
44
|
+
});
|
|
69
45
|
}
|
|
70
46
|
}
|
|
47
|
+
if (type === WorkerMessageType.CLEAR_KEEPALIVE) {
|
|
48
|
+
clearKeepaliveTimer();
|
|
49
|
+
keepAliveRetryCount = 0;
|
|
50
|
+
keepaliveInFlight = false;
|
|
51
|
+
}
|
|
71
52
|
};
|
|
72
53
|
self.addEventListener('message', messageHandler);
|
|
73
54
|
export default messageHandler;
|
|
@@ -1,106 +1,71 @@
|
|
|
1
1
|
const webWorkerStr = `/* eslint-env worker */
|
|
2
2
|
|
|
3
|
-
const uuid = () => {
|
|
4
|
-
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
5
|
-
const r = (Math.random() * 16) | 0;
|
|
6
|
-
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
7
|
-
return v.toString(16);
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
// Enum values from the original imports
|
|
12
|
-
const HTTP_METHODS = {
|
|
13
|
-
GET: 'GET',
|
|
14
|
-
POST: 'POST',
|
|
15
|
-
PUT: 'PUT',
|
|
16
|
-
DELETE: 'DELETE',
|
|
17
|
-
PATCH: 'PATCH',
|
|
18
|
-
};
|
|
19
|
-
|
|
20
3
|
const WorkerMessageType = {
|
|
21
4
|
START_KEEPALIVE: 'START_KEEPALIVE',
|
|
22
5
|
CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',
|
|
6
|
+
SEND_KEEPALIVE: 'SEND_KEEPALIVE',
|
|
7
|
+
KEEPALIVE_RESULT: 'KEEPALIVE_RESULT',
|
|
23
8
|
KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',
|
|
24
9
|
KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',
|
|
25
10
|
};
|
|
26
11
|
|
|
27
12
|
let keepaliveTimer;
|
|
13
|
+
let keepAliveRetryCount = 0;
|
|
14
|
+
let keepaliveInFlight = false;
|
|
15
|
+
|
|
16
|
+
const clearKeepaliveTimer = () => {
|
|
17
|
+
if (keepaliveTimer) {
|
|
18
|
+
clearInterval(keepaliveTimer);
|
|
19
|
+
keepaliveTimer = undefined;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
28
22
|
|
|
29
23
|
const messageHandler = (event) => {
|
|
30
24
|
const {type} = event.data;
|
|
31
25
|
|
|
32
|
-
const postKeepAlive = async (accessToken, deviceUrl, url) => {
|
|
33
|
-
const response = await fetch(\`\${url}/status\`, {
|
|
34
|
-
method: HTTP_METHODS.POST,
|
|
35
|
-
headers: {
|
|
36
|
-
'cisco-device-url': deviceUrl,
|
|
37
|
-
'spark-user-agent': 'webex-calling/beta',
|
|
38
|
-
Authorization: \`\${accessToken}\`,
|
|
39
|
-
trackingId: \`web_worker_\${uuid()}\`,
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
if (!response.ok) {
|
|
44
|
-
throw response;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return response;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
26
|
if (type === WorkerMessageType.START_KEEPALIVE) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
type: WorkerMessageType.KEEPALIVE_SUCCESS,
|
|
67
|
-
statusCode,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
keepAliveRetryCount = 0;
|
|
71
|
-
} catch (err) {
|
|
72
|
-
let headers = {};
|
|
73
|
-
if(err.headers?.has('Retry-After')) {
|
|
74
|
-
headers['retry-after'] = err.headers.get('Retry-After');
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if(err.headers?.has('Trackingid')) {
|
|
78
|
-
headers['trackingid'] = err.headers.get('Trackingid');
|
|
79
|
-
}
|
|
27
|
+
const {interval, retryCountThreshold} = event.data;
|
|
28
|
+
|
|
29
|
+
clearKeepaliveTimer();
|
|
30
|
+
keepAliveRetryCount = 0;
|
|
31
|
+
keepaliveInFlight = false;
|
|
32
|
+
|
|
33
|
+
keepaliveTimer = setInterval(() => {
|
|
34
|
+
if (keepAliveRetryCount < retryCountThreshold && !keepaliveInFlight) {
|
|
35
|
+
keepaliveInFlight = true;
|
|
36
|
+
self.postMessage({
|
|
37
|
+
type: WorkerMessageType.SEND_KEEPALIVE,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}, interval * 1000);
|
|
41
|
+
}
|
|
80
42
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
statusCode: err.status,
|
|
84
|
-
statusText: err.statusText,
|
|
85
|
-
type: err.type,
|
|
86
|
-
};
|
|
43
|
+
if (type === WorkerMessageType.KEEPALIVE_RESULT) {
|
|
44
|
+
keepaliveInFlight = false;
|
|
87
45
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
46
|
+
if (event.data.err === undefined) {
|
|
47
|
+
if (keepAliveRetryCount > 0) {
|
|
48
|
+
self.postMessage({
|
|
49
|
+
type: WorkerMessageType.KEEPALIVE_SUCCESS,
|
|
50
|
+
statusCode: event.data.statusCode,
|
|
51
|
+
});
|
|
95
52
|
}
|
|
96
|
-
|
|
53
|
+
|
|
54
|
+
keepAliveRetryCount = 0;
|
|
55
|
+
} else {
|
|
56
|
+
keepAliveRetryCount += 1;
|
|
57
|
+
self.postMessage({
|
|
58
|
+
type: WorkerMessageType.KEEPALIVE_FAILURE,
|
|
59
|
+
err: event.data.err,
|
|
60
|
+
keepAliveRetryCount,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
97
63
|
}
|
|
98
64
|
|
|
99
65
|
if (type === WorkerMessageType.CLEAR_KEEPALIVE) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
66
|
+
clearKeepaliveTimer();
|
|
67
|
+
keepAliveRetryCount = 0;
|
|
68
|
+
keepaliveInFlight = false;
|
|
104
69
|
}
|
|
105
70
|
};
|
|
106
71
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export var MOBIUS_SOCKET_MESSAGE_TYPE;
|
|
2
|
+
(function (MOBIUS_SOCKET_MESSAGE_TYPE) {
|
|
3
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["UNKNOWN"] = "UNKNOWN";
|
|
4
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["REGISTER"] = "register";
|
|
5
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["REGISTER_RESPONSE"] = "register.response";
|
|
6
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["UNREGISTER"] = "unregister";
|
|
7
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["UNREGISTER_RESPONSE"] = "unregister.response";
|
|
8
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_STATUS"] = "device_status";
|
|
9
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_STATUS_RESPONSE"] = "device_status.response";
|
|
10
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_GET"] = "device_get";
|
|
11
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_GET_RESPONSE"] = "device_get.response";
|
|
12
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_LIST"] = "device_list";
|
|
13
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_LIST_RESPONSE"] = "device_list.response";
|
|
14
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_SETUP"] = "call_setup";
|
|
15
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_SETUP_RESPONSE"] = "call_setup.response";
|
|
16
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_STATE"] = "call_state";
|
|
17
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_STATE_RESPONSE"] = "call_state.response";
|
|
18
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_STATUS"] = "call_status";
|
|
19
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_STATUS_RESPONSE"] = "call_status.response";
|
|
20
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_MEDIA"] = "call_media";
|
|
21
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_MEDIA_RESPONSE"] = "call_media.response";
|
|
22
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_HOLD"] = "call_hold";
|
|
23
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_HOLD_RESPONSE"] = "call_hold.response";
|
|
24
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_RESUME"] = "call_resume";
|
|
25
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_RESUME_RESPONSE"] = "call_resume.response";
|
|
26
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_TRANSFER"] = "call_transfer";
|
|
27
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_TRANSFER_RESPONSE"] = "call_transfer.response";
|
|
28
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_DELETE"] = "call_delete";
|
|
29
|
+
MOBIUS_SOCKET_MESSAGE_TYPE["CALL_DELETE_RESPONSE"] = "call_delete.response";
|
|
30
|
+
})(MOBIUS_SOCKET_MESSAGE_TYPE || (MOBIUS_SOCKET_MESSAGE_TYPE = {}));
|
|
31
|
+
export var MOBIUS_SOCKET_DISCONNECT_REASON;
|
|
32
|
+
(function (MOBIUS_SOCKET_DISCONNECT_REASON) {
|
|
33
|
+
MOBIUS_SOCKET_DISCONNECT_REASON["PERMANENT"] = "permanent";
|
|
34
|
+
MOBIUS_SOCKET_DISCONNECT_REASON["TRANSIENT"] = "transient";
|
|
35
|
+
MOBIUS_SOCKET_DISCONNECT_REASON["REPLACED"] = "replaced";
|
|
36
|
+
})(MOBIUS_SOCKET_DISCONNECT_REASON || (MOBIUS_SOCKET_DISCONNECT_REASON = {}));
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { HTTP_METHODS } from '../../common/types';
|
|
2
|
+
import log from '../../Logger';
|
|
3
|
+
import { METHODS, MOBIUS_SOCKET_MAPPER_FILE } from '../constants';
|
|
4
|
+
import { MOBIUS_SOCKET_MESSAGE_TYPE } from './constants';
|
|
5
|
+
export function deriveMobiusSocketMessageType(uri, httpMethodType) {
|
|
6
|
+
const logContext = {
|
|
7
|
+
file: MOBIUS_SOCKET_MAPPER_FILE,
|
|
8
|
+
method: METHODS.DERIVE_MOBIUS_SOCKET_MESSAGE_TYPE,
|
|
9
|
+
};
|
|
10
|
+
if (!uri) {
|
|
11
|
+
log.warn('Cannot derive Mobius socket message type: uri is empty', logContext);
|
|
12
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
|
|
13
|
+
}
|
|
14
|
+
if (uri.includes('/services')) {
|
|
15
|
+
if (uri.includes('/callhold/hold')) {
|
|
16
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD;
|
|
17
|
+
}
|
|
18
|
+
if (uri.includes('/callhold/resume')) {
|
|
19
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME;
|
|
20
|
+
}
|
|
21
|
+
if (uri.includes('/calltransfer/commit')) {
|
|
22
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER;
|
|
23
|
+
}
|
|
24
|
+
log.warn(`Unrecognized supplementary service uri - uri: ${uri}, httpMethod: ${httpMethodType}`, logContext);
|
|
25
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
|
|
26
|
+
}
|
|
27
|
+
if (uri.includes('/calls/') && uri.includes('/media')) {
|
|
28
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA;
|
|
29
|
+
}
|
|
30
|
+
if (uri.includes('/calls/') && uri.includes('/status')) {
|
|
31
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS;
|
|
32
|
+
}
|
|
33
|
+
if (uri.match(/\/calls\/[^/]+$/)) {
|
|
34
|
+
if (httpMethodType === HTTP_METHODS.PATCH) {
|
|
35
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE;
|
|
36
|
+
}
|
|
37
|
+
if (httpMethodType === HTTP_METHODS.DELETE) {
|
|
38
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE;
|
|
39
|
+
}
|
|
40
|
+
log.warn(`Unrecognized httpMethod for calls/{callId} - uri: ${uri}, httpMethod: ${httpMethodType}`, logContext);
|
|
41
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
|
|
42
|
+
}
|
|
43
|
+
if (uri.endsWith('/call')) {
|
|
44
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP;
|
|
45
|
+
}
|
|
46
|
+
if (!uri.includes('/calls/') && uri.endsWith('/status')) {
|
|
47
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS;
|
|
48
|
+
}
|
|
49
|
+
if (uri.endsWith('/device')) {
|
|
50
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER;
|
|
51
|
+
}
|
|
52
|
+
if (uri.match(/\/devices\/[^/?]+$/) && !uri.includes('/calls')) {
|
|
53
|
+
if (httpMethodType === HTTP_METHODS.DELETE) {
|
|
54
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.UNREGISTER;
|
|
55
|
+
}
|
|
56
|
+
if (httpMethodType === HTTP_METHODS.GET) {
|
|
57
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_GET;
|
|
58
|
+
}
|
|
59
|
+
log.warn(`Unrecognized httpMethod for devices/{deviceId} - uri: ${uri}, httpMethod: ${httpMethodType}`, logContext);
|
|
60
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
|
|
61
|
+
}
|
|
62
|
+
if (uri.includes('/devices') && !uri.match(/\/devices\/[^/?]+/)) {
|
|
63
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST;
|
|
64
|
+
}
|
|
65
|
+
log.warn(`Unrecognized uri pattern for Mobius socket - uri: ${uri}, httpMethod: ${httpMethodType}`, logContext);
|
|
66
|
+
return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
|
|
67
|
+
}
|
|
68
|
+
export const isSupplementaryServiceMessageType = (type) => [
|
|
69
|
+
MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD,
|
|
70
|
+
MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME,
|
|
71
|
+
MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER,
|
|
72
|
+
].includes(type);
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { v4 as uuid } from 'uuid';
|
|
2
|
+
import { getMobiusSocketInstance } from '../../mobius-socket';
|
|
3
|
+
import log from '../../Logger';
|
|
4
|
+
import { deriveMobiusSocketMessageType, isSupplementaryServiceMessageType, } from './mobiusSocketMapper';
|
|
5
|
+
import { MOBIUS_SOCKET_DISCONNECT_REASON, MOBIUS_SOCKET_MESSAGE_TYPE } from './constants';
|
|
6
|
+
import { isMobiusWssEnabled } from './wsFeatureFlag';
|
|
7
|
+
import { CALLING_USER_AGENT, METHODS, REQUEST_FILE } from '../constants';
|
|
8
|
+
import { getMetricManager } from '../../Metrics';
|
|
9
|
+
import { METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION } from '../../Metrics/types';
|
|
10
|
+
function normalizeWsResponse(wsResponse) {
|
|
11
|
+
return {
|
|
12
|
+
statusCode: wsResponse.statusCode,
|
|
13
|
+
body: wsResponse.data ?? undefined,
|
|
14
|
+
headers: {
|
|
15
|
+
trackingid: wsResponse.trackingId,
|
|
16
|
+
...(wsResponse.metadata ?? {}),
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function normalizeWsError(err) {
|
|
21
|
+
const wsErr = err;
|
|
22
|
+
return {
|
|
23
|
+
statusCode: wsErr.statusCode,
|
|
24
|
+
body: wsErr.response?.data ?? undefined,
|
|
25
|
+
headers: {
|
|
26
|
+
trackingid: wsErr.trackingId ?? wsErr.response?.trackingId ?? '',
|
|
27
|
+
...(wsErr.response?.metadata ?? {}),
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export class APIRequest {
|
|
32
|
+
static instance;
|
|
33
|
+
isMobiusSocketEnabled;
|
|
34
|
+
webex;
|
|
35
|
+
mobiusSocket;
|
|
36
|
+
metricManager;
|
|
37
|
+
static getInstance(config) {
|
|
38
|
+
if (!APIRequest.instance) {
|
|
39
|
+
APIRequest.instance = new APIRequest(config);
|
|
40
|
+
}
|
|
41
|
+
return APIRequest.instance;
|
|
42
|
+
}
|
|
43
|
+
static resetInstance() {
|
|
44
|
+
APIRequest.instance = undefined;
|
|
45
|
+
}
|
|
46
|
+
constructor(config) {
|
|
47
|
+
const logContext = {
|
|
48
|
+
file: REQUEST_FILE,
|
|
49
|
+
method: METHODS.CONSTRUCTOR,
|
|
50
|
+
};
|
|
51
|
+
if (!config.webex) {
|
|
52
|
+
log.error('APIRequest instantiation failed: WebexSDK instance is required', logContext);
|
|
53
|
+
throw new Error('WebexSDK instance is required');
|
|
54
|
+
}
|
|
55
|
+
this.webex = config.webex;
|
|
56
|
+
this.isMobiusSocketEnabled = isMobiusWssEnabled(config.webex) || false;
|
|
57
|
+
this.mobiusSocket = getMobiusSocketInstance(this.webex);
|
|
58
|
+
this.metricManager = getMetricManager(this.webex);
|
|
59
|
+
log.info(`APIRequest initialized with transport: ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'}`, logContext);
|
|
60
|
+
}
|
|
61
|
+
isSocketEnabled() {
|
|
62
|
+
return this.isMobiusSocketEnabled;
|
|
63
|
+
}
|
|
64
|
+
setSocketEnabled(enabled) {
|
|
65
|
+
this.isMobiusSocketEnabled = enabled;
|
|
66
|
+
log.info(`APIRequest transport set to: ${enabled ? 'WSS' : 'HTTP'}`, {
|
|
67
|
+
file: REQUEST_FILE,
|
|
68
|
+
method: METHODS.SET_SOCKET_ENABLED,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
async connectToMobiusSocket(wssUrl) {
|
|
72
|
+
const logContext = {
|
|
73
|
+
file: REQUEST_FILE,
|
|
74
|
+
method: METHODS.CONNECT_TO_MOBIUS_SOCKET,
|
|
75
|
+
};
|
|
76
|
+
if (this.mobiusSocket.isConnected()) {
|
|
77
|
+
log.info('Mobius WebSocket already connected', logContext);
|
|
78
|
+
return this.mobiusSocket.getConnectedWebSocketUrl();
|
|
79
|
+
}
|
|
80
|
+
log.info('Mobius WebSocket not connected, initiating connection', logContext);
|
|
81
|
+
try {
|
|
82
|
+
await this.mobiusSocket.connect(wssUrl);
|
|
83
|
+
log.log('Mobius WebSocket connected successfully', logContext);
|
|
84
|
+
this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET, MOBIUS_SOCKET_ACTION.CONNECT, METRIC_TYPE.BEHAVIORAL, wssUrl);
|
|
85
|
+
return wssUrl;
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
log.warn(`Mobius WebSocket connection failed: ${String(err)}`, logContext);
|
|
89
|
+
this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET_ERROR, MOBIUS_SOCKET_ACTION.CONNECT, METRIC_TYPE.BEHAVIORAL, wssUrl, undefined, String(err));
|
|
90
|
+
throw normalizeWsError(err);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
getConnectedWebSocketUrl() {
|
|
94
|
+
return this.mobiusSocket.getConnectedWebSocketUrl();
|
|
95
|
+
}
|
|
96
|
+
async disconnectFromMobiusSocket(options) {
|
|
97
|
+
const logContext = {
|
|
98
|
+
file: REQUEST_FILE,
|
|
99
|
+
method: METHODS.DISCONNECT_FROM_MOBIUS_SOCKET,
|
|
100
|
+
};
|
|
101
|
+
log.info('Disconnecting from Mobius WebSocket', logContext);
|
|
102
|
+
const wssUrl = this.mobiusSocket.getConnectedWebSocketUrl();
|
|
103
|
+
try {
|
|
104
|
+
await this.mobiusSocket.disconnect(options);
|
|
105
|
+
log.log('Mobius WebSocket disconnected successfully', logContext);
|
|
106
|
+
this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET, MOBIUS_SOCKET_ACTION.DISCONNECT, METRIC_TYPE.BEHAVIORAL, wssUrl);
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
log.warn(`Mobius WebSocket disconnection failed: ${String(err)}`, logContext);
|
|
110
|
+
this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET_ERROR, MOBIUS_SOCKET_ACTION.DISCONNECT, METRIC_TYPE.BEHAVIORAL, wssUrl, undefined, String(err));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async makeRequest(request) {
|
|
114
|
+
const logContext = {
|
|
115
|
+
file: REQUEST_FILE,
|
|
116
|
+
method: METHODS.MAKE_REQUEST,
|
|
117
|
+
};
|
|
118
|
+
log.info(`Dispatching request via ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'} `, logContext);
|
|
119
|
+
if (this.isMobiusSocketEnabled) {
|
|
120
|
+
const trackingId = `webex-js-sdk_${uuid()}`;
|
|
121
|
+
const socketType = deriveMobiusSocketMessageType(request.uri, request.method);
|
|
122
|
+
if (socketType === MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN) {
|
|
123
|
+
log.error(`Unknown Mobius Socket message type for uri: ${request.uri}, httpMethod: ${request.method}`, logContext);
|
|
124
|
+
throw new Error(`Unknown Mobius Socket message type: ${socketType}`);
|
|
125
|
+
}
|
|
126
|
+
const isSupplementaryService = isSupplementaryServiceMessageType(socketType);
|
|
127
|
+
try {
|
|
128
|
+
const wsResponse = await this.mobiusSocket.sendWssRequest({
|
|
129
|
+
type: socketType,
|
|
130
|
+
trackingId,
|
|
131
|
+
metadata: {
|
|
132
|
+
...request.headers,
|
|
133
|
+
userAgent: CALLING_USER_AGENT,
|
|
134
|
+
authorization: `${(isSupplementaryService && (await this.webex.credentials.getUserToken())) || ''}`,
|
|
135
|
+
},
|
|
136
|
+
data: request.body,
|
|
137
|
+
});
|
|
138
|
+
log.log(`WSS request succeeded - socketType: ${socketType}, trackingId: ${trackingId}, statusCode: ${wsResponse.statusCode}`, logContext);
|
|
139
|
+
return normalizeWsResponse(wsResponse);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
log.error(`WSS request failed - socketType: ${socketType}, trackingId: ${trackingId}, error: ${String(err)}`, logContext);
|
|
143
|
+
throw normalizeWsError(err);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return this.webex.request(request);
|
|
147
|
+
}
|
|
148
|
+
registerMobiusSocketListener(cb) {
|
|
149
|
+
const logContext = {
|
|
150
|
+
file: REQUEST_FILE,
|
|
151
|
+
method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,
|
|
152
|
+
};
|
|
153
|
+
log.info('Attaching Mobius async event listener', logContext);
|
|
154
|
+
this.mobiusSocket.on('event:async_event', (data) => {
|
|
155
|
+
log.trace(`Mobius async event received - eventType: ${data?.data?.eventType ?? 'unknown'}`, logContext);
|
|
156
|
+
cb(data);
|
|
157
|
+
});
|
|
158
|
+
log.log('Mobius async event listener attached', logContext);
|
|
159
|
+
this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET, MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED, METRIC_TYPE.BEHAVIORAL);
|
|
160
|
+
}
|
|
161
|
+
unregisterMobiusSocketListener() {
|
|
162
|
+
const logContext = {
|
|
163
|
+
file: REQUEST_FILE,
|
|
164
|
+
method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,
|
|
165
|
+
};
|
|
166
|
+
log.info('Detaching Mobius async event listener', logContext);
|
|
167
|
+
this.mobiusSocket.off('event:async_event');
|
|
168
|
+
log.log('Mobius async event listener detached', logContext);
|
|
169
|
+
this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET, MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED, METRIC_TYPE.BEHAVIORAL);
|
|
170
|
+
}
|
|
171
|
+
registerMobiusSocketConnectionListener(listener) {
|
|
172
|
+
const logContext = {
|
|
173
|
+
file: REQUEST_FILE,
|
|
174
|
+
method: METHODS.REGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER,
|
|
175
|
+
};
|
|
176
|
+
log.info('Attaching Mobius socket connection listener', logContext);
|
|
177
|
+
this.mobiusSocket.on('online', () => {
|
|
178
|
+
log.log('Mobius socket connected', logContext);
|
|
179
|
+
listener.onConnected();
|
|
180
|
+
});
|
|
181
|
+
this.mobiusSocket.on('offline.permanent', () => {
|
|
182
|
+
log.log('Mobius socket disconnected (permanent)', logContext);
|
|
183
|
+
listener.onDisconnected(MOBIUS_SOCKET_DISCONNECT_REASON.PERMANENT);
|
|
184
|
+
});
|
|
185
|
+
this.mobiusSocket.on('offline.transient', () => {
|
|
186
|
+
log.log('Mobius socket disconnected (transient)', logContext);
|
|
187
|
+
listener.onDisconnected(MOBIUS_SOCKET_DISCONNECT_REASON.TRANSIENT);
|
|
188
|
+
});
|
|
189
|
+
this.mobiusSocket.on('offline.replaced', () => {
|
|
190
|
+
log.log('Mobius socket disconnected (replaced)', logContext);
|
|
191
|
+
listener.onDisconnected(MOBIUS_SOCKET_DISCONNECT_REASON.REPLACED);
|
|
192
|
+
});
|
|
193
|
+
log.log('Mobius socket connection listener attached', logContext);
|
|
194
|
+
}
|
|
195
|
+
isSocketConnected() {
|
|
196
|
+
return this.mobiusSocket.isConnected();
|
|
197
|
+
}
|
|
198
|
+
unregisterMobiusSocketConnectionListener() {
|
|
199
|
+
const logContext = {
|
|
200
|
+
file: REQUEST_FILE,
|
|
201
|
+
method: METHODS.UNREGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER,
|
|
202
|
+
};
|
|
203
|
+
log.info('Detaching Mobius socket connection listener', logContext);
|
|
204
|
+
this.mobiusSocket.off('online');
|
|
205
|
+
this.mobiusSocket.off('offline.permanent');
|
|
206
|
+
this.mobiusSocket.off('offline.transient');
|
|
207
|
+
this.mobiusSocket.off('offline.replaced');
|
|
208
|
+
log.log('Mobius socket connection listener detached', logContext);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
export const createAPIRequest = (config) => APIRequest.getInstance(config);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import log from '../../Logger';
|
|
2
|
+
import { METHODS, WS_FEATURE_FLAG_FILE } from '../constants';
|
|
3
|
+
export const WEBRTC_CALLING_OVER_WS_FEATURE_KEY = 'webrtc-calling-over-ws-CALL-219562';
|
|
4
|
+
const ALLOWED_ORIGINS = ['localhost', '127.0.0.1', 'web-sdk.webex.com'];
|
|
5
|
+
function samplesPageToggleValue() {
|
|
6
|
+
if (typeof window === 'undefined' || !window.localStorage) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const hostname = window.location.hostname;
|
|
10
|
+
const isAllowedOrigin = ALLOWED_ORIGINS.some((origin) => hostname === origin || hostname.endsWith(`.${origin}`));
|
|
11
|
+
if (!isAllowedOrigin) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const localStorageValue = localStorage.getItem('mobius-wss-enabled');
|
|
15
|
+
if (localStorageValue === 'true') {
|
|
16
|
+
log.trace(`Mobius WSS force-enabled via samples page localStorage override on ${hostname}`, {
|
|
17
|
+
file: WS_FEATURE_FLAG_FILE,
|
|
18
|
+
method: METHODS.IS_MOBIUS_WSS_ENABLED,
|
|
19
|
+
});
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
if (localStorageValue === 'false') {
|
|
23
|
+
log.trace(`Mobius WSS force-disabled via samples page localStorage override on ${hostname}`, {
|
|
24
|
+
file: WS_FEATURE_FLAG_FILE,
|
|
25
|
+
method: METHODS.IS_MOBIUS_WSS_ENABLED,
|
|
26
|
+
});
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
export function isMobiusWssEnabled(webex) {
|
|
32
|
+
const enabled = webex.internal?.device?.features?.developer?.get(WEBRTC_CALLING_OVER_WS_FEATURE_KEY)?.value ===
|
|
33
|
+
true;
|
|
34
|
+
const localStorageOverride = samplesPageToggleValue();
|
|
35
|
+
const finalValue = localStorageOverride !== null ? localStorageOverride : enabled;
|
|
36
|
+
log.trace(`Mobius WSS feature flag '${WEBRTC_CALLING_OVER_WS_FEATURE_KEY}' resolved to: ${finalValue} (backend: ${enabled}, localStorage: ${localStorageOverride})`, {
|
|
37
|
+
file: WS_FEATURE_FLAG_FILE,
|
|
38
|
+
method: METHODS.IS_MOBIUS_WSS_ENABLED,
|
|
39
|
+
});
|
|
40
|
+
return finalValue;
|
|
41
|
+
}
|
|
@@ -283,7 +283,7 @@ export class ContactsClient {
|
|
|
283
283
|
return this.encryptionKeyUrl;
|
|
284
284
|
}
|
|
285
285
|
if (this.groups === undefined) {
|
|
286
|
-
this.getContacts();
|
|
286
|
+
await this.getContacts();
|
|
287
287
|
}
|
|
288
288
|
if (this.groups && this.groups.length) {
|
|
289
289
|
return this.groups[0].encryptionKeyUrl;
|
|
@@ -12,6 +12,7 @@ export var ERROR_TYPE;
|
|
|
12
12
|
ERROR_TYPE["NOT_FOUND"] = "not_found";
|
|
13
13
|
ERROR_TYPE["REGISTRATION_ERROR"] = "registration_error";
|
|
14
14
|
ERROR_TYPE["SERVICE_UNAVAILABLE"] = "service_unavailable";
|
|
15
|
+
ERROR_TYPE["SESSION_SUPERSEDED"] = "session_superseded";
|
|
15
16
|
ERROR_TYPE["TIMEOUT"] = "timeout";
|
|
16
17
|
ERROR_TYPE["TOKEN_ERROR"] = "token_error";
|
|
17
18
|
ERROR_TYPE["TOO_MANY_REQUESTS"] = "too_many_requests";
|
|
@@ -22,6 +23,7 @@ export var ERROR_CODE;
|
|
|
22
23
|
ERROR_CODE[ERROR_CODE["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
|
|
23
24
|
ERROR_CODE[ERROR_CODE["FORBIDDEN"] = 403] = "FORBIDDEN";
|
|
24
25
|
ERROR_CODE[ERROR_CODE["DEVICE_NOT_FOUND"] = 404] = "DEVICE_NOT_FOUND";
|
|
26
|
+
ERROR_CODE[ERROR_CODE["CONFLICT"] = 409] = "CONFLICT";
|
|
25
27
|
ERROR_CODE[ERROR_CODE["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
|
|
26
28
|
ERROR_CODE[ERROR_CODE["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
|
|
27
29
|
ERROR_CODE[ERROR_CODE["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";
|