5.0 KiB
Upgrade Guide
This document describes breaking changes and how to upgrade. For a complete list of changes including minor and patch releases, please refer to the changelog.
6.0.0
No breaking changes to the level
API. If you're only using level
in Node.js or Electron, you can upgrade without thinking twice.
The major bump is for browsers, because level
upgraded to level-js@5
:
Support of keys & values other than strings and Buffers has been dropped. Internally
level-js
now stores keys & values as binary which solves a number of compatibility issues (Level/memdown#186). If you pass in a key or value that isn't a string or Buffer, it will be irreversibly stringified.Existing IndexedDB databases created with
level-js@4
[vialevel@5
] can be read only if they used binary keys and string or binary values. Other types will come out stringified, and string keys will sort incorrectly. Use the includedupgrade()
utility to convert stored data to binary (in so far the environment supports it):var level = require('level') var reachdown = require('reachdown') var db = level('my-db') db.open(function (err) { if (err) throw err reachdown(db, 'level-js').upgrade(function (err) { if (err) throw err }) })
New Features ✨
In case you missed it (a few of these already floated into level@5
) some exciting new features are now available in all environments:
- Added
db.clear()
to delete all entries or a range! Also works insubleveldown
- empty that bucket! - Check out
db.supports
: a manifest describing the features of a db! - Glorious:
leveldown
ships a prebuilt binary for Linux that is now compatible with Debian 8, Ubuntu 14.04, RHEL 7, CentOS 7 and other flavors with an old glibc! - With thanks to Cirrus CI,
leveldown
is now continuously tested in FreeBSD!
Go forth and build amazing things.
5.0.0
Upgraded to leveldown@5.0.0
and (through level-packager@5
) levelup@4
and encoding-down@6
. Please follow these links for more information. A quick summary: range options (e.g. gt
) are now serialized the same as keys, { gt: undefined }
is not the same as {}
, nullish values are now rejected and streams are backed by readable-stream@3
.
In addition, level
got browser support! It uses leveldown
in node and level-js
in browsers (backed by IndexedDB). As such, level-browserify
is not needed anymore and will be deprecated later on. To learn what the integration of level-js
means for platform, browser and type support, please see the updated README.
4.0.0
Dropped support for node 4. No other breaking changes.
3.0.0
No breaking changes to the level
API.
This is an upgrade to leveldown@^3.0.0
which is based on abstract-leveldown@~4.0.0
which in turn contains breaking changes to .batch()
. Though this is negated by levelup
, we decided to release a new major version in the event of dependents reaching down into db.db
.
2.0.0
No breaking changes to the level
API.
The parts that make up level
have been refactored to increase modularity. This is an upgrade to leveldown@~2.0.0
and level-packager@~2.0.0
, which in turn upgraded to levelup@^2.0.0
. The responsibility of encoding keys and values moved from levelup
to encoding-down
, which comes bundled with level-packager
.
Being a convenience package, level
glues the parts back together to form a drop-in replacement for the users of levelup@1
, while staying fully compatible with level@1
. One thing we do get for free, is native Promise support.
const db = level('db')
await db.put('foo', 'bar')
console.log(await db.get('foo'))
This does not affect the existing callback API, functionality-wise or performance-wise.
For more information please check the corresponding CHANGELOG.md
for: