import * as defaultRules from '@vee-validate/rules' import { configure, defineRule } from 'vee-validate' import type { Composer } from 'vue-i18n' export default defineNuxtPlugin((nuxtApp) => { for (const rule in defaultRules) { if (['default', 'url'].includes(rule)) continue defineRule(rule, defaultRules[rule]) } defineRule('url', (value, params): boolean => { const optionalProtocol = Array.isArray(params) ? params[0] : params.optionalProtocol if (optionalProtocol) return /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/.test(value) return defaultRules.url(value, params) }) const i18n = nuxtApp.$i18n as Composer if (i18n) { configure({ generateMessage: (context) => { return i18n.t(`validation.${context.rule!.name}`, context.rule!.params) }, }) } return {} })