@yobta/validator
Version:
Tree-shakable es6 validator
20 lines (19 loc) • 680 B
JavaScript
import { createContext } from '../_internal/createContext/createContext.js';
import { handleUnknownError } from '../_internal/parseUnknownError/index.js';
export const createAsyncValidator = (...rules) => async (event, context) => {
const ctx = context || createContext(event);
let result = event;
for await (const rule of rules) {
try {
result = await rule(ctx)(result);
}
catch (error) {
ctx.pushError(handleUnknownError({
error,
field: ctx.field,
path: ctx.path,
}));
}
}
return (ctx.errors.length ? [null, ctx.errors] : [result, null]);
};