diff --git a/.snyk b/.snyk index 26c8e3f10..3a3deb9cb 100644 --- a/.snyk +++ b/.snyk @@ -8,14 +8,10 @@ patch: 'npm:debug:20170905': - websocket > debug: patched: '2020-04-30T19:26:25.236Z' - - ref-array-napi > array-index > debug: - patched: '2020-04-30T19:26:25.236Z' - babel-template > babel-traverse > debug: patched: '2020-04-30T19:26:25.236Z' - istanbul-lib-instrument > babel-traverse > debug: patched: '2020-04-30T19:26:25.236Z' - - zkgroup > ref-array-napi > array-index > debug: - patched: '2020-04-30T19:26:25.236Z' - istanbul-lib-instrument > babel-template > babel-traverse > debug: patched: '2020-04-30T19:26:25.236Z' - array-index > debug: diff --git a/package.json b/package.json index da5c1334b..fba3b68be 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "dependencies": { "@popperjs/core": "2.9.2", "@react-spring/web": "9.2.6", - "@signalapp/signal-client": "0.9.8", + "@signalapp/signal-client": "0.10.1", "@sindresorhus/is": "0.8.0", "abort-controller": "3.0.0", "array-move": "2.1.0", @@ -165,7 +165,6 @@ "underscore": "1.12.1", "uuid": "3.3.2", "websocket": "1.0.28", - "zkgroup": "https://github.com/signalapp/signal-zkgroup-node.git#0d2b3874d2e671fa5fdcc2154065cc061f977672", "zod": "3.5.1" }, "devDependencies": { @@ -305,10 +304,7 @@ "appId": "org.whispersystems.signal-desktop", "mac": { "asarUnpack": [ - "**/*.node", - "node_modules/zkgroup/libzkgroup.*", - "node_modules/@signalapp/signal-client/build/*.node", - "node_modules/mac-screen-capture-permissions/build/Release/*.node" + "**/*.node" ], "artifactName": "${name}-mac-${version}.${ext}", "category": "public.app-category.social-networking", @@ -332,9 +328,7 @@ "asarUnpack": [ "**/*.node", "node_modules/spellchecker/vendor/hunspell_dictionaries", - "node_modules/sharp", - "node_modules/zkgroup/libzkgroup.*", - "node_modules/@signalapp/signal-client/build/*.node" + "node_modules/sharp" ], "artifactName": "${name}-win-${version}.${ext}", "certificateSubjectName": "Signal Messenger, LLC", @@ -365,9 +359,7 @@ "asarUnpack": [ "**/*.node", "node_modules/spellchecker/vendor/hunspell_dictionaries", - "node_modules/sharp", - "node_modules/zkgroup/libzkgroup.*", - "node_modules/@signalapp/signal-client/build/*.node" + "node_modules/sharp" ], "target": [ "deb" @@ -434,15 +426,13 @@ "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme,test,__tests__,tests,powered-test,example,examples,*.d.ts,.snyk-*.flag,benchmark}", "!**/node_modules/.bin", "!**/node_modules/**/build/**", + "!**/node_modules/**/prebuilds/**", "!**/*.{o,hprof,orig,pyc,pyo,rbc}", "!**/._*", "!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.yarn-metadata.json,.idea,appveyor.yml,.travis.yml,circle.yml,npm-debug.log,.nyc_output,yarn.lock,.yarn-integrity}", "node_modules/spellchecker/build/Release/*.node", "node_modules/websocket/build/Release/*.node", "!node_modules/websocket/builderror.log", - "node_modules/ref-napi/build/Release/*.node", - "node_modules/ref-array-napi/node_modules/ref-napi/build/Release/*.node", - "node_modules/ffi-napi/build/Release/*.node", "node_modules/socks/build/*.js", "node_modules/socks/build/common/*.js", "node_modules/socks/build/client/*.js", @@ -452,10 +442,9 @@ "!node_modules/better-sqlite3/deps/*", "!node_modules/better-sqlite3/src/*", "node_modules/better-sqlite3/build/Release/better_sqlite3.node", - "node_modules/@signalapp/signal-client/build/*${platform}*.node", + "node_modules/@signalapp/signal-client/prebuilds/*${platform}*/*.node", "node_modules/ringrtc/build/${platform}/**", "node_modules/mac-screen-capture-permissions/build/Release/*.node", - "!**/node_modules/ffi-napi/deps", "!**/node_modules/react-dom/*/*.development.js", "!node_modules/.cache" ] diff --git a/scripts/generate-acknowledgments.js b/scripts/generate-acknowledgments.js index a34ada979..14c5af4f1 100644 --- a/scripts/generate-acknowledgments.js +++ b/scripts/generate-acknowledgments.js @@ -13,11 +13,7 @@ const { optionalDependencies = {}, } = require('../package.json'); -const SKIPPED_DEPENDENCIES = new Set([ - 'ringrtc', - 'zkgroup', - '@signalapp/signal-client', -]); +const SKIPPED_DEPENDENCIES = new Set(['ringrtc', '@signalapp/signal-client']); const rootDir = join(__dirname, '..'); const nodeModulesPath = join(rootDir, 'node_modules'); diff --git a/ts/groups.ts b/ts/groups.ts index ab920d481..c66c30fdb 100644 --- a/ts/groups.ts +++ b/ts/groups.ts @@ -9,7 +9,7 @@ import { isNumber, values, } from 'lodash'; -import type { ClientZkGroupCipher } from 'zkgroup'; +import type { ClientZkGroupCipher } from '@signalapp/signal-client/zkgroup'; import { v4 as getGuid } from 'uuid'; import LRU from 'lru-cache'; import * as log from './logging/log'; diff --git a/ts/services/groupCredentialFetcher.ts b/ts/services/groupCredentialFetcher.ts index 43a444227..cb9e92fbd 100644 --- a/ts/services/groupCredentialFetcher.ts +++ b/ts/services/groupCredentialFetcher.ts @@ -2,13 +2,9 @@ // SPDX-License-Identifier: AGPL-3.0-only import { last, sortBy } from 'lodash'; -import { AuthCredentialResponse } from 'zkgroup'; +import { AuthCredentialResponse } from '@signalapp/signal-client/zkgroup'; -import { - base64ToCompatArray, - compatArrayToBase64, - getClientZkAuthOperations, -} from '../util/zkgroup'; +import { getClientZkAuthOperations } from '../util/zkgroup'; import type { GroupCredentialType } from '../textsecure/WebAPI'; import * as durations from '../util/durations'; @@ -151,9 +147,9 @@ export async function maybeFetchNewCredentials(): Promise { const authCredential = clientZKAuthOperations.receiveAuthCredential( uuid, item.redemptionTime, - new AuthCredentialResponse(base64ToCompatArray(item.credential)) + new AuthCredentialResponse(Buffer.from(item.credential, 'base64')) ); - const credential = compatArrayToBase64(authCredential.serialize()); + const credential = authCredential.serialize().toString('base64'); return { redemptionTime: item.redemptionTime, diff --git a/ts/util/getProfile.ts b/ts/util/getProfile.ts index 1c7fbf55b..bb5633802 100644 --- a/ts/util/getProfile.ts +++ b/ts/util/getProfile.ts @@ -1,7 +1,7 @@ // Copyright 2020-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -import type { ProfileKeyCredentialRequestContext } from 'zkgroup'; +import type { ProfileKeyCredentialRequestContext } from '@signalapp/signal-client/zkgroup'; import { SEALED_SENDER } from '../types/SealedSender'; import { Address } from '../types/Address'; import { QualifiedAddress } from '../types/QualifiedAddress'; diff --git a/ts/util/lint/exceptions.json b/ts/util/lint/exceptions.json index f1adaa22b..4e118e102 100644 --- a/ts/util/lint/exceptions.json +++ b/ts/util/lint/exceptions.json @@ -564,36 +564,6 @@ "updated": "2020-08-26T18:06:51.702Z", "reasonDetail": "isn't jquery" }, - { - "rule": "jQuery-load(", - "path": "node_modules/array-index/node_modules/debug/src/browser.js", - "line": "function load() {", - "reasonCategory": "falseMatch", - "updated": "2020-02-21T22:10:39.074Z" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/array-index/node_modules/debug/src/browser.js", - "line": "exports.enable(load());", - "reasonCategory": "falseMatch", - "updated": "2020-02-21T22:10:39.074Z" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/array-index/node_modules/debug/src/node.js", - "line": "function load() {", - "reasonCategory": "falseMatch", - "updated": "2020-10-21T00:36:11.618Z", - "reasonDetail": "isn't jquery" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/array-index/node_modules/debug/src/node.js", - "line": "exports.enable(load());", - "reasonCategory": "falseMatch", - "updated": "2020-10-21T00:36:11.618Z", - "reasonDetail": "isn't jquery" - }, { "rule": "jQuery-insertAfter(", "path": "node_modules/ast-types/lib/path.js", @@ -9230,62 +9200,6 @@ "reasonCategory": "falseMatch", "updated": "2021-04-05T20:48:36.065Z" }, - { - "rule": "jQuery-load(", - "path": "node_modules/ref-array-napi/node_modules/debug/src/browser.js", - "line": "function load() {", - "reasonCategory": "falseMatch", - "updated": "2020-04-30T22:35:27.860Z" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/ref-array-napi/node_modules/debug/src/browser.js", - "line": "exports.enable(load());", - "reasonCategory": "falseMatch", - "updated": "2020-04-30T22:35:27.860Z" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/ref-array-napi/node_modules/debug/src/node.js", - "line": "function load() {", - "reasonCategory": "falseMatch", - "updated": "2020-04-30T22:35:27.860Z" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/ref-array-napi/node_modules/debug/src/node.js", - "line": "exports.enable(load());", - "reasonCategory": "falseMatch", - "updated": "2020-04-30T22:35:27.860Z" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/ref-struct-di/node_modules/debug/src/browser.js", - "line": "function load() {", - "reasonCategory": "falseMatch", - "updated": "2020-02-21T22:10:39.074Z" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/ref-struct-di/node_modules/debug/src/browser.js", - "line": "exports.enable(load());", - "reasonCategory": "falseMatch", - "updated": "2020-02-21T22:10:39.074Z" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/ref-struct-di/node_modules/debug/src/node.js", - "line": "function load() {", - "reasonCategory": "falseMatch", - "updated": "2020-02-21T22:10:39.074Z" - }, - { - "rule": "jQuery-load(", - "path": "node_modules/ref-struct-di/node_modules/debug/src/node.js", - "line": "exports.enable(load());", - "reasonCategory": "falseMatch", - "updated": "2020-02-21T22:10:39.074Z" - }, { "rule": "jQuery-$(", "path": "node_modules/regenerate/regenerate.js", diff --git a/ts/util/zkgroup.ts b/ts/util/zkgroup.ts index 63568f743..c6f927784 100644 --- a/ts/util/zkgroup.ts +++ b/ts/util/zkgroup.ts @@ -1,16 +1,12 @@ -// Copyright 2020 Signal Messenger, LLC +// Copyright 2020-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -import type { - FFICompatArrayType, - ProfileKeyCredentialRequestContext, -} from 'zkgroup'; +import type { ProfileKeyCredentialRequestContext } from '@signalapp/signal-client/zkgroup'; import { AuthCredential, ClientZkAuthOperations, ClientZkGroupCipher, ClientZkProfileOperations, - FFICompatArray, GroupMasterKey, GroupSecretParams, ProfileKey, @@ -20,36 +16,11 @@ import { ProfileKeyCredentialResponse, ServerPublicParams, UuidCiphertext, -} from 'zkgroup'; -import * as Bytes from '../Bytes'; +} from '@signalapp/signal-client/zkgroup'; import { UUID } from '../types/UUID'; import type { UUIDStringType } from '../types/UUID'; -export * from 'zkgroup'; - -export function uint8ArrayToCompatArray( - buffer: Uint8Array -): FFICompatArrayType { - return new FFICompatArray(Buffer.from(buffer)); -} - -export function compatArrayToUint8Array( - compatArray: FFICompatArrayType -): Uint8Array { - return compatArray.buffer; -} - -export function base64ToCompatArray(base64: string): FFICompatArrayType { - return uint8ArrayToCompatArray(Bytes.fromBase64(base64)); -} - -export function compatArrayToBase64(compatArray: FFICompatArrayType): string { - return Bytes.toBase64(compatArrayToUint8Array(compatArray)); -} - -export function compatArrayToHex(compatArray: FFICompatArrayType): string { - return Bytes.toHex(compatArrayToUint8Array(compatArray)); -} +export * from '@signalapp/signal-client/zkgroup'; // Scenarios @@ -57,9 +28,7 @@ export function decryptGroupBlob( clientZkGroupCipher: ClientZkGroupCipher, ciphertext: Uint8Array ): Uint8Array { - return compatArrayToUint8Array( - clientZkGroupCipher.decryptBlob(uint8ArrayToCompatArray(ciphertext)) - ); + return clientZkGroupCipher.decryptBlob(Buffer.from(ciphertext)); } export function decryptProfileKeyCredentialPresentation( @@ -67,7 +36,7 @@ export function decryptProfileKeyCredentialPresentation( presentationBuffer: Uint8Array ): { profileKey: Uint8Array; uuid: UUIDStringType } { const presentation = new ProfileKeyCredentialPresentation( - uint8ArrayToCompatArray(presentationBuffer) + Buffer.from(presentationBuffer) ); const uuidCiphertext = presentation.getUuidCiphertext(); @@ -80,7 +49,7 @@ export function decryptProfileKeyCredentialPresentation( ); return { - profileKey: compatArrayToUint8Array(profileKey.serialize()), + profileKey: profileKey.serialize(), uuid: UUID.cast(uuid), }; } @@ -91,7 +60,7 @@ export function decryptProfileKey( uuid: UUIDStringType ): Uint8Array { const profileKeyCiphertext = new ProfileKeyCiphertext( - uint8ArrayToCompatArray(profileKeyCiphertextBuffer) + Buffer.from(profileKeyCiphertextBuffer) ); const profileKey = clientZkGroupCipher.decryptProfileKey( @@ -99,16 +68,14 @@ export function decryptProfileKey( uuid ); - return compatArrayToUint8Array(profileKey.serialize()); + return profileKey.serialize(); } export function decryptUuid( clientZkGroupCipher: ClientZkGroupCipher, uuidCiphertextBuffer: Uint8Array ): string { - const uuidCiphertext = new UuidCiphertext( - uint8ArrayToCompatArray(uuidCiphertextBuffer) - ); + const uuidCiphertext = new UuidCiphertext(Buffer.from(uuidCiphertextBuffer)); return clientZkGroupCipher.decryptUuid(uuidCiphertext); } @@ -117,7 +84,7 @@ export function deriveProfileKeyVersion( profileKeyBase64: string, uuid: UUIDStringType ): string { - const profileKeyArray = base64ToCompatArray(profileKeyBase64); + const profileKeyArray = Buffer.from(profileKeyBase64, 'base64'); const profileKey = new ProfileKey(profileKeyArray); const profileKeyVersion = profileKey.getProfileKeyVersion(uuid); @@ -129,42 +96,34 @@ export function deriveGroupPublicParams( groupSecretParamsBuffer: Uint8Array ): Uint8Array { const groupSecretParams = new GroupSecretParams( - uint8ArrayToCompatArray(groupSecretParamsBuffer) + Buffer.from(groupSecretParamsBuffer) ); - return compatArrayToUint8Array( - groupSecretParams.getPublicParams().serialize() - ); + return groupSecretParams.getPublicParams().serialize(); } export function deriveGroupID(groupSecretParamsBuffer: Uint8Array): Uint8Array { const groupSecretParams = new GroupSecretParams( - uint8ArrayToCompatArray(groupSecretParamsBuffer) + Buffer.from(groupSecretParamsBuffer) ); - return compatArrayToUint8Array( - groupSecretParams.getPublicParams().getGroupIdentifier().serialize() - ); + return groupSecretParams.getPublicParams().getGroupIdentifier().serialize(); } export function deriveGroupSecretParams( masterKeyBuffer: Uint8Array ): Uint8Array { - const masterKey = new GroupMasterKey( - uint8ArrayToCompatArray(masterKeyBuffer) - ); + const masterKey = new GroupMasterKey(Buffer.from(masterKeyBuffer)); const groupSecretParams = GroupSecretParams.deriveFromMasterKey(masterKey); - return compatArrayToUint8Array(groupSecretParams.serialize()); + return groupSecretParams.serialize(); } export function encryptGroupBlob( clientZkGroupCipher: ClientZkGroupCipher, plaintext: Uint8Array ): Uint8Array { - return compatArrayToUint8Array( - clientZkGroupCipher.encryptBlob(uint8ArrayToCompatArray(plaintext)) - ); + return clientZkGroupCipher.encryptBlob(Buffer.from(plaintext)); } export function encryptUuid( @@ -173,7 +132,7 @@ export function encryptUuid( ): Uint8Array { const uuidCiphertext = clientZkGroupCipher.encryptUuid(uuidPlaintext); - return compatArrayToUint8Array(uuidCiphertext.serialize()); + return uuidCiphertext.serialize(); } export function generateProfileKeyCredentialRequest( @@ -181,7 +140,7 @@ export function generateProfileKeyCredentialRequest( uuid: UUIDStringType, profileKeyBase64: string ): { context: ProfileKeyCredentialRequestContext; requestHex: string } { - const profileKeyArray = base64ToCompatArray(profileKeyBase64); + const profileKeyArray = Buffer.from(profileKeyBase64, 'base64'); const profileKey = new ProfileKey(profileKeyArray); const context = clientZkProfileCipher.createProfileKeyCredentialRequestContext( @@ -193,7 +152,7 @@ export function generateProfileKeyCredentialRequest( return { context, - requestHex: compatArrayToHex(requestArray), + requestHex: requestArray.toString('hex'), }; } @@ -203,17 +162,17 @@ export function getAuthCredentialPresentation( groupSecretParamsBase64: string ): Uint8Array { const authCredential = new AuthCredential( - base64ToCompatArray(authCredentialBase64) + Buffer.from(authCredentialBase64, 'base64') ); const secretParams = new GroupSecretParams( - base64ToCompatArray(groupSecretParamsBase64) + Buffer.from(groupSecretParamsBase64, 'base64') ); const presentation = clientZkAuthOperations.createAuthCredentialPresentation( secretParams, authCredential ); - return compatArrayToUint8Array(presentation.serialize()); + return presentation.serialize(); } export function createProfileKeyCredentialPresentation( @@ -221,14 +180,15 @@ export function createProfileKeyCredentialPresentation( profileKeyCredentialBase64: string, groupSecretParamsBase64: string ): Uint8Array { - const profileKeyCredentialArray = base64ToCompatArray( - profileKeyCredentialBase64 + const profileKeyCredentialArray = Buffer.from( + profileKeyCredentialBase64, + 'base64' ); const profileKeyCredential = new ProfileKeyCredential( profileKeyCredentialArray ); const secretParams = new GroupSecretParams( - base64ToCompatArray(groupSecretParamsBase64) + Buffer.from(groupSecretParamsBase64, 'base64') ); const presentation = clientZkProfileCipher.createProfileKeyCredentialPresentation( @@ -236,14 +196,14 @@ export function createProfileKeyCredentialPresentation( profileKeyCredential ); - return compatArrayToUint8Array(presentation.serialize()); + return presentation.serialize(); } export function getClientZkAuthOperations( serverPublicParamsBase64: string ): ClientZkAuthOperations { const serverPublicParams = new ServerPublicParams( - base64ToCompatArray(serverPublicParamsBase64) + Buffer.from(serverPublicParamsBase64, 'base64') ); return new ClientZkAuthOperations(serverPublicParams); @@ -253,7 +213,7 @@ export function getClientZkGroupCipher( groupSecretParamsBase64: string ): ClientZkGroupCipher { const serverPublicParams = new GroupSecretParams( - base64ToCompatArray(groupSecretParamsBase64) + Buffer.from(groupSecretParamsBase64, 'base64') ); return new ClientZkGroupCipher(serverPublicParams); @@ -263,7 +223,7 @@ export function getClientZkProfileOperations( serverPublicParamsBase64: string ): ClientZkProfileOperations { const serverPublicParams = new ServerPublicParams( - base64ToCompatArray(serverPublicParamsBase64) + Buffer.from(serverPublicParamsBase64, 'base64') ); return new ClientZkProfileOperations(serverPublicParams); @@ -275,7 +235,7 @@ export function handleProfileKeyCredential( responseBase64: string ): string { const response = new ProfileKeyCredentialResponse( - base64ToCompatArray(responseBase64) + Buffer.from(responseBase64, 'base64') ); const profileKeyCredential = clientZkProfileCipher.receiveProfileKeyCredential( context, @@ -284,15 +244,15 @@ export function handleProfileKeyCredential( const credentialArray = profileKeyCredential.serialize(); - return compatArrayToBase64(credentialArray); + return credentialArray.toString('base64'); } export function deriveProfileKeyCommitment( profileKeyBase64: string, uuid: UUIDStringType ): string { - const profileKeyArray = base64ToCompatArray(profileKeyBase64); + const profileKeyArray = Buffer.from(profileKeyBase64, 'base64'); const profileKey = new ProfileKey(profileKeyArray); - return compatArrayToBase64(profileKey.getCommitment(uuid).contents); + return profileKey.getCommitment(uuid).contents.toString('base64'); } diff --git a/tsconfig.json b/tsconfig.json index b7addd5f1..d7dce6815 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -58,10 +58,5 @@ // "experimentalDecorators": true, // Enables experimental support for ES7 decorators. // "emitDecoratorMetadata": true, // Enables experimental support for emitting type metadata for decorators. }, - "include": [ - "ts/**/*", - "app/*", - "node_modules/zkgroup/zkgroup/modules/*", - "package.json" - ] + "include": ["ts/**/*", "app/*", "package.json"] } diff --git a/webpack-preload.config.ts b/webpack-preload.config.ts index 1123af2bf..e987d6825 100644 --- a/webpack-preload.config.ts +++ b/webpack-preload.config.ts @@ -11,9 +11,9 @@ const { NODE_ENV: mode = 'development' } = process.env; const EXTERNAL_MODULE = new Set([ '@signalapp/signal-client', + '@signalapp/signal-client/zkgroup', 'backbone', 'better-sqlite3', - 'ffi-napi', 'fs-xattr', 'fsevents', 'got', @@ -23,12 +23,9 @@ const EXTERNAL_MODULE = new Set([ 'node-sass', 'pino', 'proxy-agent', - 'ref-array-napi', - 'ref-napi', 'ringrtc', 'sharp', 'websocket', - 'zkgroup', // Uses fast-glob and dynamic requires './preload_test', diff --git a/yarn.lock b/yarn.lock index 04ca4146e..75fc6be11 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1717,10 +1717,10 @@ "@react-spring/shared" "~9.2.6-beta.0" "@react-spring/types" "~9.2.6-beta.0" -"@signalapp/signal-client@0.9.8": - version "0.9.8" - resolved "https://registry.yarnpkg.com/@signalapp/signal-client/-/signal-client-0.9.8.tgz#e3bd9795eb29ee0246adf0a5245de06054d69180" - integrity sha512-ESm/n2rtVtDVdQvO9ad8y5Hh3grf+HWtM+nzZHYTw3QpvhaYONl3xUBAs1mbGYp/6Gwf83qJ/Le9rduFfw/lVQ== +"@signalapp/signal-client@0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@signalapp/signal-client/-/signal-client-0.10.1.tgz#74b41264044caac4d42df3baf1f5c393f63ec50a" + integrity sha512-myVTaqFljakN0fxvmK4FmslOHJPuuoGxpSmlu4KU2D3RP2EiDHmg3Q+Xw9TWh7ehpstUxwe5op6sThq5d3b3Dw== dependencies: node-gyp-build "^4.2.3" uuid "^8.3.0" @@ -2578,15 +2578,6 @@ "@types/express-serve-static-core" "*" "@types/serve-static" "*" -"@types/ffi-napi@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/ffi-napi/-/ffi-napi-4.0.3.tgz#2f016368198e4c6fbb0a69501b67cd8bec9cc3b7" - integrity sha512-hP9SJCapWnVH5dGSsvb3nvrjJMj95cU2jrs45RhZz8IhPHhcwrzqi9XyaTxGuafGJ9rS07I+zJ83BU5dhorerw== - dependencies: - "@types/node" "*" - "@types/ref-napi" "*" - "@types/ref-struct-di" "*" - "@types/filesize@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@types/filesize/-/filesize-3.6.0.tgz#5f1a25c7b4e3d5ee2bc63133d374d096b7008c8d" @@ -2937,20 +2928,6 @@ dependencies: redux "^3.6.0" -"@types/ref-napi@*", "@types/ref-napi@^3.0.1": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/ref-napi/-/ref-napi-3.0.3.tgz#1e6093f407dfe5b4dab4a490da1860344045732b" - integrity sha512-5Jm6TjMk9tt2A0m1jPXHhRTOAeDxhAirF36GUEV2ldQSOcXkG9FRV856PZFfx1s2hpdHvJg4nRfojlfEQo7v3A== - dependencies: - "@types/node" "*" - -"@types/ref-struct-di@*": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@types/ref-struct-di/-/ref-struct-di-1.1.3.tgz#2e42d5889eb072b2c3f2780f12a397e829b58b8f" - integrity sha512-OdsiCc10hByKZ27R8Bd+09EhiciuD6V9eAn+RjiLNx0YJum8E6CKg8zws5OmHKDtYA5Ke7kUvBJlUwITSZdvzA== - dependencies: - "@types/ref-napi" "*" - "@types/responselike@*", "@types/responselike@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" @@ -4048,14 +4025,6 @@ array-includes@^3.1.1: es-abstract "^1.17.0" is-string "^1.0.5" -array-index@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-index/-/array-index-1.0.0.tgz#ec56a749ee103e4e08c790b9c353df16055b97f9" - integrity sha1-7FanSe4QPk4Ix5C5w1PfFgVbl/k= - dependencies: - debug "^2.2.0" - es6-symbol "^3.0.2" - array-map@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" @@ -6576,14 +6545,6 @@ d@1: dependencies: es5-ext "^0.10.9" -d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - damerau-levenshtein@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" @@ -7614,15 +7575,6 @@ es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~ es6-symbol "~3.1.1" next-tick "^1.0.0" -es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - es5-shim@^4.5.13: version "4.5.13" resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.13.tgz#5d88062de049f8969f83783f4a4884395f21d28b" @@ -7662,14 +7614,6 @@ es6-shim@^0.35.5: resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" integrity sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg== -es6-symbol@^3.0.2, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" @@ -8234,13 +8178,6 @@ express@^4.17.0, express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -8473,18 +8410,6 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -ffi-napi@4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/ffi-napi/-/ffi-napi-4.0.3.tgz#27a8d42a8ea938457154895c59761fbf1a10f441" - integrity sha512-PMdLCIvDY9mS32RxZ0XGb95sonPRal8aqRhLbeEtWKZTe2A87qRFG9HjOhvG8EX2UmQw5XNRMIOT+1MYlWmdeg== - dependencies: - debug "^4.1.1" - get-uv-event-loop-napi-h "^1.0.5" - node-addon-api "^3.0.0" - node-gyp-build "^4.2.1" - ref-napi "^2.0.1 || ^3.0.2" - ref-struct-di "^1.1.0" - figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -9138,11 +9063,6 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== -get-symbol-from-current-process-h@^1.0.1, get-symbol-from-current-process-h@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.2.tgz#510af52eaef873f7028854c3377f47f7bb200265" - integrity sha512-syloC6fsCt62ELLrr1VKBM1ggOpMdetX9hTrdW77UQdcApPHLmf7CI7OKcN1c9kYuNxKcDe4iJ4FY9sX3aw2xw== - get-uri@3: version "3.0.2" resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" @@ -9166,13 +9086,6 @@ get-uri@^2.0.0: ftp "~0.3.10" readable-stream "2" -get-uv-event-loop-napi-h@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/get-uv-event-loop-napi-h/-/get-uv-event-loop-napi-h-1.0.6.tgz#42b0b06b74c3ed21fbac8e7c72845fdb7a200208" - integrity sha512-t5c9VNR84nRoF+eLiz6wFrEp1SE2Acg0wS+Ysa2zF0eROes+LzOfuTaVHxGy8AbS8rq7FHEJzjnCZo1BupwdJg== - dependencies: - get-symbol-from-current-process-h "^1.0.1" - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -12802,7 +12715,7 @@ new-github-issue-url@^0.2.1: resolved "https://registry.yarnpkg.com/new-github-issue-url/-/new-github-issue-url-0.2.1.tgz#e17be1f665a92de465926603e44b9f8685630c1d" integrity sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA== -next-tick@1, next-tick@^1.0.0, next-tick@~1.0.0: +next-tick@1, next-tick@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= @@ -12850,7 +12763,7 @@ node-addon-api@^1.6.3: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== -node-addon-api@^3.0.0, node-addon-api@^3.1.0: +node-addon-api@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239" integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw== @@ -12879,7 +12792,7 @@ node-forge@0.10.0, node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-gyp-build@^4.2.1, node-gyp-build@^4.2.3: +node-gyp-build@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== @@ -15587,32 +15500,6 @@ redux@^4.0.0: loose-envify "^1.4.0" symbol-observable "^1.2.0" -ref-array-napi@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ref-array-napi/-/ref-array-napi-1.2.2.tgz#8b172b375aa04441860973c262ac8a557e3d368e" - integrity sha512-EGQzUQpyqD/hN9eIn3uF68UPBmwJXdWkumHCmvK3ncjw128bkjd8TbJ51ur+2PZ4UrfCOQCcPQkuWZ6mNHch9A== - dependencies: - array-index "1" - debug "2" - ref-napi "^3.0.1" - -ref-napi@3.0.3, "ref-napi@^2.0.1 || ^3.0.2", ref-napi@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ref-napi/-/ref-napi-3.0.3.tgz#e259bfc2bbafb3e169e8cd9ba49037dd00396b22" - integrity sha512-LiMq/XDGcgodTYOMppikEtJelWsKQERbLQsYm0IOOnzhwE9xYZC7x8txNnFC9wJNOkPferQI4vD4ZkC0mDyrOA== - dependencies: - debug "^4.1.1" - get-symbol-from-current-process-h "^1.0.2" - node-addon-api "^3.0.0" - node-gyp-build "^4.2.1" - -ref-struct-di@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ref-struct-di/-/ref-struct-di-1.1.0.tgz#d252144eb449608ccf2e5c12fda35f8153bd3760" - integrity sha512-gghZITj/iQwdwFDduZ6T8kL2B2ogInlOz7AOB0ggFoEc7akAKMcDrbzh3OIPk13Kxy8U2bHPvN6nejcBh4jN7A== - dependencies: - debug "^3.1.0" - refractor@^2.4.1: version "2.10.0" resolved "https://registry.yarnpkg.com/refractor/-/refractor-2.10.0.tgz#4cc7efc0028a87924a9b31d82d129dec831a287b" @@ -18320,16 +18207,6 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== - typed-scss-modules@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/typed-scss-modules/-/typed-scss-modules-4.1.1.tgz#eab12f25511a329f8e4837842c3b484ffd66b449" @@ -19478,16 +19355,6 @@ zip-stream@^1.2.0: lodash "^4.8.0" readable-stream "^2.0.0" -"zkgroup@https://github.com/signalapp/signal-zkgroup-node.git#0d2b3874d2e671fa5fdcc2154065cc061f977672": - version "0.8.2" - resolved "https://github.com/signalapp/signal-zkgroup-node.git#0d2b3874d2e671fa5fdcc2154065cc061f977672" - dependencies: - "@types/ffi-napi" "^4.0.1" - "@types/ref-napi" "^3.0.1" - ffi-napi "4.0.3" - ref-array-napi "1.2.2" - ref-napi "3.0.3" - zod@3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/zod/-/zod-3.5.1.tgz#e93ce58e182bb76f7d29ccd24feee72611f9a129"