ValidationUtils.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**
  2. * Convert the constraint to a string to be shown in an error
  3. */
  4. export function constraintToString(constraint) {
  5. if (Array.isArray(constraint)) {
  6. return constraint.join(', ');
  7. }
  8. if (typeof constraint === 'symbol') {
  9. constraint = constraint.description;
  10. }
  11. return `${constraint}`;
  12. }
  13. export class ValidationUtils {
  14. static replaceMessageSpecialTokens(message, validationArguments) {
  15. let messageString;
  16. if (message instanceof Function) {
  17. messageString = message(validationArguments);
  18. }
  19. else if (typeof message === 'string') {
  20. messageString = message;
  21. }
  22. if (messageString && Array.isArray(validationArguments.constraints)) {
  23. validationArguments.constraints.forEach((constraint, index) => {
  24. messageString = messageString.replace(new RegExp(`\\$constraint${index + 1}`, 'g'), constraintToString(constraint));
  25. });
  26. }
  27. if (messageString &&
  28. validationArguments.value !== undefined &&
  29. validationArguments.value !== null &&
  30. typeof validationArguments.value === 'string')
  31. messageString = messageString.replace(/\$value/g, validationArguments.value);
  32. if (messageString)
  33. messageString = messageString.replace(/\$property/g, validationArguments.property);
  34. if (messageString)
  35. messageString = messageString.replace(/\$target/g, validationArguments.targetName);
  36. return messageString;
  37. }
  38. }
  39. //# sourceMappingURL=ValidationUtils.js.map