File tree Expand file tree Collapse file tree 2 files changed +18
-5
lines changed Expand file tree Collapse file tree 2 files changed +18
-5
lines changed Original file line number Diff line number Diff line change @@ -51,9 +51,7 @@ export class Engine {
5151 removeFact ( factOrId : string | Fact ) : boolean ;
5252 getFact < T > ( factId : string ) : Fact < T > ;
5353
54- on ( eventName : "success" , handler : EventHandler ) : this;
55- on ( eventName : "failure" , handler : EventHandler ) : this;
56- on ( eventName : string , handler : EventHandler ) : this;
54+ on < TEvent = Event > ( eventName : string , handler : EventHandler < TEvent > ) : this;
5755
5856 run ( facts ?: Record < string , any > , runOptions ?: RunOptions ) : Promise < EngineResult > ;
5957 stop ( ) : this;
@@ -119,8 +117,8 @@ export interface Event {
119117
120118export type PathResolver = ( value : object , path : string ) => any ;
121119
122- export type EventHandler = (
123- event : Event ,
120+ export type EventHandler < TEvent = Event > = (
121+ event : TEvent ,
124122 almanac : Almanac ,
125123 ruleResult : RuleResult
126124) => void ;
Original file line number Diff line number Diff line change @@ -4,11 +4,13 @@ import rulesEngine, {
44 Almanac ,
55 EngineResult ,
66 Engine ,
7+ Event ,
78 Fact ,
89 Operator ,
910 OperatorEvaluator ,
1011 PathResolver ,
1112 Rule ,
13+ RuleResult ,
1214 RuleProperties ,
1315 RuleSerializable
1416} from "../" ;
@@ -94,6 +96,19 @@ expectType<Engine>(engine.addFact(dynamicFact));
9496expectType < boolean > ( engine . removeFact ( fact ) ) ;
9597expectType < Fact < string > > ( engine . getFact < string > ( "test" ) ) ;
9698
99+ // event handlers
100+ engine . on ( "failure" , ( event , almanac , ruleResult ) => {
101+ expectType < Event > ( event )
102+ expectType < Almanac > ( almanac )
103+ expectType < RuleResult > ( ruleResult )
104+ } ) ;
105+
106+ engine . on < { test : true } > ( "test" , ( event , almanac , ruleResult ) => {
107+ expectType < { test : true } > ( event ) ;
108+ expectType < Almanac > ( almanac ) ;
109+ expectType < RuleResult > ( ruleResult ) ;
110+ } ) ;
111+
97112// Run the Engine
98113expectType < Promise < EngineResult > > ( engine . run ( { displayMessage : true } ) ) ;
99114
You can’t perform that action at this time.
0 commit comments