@koi-design/callkit 1.0.24 → 1.0.25
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/index.d.ts +33 -0
- package/dist/index.global.js +119 -16
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +105 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +105 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from 'axios';
|
|
1
2
|
import { Invitation, UserAgent, Registerer } from 'sip.js';
|
|
2
3
|
|
|
3
4
|
declare class Api {
|
|
@@ -17,7 +18,9 @@ declare class Api {
|
|
|
17
18
|
* @returns
|
|
18
19
|
*/
|
|
19
20
|
setUserStatus(params: any): Promise<any>;
|
|
21
|
+
measureRTT(config?: AxiosRequestConfig): Promise<any>;
|
|
20
22
|
private post;
|
|
23
|
+
private get;
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
declare class Call {
|
|
@@ -140,7 +143,14 @@ declare const KitEvent: {
|
|
|
140
143
|
* User status change
|
|
141
144
|
*/
|
|
142
145
|
USER_STATUS_CHANGE: string;
|
|
146
|
+
/**
|
|
147
|
+
* SOCKET CONNECT EVENT
|
|
148
|
+
*/
|
|
143
149
|
CONNECT_EVENT: string;
|
|
150
|
+
/**
|
|
151
|
+
* NETWORK EVENT
|
|
152
|
+
*/
|
|
153
|
+
NETWORK_EVENT: string;
|
|
144
154
|
};
|
|
145
155
|
declare const SocketSendEvent: {
|
|
146
156
|
/**
|
|
@@ -229,8 +239,11 @@ declare class Socket {
|
|
|
229
239
|
private reconnectTimer?;
|
|
230
240
|
private isReconnecting;
|
|
231
241
|
private reconnectAttempts;
|
|
242
|
+
closing: boolean;
|
|
232
243
|
constructor(callKit: CallKit);
|
|
233
244
|
init(): void;
|
|
245
|
+
close(code?: number, reason?: string): void;
|
|
246
|
+
gracefulClose(): void;
|
|
234
247
|
private reconnect;
|
|
235
248
|
private connect;
|
|
236
249
|
private onOpen;
|
|
@@ -254,6 +267,22 @@ declare class Socket {
|
|
|
254
267
|
private attemptReconnect;
|
|
255
268
|
}
|
|
256
269
|
|
|
270
|
+
interface MonitorConfig {
|
|
271
|
+
interval: number;
|
|
272
|
+
apiEndpoint: string;
|
|
273
|
+
}
|
|
274
|
+
declare class Monitor {
|
|
275
|
+
private callKit;
|
|
276
|
+
interval: number;
|
|
277
|
+
apiEndpoint: string;
|
|
278
|
+
monitorIntervalHandler: ReturnType<typeof setInterval> | null;
|
|
279
|
+
constructor(callKit: CallKit);
|
|
280
|
+
getEndPointPath: () => string;
|
|
281
|
+
measureRTT: () => Promise<void>;
|
|
282
|
+
stopRTTMonitoring(): void;
|
|
283
|
+
startRTTMonitoring(): void;
|
|
284
|
+
}
|
|
285
|
+
|
|
257
286
|
interface WebrtcConstranis {
|
|
258
287
|
audio: {
|
|
259
288
|
autoGainControl?: boolean;
|
|
@@ -270,6 +299,7 @@ interface IConfig {
|
|
|
270
299
|
constrains: WebrtcConstranis;
|
|
271
300
|
socket: string;
|
|
272
301
|
reconnect?: SocketConfig;
|
|
302
|
+
monitor?: MonitorConfig;
|
|
273
303
|
userInfo: {
|
|
274
304
|
wsUrl: string;
|
|
275
305
|
sessionId: string;
|
|
@@ -456,6 +486,7 @@ declare class CallKit {
|
|
|
456
486
|
connect: Connect;
|
|
457
487
|
socket: Socket;
|
|
458
488
|
user: User;
|
|
489
|
+
monitor: Monitor;
|
|
459
490
|
listener: Listener[];
|
|
460
491
|
constructor(options: ConfigEntity);
|
|
461
492
|
login(username: string, password: string, extra?: {
|
|
@@ -474,6 +505,8 @@ declare class CallKit {
|
|
|
474
505
|
setSleep(): Promise<void>;
|
|
475
506
|
setBusy(): Promise<void>;
|
|
476
507
|
reset(): Promise<void>;
|
|
508
|
+
startRTTMonitoring(): void;
|
|
509
|
+
stopRTTMonitoring(): void;
|
|
477
510
|
on(event: kitEventType, callback: (...args: any[]) => void): void;
|
|
478
511
|
off(event: kitEventType, callback?: (...args: any[]) => void): void;
|
|
479
512
|
removeAllListeners(): void;
|
package/dist/index.global.js
CHANGED
|
@@ -3128,29 +3128,29 @@ var WebCall = (() => {
|
|
|
3128
3128
|
var Axios = require_Axios();
|
|
3129
3129
|
var mergeConfig = require_mergeConfig();
|
|
3130
3130
|
var defaults = require_defaults();
|
|
3131
|
-
function createInstance(
|
|
3132
|
-
var context = new Axios(
|
|
3131
|
+
function createInstance(defaultConfig2) {
|
|
3132
|
+
var context = new Axios(defaultConfig2);
|
|
3133
3133
|
var instance2 = bind(Axios.prototype.request, context);
|
|
3134
3134
|
utils.extend(instance2, Axios.prototype, context);
|
|
3135
3135
|
utils.extend(instance2, context);
|
|
3136
3136
|
instance2.create = function create(instanceConfig) {
|
|
3137
|
-
return createInstance(mergeConfig(
|
|
3137
|
+
return createInstance(mergeConfig(defaultConfig2, instanceConfig));
|
|
3138
3138
|
};
|
|
3139
3139
|
return instance2;
|
|
3140
3140
|
}
|
|
3141
|
-
var
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3141
|
+
var axios3 = createInstance(defaults);
|
|
3142
|
+
axios3.Axios = Axios;
|
|
3143
|
+
axios3.Cancel = require_Cancel();
|
|
3144
|
+
axios3.CancelToken = require_CancelToken();
|
|
3145
|
+
axios3.isCancel = require_isCancel();
|
|
3146
|
+
axios3.VERSION = require_data().version;
|
|
3147
|
+
axios3.all = function all(promises) {
|
|
3148
3148
|
return Promise.all(promises);
|
|
3149
3149
|
};
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
module.exports =
|
|
3153
|
-
module.exports.default =
|
|
3150
|
+
axios3.spread = require_spread();
|
|
3151
|
+
axios3.isAxiosError = require_isAxiosError();
|
|
3152
|
+
module.exports = axios3;
|
|
3153
|
+
module.exports.default = axios3;
|
|
3154
3154
|
}
|
|
3155
3155
|
});
|
|
3156
3156
|
|
|
@@ -3216,6 +3216,10 @@ var WebCall = (() => {
|
|
|
3216
3216
|
data: params
|
|
3217
3217
|
});
|
|
3218
3218
|
}
|
|
3219
|
+
async measureRTT(config) {
|
|
3220
|
+
this.callKit.logger.debug(`Request ${config.url}:`, config.data);
|
|
3221
|
+
return axios_default(config);
|
|
3222
|
+
}
|
|
3219
3223
|
async post(config) {
|
|
3220
3224
|
this.callKit.logger.debug(`Request ${config.url}:`, config.data);
|
|
3221
3225
|
const { userInfo, host } = this.callKit.config.getConfig();
|
|
@@ -3247,6 +3251,12 @@ var WebCall = (() => {
|
|
|
3247
3251
|
}
|
|
3248
3252
|
throw new Error(message ?? "Request failed");
|
|
3249
3253
|
}
|
|
3254
|
+
async get(config) {
|
|
3255
|
+
return this.post({
|
|
3256
|
+
...config,
|
|
3257
|
+
method: "get"
|
|
3258
|
+
});
|
|
3259
|
+
}
|
|
3250
3260
|
};
|
|
3251
3261
|
|
|
3252
3262
|
// package/const.ts
|
|
@@ -3379,7 +3389,14 @@ var WebCall = (() => {
|
|
|
3379
3389
|
* User status change
|
|
3380
3390
|
*/
|
|
3381
3391
|
USER_STATUS_CHANGE: "userStatusChange",
|
|
3382
|
-
|
|
3392
|
+
/**
|
|
3393
|
+
* SOCKET CONNECT EVENT
|
|
3394
|
+
*/
|
|
3395
|
+
CONNECT_EVENT: "CONNECT_EVENT",
|
|
3396
|
+
/**
|
|
3397
|
+
* NETWORK EVENT
|
|
3398
|
+
*/
|
|
3399
|
+
NETWORK_EVENT: "NETWORK_EVENT"
|
|
3383
3400
|
};
|
|
3384
3401
|
var ErrorCode = {
|
|
3385
3402
|
/**
|
|
@@ -3601,7 +3618,13 @@ var WebCall = (() => {
|
|
|
3601
3618
|
INCALL_RECONNECT_ERROR: "INCALL_RECONNECT_ERROR",
|
|
3602
3619
|
INCALL_RECONNECT_SUCCESS: "INCALL_RECONNECT_SUCCESS",
|
|
3603
3620
|
OPTIONS_HEARTBEAT_EXPIRED: "OPTIONS_HEARTBEAT_EXPIRED",
|
|
3604
|
-
USER_AGENT_START_ERROR: "USER_AGENT_START_ERROR"
|
|
3621
|
+
USER_AGENT_START_ERROR: "USER_AGENT_START_ERROR",
|
|
3622
|
+
CONNECT_CLOSING: "CONNECT_CLOSING",
|
|
3623
|
+
CONNECT_CLOSING_END: "CONNECT_CLOSING_END"
|
|
3624
|
+
};
|
|
3625
|
+
var NetWorkEvent = {
|
|
3626
|
+
RTT_MEASURE_SUCCESS: "RTT_MEASURE_SUCCESS",
|
|
3627
|
+
RTT_MEASURE_FAILED: "RTT_MEASURE_FAILED"
|
|
3605
3628
|
};
|
|
3606
3629
|
|
|
3607
3630
|
// package/call.ts
|
|
@@ -18917,6 +18940,59 @@ var WebCall = (() => {
|
|
|
18917
18940
|
}
|
|
18918
18941
|
};
|
|
18919
18942
|
|
|
18943
|
+
// package/monitor.ts
|
|
18944
|
+
var import_axios3 = __toESM(require_axios2());
|
|
18945
|
+
var defaultConfig = {
|
|
18946
|
+
interval: 5e3,
|
|
18947
|
+
apiEndpoint: "/livez"
|
|
18948
|
+
};
|
|
18949
|
+
var Monitor = class {
|
|
18950
|
+
callKit;
|
|
18951
|
+
interval = defaultConfig.interval;
|
|
18952
|
+
apiEndpoint = defaultConfig.apiEndpoint;
|
|
18953
|
+
monitorIntervalHandler = null;
|
|
18954
|
+
constructor(callKit) {
|
|
18955
|
+
this.callKit = callKit;
|
|
18956
|
+
const { monitor } = this.callKit.config.getConfig();
|
|
18957
|
+
this.interval = monitor?.interval ?? defaultConfig.interval;
|
|
18958
|
+
this.apiEndpoint = monitor?.apiEndpoint ?? defaultConfig.apiEndpoint;
|
|
18959
|
+
this.monitorIntervalHandler = null;
|
|
18960
|
+
}
|
|
18961
|
+
getEndPointPath = () => {
|
|
18962
|
+
const config = this.callKit.config.getConfig();
|
|
18963
|
+
const defaultPath = `${config.host}${this.apiEndpoint}`;
|
|
18964
|
+
const endPointPath = config.monitor?.apiEndpoint ?? defaultPath;
|
|
18965
|
+
return endPointPath;
|
|
18966
|
+
};
|
|
18967
|
+
measureRTT = async () => {
|
|
18968
|
+
try {
|
|
18969
|
+
const endPoint = this.getEndPointPath();
|
|
18970
|
+
const startTime = performance.now();
|
|
18971
|
+
await import_axios3.default.get(endPoint);
|
|
18972
|
+
const endTime = performance.now();
|
|
18973
|
+
const rtt = Math.round(endTime - startTime);
|
|
18974
|
+
this.callKit.trigger(KitEvent.NETWORK_EVENT, {
|
|
18975
|
+
event: NetWorkEvent.RTT_MEASURE_SUCCESS,
|
|
18976
|
+
rtt
|
|
18977
|
+
});
|
|
18978
|
+
} catch (error) {
|
|
18979
|
+
this.callKit.trigger(KitEvent.NETWORK_EVENT, {
|
|
18980
|
+
event: NetWorkEvent.RTT_MEASURE_FAILED,
|
|
18981
|
+
rtt: 0
|
|
18982
|
+
});
|
|
18983
|
+
}
|
|
18984
|
+
};
|
|
18985
|
+
stopRTTMonitoring() {
|
|
18986
|
+
if (this.monitorIntervalHandler) {
|
|
18987
|
+
clearInterval(this.monitorIntervalHandler);
|
|
18988
|
+
}
|
|
18989
|
+
}
|
|
18990
|
+
startRTTMonitoring() {
|
|
18991
|
+
this.stopRTTMonitoring();
|
|
18992
|
+
this.monitorIntervalHandler = setInterval(this.measureRTT, this.interval);
|
|
18993
|
+
}
|
|
18994
|
+
};
|
|
18995
|
+
|
|
18920
18996
|
// package/socket.ts
|
|
18921
18997
|
var RECONNECT_CONFIG = {
|
|
18922
18998
|
enabled: true,
|
|
@@ -18940,6 +19016,7 @@ var WebCall = (() => {
|
|
|
18940
19016
|
reconnectTimer;
|
|
18941
19017
|
isReconnecting = false;
|
|
18942
19018
|
reconnectAttempts = 0;
|
|
19019
|
+
closing = false;
|
|
18943
19020
|
constructor(callKit) {
|
|
18944
19021
|
this.callKit = callKit;
|
|
18945
19022
|
const { reconnect } = this.callKit.config.getConfig();
|
|
@@ -18953,6 +19030,16 @@ var WebCall = (() => {
|
|
|
18953
19030
|
this.callKit.logger.debug(`socket init: ${socket}`);
|
|
18954
19031
|
this.connect(socket);
|
|
18955
19032
|
}
|
|
19033
|
+
close(code, reason) {
|
|
19034
|
+
this.ws?.close(code, reason);
|
|
19035
|
+
}
|
|
19036
|
+
gracefulClose() {
|
|
19037
|
+
this.closing = true;
|
|
19038
|
+
this.callKit.trigger(KitEvent.CONNECT_EVENT, {
|
|
19039
|
+
event: ConnectEvent.CONNECT_CLOSING
|
|
19040
|
+
});
|
|
19041
|
+
this.close(1e3, "normal");
|
|
19042
|
+
}
|
|
18956
19043
|
reconnect(ev) {
|
|
18957
19044
|
this.callKit.logger.debug("socket reconnect", ev);
|
|
18958
19045
|
this.isConnected = false;
|
|
@@ -19018,6 +19105,10 @@ var WebCall = (() => {
|
|
|
19018
19105
|
}
|
|
19019
19106
|
this.callKit.connect.hangup();
|
|
19020
19107
|
this.reset();
|
|
19108
|
+
this.closing = false;
|
|
19109
|
+
this.callKit.trigger(KitEvent.CONNECT_EVENT, {
|
|
19110
|
+
event: ConnectEvent.CONNECT_CLOSING_END
|
|
19111
|
+
});
|
|
19021
19112
|
}
|
|
19022
19113
|
}
|
|
19023
19114
|
onError(ev) {
|
|
@@ -19319,6 +19410,7 @@ var WebCall = (() => {
|
|
|
19319
19410
|
connect;
|
|
19320
19411
|
socket;
|
|
19321
19412
|
user;
|
|
19413
|
+
monitor;
|
|
19322
19414
|
listener = [];
|
|
19323
19415
|
constructor(options) {
|
|
19324
19416
|
this.config = new Config(this);
|
|
@@ -19336,6 +19428,8 @@ var WebCall = (() => {
|
|
|
19336
19428
|
);
|
|
19337
19429
|
this.config.setConfig("reconnect", options.reconnect);
|
|
19338
19430
|
this.logger = new Logger(this, options.log);
|
|
19431
|
+
this.config.setConfig("monitor", options.monitor);
|
|
19432
|
+
this.monitor = new Monitor(this);
|
|
19339
19433
|
this.logger.debug("callKit init", options);
|
|
19340
19434
|
this.api = new Api(this);
|
|
19341
19435
|
this.connect = new Connect(this);
|
|
@@ -19405,6 +19499,9 @@ var WebCall = (() => {
|
|
|
19405
19499
|
await this.user.setUserStatus(UserStatus.offline);
|
|
19406
19500
|
if (this.config.isLogin()) {
|
|
19407
19501
|
const { sessionId } = this.config.getConfig().userInfo;
|
|
19502
|
+
this.unregister();
|
|
19503
|
+
this.stop();
|
|
19504
|
+
this.socket.gracefulClose();
|
|
19408
19505
|
this.api.loginOut({ sessionId }).catch((err) => {
|
|
19409
19506
|
this.logger.error(err, { errCode: ErrorCode.API_USER_LOGOUT_ERROR });
|
|
19410
19507
|
});
|
|
@@ -19512,6 +19609,12 @@ var WebCall = (() => {
|
|
|
19512
19609
|
await this.user.setUserStatus(UserStatus.offline);
|
|
19513
19610
|
}
|
|
19514
19611
|
}
|
|
19612
|
+
startRTTMonitoring() {
|
|
19613
|
+
this.monitor.startRTTMonitoring();
|
|
19614
|
+
}
|
|
19615
|
+
stopRTTMonitoring() {
|
|
19616
|
+
this.monitor.stopRTTMonitoring();
|
|
19617
|
+
}
|
|
19515
19618
|
on(event, callback) {
|
|
19516
19619
|
this.logger.debug(`on ${event}`);
|
|
19517
19620
|
this.listener.push({
|