diff --git a/packages/solana-wallet-snap/src/core/handlers/onClientRequest/validation.ts b/packages/solana-wallet-snap/src/core/handlers/onClientRequest/validation.ts index 94998ece1..463962023 100644 --- a/packages/solana-wallet-snap/src/core/handlers/onClientRequest/validation.ts +++ b/packages/solana-wallet-snap/src/core/handlers/onClientRequest/validation.ts @@ -1,4 +1,5 @@ import { AssetStruct, FeeType } from '@metamask/keyring-api'; +import { UuidStruct } from '@metamask/snap-networks-utils'; import { literal } from '@metamask/snaps-sdk'; import type { Infer } from '@metamask/superstruct'; import { @@ -32,7 +33,6 @@ import { Base64Struct, PositiveNumberStringStruct, SolanaAddressStruct, - UuidStruct, } from '../../validation/structs'; import { ClientRequestMethod } from './types'; diff --git a/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionAdded.ts b/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionAdded.ts index bf38a0f4f..429f9f59d 100644 --- a/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionAdded.ts +++ b/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionAdded.ts @@ -1,10 +1,11 @@ +import { UuidStruct } from '@metamask/snap-networks-utils'; import { InternalError } from '@metamask/snaps-sdk'; import type { OnCronjobHandler } from '@metamask/snaps-sdk'; import { assert, literal, object, string } from '@metamask/superstruct'; import { analyticsService, keyring } from '../../../../snapContext'; import logger from '../../../utils/logger'; -import { NetworkStruct, UuidStruct } from '../../../validation/structs'; +import { NetworkStruct } from '../../../validation/structs'; import { ScheduleBackgroundEventMethod } from './ScheduleBackgroundEventMethod'; export const OnTransactionAddedRequestStruct = object({ diff --git a/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionApproved.ts b/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionApproved.ts index a50b4c029..e87ee7ca5 100644 --- a/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionApproved.ts +++ b/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionApproved.ts @@ -1,10 +1,11 @@ +import { UuidStruct } from '@metamask/snap-networks-utils'; import { InternalError } from '@metamask/snaps-sdk'; import type { OnCronjobHandler } from '@metamask/snaps-sdk'; import { assert, literal, object, string } from '@metamask/superstruct'; import { analyticsService, keyring } from '../../../../snapContext'; import logger from '../../../utils/logger'; -import { NetworkStruct, UuidStruct } from '../../../validation/structs'; +import { NetworkStruct } from '../../../validation/structs'; import { ScheduleBackgroundEventMethod } from './ScheduleBackgroundEventMethod'; export const OnTransactionApprovedRequestStruct = object({ diff --git a/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionRejected.ts b/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionRejected.ts index c9242bc15..4b2e5492f 100644 --- a/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionRejected.ts +++ b/packages/solana-wallet-snap/src/core/handlers/onCronjob/backgroundEvents/onTransactionRejected.ts @@ -1,10 +1,11 @@ +import { UuidStruct } from '@metamask/snap-networks-utils'; import { InternalError } from '@metamask/snaps-sdk'; import type { OnCronjobHandler } from '@metamask/snaps-sdk'; import { assert, literal, object, string } from '@metamask/superstruct'; import { analyticsService, keyring } from '../../../../snapContext'; import logger from '../../../utils/logger'; -import { NetworkStruct, UuidStruct } from '../../../validation/structs'; +import { NetworkStruct } from '../../../validation/structs'; import { ScheduleBackgroundEventMethod } from './ScheduleBackgroundEventMethod'; export const OnTransactionRejectedRequestStruct = object({ diff --git a/packages/solana-wallet-snap/src/core/handlers/onKeyringRequest/Keyring.test.ts b/packages/solana-wallet-snap/src/core/handlers/onKeyringRequest/Keyring.test.ts index 25c37521a..695433771 100644 --- a/packages/solana-wallet-snap/src/core/handlers/onKeyringRequest/Keyring.test.ts +++ b/packages/solana-wallet-snap/src/core/handlers/onKeyringRequest/Keyring.test.ts @@ -62,7 +62,7 @@ jest.mock('../../utils/errors', () => ({ trackError: jest.fn().mockResolvedValue('tracked-error-id'), })); -const NON_EXISTENT_ACCOUNT_ID = '123e4567-e89b-12d3-a456-426614174009'; +const NON_EXISTENT_ACCOUNT_ID = '123e4567-e89b-42d3-a456-426614174009'; (globalThis as any).snap = { request: jest.fn().mockImplementation(async ({ method }) => { diff --git a/packages/solana-wallet-snap/src/core/handlers/onKeyringRequest/Keyring.ts b/packages/solana-wallet-snap/src/core/handlers/onKeyringRequest/Keyring.ts index 9c1e9be66..34ab8aa71 100644 --- a/packages/solana-wallet-snap/src/core/handlers/onKeyringRequest/Keyring.ts +++ b/packages/solana-wallet-snap/src/core/handlers/onKeyringRequest/Keyring.ts @@ -24,6 +24,7 @@ import type { ExportedAccount, KeyringSnapRpc, } from '@metamask/keyring-api/v2'; +import { UuidStruct } from '@metamask/snap-networks-utils'; import type { Logger } from '@metamask/snap-networks-utils'; import type { CaipAssetType, JsonRpcRequest } from '@metamask/snaps-sdk'; import { @@ -82,7 +83,6 @@ import { ListAccountAssetsStruct, ListAccountTransactionsStruct, NetworkStruct, - UuidStruct, } from '../../validation/structs'; import { validateRequest, validateResponse } from '../../validation/validators'; import { SolanaKeyringRequestStruct } from './structs'; diff --git a/packages/solana-wallet-snap/src/core/test/mocks/solana-keyring-accounts.ts b/packages/solana-wallet-snap/src/core/test/mocks/solana-keyring-accounts.ts index efbdd02c0..cdaeacf2b 100644 --- a/packages/solana-wallet-snap/src/core/test/mocks/solana-keyring-accounts.ts +++ b/packages/solana-wallet-snap/src/core/test/mocks/solana-keyring-accounts.ts @@ -62,7 +62,7 @@ export const MOCK_SOLANA_KEYRING_ACCOUNT_1: SolanaKeyringAccount = { derivationPath: `m/44'/501'/1'/0'`, index: 1, type: 'solana:data-account', - id: '123e4567-e89b-12d3-a456-426614174001', + id: '123e4567-e89b-42d3-a456-426614174001', options: { entropySource: MOCK_SEED_PHRASE_ENTROPY_SOURCE, derivationPath: `m/44'/501'/1'/0'`, @@ -88,7 +88,7 @@ export const MOCK_SOLANA_KEYRING_ACCOUNT_2: SolanaKeyringAccount = { derivationPath: `m/44'/501'/2'/0'`, index: 2, type: 'solana:data-account', - id: '123e4567-e89b-12d3-a456-426614174002', + id: '123e4567-e89b-42d3-a456-426614174002', options: { entropySource: MOCK_SEED_PHRASE_ENTROPY_SOURCE, derivationPath: `m/44'/501'/2'/0'`, @@ -114,7 +114,7 @@ export const MOCK_SOLANA_KEYRING_ACCOUNT_3: SolanaKeyringAccount = { derivationPath: `m/44'/501'/3'/0'`, index: 3, type: 'solana:data-account', - id: '123e4567-e89b-12d3-a456-426614174003', + id: '123e4567-e89b-42d3-a456-426614174003', options: { entropySource: MOCK_SEED_PHRASE_ENTROPY_SOURCE, derivationPath: `m/44'/501'/3'/0'`, @@ -140,7 +140,7 @@ export const MOCK_SOLANA_KEYRING_ACCOUNT_4: SolanaKeyringAccount = { derivationPath: `m/44'/501'/4'/0'`, index: 4, type: 'solana:data-account', - id: '123e4567-e89b-12d3-a456-426614174004', + id: '123e4567-e89b-42d3-a456-426614174004', options: { entropySource: MOCK_SEED_PHRASE_ENTROPY_SOURCE, derivationPath: `m/44'/501'/4'/0'`, @@ -166,7 +166,7 @@ export const MOCK_SOLANA_KEYRING_ACCOUNT_5: SolanaKeyringAccount = { derivationPath: `m/44'/501'/5'/0'`, index: 5, type: 'solana:data-account', - id: '123e4567-e89b-12d3-a456-426614174005', + id: '123e4567-e89b-42d3-a456-426614174005', options: { entropySource: MOCK_SEED_PHRASE_ENTROPY_SOURCE, derivationPath: `m/44'/501'/5'/0'`, @@ -191,7 +191,7 @@ export const MOCK_SOLANA_SEED_PHRASE_2_KEYRING_ACCOUNT_0: SolanaKeyringAccount = entropySource: MOCK_SEED_PHRASE_2_ENTROPY_SOURCE, derivationPath: `m/44'/501'/0'/0'`, index: 0, - id: '123e4567-e89b-12d3-a456-426614174006', + id: '123e4567-e89b-42d3-a456-426614174006', type: 'solana:data-account', address: '8fi28SQKWhzCaH5c2RrHLbpgQJctNG6NFrfZyCj51rJX', options: { @@ -219,7 +219,7 @@ export const MOCK_SOLANA_SEED_PHRASE_2_KEYRING_ACCOUNT_1: SolanaKeyringAccount = entropySource: MOCK_SEED_PHRASE_2_ENTROPY_SOURCE, derivationPath: `m/44'/501'/1'/0'`, index: 1, - id: '123e4567-e89b-12d3-a456-426614174007', + id: '123e4567-e89b-42d3-a456-426614174007', type: 'solana:data-account', address: '4yQr5hGkYfXykkv8Q7YxAGBxkB9bd9ntLL7hJaz1tGTv', options: { diff --git a/packages/solana-wallet-snap/src/core/validation/structs.test.ts b/packages/solana-wallet-snap/src/core/validation/structs.test.ts index aa23d1360..88752fb02 100644 --- a/packages/solana-wallet-snap/src/core/validation/structs.test.ts +++ b/packages/solana-wallet-snap/src/core/validation/structs.test.ts @@ -1,24 +1,9 @@ /* eslint-disable jest/require-to-throw-message */ import { assert, is } from '@metamask/superstruct'; -import { Base58Struct, Base64Struct, UuidStruct } from './structs'; +import { Base58Struct, Base64Struct } from './structs'; describe('structs', () => { - describe('Uuid', () => { - it('validates valid UUIDs', () => { - const validUuids = [ - 'c747acb9-1b2b-4352-b9da-3d658fcc3cc7', - '2507a426-ac26-43c4-a82a-250f5d999398', - '52d181f4-d050-4971-b448-17c15107fa3b', - ]; - - validUuids.forEach((uuid) => { - expect(() => assert(uuid, UuidStruct)).not.toThrow(); - expect(is(uuid, UuidStruct)).toBe(true); - }); - }); - }); - describe('Base58Struct', () => { it('validates valid Base58 strings', () => { const validBase58Strings = [ diff --git a/packages/solana-wallet-snap/src/core/validation/structs.ts b/packages/solana-wallet-snap/src/core/validation/structs.ts index f1eb9accb..fe764e7a1 100644 --- a/packages/solana-wallet-snap/src/core/validation/structs.ts +++ b/packages/solana-wallet-snap/src/core/validation/structs.ts @@ -1,5 +1,6 @@ import { CaipAssetTypeStruct, SolMethod } from '@metamask/keyring-api'; import { ExportAccountOptionsStruct } from '@metamask/keyring-api/v2'; +import { UuidStruct } from '@metamask/snap-networks-utils'; import type { Struct } from '@metamask/superstruct'; import { array, @@ -17,12 +18,6 @@ import { address } from '@solana/kit'; import { Network } from '../constants/solana'; -// create a uuid validation -export const UuidStruct = pattern( - string(), - /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/u, -); - export const PositiveNumberStringStruct = pattern( string(), /^(?!0\d)(\d+(\.\d+)?)$/u,