jocaagura_domain 1.26.0 copy "jocaagura_domain: ^1.26.0" to clipboard
jocaagura_domain: ^1.26.0 copied to clipboard

A package with domain models for all transversal applications

CHANGELOG Jocaagura Domain #

This document follows the guidelines of Keep a Changelog, and this project adheres to Semantic Versioning.

1.26.0 - 2025-09-07 #

Added #

  • Pruebas robustas para Utils
    Cobertura extendida en getDouble y getIntegerFromDynamic:
    • Manejo de nulos, NaN, infinitos y valores no numéricos.
    • Parsing de números en notación científica (3e2, -3e-2, etc.).
    • Soporte para formatos internacionales (coma o punto como separador decimal, moneda, separadores de miles).
    • Garantía de fallback seguro (0 para enteros, NaN o defaultValue para dobles).
    • Se incluyen los cambios tipo fix detallados en el changelog desde la version 1.25.0.

1.25.3 - 2025-09-07 #

Added #

  • ModelVector.fromXY(int x, int y) factory constructor for convenient creation from integer coordinates.
  • Integer-oriented getters x and y (using .round(), policy: .5 away from zero).
  • key property providing a canonical "x,y" representation for map/set usage.
  • copyWithInts({int? x, int? y}) method to create safe copies overriding integer axes.

Docs #

  • Extended DartDoc with examples for new methods and clarified rounding policy.
  • Documented reversibility limitations when the original dx/dy are non-integers.

Tests #

  • Added unit tests to validate:
    • Rounding policy for positive/negative decimals.
    • Stability of key and reversibility via fromXY.
    • copyWithInts behavior with partial overrides.
    • Factory fromXY producing expected doubles.

1.25.2 - 2025-09-07 #

Added #

  • Nueva GitHub Action ligera para validar commits antes de merge:
    • Verificación de que todos los commits estén firmados y verificados.
    • Ejecución de flutter analyze para asegurar el cumplimiento de linters.
    • Validación de dart format en modo estricto.
    • Bloqueo de dependency_overrides en pubspec.yaml.

Changed #

  • Ajustes en reglas de protección de ramas:
    • develop y master ahora requieren commits firmados, revisiones por PR y checks de estado obligatorios (incluyendo CodeQL).
    • Publicación automática a pub.dev únicamente desde master tras un merge exitoso.

Security #

  • Integración con CodeQL en ramas develop y master para análisis de calidad y seguridad.
  • Configuración de bot con firmas SSH para asegurar que los commits generados por automatizaciones tengan estado Verified.

1.25.1 - 2025-09-07 #

Added #

  • Documentación exhaustiva de estados de sesión

    • SessionState, Unauthenticated, Authenticating, Authenticated, Refreshing, SessionError ahora tienen DartDoc claro sobre propósito, transiciones y expectativas de UI.
  • Getter state en BlocSession

    • Exposición fiel del último SessionState publicado (útil para UI que necesita distinguir Authenticating, Refreshing o SessionError).
  • Páginas demo ampliadas en el example

    • SessionDemoPage (flujo completo de sesión con Either).
    • WsDatabaseUserDemoPage (CRUD + watch en tiempo real con motor de cambios).
    • ConnectivityDemoPage (flujo puro de conectividad con Either).
    • BlocLoadingDemoPage (acción única con anti-flicker y cola FIFO).
    • BlocResponsiveDemoPage (grid responsivo, simulación de tamaño, métricas).
    • BlocOnboardingDemoPage (pasos con onEnter que retorna Either, auto-avance y manejo de errores).

Changed #

  • BlocSession.stateOrDefault

    • Mantiene retrocompatibilidad simplificando a binario “autenticado / no autenticado”.
    • Si el estado es Authenticated, devuelve la misma instancia (sin reasignar).
    • Para cualquier otro estado, devuelve const Unauthenticated().
  • Getters validados

    • stream, sessionStream, state, stateOrDefault, currentUser, isAuthenticated verifican ciclo de vida.
    • Tras dispose(), el acceso lanza StateError con mensaje claro (contrato más seguro).
  • Alias canónico

    • stream es el alias recomendado; sessionStream se mantiene para compatibilidad.

Fixed #

  • refreshSession() en fallo

    • Si el repo retorna Left, el BLoC pasa a SessionError y no permanece en Refreshing.
  • Idempotencia de boot()

    • Múltiples llamadas re-adjuntan la suscripción sin pérdidas de eventos.
  • cancelAuthSubscription()

    • Al cancelar manualmente, el stream deja de reflejar cambios hasta volver a llamar a boot() (documentado y cubierto en tests).

Tests #

  • Suite de dispose y getters

    • Acceso a getters tras dispose()StateError esperado.
    • stream/sessionStream no emiten tras dispose().
    • stateOrDefault es un snapshot y no provoca emisiones.
  • Cobertura de secuencias clave

    • refreshSession() con LeftSessionError.
    • boot() idempotente y cancelAuthSubscription() en medio de sesión.
    • Debouncer en logIn() (múltiples llamadas rápidas → 1 hit a repo).

Migration notes #

  • Acceso tras dispose()

    • Evita leer bloc.state, bloc.currentUser, bloc.isAuthenticated o bloc.stream después de disponer.
    • Si existe código heredado que pudiera acceder tras dispose(), rodéalo con mounted (en UI) o reordena el ciclo de vida.
    • Opción de compatibilidad temporal:
      SessionState safeState(BlocSession b) {
        try { return b.state; } catch (_) { return const Unauthenticated(); }
      }
      
  • Snapshots

    • Para lógicas binarias, usa stateOrDefault.
    • Para lógicas de progreso/errores, usa state.

Dev notes #

  • Si necesitas soportar versiones de Flutter sin Color.withValues, cambia a:

    void main(){
    color.withOpacity(0.75); // en lugar de withValues(alpha: 0.75)
    }
    

— Fin de 1.25.1 —

1.25.0 - 2025-08-17 #

Fixed #

  • BlocLoading: evita StateError al invocar hide() tras dispose() y corrige emisiones duplicadas en operaciones rápidas encadenadas.
  • BlocResponsive: corrige la clasificación inicial de ScreenSize en el primer frame y en cambios de tamaño (web/desktop), garantizando una emisión consistente.
  • BlocOnboarding: maneja correctamente listas vacías de pasos ([]) y asegura que onComplete se dispare una sola vez. Cierre seguro de streams en dispose().
  • Demos: rutas e imports ajustados para compilar en stable sin advertencias; correcciones menores de tipografía y estilos.

Changed #

  • Mejora no funcional del rendimiento en BlocLoading al consolidar colas internas para mostrar/ocultar estados de carga (sin cambios de API).
  • Ajustes menores a los breakpoints documentados de BlocResponsive para reflejar con mayor claridad los límites recomendados (sin cambios de API).

Docs #

  • DartDoc en inglés para BlocLoading, BlocResponsive y BlocOnboarding, incluyendo ejemplos de uso en Markdown y descripción de parámetros/enums.
  • Comentarios explicativos añadidos en cada demo page para guiar la implementación paso a paso.
  • Sección breve en el README principal enlazando a las demos y a la guía de adopción rápida de cada BLoC.

Tests #

  • Grupos de pruebas con flutter_test por BLoC; casos agregados para:
    • Inicialización y dispose().
    • Cambios de tamaño en BlocResponsive.
    • Flujos felices y escenarios borde en BlocOnboarding.
    • Condiciones de carrera en BlocLoading.

CI #

  • Endurecimiento de validaciones de PR (análisis, formato y cobertura) y verificación de actualización del CHANGELOG.md.
  • Mantención: workflows revisados para compatibilidad con stable actual.

Notas: No hay cambios incompatibles. No se requiere migración.

1.24.2 - 2025-08-17 #

Added #

  • Actualización menor en BlocLoading para soportar FiFo en la cola de tareas.
  • Se agrega demo para BlocLoading en bloc_loading_demo_page.dart.
  • Se agrega BlocOnboarding para gestionar estados de onboarding en aplicaciones.
  • Se agrega BlocResponsive para manejar estados de UI responsiva en aplicaciones con diferentes resoluciones y pantallas.

1.24.1 - 2025-08-17 #

Fixed #

  • Corrección de advertencias menores en la implementación de conectividad y manejo de streams.
  • Ajustes en la documentación de los nuevos módulos y ejemplos agregados.
  • Mejoras menores en la robustez de los tests unitarios para los servicios de conectividad y WebSocket.
  • Actualización de dependencias para mantener la compatibilidad con las últimas versiones de Flutter y Dart.

1.24.0 - 2025-08-15 #

✅ Added

  • Stack WS Database (end-to-end)
    • GatewayWsDatabaseImpl (ref-count por docId, multiplexing con BlocGeneral, detachWatch/releaseDoc/dispose).
    • RepositoryWsDatabaseImpl<T extends Model> (mapeo fromJson/toJson, opcional serialización de write/delete por docId).
    • Usecases CRUD & WS:
      • databases_crud_usecases.dart
      • facade_crud_database.dart
      • facade_ws_database_usecases.dart
    • Estado y config:
      • ws_db_state.dart (estado inmutable WsDbState<T>)
      • ws_db_config.dart (valores por defecto / helpers)
    • BLoC:
      • bloc_ws_database.dart (orquestación thin; sin streams ad-hoc; mira/actualiza WsDbState)
  • Infra fake para desarrollo/pruebas
    • fake_service_ws_database.dart con documentStream/collectionStream, lectura/escritura y borrado por colección+id.
    • ws_database_user_demo_page.dart (example) con ticker opcional que incrementa jwt.countRef en vivo.
    • home_page.dart (example) como entrada de demo.
  • Utilidades transversales
    • Unit (tipo “valor nulo” seguro para Either y comandos sin payload).
    • PerKeyFifoExecutor<K> (ejecutor FIFO por clave para serializar tareas por docId).
  • Tests
    • bloc_ws_database_test.dart
    • gateway_ws_database_impl.test.dart
    • repository_ws_database_impl.test.dart
    • fake_service_ws_database.test.dart
    • per_key_fifo_executor_test.dart
    • unit_test.dart
    • fake_db_repo.dart (mocks & fakes auxiliares)

🔄 Changed

  • Contratos de gateway/repositorio document-centricos y transport-agnostic:
    • GatewayWsDatabase: énfasis en watch por documento con canal compartido y manejo explícito de ciclo de vida (detachWatch/releaseDoc).
    • RepositoryWsDatabase<T>: agrega helpers de ciclo de vida y opción de serializar escrituras por docId.
  • Mapeo de errores unificado mediante DefaultErrorMapper en todas las capas.

🩹 Fixed

  • Posibles leaks de suscripción cuando varios watchers observaban el mismo docId: ahora se hace ref-count y se libera la suscripción real al llegar a cero referencias.

🧭 Migration notes

  • Si usas watch(docId), después de cancelar tu StreamSubscription llama siempre a detachWatch(docId) para liberar el canal subyacente.
  • Para comandos sin retorno, retorna Right(unit) en lugar de void.
  • Para evitar carreras al escribir/borrar la misma entidad, usa el RepositoryWsDatabaseImpl con serializeWrites: true o el utilitario PerKeyFifoExecutor.

📚 Docs

  • README actualizado con:
    • “Cómo integrar BlocWsDatabase (con FakeServiceWsDatabase)”
    • Snippets dedicados de Unit y PerKeyFifoExecutor (casos de uso comunes).

1.23.1 - 2025-08-11 #

Fixed #

  • Correcciones menores y ajustes en la implementación de GatewayAuth y RepositoryAuth para mejorar la compatibilidad y robustez.
  • Documentación actualizada y ampliada en los nuevos archivos y clases agregadas.
  • Se resolvieron advertencias y errores menores detectados en pruebas unitarias y análisis estático.

1.23.0 - 2025-08-11 #

Actualización cambios de master

1.22.0 - 2025-08-10 #

  • Agregamos la clase BlocResponsive, BlocOnboarding y BlocLoading para mejorar la gestión de estados en aplicaciones con diferentes resoluciones y pantallas.

1.21.2 - 2025-07-22 #

  • Corregido error de formateo en changelog al agregar la versión 1.21.1 (error de formato en el encabezado de la versión).

1.21.1 - 2025-07-22 #

  • Revisados y resueltos los TODO pendientes en el código.
  • Sincronizada la rama develop con master.
  • Corregido el error de análisis estático (“Angle brackets will be interpreted as HTML”) en el comentario de fake_service_preferences.dart (ajuste de espacios en Map<String, dynamic>).

1.21.0 - 2025-07-09 #

  • Se crea la clase FakeServiceHttp para simular el comportamiento de un servicio HTTP en pruebas unitarias.
  • Se actualiza el readme para incluir ejemplos de uso de las clases FakeServiceHttp, FakeServiceSesion, FakeServiceWsDatabase, FakeServiceGeolocation, FakeServiceGyroscope, FakeServiceNotifications, FakeServiceConnectivity y FakeServicePreferences.

1.20.2 - 2025-07-08 #

  • Se crea la clase FakeServiceSesion para simular el comportamiento de un servicio de sesión en pruebas unitarias.
  • Se crea la clase FakeServiceWsDatabase para simular el comportamiento de un servicio de base de datos WebSocket en pruebas unitarias.
  • Se crea la clase FakeServiceGeolocation para simular el comportamiento de un servicio de geolocalización en pruebas unitarias.
  • Se crea la clase FakeServiceGyroscope para simular el comportamiento de un servicio de giroscopio en pruebas unitarias.
  • Se crea la clase FakeServiceNotifications para simular el comportamiento de un servicio de notificaciones en pruebas unitarias.
  • Se crea la clase FakeServiceConnectivity para simular el comportamiento de un servicio de conectividad en pruebas unitarias.
  • Se crea la clase FakeServicePreferences para simular el comportamiento de un servicio de preferencias en pruebas unitarias.

1.20.1 - 2025-07-07 #

Fixed #

  • Se documenta y agrega el archivo README_STRUCTURE.md con la guía recomendada de estructura de carpetas y arquitectura para proyectos basados en jocaagura_domain.

1.20.0 - 2025-07-06 #

Changed #

  • Documentación ampliada y mejorada para las clases BlocGeneral y BlocModule, incluyendo ejemplos de uso detallados en DartDoc y explicaciones sobre la gestión de listeners y el ciclo de vida de los BLoC.

1.19.0 - 2025-05-25 #

Added #

  • Nueva clase LedgerModel que representa un libro contable con ingresos y egresos separados, y permite el cálculo de saldo total y decimal.
  • Enum LedgerEnum para mantener uniformidad en las claves JSON utilizadas por LedgerModel.
  • Funcionalidades en MoneyUtils para:
    • totalAmount, totalDecimalAmount
    • average, filterByCategory
    • totalPerCategory, totalDecimalPerCategory
  • Métodos adicionales útiles como:
    • getLatestMovement, containsMovement
    • sortByDate, filterByDateRange
    • totalByMonth, totalDecimalByMonth

Added (Tests) #

  • Pruebas unitarias para LedgerModel: serialización, igualdad, cálculo de saldos y copyWith.
  • Pruebas unitarias para MoneyUtils: validaciones de agregación, filtros y agrupaciones por categoría y mes.

Changed #

  • Documentación enriquecida con ejemplos de uso en DartDoc para MoneyUtils.

1.18.1 - 2025-05-18 #

chore(github): reestructura develop desde master y actualiza workflows

1.18.0 - 2025-05-18 #

Added #

  • Nueva estructura estándar de errores:
    • HttpErrorItems: Manejo de errores HTTP comunes como 404, 401, 500, con niveles de severidad (danger, severe, warning, systemInfo).
    • WebSocketErrorItems: Representación de errores típicos de WebSocket como fallos de conexión, cierre inesperado o mensajes malformados.
    • NetworkErrorItems: Para errores como sin conexión, timeout o servidor inaccesible.
  • Inclusión de métodos estáticos fromCode() y fromStatusCode() en las clases anteriores.
  • Clave estandarizada meta['source'] y validadores para meta['httpCode'] y similares.

Updated #

  • ErrorItem ahora soporta un campo errorLevel de tipo ErrorLevelEnum.
    • El valor por defecto es ErrorLevelEnum.systemInfo para obligar a definirlo explícitamente.
    • Se agregó toString() actualizado para incluir el errorLevel.
  • Documentación de cada clase de error fue ampliada con enlaces a los estándares utilizados (MDN, Flutter API).

Tests #

  • Se agregaron pruebas unitarias para HttpErrorItems, WebSocketErrorItems, y NetworkErrorItems incluyendo validación de errorLevel, fromCode() y fallback unknown().
  • Se probaron los casos límite y el mapeo correcto desde códigos conocidos.

Docs #

  • Actualizado el README.md para reflejar las nuevas capacidades de los modelos de error y sus usos sugeridos.

1.17.1 - 2025-05-18 #

Updated #

  • Enhanced the financial movement model to support up to 4 decimal places for mathematical precision and to prevent negative amounts at the model level.

Fixed #

  • Minor patches in analysis_options.yaml to remove dependencies no longer used in the updated implementation.

1.17.0 - 2025-03-25 #

Added #

  • Implemented the financial movement model to manage financial transactions.

1.16.0 - 2025-01-25 #

Added #

  • Configured GitHub Actions secrets to securely store sensitive data required for workflows.
  • Validated and updated the GitHub maintainers group to ensure proper repository access and management.

Updated #

  • Enhanced the README file with updated repository details and instructions for contributors.

1.15.2 - 2024-12-29 #

Fixed #

  • Translation of the changelog to English.
  • Completion and translation of inline documentation to English.
  • Extended unit tests.
  • Updated linter package.

1.15.1 - 2024-08-25 #

Fixed #

  • Minor changes in DartDoc formatting without affecting the code or its functionality.

1.15.0 - 2024-08-25 #

Added #

  • MedicalRecordModel: Added model, tests, and DartDoc documentation for the patient's state in the dentist app.

1.14.0 - 2024-08-25 #

Added #

  • MedicationModel: Added model, tests, and DartDoc documentation for the appointment model.

1.13.0 - 2024-08-25 #

Added #

  • AppointmentModel: Added model, tests, and DartDoc documentation for the appointment model.
  • ContactModel: Added model, tests, and DartDoc documentation for the contact model.

1.12.1 - 2024-08-07 #

Changed #

  • AnimalModel: Added DartDoc documentation for the model.

1.12.0 - 2024-08-07 #

Added #

  • AnimalModel: Added the model to start work on the animal class.

1.11.0 - 2024-08-04 #

Added #

  • AcceptanceModel: Added model for legally accepting medical treatment.

1.10.0 - 2024-08-04 #

Added #

  • TreatmentPlanModel: Added treatment plan for the patient.

1.9.0 - 2024-07-28 #

Added #

  • MedicalTreatmentModel: Added model to manage treatments for patients.

Changed #

  • Minor formatting fixes for dental_condition_model, dental_condition_model_test, and medical_diagnosis_model.

1.8.0 - 2024-07-24 #

Added #

  • DentalConditionModel: Added model and documentation for the dental condition.

1.7.1 - 2024-07-22 #

Changed #

  • MedicalDiagnosisModel: Added documentation for developers in the file.

1.7.0 - 2024-07-22 #

Added #

  • MedicalDiagnosisModel: Added model to ensure diagnostics.

1.6.1 - 2024-07-21 #

Changed #

  • medical_diagnosis_tab_model_test: Increased test coverage.

1.6.0 - 2024-07-21 #

Changed #

  • signature_model: Updated to include hashCode.

Added #

  • MedicalDiagnosisTabModel: Added model for medical diagnosis collection and its unit tests.

1.5.0 - 2024-07-07 #

Changed #

  • Upgraded flutter_lints to version 4.0.0 in dev dependencies.

Added #

  • SignatureModel: Added model for user signature with its unit tests.

1.4.2 - 2024-06-30 #

Added #

  • Colors: Added a color map to the UML diagram with an explanation in the README to improve visualization of the implementation state of models.

Fixed #

  • UML Diagram: Updated to reflect the implementation state of models:
    • Either, Left, Right: Confirmed.
    • Model, UserModel, AttributeModel<T>: Confirmed.
    • Bloc, BlocModule, BlocGeneral<T>, BlocCore: Confirmed.
    • UI: ModelMainMenuModel confirmed.
    • Connectivity: ConnectionTypeEnum, ConnectivityModel confirmed.
    • Citizen: PersonModel under review, LegalIdModel confirmed.
    • Obituary: ObituaryModel, DeathRecordModel confirmed.
    • Shops: StoreModel confirmed.
    • Geolocation: AddressModel confirmed.

1.4.1 - 2024-06-30 #

Fixed #

  • version: Corrected to initialize work with new models.

1.4.0 - 2024-06-30 #

Added #

  • uml_diagrams: Added diagrams with more models for future work.

1.3.1 - 2024-05-25 #

Fixed #

  • Typing consistency adjustments in the Either class.

1.3.0 - 2024-05-10 #

Added #

  • ConnectivityModel class and corresponding documentation.

1.2.1 #

  • Added Debouncer class.
  • Added documentation in the README file.

1.0.0 #

  • Added Either class.
  • Approved for production.

0.3.2 #

  • Added DeathRecordModel into ObituaryModel.

0.3.1 #

  • Fixed fromJson factory constructor in LegalIdModel.

0.3.0 #

  • Added LegalIdModel.

0.2.0 #

  • Added DeathRecordModel.

0.1.2 #

  • Minor fix to ObituaryModel to include vigilDate and burialDate in parameters.
  • Increased unit test coverage.

0.1.01 #

  • Changed officially to beta.
  • Minor fix to ObituaryModel to include message in parameters.

0.0.9 #

  • Added ObituaryModel.
  • Minor fix to PersonModel to cover variable names properly.
  • Increased PersonModel and DateUtils test coverage.

0.0.8 #

  • Added DateTime-to-String utility.

0.0.71 #

  • Changed attributes in Models to Map<String, AttributeModel<dynamic>>.

0.0.7 #

  • Completed PersonModel with subModelClass (AttributeModel) for information.

0.0.6 #

  • Completed StoreModel with formatted options.

0.0.5 #

  • Added StoreModel.

0.0.4 #

  • Added AddressModel.

0.0.3 #

  • Added Utils class for JSON conversion management.
  • Improved unit test coverage.

0.0.2 #

  • Added UserModel and established some immutable conditions.

0.0.1 #

  • Added initial abstract class Model.
2
likes
0
points
180
downloads

Publisher

verified publisherjocaagura.com

Weekly Downloads

A package with domain models for all transversal applications

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on jocaagura_domain