From ea47f3acb8a80c67daed6e69e9c87c6b7c03c166 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Tue, 28 Jan 2025 17:10:18 +0100 Subject: [PATCH 1/2] feat: add new CaipAssetTypeOrId struct + type --- src/caip-types.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/caip-types.ts b/src/caip-types.ts index 13a0d9fa..b2007613 100644 --- a/src/caip-types.ts +++ b/src/caip-types.ts @@ -27,6 +27,9 @@ export const CAIP_ASSET_TYPE_REGEX = export const CAIP_ASSET_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; +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-2 chain ID, i.e., a human-readable namespace and reference. */ @@ -120,6 +123,14 @@ export const CaipAssetIdStruct = ); export type CaipAssetId = Infer; +/** + * 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; + /** Known CAIP namespaces. */ export enum KnownCaipNamespace { /** BIP-122 (Bitcoin) compatible chains. */ From 92b0279086b7de81d01b8f720a1e9955bd72f638 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Tue, 28 Jan 2025 17:13:01 +0100 Subject: [PATCH 2/2] test: update exports --- src/index.test.ts | 1 + src/node.test.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/index.test.ts b/src/index.test.ts index d5cff297..c3402921 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -20,6 +20,7 @@ describe('index', () => { "CaipAssetIdStruct", "CaipAssetNamespaceStruct", "CaipAssetReferenceStruct", + "CaipAssetTypeOrIdStruct", "CaipAssetTypeStruct", "CaipChainIdStruct", "CaipNamespaceStruct", diff --git a/src/node.test.ts b/src/node.test.ts index 30383f46..3808fd47 100644 --- a/src/node.test.ts +++ b/src/node.test.ts @@ -20,6 +20,7 @@ describe('node', () => { "CaipAssetIdStruct", "CaipAssetNamespaceStruct", "CaipAssetReferenceStruct", + "CaipAssetTypeOrIdStruct", "CaipAssetTypeStruct", "CaipChainIdStruct", "CaipNamespaceStruct",