Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 6x 20x 6x 20x 29x 8x 21x | import { Predicate } from "@benneq/predicate";
import { ValueOrProvider, valueOrProviderResult } from "@benneq/object";
import { ValidationContext, Validator } from "./_types";
/**
*
* @example
* ```ts
* const isStringValidator = validate(valueValidator(isString, "err"));
* const result = isStringValidator(42);
* console.log(result); // [{ path: "$", message: "err", value: 42 }]
* ```
*
* @param isValid
* @param message
* @returns
*/
export const valueValidator =
<T, R = T, P = unknown>(
isValid: Predicate<[T, ValidationContext<R, P>]>,
message: ValueOrProvider<string, [T, ValidationContext<R, P>]>
): Validator<T, R, P> =>
(value, context) => {
if (isValid(value, context)) {
return [];
}
return [
{
path: context.path,
value,
message: valueOrProviderResult(message, value, context),
},
];
};
|