1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.registerDecorator = void 0;
|
4 | const ConstraintMetadata_1 = require("./metadata/ConstraintMetadata");
|
5 | const ValidationMetadata_1 = require("./metadata/ValidationMetadata");
|
6 | const ValidationTypes_1 = require("./validation/ValidationTypes");
|
7 | const container_1 = require("./container");
|
8 | const MetadataStorage_1 = require("./metadata/MetadataStorage");
|
9 |
|
10 |
|
11 |
|
12 | function registerDecorator(options) {
|
13 | let constraintCls;
|
14 | if (options.validator instanceof Function) {
|
15 | constraintCls = options.validator;
|
16 | const constraintClasses = (0, container_1.getFromContainer)(MetadataStorage_1.MetadataStorage).getTargetValidatorConstraints(options.validator);
|
17 | if (constraintClasses.length > 1) {
|
18 | throw `More than one implementation of ValidatorConstraintInterface found for validator on: ${options.target.name}:${options.propertyName}`;
|
19 | }
|
20 | }
|
21 | else {
|
22 | const validator = options.validator;
|
23 | constraintCls = class CustomConstraint {
|
24 | validate(value, validationArguments) {
|
25 | return validator.validate(value, validationArguments);
|
26 | }
|
27 | defaultMessage(validationArguments) {
|
28 | if (validator.defaultMessage) {
|
29 | return validator.defaultMessage(validationArguments);
|
30 | }
|
31 | return '';
|
32 | }
|
33 | };
|
34 | (0, MetadataStorage_1.getMetadataStorage)().addConstraintMetadata(new ConstraintMetadata_1.ConstraintMetadata(constraintCls, options.name, options.async));
|
35 | }
|
36 | const validationMetadataArgs = {
|
37 | type: options.name && ValidationTypes_1.ValidationTypes.isValid(options.name) ? options.name : ValidationTypes_1.ValidationTypes.CUSTOM_VALIDATION,
|
38 | target: options.target,
|
39 | propertyName: options.propertyName,
|
40 | validationOptions: options.options,
|
41 | constraintCls: constraintCls,
|
42 | constraints: options.constraints,
|
43 | };
|
44 | (0, MetadataStorage_1.getMetadataStorage)().addValidationMetadata(new ValidationMetadata_1.ValidationMetadata(validationMetadataArgs));
|
45 | }
|
46 | exports.registerDecorator = registerDecorator;
|
47 |
|
\ | No newline at end of file |