@dismissible/nestjs-validation 2.0.2-alpha.f50def9.0 → 2.0.2

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dismissible/nestjs-validation",
3
- "version": "2.0.2-alpha.f50def9.0",
3
+ "version": "2.0.2",
4
4
  "description": "Validation service module for NestJS applications using class-validator and class-transformer",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
@@ -18,10 +18,10 @@
18
18
  ],
19
19
  "dependencies": {},
20
20
  "peerDependencies": {
21
- "@nestjs/common": "10.0.0 || ^11.0.0",
22
- "class-validator": "0.14.3",
23
- "class-transformer": "0.5.1",
24
- "reflect-metadata": "0.2.2"
21
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
22
+ "class-validator": "^0.14.3",
23
+ "class-transformer": "^0.5.1",
24
+ "reflect-metadata": "^0.2.2"
25
25
  },
26
26
  "peerDependenciesMeta": {
27
27
  "@nestjs/common": {
@@ -54,4 +54,4 @@
54
54
  "access": "public"
55
55
  },
56
56
  "type": "commonjs"
57
- }
57
+ }
package/src/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './validation.service';
2
+ export * from './validation.service.interface';
2
3
  export * from './validation.module';
3
4
  export * from './transform-boolean.decorator';
4
5
  export * from './transform-comma-separated.decorator';
6
+ export * from './transform-number.decorator';
package/src/index.js CHANGED
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./validation.service"), exports);
5
+ tslib_1.__exportStar(require("./validation.service.interface"), exports);
5
6
  tslib_1.__exportStar(require("./validation.module"), exports);
6
7
  tslib_1.__exportStar(require("./transform-boolean.decorator"), exports);
7
8
  tslib_1.__exportStar(require("./transform-comma-separated.decorator"), exports);
9
+ tslib_1.__exportStar(require("./transform-number.decorator"), exports);
8
10
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/validation/src/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC;AACrC,8DAAoC;AACpC,wEAA8C;AAC9C,gFAAsD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/validation/src/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC;AACrC,yEAA+C;AAC/C,8DAAoC;AACpC,wEAA8C;AAC9C,gFAAsD;AACtD,uEAA6C"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Transforms string values to number, preserving existing number values.
3
+ * Useful for environment variable configuration where number values may be passed as strings.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * class Config {
8
+ * @IsNumber()
9
+ * @TransformNumber()
10
+ * maxItems!: number;
11
+ * }
12
+ * ```
13
+ */
14
+ export declare function TransformNumber(): PropertyDecorator;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransformNumber = TransformNumber;
4
+ const class_transformer_1 = require("class-transformer");
5
+ /**
6
+ * Transforms string values to number, preserving existing number values.
7
+ * Useful for environment variable configuration where number values may be passed as strings.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * class Config {
12
+ * @IsNumber()
13
+ * @TransformNumber()
14
+ * maxItems!: number;
15
+ * }
16
+ * ```
17
+ */
18
+ function TransformNumber() {
19
+ return (0, class_transformer_1.Transform)(({ value }) => {
20
+ if (typeof value === 'number') {
21
+ return value;
22
+ }
23
+ if (typeof value === 'string') {
24
+ return Number(value);
25
+ }
26
+ return value;
27
+ });
28
+ }
29
+ //# sourceMappingURL=transform-number.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-number.decorator.js","sourceRoot":"","sources":["../../../../libs/validation/src/transform-number.decorator.ts"],"names":[],"mappings":";;AAeA,0CAUC;AAzBD,yDAA8C;AAE9C;;;;;;;;;;;;GAYG;AACH,SAAgB,eAAe;IAC7B,OAAO,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -4,13 +4,17 @@ exports.ValidationModule = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@nestjs/common");
6
6
  const validation_service_1 = require("./validation.service");
7
+ const validation_service_interface_1 = require("./validation.service.interface");
7
8
  let ValidationModule = class ValidationModule {
8
9
  };
9
10
  exports.ValidationModule = ValidationModule;
10
11
  exports.ValidationModule = ValidationModule = tslib_1.__decorate([
11
12
  (0, common_1.Module)({
12
- providers: [validation_service_1.ValidationService],
13
- exports: [validation_service_1.ValidationService],
13
+ providers: [
14
+ validation_service_1.ValidationService,
15
+ { provide: validation_service_interface_1.DISMISSIBLE_VALIDATION_SERVICE, useExisting: validation_service_1.ValidationService },
16
+ ],
17
+ exports: [validation_service_1.ValidationService, validation_service_interface_1.DISMISSIBLE_VALIDATION_SERVICE],
14
18
  })
15
19
  ], ValidationModule);
16
20
  //# sourceMappingURL=validation.module.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"validation.module.js","sourceRoot":"","sources":["../../../../libs/validation/src/validation.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,6DAAyD;AACzD,iFAAgF;AASzE,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAP5B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,sCAAiB;YACjB,EAAE,OAAO,EAAE,6DAA8B,EAAE,WAAW,EAAE,sCAAiB,EAAE;SAC5E;QACD,OAAO,EAAE,CAAC,sCAAiB,EAAE,6DAA8B,CAAC;KAC7D,CAAC;GACW,gBAAgB,CAAG"}
@@ -1,5 +1,6 @@
1
1
  import { ClassConstructor } from 'class-transformer';
2
- export declare class ValidationService {
2
+ import { IValidationService } from './validation.service.interface';
3
+ export declare class ValidationService implements IValidationService {
3
4
  validateDto<T extends object>(dtoClass: ClassConstructor<T>, data: unknown): Promise<T>;
4
5
  validateInstance<T extends object>(instance: T): Promise<void>;
5
6
  private formatValidationErrors;
@@ -0,0 +1,24 @@
1
+ import { ClassConstructor } from 'class-transformer';
2
+ /**
3
+ * Injection token for the validation service provider.
4
+ */
5
+ export declare const DISMISSIBLE_VALIDATION_SERVICE: unique symbol;
6
+ /**
7
+ * Interface for validation service providers.
8
+ */
9
+ export interface IValidationService {
10
+ /**
11
+ * Validate data against a DTO class and return the validated instance.
12
+ * @param dtoClass The DTO class to validate against
13
+ * @param data The data to validate
14
+ * @returns The validated DTO instance
15
+ * @throws BadRequestException if validation fails
16
+ */
17
+ validateDto<T extends object>(dtoClass: ClassConstructor<T>, data: unknown): Promise<T>;
18
+ /**
19
+ * Validate an existing instance.
20
+ * @param instance The instance to validate
21
+ * @throws BadRequestException if validation fails
22
+ */
23
+ validateInstance<T extends object>(instance: T): Promise<void>;
24
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DISMISSIBLE_VALIDATION_SERVICE = void 0;
4
+ /**
5
+ * Injection token for the validation service provider.
6
+ */
7
+ exports.DISMISSIBLE_VALIDATION_SERVICE = Symbol('DISMISSIBLE_VALIDATION_SERVICE');
8
+ //# sourceMappingURL=validation.service.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.service.interface.js","sourceRoot":"","sources":["../../../../libs/validation/src/validation.service.interface.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,8BAA8B,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC"}
@@ -1 +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,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,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;AAjDY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CAiD7B"}
1
+ {"version":3,"file":"validation.service.js","sourceRoot":"","sources":["../../../../libs/validation/src/validation.service.ts"],"names":[],"mappings":";;;;AAAA,2CAAiE;AACjE,qDAA4D;AAC5D,yDAAsE;AAI/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,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,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;AAjDY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CAiD7B"}