@cbm-common/sequence-repository
v0.0.1
Published
Documentación en español para la librería `sequence-repository`.
Readme
SequenceRepository
Documentación en español para la librería sequence-repository.
Descripción
sequence-repository es una librería Angular que expone un servicio y un repositorio para listar secuencias (nomenclaturas y contadores) desde una API remota. Está diseñada como una biblioteca consumible que puede integrarse en una aplicación Angular mediante la configuración de una URL base.
Características principales
- Módulo con configuración por token (
SEQUENCE_MODULE_CONFIG). - Servicio
CbmSequenceServiceque usaHttpClientpara comunicarse con la API. - Repositorio
CbmSequenceRepositoryque expone la interfaz pública usada por la aplicación. - Tipos TypeScript para la respuesta de lista (
CbmSequenceModel.ListResponse).
Instalación y build
Para construir la librería dentro del monorepo Angular:
ng build sequence-repositoryPublicación
Después de compilar, el paquete queda en dist/sequence-repository y se puede publicar con npm publish si procede.
Uso
- Registrar el módulo y pasar la configuración (baseUrl)
En el módulo raíz de la aplicación importa el módulo y registra la configuración con forRoot:
import { CbmSequenceModule } from 'sequence-repository';
@NgModule({
imports: [
CbmSequenceModule.forRoot({ baseUrl: 'https://api.ejemplo.com/sequences' }),
],
})
export class AppModule {}Observaciones:
- El método
forRootdevuelve unProviderque expone el tokenSEQUENCE_MODULE_CONFIGcon la propiedadbaseUrl.
- Consumir el servicio / repositorio
La librería exporta CbmSequenceService y CbmSequenceRepository. El repositorio implementa una interfaz simple y delega en el servicio.
Ejemplo de uso en un componente:
import { Component, OnInit } from '@angular/core';
import { CbmSequenceRepository } from 'sequence-repository';
@Component({ /* ... */ })
export class ExampleComponent implements OnInit {
constructor(private readonly repo: CbmSequenceRepository) {}
ngOnInit() {
this.repo.list().subscribe(resp => {
if (resp.success) {
console.log(resp.data);
}
});
}
}API pública (resumen)
CbmSequenceModule.forRoot(config: { baseUrl: string })— registra la URL base de la API.CbmSequenceService— servicio con providedIn: 'root' que ofrece métodos HTTP. Actualmente implementa:list(): Observable<CbmSequenceModel.ListResponse>— obtiene la lista desdebaseUrl.
CbmSequenceRepository— implementación inyectable que delega enCbmSequenceServicey exponelist().
Tipos importantes
El modelo principal está en CbmSequenceModel:
CbmSequenceModel.ListResponse{success: booleandata: Array<{ _id: string; company_id: string; nomenclature: string; last_number: number; code: string; created_at: number; created_user: string; event_module?: string; description?: string; seat: boolean; deleted_at?: number }>}
Notas de integración y recomendaciones
- Autenticación / Interceptores: la implementación actual del servicio usa
HttpClientdirectamente. Si tu aplicación requiere agregar interceptores (ej. auth), añadelos globalmente en elAppModuleo adapta la librería para exponer su propio proveedor de interceptores. - Manejo de errores: la librería devuelve los Observables crudos del
HttpClient. Se recomienda encapsular manejo de errores y reintentos donde se consuma o extender el servicio si se desea comportamiento centralizado. - Extensiones: si necesitas endpoints adicionales (p. ej. obtener por compañía, paginación, descargas), puedes extender
CbmSequenceServiceyCbmSequenceRepositorysiguiendo la firma existente.
Desarrollo y pruebas
- Ejecutar tests unitarios del workspace:
ng test- Para desarrollo local de la librería desde una aplicación, compila y vincula la salida
dist/sequence-repositoryo usa herramientas de monorepo para probar en la app consumidora.
Contacto y mantenimiento
Si detectas problemas en la integración o deseas nuevas funcionalidades, crea un issue en el repositorio del monorepo o propone un PR con pruebas y documentación.
Licencia
Reutiliza la licencia del monorepo.
Resumen de cambios realizados en los archivos principales
sequence.module.ts: exponeSEQUENCE_MODULE_CONFIGyforRoot(config)que devuelve unProviderconuseValue.sequence.service.ts: ahora inyectaHttpClientySEQUENCE_MODULE_CONFIGy está marcado comoprovidedIn: 'root'.sequence.repository.ts: repositorio inyectable que delegalist()al servicio.
Fin de la documentación.
