register-decorator.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. * Registers a custom validation decorator.
  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: ".concat(options.target.name, ":").concat(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. name: options.name,
  39. target: options.target,
  40. propertyName: options.propertyName,
  41. validationOptions: options.options,
  42. constraintCls: constraintCls,
  43. constraints: options.constraints,
  44. };
  45. getMetadataStorage().addValidationMetadata(new ValidationMetadata(validationMetadataArgs));
  46. }
  47. //# sourceMappingURL=register-decorator.js.map