@nivinjoseph/n-domain
Version:
Domain Driven Design and Event Sourcing based framework for business layer implementation
35 lines (31 loc) • 932 B
text/typescript
import { given } from "@nivinjoseph/n-defensive";
// public
export interface AggregateState
{
readonly typeVersion: number;
id: string;
version: number;
createdAt: number;
updatedAt: number;
isRebased: boolean;
rebasedFromVersion: number;
// ^^^^^ any change to this should also affect the clearBaseState function below
}
export function clearBaseState(state: object): void
{
given(state, "state").ensureHasValue().ensureIsObject();
// @ts-expect-error: deliberate
delete state.typeVersion;
// @ts-expect-error: deliberate
delete state.id;
// @ts-expect-error: deliberate
delete state.version;
// @ts-expect-error: deliberate
delete state.createdAt;
// @ts-expect-error: deliberate
delete state.updatedAt;
// @ts-expect-error: deliberate
delete state.isRebased;
// @ts-expect-error: deliberate
delete state.rebasedFromVersion;
}