Skip to main content

The Core Idea

Rule Engine is like a judge:
  • Rules = Laws to check
  • Context = Evidence (your data)
  • Engine = Judge who decides
// This is all you need to know
const rule = { gte: ['age', 18] };
const data = { age: 25 };

engine.evaluateExpr(rule, data);
// { success: true }

Three Building Blocks

BlockWhat it doesExample
RuleEngineRuns rules against dataengine.evaluateExpr(rule, data)
OperatorsLogic building blockseq, and, contains, between
PathResolverSafely reads nested values'user.profile.age'25

Optional: Stateful Engine

Need to track changes over time? Wrap with StatefulRuleEngine:
// Detect when temperature increases above 30
const rule = {
  and: [{ increased: ['temperature'] }, { gte: ['temperature', 30] }],
};

statefulEngine.on('triggered', (e) => {
  console.log('Alert! Temperature rising');
});

What’s Next?