UNPKG

@cosmicmind/domainjs

Version:

A domain-driven design framework for scalable systems.

24 lines 946 B
import { FoundationError } from '@cosmicmind/foundationjs'; import { Observable, ObservableTopics } from './Topic'; export type Event = Record<string, unknown>; export type EventTopics = ObservableTopics & { readonly [K: string]: Event; }; export declare class EventObservable<T extends EventTopics> extends Observable<T> { } export type EventPropertyLifecycle<E extends Event, V> = { required?: boolean; validator?(value: V, event: E): boolean | never; }; export type EventPropertyLifecycleMap<E extends Event> = { [K in keyof E]?: EventPropertyLifecycle<E, E[K]>; }; export declare class EventError extends FoundationError { } export type EventLifecycle<E extends Event> = { created?(event: E): void; error?(error: EventError): void; properties?: EventPropertyLifecycleMap<E>; }; export declare const defineEvent: <E extends Event>(handler?: EventLifecycle<E>) => (event: E) => E; //# sourceMappingURL=Event.d.ts.map