UNPKG

917 BJavaScriptView Raw
1import randomId from '../utils/random-id.js';
2import { validatorSymbol } from '../predicates/predicate.js';
3/**
4Operator which inverts the following validation.
5
6@hidden
7
8@param predictate - Predicate to wrap inside the operator.
9*/
10export const not = (predicate) => {
11 const originalAddValidator = predicate.addValidator;
12 predicate.addValidator = (validator) => {
13 const { validator: function_, message, negatedMessage } = validator;
14 const placeholder = randomId();
15 validator.message = (value, label) => (negatedMessage
16 ? negatedMessage(value, label)
17 : message(value, placeholder).replace(/ to /, '$&not ').replace(placeholder, label));
18 validator.validator = (value) => !function_(value);
19 predicate[validatorSymbol].push(validator);
20 predicate.addValidator = originalAddValidator;
21 return predicate;
22 };
23 return predicate;
24};