@webex/calling 3.12.0-next.4 → 3.12.0-next.41
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/CallingClient/CallingClient.js +463 -205
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +170 -77
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +589 -445
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +695 -445
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +53 -30
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +35 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +2 -0
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +25 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +4 -1
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +16 -1
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +712 -406
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +202 -21
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- 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/utils/constants.js +46 -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 +211 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
- package/dist/CallingClient/utils/request.js +354 -0
- package/dist/CallingClient/utils/request.js.map +1 -0
- package/dist/CallingClient/utils/request.test.js +881 -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/Events/types.js +1 -11
- 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/common/Utils.js +138 -44
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/testUtil.js +8 -4
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +2 -0
- package/dist/common/types.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 +841 -0
- package/dist/mobius-socket/mobius-socket.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.test.js +1845 -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/CallingClient/CallingClient.js +141 -10
- package/dist/module/CallingClient/calling/call.js +177 -61
- package/dist/module/CallingClient/calling/callManager.js +27 -7
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +21 -0
- package/dist/module/CallingClient/line/index.js +2 -2
- package/dist/module/CallingClient/registration/register.js +234 -62
- 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 +30 -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 +165 -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/Events/types.js +0 -10
- package/dist/module/Metrics/index.js +48 -1
- package/dist/module/Metrics/types.js +18 -0
- package/dist/module/common/Utils.js +52 -12
- package/dist/module/common/testUtil.js +5 -1
- package/dist/module/common/types.js +2 -0
- 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 +589 -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/CallingClient/CallingClient.d.ts +7 -0
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +12 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +34 -9
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +21 -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 +7 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +4 -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/utils/constants.d.ts +30 -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 +24 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/types.d.ts +29 -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/Events/types.d.ts +4 -11
- 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 +24 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +9 -2
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +4 -1
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +3 -0
- package/dist/types/common/types.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 +20 -5
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- package/src/mobius-socket/socket/socket.ts +14 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from 'events';
|
|
5
|
+
import { checkRequired } from '@webex/common';
|
|
6
|
+
import { safeSetTimeout } from '@webex/common-timers';
|
|
7
|
+
import { defaults, has, isObject } from 'lodash';
|
|
8
|
+
import { BadRequest, ConnectionError, createTimeoutError, createWssResponseError, Forbidden, NotAuthorized, UnknownResponse, } from '../errors';
|
|
9
|
+
import { MESSAGE_TYPES, SOCKET_READY_STATE } from './constants';
|
|
10
|
+
const sockets = new WeakMap();
|
|
11
|
+
function createTrackingId() {
|
|
12
|
+
return `webex-js-sdk_${crypto.randomUUID()}`;
|
|
13
|
+
}
|
|
14
|
+
export default class Socket extends EventEmitter {
|
|
15
|
+
domain;
|
|
16
|
+
pendingResponses;
|
|
17
|
+
forceCloseDelay;
|
|
18
|
+
logger;
|
|
19
|
+
refreshToken;
|
|
20
|
+
token;
|
|
21
|
+
trackingId;
|
|
22
|
+
wssResponseTimeout;
|
|
23
|
+
constructor() {
|
|
24
|
+
super();
|
|
25
|
+
this.domain = 'unknown-domain';
|
|
26
|
+
this.pendingResponses = new Map();
|
|
27
|
+
this.onmessage = this.onmessage.bind(this);
|
|
28
|
+
this.onclose = this.onclose.bind(this);
|
|
29
|
+
this.setMaxListeners(10);
|
|
30
|
+
}
|
|
31
|
+
get binaryType() {
|
|
32
|
+
return sockets.get(this)?.binaryType || '';
|
|
33
|
+
}
|
|
34
|
+
get bufferedAmount() {
|
|
35
|
+
return sockets.get(this)?.bufferedAmount || 0;
|
|
36
|
+
}
|
|
37
|
+
get extensions() {
|
|
38
|
+
return sockets.get(this)?.extensions || '';
|
|
39
|
+
}
|
|
40
|
+
get protocol() {
|
|
41
|
+
return sockets.get(this)?.protocol || '';
|
|
42
|
+
}
|
|
43
|
+
get readyState() {
|
|
44
|
+
return sockets.get(this)?.readyState || 0;
|
|
45
|
+
}
|
|
46
|
+
get url() {
|
|
47
|
+
return sockets.get(this)?.url || '';
|
|
48
|
+
}
|
|
49
|
+
static getWebSocketConstructor() {
|
|
50
|
+
throw new Error('Socket.getWebSocketConstructor() must be implemented in an environmentally appropriate way');
|
|
51
|
+
}
|
|
52
|
+
close(options) {
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
const socket = sockets.get(this);
|
|
55
|
+
if (!socket) {
|
|
56
|
+
resolve();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
this.logger.info(`socket,${this.domain}: closing`);
|
|
60
|
+
if (socket.readyState === SOCKET_READY_STATE.CLOSING ||
|
|
61
|
+
socket.readyState === SOCKET_READY_STATE.CLOSED) {
|
|
62
|
+
this.logger.info(`socket,${this.domain}: already closed`);
|
|
63
|
+
resolve();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const originalCode = options?.code;
|
|
67
|
+
const originalReason = options?.reason;
|
|
68
|
+
const resolvedOptions = defaults(options || {}, {
|
|
69
|
+
code: 1000,
|
|
70
|
+
reason: 'Done',
|
|
71
|
+
});
|
|
72
|
+
if (resolvedOptions.code &&
|
|
73
|
+
resolvedOptions.code !== 1000 &&
|
|
74
|
+
(resolvedOptions.code < 3000 || resolvedOptions.code > 4999)) {
|
|
75
|
+
reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const closeTimer = safeSetTimeout(() => {
|
|
79
|
+
try {
|
|
80
|
+
this.logger.info(`socket,${this.domain}: no close event received, forcing closure`);
|
|
81
|
+
resolve(this.onclose(originalCode
|
|
82
|
+
? { code: originalCode, reason: originalReason || 'Done (unknown)' }
|
|
83
|
+
: {
|
|
84
|
+
code: 1000,
|
|
85
|
+
reason: 'Done (forced)',
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
this.logger.warn(`socket,${this.domain}: force-close failed`, error);
|
|
90
|
+
}
|
|
91
|
+
}, this.forceCloseDelay);
|
|
92
|
+
socket.onclose = (event) => {
|
|
93
|
+
this.logger.info(`socket,${this.domain}: close event fired`, event.code, event.reason);
|
|
94
|
+
clearTimeout(closeTimer);
|
|
95
|
+
this.onclose(event);
|
|
96
|
+
resolve(event);
|
|
97
|
+
};
|
|
98
|
+
if (socket.readyState === SOCKET_READY_STATE.CONNECTING) {
|
|
99
|
+
this.logger.info(`socket,${this.domain}: socket still connecting, triggering close manually`);
|
|
100
|
+
clearTimeout(closeTimer);
|
|
101
|
+
const closeEvent = {
|
|
102
|
+
code: resolvedOptions.code,
|
|
103
|
+
reason: resolvedOptions.reason,
|
|
104
|
+
};
|
|
105
|
+
this.onclose(closeEvent);
|
|
106
|
+
resolve(closeEvent);
|
|
107
|
+
try {
|
|
108
|
+
socket.close(resolvedOptions.code, resolvedOptions.reason);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
this.logger.info(`socket,${this.domain}: error while closing CONNECTING socket, likely due to browser incompatibility with custom close codes`, error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
socket.close(resolvedOptions.code, resolvedOptions.reason);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
open(url, options) {
|
|
120
|
+
try {
|
|
121
|
+
this.domain = new URL(url).hostname;
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
this.domain = url;
|
|
125
|
+
}
|
|
126
|
+
return new Promise((resolve, reject) => {
|
|
127
|
+
if (!url) {
|
|
128
|
+
reject(new Error('`url` is required'));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (sockets.get(this)) {
|
|
132
|
+
reject(new Error('Socket#open() can only be called once per instance'));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const resolvedOptions = (options || {});
|
|
136
|
+
checkRequired(['forceCloseDelay', 'token', 'trackingId', 'logger'], resolvedOptions);
|
|
137
|
+
Object.keys(resolvedOptions).forEach((key) => {
|
|
138
|
+
Reflect.defineProperty(this, key, {
|
|
139
|
+
enumerable: false,
|
|
140
|
+
value: resolvedOptions[key],
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
const WebSocket = Socket.getWebSocketConstructor();
|
|
144
|
+
this.logger.info(`socket,${this.domain}: creating WebSocket`);
|
|
145
|
+
const socket = new WebSocket(url, [], resolvedOptions);
|
|
146
|
+
socket.binaryType = 'arraybuffer';
|
|
147
|
+
socket.onmessage = this.onmessage;
|
|
148
|
+
socket.onclose = (event) => {
|
|
149
|
+
event = this.fixCloseCode(event);
|
|
150
|
+
this.logger.info(`socket,${this.domain}: closed before open`, event.code, event.reason);
|
|
151
|
+
switch (event.code) {
|
|
152
|
+
case 1005:
|
|
153
|
+
return reject(new UnknownResponse(event));
|
|
154
|
+
case 4400:
|
|
155
|
+
return reject(new BadRequest(event));
|
|
156
|
+
case 4401:
|
|
157
|
+
return reject(new NotAuthorized(event));
|
|
158
|
+
case 4403:
|
|
159
|
+
return reject(new Forbidden(event));
|
|
160
|
+
default:
|
|
161
|
+
return reject(new ConnectionError(event));
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
socket.onopen = () => {
|
|
165
|
+
this.logger.info(`socket,${this.domain}: connected`);
|
|
166
|
+
this.authorize(this.token)
|
|
167
|
+
.then(() => {
|
|
168
|
+
this.logger.info(`socket,${this.domain}: authorized`);
|
|
169
|
+
socket.onclose = this.onclose;
|
|
170
|
+
resolve();
|
|
171
|
+
})
|
|
172
|
+
.catch(reject);
|
|
173
|
+
};
|
|
174
|
+
socket.onerror = (event) => {
|
|
175
|
+
this.logger.warn(`socket,${this.domain}: error event fired`, event);
|
|
176
|
+
};
|
|
177
|
+
sockets.set(this, socket);
|
|
178
|
+
this.logger.info(`socket,${this.domain}: waiting for server`);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
onclose(event) {
|
|
182
|
+
this.logger.info(`socket,${this.domain}: closed`, event.code, event.reason);
|
|
183
|
+
event = this.fixCloseCode(event);
|
|
184
|
+
this.rejectPendingResponses(new ConnectionError(event));
|
|
185
|
+
this.emit('close', event);
|
|
186
|
+
this.removeAllListeners();
|
|
187
|
+
}
|
|
188
|
+
onmessage(event) {
|
|
189
|
+
try {
|
|
190
|
+
const data = JSON.parse(event.data);
|
|
191
|
+
const processedEvent = { data };
|
|
192
|
+
if (data.type === 'async_event') {
|
|
193
|
+
this.acknowledge(processedEvent).catch((error) => {
|
|
194
|
+
this.logger.warn(`socket,${this.domain}: failed to acknowledge async event`, error);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
this.handlePendingResponse(data);
|
|
198
|
+
this.emit('message', processedEvent);
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
this.logger.warn(`socket,${this.domain}: error while receiving WebSocket message`, error);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
send(data) {
|
|
205
|
+
return new Promise((resolve, reject) => {
|
|
206
|
+
if (this.readyState !== SOCKET_READY_STATE.OPEN) {
|
|
207
|
+
reject(new Error('INVALID_STATE_ERROR'));
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
if (isObject(data)) {
|
|
211
|
+
data = JSON.stringify(data);
|
|
212
|
+
}
|
|
213
|
+
const socket = sockets.get(this);
|
|
214
|
+
if (!socket) {
|
|
215
|
+
reject(new Error('INVALID_STATE_ERROR'));
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
socket.send(data);
|
|
219
|
+
resolve();
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
sendRequest(data, options = {}) {
|
|
223
|
+
if (!isObject(data)) {
|
|
224
|
+
return Promise.reject(new Error('`data` is required'));
|
|
225
|
+
}
|
|
226
|
+
const request = { ...data };
|
|
227
|
+
const trackingId = request.trackingId || createTrackingId();
|
|
228
|
+
const timeout = options.timeout || this.wssResponseTimeout || 10000;
|
|
229
|
+
if (this.pendingResponses.has(trackingId)) {
|
|
230
|
+
return Promise.reject(new Error(`socket request already sent for trackingId ${trackingId}`));
|
|
231
|
+
}
|
|
232
|
+
request.trackingId = trackingId;
|
|
233
|
+
return new Promise((resolve, reject) => {
|
|
234
|
+
const timeoutId = safeSetTimeout(() => {
|
|
235
|
+
this.clearPendingResponse(trackingId);
|
|
236
|
+
reject(createTimeoutError(request));
|
|
237
|
+
}, timeout);
|
|
238
|
+
const pendingResponse = {
|
|
239
|
+
request,
|
|
240
|
+
resolve: (response) => {
|
|
241
|
+
this.clearPendingResponse(trackingId);
|
|
242
|
+
resolve(response);
|
|
243
|
+
},
|
|
244
|
+
reject: (error) => {
|
|
245
|
+
this.clearPendingResponse(trackingId);
|
|
246
|
+
reject(error);
|
|
247
|
+
},
|
|
248
|
+
timeoutId,
|
|
249
|
+
};
|
|
250
|
+
this.pendingResponses.set(trackingId, pendingResponse);
|
|
251
|
+
this.send(request).catch((error) => {
|
|
252
|
+
this.clearPendingResponse(trackingId);
|
|
253
|
+
reject(error);
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
acknowledge(event) {
|
|
258
|
+
if (!event) {
|
|
259
|
+
return Promise.reject(new Error('`event` is required'));
|
|
260
|
+
}
|
|
261
|
+
if (!has(event, 'data.eventId')) {
|
|
262
|
+
return Promise.reject(new Error('`event.data.eventId` is required'));
|
|
263
|
+
}
|
|
264
|
+
if (this.readyState !== SOCKET_READY_STATE.OPEN) {
|
|
265
|
+
return Promise.resolve();
|
|
266
|
+
}
|
|
267
|
+
return this.send({
|
|
268
|
+
type: MESSAGE_TYPES.EVENT_ACK,
|
|
269
|
+
trackingId: event.data.trackingId || createTrackingId(),
|
|
270
|
+
eventId: event.data.eventId,
|
|
271
|
+
}).catch((error) => {
|
|
272
|
+
if (error.message === 'INVALID_STATE_ERROR') {
|
|
273
|
+
return Promise.resolve();
|
|
274
|
+
}
|
|
275
|
+
throw error;
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
refresh(token) {
|
|
279
|
+
if (!token) {
|
|
280
|
+
return Promise.reject(new Error('`token` is required for Socket#refresh()'));
|
|
281
|
+
}
|
|
282
|
+
let refreshedToken;
|
|
283
|
+
if (typeof token === 'string') {
|
|
284
|
+
refreshedToken = token;
|
|
285
|
+
}
|
|
286
|
+
else if (token && typeof token.toString === 'function') {
|
|
287
|
+
refreshedToken = token.toString();
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
refreshedToken = String(token);
|
|
291
|
+
}
|
|
292
|
+
return this.authorize(refreshedToken);
|
|
293
|
+
}
|
|
294
|
+
authorize(token) {
|
|
295
|
+
this.logger.info(`socket,${this.domain}: authorizing`);
|
|
296
|
+
return this.sendRequest({
|
|
297
|
+
type: MESSAGE_TYPES.AUTH,
|
|
298
|
+
data: { token },
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
clearPendingResponse(trackingId) {
|
|
302
|
+
const pendingResponse = this.pendingResponses.get(trackingId);
|
|
303
|
+
if (pendingResponse?.timeoutId) {
|
|
304
|
+
clearTimeout(pendingResponse.timeoutId);
|
|
305
|
+
}
|
|
306
|
+
this.pendingResponses.delete(trackingId);
|
|
307
|
+
}
|
|
308
|
+
rejectPendingResponses(error) {
|
|
309
|
+
if (!this.pendingResponses.size) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
for (const pendingResponse of this.pendingResponses.values()) {
|
|
313
|
+
pendingResponse.reject(error);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
handlePendingResponse(response) {
|
|
317
|
+
if (!response) {
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
const pendingResponse = this.pendingResponses.get(response.trackingId || '');
|
|
321
|
+
if (!pendingResponse) {
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
if (response.subtype !== pendingResponse.request.type) {
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
const statusCode = response?.statusCode;
|
|
328
|
+
const statusMessage = response?.statusMessage;
|
|
329
|
+
if (statusCode === 440 && response?.subtype !== MESSAGE_TYPES.AUTH) {
|
|
330
|
+
if (typeof this.refreshToken === 'function') {
|
|
331
|
+
Promise.resolve(this.refreshToken(response)).catch((error) => {
|
|
332
|
+
this.logger.warn(`socket,${this.domain}: failed token-expiry re-auth`, error);
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
this.logger.warn(`socket,${this.domain}: refreshToken callback is unavailable for statusCode 440`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
if (statusCode === undefined) {
|
|
340
|
+
const error = createWssResponseError(response, statusCode, statusMessage || 'Socket response missing status code');
|
|
341
|
+
pendingResponse.reject(error);
|
|
342
|
+
}
|
|
343
|
+
else if (statusCode >= 200 && statusCode < 300) {
|
|
344
|
+
pendingResponse.resolve(response);
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
pendingResponse.reject(createWssResponseError(response, statusCode, statusMessage));
|
|
348
|
+
}
|
|
349
|
+
return true;
|
|
350
|
+
}
|
|
351
|
+
fixCloseCode(event) {
|
|
352
|
+
if (event.code === 1005 && event.reason) {
|
|
353
|
+
switch (event.reason.toLowerCase()) {
|
|
354
|
+
case 'replaced':
|
|
355
|
+
this.logger.info(`socket,${this.domain}: fixing CloseEvent code for reason: `, event.reason);
|
|
356
|
+
event.code = 4000;
|
|
357
|
+
break;
|
|
358
|
+
case 'authentication failed':
|
|
359
|
+
case 'authentication did not happen within the timeout window of 30000 seconds.':
|
|
360
|
+
this.logger.info(`socket,${this.domain}: fixing CloseEvent code for reason: `, event.reason);
|
|
361
|
+
event.code = 1008;
|
|
362
|
+
break;
|
|
363
|
+
default:
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return event;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
import Socket from './socket-base';
|
|
5
|
+
Socket.getWebSocketConstructor = function getWebSocketConstructor() {
|
|
6
|
+
if (typeof WebSocket !== 'undefined') {
|
|
7
|
+
return WebSocket;
|
|
8
|
+
}
|
|
9
|
+
const scope = typeof globalThis !== 'undefined' ? globalThis : undefined;
|
|
10
|
+
return (scope?.WebSocket || scope?.MozWebSocket);
|
|
11
|
+
};
|
|
12
|
+
export default Socket;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -14,12 +14,16 @@ export declare class CallingClient extends Eventing<CallingClientEventTypes> imp
|
|
|
14
14
|
private callManager;
|
|
15
15
|
private metricManager;
|
|
16
16
|
private sdkConfig?;
|
|
17
|
+
private serviceData;
|
|
17
18
|
private primaryMobiusUris;
|
|
18
19
|
private backupMobiusUris;
|
|
20
|
+
private primaryWssMobiusUris;
|
|
21
|
+
private backupWssMobiusUris;
|
|
19
22
|
private mobiusClusters;
|
|
20
23
|
private mobiusHost;
|
|
21
24
|
mediaEngine: typeof Media;
|
|
22
25
|
private lineDict;
|
|
26
|
+
private apiRequest;
|
|
23
27
|
private isNetworkDown;
|
|
24
28
|
private networkDownTimestamp;
|
|
25
29
|
private networkUpTimestamp;
|
|
@@ -27,6 +31,7 @@ export declare class CallingClient extends Eventing<CallingClientEventTypes> imp
|
|
|
27
31
|
private mercuryUpTimestamp;
|
|
28
32
|
constructor(webex: WebexSDK, config?: CallingClientConfig);
|
|
29
33
|
init(): Promise<void>;
|
|
34
|
+
private getRTMSDomain;
|
|
30
35
|
private checkNetworkReachability;
|
|
31
36
|
private checkCallStatus;
|
|
32
37
|
private handleNetworkOffline;
|
|
@@ -36,6 +41,8 @@ export declare class CallingClient extends Eventing<CallingClientEventTypes> imp
|
|
|
36
41
|
private setupNetworkEventListeners;
|
|
37
42
|
private getClientRegionInfo;
|
|
38
43
|
private getMobiusServers;
|
|
44
|
+
private connectToMobiusSocket;
|
|
45
|
+
private handleMobiusAsyncEvent;
|
|
39
46
|
private registerCallsClearedListener;
|
|
40
47
|
private callsClearedHandler;
|
|
41
48
|
getLoggingLevel(): LOGGER;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallingClient.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/CallingClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"CallingClient.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/CallingClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAWpD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAmB,aAAa,EAAe,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,uBAAuB,EAKxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EASL,kBAAkB,EAClB,UAAU,EAEX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAC,KAAK,EAAkD,MAAM,iBAAiB,CAAC;AAmBvF,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AAyBnC,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAC5F,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,aAAa,CAAiB;IAEtC,OAAO,CAAC,SAAS,CAAC,CAAsB;IAExC,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,iBAAiB,CAAW;IAEpC,OAAO,CAAC,gBAAgB,CAAW;IAEnC,OAAO,CAAC,oBAAoB,CAAW;IAEvC,OAAO,CAAC,mBAAmB,CAAW;IAEtC,OAAO,CAAC,cAAc,CAAgB;IAEtC,OAAO,CAAC,UAAU,CAAS;IAEpB,WAAW,EAAE,OAAO,KAAK,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAA6B;IAE7C,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAAM;IAEhC,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAAM;gBAKpB,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB;IAiE5C,IAAI;IAoEjB,OAAO,CAAC,aAAa;YA6BP,wBAAwB;YA2BxB,eAAe;IAwB7B,OAAO,CAAC,oBAAoB,CAY1B;IAGF,OAAO,CAAC,mBAAmB,CAMzB;IAEF,OAAO,CAAC,oBAAoB,CAa1B;IAEF,OAAO,CAAC,mBAAmB,CA6CzB;IAEF,OAAO,CAAC,0BAA0B;YAmBpB,mBAAmB;YAkFnB,gBAAgB;YAkKhB,qBAAqB;IAgFnC,OAAO,CAAC,sBAAsB,CAkD5B;IAOF,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB,CAoBzB;IAMK,eAAe,IAAI,MAAM;IAQzB,eAAe,IAAI,aAAa;IAIvC,OAAO,CAAC,wBAAwB;YAgClB,UAAU;IA2BjB,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAO3B,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA0DxD,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAiBzC,gBAAgB,IAAI,KAAK,GAAG,SAAS;IAuB/B,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAQvD;AAOD,eAAO,MAAM,YAAY,UAChB,QAAQ,WACN,mBAAmB,KAC3B,QAAQ,cAAc,CAKxB,CAAC"}
|
|
@@ -35,10 +35,20 @@ export declare class Call extends Eventing<CallEventTypes> implements ICall {
|
|
|
35
35
|
private broadworksCorrelationInfo?;
|
|
36
36
|
private serviceIndicator;
|
|
37
37
|
private mediaNegotiationCompleted;
|
|
38
|
+
private connectPending;
|
|
38
39
|
private receivedRoapOKSeq;
|
|
39
40
|
private localAudioStream?;
|
|
40
41
|
private rtcMetrics;
|
|
41
42
|
private callKeepaliveRetryCount;
|
|
43
|
+
private apiRequest;
|
|
44
|
+
private handleMediaRoapEvent;
|
|
45
|
+
private handleRemoteTrackAdded;
|
|
46
|
+
private static getPeerConnectionStateFromEvent;
|
|
47
|
+
private handleIceGatheringStateChanged;
|
|
48
|
+
private handlePeerConnectionStateChanged;
|
|
49
|
+
private handleIceConnectionStateChanged;
|
|
50
|
+
private handleIceCandidateError;
|
|
51
|
+
private handleRoapFailure;
|
|
42
52
|
isMuted(): boolean;
|
|
43
53
|
isConnected(): boolean;
|
|
44
54
|
isHeld(): boolean;
|
|
@@ -87,6 +97,8 @@ export declare class Call extends Eventing<CallEventTypes> implements ICall {
|
|
|
87
97
|
private postMedia;
|
|
88
98
|
private mediaRoapEventsListener;
|
|
89
99
|
private mediaTrackListener;
|
|
100
|
+
private mediaIceEventsListener;
|
|
101
|
+
private unregisterMediaConnectionListeners;
|
|
90
102
|
private onEffectEnabled;
|
|
91
103
|
private onEffectDisabled;
|
|
92
104
|
private updateTrack;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/calling/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAGtB,MAAM,4BAA4B,CAAC;AAapC,OAAO,EAEL,WAAW,EACX,aAAa,EACb,MAAM,EACN,aAAa,EACb,kBAAkB,EAElB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AA6B5B,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,cAAc,EAGd,SAAS,
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/calling/call.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { CallEventTypes } from '../../Events/types';
|
|
|
2
2
|
import { Eventing } from '../../Events/impl';
|
|
3
3
|
import { WebexSDK } from '../../SDKConnector/types';
|
|
4
4
|
import { CallDetails, CallDirection, CorrelationId, ServiceIndicator } from '../../common/types';
|
|
5
|
-
import { ICall, ICallManager } from './types';
|
|
5
|
+
import { ICall, ICallManager, MobiusAsyncEvent } from './types';
|
|
6
6
|
import { ILine } from '../line/types';
|
|
7
7
|
export declare class CallManager extends Eventing<CallEventTypes> implements ICallManager {
|
|
8
8
|
private sdkConnector;
|
|
@@ -11,11 +11,12 @@ export declare class CallManager extends Eventing<CallEventTypes> implements ICa
|
|
|
11
11
|
private activeMobiusUrl;
|
|
12
12
|
private serviceIndicator;
|
|
13
13
|
private lineDict;
|
|
14
|
+
private apiRequest;
|
|
14
15
|
constructor(webex: WebexSDK, indicator: ServiceIndicator);
|
|
15
16
|
createCall: (direction: CallDirection, deviceId: string, lineId: string, destination?: CallDetails) => ICall;
|
|
16
17
|
updateActiveMobius(url: string): void;
|
|
17
18
|
private listenForWsEvents;
|
|
18
|
-
|
|
19
|
+
dequeueWsEvents(event: MobiusAsyncEvent | unknown): void;
|
|
19
20
|
getCall: (correlationId: CorrelationId) => ICall;
|
|
20
21
|
getActiveCalls: () => Record<string, ICall>;
|
|
21
22
|
updateLine(deviceId: string, line: ILine): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callManager.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/calling/callManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"callManager.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/calling/callManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAA4B,cAAc,EAAkB,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAgB,QAAQ,EAAC,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EACL,KAAK,EACL,YAAY,EAGZ,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAOpC,qBAAa,WAAY,SAAQ,QAAQ,CAAC,cAAc,CAAE,YAAW,YAAY;IAC/E,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,cAAc,CAA+B;IAErD,OAAO,CAAC,eAAe,CAAU;IAEjC,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,QAAQ,CAAwB;IAExC,OAAO,CAAC,UAAU,CAAa;gBAMnB,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB;IAoBjD,UAAU,cACJ,aAAa,YACd,MAAM,UACR,MAAM,gBACA,WAAW,KACxB,KAAK,CA2CN;IAOK,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAWrC,OAAO,CAAC,iBAAiB;IAmBlB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAuTjD,OAAO,kBAAmB,aAAa,KAAG,KAAK,CAEpD;IAKK,cAAc,QAAO,OAAO,MAAM,EAAE,KAAK,CAAC,CAE/C;IAKK,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;IAW/C,OAAO,CAAC,SAAS;CAGlB;AAMD,eAAO,MAAM,cAAc,UAAW,QAAQ,aAAa,gBAAgB,KAAG,YAM7E,CAAC"}
|
|
@@ -9,7 +9,9 @@ export declare enum MobiusEventType {
|
|
|
9
9
|
CALL_PROGRESS = "mobius.callprogress",
|
|
10
10
|
CALL_CONNECTED = "mobius.callconnected",
|
|
11
11
|
CALL_MEDIA = "mobius.media",
|
|
12
|
-
CALL_DISCONNECTED = "mobius.calldisconnected"
|
|
12
|
+
CALL_DISCONNECTED = "mobius.calldisconnected",
|
|
13
|
+
CALL_INFO = "mobius.callinfo",
|
|
14
|
+
REGISTRATION_DOWN = "registration.down"
|
|
13
15
|
}
|
|
14
16
|
export declare enum MediaState {
|
|
15
17
|
OFFER = "OFFER",
|
|
@@ -73,27 +75,36 @@ export type SupplementaryServiceState = {
|
|
|
73
75
|
callState: string;
|
|
74
76
|
};
|
|
75
77
|
export type MobiusCallData = {
|
|
78
|
+
eventType: MobiusEventType;
|
|
76
79
|
callProgressData?: {
|
|
77
80
|
alerting: boolean;
|
|
78
81
|
inbandMedia: boolean;
|
|
79
82
|
};
|
|
80
83
|
message?: RoapMessage;
|
|
81
|
-
callerId
|
|
82
|
-
from: string;
|
|
83
|
-
};
|
|
84
|
+
callerId?: CallerIdInfo;
|
|
84
85
|
midCallService?: Array<MidCallEvent>;
|
|
85
86
|
callId: CallId;
|
|
86
87
|
callUrl: string;
|
|
87
88
|
deviceId: string;
|
|
88
89
|
correlationId: string;
|
|
89
|
-
eventType: MobiusEventType;
|
|
90
90
|
broadworksCorrelationInfo?: string;
|
|
91
91
|
};
|
|
92
|
-
export type
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
export type MobiusRegistrationDownData = {
|
|
93
|
+
eventType: MobiusEventType.REGISTRATION_DOWN;
|
|
94
|
+
deviceInfo: {
|
|
95
|
+
userId: string;
|
|
96
|
+
device: {
|
|
97
|
+
deviceId: string;
|
|
98
|
+
uri: string;
|
|
99
|
+
status: string;
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
export type MobiusAsyncEvent = {
|
|
104
|
+
type: string;
|
|
105
|
+
eventId: string;
|
|
96
106
|
trackingId: string;
|
|
107
|
+
data: MobiusCallData | MobiusRegistrationDownData;
|
|
97
108
|
};
|
|
98
109
|
export type PatchResponse = {
|
|
99
110
|
statusCode: number;
|
|
@@ -170,6 +181,19 @@ export type CallRtpStats = {
|
|
|
170
181
|
'rtp-rxstat': ReceiveStatistics;
|
|
171
182
|
'rtp-txstat': TransmitStatistics;
|
|
172
183
|
};
|
|
184
|
+
export type IceEventPayload = {
|
|
185
|
+
state?: string;
|
|
186
|
+
connectionState?: string;
|
|
187
|
+
iceConnectionState?: string;
|
|
188
|
+
iceGatheringState?: string;
|
|
189
|
+
};
|
|
190
|
+
export type IceCandidateErrorEventPayload = {
|
|
191
|
+
address?: string | null;
|
|
192
|
+
errorCode?: number;
|
|
193
|
+
errorText?: string;
|
|
194
|
+
port?: number | null;
|
|
195
|
+
url?: string;
|
|
196
|
+
};
|
|
173
197
|
export interface ICall extends Eventing<CallEventTypes> {
|
|
174
198
|
lineId: string;
|
|
175
199
|
getCallId(): string;
|
|
@@ -207,6 +231,7 @@ export interface ICallManager extends Eventing<CallEventTypes> {
|
|
|
207
231
|
getCall(correlationId: CorrelationId): ICall;
|
|
208
232
|
updateActiveMobius(url: string): void;
|
|
209
233
|
getActiveCalls(): Record<string, ICall>;
|
|
234
|
+
dequeueWsEvents(event: unknown): void;
|
|
210
235
|
updateLine(deviceId: string, line: ILine): void;
|
|
211
236
|
}
|
|
212
237
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/calling/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,SAAS,EAAC,MAAM,gCAAgC,CAAC;AACzD,OAAO,EACL,WAAW,EACX,aAAa,EACb,MAAM,EACN,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAEpC,oBAAY,eAAe;IACzB,UAAU,gBAAgB;IAC1B,aAAa,wBAAwB;IACrC,cAAc,yBAAyB;IACvC,UAAU,iBAAiB;IAC3B,iBAAiB,4BAA4B;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/calling/types.ts"],"names":[],"mappings":"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"}
|