ob_dump_reader 0.1.0-beta.2
ob_dump_reader: ^0.1.0-beta.2 copied to clipboard
Minimal ObjectBox LMDB reader toolkit
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
Generated from the repo root's CHANGELOG.md at publish time — see that
file if you're reading this in the published package and want the full
picture across the other packages in this repo too.
0.1.0-beta.2 - 2026-10-27 #
Fixed #
- The
liblmdbshared library is found underflutter teston Flutter 3.47+: thereIsolate.resolvePackageUriSyncthrowsUnsupportedError, so the library placed bydart run ob_dump_reader:buildwas unreachable. As a last resort the loader now reads.dart_tool/package_config.jsondirectly (local files only, no network), after the executable-relative lookup, so compiled and bundled builds are unchanged.
0.1.0-beta.1 - 2026-07-22 #
Changed #
- Version bump only — republished in lockstep with
flutter/py(see the intro above), no functional changes.
0.1.0-alpha.2 - 2026-07-06 #
Added #
dart run ob_dump_reader:build— compiles the vendored LMDB source into a shared library for the current desktop platform (Linux/macOS/ Windows), via a plain CMake configure+build. No network, no FetchContent, no prebuilt binary. Only needed for plain-Dart (non- Flutter) use;ob_dump_reader_flutterbundles its own build automatically as a real Flutter plugin.readToManyTargets()— resolves ObjectBoxToManyrelation links directly from LMDB (not part of the FlatBuffers tableflatc --dartoutput can decode).decodeFlex(),bytesToHex(),bytesToUuidString(),tryParseJsonString()— decode helpers forFlexfields and theUuid/Int128/Decimal128/Bson/Json/JavaScript/JsonToNativeExternalPropertyTypeannotations, whichflatc --dartoutput only gives you as raw bytes/strings. Mirrorsob-dump's own C++ decode exactly.
Changed #
- No longer depends on
dart_lmdb2— replaced with a small, purpose-builtdart:ffibinding over the vendored LMDB C source (src/lmdb/, LMDB_0.9.31 — the same commitob-dump's own C++ core builds and has verified). Reasons, both confirmed empirically rather than assumed:dart_lmdb2's own native-library path resolution (Isolate.resolvePackageUriSync()) throwsUnsupportedErroroutright in a compiled AOT release build — reproduced with a realflutter build linux --release, copying only the output bundle to an isolated directory (no source project, no pub cache) and running it. Not Flatpak-specific: breaks every compiled Flutter Linux/Windows release build depending on it.flutter_lmdb2(the Flutter-plugin wrapper) has no Linux or Windows support at all as published — both platforms are commented out in its ownpubspec.yaml.- This package's own loader (
src/lmdb_native_library.dart) doesn't repeat either mistake: triespackage:URI resolution first (unchangeddart run/flutter runbehaviour), then falls back per platform to where each platform's own native-library bundling convention actually places the library (confirmed against the officialflutter create --template=plugin_ffiscaffold, not guessed).
readObjectBoxRecords()no longer copies to a temporary directory — reads the original files directly, in place. The copy was only ever needed becausedart_lmdb2required a write-capable LMDB environment just to register the root database handle; this package's own binding opens the environment itselfMDB_RDONLYfrom the start (matchingob-dump's own C++LmdbReader), which is exactly what LMDB's MVCC design is for: any number of readers can safely run alongside one concurrent writer, in any process, with zero risk to the original data.
Removed #
readObjectBoxRecordsUnsafe()/readToManyTargetsUnsafe()— no longer needed now that the safe, default functions read in place with no copy (see above); there was no longer a distinction for these to make.