reliable 0.3.3
reliable: ^0.3.3 copied to clipboard
An offline-first, secure data repository with automatic sync, retry, and encryption for Dart & Flutter.
CHANGELOG #
0.3.3 #
- Merge branch 'main' into prod
0.3.2 #
- Merge branch 'main' into prod
0.3.1 #
- docs: remove Discord, point contributors to issues and email
0.3.0 #
- chore: standardize README and CI/CD workflows, remove donation links, update contact info and repository links
- chore: resolve analyzer issues
0.2.1 #
- Released @ 10/2026 (UTC)
- A read that got no answer at all (a
ReliableNetworkExceptionwithout astatusCode: offline, dropped connection, timeout, a request the adapter chose not to send) now logs atLog.alertwhether or not the cache could answer, and also when the error propagates; being offline is expected, not a bug. Server error statuses, malformed answers and bugs still log atLog.err.ReliableNetworkException.statusCodedocuments the contract: an adapter throws a status-less exception only for "no answer", and lets a bug propagate as itself
0.2.0 #
- Released @ 10/2026 (UTC)
- BREAKING:
fetchnow throws aFormatException(naming the keys it saw) for a list answer of unknown shape, instead of silently reading it as[]and serving stale cache forever; a list entry that is not an object also throws aFormatException.{items: [...]}is now unwrapped alongside a bare array and{data: [...]}; anullbody still reads as[] - A read whose answer lands after
purgeCollections,clearUserDataor asetActiveUserswitch to another user no longer writes it into the cache (the caller still gets the answer); a purge arriving part-way through a multi-step cache write stops it, and the purge clears what landed SembastAdapterreopens a dead database connection (iOS Safari killing IndexedDB under a backgrounded tab) and retries the operation once, giving up for the session if the reopen fails, hangs pastreopenTimeout, or is followed straight away by another dead-connection failure; new optional constructor parametersreopenTimeoutandopenDatabase, plusrecoveryGaveUpandSembastAdapter.isDeadConnectionError- A failed read served from cache (
NETWORK_OR_ELSE_CACHE) now logs atLog.alertinstead ofLog.errwhen the request got no answer at all (offline, dropped connection, timeout);Log.errremains when nothing answered from cache, the error propagates, the server answered with an error status (ReliableNetworkException.statusCodeset, e.g. 401 or 5xx), or the answer was malformed - A good read whose cache copy cannot be saved is returned as a success, with the failed save logged as a
Log.alertwarning (REPO_CACHE_WRITE_FAILED) instead of failing the read
0.1.1 #
- Update dependencies
0.1.0 #
- Initial release