diff --git a/packages/keyring-api/package.json b/packages/keyring-api/package.json index 90131955..e80b3027 100644 --- a/packages/keyring-api/package.json +++ b/packages/keyring-api/package.json @@ -48,7 +48,7 @@ "dependencies": { "@metamask/keyring-utils": "workspace:^", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.0.1", + "@metamask/utils": "^11.1.0", "bech32": "^2.0.0" }, "devDependencies": { diff --git a/packages/keyring-api/src/api/account.test.ts b/packages/keyring-api/src/api/account.test.ts index b59f7305..c01afc87 100644 --- a/packages/keyring-api/src/api/account.test.ts +++ b/packages/keyring-api/src/api/account.test.ts @@ -52,7 +52,7 @@ describe('api', () => { scopes: [scope], }; expect(() => assert(account, KeyringAccountStruct)).toThrow( - `At path: scopes.0 -- Expected a string matching \`/^(?[-a-z0-9]{3,8}):(?[-_a-zA-Z0-9]{1,32})$/\` but received "${scope}"`, + `At path: scopes.0 -- Expected a value of type \`CaipChainId\`, but received: \`"${scope}"\``, ); }); }); diff --git a/packages/keyring-api/src/api/caip.test.ts b/packages/keyring-api/src/api/caip.test.ts deleted file mode 100644 index 1cb75739..00000000 --- a/packages/keyring-api/src/api/caip.test.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { isCaipAssetId, isCaipAssetType } from './caip'; - -describe('isCaipAssetType', () => { - // Imported from: https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-19.md#test-cases - it.each([ - 'eip155:1/slip44:60', - 'bip122:000000000019d6689c085ae165831e93/slip44:0', - 'cosmos:cosmoshub-3/slip44:118', - 'bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2', - 'cosmos:Binance-Chain-Tigris/slip44:714', - 'cosmos:iov-mainnet/slip44:234', - 'lip9:9ee11e9df416b18b/slip44:134', - 'eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f', - 'eip155:1/erc721:0x06012c8cf97BEaD5deAe237070F9587f8E7A266d', - ])('returns true for a valid asset type %s', (id) => { - expect(isCaipAssetType(id)).toBe(true); - }); - - it.each([ - true, - false, - null, - undefined, - 1, - {}, - [], - '', - '!@#$%^&*()', - 'foo', - 'eip155', - 'eip155:', - 'eip155:1', - 'eip155:1:', - 'eip155:1:0x0000000000000000000000000000000000000000:2', - 'bip122', - 'bip122:', - 'bip122:000000000019d6689c085ae165831e93', - 'bip122:000000000019d6689c085ae165831e93/', - 'bip122:000000000019d6689c085ae165831e93/tooooooolong', - 'bip122:000000000019d6689c085ae165831e93/tooooooolong:asset', - 'eip155:1/erc721', - 'eip155:1/erc721:', - 'eip155:1/erc721:0x06012c8cf97BEaD5deAe237070F9587f8E7A266d/', - ])('returns false for an invalid asset type %s', (id) => { - expect(isCaipAssetType(id)).toBe(false); - }); -}); - -describe('isCaipAssetId', () => { - // Imported from: https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-19.md#test-cases - it.each([ - 'eip155:1/erc721:0x06012c8cf97BEaD5deAe237070F9587f8E7A266d/771769', - 'hedera:mainnet/nft:0.0.55492/12', - ])('returns true for a valid asset id %s', (id) => { - expect(isCaipAssetId(id)).toBe(true); - }); - - it.each([ - true, - false, - null, - undefined, - 1, - {}, - [], - '', - '!@#$%^&*()', - 'foo', - 'eip155', - 'eip155:', - 'eip155:1', - 'eip155:1:', - 'eip155:1:0x0000000000000000000000000000000000000000:2', - 'bip122', - 'bip122:', - 'bip122:000000000019d6689c085ae165831e93', - 'bip122:000000000019d6689c085ae165831e93/', - 'bip122:000000000019d6689c085ae165831e93/tooooooolong', - 'bip122:000000000019d6689c085ae165831e93/tooooooolong:asset', - 'eip155:1/erc721', - 'eip155:1/erc721:', - 'eip155:1/erc721:0x06012c8cf97BEaD5deAe237070F9587f8E7A266d/', - ])('returns false for an invalid asset id %s', (id) => { - expect(isCaipAssetType(id)).toBe(false); - }); -}); diff --git a/packages/keyring-api/src/api/caip.ts b/packages/keyring-api/src/api/caip.ts deleted file mode 100644 index aa1d03a1..00000000 --- a/packages/keyring-api/src/api/caip.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { definePattern } from '@metamask/keyring-utils'; -import { type Infer } from '@metamask/superstruct'; -import type { CaipAssetId, CaipAssetType } from '@metamask/utils'; -import { - CAIP_ASSET_TYPE_REGEX, - CAIP_ASSET_ID_REGEX, - isCaipAssetType, - isCaipAssetId, -} from '@metamask/utils'; - -const CAIP_ASSET_TYPE_OR_ID_REGEX = - /^(?(?[-a-z0-9]{3,8}):(?[-_a-zA-Z0-9]{1,32}))\/(?[-a-z0-9]{3,8}):(?[-.%a-zA-Z0-9]{1,128})(\/(?[-.%a-zA-Z0-9]{1,78}))?$/u; - -/** - * A CAIP-19 asset type identifier, i.e., a human-readable type of asset identifier. - */ -export const CaipAssetTypeStruct = definePattern( - 'CaipAssetType', - CAIP_ASSET_TYPE_REGEX, -); -export type { CaipAssetType }; -export { isCaipAssetType }; - -/** - * A CAIP-19 asset ID identifier, i.e., a human-readable type of asset ID. - */ -export const CaipAssetIdStruct = definePattern( - 'CaipAssetId', - CAIP_ASSET_ID_REGEX, -); -export type { CaipAssetId }; -export { isCaipAssetId }; - -/** - * A CAIP-19 asset type or asset ID identifier, i.e., a human-readable type of asset identifier. - */ -export const CaipAssetTypeOrIdStruct = definePattern< - CaipAssetType | CaipAssetId ->('CaipAssetTypeOrId', CAIP_ASSET_TYPE_OR_ID_REGEX); -export type CaipAssetTypeOrId = Infer; diff --git a/packages/keyring-api/src/api/index.ts b/packages/keyring-api/src/api/index.ts index a1288a7a..b61cd383 100644 --- a/packages/keyring-api/src/api/index.ts +++ b/packages/keyring-api/src/api/index.ts @@ -1,7 +1,6 @@ export * from './account'; export * from './asset'; export * from './balance'; -export * from './caip'; export * from './export'; export * from './request'; export * from './response'; diff --git a/packages/keyring-api/src/api/keyring.ts b/packages/keyring-api/src/api/keyring.ts index deb5bebf..2f0538f8 100644 --- a/packages/keyring-api/src/api/keyring.ts +++ b/packages/keyring-api/src/api/keyring.ts @@ -1,11 +1,10 @@ /* eslint-disable @typescript-eslint/no-redundant-type-constituents */ // This rule seems to be triggering a false positive on the `KeyringAccount`. -import type { Json } from '@metamask/utils'; +import type { Json, CaipAssetType, CaipAssetTypeOrId } from '@metamask/utils'; import type { KeyringAccount } from './account'; import type { Balance } from './balance'; -import type { CaipAssetType, CaipAssetTypeOrId } from './caip'; import type { KeyringAccountData } from './export'; import type { Paginated, Pagination } from './pagination'; import type { KeyringRequest } from './request'; diff --git a/packages/keyring-api/src/events.ts b/packages/keyring-api/src/events.ts index c3c95295..8767e2d4 100644 --- a/packages/keyring-api/src/events.ts +++ b/packages/keyring-api/src/events.ts @@ -6,10 +6,13 @@ import { } from '@metamask/keyring-utils'; import type { Infer } from '@metamask/superstruct'; import { array, boolean, literal, record, string } from '@metamask/superstruct'; -import { CaipAssetTypeStruct, JsonStruct } from '@metamask/utils'; - import { + CaipAssetTypeStruct, CaipAssetTypeOrIdStruct, + JsonStruct, +} from '@metamask/utils'; + +import { FungibleAssetAmountStruct, KeyringAccountStruct, TransactionStruct, diff --git a/packages/keyring-api/src/rpc.ts b/packages/keyring-api/src/rpc.ts index f4040101..bee19d89 100644 --- a/packages/keyring-api/src/rpc.ts +++ b/packages/keyring-api/src/rpc.ts @@ -8,18 +8,20 @@ import { string, union, } from '@metamask/superstruct'; -import { JsonStruct } from '@metamask/utils'; +import { + JsonStruct, + CaipAssetTypeStruct, + CaipAssetTypeOrIdStruct, +} from '@metamask/utils'; import { BalanceStruct, - CaipAssetTypeStruct, KeyringAccountDataStruct, KeyringAccountStruct, KeyringRequestStruct, KeyringResponseStruct, TransactionsPageStruct, PaginationStruct, - CaipAssetTypeOrIdStruct, } from './api'; /** diff --git a/packages/keyring-eth-hd/package.json b/packages/keyring-eth-hd/package.json index 173437d2..70d09601 100644 --- a/packages/keyring-eth-hd/package.json +++ b/packages/keyring-eth-hd/package.json @@ -48,7 +48,7 @@ "@metamask/eth-sig-util": "^8.1.2", "@metamask/key-tree": "^10.0.2", "@metamask/scure-bip39": "^2.1.1", - "@metamask/utils": "^11.0.1", + "@metamask/utils": "^11.1.0", "ethereum-cryptography": "^2.1.2" }, "devDependencies": { diff --git a/packages/keyring-eth-ledger-bridge/package.json b/packages/keyring-eth-ledger-bridge/package.json index 94b5ec5a..bb54fd8f 100644 --- a/packages/keyring-eth-ledger-bridge/package.json +++ b/packages/keyring-eth-ledger-bridge/package.json @@ -63,7 +63,7 @@ "@ledgerhq/types-devices": "^6.25.3", "@ledgerhq/types-live": "^6.52.0", "@metamask/auto-changelog": "^3.4.4", - "@metamask/utils": "^11.0.1", + "@metamask/utils": "^11.1.0", "@ts-bridge/cli": "^0.6.1", "@types/ethereumjs-tx": "^1.0.1", "@types/hdkey": "^2.0.1", diff --git a/packages/keyring-eth-simple/package.json b/packages/keyring-eth-simple/package.json index 90c77b4f..34c5366c 100644 --- a/packages/keyring-eth-simple/package.json +++ b/packages/keyring-eth-simple/package.json @@ -46,7 +46,7 @@ "dependencies": { "@ethereumjs/util": "^8.1.0", "@metamask/eth-sig-util": "^8.1.2", - "@metamask/utils": "^11.0.1", + "@metamask/utils": "^11.1.0", "ethereum-cryptography": "^2.1.2", "randombytes": "^2.1.0" }, diff --git a/packages/keyring-internal-api/package.json b/packages/keyring-internal-api/package.json index 51bd3369..58a64ec0 100644 --- a/packages/keyring-internal-api/package.json +++ b/packages/keyring-internal-api/package.json @@ -48,7 +48,7 @@ "@metamask/keyring-api": "workspace:^", "@metamask/keyring-utils": "workspace:^", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.0.1" + "@metamask/utils": "^11.1.0" }, "devDependencies": { "@lavamoat/allow-scripts": "^3.2.1", diff --git a/packages/keyring-internal-snap-client/package.json b/packages/keyring-internal-snap-client/package.json index 1f766cf8..09b8c4a6 100644 --- a/packages/keyring-internal-snap-client/package.json +++ b/packages/keyring-internal-snap-client/package.json @@ -57,7 +57,7 @@ "@metamask/snaps-controllers": "^9.10.0", "@metamask/snaps-sdk": "^6.7.0", "@metamask/snaps-utils": "^8.3.0", - "@metamask/utils": "^11.0.1", + "@metamask/utils": "^11.1.0", "@ts-bridge/cli": "^0.6.1", "@types/jest": "^29.5.12", "@types/node": "^20.12.12", diff --git a/packages/keyring-snap-bridge/package.json b/packages/keyring-snap-bridge/package.json index 28b4f7ff..cc02843b 100644 --- a/packages/keyring-snap-bridge/package.json +++ b/packages/keyring-snap-bridge/package.json @@ -45,7 +45,7 @@ "@metamask/keyring-internal-snap-client": "workspace:^", "@metamask/keyring-utils": "workspace:^", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.0.1", + "@metamask/utils": "^11.1.0", "@types/uuid": "^9.0.8", "uuid": "^9.0.1" }, diff --git a/packages/keyring-snap-client/package.json b/packages/keyring-snap-client/package.json index 0a162fe1..54fe8692 100644 --- a/packages/keyring-snap-client/package.json +++ b/packages/keyring-snap-client/package.json @@ -57,7 +57,7 @@ "@lavamoat/preinstall-always-fail": "^2.1.0", "@metamask/auto-changelog": "^3.4.4", "@metamask/providers": "^18.3.1", - "@metamask/utils": "^11.0.1", + "@metamask/utils": "^11.1.0", "@ts-bridge/cli": "^0.6.1", "@types/jest": "^29.5.12", "@types/node": "^20.12.12", diff --git a/packages/keyring-snap-client/src/KeyringClient.test.ts b/packages/keyring-snap-client/src/KeyringClient.test.ts index ba3295f1..2cdb4417 100644 --- a/packages/keyring-snap-client/src/KeyringClient.test.ts +++ b/packages/keyring-snap-client/src/KeyringClient.test.ts @@ -1,11 +1,10 @@ import type { - CaipAssetType, - CaipAssetTypeOrId, KeyringAccount, KeyringRequest, KeyringResponse, } from '@metamask/keyring-api'; import { KeyringRpcMethod } from '@metamask/keyring-api'; +import type { CaipAssetType, CaipAssetTypeOrId } from '@metamask/utils'; import { KeyringClient } from '.'; // Import from `index.ts` to test the public API diff --git a/packages/keyring-snap-client/src/KeyringClient.ts b/packages/keyring-snap-client/src/KeyringClient.ts index f8537396..477f07e6 100644 --- a/packages/keyring-snap-client/src/KeyringClient.ts +++ b/packages/keyring-snap-client/src/KeyringClient.ts @@ -4,11 +4,9 @@ import type { KeyringRequest, KeyringAccountData, KeyringResponse, - CaipAssetType, Balance, TransactionsPage, Pagination, - CaipAssetTypeOrId, } from '@metamask/keyring-api'; import { ApproveRequestResponseStruct, @@ -31,7 +29,7 @@ import { import type { JsonRpcRequest } from '@metamask/keyring-utils'; import { strictMask } from '@metamask/keyring-utils'; import { assert } from '@metamask/superstruct'; -import type { Json } from '@metamask/utils'; +import type { CaipAssetType, CaipAssetTypeOrId, Json } from '@metamask/utils'; import { v4 as uuid } from 'uuid'; export type Sender = { diff --git a/packages/keyring-snap-sdk/package.json b/packages/keyring-snap-sdk/package.json index 50b1f136..a4fc84d8 100644 --- a/packages/keyring-snap-sdk/package.json +++ b/packages/keyring-snap-sdk/package.json @@ -48,7 +48,7 @@ "@metamask/keyring-utils": "workspace:^", "@metamask/snaps-sdk": "^6.7.0", "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.0.1", + "@metamask/utils": "^11.1.0", "webextension-polyfill": "^0.12.0" }, "devDependencies": { diff --git a/packages/keyring-utils/package.json b/packages/keyring-utils/package.json index 93b79223..c710f57e 100644 --- a/packages/keyring-utils/package.json +++ b/packages/keyring-utils/package.json @@ -46,7 +46,7 @@ }, "dependencies": { "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^11.0.1", + "@metamask/utils": "^11.1.0", "bitcoin-address-validation": "^2.2.3" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index db1fdccb..0759c704 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1690,7 +1690,7 @@ __metadata: "@metamask/eth-sig-util": "npm:^8.1.2" "@metamask/key-tree": "npm:^10.0.2" "@metamask/scure-bip39": "npm:^2.1.1" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^29.5.12" deepmerge: "npm:^4.2.2" @@ -1716,7 +1716,7 @@ __metadata: "@ledgerhq/types-live": "npm:^6.52.0" "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/eth-sig-util": "npm:^8.1.2" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/ethereumjs-tx": "npm:^1.0.1" "@types/hdkey": "npm:^2.0.1" @@ -1783,7 +1783,7 @@ __metadata: "@lavamoat/preinstall-always-fail": "npm:^2.1.0" "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/eth-sig-util": "npm:^8.1.2" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/ethereumjs-tx": "npm:^1.0.1" "@types/jest": "npm:^29.5.12" @@ -1820,7 +1820,7 @@ __metadata: "@metamask/snaps-sdk": "npm:^6.7.0" "@metamask/snaps-utils": "npm:^8.3.0" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^29.5.12" "@types/node": "npm:^20.12.12" @@ -1957,7 +1957,7 @@ __metadata: "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/keyring-utils": "workspace:^" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^29.5.12" "@types/node": "npm:^20.12.12" @@ -1985,7 +1985,7 @@ __metadata: "@metamask/keyring-api": "workspace:^" "@metamask/keyring-utils": "workspace:^" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^29.5.12" "@types/node": "npm:^20.12.12" @@ -2016,7 +2016,7 @@ __metadata: "@metamask/snaps-controllers": "npm:^9.10.0" "@metamask/snaps-sdk": "npm:^6.7.0" "@metamask/snaps-utils": "npm:^8.3.0" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^29.5.12" "@types/node": "npm:^20.12.12" @@ -2044,7 +2044,7 @@ __metadata: "@metamask/keyring-utils": "workspace:^" "@metamask/providers": "npm:^18.3.1" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^29.5.12" "@types/node": "npm:^20.12.12" @@ -2078,7 +2078,7 @@ __metadata: "@metamask/providers": "npm:^18.3.1" "@metamask/snaps-sdk": "npm:^6.7.0" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^29.5.12" "@types/node": "npm:^20.12.12" @@ -2106,7 +2106,7 @@ __metadata: "@lavamoat/preinstall-always-fail": "npm:^2.1.0" "@metamask/auto-changelog": "npm:^3.4.4" "@metamask/superstruct": "npm:^3.1.0" - "@metamask/utils": "npm:^11.0.1" + "@metamask/utils": "npm:^11.1.0" "@ts-bridge/cli": "npm:^0.6.1" "@types/jest": "npm:^29.5.12" "@types/node": "npm:^20.12.12" @@ -2391,9 +2391,9 @@ __metadata: languageName: node linkType: hard -"@metamask/utils@npm:^11.0.1": - version: 11.0.1 - resolution: "@metamask/utils@npm:11.0.1" +"@metamask/utils@npm:^11.0.1, @metamask/utils@npm:^11.1.0": + version: 11.1.0 + resolution: "@metamask/utils@npm:11.1.0" dependencies: "@ethereumjs/tx": "npm:^4.2.0" "@metamask/superstruct": "npm:^3.1.0" @@ -2404,7 +2404,7 @@ __metadata: pony-cause: "npm:^2.1.10" semver: "npm:^7.5.4" uuid: "npm:^9.0.1" - checksum: 10/3949d16c8021bfb5f70e3b1c99f097ffaf43158116734197b039b32be6aabecb12178deb62c0b182e45295b0865618636324020059821c5b053029d8bdc90d70 + checksum: 10/756f13987881fe26adaa0a54354bc5af20cedee4dd228a736d481697dc634adb9e6e54d8f1dcc1d487b2376ab4ba8c576ecbb24beab2fb63aff721d0d5c0f5fe languageName: node linkType: hard