TypeAssert.ts 707 B

1234567891011121314151617181920212223242526
  1. import type { AssertRule } from '~/types/interfaces'
  2. import { useI18n } from 'vue-i18n'
  3. import ValidationUtils from '~/services/utils/validationUtils'
  4. export class TypeAssert implements AssertRule {
  5. supports(key: string): boolean {
  6. return key === 'type'
  7. }
  8. createRule(criteria: string): (value: unknown) => true | string {
  9. const validationUtils = new ValidationUtils()
  10. const { t } = useI18n()
  11. if (criteria === 'email') {
  12. return (email: string) =>
  13. validationUtils.validEmail(email) || t('email_error')
  14. }
  15. if (criteria === 'integer') {
  16. return (value: unknown) =>
  17. Number.isInteger(value) || t('need_to_be_integer')
  18. }
  19. return () => true
  20. }
  21. }