@cbm-common/email-settings-repository
v0.0.2
Published
Esta librería proporciona un cliente HTTP para manejar las configuraciones de correo (email settings) del backend. Está pensada para integrarse en aplicaciones Angular del monorepo y ofrece operaciones comunes: listado, creación, obtención por id, actuali
Readme
Email Settings Repository
Esta librería proporciona un cliente HTTP para manejar las configuraciones de correo (email settings) del backend. Está pensada para integrarse en aplicaciones Angular del monorepo y ofrece operaciones comunes: listado, creación, obtención por id, actualización, eliminación y creación masiva.
Contenido principal
CbmEmailModule— token de configuraciónEMAIL_MODULE_CONFIGque permite inyectar la URL base medianteforRoot.CbmEmailSettingsService— servicio que expone los métodos para consumir la API (usaHttpClientinternamente y labaseUrlinyectada).email-settings.model.ts— definición de los tipos/contratos (parámetros y respuestas) que utiliza el servicio.
Requisitos
- Angular 20.x
HttpClientModuledisponible en la aplicación consumidora
Construcción e instalación
- Para compilar la librería desde la raíz del workspace:
ng build email-settings-repository- Para publicar (opcional):
cd dist/email-settings-repository
npm publishConfiguración del módulo (inyección de baseUrl)
La librería expone el token EMAIL_MODULE_CONFIG y un helper CbmEmailModule.forRoot(config) que devuelve un proveedor para inyectar la configuración. Registra el proveedor en tu AppModule así:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { CbmEmailModule } from 'email-settings-repository';
@NgModule({
imports: [BrowserModule],
providers: [
CbmEmailModule.forRoot({ baseUrl: 'https://api.example.com/email-settings' })
],
})
export class AppModule {}Nota: la librería sigue el patrón de inyección por token; la configuración se registra como proveedor y el servicio la inyecta mediante EMAIL_MODULE_CONFIG.
Uso del servicio
Importa y usa CbmEmailSettingsService desde la librería (sin prefijo) en tus componentes o servicios. Ejemplo básico:
import { Component, OnInit } from '@angular/core';
import { CbmEmailSettingsService } from 'email-settings-repository';
import { CbmEmailSettingsModel } from 'email-settings-repository';
@Component({ /* ... */ })
export class ExampleComponent implements OnInit {
constructor(private readonly service: CbmEmailSettingsService) {}
ngOnInit() {
// Usa los tipos desde la librería, no "any"
const params: CbmEmailSettingsModel.ListParams = { /* llenar según modelo */ };
this.service.list(params).subscribe(res => console.log(res));
}
create() {
const body: CbmEmailSettingsModel.SaveOneBody = { /* ... */ };
this.service.saveOne(body).subscribe();
}
}Resumen de API expuesta por CbmEmailSettingsService
list(params: ListParams): Observable<ListResponse>— listado/paginado.saveOne(body: SaveOneBody): Observable<ConfirmResponse>— crear un registro.getOne(id: string): Observable<GetOneResponse>— obtener un registro por id.update(id: string, body: UpdateBody): Observable<ConfirmResponse>— actualizar.delete(id: string): Observable<ConfirmResponse>— eliminar.saveMany(data: SaveManyBody[]): Observable<ConfirmResponse>— crear varios registros de forma masiva.
Modelos y tipos
- Revisa
projects/email-settings-repository/src/lib/email-settings.model.tspara ver las interfaces exactas (ListParams,ListResponse,SaveOneBody,UpdateBody,SaveManyBody,ConfirmResponse, etc.). Usar estos tipos evitaanyy mejora la seguridad de tipos en tu código.
Notas de integración y buenas prácticas
- Importa
HttpClientModuleen elAppModuleo en el módulo donde vayas a usarCbmEmailSettingsService. - El servicio está declarado con
providedIn: 'root'(librería), por lo que no es necesario añadirlo manualmente aproviders. - Si tu aplicación requiere interceptores o un
EmailHttpServicepersonalizado, regístralos en la app que consume la librería o solicita que la librería los exponga explícitamente.
Pruebas y validación
- Ejecutar tests unitarios del workspace:
ng test- Compilar la librería para validar cambios:
ng build email-settings-repositoryPreguntas frecuentes
- ¿Dónde configuro la URL base? — Usa
CbmEmailModule.forRoot({ baseUrl: '...' })enprovidersdelAppModule. - ¿Cómo evito
any? — Importa los tipos desdeemail-settings-repository/src/lib/email-settings.model.tsy úsalos en tus componentes/servicios.
Contribuciones
- Para contribuir, abre un PR en el repositorio del monorepo y sigue las convenciones del proyecto (lint, tests, formateo).
Más información
- Revisa los archivos fuente en
projects/email-settings-repository/src/libpara comprender comportamiento y tipos.
Documentación actualizada y localizada al español.
