UNPKG

@cosmicmind/domainjs

Version:

A domain-driven design framework for scalable systems.

24 lines 990 B
import { FoundationError } from '@cosmicmind/foundationjs'; import { Observable, ObservableTopics } from './Topic'; export type Message = Record<string, unknown>; export type MessageTopics = ObservableTopics & { readonly [K: string]: Message; }; export declare class MessageObservable<T extends MessageTopics> extends Observable<T> { } export type MessagePropertyLifecycle<E extends Message, V> = { required?: boolean; validator?(value: V, message: E): boolean | never; }; export type MessagePropertyLifecycleMap<E extends Message> = { [K in keyof E]?: MessagePropertyLifecycle<E, E[K]>; }; export declare class MessageError extends FoundationError { } export type MessageLifecycle<E extends Message> = { created?(message: E): void; error?(error: MessageError): void; properties?: MessagePropertyLifecycleMap<E>; }; export declare const defineMessage: <E extends Message>(handler?: MessageLifecycle<E>) => (message: E) => E; //# sourceMappingURL=Message.d.ts.map