Skip to content

ddd-valueobjects

bash
npm i @nestjslatam/ddd-valueobjects

Doce value objects ya escritos y probados, para que no vuelvas a implementar la validación de un email.

Value objectValidaExtra
EmailFormato RFC, longituddomain, localPart
MoneyImporte y monedaAritmética que se niega a mezclar monedas
PhoneNumberFormato internacionalNormaliza a E.164
UrlEsquema y autoridad
PostalCodePor país
DateRangeInicio ≤ fincontains(), overlaps()
Percentage0–100
Latitude / LongitudeRango geográfico
DniDocumento peruano, 8 dígitos
RucDocumento peruano, dígito verificadorDistingue persona de empresa
CreditCardLuhnDetecta la marca; no almacena el número completo

Uso

ts
import { Email, Money } from '@nestjslatam/ddd-valueobjects';

const email = Email.create('ada@example.com');
email.domain;        // 'example.com'

const price = Money.create(49.99, 'PEN');
const total = price.add(Money.create(10, 'PEN'));   // Money(59.99, 'PEN')

price.add(Money.create(10, 'USD'));   // InvalidOperationException

Ese último caso es la razón de ser de la librería: sumar soles y dólares deja de ser un bug silencioso y pasa a ser imposible de escribir.

Se integran igual que los tuyos

Extienden las mismas bases de ddd-lib, así que recolectan reglas rotas de la misma forma y el mismo DomainExceptionFilter los traduce a 400 y 422 sin configuración adicional.

ts
interface ICustomerProps {
  name: Name;          // tuyo
  email: Email;        // de la librería
  phone: PhoneNumber;  // de la librería
}

Fuente

github.com/nestjslatam/ddd-valueobjects

Publicado con licencia MIT. Hecho en Perú 🇵🇪 · Impulsado por BeyondNetCode