1 | import { ConstraintMetadata } from './metadata/ConstraintMetadata';
|
2 | import { ValidationMetadata } from './metadata/ValidationMetadata';
|
3 | import { ValidationTypes } from './validation/ValidationTypes';
|
4 | import { getFromContainer } from './container';
|
5 | import { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage';
|
6 |
|
7 |
|
8 |
|
9 | export 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 = (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 |
|
\ | No newline at end of file |