chore: Types renames
This commit is contained in:
parent
8e3bacab3c
commit
62e65687d1
@ -4,8 +4,9 @@ import validationMessages from '@/validation/messages'
|
||||
|
||||
import {
|
||||
ValidationContext,
|
||||
CheckRuleFn,
|
||||
CreateMessageFn,
|
||||
ValidationRuleFn,
|
||||
ValidationMessageFn,
|
||||
ValidationMessageI18NFn,
|
||||
} from '@/validation/validator'
|
||||
|
||||
export interface FormularioOptions {
|
||||
@ -18,7 +19,7 @@ export interface FormularioOptions {
|
||||
* The base formulario library.
|
||||
*/
|
||||
export default class Formulario {
|
||||
public validationRules: Record<string, CheckRuleFn> = {}
|
||||
public validationRules: Record<string, ValidationRuleFn> = {}
|
||||
public validationMessages: Record<string, Function> = {}
|
||||
|
||||
constructor (options?: FormularioOptions) {
|
||||
@ -43,16 +44,16 @@ export default class Formulario {
|
||||
/**
|
||||
* Get validation rules by merging any passed in with global rules.
|
||||
*/
|
||||
getRules (extendWith: Record<string, CheckRuleFn> = {}): Record<string, CheckRuleFn> {
|
||||
getRules (extendWith: Record<string, ValidationRuleFn> = {}): Record<string, ValidationRuleFn> {
|
||||
return merge(this.validationRules, extendWith)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get validation messages by merging any passed in with global messages.
|
||||
*/
|
||||
getMessages (vm: Vue, extendWith: Record<string, Function>): Record<string, CreateMessageFn> {
|
||||
getMessages (vm: Vue, extendWith: Record<string, ValidationMessageI18NFn|string>): Record<string, ValidationMessageFn> {
|
||||
const raw = merge(this.validationMessages || {}, extendWith)
|
||||
const messages: Record<string, CreateMessageFn> = {}
|
||||
const messages: Record<string, ValidationMessageFn> = {}
|
||||
|
||||
for (const name in raw) {
|
||||
messages[name] = (context: ValidationContext, ...args: any[]): string => {
|
||||
|
@ -15,8 +15,8 @@ import {
|
||||
} from 'vue-property-decorator'
|
||||
import { arrayify, has, shallowEqualObjects, snakeToCamel } from './utils'
|
||||
import {
|
||||
CheckRuleFn,
|
||||
CreateMessageFn,
|
||||
ValidationRuleFn,
|
||||
ValidationMessageI18NFn,
|
||||
processConstraints,
|
||||
validate,
|
||||
Violation,
|
||||
@ -47,8 +47,8 @@ export default class FormularioInput extends Vue {
|
||||
}) name!: string
|
||||
|
||||
@Prop({ default: '' }) validation!: string|any[]
|
||||
@Prop({ default: () => ({}) }) validationRules!: Record<string, CheckRuleFn>
|
||||
@Prop({ default: () => ({}) }) validationMessages!: Record<string, CreateMessageFn|string>
|
||||
@Prop({ default: () => ({}) }) validationRules!: Record<string, ValidationRuleFn>
|
||||
@Prop({ default: () => ({}) }) validationMessages!: Record<string, ValidationMessageI18NFn|string>
|
||||
@Prop({
|
||||
default: VALIDATION_BEHAVIOR.DEMAND,
|
||||
validator: behavior => Object.values(VALIDATION_BEHAVIOR).includes(behavior)
|
||||
@ -99,16 +99,16 @@ export default class FormularioInput extends Vue {
|
||||
})
|
||||
}
|
||||
|
||||
get normalizedValidationRules (): Record<string, CheckRuleFn> {
|
||||
const rules: Record<string, CheckRuleFn> = {}
|
||||
get normalizedValidationRules (): Record<string, ValidationRuleFn> {
|
||||
const rules: Record<string, ValidationRuleFn> = {}
|
||||
Object.keys(this.validationRules).forEach(key => {
|
||||
rules[snakeToCamel(key)] = this.validationRules[key]
|
||||
})
|
||||
return rules
|
||||
}
|
||||
|
||||
get normalizedValidationMessages (): Record<string, any> {
|
||||
const messages: Record<string, any> = {}
|
||||
get normalizedValidationMessages (): Record<string, ValidationMessageI18NFn|string> {
|
||||
const messages: Record<string, ValidationMessageI18NFn|string> = {}
|
||||
Object.keys(this.validationMessages).forEach((key) => {
|
||||
messages[snakeToCamel(key)] = this.validationMessages[key]
|
||||
})
|
||||
|
@ -29,7 +29,7 @@ export default {
|
||||
/**
|
||||
* The value is not a letter.
|
||||
*/
|
||||
alpha (vm: Vue, context: Record<string, any>): string {
|
||||
alpha (vm: Vue, context: ValidationContext): string {
|
||||
return vm.$t('validation.alpha', context)
|
||||
},
|
||||
|
||||
@ -175,7 +175,7 @@ export default {
|
||||
/**
|
||||
* Value is not a url.
|
||||
*/
|
||||
url (vm: Vue, context: Record<string, any>): string {
|
||||
url (vm: Vue, context: ValidationContext): string {
|
||||
return vm.$t('validation.url.default', context)
|
||||
}
|
||||
}
|
||||
|
@ -11,14 +11,18 @@ export interface Violation {
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface CheckRuleFn {
|
||||
export interface ValidationRuleFn {
|
||||
(context: ValidationContext, ...args: any[]): Promise<boolean>|boolean;
|
||||
}
|
||||
|
||||
export interface CreateMessageFn {
|
||||
export interface ValidationMessageFn {
|
||||
(context: ValidationContext, ...args: any[]): string;
|
||||
}
|
||||
|
||||
export interface ValidationMessageI18NFn {
|
||||
(vm: Vue, context: ValidationContext, ...args: any[]): string;
|
||||
}
|
||||
|
||||
export interface ValidationContext {
|
||||
// The value of the field (do not mutate!),
|
||||
value: any;
|
||||
@ -34,21 +38,20 @@ export type ValidatorGroup = {
|
||||
}
|
||||
|
||||
export function createValidator (
|
||||
ruleFn: CheckRuleFn,
|
||||
ruleFn: ValidationRuleFn,
|
||||
ruleName: string|null,
|
||||
ruleArgs: any[],
|
||||
messageFn: CreateMessageFn
|
||||
messageFn: ValidationMessageFn
|
||||
): Validator {
|
||||
return (context: ValidationContext): Promise<Violation|null> => {
|
||||
return Promise.resolve(ruleFn(context, ...ruleArgs))
|
||||
.then(valid => {
|
||||
return !valid ? {
|
||||
rule: ruleName,
|
||||
args: ruleArgs,
|
||||
context,
|
||||
message: messageFn(context, ...ruleArgs),
|
||||
} : null
|
||||
})
|
||||
return Promise.resolve(ruleFn(context, ...ruleArgs)).then(valid => {
|
||||
return !valid ? {
|
||||
rule: ruleName,
|
||||
args: ruleArgs,
|
||||
context,
|
||||
message: messageFn(context, ...ruleArgs),
|
||||
} : null
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,8 +64,8 @@ export function parseModifier (ruleName: string): [string, string|null] {
|
||||
|
||||
export function processSingleArrayConstraint (
|
||||
constraint: any[],
|
||||
rules: Record<string, CheckRuleFn>,
|
||||
messages: Record<string, CreateMessageFn>
|
||||
rules: Record<string, ValidationRuleFn>,
|
||||
messages: Record<string, ValidationMessageFn>
|
||||
): [Validator, string|null, string|null] {
|
||||
const args = constraint.slice()
|
||||
const first = args.shift()
|
||||
@ -95,8 +98,8 @@ export function processSingleArrayConstraint (
|
||||
|
||||
export function processSingleStringConstraint (
|
||||
constraint: string,
|
||||
rules: Record<string, CheckRuleFn>,
|
||||
messages: Record<string, CreateMessageFn>
|
||||
rules: Record<string, ValidationRuleFn>,
|
||||
messages: Record<string, ValidationMessageFn>
|
||||
): [Validator, string|null, string|null] {
|
||||
const args = constraint.split(':')
|
||||
const [name, modifier] = parseModifier(args.shift() || '')
|
||||
@ -119,8 +122,8 @@ export function processSingleStringConstraint (
|
||||
|
||||
export function processSingleConstraint (
|
||||
constraint: string|Validator|[Validator|string, ...any[]],
|
||||
rules: Record<string, CheckRuleFn>,
|
||||
messages: Record<string, CreateMessageFn>
|
||||
rules: Record<string, ValidationRuleFn>,
|
||||
messages: Record<string, ValidationMessageFn>
|
||||
): [Validator, string|null, string|null] {
|
||||
if (typeof constraint === 'function') {
|
||||
return [constraint, null, null]
|
||||
@ -139,8 +142,8 @@ export function processSingleConstraint (
|
||||
|
||||
export function processConstraints (
|
||||
constraints: string|any[],
|
||||
rules: Record<string, CheckRuleFn>,
|
||||
messages: Record<string, CreateMessageFn>
|
||||
rules: Record<string, ValidationRuleFn>,
|
||||
messages: Record<string, ValidationMessageFn>
|
||||
): [Validator, string|null, string|null][] {
|
||||
if (typeof constraints === 'string') {
|
||||
return processConstraints(constraints.split('|').filter(f => f.length), rules, messages)
|
||||
|
Loading…
x
Reference in New Issue
Block a user