Skip to content
This repository has been archived by the owner on Feb 14, 2024. It is now read-only.

froi/simple-rules-engine

Repository files navigation

Simple Rules Engine

A rules engine with a small API and simple rules configuration.

Linting and Tests Maintainability Test Coverage

Usage

Please take a look at the examples folder for a complete simple use of this code.

Installing

npm install simple-rules-engine

Writing Rules

Rules are JSON objects and can be a single object or an array of them.

The expected format is simple by design. Each rule object needs three fields:

  • field: the name of the field you want to apply this rule to. For nested objects this value should be in dot-notation / flattened format. Ex. field: author.name
  • validation: the validation function you wish to perfom on field. This function needs to return a boolean value
  • outcome: the function with the logic to be applied to the target object if the validation is true. It's important to note that the outcome only runs when the validation returns a true value. This behavior is just the initial step.

Ex.

const rule = {
  field: 'name',
  validation: function (value) {
    return value === 'John Snow';
  },
  outcome: function (obj) {
    obj.is_awesome = true;
    return obj;
  }
};

What happens when a validation return false

The engine will just return the target object that was passed in. As mentioned above this might change soon. Any feedback on this would be welcomed as a Github Issue using the feedback template.