UNPKG

value-object-lib

Version:

TypeScript library for creating and validating reusable, robust, and secure Value Objects—strings, numbers, emails, UUIDs, dates, enums, phone numbers, and more. Enables immutable domain logic and centralized validation for DDD-aligned applications.

84 lines (71 loc) 2.65 kB
declare abstract class ValueObject<T> { protected readonly props: T; constructor(props: T); toJSON(): T; equals(vo?: ValueObject<T>): boolean; } declare class BooleanValueObject extends ValueObject<{ value: boolean; }> { constructor(field: string, value: boolean); get value(): boolean; toString(): string; static validate(field: string, value: boolean): void; } declare class DateValueObject extends ValueObject<{ value: Date; }> { constructor(field: string, value: Date); static validate(field: string, value: Date): void; get value(): Date; toString(): string; } declare class StringValueObject extends ValueObject<{ value: string; }> { constructor(field: string, value: string); static validate(field: string, value: string): void; get value(): string; toString(): string; } declare class EmailValueObject extends StringValueObject { constructor(field: string, value: string); static validate(field: string, value: string): void; } declare class EnumValueObject<T> extends ValueObject<{ value: T; }> { constructor(field: string, value: T, enumType: Record<string, T>); static validate(field: string, value: any, enumType: Record<string, any>): void; get value(): T; toString(): string; } declare class NonEmptyStringValueObject extends StringValueObject { constructor(field: string, value: string); static validate(field: string, value: string): void; } declare class NumberValueObject extends ValueObject<{ value: number; }> { constructor(field: string, value: number); static validate(field: string, value: number): void; get value(): number; toString(): string; } declare class NonNegativeNumberValueObject extends NumberValueObject { constructor(field: string, value: number); static validate(field: string, value: number): void; } declare class PhoneNumberValueObject extends StringValueObject { constructor(field: string, value: string); static validate(field: string, value: string): void; } declare class PositiveNumberValueObject extends NumberValueObject { constructor(field: string, value: number); static validate(field: string, value: number): void; } declare class UUIDValueObject extends StringValueObject { constructor(field: string, value: string); static validate(field: string, value: string): void; } export { BooleanValueObject, DateValueObject, EmailValueObject, EnumValueObject, NonEmptyStringValueObject, NonNegativeNumberValueObject, NumberValueObject, PhoneNumberValueObject, PositiveNumberValueObject, StringValueObject, UUIDValueObject };