UNPKG

2.18 kBJavaScriptView Raw
1import { ConstraintMetadata } from './metadata/ConstraintMetadata';
2import { ValidationMetadata } from './metadata/ValidationMetadata';
3import { ValidationTypes } from './validation/ValidationTypes';
4import { getFromContainer } from './container';
5import { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage';
6/**
7 * Registers a custom validation decorator.
8 */
9export function registerDecorator(options) {
10 var constraintCls;
11 if (options.validator instanceof Function) {
12 constraintCls = options.validator;
13 var constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator);
14 if (constraintClasses.length > 1) {
15 throw "More than one implementation of ValidatorConstraintInterface found for validator on: " + options.target.name + ":" + options.propertyName;
16 }
17 }
18 else {
19 var validator_1 = options.validator;
20 constraintCls = /** @class */ (function () {
21 function CustomConstraint() {
22 }
23 CustomConstraint.prototype.validate = function (value, validationArguments) {
24 return validator_1.validate(value, validationArguments);
25 };
26 CustomConstraint.prototype.defaultMessage = function (validationArguments) {
27 if (validator_1.defaultMessage) {
28 return validator_1.defaultMessage(validationArguments);
29 }
30 return '';
31 };
32 return CustomConstraint;
33 }());
34 getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async));
35 }
36 var validationMetadataArgs = {
37 type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION,
38 target: options.target,
39 propertyName: options.propertyName,
40 validationOptions: options.options,
41 constraintCls: constraintCls,
42 constraints: options.constraints,
43 };
44 getMetadataStorage().addValidationMetadata(new ValidationMetadata(validationMetadataArgs));
45}
46//# sourceMappingURL=register-decorator.js.map
\No newline at end of file