- Add purge() method to reset the data store
- Fix edge case when merging remote records
- Migrate to Dart null safety
- Use milliseconds instead of microseconds for HLCs
- Allow using non-string node ids
- Allow watching for changes
- Add
modified
field toRecord
- Add optional parameter
modifiedSince
to 'recordMap' to generate delta sets - Make basic tests available to subclasses
- Move HiveCrdt project to its own repo: https://github.com/cachapa/hive_crdt
- Hlc: Add convenience
fromDate
constructor - HiveCrdt: Fix NPE when getting a non-existing record
- Crdt: Fix encoder return type
- Crdt: Pass keys to map encoder and decoder, useful to disambiguate when parsing
- Crdt: Fix HLC timestamp generation for dart-web
- Hlc: Add
const
keywords to constructors wherever possible - Crdt: Expose canonical time
- Crdt: Add convenience methods (isEmpty. length, etc.)
- Crdt: Add encoders and decoders to serialization helpers
- Crdt: Remove delta subsets using the record's HLC since it can lead to incomplete merges
- Crdt: Fix issue where canonical time wasn't being incremented on merge
- Crdt: Fix NPE when getting non-existent value
- HiveCrdt: Store record modified time
- HiveCrdt: Retrieve delta changesets based on modified times
- HiveCrdt:
between()
returns values instead of records - HiveCrdt:
watch()
returnsMapEntry
instead ofBoxEvent
- HiveCrdt: Fix DateTime key serialization
- Remove CrdtStore.
- Make Crdt abstract.
- Remove watches (they can be added in subclasses - see HiveCrdt).
- Add MapCrdt, a CRDT backed by a standard Map useful for testing or for volatile datasets.
- Add HiveCrdt as a submodule, A CRDT backed by a Hive store.
- Fix incrementing the HLC when merging newer records.
- Fix counter not being able to reach maximum (0xFFFF)
- Remove unnecessary Future in
Crdt.values
getter.
- Breaking:
Crdt.get()
now returns the value (ornull
) rather than the record. UseCrdt.getRecord()
for the previous behaviour. - API Change: Getter methods on both
Crdt
andStore
are now synchronous. - API Change:
Crdt.Clear()
now acceptspurgeRecords
to determine if records should be purged or marked as deleted. - Add
Crdt.watch()
andStore.watch()
to monitor the CRDT for changes. - Add
Crdt.isDeleted()
to check if a record has been deleted.
- Add values getter which retrieves all values as list, excluding deleted records
- HLCs implement Comparable
- Support typed key and values
- Refactor CRDT and Store to replace index operators with getters and setters
- Add clear() method
- Add JSON de/serialisation helper methods
- Initial version