1
0
mirror of synced 2025-02-16 12:43:14 +03:00

chore: Types renames

This commit is contained in:
Zaytsev Kirill 2020-11-06 20:44:04 +03:00
parent 8e3bacab3c
commit 62e65687d1
4 changed files with 41 additions and 37 deletions

View File

@ -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 => {

View File

@ -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]
})

View File

@ -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)
}
}

View File

@ -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)