Skip to content

Commit ef4e1b8

Browse files
committed
Refactor compose validators to be more readable
1 parent 2d38c90 commit ef4e1b8

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed
Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
const composeValidators = (validators = []) => (value, allValues, meta) => {
22
const [initialValidator, ...sequenceValidators] = validators;
3-
const resolveValidator = (error, validator) => error || (typeof validator === 'function' ? validator(value, allValues, meta) : undefined);
4-
if (initialValidator && typeof initialValidator === 'function') {
5-
const result = initialValidator(value, allValues, meta);
6-
if (result && result.then) {
7-
return result.then(() => sequenceValidators.reduce(resolveValidator, undefined)).catch((error) => error);
3+
const resolveValidator = (error, validator) => {
4+
if (error) {
5+
return error;
86
}
7+
8+
return validator(value, allValues, meta);
9+
};
10+
11+
const result = resolveValidator(undefined, initialValidator);
12+
13+
if (result?.then) {
14+
return result.then(() => sequenceValidators.reduce(resolveValidator, undefined)).catch((error) => error);
915
}
1016

11-
return validators.reduce(
12-
(error, validator) => error || (typeof validator === 'function' ? validator(value, allValues, meta) : undefined),
13-
undefined
14-
);
17+
return sequenceValidators.reduce(resolveValidator, result);
1518
};
1619

1720
export default composeValidators;

0 commit comments

Comments
 (0)