diff --git a/types/index.d.ts b/types/index.d.ts index c6ace7f..3c0060e 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -51,9 +51,7 @@ export class Engine { removeFact(factOrId: string | Fact): boolean; getFact(factId: string): Fact; - on(eventName: "success", handler: EventHandler): this; - on(eventName: "failure", handler: EventHandler): this; - on(eventName: string, handler: EventHandler): this; + on(eventName: string, handler: EventHandler): this; run(facts?: Record, runOptions?: RunOptions): Promise; stop(): this; @@ -119,8 +117,8 @@ export interface Event { export type PathResolver = (value: object, path: string) => any; -export type EventHandler = ( - event: Event, +export type EventHandler = ( + event: T, almanac: Almanac, ruleResult: RuleResult ) => void; diff --git a/types/index.test-d.ts b/types/index.test-d.ts index dcf5541..20fb550 100644 --- a/types/index.test-d.ts +++ b/types/index.test-d.ts @@ -4,12 +4,14 @@ import rulesEngine, { Almanac, EngineResult, Engine, + Event, Fact, Operator, OperatorEvaluator, PathResolver, Rule, RuleProperties, + RuleResult, RuleSerializable } from "../"; @@ -93,6 +95,16 @@ expectType(engine.addFact(fact)); expectType(engine.addFact(dynamicFact)); expectType(engine.removeFact(fact)); expectType>(engine.getFact("test")); +engine.on('success', (event, almanac, ruleResult) => { + expectType(event) + expectType(almanac) + expectType(ruleResult) +}) +engine.on<{ foo: Array }>('foo', (event, almanac, ruleResult) => { + expectType<{ foo: Array }>(event) + expectType(almanac) + expectType(ruleResult) +}) // Run the Engine expectType>(engine.run({ displayMessage: true }));