@cosmicmind/domainjs
Version:
A domain-driven design framework for scalable systems.
21 lines • 911 B
TypeScript
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