You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.6 KiB
86 lines
2.6 KiB
/**
|
|
* Additional parameters passed to complex validation functions.
|
|
*/
|
|
export interface ValidatorFunctionParams {
|
|
/** The entire original input data. */
|
|
data: any,
|
|
}
|
|
|
|
/**
|
|
* An interface representing the result of an attempted validation that failed.
|
|
*/
|
|
export interface ValidationErrorResult {
|
|
/** Whether or not the validation succeeded. */
|
|
valid: false
|
|
|
|
/**
|
|
* The human-readable error message(s) describing the issue.
|
|
*/
|
|
message?: string | string[]
|
|
|
|
/**
|
|
* If true, validation of subsequent fields will stop.
|
|
*/
|
|
stopValidation?: boolean
|
|
}
|
|
|
|
/**
|
|
* An interface representing the result of an attempted validation that succeeded.
|
|
*/
|
|
export interface ValidationSuccessResult {
|
|
/** Whether or not the validation succeeded. */
|
|
valid: true
|
|
|
|
/**
|
|
* If the value was cast to a different type, or inferred, as a result of this validation,
|
|
* provide it here. It will replace the input string as the value of the field in the form.
|
|
*/
|
|
castValue?: any
|
|
|
|
/**
|
|
* If true, validation of subsequent fields will stop.
|
|
*/
|
|
stopValidation?: boolean
|
|
}
|
|
|
|
/** All possible results of an attempted validation. */
|
|
export type ValidationResult = ValidationErrorResult | ValidationSuccessResult
|
|
|
|
/** A validator function that takes only the field key and the object value. */
|
|
export type SimpleValidatorFunction = (fieldName: string, inputValue: any) => ValidationResult | Promise<ValidationResult>
|
|
|
|
/** A validator function that takes the field key, the object value, and an object of contextual params. */
|
|
export type ComplexValidatorFunction = (fieldName: string, inputValue: any, params: ValidatorFunctionParams) => ValidationResult | Promise<ValidationResult>
|
|
|
|
/** Useful type alias for all allowed validator function signatures. */
|
|
export type ValidatorFunction = SimpleValidatorFunction | ComplexValidatorFunction
|
|
|
|
/**
|
|
* A set of validation rules that are applied to input objects on validators.
|
|
*
|
|
* The keys of this object are deep-nested keys and can be used to validate
|
|
* nested properties.
|
|
*
|
|
* For example, the key "user.links.*.url" refers to the "url" property of all
|
|
* objects in the "links" array on the "user" object on:
|
|
*
|
|
* ```json
|
|
* {
|
|
* "user": {
|
|
* "links": [
|
|
* {
|
|
* "url": "..."
|
|
* },
|
|
* {
|
|
* "url": "..."
|
|
* }
|
|
* ]
|
|
* }
|
|
* }
|
|
* ```
|
|
*/
|
|
export type ValidationRules = {[key: string]: ValidatorFunction | ValidatorFunction[]}
|
|
|
|
/** A type alias denoting that a particular type has been validated. */
|
|
export type Valid<T> = T
|