diff --git a/lerna.json b/lerna.json index b59e7de1..7c6481d7 100644 --- a/lerna.json +++ b/lerna.json @@ -1,7 +1,7 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", "useWorkspaces": true, - "version": "6.0.0", + "version": "6.0.1-beta.0", "packages": [ "packages/*" ], diff --git a/package-lock.json b/package-lock.json index 4899adf7..fe8da281 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13188,7 +13188,7 @@ }, "packages/auth": { "name": "@multiversx/sdk-nestjs-auth", - "version": "6.0.0", + "version": "6.0.1-beta.0", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^14.0.0", @@ -13203,9 +13203,9 @@ "typescript": "^4.3.5" }, "peerDependencies": { - "@multiversx/sdk-nestjs-cache": "^6.0.0", - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", + "@multiversx/sdk-nestjs-cache": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-common": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-monitoring": "6.0.1-beta.0", "@nestjs/common": "^10.x" } }, @@ -13228,7 +13228,7 @@ }, "packages/cache": { "name": "@multiversx/sdk-nestjs-cache", - "version": "6.0.0", + "version": "6.0.1-beta.0", "license": "MIT", "dependencies": { "lru-cache": "^8.0.4", @@ -13246,9 +13246,9 @@ "typescript": "^4.3.5" }, "peerDependencies": { - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", - "@multiversx/sdk-nestjs-redis": "^6.0.0", + "@multiversx/sdk-nestjs-common": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-monitoring": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-redis": "6.0.1-beta.0", "@nestjs/common": "^10.x", "@nestjs/core": "^10.x" } @@ -13267,7 +13267,7 @@ }, "packages/common": { "name": "@multiversx/sdk-nestjs-common", - "version": "6.0.0", + "version": "6.0.1-beta.0", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^14.0.0", @@ -13284,7 +13284,7 @@ "typescript": "^4.3.5" }, "peerDependencies": { - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", + "@multiversx/sdk-nestjs-monitoring": "6.0.1-beta.0", "@nestjs/common": "^10.x", "@nestjs/config": "^3.x", "@nestjs/core": "^10.x", @@ -13298,7 +13298,7 @@ }, "packages/elastic": { "name": "@multiversx/sdk-nestjs-elastic", - "version": "6.0.0", + "version": "6.0.1-beta.0", "license": "MIT", "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.12.0", @@ -13307,13 +13307,13 @@ "typescript": "^4.3.5" }, "peerDependencies": { - "@multiversx/sdk-nestjs-http": "^6.0.0", + "@multiversx/sdk-nestjs-http": "6.0.1-beta.0", "@nestjs/common": "^10.x" } }, "packages/http": { "name": "@multiversx/sdk-nestjs-http", - "version": "6.0.0", + "version": "6.0.1-beta.0", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^14.0.0", @@ -13330,15 +13330,15 @@ "typescript": "^4.3.5" }, "peerDependencies": { - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", + "@multiversx/sdk-nestjs-common": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-monitoring": "6.0.1-beta.0", "@nestjs/common": "^10.x", "@nestjs/core": "^10.x" } }, "packages/monitoring": { "name": "@multiversx/sdk-nestjs-monitoring", - "version": "6.0.0", + "version": "6.0.1-beta.0", "license": "MIT", "dependencies": { "prom-client": "^14.0.1", @@ -13357,7 +13357,7 @@ }, "packages/rabbitmq": { "name": "@multiversx/sdk-nestjs-rabbitmq", - "version": "6.0.0", + "version": "6.0.1-beta.0", "license": "MIT", "dependencies": { "@golevelup/nestjs-rabbitmq": "4.0.0", @@ -13372,13 +13372,13 @@ "typescript": "^4.3.5" }, "peerDependencies": { - "@multiversx/sdk-nestjs-common": "^6.0.0", + "@multiversx/sdk-nestjs-common": "6.0.1-beta.0", "@nestjs/common": "^10.x" } }, "packages/redis": { "name": "@multiversx/sdk-nestjs-redis", - "version": "6.0.0", + "version": "6.0.1-beta.0", "license": "MIT", "dependencies": { "ioredis": "^5.2.3" diff --git a/packages/auth/package.json b/packages/auth/package.json index 1dadf52f..b8ba1c5c 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-auth", - "version": "6.0.0", + "version": "6.0.1-beta.0", "description": "Multiversx SDK Nestjs auth package", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -37,9 +37,9 @@ "jsonwebtoken": "^9.0.0" }, "peerDependencies": { - "@multiversx/sdk-nestjs-cache": "^6.0.0", - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", + "@multiversx/sdk-nestjs-cache": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-common": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-monitoring": "6.0.1-beta.0", "@nestjs/common": "^10.x" }, "publishConfig": { diff --git a/packages/cache/package.json b/packages/cache/package.json index 695b44d5..b0fd8d07 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-cache", - "version": "6.0.0", + "version": "6.0.1-beta.0", "description": "Multiversx SDK Nestjs cache package", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -40,9 +40,9 @@ "uuid": "^8.3.2" }, "peerDependencies": { - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", - "@multiversx/sdk-nestjs-redis": "^6.0.0", + "@multiversx/sdk-nestjs-common": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-monitoring": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-redis": "6.0.1-beta.0", "@nestjs/common": "^10.x", "@nestjs/core": "^10.x" }, diff --git a/packages/common/package.json b/packages/common/package.json index f6c6da23..abe14326 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-common", - "version": "6.0.0", + "version": "6.0.1-beta.0", "description": "Multiversx SDK Nestjs common package", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -39,7 +39,7 @@ "winston": "^3.7.2" }, "peerDependencies": { - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", + "@multiversx/sdk-nestjs-monitoring": "6.0.1-beta.0", "@nestjs/common": "^10.x", "@nestjs/config": "^3.x", "@nestjs/core": "^10.x", diff --git a/packages/common/src/utils/address.utils.ts b/packages/common/src/utils/address.utils.ts index 57f5e568..bbcabb0f 100644 --- a/packages/common/src/utils/address.utils.ts +++ b/packages/common/src/utils/address.utils.ts @@ -4,26 +4,25 @@ import { BinaryUtils } from "./binary.utils"; export class AddressUtils { static bech32Encode(publicKey: string) { - return Address.fromHex(publicKey).bech32(); + return Address.newFromHex(publicKey).bech32(); } static bech32Decode(address: string) { - return Address.fromBech32(address).hex(); + return Address.newFromBech32(address).hex(); } static isAddressValid(address: string): boolean { try { - Address.fromBech32(address); + Address.newFromBech32(address); return true; } catch (error) { return false; } } - static isValidHexAddress(address: string): boolean { try { - Address.fromHex(address); + Address.newFromHex(address); return true; } catch (error) { return false; @@ -65,7 +64,7 @@ export class AddressUtils { } try { - return new Address(address).isContractAddress(); + return Address.newFromBech32(address).isSmartContract(); } catch (error) { const logger = new Logger(AddressUtils.name); logger.error(`Error when determining whether address '${address}' is a smart contract address`); diff --git a/packages/common/src/utils/token.utils.ts b/packages/common/src/utils/token.utils.ts index 02e5cc8a..6a191f26 100644 --- a/packages/common/src/utils/token.utils.ts +++ b/packages/common/src/utils/token.utils.ts @@ -1,6 +1,6 @@ export class TokenUtils { - static tokenValidateRegex: RegExp = /^[A-Za-z0-9]{3,10}-[a-fA-F0-9]{6}$/; - static nftValidateRegex: RegExp = /^[A-Za-z0-9]{3,10}-[a-fA-F0-9]{6}-[a-fA-F0-9]{2,}$/; + static tokenValidateRegex: RegExp = /^([a-z0-9]{1,4}-)?[A-Za-z0-9]{3,10}-[a-fA-F0-9]{6}$/; + static nftValidateRegex: RegExp = /^([a-z0-9]{1,4}-)?[A-Za-z0-9]{3,10}-[a-fA-F0-9]{6}-[a-fA-F0-9]{2,}$/; static isToken(identifier: string): boolean { return this.tokenValidateRegex.test(identifier); @@ -13,4 +13,17 @@ export class TokenUtils { static isNft(identifier: string): boolean { return this.nftValidateRegex.test(identifier); } + + static isSovereignIdentifier(identifier: string): boolean { + const numParts = identifier.split("-").length; + if (this.isCollection(identifier)) { + return numParts === 3; + } + + if (this.isNft(identifier)) { + return numParts === 4; + } + + return false; + } } diff --git a/packages/common/test/utils/token.utils.spec.ts b/packages/common/test/utils/token.utils.spec.ts index d5a68ebc..01e1954a 100644 --- a/packages/common/test/utils/token.utils.spec.ts +++ b/packages/common/test/utils/token.utils.spec.ts @@ -3,20 +3,47 @@ import { TokenUtils } from "../../src/utils/token.utils"; describe('isToken', () => { it('Check isToken function', () => { expect(TokenUtils.isToken('MEX-455c57')).toBeTruthy(); - expect(TokenUtils.isToken('EWLD-e23800-455c74')).toBeFalsy(); + expect(TokenUtils.isToken('sov-EWLD-455c74')).toBeTruthy(); + expect(TokenUtils.isToken('')).toBeFalsy(); + expect(TokenUtils.isToken('sov-')).toBeFalsy(); + expect(TokenUtils.isToken('sov-EWLD-455c74-00aa')).toBeFalsy(); + expect(TokenUtils.isToken('SOV-EWLD-455c74')).toBeFalsy(); + expect(TokenUtils.isToken('sov-sov-e23800-455c74')).toBeFalsy(); }); }); describe('isCollection', () => { it('Check isCollection function', () => { expect(TokenUtils.isCollection('MOS-b9b4b2')).toBeTruthy(); - expect(TokenUtils.isCollection('MOS-b9b4b2-455c74')).toBeFalsy(); + expect(TokenUtils.isCollection('sov-MOS-b9b4b2')).toBeTruthy(); + expect(TokenUtils.isCollection('')).toBeFalsy(); + expect(TokenUtils.isCollection('sov-')).toBeFalsy(); + expect(TokenUtils.isCollection('SOV-MOS-b9b4b2')).toBeFalsy(); + expect(TokenUtils.isCollection('sov-MOS-b9b4b2-455c74')).toBeFalsy(); }); }); describe('isNft', () => { it('Check isNft function', () => { expect(TokenUtils.isNft('MOS-b9b4b2-947a3912')).toBeTruthy(); + expect(TokenUtils.isNft('sov-MOS-b9b4b2-947a3912')).toBeTruthy(); + expect(TokenUtils.isNft('')).toBeFalsy(); + expect(TokenUtils.isNft('sov-')).toBeFalsy(); expect(TokenUtils.isNft('MOS-b9b4b2')).toBeFalsy(); + expect(TokenUtils.isNft('sov-MOS-b9b4b2')).toBeFalsy(); + expect(TokenUtils.isNft('SOV-MOS-b9b4b2')).toBeFalsy(); + }); + }); + + describe('isSovereignIdentifier', () => { + it('Check isSovereignIdentifier function', () => { + expect(TokenUtils.isSovereignIdentifier('sov-MOS-b9b4b2-947a3912')).toBeTruthy(); + expect(TokenUtils.isSovereignIdentifier('sov-MOS-b9b4b2')).toBeTruthy(); + expect(TokenUtils.isSovereignIdentifier('')).toBeFalsy(); + expect(TokenUtils.isSovereignIdentifier('sov-')).toBeFalsy(); + expect(TokenUtils.isSovereignIdentifier('sov-MOS-b9b4b')).toBeFalsy(); + expect(TokenUtils.isSovereignIdentifier('SOV-MOS-b9b4b2-947a3912')).toBeFalsy(); + expect(TokenUtils.isSovereignIdentifier('SOV-MOS-b9b4b2')).toBeFalsy(); + expect(TokenUtils.isSovereignIdentifier('MOS-b9b4b2-947a3912')).toBeFalsy(); }); }); diff --git a/packages/elastic/package.json b/packages/elastic/package.json index 347b9da4..7107f0f4 100644 --- a/packages/elastic/package.json +++ b/packages/elastic/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-elastic", - "version": "6.0.0", + "version": "6.0.1-beta.0", "description": "Multiversx SDK Nestjs elastic package", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -31,7 +31,7 @@ "typescript": "^4.3.5" }, "peerDependencies": { - "@multiversx/sdk-nestjs-http": "^6.0.0", + "@multiversx/sdk-nestjs-http": "6.0.1-beta.0", "@nestjs/common": "^10.x" }, "publishConfig": { diff --git a/packages/http/package.json b/packages/http/package.json index 9ffddea5..f64fdbaf 100644 --- a/packages/http/package.json +++ b/packages/http/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-http", - "version": "6.0.0", + "version": "6.0.1-beta.0", "description": "Multiversx SDK Nestjs http package", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -39,8 +39,8 @@ "axios": "^1.7.4" }, "peerDependencies": { - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", + "@multiversx/sdk-nestjs-common": "6.0.1-beta.0", + "@multiversx/sdk-nestjs-monitoring": "6.0.1-beta.0", "@nestjs/common": "^10.x", "@nestjs/core": "^10.x" }, diff --git a/packages/monitoring/package.json b/packages/monitoring/package.json index 05d16740..b04deea3 100644 --- a/packages/monitoring/package.json +++ b/packages/monitoring/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-monitoring", - "version": "6.0.0", + "version": "6.0.1-beta.0", "description": "Multiversx SDK Nestjs monitoring package", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/rabbitmq/package.json b/packages/rabbitmq/package.json index 6b96db11..095627b6 100644 --- a/packages/rabbitmq/package.json +++ b/packages/rabbitmq/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-rabbitmq", - "version": "6.0.0", + "version": "6.0.1-beta.0", "description": "Multiversx SDK Nestjs rabbitmq client package", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -37,7 +37,7 @@ "uuid": "^8.3.2" }, "peerDependencies": { - "@multiversx/sdk-nestjs-common": "^6.0.0", + "@multiversx/sdk-nestjs-common": "6.0.1-beta.0", "@nestjs/common": "^10.x" }, "publishConfig": { diff --git a/packages/redis/package.json b/packages/redis/package.json index fc481f80..a53bebdf 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-redis", - "version": "6.0.0", + "version": "6.0.1-beta.0", "description": "Multiversx SDK Nestjs redis client package", "main": "lib/index.js", "types": "lib/index.d.ts",