diff --git a/lerna.json b/lerna.json index 44670251..61deb6da 100644 --- a/lerna.json +++ b/lerna.json @@ -1,7 +1,7 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", "useWorkspaces": true, - "version": "1.2.0", + "version": "1.2.1", "packages": [ "packages/*" ], diff --git a/package-lock.json b/package-lock.json index 5b78c642..715b54f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3724,6 +3724,12 @@ "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", "dev": true }, + "node_modules/@types/validator": { + "version": "13.7.17", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.17.tgz", + "integrity": "sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ==", + "dev": true + }, "node_modules/@types/yargs": { "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", @@ -13788,6 +13794,14 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/validator": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/walk-up-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", @@ -14117,7 +14131,7 @@ }, "packages/auth": { "name": "@multiversx/sdk-nestjs-auth", - "version": "1.2.0", + "version": "1.2.1", "license": "GPL-3.0-or-later", "dependencies": { "@multiversx/sdk-core": "*", @@ -14250,7 +14264,7 @@ }, "packages/cache": { "name": "@multiversx/sdk-nestjs-cache", - "version": "1.2.0", + "version": "1.2.1", "license": "GPL-3.0-or-later", "dependencies": { "lru-cache": "^8.0.4", @@ -14308,7 +14322,7 @@ }, "packages/common": { "name": "@multiversx/sdk-nestjs-common", - "version": "1.2.0", + "version": "1.2.1", "license": "GPL-3.0-or-later", "dependencies": { "@multiversx/sdk-core": "^11.4.1", @@ -14317,11 +14331,13 @@ "@multiversx/sdk-network-providers": "^1.3.0", "nest-winston": "^1.6.2", "uuid": "^8.3.2", + "validator": "^13.9.0", "winston": "^3.7.2" }, "devDependencies": { "@types/node": "^16.11.10", "@types/uuid": "^8.3.4", + "@types/validator": "^13.7.17", "@typescript-eslint/eslint-plugin": "^5.12.0", "@typescript-eslint/parser": "^5.16.0", "eslint": "^8.9.0", @@ -14341,7 +14357,7 @@ }, "packages/elastic": { "name": "@multiversx/sdk-nestjs-elastic", - "version": "1.2.0", + "version": "1.2.1", "license": "GPL-3.0-or-later", "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.12.0", @@ -14356,7 +14372,7 @@ }, "packages/http": { "name": "@multiversx/sdk-nestjs-http", - "version": "1.2.0", + "version": "1.2.1", "license": "GPL-3.0-or-later", "dependencies": { "agentkeepalive": "^4.3.0", @@ -14386,7 +14402,7 @@ }, "packages/monitoring": { "name": "@multiversx/sdk-nestjs-monitoring", - "version": "1.2.0", + "version": "1.2.1", "license": "GPL-3.0-or-later", "dependencies": { "prom-client": "^14.0.1", @@ -14405,7 +14421,7 @@ }, "packages/rabbitmq": { "name": "@multiversx/sdk-nestjs-rabbitmq", - "version": "1.2.0", + "version": "1.2.1", "license": "GPL-3.0-or-later", "dependencies": { "@golevelup/nestjs-rabbitmq": "^3.0.0", @@ -14426,7 +14442,7 @@ }, "packages/redis": { "name": "@multiversx/sdk-nestjs-redis", - "version": "1.2.0", + "version": "1.2.1", "license": "GPL-3.0-or-later", "dependencies": { "ioredis": "^5.2.3" @@ -15959,12 +15975,14 @@ "@multiversx/sdk-network-providers": "^1.3.0", "@types/node": "^16.11.10", "@types/uuid": "^8.3.4", + "@types/validator": "^13.7.17", "@typescript-eslint/eslint-plugin": "^5.12.0", "@typescript-eslint/parser": "^5.16.0", "eslint": "^8.9.0", "nest-winston": "^1.6.2", "typescript": "^4.3.5", "uuid": "^8.3.2", + "validator": "^13.9.0", "winston": "^3.7.2" }, "dependencies": { @@ -17531,6 +17549,12 @@ "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", "dev": true }, + "@types/validator": { + "version": "13.7.17", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.17.tgz", + "integrity": "sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ==", + "dev": true + }, "@types/yargs": { "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", @@ -25177,6 +25201,11 @@ "builtins": "^5.0.0" } }, + "validator": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==" + }, "walk-up-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", diff --git a/packages/auth/package.json b/packages/auth/package.json index 8ae9948c..fcb21bee 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-auth", - "version": "1.2.0", + "version": "1.2.1", "description": "Multiversx SDK Nestjs auth package", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/cache/package.json b/packages/cache/package.json index 18543dcf..c8ece4cd 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-cache", - "version": "1.2.0", + "version": "1.2.1", "description": "Multiversx SDK Nestjs cache package", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/common/package.json b/packages/common/package.json index 4a54b837..01055ce6 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-common", - "version": "1.2.0", + "version": "1.2.1", "description": "Multiversx SDK Nestjs common package", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -27,6 +27,7 @@ "devDependencies": { "@types/node": "^16.11.10", "@types/uuid": "^8.3.4", + "@types/validator": "^13.7.17", "@typescript-eslint/eslint-plugin": "^5.12.0", "@typescript-eslint/parser": "^5.16.0", "eslint": "^8.9.0", @@ -39,6 +40,7 @@ "@multiversx/sdk-network-providers": "^1.3.0", "nest-winston": "^1.6.2", "uuid": "^8.3.2", + "validator": "^13.9.0", "winston": "^3.7.2" }, "peerDependencies": { diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index 6e75491f..dc73eee5 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -37,6 +37,7 @@ export * from './pipes/parse.record.pipe'; export * from './pipes/parse.token.pipe'; export * from './pipes/parse.token.or.nft.pipe'; export * from './pipes/parse.transaction.hash.pipe'; +export * from './pipes/parse.email.pipe'; export * from './common/entities/amount'; export * from './common/config/erdnest.config.service'; export * from './common/swappable-settings'; diff --git a/packages/common/src/pipes/parse.email.pipe.ts b/packages/common/src/pipes/parse.email.pipe.ts new file mode 100644 index 00000000..a36074be --- /dev/null +++ b/packages/common/src/pipes/parse.email.pipe.ts @@ -0,0 +1,12 @@ +import { PipeTransform, Injectable, BadRequestException } from '@nestjs/common'; +import isEmail from 'validator/lib/isEmail'; + +@Injectable() +export class EmailValidationPipe implements PipeTransform { + transform(value: any): string { + if (!isEmail(value)) { + throw new BadRequestException('Invalid email address'); + } + return value; + } +} diff --git a/packages/common/test/pipes/parse.email.pipe.spec.ts b/packages/common/test/pipes/parse.email.pipe.spec.ts new file mode 100644 index 00000000..5581bc17 --- /dev/null +++ b/packages/common/test/pipes/parse.email.pipe.spec.ts @@ -0,0 +1,22 @@ +import { BadRequestException } from "@nestjs/common"; +import { EmailValidationPipe } from "../../src/pipes/parse.email.pipe" +describe('EmailValidationPipe', () => { + let pipe: EmailValidationPipe; + + beforeEach(() => { + pipe = new EmailValidationPipe(); + }); + + it('should pass when a valid email is provided', () => { + const email = 'test@example.com'; + const transformedValue = pipe.transform(email); + expect(transformedValue).toBe(email); + }); + + it('should throw BadRequestException when an invalid email is provided', () => { + const email = 'invalidemail'; + expect(() => { + pipe.transform(email); + }).toThrow(BadRequestException); + }); +}); \ No newline at end of file diff --git a/packages/elastic/package.json b/packages/elastic/package.json index 78cd44ad..3a688daf 100644 --- a/packages/elastic/package.json +++ b/packages/elastic/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-elastic", - "version": "1.2.0", + "version": "1.2.1", "description": "Multiversx SDK Nestjs elastic package", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/http/package.json b/packages/http/package.json index 3392b29f..0757740a 100644 --- a/packages/http/package.json +++ b/packages/http/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-http", - "version": "1.2.0", + "version": "1.2.1", "description": "Multiversx SDK Nestjs http package", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/monitoring/package.json b/packages/monitoring/package.json index dfb7ee22..5ff71558 100644 --- a/packages/monitoring/package.json +++ b/packages/monitoring/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-monitoring", - "version": "1.2.0", + "version": "1.2.1", "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 06f5095d..c728e12d 100644 --- a/packages/rabbitmq/package.json +++ b/packages/rabbitmq/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-rabbitmq", - "version": "1.2.0", + "version": "1.2.1", "description": "Multiversx SDK Nestjs rabbitmq client package", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/redis/package.json b/packages/redis/package.json index 28fd6cab..0769ed2e 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -1,6 +1,6 @@ { "name": "@multiversx/sdk-nestjs-redis", - "version": "1.2.0", + "version": "1.2.1", "description": "Multiversx SDK Nestjs redis client package", "main": "lib/index.js", "types": "lib/index.d.ts",