@cbm-common/print-settings-repository
v0.0.1
Published
Esta librería proporciona un cliente HTTP ligero para consumir los endpoints relacionados con la configuración de impresión (print settings) del backend. Está pensada para integrarse en aplicaciones Angular y ofrece un servicio con operaciones CRUD y list
Readme
Print Settings Repository
Esta librería proporciona un cliente HTTP ligero para consumir los endpoints relacionados con la configuración de impresión (print settings) del backend. Está pensada para integrarse en aplicaciones Angular y ofrece un servicio con operaciones CRUD y listados.
Contenido
CbmPrintSettingsModule— token de configuración para inyectarbaseUrl.CbmPrintSettingsService— servicio principal que expone los métodos para listar, crear, actualizar y eliminar configuraciones de impresión.print-settings.model.ts— tipos/contratos usados por el servicio (parámetros y respuestas).
Requisitos
- Angular 20.x
- HttpClientModule en la aplicación que consume la librería
Instalación y uso básico
- Construir la librería (desde el workspace raíz):
ng build print-settings-repository- Publicar (opcional):
cd dist/print-settings-repository
npm publishConfiguración (inyección de baseUrl)
La librería expone un token de configuración (PRINT_SETTINGS_MODULE_CONFIG) y una función forRoot que devuelve un proveedor para inyectar la configuración. En tu AppModule registra el proveedor en el array providers:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { CbmPrintSettingsModule } from 'print-settings-repository';
@NgModule({
imports: [BrowserModule],
providers: [
CbmPrintSettingsModule.forRoot({ baseUrl: 'https://api.example.com/print-settings' })
],
})
export class AppModule {}Nota: la librería está diseñada para que la URL base sea inyectada mediante el token de configuración. El servicio CbmPrintSettingsService usa HttpClient y construye las rutas a partir de baseUrl.
API pública del servicio
Importar el servicio desde la librería y usarlo en componentes o servicios de la aplicación:
import { Component, OnInit } from '@angular/core';
import { CbmPrintSettingsService } from 'print-settings-repository';
@Component({ /* ... */ })
export class ExampleComponent implements OnInit {
constructor(private readonly printSettings: CbmPrintSettingsService) {}
ngOnInit() {
// listar
this.printSettings.list({ page: 1, per_page: 20 }).subscribe(res => console.log(res));
}
create() {
this.printSettings.save({ /* body conforme a SaveBody */ }).subscribe();
}
update(id: string) {
this.printSettings.update(id, { /* update body */ }).subscribe();
}
remove(id: string) {
this.printSettings.delete(id).subscribe();
}
}Resumen de métodos disponibles en CbmPrintSettingsService (según print-settings.service.ts):
list(params: ListParams): Observable<ListResponse>— obtiene listado paginado.save(body: SaveBody): Observable<ConfirmResponse>— crea una nueva configuración.update(id: string, body: UpdateBody): Observable<ConfirmResponse>— actualiza registro por id.delete(id: string): Observable<ConfirmResponse>— elimina registro por id.
Modelos y tipos
- Consulta
projects/print-settings-repository/src/lib/print-settings.model.tspara ver las interfaces exactas (ListParams,ListResponse,SaveBody,UpdateBody,ConfirmResponse) que espera y devuelve la API.
Notas de integración
- Asegúrate de que
HttpClientModuleesté importado en elAppModule(o en el módulo que useCbmPrintSettingsService). - La librería proporciona el servicio con
providedIn: 'root', por lo que no es necesario añadirlo manualmente aproviders. - Si tu aplicación requiere interceptores o un servicio HTTP personalizado para manejo de cabeceras/autenticación, registra esos interceptores a nivel de la aplicación (no dentro de la librería) o solicita que la librería los exponga explícitamente si prefieres centralizarlos.
Construir y probar
- Compilar la librería:
ng build print-settings-repository- Ejecutar tests unitarios del workspace:
ng testPreguntas frecuentes / problemas comunes
- ¿Dónde configuro la URL base? — Usa
CbmPrintSettingsModule.forRoot({ baseUrl: '...' })enprovidersdelAppModule. - ¿Por qué
forRootdevuelve un proveedor y noModuleWithProviders? — Este paquete sigue el patrón de inyección por token; registra la configuración como proveedor para que el servicio la inyecte mediante el tokenPRINT_SETTINGS_MODULE_CONFIG.
Contribuciones y mantenimiento
- Para contribuir, abre un PR en el repositorio del monorepo. Sigue las mismas convenciones del resto de paquetes del workspace (lint, tests, formato).
Más información
- Revisa los archivos fuente en
projects/print-settings-repository/src/libpara comprender los modelos y comportamiento concreto.
Documentación actualizada y localizada al español.
