@simplito/privmx-webendpoint 2.6.4 → 2.7.1
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/CONTRIBUTING.md +86 -0
- package/README.md +97 -7
- package/assets/driver-web-context.js +1 -1
- package/assets/e2ee-worker.js +1 -1
- package/assets/endpoint-wasm-module.js +3 -3
- package/assets/endpoint-wasm-module.wasm +0 -0
- package/assets/rms-processor.js +1 -0
- package/build-manifest.sh +6 -0
- package/{FinalizationHelper.js → dist/FinalizationHelper.js} +1 -1
- package/dist/ServerTypes.d.ts +7 -0
- package/{Types.d.ts → dist/Types.d.ts} +97 -10
- package/{Types.js → dist/Types.js} +17 -32
- package/{api → dist/api}/Api.d.ts +2 -0
- package/{api → dist/api}/Api.js +18 -1
- package/{api → dist/api}/ConnectionNative.js +1 -1
- package/{api → dist/api}/CryptoApiNative.js +1 -2
- package/{api → dist/api}/InboxApiNative.d.ts +21 -2
- package/{api → dist/api}/KvdbApiNative.d.ts +19 -2
- package/dist/api/NativeError.d.ts +13 -0
- package/dist/api/NativeError.js +20 -0
- package/{api → dist/api}/StoreApiNative.d.ts +19 -2
- package/dist/api/StreamApiNative.d.ts +72 -0
- package/dist/api/StreamApiNative.js +142 -0
- package/{api → dist/api}/ThreadApiNative.d.ts +19 -2
- package/dist/assets/e2ee-worker.js +1 -0
- package/dist/bundle/privmx-endpoint-web.js +2 -0
- package/dist/bundle/privmx-endpoint-web.js.LICENSE.txt +30 -0
- package/dist/bundle/rms-processor.js +1 -0
- package/{extra → dist/extra}/PrivmxClient.d.ts +9 -9
- package/{extra → dist/extra}/PrivmxClient.js +12 -12
- package/{extra → dist/extra}/PublicConnection.d.ts +2 -2
- package/{extra → dist/extra}/PublicConnection.js +2 -2
- package/{extra → dist/extra}/__tests__/connectionEventManager.test.js +1 -3
- package/{extra → dist/extra}/__tests__/customEventManager.test.js +1 -3
- package/{extra → dist/extra}/__tests__/userEventManager.test.js +2 -6
- package/{extra → dist/extra}/__tests__/utils.test.js +18 -18
- package/{extra → dist/extra}/events.js +32 -12
- package/{extra → dist/extra}/files.d.ts +5 -5
- package/{extra → dist/extra}/files.js +11 -11
- package/{extra → dist/extra}/generics.d.ts +1 -1
- package/{extra → dist/extra}/inbox.d.ts +1 -1
- package/{extra → dist/extra}/inbox.js +2 -2
- package/{extra → dist/extra}/index.d.ts +7 -7
- package/{extra → dist/extra}/managers.js +1 -1
- package/{extra → dist/extra}/utils.js +9 -9
- package/{index.d.ts → dist/index.d.ts} +3 -2
- package/{index.js → dist/index.js} +4 -1
- package/{service → dist/service}/Connection.js +13 -6
- package/{service → dist/service}/CryptoApi.js +2 -8
- package/{service → dist/service}/EndpointFactory.d.ts +11 -0
- package/{service → dist/service}/EndpointFactory.js +45 -10
- package/{service → dist/service}/EventApi.js +9 -5
- package/dist/service/EventDispatcher.d.ts +15 -0
- package/dist/service/EventDispatcher.js +25 -0
- package/{service → dist/service}/EventQueue.d.ts +4 -4
- package/{service → dist/service}/EventQueue.js +5 -9
- package/{service → dist/service}/ExtKey.d.ts +10 -10
- package/{service → dist/service}/ExtKey.js +10 -10
- package/{service → dist/service}/InboxApi.js +7 -11
- package/{service → dist/service}/KvdbApi.js +12 -7
- package/{service → dist/service}/StoreApi.js +10 -15
- package/dist/service/StreamApi.d.ts +237 -0
- package/dist/service/StreamApi.js +442 -0
- package/{service → dist/service}/ThreadApi.js +6 -7
- package/{service → dist/service}/UserVerifierInterface.d.ts +2 -2
- package/dist/service/UserVerifierInterface.js +2 -0
- package/dist/service/WebRtcInterface.d.ts +58 -0
- package/dist/service/WebRtcInterface.js +8 -0
- package/{service → dist/service}/index.d.ts +3 -2
- package/{service → dist/service}/index.js +5 -3
- package/dist/webStreams/CryptoUtils.d.ts +24 -0
- package/dist/webStreams/CryptoUtils.js +58 -0
- package/dist/webStreams/KeyStore.d.ts +9 -0
- package/dist/webStreams/KeyStore.js +29 -0
- package/dist/webStreams/Logger.d.ts +7 -0
- package/dist/webStreams/Logger.js +25 -0
- package/dist/webStreams/PeerConnectionsManager.d.ts +20 -0
- package/dist/webStreams/PeerConnectionsManager.js +92 -0
- package/dist/webStreams/Queue.d.ts +19 -0
- package/dist/webStreams/Queue.js +70 -0
- package/dist/webStreams/Utils.d.ts +20 -0
- package/dist/webStreams/Utils.js +211 -0
- package/dist/webStreams/WebRtcClient.d.ts +85 -0
- package/dist/webStreams/WebRtcClient.js +437 -0
- package/dist/webStreams/WebRtcClientTypes.d.ts +64 -0
- package/dist/webStreams/WebRtcClientTypes.js +2 -0
- package/dist/webStreams/WebRtcConfig.d.ts +20 -0
- package/dist/webStreams/WebRtcConfig.js +53 -0
- package/dist/webStreams/WebRtcInterfaceImpl.d.ts +28 -0
- package/dist/webStreams/WebRtcInterfaceImpl.js +85 -0
- package/dist/webStreams/WebWorkerHelper copy.d.ts +0 -0
- package/dist/webStreams/WebWorkerHelper copy.js +17 -0
- package/dist/webStreams/WebWorkerHelper.d.ts +18 -0
- package/dist/webStreams/WebWorkerHelper.js +69 -0
- package/dist/webStreams/audio/ActiveSpeakerDetector.d.ts +38 -0
- package/dist/webStreams/audio/ActiveSpeakerDetector.js +64 -0
- package/dist/webStreams/audio/LocalAudioLevelMeter.d.ts +12 -0
- package/dist/webStreams/audio/LocalAudioLevelMeter.js +101 -0
- package/dist/webStreams/types/ApiTypes.d.ts +74 -0
- package/dist/webStreams/types/ApiTypes.js +2 -0
- package/dist/webStreams/types/BaseServerTypes.d.ts +10 -0
- package/dist/webStreams/types/BaseServerTypes.js +2 -0
- package/dist/webStreams/types/MediaServerWebSocketApiTypes.d.ts +255 -0
- package/dist/webStreams/types/MediaServerWebSocketApiTypes.js +2 -0
- package/dist/webStreams/types/SignalingReceiverTypes.d.ts +13 -0
- package/dist/webStreams/types/SignalingReceiverTypes.js +2 -0
- package/dist/webStreams/types/SignalingSenderTypes.d.ts +24 -0
- package/dist/webStreams/types/SignalingSenderTypes.js +2 -0
- package/dist/webStreams/types/StreamsApiTypes.d.ts +144 -0
- package/dist/webStreams/types/StreamsApiTypes.js +2 -0
- package/dist/webStreams/worker/WorkerEvents.d.ts +11 -0
- package/dist/webStreams/worker/WorkerEvents.js +2 -0
- package/dist/webStreams/worker/worker.d.ts +13 -0
- package/dist/webStreams/worker/worker.js +202 -0
- package/package.json +46 -15
- package/assets/endpoint-wasm-module.worker.js +0 -1
- package/assets/privmx-endpoint-web.js +0 -2
- package/bundle/privmx-endpoint-web.js +0 -2
- package/bundle/privmx-endpoint-web.js.LICENSE.txt +0 -10
- /package/{FinalizationHelper.d.ts → dist/FinalizationHelper.d.ts} +0 -0
- /package/{extra/generics.js → dist/ServerTypes.js} +0 -0
- /package/{api → dist/api}/ApiStatic.d.ts +0 -0
- /package/{api → dist/api}/ApiStatic.js +0 -0
- /package/{api → dist/api}/BaseNative.d.ts +0 -0
- /package/{api → dist/api}/BaseNative.js +0 -0
- /package/{api → dist/api}/ConnectionNative.d.ts +0 -0
- /package/{api → dist/api}/CryptoApiNative.d.ts +0 -0
- /package/{api → dist/api}/EventApiNative.d.ts +0 -0
- /package/{api → dist/api}/EventApiNative.js +0 -0
- /package/{api → dist/api}/EventQueueNative.d.ts +0 -0
- /package/{api → dist/api}/EventQueueNative.js +0 -0
- /package/{api → dist/api}/ExtKeyNative.d.ts +0 -0
- /package/{api → dist/api}/ExtKeyNative.js +0 -0
- /package/{api → dist/api}/IdGenerator.d.ts +0 -0
- /package/{api → dist/api}/IdGenerator.js +0 -0
- /package/{api → dist/api}/InboxApiNative.js +0 -0
- /package/{api → dist/api}/KvdbApiNative.js +0 -0
- /package/{api → dist/api}/StoreApiNative.js +0 -0
- /package/{api → dist/api}/ThreadApiNative.js +0 -0
- /package/{bundle.d.ts → dist/bundle.d.ts} +0 -0
- /package/{bundle.js → dist/bundle.js} +0 -0
- /package/{extra → dist/extra}/__mocks__/constants.d.ts +0 -0
- /package/{extra → dist/extra}/__mocks__/constants.js +0 -0
- /package/{extra → dist/extra}/__mocks__/mockContainerSubscriber.d.ts +0 -0
- /package/{extra → dist/extra}/__mocks__/mockContainerSubscriber.js +0 -0
- /package/{extra → dist/extra}/__mocks__/mockEventQueue.d.ts +0 -0
- /package/{extra → dist/extra}/__mocks__/mockEventQueue.js +0 -0
- /package/{extra → dist/extra}/__mocks__/utils.d.ts +0 -0
- /package/{extra → dist/extra}/__mocks__/utils.js +0 -0
- /package/{extra → dist/extra}/__tests__/connectionEventManager.test.d.ts +0 -0
- /package/{extra → dist/extra}/__tests__/customEventManager.test.d.ts +0 -0
- /package/{extra → dist/extra}/__tests__/eventsManager.test.d.ts +0 -0
- /package/{extra → dist/extra}/__tests__/eventsManager.test.js +0 -0
- /package/{extra → dist/extra}/__tests__/inboxEventManager.d.ts +0 -0
- /package/{extra → dist/extra}/__tests__/inboxEventManager.js +0 -0
- /package/{extra → dist/extra}/__tests__/storeEventManager.test.d.ts +0 -0
- /package/{extra → dist/extra}/__tests__/storeEventManager.test.js +0 -0
- /package/{extra → dist/extra}/__tests__/threadEventManager.test.d.ts +0 -0
- /package/{extra → dist/extra}/__tests__/threadEventManager.test.js +0 -0
- /package/{extra → dist/extra}/__tests__/userEventManager.test.d.ts +0 -0
- /package/{extra → dist/extra}/__tests__/utils.test.d.ts +0 -0
- /package/{extra → dist/extra}/events.d.ts +0 -0
- /package/{service/UserVerifierInterface.js → dist/extra/generics.js} +0 -0
- /package/{extra → dist/extra}/index.js +0 -0
- /package/{extra → dist/extra}/managers.d.ts +0 -0
- /package/{extra → dist/extra}/subscriptions.d.ts +0 -0
- /package/{extra → dist/extra}/subscriptions.js +0 -0
- /package/{extra → dist/extra}/utils.d.ts +0 -0
- /package/{service → dist/service}/BaseApi.d.ts +0 -0
- /package/{service → dist/service}/BaseApi.js +0 -0
- /package/{service → dist/service}/Connection.d.ts +0 -0
- /package/{service → dist/service}/CryptoApi.d.ts +0 -0
- /package/{service → dist/service}/EventApi.d.ts +0 -0
- /package/{service → dist/service}/InboxApi.d.ts +0 -0
- /package/{service → dist/service}/KvdbApi.d.ts +0 -0
- /package/{service → dist/service}/StoreApi.d.ts +0 -0
- /package/{service → dist/service}/ThreadApi.d.ts +0 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// const Buffer = require('buffer/').Buffer;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Utils = void 0;
|
|
5
|
+
class Utils {
|
|
6
|
+
static generateNumericId() {
|
|
7
|
+
return Math.round(Math.random() * 1000000000000000);
|
|
8
|
+
}
|
|
9
|
+
static getRandomString(size) {
|
|
10
|
+
return [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join("");
|
|
11
|
+
}
|
|
12
|
+
static async encryptSymmetric(plaintext, key, iv) {
|
|
13
|
+
// encode the text you want to encrypt
|
|
14
|
+
let encodedPlaintext;
|
|
15
|
+
if (typeof plaintext === "string") {
|
|
16
|
+
encodedPlaintext = new TextEncoder().encode(plaintext);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
encodedPlaintext = plaintext;
|
|
20
|
+
}
|
|
21
|
+
// prepare the secret key for encryption
|
|
22
|
+
const secretKey = await crypto.subtle.importKey("raw", Buffer.from(key, "base64"), {
|
|
23
|
+
name: "AES-GCM",
|
|
24
|
+
length: 256,
|
|
25
|
+
}, true, ["encrypt", "decrypt"]);
|
|
26
|
+
// encrypt the text with the secret key
|
|
27
|
+
const ciphertext = await crypto.subtle.encrypt({
|
|
28
|
+
name: "AES-GCM",
|
|
29
|
+
iv: Buffer.from(iv, "base64"),
|
|
30
|
+
}, secretKey, encodedPlaintext);
|
|
31
|
+
// return the encrypted text "ciphertext" and the IV
|
|
32
|
+
// encoded in base64
|
|
33
|
+
return {
|
|
34
|
+
ciphertext: Buffer.from(ciphertext),
|
|
35
|
+
iv: iv,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
static async decryptSymmetricBuffer(ciphertext, iv, key) {
|
|
39
|
+
// prepare the secret key
|
|
40
|
+
const secretKey = await crypto.subtle.importKey("raw", key, {
|
|
41
|
+
name: "AES-GCM",
|
|
42
|
+
length: 256,
|
|
43
|
+
}, true, ["encrypt", "decrypt"]);
|
|
44
|
+
// decrypt the encrypted text "ciphertext" with the secret key and IV
|
|
45
|
+
const cleartext = await crypto.subtle.decrypt({
|
|
46
|
+
name: "AES-GCM",
|
|
47
|
+
iv: iv,
|
|
48
|
+
}, secretKey, ciphertext);
|
|
49
|
+
// decode the text and return it
|
|
50
|
+
return Buffer.from(cleartext);
|
|
51
|
+
}
|
|
52
|
+
static async decryptSymmetric(ciphertext, iv, key) {
|
|
53
|
+
// prepare the secret key
|
|
54
|
+
const secretKey = await crypto.subtle.importKey("raw", Buffer.from(key, "base64"), {
|
|
55
|
+
name: "AES-GCM",
|
|
56
|
+
length: 256,
|
|
57
|
+
}, true, ["encrypt", "decrypt"]);
|
|
58
|
+
// decrypt the encrypted text "ciphertext" with the secret key and IV
|
|
59
|
+
const cleartext = await crypto.subtle.decrypt({
|
|
60
|
+
name: "AES-GCM",
|
|
61
|
+
iv: Buffer.from(iv, "base64"),
|
|
62
|
+
}, secretKey, Buffer.from(ciphertext, "base64"));
|
|
63
|
+
// decode the text and return it
|
|
64
|
+
return new TextDecoder().decode(cleartext);
|
|
65
|
+
}
|
|
66
|
+
static genKey() {
|
|
67
|
+
return Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString("base64");
|
|
68
|
+
}
|
|
69
|
+
static genIv() {
|
|
70
|
+
return Buffer.from(crypto.getRandomValues(new Uint8Array(12))).toString("base64");
|
|
71
|
+
}
|
|
72
|
+
static genIvAsBuffer() {
|
|
73
|
+
return crypto.getRandomValues(new Uint8Array(12));
|
|
74
|
+
}
|
|
75
|
+
static base64abc = [
|
|
76
|
+
"A",
|
|
77
|
+
"B",
|
|
78
|
+
"C",
|
|
79
|
+
"D",
|
|
80
|
+
"E",
|
|
81
|
+
"F",
|
|
82
|
+
"G",
|
|
83
|
+
"H",
|
|
84
|
+
"I",
|
|
85
|
+
"J",
|
|
86
|
+
"K",
|
|
87
|
+
"L",
|
|
88
|
+
"M",
|
|
89
|
+
"N",
|
|
90
|
+
"O",
|
|
91
|
+
"P",
|
|
92
|
+
"Q",
|
|
93
|
+
"R",
|
|
94
|
+
"S",
|
|
95
|
+
"T",
|
|
96
|
+
"U",
|
|
97
|
+
"V",
|
|
98
|
+
"W",
|
|
99
|
+
"X",
|
|
100
|
+
"Y",
|
|
101
|
+
"Z",
|
|
102
|
+
"a",
|
|
103
|
+
"b",
|
|
104
|
+
"c",
|
|
105
|
+
"d",
|
|
106
|
+
"e",
|
|
107
|
+
"f",
|
|
108
|
+
"g",
|
|
109
|
+
"h",
|
|
110
|
+
"i",
|
|
111
|
+
"j",
|
|
112
|
+
"k",
|
|
113
|
+
"l",
|
|
114
|
+
"m",
|
|
115
|
+
"n",
|
|
116
|
+
"o",
|
|
117
|
+
"p",
|
|
118
|
+
"q",
|
|
119
|
+
"r",
|
|
120
|
+
"s",
|
|
121
|
+
"t",
|
|
122
|
+
"u",
|
|
123
|
+
"v",
|
|
124
|
+
"w",
|
|
125
|
+
"x",
|
|
126
|
+
"y",
|
|
127
|
+
"z",
|
|
128
|
+
"0",
|
|
129
|
+
"1",
|
|
130
|
+
"2",
|
|
131
|
+
"3",
|
|
132
|
+
"4",
|
|
133
|
+
"5",
|
|
134
|
+
"6",
|
|
135
|
+
"7",
|
|
136
|
+
"8",
|
|
137
|
+
"9",
|
|
138
|
+
"+",
|
|
139
|
+
"/",
|
|
140
|
+
];
|
|
141
|
+
static base64codes = [
|
|
142
|
+
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
|
143
|
+
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
|
144
|
+
255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59,
|
|
145
|
+
60, 61, 255, 255, 255, 0, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
|
146
|
+
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, 255, 26, 27, 28, 29,
|
|
147
|
+
30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
|
|
148
|
+
];
|
|
149
|
+
static bytesToBase64(bytes) {
|
|
150
|
+
let result = "", i, l = bytes.length;
|
|
151
|
+
for (i = 2; i < l; i += 3) {
|
|
152
|
+
result += Utils.base64abc[bytes[i - 2] >> 2];
|
|
153
|
+
result += Utils.base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];
|
|
154
|
+
result += Utils.base64abc[((bytes[i - 1] & 0x0f) << 2) | (bytes[i] >> 6)];
|
|
155
|
+
result += Utils.base64abc[bytes[i] & 0x3f];
|
|
156
|
+
}
|
|
157
|
+
if (i === l + 1) {
|
|
158
|
+
// 1 octet yet to write
|
|
159
|
+
result += Utils.base64abc[bytes[i - 2] >> 2];
|
|
160
|
+
result += Utils.base64abc[(bytes[i - 2] & 0x03) << 4];
|
|
161
|
+
result += "==";
|
|
162
|
+
}
|
|
163
|
+
if (i === l) {
|
|
164
|
+
// 2 octets yet to write
|
|
165
|
+
result += Utils.base64abc[bytes[i - 2] >> 2];
|
|
166
|
+
result += Utils.base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];
|
|
167
|
+
result += Utils.base64abc[(bytes[i - 1] & 0x0f) << 2];
|
|
168
|
+
result += "=";
|
|
169
|
+
}
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
static isBitOn(byte, index) {
|
|
173
|
+
return Boolean(byte & (1 << index));
|
|
174
|
+
}
|
|
175
|
+
static getBits(data, bitOffset, numBits) {
|
|
176
|
+
const numBits2 = Math.pow(2, numBits) - 1; //this will only work up to 32 bits, of course
|
|
177
|
+
const bytePos = bitOffset / 8;
|
|
178
|
+
const bits = (bitOffset %= 8);
|
|
179
|
+
return (data[bytePos] >> bits) & numBits2;
|
|
180
|
+
}
|
|
181
|
+
// static numToUint8Array(num: number) {
|
|
182
|
+
// let arr = new Uint8Array(8);
|
|
183
|
+
// for (let i = 0; i < 8; i++) {
|
|
184
|
+
// arr[i] = num % 256;
|
|
185
|
+
// num = Math.floor(num / 256);
|
|
186
|
+
// }
|
|
187
|
+
// return arr;
|
|
188
|
+
// }
|
|
189
|
+
// static uint8ArrayToNum(arr: Uint8Array) {
|
|
190
|
+
// let num = 0;
|
|
191
|
+
// for (let i = 7; i >= 0; i--) {
|
|
192
|
+
// num = num * 256 + arr[i];
|
|
193
|
+
// }
|
|
194
|
+
// return num;
|
|
195
|
+
// }
|
|
196
|
+
static numAsOneByteUint(num) {
|
|
197
|
+
if (num > 255) {
|
|
198
|
+
throw new Error("Out of bounds value");
|
|
199
|
+
}
|
|
200
|
+
const arr = new Uint8Array(1);
|
|
201
|
+
arr[0] = num;
|
|
202
|
+
return arr;
|
|
203
|
+
}
|
|
204
|
+
static oneByteUint8AsNum(arr) {
|
|
205
|
+
if (arr[0] > 255) {
|
|
206
|
+
throw new Error("Out of bounds value");
|
|
207
|
+
}
|
|
208
|
+
return arr[0];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.Utils = Utils;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { SessionId } from "./WebRtcClientTypes";
|
|
2
|
+
import { WebWorker } from "./WebWorkerHelper";
|
|
3
|
+
import { Key, TurnCredentials, StreamHandle, RemoteStreamListener } from "../Types";
|
|
4
|
+
import { PeerConnectionManager } from "./PeerConnectionsManager";
|
|
5
|
+
import { StreamId, StreamRoomId } from "./types/ApiTypes";
|
|
6
|
+
import { Jsep } from "../service/WebRtcInterface";
|
|
7
|
+
import { SpeakerState } from "./audio/ActiveSpeakerDetector";
|
|
8
|
+
import { StateChangeDispatcher } from "../service/EventDispatcher";
|
|
9
|
+
export declare class RTCRtpScriptTransform {
|
|
10
|
+
constructor(worker: any, options: any);
|
|
11
|
+
transform: (frame: any, controller: any) => void;
|
|
12
|
+
}
|
|
13
|
+
export interface StreamsCallbackInterface {
|
|
14
|
+
trickle(sessionId: SessionId, candidate: RTCIceCandidate): Promise<void>;
|
|
15
|
+
acceptOffer(sessionId: SessionId, sdp: Jsep): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface UserAudioStats {
|
|
18
|
+
streamId: number;
|
|
19
|
+
rms: number;
|
|
20
|
+
active: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface WebRtcStateEvents {
|
|
23
|
+
connected: {
|
|
24
|
+
streamId: StreamId;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface AudioLevelsStats {
|
|
28
|
+
levels: SpeakerState[];
|
|
29
|
+
}
|
|
30
|
+
type AudioLevelFuncCallback = (changes: AudioLevelsStats) => void;
|
|
31
|
+
export declare class WebRtcClient {
|
|
32
|
+
private assetsDir;
|
|
33
|
+
uniqId: string;
|
|
34
|
+
private e2eeWorker;
|
|
35
|
+
private webWorkerApi;
|
|
36
|
+
private dataChannels;
|
|
37
|
+
private configuration;
|
|
38
|
+
private keyStore;
|
|
39
|
+
private publishStreamHandle;
|
|
40
|
+
private peerCredentials;
|
|
41
|
+
private remoteStreamsListeners;
|
|
42
|
+
private peerConnectionsManager;
|
|
43
|
+
private streamsApiInterface;
|
|
44
|
+
private activeSpeakerDetector;
|
|
45
|
+
private audioLevelCallback;
|
|
46
|
+
private encByReceiver;
|
|
47
|
+
private logger;
|
|
48
|
+
private peerConnectionReconfigureQueue;
|
|
49
|
+
lastProcessedAnswer: {
|
|
50
|
+
[roomId: string]: Jsep;
|
|
51
|
+
};
|
|
52
|
+
private lastMeasuredLocalRMS;
|
|
53
|
+
private eventsDispatcher;
|
|
54
|
+
private localAudioLevelMeters;
|
|
55
|
+
constructor(assetsDir: string);
|
|
56
|
+
private ensureLocalAudioLevelMeter;
|
|
57
|
+
private stopLocalAudioLevelMeter;
|
|
58
|
+
setAudioLevelCallback(func: AudioLevelFuncCallback): void;
|
|
59
|
+
bindApiInterface(streamsApiInterface: StreamsCallbackInterface): void;
|
|
60
|
+
addRemoteStreamListener(listener: RemoteStreamListener): void;
|
|
61
|
+
getStreamStateChangeDispatcher(): StateChangeDispatcher;
|
|
62
|
+
getConnectionManager(): PeerConnectionManager;
|
|
63
|
+
getWebRtcEventDispatcher(): StateChangeDispatcher;
|
|
64
|
+
protected getEncKey(): Key;
|
|
65
|
+
protected getWorker(): Promise<Worker>;
|
|
66
|
+
protected initPipeline(receiverTrackId: string, publisherId: number): Promise<void>;
|
|
67
|
+
protected getWorkerApi(): Promise<WebWorker>;
|
|
68
|
+
protected getPeerConnectionConfiguration(): RTCConfiguration;
|
|
69
|
+
setTurnCredentials(turnCredentials: TurnCredentials[]): Promise<void>;
|
|
70
|
+
createPeerConnectionWithLocalStream(streamHandle: StreamHandle, streamRoomId: StreamRoomId, stream: MediaStream): Promise<RTCPeerConnection>;
|
|
71
|
+
removeSenderPeerConnectionOnUnpublish(streamRoomId: StreamRoomId, stream: MediaStream): void;
|
|
72
|
+
updatePeerConnectionWithLocalStream(streamRoomId: StreamRoomId, localStream: MediaStream, tracksToAdd: MediaStreamTrack[], tracksToRemove: MediaStreamTrack[]): Promise<RTCPeerConnection>;
|
|
73
|
+
private createPeerConnectionMultiForRoom;
|
|
74
|
+
updateKeys(_streamRoomId: StreamRoomId, keys: Key[]): Promise<void>;
|
|
75
|
+
private setupSenderTransform;
|
|
76
|
+
private setupReceiverTransform;
|
|
77
|
+
private waitUntilConnected;
|
|
78
|
+
private teardownReceiver;
|
|
79
|
+
private addRemoteTrack;
|
|
80
|
+
private callRegisteredListeners;
|
|
81
|
+
onSubscriptionUpdated(_room: StreamRoomId, offer: any): Promise<void>;
|
|
82
|
+
onSubscriptionUpdatedSingle(_room: StreamRoomId, offer: any): Promise<Jsep>;
|
|
83
|
+
private reconfigureSingle;
|
|
84
|
+
}
|
|
85
|
+
export {};
|