diff --git a/src/assetId.ts b/src/assetId.ts index 1cf3a4a..9ce641d 100644 --- a/src/assetId.ts +++ b/src/assetId.ts @@ -12,7 +12,7 @@ export interface AssetIdParams { } export class AssetId { - public static spec: IdentifierSpec = CAIP["19"].assetId; + public static spec: IdentifierSpec = CAIP["19"].blockNumberTag; public static parse(id: string): AssetIdParams { if (!isValidId(id, this.spec)) { diff --git a/src/spec.ts b/src/spec.ts index 273c02d..190b04f 100644 --- a/src/spec.ts +++ b/src/spec.ts @@ -87,28 +87,17 @@ const CAIP19AssetId: IdentifierSpec = { }, }; -const BlockNumberTag: IdentifierSpec = { - name: "blockNumberTag", - regex: "[0-9]{1,78}|latest", - parameters: { - delimiter: "", - values: { - 0: { - name: "blockNumberTag", - regex: "[0-9]{1,78}|latest", - }, - }, - }, -}; - const CAIP19BlockNumberTag: IdentifierSpec = { name: "blockNumberTag", - regex: ".*", + regex: "[-:a-zA-Z0-9]{13,226}", parameters: { delimiter: "#", values: { 0: CAIP19AssetId, - 2: BlockNumberTag, + 1: { + name: "blockNumberTag", + regex: "[0-9]{1,78}|latest", + }, }, }, }; @@ -119,6 +108,7 @@ export const CAIP = { "19": { assetName: AssetName, assetType: CAIP19AssetType, - assetId: CAIP19BlockNumberTag, + assetId: CAIP19AssetId, + blockNumberTag: CAIP19BlockNumberTag, }, }; diff --git a/test/assetId.test.ts b/test/assetId.test.ts index 2324ba3..659d29c 100644 --- a/test/assetId.test.ts +++ b/test/assetId.test.ts @@ -6,6 +6,7 @@ function assertInterface(result: AssetId) { expect(result.chainId.toString()).toEqual(data.CHAIN_ID_STRING); expect(result.assetName.toString()).toEqual(data.ASSET_NAME_STRING); expect(result.tokenId).toEqual(data.TOKEN_ID); + expect(result.blockNumberTag).toEqual(data.BLOCK_NUMBER_TAG); expect(result.toString()).toEqual(data.ASSET_ID_STRING); expect(result.toJSON()).toEqual(data.ASSET_ID_NESTED_PARAMS); }