@signalapp/libsignal-client 0.33.0 → 0.35.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.
- package/Native.d.ts +19 -1
- package/dist/Address.js +1 -1
- package/dist/Errors.d.ts +6 -1
- package/dist/Errors.js +1 -0
- package/dist/Mp4Sanitizer.js +3 -14
- package/dist/index.d.ts +1 -0
- package/dist/index.js +87 -147
- package/dist/net.d.ts +29 -0
- package/dist/net.js +34 -0
- package/dist/usernames.d.ts +1 -1
- package/dist/usernames.js +2 -2
- package/dist/zkgroup/internal/BigIntUtil.js +1 -1
- package/package.json +4 -3
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/prebuilds/win32-arm64/node.napi.node +0 -0
- package/prebuilds/win32-x64/node.napi.node +0 -0
package/Native.d.ts
CHANGED
|
@@ -11,6 +11,13 @@ type Uuid = Buffer;
|
|
|
11
11
|
/// what's important is that it's an integer less than Number.MAX_SAFE_INTEGER.
|
|
12
12
|
type Timestamp = number;
|
|
13
13
|
|
|
14
|
+
type LookupResponse = Map<string, LookupResponseEntry>;
|
|
15
|
+
|
|
16
|
+
interface LookupResponseEntry {
|
|
17
|
+
readonly aci: string | undefined;
|
|
18
|
+
readonly pni: string | undefined;
|
|
19
|
+
}
|
|
20
|
+
|
|
14
21
|
export abstract class IdentityKeyStore {
|
|
15
22
|
_getIdentityKey(): Promise<PrivateKey>;
|
|
16
23
|
_getLocalRegistrationId(): Promise<number>;
|
|
@@ -101,9 +108,11 @@ export function CallLinkSecretParams_DecryptUserId(paramsBytes: Buffer, userId:
|
|
|
101
108
|
export function CallLinkSecretParams_DeriveFromRootKey(rootKey: Buffer): Buffer;
|
|
102
109
|
export function CallLinkSecretParams_GetPublicParams(paramsBytes: Buffer): Buffer;
|
|
103
110
|
export function Cds2ClientState_New(mrenclave: Buffer, attestationMsg: Buffer, currentTimestamp: Timestamp): SgxClientState;
|
|
111
|
+
export function CdsiLookup(asyncRuntime: Wrapper<TokioAsyncContext>, connectionManager: Wrapper<ConnectionManager>, username: string, password: string, request: Wrapper<LookupRequest>, timeoutMillis: number): Promise<LookupResponse>;
|
|
104
112
|
export function CiphertextMessage_FromPlaintextContent(m: Wrapper<PlaintextContent>): CiphertextMessage;
|
|
105
113
|
export function CiphertextMessage_Serialize(obj: Wrapper<CiphertextMessage>): Buffer;
|
|
106
114
|
export function CiphertextMessage_Type(msg: Wrapper<CiphertextMessage>): number;
|
|
115
|
+
export function ConnectionManager_new(environment: number): ConnectionManager;
|
|
107
116
|
export function CreateCallLinkCredentialPresentation_CheckValidContents(presentationBytes: Buffer): void;
|
|
108
117
|
export function CreateCallLinkCredentialPresentation_Verify(presentationBytes: Buffer, roomId: Buffer, now: Timestamp, serverParamsBytes: Buffer, callLinkParamsBytes: Buffer): void;
|
|
109
118
|
export function CreateCallLinkCredentialRequestContext_CheckValidContents(contextBytes: Buffer): void;
|
|
@@ -179,6 +188,10 @@ export function KyberPublicKey_Equals(lhs: Wrapper<KyberPublicKey>, rhs: Wrapper
|
|
|
179
188
|
export function KyberPublicKey_Serialize(obj: Wrapper<KyberPublicKey>): Buffer;
|
|
180
189
|
export function KyberSecretKey_Deserialize(data: Buffer): KyberSecretKey;
|
|
181
190
|
export function KyberSecretKey_Serialize(obj: Wrapper<KyberSecretKey>): Buffer;
|
|
191
|
+
export function LookupRequest_addAciAndAccessKey(request: Wrapper<LookupRequest>, aci: Buffer, accessKey: Buffer): void;
|
|
192
|
+
export function LookupRequest_addE164(request: Wrapper<LookupRequest>, e164: string): void;
|
|
193
|
+
export function LookupRequest_new(): LookupRequest;
|
|
194
|
+
export function LookupRequest_setReturnAcisWithoutUaks(request: Wrapper<LookupRequest>, returnAcisWithoutUaks: boolean): void;
|
|
182
195
|
export function Mp4Sanitizer_Sanitize(input: InputStream, len: Buffer): Promise<SanitizedMetadata>;
|
|
183
196
|
export function PlaintextContent_Deserialize(data: Buffer): PlaintextContent;
|
|
184
197
|
export function PlaintextContent_FromDecryptionErrorMessage(m: Wrapper<DecryptionErrorMessage>): PlaintextContent;
|
|
@@ -359,6 +372,7 @@ export function SignedPreKeyRecord_GetSignature(obj: Wrapper<SignedPreKeyRecord>
|
|
|
359
372
|
export function SignedPreKeyRecord_GetTimestamp(obj: Wrapper<SignedPreKeyRecord>): Timestamp;
|
|
360
373
|
export function SignedPreKeyRecord_New(id: number, timestamp: Timestamp, pubKey: Wrapper<PublicKey>, privKey: Wrapper<PrivateKey>, signature: Buffer): SignedPreKeyRecord;
|
|
361
374
|
export function SignedPreKeyRecord_Serialize(obj: Wrapper<SignedPreKeyRecord>): Buffer;
|
|
375
|
+
export function TESTING_CdsiLookupResponseConvert(): LookupResponse;
|
|
362
376
|
export function TESTING_ErrorOnBorrowAsync(_input: null): Promise<void>;
|
|
363
377
|
export function TESTING_ErrorOnBorrowIo(asyncRuntime: Wrapper<NonSuspendingBackgroundThreadRuntime>, _input: null): Promise<void>;
|
|
364
378
|
export function TESTING_ErrorOnBorrowSync(_input: null): void;
|
|
@@ -380,6 +394,7 @@ export function TESTING_PanicOnLoadSync(_needsCleanup: null, _input: null): void
|
|
|
380
394
|
export function TESTING_PanicOnReturnAsync(_needsCleanup: null): Promise<null>;
|
|
381
395
|
export function TESTING_PanicOnReturnIo(asyncRuntime: Wrapper<NonSuspendingBackgroundThreadRuntime>, _needsCleanup: null): Promise<null>;
|
|
382
396
|
export function TESTING_PanicOnReturnSync(_needsCleanup: null): null;
|
|
397
|
+
export function TokioAsyncContext_new(): TokioAsyncContext;
|
|
383
398
|
export function UnidentifiedSenderMessageContent_Deserialize(data: Buffer): UnidentifiedSenderMessageContent;
|
|
384
399
|
export function UnidentifiedSenderMessageContent_GetContentHint(m: Wrapper<UnidentifiedSenderMessageContent>): number;
|
|
385
400
|
export function UnidentifiedSenderMessageContent_GetContents(obj: Wrapper<UnidentifiedSenderMessageContent>): Buffer;
|
|
@@ -388,7 +403,7 @@ export function UnidentifiedSenderMessageContent_GetMsgType(m: Wrapper<Unidentif
|
|
|
388
403
|
export function UnidentifiedSenderMessageContent_GetSenderCert(m: Wrapper<UnidentifiedSenderMessageContent>): SenderCertificate;
|
|
389
404
|
export function UnidentifiedSenderMessageContent_New(message: Wrapper<CiphertextMessage>, sender: Wrapper<SenderCertificate>, contentHint: number, groupId: Buffer | null): UnidentifiedSenderMessageContent;
|
|
390
405
|
export function UnidentifiedSenderMessageContent_Serialize(obj: Wrapper<UnidentifiedSenderMessageContent>): Buffer;
|
|
391
|
-
export function UsernameLink_Create(username: string): Buffer;
|
|
406
|
+
export function UsernameLink_Create(username: string, entropy: Buffer | null): Buffer;
|
|
392
407
|
export function UsernameLink_DecryptUsername(entropy: Buffer, encryptedUsername: Buffer): string;
|
|
393
408
|
export function Username_CandidatesFrom(nickname: string, minLen: number, maxLen: number): string;
|
|
394
409
|
export function Username_Hash(username: string): Buffer;
|
|
@@ -406,6 +421,7 @@ interface AuthCredentialResponse { readonly __type: unique symbol; }
|
|
|
406
421
|
interface AuthCredentialWithPni { readonly __type: unique symbol; }
|
|
407
422
|
interface AuthCredentialWithPniResponse { readonly __type: unique symbol; }
|
|
408
423
|
interface CiphertextMessage { readonly __type: unique symbol; }
|
|
424
|
+
interface ConnectionManager { readonly __type: unique symbol; }
|
|
409
425
|
interface DecryptionErrorMessage { readonly __type: unique symbol; }
|
|
410
426
|
interface ExpiringProfileKeyCredential { readonly __type: unique symbol; }
|
|
411
427
|
interface ExpiringProfileKeyCredentialResponse { readonly __type: unique symbol; }
|
|
@@ -419,6 +435,7 @@ interface KyberKeyPair { readonly __type: unique symbol; }
|
|
|
419
435
|
interface KyberPreKeyRecord { readonly __type: unique symbol; }
|
|
420
436
|
interface KyberPublicKey { readonly __type: unique symbol; }
|
|
421
437
|
interface KyberSecretKey { readonly __type: unique symbol; }
|
|
438
|
+
interface LookupRequest { readonly __type: unique symbol; }
|
|
422
439
|
interface NonSuspendingBackgroundThreadRuntime { readonly __type: unique symbol; }
|
|
423
440
|
interface PlaintextContent { readonly __type: unique symbol; }
|
|
424
441
|
interface PreKeyBundle { readonly __type: unique symbol; }
|
|
@@ -450,6 +467,7 @@ interface SessionRecord { readonly __type: unique symbol; }
|
|
|
450
467
|
interface SgxClientState { readonly __type: unique symbol; }
|
|
451
468
|
interface SignalMessage { readonly __type: unique symbol; }
|
|
452
469
|
interface SignedPreKeyRecord { readonly __type: unique symbol; }
|
|
470
|
+
interface TokioAsyncContext { readonly __type: unique symbol; }
|
|
453
471
|
interface UnidentifiedSenderMessageContent { readonly __type: unique symbol; }
|
|
454
472
|
interface UuidCiphertext { readonly __type: unique symbol; }
|
|
455
473
|
interface ValidatingMac { readonly __type: unique symbol; }
|
package/dist/Address.js
CHANGED
package/dist/Errors.d.ts
CHANGED
|
@@ -20,7 +20,8 @@ export declare enum ErrorCode {
|
|
|
20
20
|
UnsupportedMediaInput = 16,
|
|
21
21
|
InputDataTooLong = 17,
|
|
22
22
|
InvalidEntropyDataLength = 18,
|
|
23
|
-
InvalidUsernameLinkEncryptedData = 19
|
|
23
|
+
InvalidUsernameLinkEncryptedData = 19,
|
|
24
|
+
RateLimitedError = 20
|
|
24
25
|
}
|
|
25
26
|
export declare class LibSignalErrorBase extends Error {
|
|
26
27
|
readonly code: ErrorCode;
|
|
@@ -93,4 +94,8 @@ export type InvalidMediaInputError = LibSignalErrorCommon & {
|
|
|
93
94
|
export type UnsupportedMediaInputError = LibSignalErrorCommon & {
|
|
94
95
|
code: ErrorCode.UnsupportedMediaInput;
|
|
95
96
|
};
|
|
97
|
+
export type RateLimitedError = LibSignalErrorBase & {
|
|
98
|
+
code: ErrorCode.RateLimitedError;
|
|
99
|
+
readonly retryAfterSecs: number;
|
|
100
|
+
};
|
|
96
101
|
export type LibSignalError = GenericError | DuplicatedMessageError | SealedSenderSelfSendError | UntrustedIdentityError | InvalidRegistrationIdError | VerificationFailedError | InvalidSessionError | InvalidSenderKeySessionError | CannotBeEmptyError | CannotStartWithDigitError | MissingSeparatorError | BadNicknameCharacterError | NicknameTooShortError | NicknameTooLongError | InputDataTooLong | InvalidEntropyDataLength | InvalidUsernameLinkEncryptedData | IoError | InvalidMediaInputError | UnsupportedMediaInputError;
|
package/dist/Errors.js
CHANGED
|
@@ -28,6 +28,7 @@ var ErrorCode;
|
|
|
28
28
|
ErrorCode[ErrorCode["InputDataTooLong"] = 17] = "InputDataTooLong";
|
|
29
29
|
ErrorCode[ErrorCode["InvalidEntropyDataLength"] = 18] = "InvalidEntropyDataLength";
|
|
30
30
|
ErrorCode[ErrorCode["InvalidUsernameLinkEncryptedData"] = 19] = "InvalidUsernameLinkEncryptedData";
|
|
31
|
+
ErrorCode[ErrorCode["RateLimitedError"] = 20] = "RateLimitedError";
|
|
31
32
|
})(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {}));
|
|
32
33
|
class LibSignalErrorBase extends Error {
|
|
33
34
|
constructor(message, name, operation, extraProps) {
|
package/dist/Mp4Sanitizer.js
CHANGED
|
@@ -3,15 +3,6 @@
|
|
|
3
3
|
// Copyright 2023 Signal Messenger, LLC.
|
|
4
4
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
5
5
|
//
|
|
6
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
8
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
9
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
10
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
11
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
12
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
13
|
-
});
|
|
14
|
-
};
|
|
15
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
7
|
exports.sanitize = exports.SanitizedMetadata = void 0;
|
|
17
8
|
/**
|
|
@@ -89,11 +80,9 @@ exports.SanitizedMetadata = SanitizedMetadata;
|
|
|
89
80
|
* @throws InvalidMediaInputError If the input could not be parsed because it was invalid.
|
|
90
81
|
* @throws UnsupportedMediaInputError If the input could not be parsed because it's unsupported in some way.
|
|
91
82
|
*/
|
|
92
|
-
function sanitize(input, len) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return SanitizedMetadata._fromNativeHandle(sanitizedMetadataNativeHandle);
|
|
96
|
-
});
|
|
83
|
+
async function sanitize(input, len) {
|
|
84
|
+
const sanitizedMetadataNativeHandle = await Native.Mp4Sanitizer_Sanitize(input, (0, BigIntUtil_1.bufferFromBigUInt64BE)(len));
|
|
85
|
+
return SanitizedMetadata._fromNativeHandle(sanitizedMetadataNativeHandle);
|
|
97
86
|
}
|
|
98
87
|
exports.sanitize = sanitize;
|
|
99
88
|
//# sourceMappingURL=Mp4Sanitizer.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { Aci, ProtocolAddress } from './Address';
|
|
|
4
4
|
export * from './Address';
|
|
5
5
|
export * as usernames from './usernames';
|
|
6
6
|
export * as io from './io';
|
|
7
|
+
export * as Net from './net';
|
|
7
8
|
export * as Mp4Sanitizer from './Mp4Sanitizer';
|
|
8
9
|
export * as WebpSanitizer from './WebpSanitizer';
|
|
9
10
|
import * as Native from '../Native';
|
package/dist/index.js
CHANGED
|
@@ -17,18 +17,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
17
17
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
18
18
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
19
|
};
|
|
20
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
21
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
22
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
23
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
24
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
25
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
26
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.
|
|
31
|
-
exports.initLogger = exports.LogLevel = exports.HsmEnclaveClient = exports.Cds2Client = exports.sealedSenderDecryptToUsmc = exports.sealedSenderDecryptMessage = exports.sealedSenderMultiRecipientMessageForSingleRecipient = exports.sealedSenderMultiRecipientEncrypt = exports.sealedSenderEncrypt = void 0;
|
|
21
|
+
exports.signalDecryptPreKey = exports.signalDecrypt = exports.signalEncrypt = exports.processPreKeyBundle = exports.DecryptionErrorMessage = exports.PlaintextContent = exports.CiphertextMessage = exports.SealedSenderDecryptionResult = exports.groupDecrypt = exports.groupEncrypt = exports.SenderKeyStore = exports.KyberPreKeyStore = exports.SignedPreKeyStore = exports.PreKeyStore = exports.IdentityKeyStore = exports.SessionStore = exports.UnidentifiedSenderMessageContent = exports.SenderKeyMessage = exports.processSenderKeyDistributionMessage = exports.SenderKeyDistributionMessage = exports.SenderCertificate = exports.SenderKeyRecord = exports.ServerCertificate = exports.SessionRecord = exports.PreKeySignalMessage = exports.SignalMessage = exports.KyberPreKeyRecord = exports.SignedPreKeyRecord = exports.PreKeyRecord = exports.PreKeyBundle = exports.IdentityKeyPair = exports.KEMKeyPair = exports.KEMSecretKey = exports.KEMPublicKey = exports.PrivateKey = exports.PublicKey = exports.Aes256GcmSiv = exports.Fingerprint = exports.DisplayableFingerprint = exports.ScannableFingerprint = exports.hkdf = exports.HKDF = exports.ContentHint = exports.Direction = exports.CiphertextMessageType = exports.WebpSanitizer = exports.Mp4Sanitizer = exports.Net = exports.io = exports.usernames = void 0;
|
|
22
|
+
exports.initLogger = exports.LogLevel = exports.HsmEnclaveClient = exports.Cds2Client = exports.sealedSenderDecryptToUsmc = exports.sealedSenderDecryptMessage = exports.sealedSenderMultiRecipientMessageForSingleRecipient = exports.sealedSenderMultiRecipientEncrypt = exports.sealedSenderEncrypt = exports.sealedSenderEncryptMessage = void 0;
|
|
32
23
|
const uuid = require("uuid");
|
|
33
24
|
const Errors = require("./Errors");
|
|
34
25
|
__exportStar(require("./Errors"), exports);
|
|
@@ -36,6 +27,7 @@ const Address_1 = require("./Address");
|
|
|
36
27
|
__exportStar(require("./Address"), exports);
|
|
37
28
|
exports.usernames = require("./usernames");
|
|
38
29
|
exports.io = require("./io");
|
|
30
|
+
exports.Net = require("./net");
|
|
39
31
|
exports.Mp4Sanitizer = require("./Mp4Sanitizer");
|
|
40
32
|
exports.WebpSanitizer = require("./WebpSanitizer");
|
|
41
33
|
const Native = require("../Native");
|
|
@@ -267,7 +259,7 @@ class PreKeyBundle {
|
|
|
267
259
|
static new(registration_id, device_id, prekey_id, prekey, signed_prekey_id, signed_prekey, signed_prekey_signature, identity_key, kyber_prekey_id, kyber_prekey, kyber_prekey_signature) {
|
|
268
260
|
return new PreKeyBundle(Native.PreKeyBundle_New(registration_id, device_id, prekey_id, prekey != null ? prekey : null,
|
|
269
261
|
//prekey?,
|
|
270
|
-
signed_prekey_id, signed_prekey, signed_prekey_signature, identity_key, kyber_prekey_id
|
|
262
|
+
signed_prekey_id, signed_prekey, signed_prekey_signature, identity_key, kyber_prekey_id ?? null, kyber_prekey ?? null, kyber_prekey_signature ?? Buffer.alloc(0)));
|
|
271
263
|
}
|
|
272
264
|
deviceId() {
|
|
273
265
|
return Native.PreKeyBundle_GetDeviceId(this);
|
|
@@ -585,7 +577,7 @@ class SenderCertificate {
|
|
|
585
577
|
try {
|
|
586
578
|
return Address_1.Aci.parseFromServiceIdString(this.senderUuid());
|
|
587
579
|
}
|
|
588
|
-
catch
|
|
580
|
+
catch {
|
|
589
581
|
return null;
|
|
590
582
|
}
|
|
591
583
|
}
|
|
@@ -607,11 +599,9 @@ class SenderKeyDistributionMessage {
|
|
|
607
599
|
constructor(nativeHandle) {
|
|
608
600
|
this._nativeHandle = nativeHandle;
|
|
609
601
|
}
|
|
610
|
-
static create(sender, distributionId, store) {
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
return new SenderKeyDistributionMessage(handle);
|
|
614
|
-
});
|
|
602
|
+
static async create(sender, distributionId, store) {
|
|
603
|
+
const handle = await Native.SenderKeyDistributionMessage_Create(sender, Buffer.from(uuid.parse(distributionId)), store);
|
|
604
|
+
return new SenderKeyDistributionMessage(handle);
|
|
615
605
|
}
|
|
616
606
|
static _new(messageVersion, distributionId, chainId, iteration, chainKey, pk) {
|
|
617
607
|
return new SenderKeyDistributionMessage(Native.SenderKeyDistributionMessage_New(messageVersion, Buffer.from(uuid.parse(distributionId)), chainId, iteration, chainKey, pk));
|
|
@@ -636,10 +626,8 @@ class SenderKeyDistributionMessage {
|
|
|
636
626
|
}
|
|
637
627
|
}
|
|
638
628
|
exports.SenderKeyDistributionMessage = SenderKeyDistributionMessage;
|
|
639
|
-
function processSenderKeyDistributionMessage(sender, message, store) {
|
|
640
|
-
|
|
641
|
-
yield Native.SenderKeyDistributionMessage_Process(sender, message, store);
|
|
642
|
-
});
|
|
629
|
+
async function processSenderKeyDistributionMessage(sender, message, store) {
|
|
630
|
+
await Native.SenderKeyDistributionMessage_Process(sender, message, store);
|
|
643
631
|
}
|
|
644
632
|
exports.processSenderKeyDistributionMessage = processSenderKeyDistributionMessage;
|
|
645
633
|
class SenderKeyMessage {
|
|
@@ -706,141 +694,103 @@ class UnidentifiedSenderMessageContent {
|
|
|
706
694
|
}
|
|
707
695
|
exports.UnidentifiedSenderMessageContent = UnidentifiedSenderMessageContent;
|
|
708
696
|
class SessionStore {
|
|
709
|
-
_saveSession(name, record) {
|
|
710
|
-
return
|
|
711
|
-
return this.saveSession(Address_1.ProtocolAddress._fromNativeHandle(name), SessionRecord._fromNativeHandle(record));
|
|
712
|
-
});
|
|
697
|
+
async _saveSession(name, record) {
|
|
698
|
+
return this.saveSession(Address_1.ProtocolAddress._fromNativeHandle(name), SessionRecord._fromNativeHandle(record));
|
|
713
699
|
}
|
|
714
|
-
_getSession(name) {
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
}
|
|
723
|
-
});
|
|
700
|
+
async _getSession(name) {
|
|
701
|
+
const sess = await this.getSession(Address_1.ProtocolAddress._fromNativeHandle(name));
|
|
702
|
+
if (sess == null) {
|
|
703
|
+
return null;
|
|
704
|
+
}
|
|
705
|
+
else {
|
|
706
|
+
return sess._nativeHandle;
|
|
707
|
+
}
|
|
724
708
|
}
|
|
725
709
|
}
|
|
726
710
|
exports.SessionStore = SessionStore;
|
|
727
711
|
class IdentityKeyStore {
|
|
728
|
-
_getIdentityKey() {
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
return key._nativeHandle;
|
|
732
|
-
});
|
|
712
|
+
async _getIdentityKey() {
|
|
713
|
+
const key = await this.getIdentityKey();
|
|
714
|
+
return key._nativeHandle;
|
|
733
715
|
}
|
|
734
|
-
_getLocalRegistrationId() {
|
|
735
|
-
return
|
|
736
|
-
return this.getLocalRegistrationId();
|
|
737
|
-
});
|
|
716
|
+
async _getLocalRegistrationId() {
|
|
717
|
+
return this.getLocalRegistrationId();
|
|
738
718
|
}
|
|
739
|
-
_saveIdentity(name, key) {
|
|
740
|
-
return
|
|
741
|
-
return this.saveIdentity(Address_1.ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key));
|
|
742
|
-
});
|
|
719
|
+
async _saveIdentity(name, key) {
|
|
720
|
+
return this.saveIdentity(Address_1.ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key));
|
|
743
721
|
}
|
|
744
|
-
_isTrustedIdentity(name, key, sending) {
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
return this.isTrustedIdentity(Address_1.ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key), direction);
|
|
748
|
-
});
|
|
722
|
+
async _isTrustedIdentity(name, key, sending) {
|
|
723
|
+
const direction = sending ? Direction.Sending : Direction.Receiving;
|
|
724
|
+
return this.isTrustedIdentity(Address_1.ProtocolAddress._fromNativeHandle(name), PublicKey._fromNativeHandle(key), direction);
|
|
749
725
|
}
|
|
750
|
-
_getIdentity(name) {
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
}
|
|
759
|
-
});
|
|
726
|
+
async _getIdentity(name) {
|
|
727
|
+
const key = await this.getIdentity(Address_1.ProtocolAddress._fromNativeHandle(name));
|
|
728
|
+
if (key == null) {
|
|
729
|
+
return Promise.resolve(null);
|
|
730
|
+
}
|
|
731
|
+
else {
|
|
732
|
+
return key._nativeHandle;
|
|
733
|
+
}
|
|
760
734
|
}
|
|
761
735
|
}
|
|
762
736
|
exports.IdentityKeyStore = IdentityKeyStore;
|
|
763
737
|
class PreKeyStore {
|
|
764
|
-
_savePreKey(id, record) {
|
|
765
|
-
return
|
|
766
|
-
return this.savePreKey(id, PreKeyRecord._fromNativeHandle(record));
|
|
767
|
-
});
|
|
738
|
+
async _savePreKey(id, record) {
|
|
739
|
+
return this.savePreKey(id, PreKeyRecord._fromNativeHandle(record));
|
|
768
740
|
}
|
|
769
|
-
_getPreKey(id) {
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
return pk._nativeHandle;
|
|
773
|
-
});
|
|
741
|
+
async _getPreKey(id) {
|
|
742
|
+
const pk = await this.getPreKey(id);
|
|
743
|
+
return pk._nativeHandle;
|
|
774
744
|
}
|
|
775
|
-
_removePreKey(id) {
|
|
776
|
-
return
|
|
777
|
-
return this.removePreKey(id);
|
|
778
|
-
});
|
|
745
|
+
async _removePreKey(id) {
|
|
746
|
+
return this.removePreKey(id);
|
|
779
747
|
}
|
|
780
748
|
}
|
|
781
749
|
exports.PreKeyStore = PreKeyStore;
|
|
782
750
|
class SignedPreKeyStore {
|
|
783
|
-
_saveSignedPreKey(id, record) {
|
|
784
|
-
return
|
|
785
|
-
return this.saveSignedPreKey(id, SignedPreKeyRecord._fromNativeHandle(record));
|
|
786
|
-
});
|
|
751
|
+
async _saveSignedPreKey(id, record) {
|
|
752
|
+
return this.saveSignedPreKey(id, SignedPreKeyRecord._fromNativeHandle(record));
|
|
787
753
|
}
|
|
788
|
-
_getSignedPreKey(id) {
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
return pk._nativeHandle;
|
|
792
|
-
});
|
|
754
|
+
async _getSignedPreKey(id) {
|
|
755
|
+
const pk = await this.getSignedPreKey(id);
|
|
756
|
+
return pk._nativeHandle;
|
|
793
757
|
}
|
|
794
758
|
}
|
|
795
759
|
exports.SignedPreKeyStore = SignedPreKeyStore;
|
|
796
760
|
class KyberPreKeyStore {
|
|
797
|
-
_saveKyberPreKey(kyberPreKeyId, record) {
|
|
798
|
-
return
|
|
799
|
-
return this.saveKyberPreKey(kyberPreKeyId, KyberPreKeyRecord._fromNativeHandle(record));
|
|
800
|
-
});
|
|
761
|
+
async _saveKyberPreKey(kyberPreKeyId, record) {
|
|
762
|
+
return this.saveKyberPreKey(kyberPreKeyId, KyberPreKeyRecord._fromNativeHandle(record));
|
|
801
763
|
}
|
|
802
|
-
_getKyberPreKey(kyberPreKeyId) {
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
return prekey._nativeHandle;
|
|
806
|
-
});
|
|
764
|
+
async _getKyberPreKey(kyberPreKeyId) {
|
|
765
|
+
const prekey = await this.getKyberPreKey(kyberPreKeyId);
|
|
766
|
+
return prekey._nativeHandle;
|
|
807
767
|
}
|
|
808
|
-
_markKyberPreKeyUsed(kyberPreKeyId) {
|
|
809
|
-
return
|
|
810
|
-
return this.markKyberPreKeyUsed(kyberPreKeyId);
|
|
811
|
-
});
|
|
768
|
+
async _markKyberPreKeyUsed(kyberPreKeyId) {
|
|
769
|
+
return this.markKyberPreKeyUsed(kyberPreKeyId);
|
|
812
770
|
}
|
|
813
771
|
}
|
|
814
772
|
exports.KyberPreKeyStore = KyberPreKeyStore;
|
|
815
773
|
class SenderKeyStore {
|
|
816
|
-
_saveSenderKey(sender, distributionId, record) {
|
|
817
|
-
return
|
|
818
|
-
return this.saveSenderKey(Address_1.ProtocolAddress._fromNativeHandle(sender), uuid.stringify(distributionId), SenderKeyRecord._fromNativeHandle(record));
|
|
819
|
-
});
|
|
774
|
+
async _saveSenderKey(sender, distributionId, record) {
|
|
775
|
+
return this.saveSenderKey(Address_1.ProtocolAddress._fromNativeHandle(sender), uuid.stringify(distributionId), SenderKeyRecord._fromNativeHandle(record));
|
|
820
776
|
}
|
|
821
|
-
_getSenderKey(sender, distributionId) {
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
}
|
|
830
|
-
});
|
|
777
|
+
async _getSenderKey(sender, distributionId) {
|
|
778
|
+
const skr = await this.getSenderKey(Address_1.ProtocolAddress._fromNativeHandle(sender), uuid.stringify(distributionId));
|
|
779
|
+
if (skr == null) {
|
|
780
|
+
return null;
|
|
781
|
+
}
|
|
782
|
+
else {
|
|
783
|
+
return skr._nativeHandle;
|
|
784
|
+
}
|
|
831
785
|
}
|
|
832
786
|
}
|
|
833
787
|
exports.SenderKeyStore = SenderKeyStore;
|
|
834
|
-
function groupEncrypt(sender, distributionId, store, message) {
|
|
835
|
-
return
|
|
836
|
-
return CiphertextMessage._fromNativeHandle(yield Native.GroupCipher_EncryptMessage(sender, Buffer.from(uuid.parse(distributionId)), message, store));
|
|
837
|
-
});
|
|
788
|
+
async function groupEncrypt(sender, distributionId, store, message) {
|
|
789
|
+
return CiphertextMessage._fromNativeHandle(await Native.GroupCipher_EncryptMessage(sender, Buffer.from(uuid.parse(distributionId)), message, store));
|
|
838
790
|
}
|
|
839
791
|
exports.groupEncrypt = groupEncrypt;
|
|
840
|
-
function groupDecrypt(sender, store, message) {
|
|
841
|
-
return
|
|
842
|
-
return Native.GroupCipher_DecryptMessage(sender, message, store);
|
|
843
|
-
});
|
|
792
|
+
async function groupDecrypt(sender, store, message) {
|
|
793
|
+
return Native.GroupCipher_DecryptMessage(sender, message, store);
|
|
844
794
|
}
|
|
845
795
|
exports.groupDecrypt = groupDecrypt;
|
|
846
796
|
class SealedSenderDecryptionResult {
|
|
@@ -868,7 +818,7 @@ class SealedSenderDecryptionResult {
|
|
|
868
818
|
try {
|
|
869
819
|
return Address_1.Aci.parseFromServiceIdString(this.senderUuid());
|
|
870
820
|
}
|
|
871
|
-
catch
|
|
821
|
+
catch {
|
|
872
822
|
return null;
|
|
873
823
|
}
|
|
874
824
|
}
|
|
@@ -956,10 +906,8 @@ function processPreKeyBundle(bundle, address, sessionStore, identityStore, now =
|
|
|
956
906
|
return Native.SessionBuilder_ProcessPreKeyBundle(bundle, address, sessionStore, identityStore, now.getTime());
|
|
957
907
|
}
|
|
958
908
|
exports.processPreKeyBundle = processPreKeyBundle;
|
|
959
|
-
function signalEncrypt(message, address, sessionStore, identityStore, now = new Date()) {
|
|
960
|
-
return
|
|
961
|
-
return CiphertextMessage._fromNativeHandle(yield Native.SessionCipher_EncryptMessage(message, address, sessionStore, identityStore, now.getTime()));
|
|
962
|
-
});
|
|
909
|
+
async function signalEncrypt(message, address, sessionStore, identityStore, now = new Date()) {
|
|
910
|
+
return CiphertextMessage._fromNativeHandle(await Native.SessionCipher_EncryptMessage(message, address, sessionStore, identityStore, now.getTime()));
|
|
963
911
|
}
|
|
964
912
|
exports.signalEncrypt = signalEncrypt;
|
|
965
913
|
function signalDecrypt(message, address, sessionStore, identityStore) {
|
|
@@ -970,23 +918,19 @@ function signalDecryptPreKey(message, address, sessionStore, identityStore, prek
|
|
|
970
918
|
return Native.SessionCipher_DecryptPreKeySignalMessage(message, address, sessionStore, identityStore, prekeyStore, signedPrekeyStore, kyberPrekeyStore);
|
|
971
919
|
}
|
|
972
920
|
exports.signalDecryptPreKey = signalDecryptPreKey;
|
|
973
|
-
function sealedSenderEncryptMessage(message, address, senderCert, sessionStore, identityStore) {
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
return yield sealedSenderEncrypt(usmc, address, identityStore);
|
|
978
|
-
});
|
|
921
|
+
async function sealedSenderEncryptMessage(message, address, senderCert, sessionStore, identityStore) {
|
|
922
|
+
const ciphertext = await signalEncrypt(message, address, sessionStore, identityStore);
|
|
923
|
+
const usmc = UnidentifiedSenderMessageContent.new(ciphertext, senderCert, ContentHint.Default, null);
|
|
924
|
+
return await sealedSenderEncrypt(usmc, address, identityStore);
|
|
979
925
|
}
|
|
980
926
|
exports.sealedSenderEncryptMessage = sealedSenderEncryptMessage;
|
|
981
927
|
function sealedSenderEncrypt(content, address, identityStore) {
|
|
982
928
|
return Native.SealedSender_Encrypt(address, content, identityStore);
|
|
983
929
|
}
|
|
984
930
|
exports.sealedSenderEncrypt = sealedSenderEncrypt;
|
|
985
|
-
function sealedSenderMultiRecipientEncrypt(content, recipients, identityStore, sessionStore) {
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
return yield Native.SealedSender_MultiRecipientEncrypt(recipients, recipientSessions, content, identityStore);
|
|
989
|
-
});
|
|
931
|
+
async function sealedSenderMultiRecipientEncrypt(content, recipients, identityStore, sessionStore) {
|
|
932
|
+
const recipientSessions = await sessionStore.getExistingSessions(recipients);
|
|
933
|
+
return await Native.SealedSender_MultiRecipientEncrypt(recipients, recipientSessions, content, identityStore);
|
|
990
934
|
}
|
|
991
935
|
exports.sealedSenderMultiRecipientEncrypt = sealedSenderMultiRecipientEncrypt;
|
|
992
936
|
// For testing only
|
|
@@ -994,18 +938,14 @@ function sealedSenderMultiRecipientMessageForSingleRecipient(message) {
|
|
|
994
938
|
return Native.SealedSender_MultiRecipientMessageForSingleRecipient(message);
|
|
995
939
|
}
|
|
996
940
|
exports.sealedSenderMultiRecipientMessageForSingleRecipient = sealedSenderMultiRecipientMessageForSingleRecipient;
|
|
997
|
-
function sealedSenderDecryptMessage(message, trustRoot, timestamp, localE164, localUuid, localDeviceId, sessionStore, identityStore, prekeyStore, signedPrekeyStore, kyberPrekeyStore) {
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
return SealedSenderDecryptionResult._fromNativeHandle(ssdr);
|
|
1001
|
-
});
|
|
941
|
+
async function sealedSenderDecryptMessage(message, trustRoot, timestamp, localE164, localUuid, localDeviceId, sessionStore, identityStore, prekeyStore, signedPrekeyStore, kyberPrekeyStore) {
|
|
942
|
+
const ssdr = await Native.SealedSender_DecryptMessage(message, trustRoot, timestamp, localE164, localUuid, localDeviceId, sessionStore, identityStore, prekeyStore, signedPrekeyStore, kyberPrekeyStore);
|
|
943
|
+
return SealedSenderDecryptionResult._fromNativeHandle(ssdr);
|
|
1002
944
|
}
|
|
1003
945
|
exports.sealedSenderDecryptMessage = sealedSenderDecryptMessage;
|
|
1004
|
-
function sealedSenderDecryptToUsmc(message, identityStore) {
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
return UnidentifiedSenderMessageContent._fromNativeHandle(usmc);
|
|
1008
|
-
});
|
|
946
|
+
async function sealedSenderDecryptToUsmc(message, identityStore) {
|
|
947
|
+
const usmc = await Native.SealedSender_DecryptToUsmc(message, identityStore);
|
|
948
|
+
return UnidentifiedSenderMessageContent._fromNativeHandle(usmc);
|
|
1009
949
|
}
|
|
1010
950
|
exports.sealedSenderDecryptToUsmc = sealedSenderDecryptToUsmc;
|
|
1011
951
|
class Cds2Client {
|
package/dist/net.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReadonlyDeep } from 'type-fest';
|
|
2
|
+
export declare enum Environment {
|
|
3
|
+
Staging = 0,
|
|
4
|
+
Production = 1
|
|
5
|
+
}
|
|
6
|
+
export type CDSAuthType = {
|
|
7
|
+
username: string;
|
|
8
|
+
password: string;
|
|
9
|
+
};
|
|
10
|
+
export type CDSRequestOptionsType = {
|
|
11
|
+
e164s: Array<string>;
|
|
12
|
+
acisAndAccessKeys: Array<{
|
|
13
|
+
aci: string;
|
|
14
|
+
accessKey: string;
|
|
15
|
+
}>;
|
|
16
|
+
timeout: number;
|
|
17
|
+
returnAcisWithoutUaks: boolean;
|
|
18
|
+
};
|
|
19
|
+
export type CDSResponseEntryType<Aci, Pni> = {
|
|
20
|
+
aci: Aci | undefined;
|
|
21
|
+
pni: Pni | undefined;
|
|
22
|
+
};
|
|
23
|
+
export type CDSResponseType<Aci, Pni> = Map<string, CDSResponseEntryType<Aci, Pni>>;
|
|
24
|
+
export declare class Net {
|
|
25
|
+
private readonly _asyncContext;
|
|
26
|
+
private readonly _connectionManager;
|
|
27
|
+
constructor(env: Environment);
|
|
28
|
+
cdsiLookup({ username, password }: Readonly<CDSAuthType>, { e164s, acisAndAccessKeys, timeout, returnAcisWithoutUaks, }: ReadonlyDeep<CDSRequestOptionsType>): Promise<CDSResponseType<string, string>>;
|
|
29
|
+
}
|
package/dist/net.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2023 Signal Messenger, LLC.
|
|
4
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
5
|
+
//
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Net = exports.Environment = void 0;
|
|
8
|
+
const Native = require("../Native");
|
|
9
|
+
const Address_1 = require("./Address");
|
|
10
|
+
// This must match the libsignal-bridge Rust enum of the same name.
|
|
11
|
+
var Environment;
|
|
12
|
+
(function (Environment) {
|
|
13
|
+
Environment[Environment["Staging"] = 0] = "Staging";
|
|
14
|
+
Environment[Environment["Production"] = 1] = "Production";
|
|
15
|
+
})(Environment = exports.Environment || (exports.Environment = {}));
|
|
16
|
+
class Net {
|
|
17
|
+
constructor(env) {
|
|
18
|
+
this._asyncContext = Native.TokioAsyncContext_new();
|
|
19
|
+
this._connectionManager = Native.ConnectionManager_new(env);
|
|
20
|
+
}
|
|
21
|
+
async cdsiLookup({ username, password }, { e164s, acisAndAccessKeys, timeout, returnAcisWithoutUaks, }) {
|
|
22
|
+
const request = { _nativeHandle: Native.LookupRequest_new() };
|
|
23
|
+
e164s.forEach((e164) => {
|
|
24
|
+
Native.LookupRequest_addE164(request, e164);
|
|
25
|
+
});
|
|
26
|
+
acisAndAccessKeys.forEach(({ aci: aciStr, accessKey: accessKeyStr }) => {
|
|
27
|
+
Native.LookupRequest_addAciAndAccessKey(request, Address_1.Aci.parseFromServiceIdString(aciStr).getServiceIdFixedWidthBinary(), Buffer.from(accessKeyStr, 'base64'));
|
|
28
|
+
});
|
|
29
|
+
Native.LookupRequest_setReturnAcisWithoutUaks(request, returnAcisWithoutUaks);
|
|
30
|
+
return await Native.CdsiLookup({ _nativeHandle: this._asyncContext }, { _nativeHandle: this._connectionManager }, username, password, request, timeout);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.Net = Net;
|
|
34
|
+
//# sourceMappingURL=net.js.map
|
package/dist/usernames.d.ts
CHANGED
|
@@ -8,5 +8,5 @@ export declare function hash(username: string): Buffer;
|
|
|
8
8
|
export declare function generateProof(username: string): Buffer;
|
|
9
9
|
export declare function generateProofWithRandom(username: string, random: Buffer): Buffer;
|
|
10
10
|
export declare function decryptUsernameLink(usernameLink: UsernameLink): string;
|
|
11
|
-
export declare function createUsernameLink(username: string): UsernameLink;
|
|
11
|
+
export declare function createUsernameLink(username: string, previousEntropy?: Buffer): UsernameLink;
|
|
12
12
|
export declare function verifyProof(proof: Buffer, hash: Buffer): void;
|
package/dist/usernames.js
CHANGED
|
@@ -30,8 +30,8 @@ function decryptUsernameLink(usernameLink) {
|
|
|
30
30
|
return Native.UsernameLink_DecryptUsername(usernameLink.entropy, usernameLink.encryptedUsername);
|
|
31
31
|
}
|
|
32
32
|
exports.decryptUsernameLink = decryptUsernameLink;
|
|
33
|
-
function createUsernameLink(username) {
|
|
34
|
-
const usernameLinkData = Native.UsernameLink_Create(username);
|
|
33
|
+
function createUsernameLink(username, previousEntropy) {
|
|
34
|
+
const usernameLinkData = Native.UsernameLink_Create(username, previousEntropy ?? null);
|
|
35
35
|
const entropy = usernameLinkData.slice(0, 32);
|
|
36
36
|
const encryptedUsername = usernameLinkData.slice(32);
|
|
37
37
|
return { entropy, encryptedUsername };
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
//
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.bufferFromBigUInt64BE = void 0;
|
|
8
|
-
const UINT64_MAX =
|
|
8
|
+
const UINT64_MAX = 0xffffffffffffffffn;
|
|
9
9
|
function bufferFromBigUInt64BE(value) {
|
|
10
10
|
if (value < 0 || value > UINT64_MAX) {
|
|
11
11
|
throw new RangeError(`value ${value} isn't representable as a u64`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signalapp/libsignal-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"node-gyp-build": "^4.2.3",
|
|
29
|
+
"type-fest": "^3.5.0",
|
|
29
30
|
"uuid": "^8.3.0"
|
|
30
31
|
},
|
|
31
32
|
"devDependencies": {
|
|
@@ -34,7 +35,7 @@
|
|
|
34
35
|
"@types/chai-as-promised": "^7.1.3",
|
|
35
36
|
"@types/chance": "^1.1.3",
|
|
36
37
|
"@types/mocha": "^5.2.7",
|
|
37
|
-
"@types/node": "
|
|
38
|
+
"@types/node": "~18.15.0",
|
|
38
39
|
"@types/uuid": "^8.3.0",
|
|
39
40
|
"@typescript-eslint/eslint-plugin": "^5.47.0",
|
|
40
41
|
"@typescript-eslint/parser": "^5.47.0",
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
"eslint-plugin-mocha": "^10.1.0",
|
|
49
50
|
"eslint-plugin-more": "^1.0.0",
|
|
50
51
|
"mocha": "^9",
|
|
51
|
-
"node-gyp": "^
|
|
52
|
+
"node-gyp": "^10.0.0",
|
|
52
53
|
"prettier": "^2.7.1",
|
|
53
54
|
"rimraf": "^3.0.1",
|
|
54
55
|
"source-map-support": "^0.5.19",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|