json-rules-engine icon indicating copy to clipboard operation
json-rules-engine copied to clipboard

Fact Decorator Rough Sketch

Open chris-pardy opened this issue 1 year ago • 1 comments

@CacheControl this is very much just a rough sketch of what a "FactDecorator" that matched the "Operator Decorator" would look like.

The idea here is to add support for a way to declaratively manipulate fact values without needed to manually add new facts. I've created defaults for what I think the most common use cases are:

keyOf / valueOf - these work on the methods defined on Map but also use the Object.keys / Object.values methods to enumerate the keys and values of other objects. For instance you could now do:


const fact = new Fact("test", { editable: true });

const condition = {
     fact: "keysOf:test",
     operator: "contains",
     value: "editable"
} 

I've also added sizeOf which works on strings so:


const condition = {
     fact: "sizeOf:password",
    operator: "greaterThanInclusive",
    value: 12
}

Finally I wanted to showcase how we could use this to potentially move the handling of JSON Path properties out of the Almanac and into something that would let us move the JSONPathPlus dependency to a peer-dependency which would make it much easier to tackle breaking changes.

chris-pardy avatar Oct 15 '24 14:10 chris-pardy

@chris-pardy the approach makes sense to me!

CacheControl avatar Oct 17 '24 15:10 CacheControl