datum 0.0.13
datum: ^0.0.13 copied to clipboard
A powerful, offline-first data synchronization engine for Flutter and Dart, featuring relational data support, real-time queries, and intelligent conflict resolution.
0.0.13 #
- fixed type casting error in
initialize()method in Datum
0.0.12 #
✨ Features #
-
core: Add stacktrace to DatumEither
- The
Failureclass now includes an optionalStackTraceproperty. - The
foldmethod inDatumEithernow passes theStackTraceto theonFailurecallback. - The
onFailuremethod now accepts aStackTraceparameter. - The
getErrormethod now returns a tuple containing the error value and the stack trace.
- The
-
core: Bring back getSuccess method
- Added the
getSuccessmethod back to theDatumEitherclass. - This method returns the success value if the
DatumEitheris aSuccess, otherwise it throws aStateError.
- Added the
♻️ Refactors #
-
core: Remove isSuccess and isFailure methods
- Removed the
isSuccessandisFailuremethods from theDatumEitherclass.
- Removed the
-
core: Use switch statement instead of if statement
- Refactor the
onSuccess,onFailure,getSuccess,getError,successOrNull, anderrorOrNullmethods to use switch statement instead of if statement.
- Refactor the
0.0.11 #
✨ Features #
- core: introduce DatumEither for initialization result
- Use DatumEither to handle potential errors during Datum initialization
- Return Success or Failure based on the outcome of the initialization process
- Update related code to handle the new DatumEither return type
- Add DatumEither model for typing success or failure.
0.0.10 #
✨ Features #
- Batch Operations: Added
createManyandupdateManymethods for performing batch create and update operations. - Lifecycle Management: Implemented
DatumProviderWithLifecyclewidget to manage Datum's lifecycle based on app state. - Flexible Entity Implementation: Introduced
DatumEntityMixinandRelationalDatumEntityMixinto allow for more flexible entity implementation without requiring inheritance from a base class. - Schema Versioning: Added
schemaVersionproperty toIsolatedHiveLocalAdapterfor easier schema migration. - Type Comparison: Added a
sameTypesmethod for type comparison. - Dependencies: Added
equatabledependency for easier object comparison.
🐛 Bug Fixes #
- Logging: Removed unnecessary debug logs from
tasksStreamProvider. - Initialization: Ensured managers are initialized before
saveManyoperations. - Memory Leaks: Improved stream handling in
SupabaseRemoteAdapterto prevent memory leaks. - Error Handling: Improved type safety and error handling in
fetchRelatedmethods.
♻️ Refactors #
- Background Sync: Enhanced
SupabaseRemoteAdapterwithresubscribeToChangesandunsubscribeFromChangesmethods for better background sync and lifecycle management. - Entity Handling: Updated
DatumEntityBaseand related classes for better sync and versioning. - Adapters: Updated
HiveLocalAdapterandSupabaseRemoteAdapterto useDatumEntityBaseinstead ofDatumEntity. - Task Entity: Refactored the
Taskentity to useDatumEntityMixin. - Sync Execution: Updated the default sync execution strategy to
parallel. - Data Serialization: Enhanced data serialization for local and remote persistence.
📖 Documentation #
- Datum Class: Enhanced
Datumclass documentation for clarity and improved usage examples. - Sync Options: Enhanced
DatumSyncOptionsdocumentation for better clarity. - General: Improved overall documentation for clarity.
✅ Tests #
- Background Sync: Added tests for background sync functionality.
0.0.9 #
✨ Features #
Core #
- Implement Sync Request Strategies: Introduced a new system to control how concurrent calls to the
synchronizemethod are handled, preventing race conditions and improving data consistency.- Added
DatumSyncRequestStrategyas the base for defining execution behavior. - Implemented
SequentialRequestStrategyto queue and process allsynchronizecalls in the order they are received. This is the new default behavior. - Implemented
SkipConcurrentStrategyas an alternative strategy to ignore newsynchronizecalls if a sync is already in progress. - Added
syncRequestStrategytoDatumConfigto allow global configuration of this behavior. - Added an
isSyncinggetter toDatumSyncEngineto check the current sync status.
- Added
🐛 Bug Fixes #
Build #
- Correct Conditional Imports: Fixed conditional imports to ensure compatibility across both
dart:ioanddart:htmlenvironments.
0.0.8 #
- fix conditional import for web and io
0.0.7 #
🐛 Bug Fixes #
- 🐛 Isolate Error Handling & Web Compatibility:
- Ensured errors during isolate operations are properly caught and sent back to the main thread.
- Enhanced web compatibility by using
computefunction for isolate operations. - Removed unnecessary newline at end of file for consistency.
- Removed unused import in
supabase_security_dialog.dart.
0.0.6 #
🚀 Features #
- 🚀 Isolate Sync Strategy: Introduced a new
IsolateStrategythat runs data synchronization in a background isolate for improved performance and UI responsiveness. This includes platform-specific runners for both mobile/desktop (dart:io) and web (dart:html) via conditional imports, ensuring broad platform support. - ✨ Sealed Class Migration: Migrated
DatumEntityandRelationalDatumEntityto aDatumEntityBasesealed class for enhanced type safety and to remove the need forsampleInstance. - 🚀 New Facade Methods: Added a suite of new methods to the global
Datumfacade for easier data interaction:- Reactive Watching:
watchAll,watchById,watchQuery,watchRelated. - One-time Fetching:
query,fetchRelated. - Data & Sync Management:
getPendingCount,getPendingOperations,getStorageSize,watchStorageSize,getLastSyncResult,checkHealth. - Sync Control:
pauseSync,resumeSync.
- Reactive Watching:
✅ Tests #
- 🧪 Enhanced Core Tests: Added test cases for uninitialized state errors,
statusForUser,allHealths, and relational method behavior. Introduced aCustomManagerConfigfor easier mock manager injection in tests.
♻️ Refactors & 🧹 Chores #
- ♻️ Isolate Helper Improvements:
- Replaced conditional imports with platform-specific implementations.
- Removed
isolate_helper.dartandisolate_helper_unsupported.dart. - Added
_isolate_helper_io.dartfor IO platforms. - Updated
_isolate_helper_web.dartto use synchronous JSON encoding. - Updated
datum_sync_engine.dartto use the new isolate helper. - Removed unused imports in
test.dart,adapter_test.dart,relational_data_test.dart,relational_data_integration_test.dart,mock_adapters.dart, andtest_entity.dart. - Updated
isolate_helper_test.dartto use the new isolate helper.
- 🗑️ Removed
sampleInstance: ThesampleInstanceproperty onLocalAdapteris no longer needed due to the sealed class migration and has been removed. - 🩺 Renamed
AdapterHealthStatus.oktoAdapterHealthStatus.healthyfor better clarity. - 📦 Refactored internal imports to use the
datumpackage consistently. - ⚙️ Made
MigrationExecutorgeneric to improve type safety during migrations. - 🗺️ Added
DataSourceenum to explicitly specify the source for query operations.
0.0.5 #
- Add docs link
0.0.4 #
Features #
- Added support for funding and contributions.
Documentation #
- Added
CONTRIBUTING.mdandCODE_OF_CONDUCT.md. - Updated
README.mdwith funding and contribution sections. - Updated
README.mdto mention future support for multiple adapters for a single entity.
Chores #
- ✨ chore(analysis): apply linter and formatter rules
- enable recommended linter rules for code quality
- set formatter rules for consistent code style
- ignore non_constant_identifier_names error
0.0.3 #
-
📝 docs(readme): enhance architecture diagrams in README
-
update architecture diagrams for better clarity
-
improve image display using
tag for alignment
0.0.2 #
- Update readme to add images correctly
0.0.1 #
- Initial release 🎉