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
TypeScript
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 };