| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { ConstraintMetadata } from './metadata/ConstraintMetadata';
- import { ValidationMetadata } from './metadata/ValidationMetadata';
- import { ValidationTypes } from './validation/ValidationTypes';
- import { getFromContainer } from './container';
- import { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage';
- /**
- * Registers a custom validation decorator.
- */
- export function registerDecorator(options) {
- var constraintCls;
- if (options.validator instanceof Function) {
- constraintCls = options.validator;
- var constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator);
- if (constraintClasses.length > 1) {
- throw "More than one implementation of ValidatorConstraintInterface found for validator on: ".concat(options.target.name, ":").concat(options.propertyName);
- }
- }
- else {
- var validator_1 = options.validator;
- constraintCls = /** @class */ (function () {
- function CustomConstraint() {
- }
- CustomConstraint.prototype.validate = function (value, validationArguments) {
- return validator_1.validate(value, validationArguments);
- };
- CustomConstraint.prototype.defaultMessage = function (validationArguments) {
- if (validator_1.defaultMessage) {
- return validator_1.defaultMessage(validationArguments);
- }
- return '';
- };
- return CustomConstraint;
- }());
- getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async));
- }
- var validationMetadataArgs = {
- type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION,
- name: options.name,
- target: options.target,
- propertyName: options.propertyName,
- validationOptions: options.options,
- constraintCls: constraintCls,
- constraints: options.constraints,
- };
- getMetadataStorage().addValidationMetadata(new ValidationMetadata(validationMetadataArgs));
- }
- //# sourceMappingURL=register-decorator.js.map
|