UNPKG

@cosmicmind/domainjs

Version:

A domain-driven design framework for scalable systems.

21 lines 911 B
import { FoundationError } from '@cosmicmind/foundationjs'; export type Entity = Record<string, unknown>; export type EntityPropertyKey<K> = keyof K extends string | symbol ? keyof K : never; export type EntityPropertyLifecycle<E extends Entity, V> = { required?: boolean; validator?(value: V, entity: E): boolean | never; updated?(newValue: V, oldValue: V, entity: E): void; }; export type EntityPropertyLifecycleMap<E extends Entity> = { [K in keyof E]?: EntityPropertyLifecycle<E, E[K]>; }; export declare class EntityError extends FoundationError { } export type EntityLifecycle<E extends Entity> = { created?(entity: E): void; trace?(entity: E): void; error?(error: EntityError): void; properties?: EntityPropertyLifecycleMap<E>; }; export declare const defineEntity: <E extends Entity>(handler?: EntityLifecycle<E>) => (entity: E) => E; //# sourceMappingURL=Entity.d.ts.map