UNPKG

verdict-rules

Version:

A small, zero-dependency, async-native rule-evaluation engine. Compose conditions into one explainable pass/fail verdict, with sequential evaluation and real short-circuiting as a guarantee.

25 lines (24 loc) • 931 B
/** * A small, zero-dependency, async-native rule-evaluation engine. * * `Rule<TContext>`/`RulesEngine<TContext>` are generic over the context they * read from, with no default type parameter — dict-context is * `FunctionRule<Context>`/`RulesEngine<Context>`. * * ```ts * import { AndRule, FunctionRule, type Context } from "verdict-rules"; * * const overEighteen = new FunctionRule<Context>("over_18", async (ctx) => ({ * ruleName: "over_18", * passed: (ctx.age as number) >= 18, * })); * * const verdict = await new AndRule<Context>("eligible", [overEighteen]).evaluate({ age: 21 }); * console.log(verdict.passed); // true * ``` */ export { RulesEngine } from "./engine.js"; export { UnknownLookupError } from "./errors.js"; export type { Context, RuleResult, RunResult } from "./result.js"; export { AndRule, FunctionRule, OrRule } from "./rule.js"; export type { Rule, RulePredicate } from "./rule.js";