@signalapp/ringrtc 2.65.3 → 2.66.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/dist/acknowledgments.md +35 -3
- package/dist/ringrtc/Service.d.ts +13 -10
- package/dist/ringrtc/Service.js +16 -18
- package/package.json +2 -3
package/dist/acknowledgments.md
CHANGED
|
@@ -669,7 +669,7 @@ For more information on this, and how to apply and follow the GNU AGPL, see
|
|
|
669
669
|
|
|
670
670
|
```
|
|
671
671
|
|
|
672
|
-
## libsignal-account-keys 0.1.0, libsignal-core 0.1.0, mrp 2.
|
|
672
|
+
## libsignal-account-keys 0.1.0, libsignal-core 0.1.0, mrp 2.66.1, protobuf 2.66.1, ringrtc 2.66.1, regex-aot 0.1.0, partial-default-derive 0.1.0, partial-default 0.1.0
|
|
673
673
|
|
|
674
674
|
```
|
|
675
675
|
GNU AFFERO GENERAL PUBLIC LICENSE
|
|
@@ -1531,7 +1531,7 @@ limitations under the License.
|
|
|
1531
1531
|
|
|
1532
1532
|
```
|
|
1533
1533
|
|
|
1534
|
-
## hax-lib-macros 0.3.
|
|
1534
|
+
## hax-lib-macros 0.3.6, hax-lib 0.3.6, libcrux-intrinsics 0.0.5, libcrux-platform 0.0.3, libcrux-secrets 0.0.5, libcrux-sha3 0.0.6, libcrux-traits 0.0.5
|
|
1535
1535
|
|
|
1536
1536
|
```
|
|
1537
1537
|
Apache License
|
|
@@ -2869,6 +2869,38 @@ DEALINGS IN THE SOFTWARE.
|
|
|
2869
2869
|
|
|
2870
2870
|
```
|
|
2871
2871
|
|
|
2872
|
+
## hex-literal 1.1.0
|
|
2873
|
+
|
|
2874
|
+
```
|
|
2875
|
+
Copyright (c) 2018-2025 The RustCrypto Project Developers
|
|
2876
|
+
Copyright (c) 2018 Artyom Pavlov
|
|
2877
|
+
|
|
2878
|
+
Permission is hereby granted, free of charge, to any
|
|
2879
|
+
person obtaining a copy of this software and associated
|
|
2880
|
+
documentation files (the "Software"), to deal in the
|
|
2881
|
+
Software without restriction, including without
|
|
2882
|
+
limitation the rights to use, copy, modify, merge,
|
|
2883
|
+
publish, distribute, sublicense, and/or sell copies of
|
|
2884
|
+
the Software, and to permit persons to whom the Software
|
|
2885
|
+
is furnished to do so, subject to the following
|
|
2886
|
+
conditions:
|
|
2887
|
+
|
|
2888
|
+
The above copyright notice and this permission notice
|
|
2889
|
+
shall be included in all copies or substantial portions
|
|
2890
|
+
of the Software.
|
|
2891
|
+
|
|
2892
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
|
2893
|
+
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
|
2894
|
+
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
2895
|
+
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
|
2896
|
+
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
2897
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
2898
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
|
2899
|
+
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
2900
|
+
DEALINGS IN THE SOFTWARE.
|
|
2901
|
+
|
|
2902
|
+
```
|
|
2903
|
+
|
|
2872
2904
|
## getrandom 0.3.4
|
|
2873
2905
|
|
|
2874
2906
|
```
|
|
@@ -4109,7 +4141,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
4109
4141
|
SOFTWARE.
|
|
4110
4142
|
```
|
|
4111
4143
|
|
|
4112
|
-
## hpke-rs-crypto 0.
|
|
4144
|
+
## hpke-rs-crypto 0.6.0, hpke-rs 0.6.0
|
|
4113
4145
|
|
|
4114
4146
|
```
|
|
4115
4147
|
Mozilla Public License Version 2.0
|
|
@@ -114,6 +114,11 @@ export declare class RingRTCType {
|
|
|
114
114
|
constructor();
|
|
115
115
|
setConfig(config: Config): void;
|
|
116
116
|
setSelfUuid(uuid: Uint8Array): void;
|
|
117
|
+
addAsset(assetGroup: string, asset: {
|
|
118
|
+
filePath: string;
|
|
119
|
+
} | {
|
|
120
|
+
content: Uint8Array;
|
|
121
|
+
}): void;
|
|
117
122
|
startOutgoingCall(remoteUserId: UserId, isVideoCall: boolean, localDeviceId: DeviceId): Call;
|
|
118
123
|
cancelGroupRing(groupId: GroupId, ringId: bigint, reason: RingCancelReason | null): void;
|
|
119
124
|
onStartOutgoingCall(remoteUserId: UserId, callId: CallId): void;
|
|
@@ -233,8 +238,8 @@ export declare class RingRTCType {
|
|
|
233
238
|
deleteCallLink(sfuUrl: string, authCredentialPresentation: Uint8Array, linkRootKey: CallLinkRootKey, adminPasskey: Uint8Array): Promise<HttpResult<undefined>>;
|
|
234
239
|
receivedHttpResponse(requestId: number, status: number, body: Uint8Array): void;
|
|
235
240
|
httpRequestFailed(requestId: number, debugInfo: string | undefined): void;
|
|
236
|
-
getGroupCall(groupId: GroupId, sfuUrl: string, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number | undefined, observer: GroupCallObserver): GroupCall | undefined;
|
|
237
|
-
getCallLinkCall(sfuUrl: string, endorsementPublicKey: Uint8Array, authCredentialPresentation: Uint8Array, rootKey: CallLinkRootKey, adminPasskey: Uint8Array | undefined, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number | undefined, observer: GroupCallObserver): GroupCall | undefined;
|
|
241
|
+
getGroupCall(groupId: GroupId, sfuUrl: string, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number | undefined, dredDuration: number | undefined, observer: GroupCallObserver): GroupCall | undefined;
|
|
242
|
+
getCallLinkCall(sfuUrl: string, endorsementPublicKey: Uint8Array, authCredentialPresentation: Uint8Array, rootKey: CallLinkRootKey, adminPasskey: Uint8Array | undefined, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number | undefined, dredDuration: number | undefined, observer: GroupCallObserver): GroupCall | undefined;
|
|
238
243
|
peekGroupCall(sfuUrl: string, membershipProof: Uint8Array, groupMembers: Array<GroupMemberInfo>): Promise<PeekInfo>;
|
|
239
244
|
setMicrophoneWarmupEnabled(warmup: boolean): void;
|
|
240
245
|
peekCallLinkCall(sfuUrl: string, authCredentialPresentation: Uint8Array, rootKey: CallLinkRootKey): Promise<HttpResult<PeekInfo>>;
|
|
@@ -300,6 +305,7 @@ export interface CallSettings {
|
|
|
300
305
|
hideIp: boolean;
|
|
301
306
|
dataMode: DataMode;
|
|
302
307
|
audioLevelsIntervalMillis?: number;
|
|
308
|
+
dredDuration?: number;
|
|
303
309
|
}
|
|
304
310
|
interface IceServer {
|
|
305
311
|
username?: string;
|
|
@@ -578,11 +584,7 @@ declare class GroupCallVideoFrameSource {
|
|
|
578
584
|
}
|
|
579
585
|
export type UserId = string;
|
|
580
586
|
export type DeviceId = number;
|
|
581
|
-
export type CallId =
|
|
582
|
-
high: number;
|
|
583
|
-
low: number;
|
|
584
|
-
unsigned: boolean;
|
|
585
|
-
};
|
|
587
|
+
export type CallId = bigint;
|
|
586
588
|
export declare class CallingMessage {
|
|
587
589
|
offer?: OfferMessage;
|
|
588
590
|
answer?: AnswerMessage;
|
|
@@ -643,8 +645,9 @@ export declare enum RingCancelReason {
|
|
|
643
645
|
export interface CallManager {
|
|
644
646
|
setConfig(config: Config): void;
|
|
645
647
|
setSelfUuid(uuid: Uint8Array): void;
|
|
648
|
+
addAsset(assetGroup: string, filePath: string | null, content: Uint8Array | null): void;
|
|
646
649
|
createOutgoingCall(remoteUserId: UserId, isVideoCall: boolean, localDeviceId: DeviceId): CallId;
|
|
647
|
-
proceed(callId: CallId, iceServers: Array<IceServer>, hideIp: boolean, dataMode: DataMode, audioLevelsIntervalMillis: number): void;
|
|
650
|
+
proceed(callId: CallId, iceServers: Array<IceServer>, hideIp: boolean, dataMode: DataMode, audioLevelsIntervalMillis: number, dredDuration: number): void;
|
|
648
651
|
accept(callId: CallId): void;
|
|
649
652
|
ignore(callId: CallId): void;
|
|
650
653
|
hangup(): void;
|
|
@@ -666,8 +669,8 @@ export interface CallManager {
|
|
|
666
669
|
receivedCallMessage(remoteUserId: Uint8Array, remoteDeviceId: DeviceId, localDeviceId: DeviceId, data: Uint8Array, messageAgeSec: number): void;
|
|
667
670
|
receivedHttpResponse(requestId: number, status: number, body: Uint8Array): void;
|
|
668
671
|
httpRequestFailed(requestId: number, debugInfo: string | undefined): void;
|
|
669
|
-
createGroupCallClient(groupId: GroupId, sfuUrl: string, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number): GroupCallClientId;
|
|
670
|
-
createCallLinkCallClient(sfuUrl: string, endorsementPublicKey: Uint8Array, authCredentialPresentation: Uint8Array, linkRootKey: Uint8Array, adminPasskey: Uint8Array | undefined, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number): GroupCallClientId;
|
|
672
|
+
createGroupCallClient(groupId: GroupId, sfuUrl: string, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number, dredDuration: number): GroupCallClientId;
|
|
673
|
+
createCallLinkCallClient(sfuUrl: string, endorsementPublicKey: Uint8Array, authCredentialPresentation: Uint8Array, linkRootKey: Uint8Array, adminPasskey: Uint8Array | undefined, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number, dredDuration: number): GroupCallClientId;
|
|
671
674
|
deleteGroupCallClient(clientId: GroupCallClientId): void;
|
|
672
675
|
connect(clientId: GroupCallClientId): void;
|
|
673
676
|
join(clientId: GroupCallClientId): void;
|
package/dist/ringrtc/Service.js
CHANGED
|
@@ -16,11 +16,7 @@ const Native_1 = __importDefault(require("./Native"));
|
|
|
16
16
|
const INVALID_CLIENT_ID = 0;
|
|
17
17
|
exports.callIdFromEra = Native_1.default.callIdFromEra;
|
|
18
18
|
function callIdFromRingId(ringId) {
|
|
19
|
-
return
|
|
20
|
-
low: Number(BigInt.asIntN(32, ringId)),
|
|
21
|
-
high: Number(BigInt.asIntN(32, ringId >> BigInt(32))),
|
|
22
|
-
unsigned: true,
|
|
23
|
-
};
|
|
19
|
+
return ringId;
|
|
24
20
|
}
|
|
25
21
|
class Config {
|
|
26
22
|
}
|
|
@@ -38,6 +34,7 @@ class NativeCallManager {
|
|
|
38
34
|
'RingRTC-PruneTurnPorts': 'Enabled',
|
|
39
35
|
'WebRTC-Bwe-ProbingConfiguration': 'skip_if_est_larger_than_fraction_of_max:0.99',
|
|
40
36
|
'WebRTC-IncreaseIceCandidatePriorityHostSrflx': 'Enabled',
|
|
37
|
+
'WebRTC-Audio-OpusGeneratePlc': 'Enabled',
|
|
41
38
|
}, config.field_trials);
|
|
42
39
|
/* eslint-disable prefer-template */
|
|
43
40
|
const fieldTrialsString = Object.entries(fieldTrials)
|
|
@@ -61,6 +58,7 @@ class NativeCallManager {
|
|
|
61
58
|
// Mirror methods onto NativeCallManager.
|
|
62
59
|
// This is done through direct assignment rather than wrapper methods to avoid indirection.
|
|
63
60
|
NativeCallManager.prototype.setSelfUuid = Native_1.default.cm_setSelfUuid;
|
|
61
|
+
NativeCallManager.prototype.addAsset = Native_1.default.cm_addAsset;
|
|
64
62
|
NativeCallManager.prototype.createOutgoingCall =
|
|
65
63
|
Native_1.default.cm_createOutgoingCall;
|
|
66
64
|
NativeCallManager.prototype.proceed = Native_1.default.cm_proceed;
|
|
@@ -264,11 +262,7 @@ class CallInfo {
|
|
|
264
262
|
}
|
|
265
263
|
class RingRTCType {
|
|
266
264
|
getCallInfoKey(callId) {
|
|
267
|
-
|
|
268
|
-
// Note that the representation is not padded, so we include a separator.
|
|
269
|
-
// Otherwise {1, 123} and {11, 23} would have the same key.
|
|
270
|
-
// (We could use Long.toString as well, but it doesn't matter what the key is.)
|
|
271
|
-
return `${callId.high} ${callId.low}`;
|
|
265
|
+
return callId.toString();
|
|
272
266
|
}
|
|
273
267
|
constructor() {
|
|
274
268
|
// Set by UX
|
|
@@ -301,6 +295,12 @@ class RingRTCType {
|
|
|
301
295
|
this.callManager.setSelfUuid(uuid);
|
|
302
296
|
}
|
|
303
297
|
// Called by UX
|
|
298
|
+
addAsset(assetGroup, asset) {
|
|
299
|
+
const filePath = 'filePath' in asset ? asset.filePath : null;
|
|
300
|
+
const content = 'content' in asset ? asset.content : null;
|
|
301
|
+
this.callManager.addAsset(assetGroup, filePath, content);
|
|
302
|
+
}
|
|
303
|
+
// Called by UX
|
|
304
304
|
startOutgoingCall(remoteUserId, isVideoCall, localDeviceId) {
|
|
305
305
|
const callId = this.callManager.createOutgoingCall(remoteUserId, isVideoCall, localDeviceId);
|
|
306
306
|
const isIncoming = false;
|
|
@@ -393,7 +393,7 @@ class RingRTCType {
|
|
|
393
393
|
}
|
|
394
394
|
proceed(callId, settings) {
|
|
395
395
|
sillyDeadlockProtection(() => {
|
|
396
|
-
this.callManager.proceed(callId, settings.iceServers, settings.hideIp, settings.dataMode, settings.audioLevelsIntervalMillis || 0);
|
|
396
|
+
this.callManager.proceed(callId, settings.iceServers, settings.hideIp, settings.dataMode, settings.audioLevelsIntervalMillis || 0, settings.dredDuration ?? 0);
|
|
397
397
|
});
|
|
398
398
|
}
|
|
399
399
|
// Called by Rust
|
|
@@ -726,8 +726,8 @@ class RingRTCType {
|
|
|
726
726
|
}
|
|
727
727
|
// Group Calls
|
|
728
728
|
// Called by UX
|
|
729
|
-
getGroupCall(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis, observer) {
|
|
730
|
-
const clientId = this.callManager.createGroupCallClient(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis
|
|
729
|
+
getGroupCall(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis, dredDuration, observer) {
|
|
730
|
+
const clientId = this.callManager.createGroupCallClient(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis ?? 0, dredDuration ?? 0);
|
|
731
731
|
if (clientId === INVALID_CLIENT_ID) {
|
|
732
732
|
// Return undefined since the group call client creation failed.
|
|
733
733
|
return undefined;
|
|
@@ -737,8 +737,8 @@ class RingRTCType {
|
|
|
737
737
|
return groupCall;
|
|
738
738
|
}
|
|
739
739
|
// Called by UX
|
|
740
|
-
getCallLinkCall(sfuUrl, endorsementPublicKey, authCredentialPresentation, rootKey, adminPasskey, hkdfExtraInfo, audioLevelsIntervalMillis, observer) {
|
|
741
|
-
const clientId = this.callManager.createCallLinkCallClient(sfuUrl, endorsementPublicKey, authCredentialPresentation, rootKey.bytes, adminPasskey, hkdfExtraInfo, audioLevelsIntervalMillis || 0);
|
|
740
|
+
getCallLinkCall(sfuUrl, endorsementPublicKey, authCredentialPresentation, rootKey, adminPasskey, hkdfExtraInfo, audioLevelsIntervalMillis, dredDuration, observer) {
|
|
741
|
+
const clientId = this.callManager.createCallLinkCallClient(sfuUrl, endorsementPublicKey, authCredentialPresentation, rootKey.bytes, adminPasskey, hkdfExtraInfo, audioLevelsIntervalMillis || 0, dredDuration ?? 0);
|
|
742
742
|
if (clientId === INVALID_CLIENT_ID) {
|
|
743
743
|
// Return undefined since the call link client creation failed.
|
|
744
744
|
return undefined;
|
|
@@ -1163,9 +1163,7 @@ class RingRTCType {
|
|
|
1163
1163
|
}
|
|
1164
1164
|
getCall(callId) {
|
|
1165
1165
|
const call = this.call;
|
|
1166
|
-
if (call &&
|
|
1167
|
-
call.callId.high === callId.high &&
|
|
1168
|
-
call.callId.low === callId.low) {
|
|
1166
|
+
if (call && call.callId === callId) {
|
|
1169
1167
|
return call;
|
|
1170
1168
|
}
|
|
1171
1169
|
return null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signalapp/ringrtc",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.66.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/signalapp/ringrtc.git",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
},
|
|
34
34
|
"config": {
|
|
35
35
|
"prebuildUrl": "https://build-artifacts.signal.org/libraries/ringrtc-desktop-build-v${npm_package_version}.tar.gz",
|
|
36
|
-
"prebuildChecksum": "
|
|
36
|
+
"prebuildChecksum": "3964881a5e84cf42c2de3cbda797bdf020cf2a7ef7f456e90d67cdca9996267a"
|
|
37
37
|
},
|
|
38
38
|
"author": "",
|
|
39
39
|
"license": "AGPL-3.0-only",
|
|
@@ -59,7 +59,6 @@
|
|
|
59
59
|
"eslint-plugin-mocha": "10.2.0",
|
|
60
60
|
"eslint-plugin-more": "1.0.5",
|
|
61
61
|
"lodash": "4.17.23",
|
|
62
|
-
"long": "5.3.2",
|
|
63
62
|
"mocha": "11.3.0",
|
|
64
63
|
"prettier": "3.7.4",
|
|
65
64
|
"rimraf": "6.1.2",
|