npm package: @cbm-common/unit-measure-repository
Description: Documentación en español para la librería `unit-measure-repository`.
Latest version: 0.0.1

# UnitMeasureRepository

Documentación en español para la librería `unit-measure-repository`.

Descripción
-----------
Esta librería expone una capa para consumir los endpoints relacionados con unidades de medida. Provee:

- Tipos y modelos: `CbmUnitMeasureModel` (interfaces para request/response).
- Servicio HTTP: `CbmUnitMeasureService` (métodos: `list`, `getOne`, `save`, `update`, `changeStatus`, `delete`).
- Repositorio: `CbmUnitMeasureRepository` (wrapper que delega al servicio).
- Módulo: `CbmUnitMeasureModule` (exporta token de configuración).

Patrón de configuración
-----------------------
La librería sigue el patrón minimalista de configuración por token:

- Interfaz: `ICbmUnitMeasureModuleConfig` (propiedad `baseUrl: string`).
- Token: `UNIT_MEASURE_MODULE_CONFIG` (InjectionToken).
- Registro: llamar a `CbmUnitMeasureModule.forRoot({ baseUrl })` en el módulo raíz de tu aplicación.

Importante: la implementación mínima de `forRoot` devuelve únicamente un Provider que registra el token de configuración (useValue). Si tu aplicación necesita interceptores HTTP o servicios auxiliares, regístralos explícitamente en el módulo de la aplicación (no se añaden interceptores automáticamente desde `forRoot`).

Ejemplo de uso
--------------
1) Compila la librería desde la raíz del monorepo:

```powershell
ng build unit-measure-repository
```

2) Importa y configura el módulo en tu `AppModule` (ejemplo):

```ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { CbmUnitMeasureModule } from 'unit-measure-repository';

@NgModule({
   imports: [
      BrowserModule,
      CbmUnitMeasureModule.forRoot({ baseUrl: 'https://api.tu-dominio.com/unit-measure' }),
   ],
})
export class AppModule {}
```

3) Consumir el repositorio en un componente (tipado desde la librería):

```ts
import { Component, OnInit } from '@angular/core';
import { CbmUnitMeasureRepository, CbmUnitMeasureModel } from 'unit-measure-repository';

@Component({/* ... */})
export class MiComponente implements OnInit {
   constructor(private repo: CbmUnitMeasureRepository) {}

   ngOnInit(): void {
      this.repo.list({ page: 1, size: 20 }).subscribe((res: CbmUnitMeasureModel.ListResponse) => {
         console.log(res);
      });
   }
}
```

Detalles técnicos
-----------------
- Nombres exportados (revisar `src/lib/index.ts` o `public-api.ts` para confirmación):
   - `CbmUnitMeasureModule`
   - `ICbmUnitMeasureModuleConfig`, `UNIT_MEASURE_MODULE_CONFIG`
   - `CbmUnitMeasureService`
   - `CbmUnitMeasureRepository`
   - `CbmUnitMeasureModel` (namespace con las interfaces)

- `CbmUnitMeasureService` utiliza el token de configuración para construir las URLs del endpoint (campo `baseUrl`).

Notas de integración
--------------------
- Al usar la librería desde otra app dentro del monorepo, es habitual ejecutar `ng build unit-measure-repository` antes de arrancar la app consumidora para que el paquete esté disponible.
- Si tu aplicación necesita que la librería registre interceptores HTTP, añade los providers manualmente en el `AppModule` (por ejemplo registrando la clase de interceptor bajo `HTTP_INTERCEPTORS`).

Comandos útiles
---------------
- Compilar la librería:

```powershell
ng build unit-measure-repository
```

- Ejecutar tests (workspace):

```powershell
ng test
```

Resolución de problemas
-----------------------
- "No se encuentran tipos/exportaciones": confirma que la librería esté construida y que los nombres usados en import coincidan con `public-api.ts`.
- "Base URL mal formada": asegurar que la configuración pasada a `forRoot({ baseUrl })` no contenga barras finales duplicadas (la librería normaliza internamente).

Contribuciones
--------------
Para cambios en la API pública (nuevos métodos, renombre de tipos), editar `src/lib` y actualizar `public-api.ts`. Añadir notas en este README y en un `CHANGELOG.md` si corresponde.

----

Archivo generado/actualizado por mantenimiento del monorepo.