datum 0.0.13 copy "datum: ^0.0.13" to clipboard
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 Failure class now includes an optional StackTrace property.
    • The fold method in DatumEither now passes the StackTrace to the onFailure callback.
    • The onFailure method now accepts a StackTrace parameter.
    • The getError method now returns a tuple containing the error value and the stack trace.
  • core: Bring back getSuccess method

    • Added the getSuccess method back to the DatumEither class.
    • This method returns the success value if the DatumEither is a Success, otherwise it throws a StateError.

♻️ Refactors #

  • core: Remove isSuccess and isFailure methods

    • Removed the isSuccess and isFailure methods from the DatumEither class.
  • core: Use switch statement instead of if statement

    • Refactor the onSuccess, onFailure, getSuccess, getError, successOrNull, and errorOrNull methods to use switch statement instead of if statement.

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 createMany and updateMany methods for performing batch create and update operations.
  • Lifecycle Management: Implemented DatumProviderWithLifecycle widget to manage Datum's lifecycle based on app state.
  • Flexible Entity Implementation: Introduced DatumEntityMixin and RelationalDatumEntityMixin to allow for more flexible entity implementation without requiring inheritance from a base class.
  • Schema Versioning: Added schemaVersion property to IsolatedHiveLocalAdapter for easier schema migration.
  • Type Comparison: Added a sameTypes method for type comparison.
  • Dependencies: Added equatable dependency for easier object comparison.

🐛 Bug Fixes #

  • Logging: Removed unnecessary debug logs from tasksStreamProvider.
  • Initialization: Ensured managers are initialized before saveMany operations.
  • Memory Leaks: Improved stream handling in SupabaseRemoteAdapter to prevent memory leaks.
  • Error Handling: Improved type safety and error handling in fetchRelated methods.

♻️ Refactors #

  • Background Sync: Enhanced SupabaseRemoteAdapter with resubscribeToChanges and unsubscribeFromChanges methods for better background sync and lifecycle management.
  • Entity Handling: Updated DatumEntityBase and related classes for better sync and versioning.
  • Adapters: Updated HiveLocalAdapter and SupabaseRemoteAdapter to use DatumEntityBase instead of DatumEntity.
  • Task Entity: Refactored the Task entity to use DatumEntityMixin.
  • Sync Execution: Updated the default sync execution strategy to parallel.
  • Data Serialization: Enhanced data serialization for local and remote persistence.

📖 Documentation #

  • Datum Class: Enhanced Datum class documentation for clarity and improved usage examples.
  • Sync Options: Enhanced DatumSyncOptions documentation 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 synchronize method are handled, preventing race conditions and improving data consistency.
    • Added DatumSyncRequestStrategy as the base for defining execution behavior.
    • Implemented SequentialRequestStrategy to queue and process all synchronize calls in the order they are received. This is the new default behavior.
    • Implemented SkipConcurrentStrategy as an alternative strategy to ignore new synchronize calls if a sync is already in progress.
    • Added syncRequestStrategy to DatumConfig to allow global configuration of this behavior.
    • Added an isSyncing getter to DatumSyncEngine to check the current sync status.

🐛 Bug Fixes #

Build #

  • Correct Conditional Imports: Fixed conditional imports to ensure compatibility across both dart:io and dart:html environments.

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 compute function 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 IsolateStrategy that 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 DatumEntity and RelationalDatumEntity to a DatumEntityBase sealed class for enhanced type safety and to remove the need for sampleInstance.
  • 🚀 New Facade Methods: Added a suite of new methods to the global Datum facade 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.

✅ Tests #

  • 🧪 Enhanced Core Tests: Added test cases for uninitialized state errors, statusForUser, allHealths, and relational method behavior. Introduced a CustomManagerConfig for easier mock manager injection in tests.

♻️ Refactors & 🧹 Chores #

  • ♻️ Isolate Helper Improvements:
    • Replaced conditional imports with platform-specific implementations.
    • Removed isolate_helper.dart and isolate_helper_unsupported.dart.
    • Added _isolate_helper_io.dart for IO platforms.
    • Updated _isolate_helper_web.dart to use synchronous JSON encoding.
    • Updated datum_sync_engine.dart to 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, and test_entity.dart.
    • Updated isolate_helper_test.dart to use the new isolate helper.
  • 🗑️ Removed sampleInstance: The sampleInstance property on LocalAdapter is no longer needed due to the sealed class migration and has been removed.
  • 🩺 Renamed AdapterHealthStatus.ok to AdapterHealthStatus.healthy for better clarity.
  • 📦 Refactored internal imports to use the datum package consistently.
  • ⚙️ Made MigrationExecutor generic to improve type safety during migrations.
  • 🗺️ Added DataSource enum 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.md and CODE_OF_CONDUCT.md.
  • Updated README.md with funding and contribution sections.
  • Updated README.md to 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 🎉
26
likes
0
points
181
downloads

Publisher

verified publishershreeman.dev

Weekly Downloads

A powerful, offline-first data synchronization engine for Flutter and Dart, featuring relational data support, real-time queries, and intelligent conflict resolution.

Homepage
Repository (GitHub)
View/report issues

Topics

#offline-first #synchronization #database #flutter #supabase

Documentation

Documentation

Funding

Consider supporting this project:

buymeacoffee.com

License

unknown (license)

Dependencies

async, async_queue, collection, compute, crypto, equatable, meta, rxdart, uuid

More

Packages that depend on datum