@signalapp/ringrtc 2.65.2 → 2.66.0

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.
@@ -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.65.2, protobuf 2.65.2, ringrtc 2.65.2, regex-aot 0.1.0, partial-default-derive 0.1.0, partial-default 0.1.0
672
+ ## libsignal-account-keys 0.1.0, libsignal-core 0.1.0, mrp 2.66.0, protobuf 2.66.0, ringrtc 2.66.0, 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.5, hax-lib 0.3.5, libcrux-intrinsics 0.0.4, libcrux-platform 0.0.2, libcrux-secrets 0.0.4, libcrux-sha3 0.0.4, libcrux-traits 0.0.4
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
@@ -2681,7 +2681,7 @@ DEALINGS IN THE SOFTWARE.
2681
2681
 
2682
2682
  ```
2683
2683
 
2684
- ## bytes 1.11.0
2684
+ ## bytes 1.11.1
2685
2685
 
2686
2686
  ```
2687
2687
  Copyright (c) 2018 Carl Lerche
@@ -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.4.0, hpke-rs 0.5.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;
@@ -643,8 +649,9 @@ export declare enum RingCancelReason {
643
649
  export interface CallManager {
644
650
  setConfig(config: Config): void;
645
651
  setSelfUuid(uuid: Uint8Array): void;
652
+ addAsset(assetGroup: string, filePath: string | null, content: Uint8Array | null): void;
646
653
  createOutgoingCall(remoteUserId: UserId, isVideoCall: boolean, localDeviceId: DeviceId): CallId;
647
- proceed(callId: CallId, iceServers: Array<IceServer>, hideIp: boolean, dataMode: DataMode, audioLevelsIntervalMillis: number): void;
654
+ proceed(callId: CallId, iceServers: Array<IceServer>, hideIp: boolean, dataMode: DataMode, audioLevelsIntervalMillis: number, dredDuration: number): void;
648
655
  accept(callId: CallId): void;
649
656
  ignore(callId: CallId): void;
650
657
  hangup(): void;
@@ -666,8 +673,8 @@ export interface CallManager {
666
673
  receivedCallMessage(remoteUserId: Uint8Array, remoteDeviceId: DeviceId, localDeviceId: DeviceId, data: Uint8Array, messageAgeSec: number): void;
667
674
  receivedHttpResponse(requestId: number, status: number, body: Uint8Array): void;
668
675
  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;
676
+ createGroupCallClient(groupId: GroupId, sfuUrl: string, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number, dredDuration: number): GroupCallClientId;
677
+ createCallLinkCallClient(sfuUrl: string, endorsementPublicKey: Uint8Array, authCredentialPresentation: Uint8Array, linkRootKey: Uint8Array, adminPasskey: Uint8Array | undefined, hkdfExtraInfo: Uint8Array, audioLevelsIntervalMillis: number, dredDuration: number): GroupCallClientId;
671
678
  deleteGroupCallClient(clientId: GroupCallClientId): void;
672
679
  connect(clientId: GroupCallClientId): void;
673
680
  join(clientId: GroupCallClientId): void;
@@ -38,6 +38,7 @@ class NativeCallManager {
38
38
  'RingRTC-PruneTurnPorts': 'Enabled',
39
39
  'WebRTC-Bwe-ProbingConfiguration': 'skip_if_est_larger_than_fraction_of_max:0.99',
40
40
  'WebRTC-IncreaseIceCandidatePriorityHostSrflx': 'Enabled',
41
+ 'WebRTC-Audio-OpusGeneratePlc': 'Enabled',
41
42
  }, config.field_trials);
42
43
  /* eslint-disable prefer-template */
43
44
  const fieldTrialsString = Object.entries(fieldTrials)
@@ -61,6 +62,7 @@ class NativeCallManager {
61
62
  // Mirror methods onto NativeCallManager.
62
63
  // This is done through direct assignment rather than wrapper methods to avoid indirection.
63
64
  NativeCallManager.prototype.setSelfUuid = Native_1.default.cm_setSelfUuid;
65
+ NativeCallManager.prototype.addAsset = Native_1.default.cm_addAsset;
64
66
  NativeCallManager.prototype.createOutgoingCall =
65
67
  Native_1.default.cm_createOutgoingCall;
66
68
  NativeCallManager.prototype.proceed = Native_1.default.cm_proceed;
@@ -301,6 +303,12 @@ class RingRTCType {
301
303
  this.callManager.setSelfUuid(uuid);
302
304
  }
303
305
  // Called by UX
306
+ addAsset(assetGroup, asset) {
307
+ const filePath = 'filePath' in asset ? asset.filePath : null;
308
+ const content = 'content' in asset ? asset.content : null;
309
+ this.callManager.addAsset(assetGroup, filePath, content);
310
+ }
311
+ // Called by UX
304
312
  startOutgoingCall(remoteUserId, isVideoCall, localDeviceId) {
305
313
  const callId = this.callManager.createOutgoingCall(remoteUserId, isVideoCall, localDeviceId);
306
314
  const isIncoming = false;
@@ -393,7 +401,7 @@ class RingRTCType {
393
401
  }
394
402
  proceed(callId, settings) {
395
403
  sillyDeadlockProtection(() => {
396
- this.callManager.proceed(callId, settings.iceServers, settings.hideIp, settings.dataMode, settings.audioLevelsIntervalMillis || 0);
404
+ this.callManager.proceed(callId, settings.iceServers, settings.hideIp, settings.dataMode, settings.audioLevelsIntervalMillis || 0, settings.dredDuration ?? 0);
397
405
  });
398
406
  }
399
407
  // Called by Rust
@@ -726,8 +734,8 @@ class RingRTCType {
726
734
  }
727
735
  // Group Calls
728
736
  // Called by UX
729
- getGroupCall(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis, observer) {
730
- const clientId = this.callManager.createGroupCallClient(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis || 0);
737
+ getGroupCall(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis, dredDuration, observer) {
738
+ const clientId = this.callManager.createGroupCallClient(groupId, sfuUrl, hkdfExtraInfo, audioLevelsIntervalMillis ?? 0, dredDuration ?? 0);
731
739
  if (clientId === INVALID_CLIENT_ID) {
732
740
  // Return undefined since the group call client creation failed.
733
741
  return undefined;
@@ -737,8 +745,8 @@ class RingRTCType {
737
745
  return groupCall;
738
746
  }
739
747
  // 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);
748
+ getCallLinkCall(sfuUrl, endorsementPublicKey, authCredentialPresentation, rootKey, adminPasskey, hkdfExtraInfo, audioLevelsIntervalMillis, dredDuration, observer) {
749
+ const clientId = this.callManager.createCallLinkCallClient(sfuUrl, endorsementPublicKey, authCredentialPresentation, rootKey.bytes, adminPasskey, hkdfExtraInfo, audioLevelsIntervalMillis || 0, dredDuration ?? 0);
742
750
  if (clientId === INVALID_CLIENT_ID) {
743
751
  // Return undefined since the call link client creation failed.
744
752
  return undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalapp/ringrtc",
3
- "version": "2.65.2",
3
+ "version": "2.66.0",
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": "ed7d5ac7ac3ff72000870d35b9037f84e20c6a4e6fab6642452bcd4abe569807"
36
+ "prebuildChecksum": "b2302bbb458747a5475bca520b0e0c6bcb7ed487b2370dea9e6ed4bc541c0984"
37
37
  },
38
38
  "author": "",
39
39
  "license": "AGPL-3.0-only",
@@ -58,9 +58,9 @@
58
58
  "eslint-plugin-import": "2.29.0",
59
59
  "eslint-plugin-mocha": "10.2.0",
60
60
  "eslint-plugin-more": "1.0.5",
61
- "lodash": "4.17.21",
61
+ "lodash": "4.17.23",
62
62
  "long": "5.3.2",
63
- "mocha": "11.7.5",
63
+ "mocha": "11.3.0",
64
64
  "prettier": "3.7.4",
65
65
  "rimraf": "6.1.2",
66
66
  "sinon": "^21.0.1",