@dismissible/nestjs-validation 0.1.0-canary.4b708a5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@dismissible/nestjs-validation",
3
+ "version": "0.1.0-canary.4b708a5.0",
4
+ "description": "Validation service module for NestJS applications using class-validator and class-transformer",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./src/index.mjs",
10
+ "require": "./src/index.js",
11
+ "types": "./src/index.d.ts"
12
+ }
13
+ },
14
+ "dependencies": {},
15
+ "peerDependencies": {
16
+ "@nestjs/common": "^11.0.0",
17
+ "class-validator": "^0.14.0",
18
+ "class-transformer": "^0.5.0"
19
+ },
20
+ "peerDependenciesMeta": {
21
+ "@nestjs/common": {
22
+ "optional": false
23
+ },
24
+ "class-validator": {
25
+ "optional": false
26
+ },
27
+ "class-transformer": {
28
+ "optional": false
29
+ }
30
+ },
31
+ "keywords": [
32
+ "nestjs",
33
+ "validation",
34
+ "class-validator",
35
+ "class-transformer",
36
+ "dto"
37
+ ],
38
+ "author": "",
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": ""
43
+ },
44
+ "type": "commonjs"
45
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './validation.service';
2
+ export * from './validation.module';
package/src/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./validation.service"), exports);
5
+ tslib_1.__exportStar(require("./validation.module"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/validation/src/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC;AACrC,8DAAoC"}
@@ -0,0 +1,2 @@
1
+ export declare class ValidationModule {
2
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const validation_service_1 = require("./validation.service");
7
+ let ValidationModule = class ValidationModule {
8
+ };
9
+ exports.ValidationModule = ValidationModule;
10
+ exports.ValidationModule = ValidationModule = tslib_1.__decorate([
11
+ (0, common_1.Module)({
12
+ providers: [validation_service_1.ValidationService],
13
+ exports: [validation_service_1.ValidationService],
14
+ })
15
+ ], ValidationModule);
16
+ //# sourceMappingURL=validation.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.module.js","sourceRoot":"","sources":["../../../../libs/validation/src/validation.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,6DAAyD;AAMlD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAJ5B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,sCAAiB,CAAC;QAC9B,OAAO,EAAE,CAAC,sCAAiB,CAAC;KAC7B,CAAC;GACW,gBAAgB,CAAG"}
@@ -0,0 +1,7 @@
1
+ import { ClassConstructor } from 'class-transformer';
2
+ export declare class ValidationService {
3
+ validateDto<T extends object>(dtoClass: ClassConstructor<T>, data: unknown): Promise<T>;
4
+ validateInstance<T extends object>(instance: T): Promise<void>;
5
+ private formatValidationErrors;
6
+ private extractErrorMessage;
7
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const class_validator_1 = require("class-validator");
7
+ const class_transformer_1 = require("class-transformer");
8
+ let ValidationService = class ValidationService {
9
+ async validateDto(dtoClass, data) {
10
+ if (data === null || data === undefined) {
11
+ throw new common_1.BadRequestException('Data cannot be null or undefined');
12
+ }
13
+ const dtoInstance = (0, class_transformer_1.plainToInstance)(dtoClass, data);
14
+ const validationErrors = await (0, class_validator_1.validate)(dtoInstance);
15
+ if (validationErrors.length > 0) {
16
+ const errorMessages = this.formatValidationErrors(validationErrors);
17
+ throw new common_1.BadRequestException(errorMessages);
18
+ }
19
+ return dtoInstance;
20
+ }
21
+ async validateInstance(instance) {
22
+ const validationErrors = await (0, class_validator_1.validate)(instance);
23
+ if (validationErrors.length > 0) {
24
+ const errorMessages = this.formatValidationErrors(validationErrors);
25
+ throw new common_1.BadRequestException(errorMessages);
26
+ }
27
+ }
28
+ formatValidationErrors(errors) {
29
+ return errors
30
+ .map((error) => this.extractErrorMessage(error))
31
+ .filter((message) => message.length > 0)
32
+ .join('; ');
33
+ }
34
+ extractErrorMessage(error) {
35
+ const messages = [];
36
+ // Add constraint messages
37
+ if (error.constraints) {
38
+ messages.push(...Object.values(error.constraints));
39
+ }
40
+ // Recursively extract messages from nested errors
41
+ if (error.children && error.children.length > 0) {
42
+ const childMessages = error.children
43
+ .map((child) => this.extractErrorMessage(child))
44
+ .filter((message) => message.length > 0);
45
+ messages.push(...childMessages);
46
+ }
47
+ return messages.join(', ');
48
+ }
49
+ };
50
+ exports.ValidationService = ValidationService;
51
+ exports.ValidationService = ValidationService = tslib_1.__decorate([
52
+ (0, common_1.Injectable)()
53
+ ], ValidationService);
54
+ //# sourceMappingURL=validation.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.service.js","sourceRoot":"","sources":["../../../../libs/validation/src/validation.service.ts"],"names":[],"mappings":";;;;AAAA,2CAAiE;AACjE,qDAA4D;AAC5D,yDAAsE;AAG/D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,KAAK,CAAC,WAAW,CAAmB,QAA6B,EAAE,IAAa;QAC9E,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,4BAAmB,CAAC,kCAAkC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,WAAW,GAAG,IAAA,mCAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,gBAAgB,GAAG,MAAM,IAAA,0BAAQ,EAAC,WAAqB,CAAC,CAAC;QAE/D,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACpE,MAAM,IAAI,4BAAmB,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAmB,QAAW;QAClD,MAAM,gBAAgB,GAAG,MAAM,IAAA,0BAAQ,EAAC,QAAkB,CAAC,CAAC;QAE5D,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACpE,MAAM,IAAI,4BAAmB,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,MAAyB;QACtD,OAAO,MAAM;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;aAC/C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;aACvC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAEO,mBAAmB,CAAC,KAAsB;QAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,0BAA0B;QAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,kDAAkD;QAClD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ;iBACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;iBAC/C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF,CAAA;AAnDY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CAmD7B"}