grammy-guard
Version:
Guard middlewares for grammY
15 lines (14 loc) • 473 B
JavaScript
export function guard(predicate, errorHandler) {
return async (ctx, next) => {
const predicates = Array.isArray(predicate)
? predicate.map((predicate) => predicate(ctx))
: [predicate(ctx)];
const isPassed = (await Promise.all(predicates)).every(Boolean);
if (isPassed) {
return next();
}
if (typeof errorHandler === "function") {
return errorHandler(ctx, next);
}
};
}