webitel-sdk 26.4.20 → 26.4.22
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/index.cjs +94 -57
- package/index.cjs.map +1 -1
- package/index.mjs +94 -57
- package/index.mjs.map +1 -1
- package/package.json +2 -1
- package/sip/webrtc/session.d.ts.map +1 -1
- package/socket/client.d.ts +1 -0
- package/socket/client.d.ts.map +1 -1
- package/socket/task.d.ts +21 -5
- package/socket/task.d.ts.map +1 -1
- package/socket/utils.d.ts +7 -0
- package/socket/utils.d.ts.map +1 -1
- package/version.d.ts +1 -1
package/index.cjs
CHANGED
|
@@ -27,6 +27,7 @@ let ee_ts = require("ee-ts");
|
|
|
27
27
|
let jssip_lib_JsSIP_js = require("jssip/lib/JsSIP.js");
|
|
28
28
|
jssip_lib_JsSIP_js = __toESM(jssip_lib_JsSIP_js);
|
|
29
29
|
let events = require("events");
|
|
30
|
+
let case_anything = require("case-anything");
|
|
30
31
|
let ee_ts_lib_ee_js = require("ee-ts/lib/ee.js");
|
|
31
32
|
//#region src/url-shim.ts
|
|
32
33
|
function parse(path, _parseQueryString = false) {
|
|
@@ -66174,7 +66175,9 @@ var Session$2 = class {
|
|
|
66174
66175
|
});
|
|
66175
66176
|
}
|
|
66176
66177
|
setMediaConfig(s) {
|
|
66177
|
-
|
|
66178
|
+
setTimeout(() => {
|
|
66179
|
+
this.session.sendInfo("application/json", JSON.stringify(s));
|
|
66180
|
+
}, 500);
|
|
66178
66181
|
}
|
|
66179
66182
|
};
|
|
66180
66183
|
//#endregion
|
|
@@ -66707,7 +66710,7 @@ _defineProperty(SipPhone$1, "userAgent", `Webitel-Phone/${version$1}`);
|
|
|
66707
66710
|
_defineProperty(SipPhone$1, "sipVersion", version$1);
|
|
66708
66711
|
//#endregion
|
|
66709
66712
|
//#region src/version.ts
|
|
66710
|
-
const version = "26.4.
|
|
66713
|
+
const version = "26.4.22";
|
|
66711
66714
|
//#endregion
|
|
66712
66715
|
//#region src/socket/errors.ts
|
|
66713
66716
|
/**
|
|
@@ -66853,6 +66856,75 @@ var PauseNotAllowedError = class PauseNotAllowedError extends Error {
|
|
|
66853
66856
|
};
|
|
66854
66857
|
_defineProperty(PauseNotAllowedError, "id", "app.agent.set_pause.not_allow");
|
|
66855
66858
|
//#endregion
|
|
66859
|
+
//#region src/socket/utils.ts
|
|
66860
|
+
/**
|
|
66861
|
+
* Рекурсивно конвертує ключі обʼєкта/масиву в camelCase.
|
|
66862
|
+
* @function
|
|
66863
|
+
* @param {unknown} input - Вхідне значення.
|
|
66864
|
+
* @returns {unknown} - Значення з camelCase-ключами.
|
|
66865
|
+
*/
|
|
66866
|
+
function camelizeKeys(input) {
|
|
66867
|
+
if (Array.isArray(input)) return input.map(camelizeKeys);
|
|
66868
|
+
if (input && typeof input === "object") {
|
|
66869
|
+
const res = {};
|
|
66870
|
+
for (const [key, value] of Object.entries(input)) res[(0, case_anything.camelCase)(key)] = camelizeKeys(value);
|
|
66871
|
+
return res;
|
|
66872
|
+
}
|
|
66873
|
+
return input;
|
|
66874
|
+
}
|
|
66875
|
+
/**
|
|
66876
|
+
* Функція, що форматує URI WebSocket.
|
|
66877
|
+
* @function
|
|
66878
|
+
* @param {string} host - Хост.
|
|
66879
|
+
* @returns {string} - URI WebSocket.
|
|
66880
|
+
*/
|
|
66881
|
+
function formatWebSocketUri(host) {
|
|
66882
|
+
return host.replace(/^http/, "ws");
|
|
66883
|
+
}
|
|
66884
|
+
/**
|
|
66885
|
+
* Функція, що форматує базовий URI.
|
|
66886
|
+
* @function
|
|
66887
|
+
* @param {string} host - Хост.
|
|
66888
|
+
* @returns {string} - Базовий URI.
|
|
66889
|
+
*/
|
|
66890
|
+
function formatBaseUri(host) {
|
|
66891
|
+
let res = host.replace(/^ws/, "http");
|
|
66892
|
+
if (res.endsWith("/")) res = res.slice(0, -1);
|
|
66893
|
+
if (res.endsWith("/ws")) res = res.slice(0, -3);
|
|
66894
|
+
return res;
|
|
66895
|
+
}
|
|
66896
|
+
/**
|
|
66897
|
+
* Функція, що розбиває рядок на частини заданої довжини.
|
|
66898
|
+
* @function
|
|
66899
|
+
* @param {string} str - Рядок.
|
|
66900
|
+
* @param {number} len - Довжина частини.
|
|
66901
|
+
* @returns {string[]} - Масив частин рядка.
|
|
66902
|
+
*/
|
|
66903
|
+
function chunkString(str, len) {
|
|
66904
|
+
const size = Math.ceil(str.length / len);
|
|
66905
|
+
const r = new Array(size);
|
|
66906
|
+
let offset = 0;
|
|
66907
|
+
for (let i = 0; i < size; i++) {
|
|
66908
|
+
r[i] = str.substring(offset, offset + len);
|
|
66909
|
+
offset += len;
|
|
66910
|
+
}
|
|
66911
|
+
return r;
|
|
66912
|
+
}
|
|
66913
|
+
function generateId() {
|
|
66914
|
+
return String(Date.now().toString(32) + Math.random().toString(16)).replace(/\./g, "");
|
|
66915
|
+
}
|
|
66916
|
+
function generateTimestampFilename() {
|
|
66917
|
+
const now = /* @__PURE__ */ new Date();
|
|
66918
|
+
const pad = (num) => String(num).padStart(2, "0");
|
|
66919
|
+
const year = now.getFullYear();
|
|
66920
|
+
const month = pad(now.getMonth() + 1);
|
|
66921
|
+
const day = pad(now.getDate());
|
|
66922
|
+
const hours = pad(now.getHours());
|
|
66923
|
+
const minutes = pad(now.getMinutes());
|
|
66924
|
+
const seconds = pad(now.getSeconds());
|
|
66925
|
+
return `${`${year}-${month}-${day}`}_${`${hours}_${minutes}_${seconds}`}`;
|
|
66926
|
+
}
|
|
66927
|
+
//#endregion
|
|
66856
66928
|
//#region src/socket/task.ts
|
|
66857
66929
|
/**
|
|
66858
66930
|
* Перелік станів завдання.
|
|
@@ -67340,6 +67412,15 @@ var Task = class {
|
|
|
67340
67412
|
return this.communication.destination;
|
|
67341
67413
|
}
|
|
67342
67414
|
/**
|
|
67415
|
+
* Превʼю чату в camelCase (сире значення по сокету — snake_case).
|
|
67416
|
+
* @returns {ThreadPreview | undefined}
|
|
67417
|
+
*/
|
|
67418
|
+
get thread() {
|
|
67419
|
+
const raw = this.distribute.communication.thread;
|
|
67420
|
+
if (!raw) return;
|
|
67421
|
+
return camelizeKeys(raw);
|
|
67422
|
+
}
|
|
67423
|
+
/**
|
|
67343
67424
|
* Отримати ім'я для відображення.
|
|
67344
67425
|
* @returns {string | null}
|
|
67345
67426
|
*/
|
|
@@ -68066,60 +68147,6 @@ function removeWaitingList(list, attemptId) {
|
|
|
68066
68147
|
return false;
|
|
68067
68148
|
}
|
|
68068
68149
|
//#endregion
|
|
68069
|
-
//#region src/socket/utils.ts
|
|
68070
|
-
/**
|
|
68071
|
-
* Функція, що форматує URI WebSocket.
|
|
68072
|
-
* @function
|
|
68073
|
-
* @param {string} host - Хост.
|
|
68074
|
-
* @returns {string} - URI WebSocket.
|
|
68075
|
-
*/
|
|
68076
|
-
function formatWebSocketUri(host) {
|
|
68077
|
-
return host.replace(/^http/, "ws");
|
|
68078
|
-
}
|
|
68079
|
-
/**
|
|
68080
|
-
* Функція, що форматує базовий URI.
|
|
68081
|
-
* @function
|
|
68082
|
-
* @param {string} host - Хост.
|
|
68083
|
-
* @returns {string} - Базовий URI.
|
|
68084
|
-
*/
|
|
68085
|
-
function formatBaseUri(host) {
|
|
68086
|
-
let res = host.replace(/^ws/, "http");
|
|
68087
|
-
if (res.endsWith("/")) res = res.slice(0, -1);
|
|
68088
|
-
if (res.endsWith("/ws")) res = res.slice(0, -3);
|
|
68089
|
-
return res;
|
|
68090
|
-
}
|
|
68091
|
-
/**
|
|
68092
|
-
* Функція, що розбиває рядок на частини заданої довжини.
|
|
68093
|
-
* @function
|
|
68094
|
-
* @param {string} str - Рядок.
|
|
68095
|
-
* @param {number} len - Довжина частини.
|
|
68096
|
-
* @returns {string[]} - Масив частин рядка.
|
|
68097
|
-
*/
|
|
68098
|
-
function chunkString(str, len) {
|
|
68099
|
-
const size = Math.ceil(str.length / len);
|
|
68100
|
-
const r = new Array(size);
|
|
68101
|
-
let offset = 0;
|
|
68102
|
-
for (let i = 0; i < size; i++) {
|
|
68103
|
-
r[i] = str.substring(offset, offset + len);
|
|
68104
|
-
offset += len;
|
|
68105
|
-
}
|
|
68106
|
-
return r;
|
|
68107
|
-
}
|
|
68108
|
-
function generateId() {
|
|
68109
|
-
return String(Date.now().toString(32) + Math.random().toString(16)).replace(/\./g, "");
|
|
68110
|
-
}
|
|
68111
|
-
function generateTimestampFilename() {
|
|
68112
|
-
const now = /* @__PURE__ */ new Date();
|
|
68113
|
-
const pad = (num) => String(num).padStart(2, "0");
|
|
68114
|
-
const year = now.getFullYear();
|
|
68115
|
-
const month = pad(now.getMonth() + 1);
|
|
68116
|
-
const day = pad(now.getDate());
|
|
68117
|
-
const hours = pad(now.getHours());
|
|
68118
|
-
const minutes = pad(now.getMinutes());
|
|
68119
|
-
const seconds = pad(now.getSeconds());
|
|
68120
|
-
return `${`${year}-${month}-${day}`}_${`${hours}_${minutes}_${seconds}`}`;
|
|
68121
|
-
}
|
|
68122
|
-
//#endregion
|
|
68123
68150
|
//#region src/screen/storage.ts
|
|
68124
68151
|
var StorageMediaCapture = class extends ee_ts.EventEmitter {
|
|
68125
68152
|
constructor(id, name, mediaStream, iceServers, sdpResolver, token) {
|
|
@@ -69529,7 +69556,7 @@ var Conversation = class {
|
|
|
69529
69556
|
clearTimeout(this._autoAnswerTimerId);
|
|
69530
69557
|
this._autoAnswerTimerId = null;
|
|
69531
69558
|
}
|
|
69532
|
-
this.member = wrapChannelMember(member);
|
|
69559
|
+
this.member = wrapChannelMember(member) || {};
|
|
69533
69560
|
if (!this.members.some((m) => m.id === this.member.id)) this.members.push(this.member);
|
|
69534
69561
|
this.inviteId = null;
|
|
69535
69562
|
}
|
|
@@ -70992,6 +71019,16 @@ var Client = class extends ee_ts.EventEmitter {
|
|
|
70992
71019
|
};
|
|
70993
71020
|
return this.registerCallClient(this.connectionInfo.b2bua ? new SipPhone$1(this, audioProcessing) : new SipPhone(this.instanceId, this._config.debug, audioProcessing));
|
|
70994
71021
|
}
|
|
71022
|
+
async latency() {
|
|
71023
|
+
const ack = {
|
|
71024
|
+
client_ts: 0,
|
|
71025
|
+
client_ack_ts: 0,
|
|
71026
|
+
server_ts: 0,
|
|
71027
|
+
server_ack_ts: 0
|
|
71028
|
+
};
|
|
71029
|
+
Object.assign(ack, await this.request(`latency_start`, ack));
|
|
71030
|
+
return this.calculateLatency(ack);
|
|
71031
|
+
}
|
|
70995
71032
|
async calculateLatency(ack) {
|
|
70996
71033
|
ack.client_ts = Date.now();
|
|
70997
71034
|
Object.assign(ack, await this.request(`latency_ack`, {
|