RuleResult class missing from type declarations
jeshuamaxey opened this issue · 1 comments
RuleResult has a toJSON() method (source)
The RuleResult interface declaration does not include this (source). Also, there is no class declaration for RuleResult.
The impact of this issue is felt when handling rule results, in my case decomposing them from an EngineResult. I ran into the same problem outlined in #172 which was "resolved" with the introduction of the toJSON method to RuleResults. This resolution doesn't help if you're using typescript, as the compiler has no knowledge of this method.
To make my code work around this, I've had to create a new RuleResult type in my code and extend it to include the toJSON method, which is a bit yuck.
A good solution would include:
- add and export a
RuleResultclass declaration which includes thetoJSON()method - add and export a
RuleResultSerializabletype declaration (taking inspiration from the type declaration forRuleclass declaration)
Thanks
Additionally, result and factResult are missing from RuleResult's conditions property.
I believe the ConditionProperties interface is the right place to add them, i.e.
interface ConditionProperties {
fact: string;
operator: string;
value: { fact: string } | any;
path?: string;
priority?: number;
params?: Record<string, any>;
name?: string;
// the following properties are missing
result: boolean;
factResult?: any
}In this example, the failures are filtered by the result property and this causes compilation errors in TypeScript