json-rules-engine-schema-operator
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

json-rules-engine-schema-operator

npm version codecov Build Status Bundle Phobia

What's This?

It's an operator to evaluate a value against a JSON Schema for the totally awesome json-rules-engine package.

Why?

Because a JSON Schema is a predicate. A value either validates against a schema, or it doesn't. Rather than writing (and maintaining) a bunch of custom operators and bloating your codebase with them, you only need one operator - a schema operator.

Installation

npm install json-rules-engine-schema-operator
# or
yarn add json-rules-engine-schema-operator

Usage

This package is BYOV - bring your own validator (highly recommend AJV!!)

import Ajv from 'ajv';
import { Engine } from 'json-rules-engine';
import createSchemaOperator from 'json-rules-engine-schema-operator';

const ajv = new Ajv();
const validator = (subject,schema) => ajv.validate(schema,subject);

const engine = new Engine();
engine.addOperator(createSchemaOperator(validator));

and now you can do this:

engine.addRule({
  conditions: {
    any: [
      {
        fact: 'firstName',
        operator: 'schema',
        value: {
          type: 'string',
          pattern: '^J',
        },
      },
    ],
  },
  event: {
    type: 'j_firstName',
  },
});

Custom Operator Name

By default, the name of the operator added to the engine is schema. This is configurable by passing in a custom name via the second optional parameter options:

const name = 'jsonSchemaOperator';
engine.addOperator(validator, { name });

engine.addRule({
  conditions: {
    any: [
      {
        fact: 'firstName',
        operator: name,
        value: {
          type: 'string',
          pattern: '^J',
        },
      },
    ],
  },
  event: {
    type: 'j_firstName',
  },
});

Related

I ❤️ JSON schema and json-rules-engine both so much, that I created a package json-schema-rules-engine that works very similarly, but it relies entirely on JSON schemas for predicates (or "operators"), which greatly simplifies the concept of the rules engine.

Package Sidebar

Install

npm i json-rules-engine-schema-operator

Weekly Downloads

1

Version

1.1.0

License

MIT

Unpacked Size

6.04 kB

Total Files

5

Last publish

Collaborators

  • akmjenkins