Skip to content

Instalación

bash
npm i @nestjslatam/ddd-lib @nestjs/cqrs

@nestjs/cqrs es una dependencia par: la librería la necesita pero no la instala por ti, para que no acabes con dos copias distintas en tu árbol de dependencias. Si te la saltas, el error aparece al arrancar y no al compilar.

Clava la versión

Esto no es una recomendación de estilo

La API ha roto entre versiones mayores más de una vez. En tu package.json:

json
{
  "dependencies": {
    "@nestjslatam/ddd-lib": "4.0.0"
  }
}

Sin ^ y sin ~. Cuando quieras subir, lees el CHANGELOG y subes a propósito.

Un ejemplo real de por qué: isValid pasó de ser método a ser getter en la 3.0.0. El código viejo era if (!name.isValid()). Con un getter, name.isValid devuelve un booleano — pero name.isValid() intenta invocar ese booleano y revienta. Y al revés es peor: si escribes if (!obj.isValid) sobre una versión donde es un método, estás evaluando la función, que siempre es truthy, así que !fn es siempre false y el guard nunca se dispara. Compila, pasa los tests y no valida nada.

Configuración del módulo

No hay DddModule.forRoot(). La librería son clases que importas. Lo único que tienes que registrar es CQRS, como en cualquier proyecto NestJS:

ts
import { Module } from '@nestjs/common';
import { CqrsModule } from '@nestjs/cqrs';

@Module({
  imports: [CqrsModule],
})
export class ProductsModule {}

TypeScript

La librería se distribuye con sus propios .d.ts. Necesitas strict activado — o al menos strictNullChecks — porque varias firmas dependen de ello para ser útiles:

json
{
  "compilerOptions": {
    "strict": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "target": "ES2023"
  }
}

Comprueba que funciona

ts
import { StringValueObject } from '@nestjslatam/ddd-lib';

class Foo extends StringValueObject {}

console.log(new Foo('hola').isValid);  // true
console.log(new Foo('').isValid);      // false

Si la segunda línea imprime true, tienes una versión donde isValid es un método. Revisa la versión instalada con npm ls @nestjslatam/ddd-lib.

Siguiente

Tu primer agregado

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