@panyam/tsutils
Version:
Some basic TS utils for personal use
67 lines (66 loc) • 2.26 kB
TypeScript
import { Nullable, Timestamp } from "../types";
export declare class TEvent {
private static counter;
readonly uuid: number;
protected _spawnedFrom: Nullable<this>;
readonly name: string;
readonly source: any;
sourceState: any;
payload: any;
cancelled: boolean;
timeStamp: Timestamp;
children: TEvent[];
constructor(name: string, source: any, payload?: any);
get spawnedFrom(): Nullable<this>;
protected setSpawnedFrom(msg: Nullable<this>): void;
spawn(name: string, source: any, payload?: any): TEvent;
private _rootEvent;
get rootEvent(): this;
}
export declare class State {
private static counter;
stateData: any;
readonly id: number;
get name(): string;
enter(data: any): void;
handle(event: TEvent): void;
}
export type EventCallback = ((event: TEvent) => void) | ((event: TEvent) => Promise<void>);
export declare class EventEmitter {
protected _eventHub: EventHub | null;
constructor();
get eventHub(): EventHub | null;
set eventHub(hub: EventHub | null);
protected eventHubChanged(oldHub: EventHub | null): void;
}
export declare class EventHub {
private _handlers;
on(names: Array<string> | string, callback: EventCallback): this;
removeOn(names: Array<string> | string, callback: EventCallback): this;
_ensurestrings(names: Array<string> | string): string[];
_addHandler<T>(names: Array<string> | string, handlerlist: {
[key: string]: Array<T>;
}, handler: T): this;
_removeHandler<T>(names: Array<string> | string, handlerlist: {
[key: string]: Array<T>;
}, handler: T): this;
emit(name: string, source: any, payload?: any): boolean;
dispatchEvent(event: TEvent): boolean;
static BATCH_EVENTS: string;
protected _events: TEvent[];
protected _inBatchMode: boolean;
startBatchMode(): this;
cancelBatch(): void;
commitBatch(): void;
}
export declare class StateMachine {
private _states;
private _rootState;
private _currentState;
constructor();
set rootState(name: string);
enter(state: string, data?: any): void;
getState(name: string): State;
registerState(state: State, isRoot?: boolean): void;
handle(event: TEvent): void;
}