import { eventMap } from "./event-map"; import type { TestInstance } from "./types"; type EventMap = typeof eventMap; export type EventType = keyof EventMap; export type FireFunction = ( instance: TestInstance, event: TEventType, options?: Parameters[1], ) => boolean | Promise; export type FireObject = { [K in EventType]: ( instance: TestInstance, options?: Parameters[1], ) => boolean | Promise; }; const fireEvent: FireFunction & FireObject = (( instance, event, props = undefined, ) => { return eventMap[event](instance, props!); }) satisfies FireFunction as never; Object.entries(eventMap).forEach(([_eventName, _eventFn]) => { const eventName = _eventName as keyof typeof eventMap; const eventFn = _eventFn as ( ...props: Array ) => ReturnType<(typeof eventMap)[keyof typeof eventMap]>; fireEvent[eventName] = (instance, ...props) => { return eventFn(instance, ...props); }; }); export { fireEvent };