@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.
@@ -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.3, protobuf 2.65.3, ringrtc 2.65.3, 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.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.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
@@ -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;
@@ -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;
@@ -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
- // CallId is u64 so use a string key instead.
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 || 0);
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.65.3",
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": "d066c324246a916c829bededc803a0f5c0274f5e496710d991de644cda706876"
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",