vexana 6.0.1
vexana: ^6.0.1 copied to clipboard
Manage your network layer with dio. You will be able to use it very easily network operations.
6.0.1 #
Fixed #
- The cache key now includes the path and query. It used to be
baseUrl-METHOD, so every cachedGETon one manager shared a single entry: afterGET /postswas cached,GET /posts/1orGET /usersreturned the/postsbody. The key is nowbaseUrl-METHOD-path?query, with query keys sorted so their order does not matter.removeAll()still clears every entry of the manager. Entries written by 6.0.0 are no longer read and expire on their own. LocalFile: writing a key that was already cached kept the old value instead of the new one.LocalFiledrops expired entries whenever it writes, so entries for paths or queries that are never requested again no longer pile up in the cache file.
6.0.0 #
If you use caching, upgrade. The first two entries under Fixed had been broken for several releases: cache reads never succeeded, and clearing the cache could delete unrelated application files.
Breaking #
- SDK constraint raised to
^3.6.0(required by pub workspaces). cache.removeAll()with theLocalFilemanager now removes only the entries belonging to the calling manager's base URL. It previously deleted the whole application documents directory.LocalPreferencesalready behaved this way; both file managers now share one contract.sendPrimitiveanddownloadFileSimplenow go through the manager's own request pipeline. They used to build a freshDiointernally, which silently skipped the manager's interceptors, adapter and base options. If you relied on those calls bypassing your interceptors — refresh-token handling included — they no longer do.package:dio/src/...paths are no longer re-exported. Everything they held is already exported bypackage:dio/dio.dart, so imports keep working. The only symbols that disappear are dio's internalInterceptorStateandInterceptorResultType, which dio itself hides from its public surface.
Fixed #
- Every cache hit failed since 4.0.0.
fetchDataFromCacheandloadFromCachepassed theFuturereturned bydecodeBodyWithComputestraight into the parser instead of awaiting it. The parameter isdynamic, so nothing complained: the parser receivedInstance of 'Future<dynamic>',sendansweredJSON Decode ErrorandsendRequestreturnedNetworkErrorResultwhenever a fresh cache entry existed. With a nullable result type the failure was quieter still —NetworkSuccessResult(null). A corrupted entry is now treated as a miss and falls back to the network. Thanks to @Yusufihsangorgel (#133). cache.removeAll()deleted the whole application documents directory. With theLocalFilemanager it calledclearAllDirectoryItems, which removedgetApplicationDocumentsDirectory()recursively — databases, downloaded files and everything else the app stored there — even though the cache lives in a singlevexana.json. Thanks to @Yusufihsangorgel (#134).NetworkManager.download()crashed withStackOverflowError. It overrodeDioMixin.downloadbut calledthis.download(...)in its body; virtual dispatch resolves that to the most derived implementation — itself — so the method recursed until the stack overflowed. It never worked in 5.0.3, where it was introduced.DioMixin.downloadthrowsUnimplementedError, so delegating tosuperis not possible either. The call is now delegated throughDioMixin.clone(), which carries the manager's base options, interceptor chain, transformer and HTTP adapter, and drops the defaultImplyContentTypeInterceptorthat a plainDio()would add. Native and web regression tests from @Yusufihsangorgel (#135).sendPrimitivebuilt its URL asbaseUrl + path. When the base URL ended with a slash this producedhttps://host//path, which servers read as a scheme-relative request target — the path arrived empty. dio's own URL resolution now handles the join.JsonDecodeUtil.safeJsonDecodeComputereturned thecomputefuture without awaiting it, so a decode error escaped itstryand was thrown instead of returningnull.
Changed #
- Migrated to a Melos monorepo with Dart pub workspaces. The published package
now lives in
packages/vexana/. (#65) NetworkCheckno longer sends an HTTPS request togoogle.comon every check. That leaked a signal to a third party whenever a request failed, reported "no internet" on networks where Google is unreachable, and had no timeout at all. It now uses the platform's own facilities: a DNS lookup (or an interface check when no host is known) on IO,navigator.onLineon web, both behind a timeout.isNetworkAvailabletakes optionalhostandtimeoutarguments, andNoNetworkManagertakes an optionalhost, so the check can target the server the request was actually going to.downloadnow reuses a single delegate instead of building a newDio— and therefore a newHttpClient, connection pool and TLS handshake — on every call.
Web #
- WebAssembly compatible. Every
if (dart.library.html)condition is nowif (dart.library.js_interop). The old condition evaluates to false under wasm, which made the compiler fall through to thedart:iobranch — anddart:iodoes not exist on wasm.HttpStatusmoved to a pure-Dart shim because it exists only indart:io(never indart:html). Verified byflutter build web --wasmin CI.
Internal #
- Analyzer and formatter issues cleared;
dart formatis enforced in CI. - CI now runs analyze, format check, coverage and a wasm build. The PR-comment step that failed on fork PRs with "Resource not accessible by integration" was removed (#121).
- Test coverage is measured in CI with a 75% floor instead of being estimated in the README. Measured at 77.5% on 2026-08-10.
- Publishing moved to pub.dev's OIDC automated publishing via Dart's official reusable workflow; no credentials are stored in the repo.
- Added a benchmark harness (
benchmark/) with baseline measurements. - The example app is deployed to https://vb10.github.io/vexana/ on every push to master.
- Renamed two misspelled internals (neither is exported):
file_manager_not_foud_exception.dart→file_manager_not_found_exception.dartandNetworkManagerUtil.isRequestHasSurceased→isRequestSucceeded. Rename contributed by @mehmetfiskindal (#132). - Added a
script/verify.shentry point that runs analyze, tests and the web and wasm builds in one command.
5.0.3 #
- Updated dio package to 5.8.0
- Added download method for newer dio version
5.0.0 #
- Added new method for sending request it is enable to "fold" option for every response
5.0.2 #
4.1.0 #
- Refresh Token Dart Code example update #106 from @behzodfaiziev
- fix formData finalized exception #105 from @aligconnectinno
- Refactor NetworkManagerErrorInterceptor to handle null onResponseParse #100 from @aligconnectinno
- updated issue_tracker link #94 from @behzodfaiziev
- Updated unit test capabilities
4.0.4 #
- Removed transformer custom implementation
4.0.2 #
- Removed unused code with package (Native adapter)
4.0.3 #
- Updated readme with some invited social media links
4.0.1 06/04/2024 #
- The new version has been released with many new coding updates
- Package and many dependencies has been updated
- Removed unused code with package
- Added new unit test
- Added new documentation
- Updated example project
4.0.0-dev5 20/12/2023 #
- Coding improvement for test coverage
4.0.0-dev4 19/12/2023 #
- Coding improvement with documentation
- Fixed refresh token issues
4.0.0-dev3 21/02/2023 #
- Parallel request problem has fixed with cancel token.
4.0.0-dev2 21/02/2023 #
- Refresh token issue has fixed.
4.0.0-dev1 21/02/2023 #
- The new version has been released with may new coding updates
- Package and many dependencies has been updated
- Added new unit test
- Added new documentation
3.5.2 21/02/2023 #
- Dio package update 3.5.2
- Added some documentation with fix some issues.
3.5.1 21/02/2023 #
- Updated code documentation
3.5.0 21/02/2023 #
- Updated some packages
- Package minimum target to dart3
- Fixed issue primitive error parse
3.4.3 21/02/2023 #
- Dio package updated to 5.2.0
- Fixed dio error instance
3.4.0 21/02/2023 #
- Dio package updated to 5.0.0
- Added some fixes with coding improvement.
3.3.1 21/01/2023 #
- Fixed web platform issues from pub dev
- Added custom path provider for web
3.3.0 15/01/2023 #
- Fixed web platform issues
3.2.1 15/01/2023 #
- Fixed analyze issue
3.2.0 15/01/2023 #
- Added little improvement for sembast and etc.
- Fixed web support problem
3.1.1 15/06/2022 #
- Generic error model added on network manager. NetworkManager
3.0.1 15/06/2022 #
- Fixed U8IntList problem.
3.0.0 15/06/2022 #
- Error widget mechanism added when your network is gone.
2.8.1 15/06/2022 #
- Error model parser added
2.8.0 12/03/2022 #
- Force parser added with parameter.
- Coding improvement for decode
2.7.0 04/12/2021 #
- Request can cancelable.
- HttpCertificate added
- Some readme problems fixed.
- A little improvement about parser etc.
2.6.0 04/12/2021 #
- Added new feature as a primitive send, It will be provide primitive service response.
- Cancellation support added for very request.
2.5.0 04/12/2021 #
- Updated to new dio version 4.0.+
- Retry mechanism has changed by google retry package.
- QueuedInterceptorsWrapper used instead of lock mechanism. (dio #590)
2.4.3 29/09/2021 #
- Empty model compare problems has fixed.
2.4.2 29/09/2021 #
- Error log has linked to enable logger property.
2.4.1 29/09/2021 #
- error model parse has added.
2.4.0 29/09/2021 #
- uploadFile method added, it able to upload file.
2.3.5 29/09/2021 #
- Every multipart file exported for Multipart request.
2.3.4 29/08/2021 #
- Formdata exported for public access.
2.3.3 29/08/2021 #
- MultipartFile options exported to outside.
2.3.2 21/08/2021 #
- INetwork Model problem fixed so it's accept null return.
2.3.1 21/08/2021 #
- Parse exception log added.
- Network Model accept to nullable map object.
- Flutter lints improvement.
2.3.0 21/08/2021 #
- Base headers control has added.
- File download options has return byte array fixed.
- Web export problem fixed.
2.2.2 30/07/2021 #
- Successful response code range added.(200> &300<)
2.2.1 20/06/2021 #
- Refresh token veriable problem has fixed
2.2.0 30/05/2021 #
- File download wih progress callback.
- Error log message added with logger package
2.1.5 15/04/2021 #
- Added simple download manager
2.1.0 15/04/2021 #
- Cache operation has fixed for null safety.
2.0.0-nullsafety.10 15/04/2021 #
- Some bug fix lasttt :)
2.0.0-nullsafety.9 15/04/2021 #
- Some bug fix.
2.0.0-nullsafety.8 10/01/2021 #
- Export to interceptors values
- Add more public documentation
2.0.0-nullsafety.7 10/01/2021 #
- Dio null safety migration
2.0.0-nullsafety.6 10/01/2021 #
- Interceptor export add library.
2.0.0-nullsafety.5 10/01/2021 #
- Object mapper fixed
2.0.0-nullsafety.4 05/01/2021 #
- Object type conver to dynamic.
2.0.0-nullsafety.3 05/01/2021 #
- To json and From Json Model architecture fixed.
2.0.0-nullsafety.2 05/01/2021 #
- Map parsing error has fixed with null safety.
2.0.0-nullsafety.1 05/01/2021 #
- Vexana adapt to null safety.
1.3.1 05/01/2021 #
- Fixed primitive type response and added test.
1.3.0 05/01/2021 #
- Response and Request preview on editor null fixed.
1.2.2 20/11/2020 #
- Minor fix and export options added.
1.2.1 20/11/2020 #
- Cache use detail added to the documentation.
1.2.0 20/11/2020 #
- Network cache options added project.
- Remove all cache options added.
1.1.5 18/11/2020 #
- Retry options add on refresh token mechanism
- On Refresh Fail added.
1.1.0 17/11/2020 #
- The user gave logging options
- Refresh token options added.
1.0.0 22/10/2020 #
- Version 1.0.0 updated.
- Readme and todos prepared.
- Wiki Created.
0.0.1 20/10/2020 #
- Project template created.
- Base models has been defined.
- Logger options added,
- User custom error model added.