40 lines
799 B
TypeScript
40 lines
799 B
TypeScript
import {AcknowledgableEvent} from "./AcknowledgableEvent";
|
|
|
|
export enum EventType {
|
|
Normal,
|
|
TimeBased,
|
|
Acknowledge,
|
|
}
|
|
|
|
export interface BaseEvent {
|
|
type: EventType
|
|
}
|
|
export interface NormalEvent extends BaseEvent {
|
|
type: EventType.Normal
|
|
}
|
|
|
|
export interface AcknowledgeEvent extends BaseEvent {
|
|
type: EventType.Acknowledge,
|
|
isAcknowledged(): boolean,
|
|
handleUnacknowledgement(): void
|
|
}
|
|
|
|
export type HandlerEvents = NormalEvent | AcknowledgeEvent
|
|
|
|
export interface TimedEvent extends BaseEvent {
|
|
type: EventType.TimeBased,
|
|
configuration: EventConfiguration,
|
|
cronExpression: string,
|
|
execute: () => void
|
|
}
|
|
|
|
|
|
export type EventConfiguration = {
|
|
name: string,
|
|
maxExecutions?: number,
|
|
}
|
|
|
|
export type EventEntry<T = any> = {
|
|
method: (event: T) => void,
|
|
persistent?: boolean
|
|
}
|