diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b4716f..8daa6ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,24 @@ # Changelog -If you are upgrading, please see the [upgrade guide](UPGRADING.md). +_**If you are upgrading:** please see [`UPGRADING.md`](UPGRADING.md)._ -## [Unreleased][unreleased] +## [6.0.0] - 2019-10-19 + +### Changed + +- **Breaking:** upgrade `level-js` from `^4.0.0` to `^5.0.0` ([#158](https://github.com/Level/level/issues/158)) ([**@vweevers**](https://github.com/vweevers)) +- Upgrade `hallmark` devDependency from `^0.1.0` to `^2.0.0` ([#152](https://github.com/Level/level/issues/152), [#157](https://github.com/Level/level/issues/157)) ([**@vweevers**](https://github.com/vweevers)) +- Upgrade `standard` devDependency from `^12.0.0` to `^14.0.0` ([#151](https://github.com/Level/level/issues/151), [#155](https://github.com/Level/level/issues/155)) ([**@vweevers**](https://github.com/vweevers)) +- Upgrade `nyc` devDependency from `^13.2.0` to `^14.0.0` ([#147](https://github.com/Level/level/issues/147)) ([**@vweevers**](https://github.com/vweevers)) + +### Added + +- Document manifest, `iterator()` and `clear()` ([#162](https://github.com/Level/level/issues/162)) ([**@vweevers**](https://github.com/vweevers)) +- Add links to `browserify-starter` and `webpack-starter` ([`6ff1802`](https://github.com/Level/level/commit/6ff1802)) ([**@vweevers**](https://github.com/vweevers)) + +### Fixed + +- Bump `leveldown` and `level-packager` to prevent dedupe ([`5efdc82`](https://github.com/Level/level/commit/5efdc82), [`a9656c3`](https://github.com/Level/level/commit/a9656c3), [`97cb31c`](https://github.com/Level/level/commit/97cb31c)) ([**@vweevers**](https://github.com/vweevers)) ## [5.0.1] - 2019-03-29 @@ -259,19 +275,21 @@ If you are upgrading, please see the [upgrade guide](UPGRADING.md). - Update `level-packager` to `~0.18.0` ([**@rvagg**](https://github.com/rvagg)) - Update `leveldown` to `~0.10.0` ([**@rvagg**](https://github.com/rvagg)) -## [0.17.0-1] - 2013-10-09 +## [0.17.0] - 2013-10-01 ### Changed -- Use `level-packager` instead of `levelup` ([**@rvagg**](https://github.com/rvagg)) -- Run tests in `level-packager` using `tape` ([**@rvagg**](https://github.com/rvagg)) +- Update `levelup` to `~0.17.0` ([**@rvagg**](https://github.com/rvagg)) +- Update `leveldown` to `~0.9.0` ([**@rvagg**](https://github.com/rvagg)) -## [0.17.0] - 2013-10-01 +**Historical Note** 0.17.0 and 0.17.0-1 are listed out of order here, due to 0.17.0-1 not adhering to the semver rules that we follow today. + +## [0.17.0-1] - 2013-10-09 ### Changed -- Update `levelup` to `~0.17.0` ([**@rvagg**](https://github.com/rvagg)) -- Update `leveldown` to `~0.9.0` ([**@rvagg**](https://github.com/rvagg)) +- Use `level-packager` instead of `levelup` ([**@rvagg**](https://github.com/rvagg)) +- Run tests in `level-packager` using `tape` ([**@rvagg**](https://github.com/rvagg)) ## [0.16.0] - 2013-09-10 @@ -345,76 +363,76 @@ If you are upgrading, please see the [upgrade guide](UPGRADING.md). :seedling: Initial release. -[unreleased]: https://github.com/level/level/compare/v5.0.1...HEAD +[6.0.0]: https://github.com/Level/level/compare/v5.0.1...v6.0.0 -[5.0.1]: https://github.com/level/level/compare/v5.0.0...v5.0.1 +[5.0.1]: https://github.com/Level/level/compare/v5.0.0...v5.0.1 -[5.0.0]: https://github.com/level/level/compare/v4.0.0...v5.0.0 +[5.0.0]: https://github.com/Level/level/compare/v4.0.0...v5.0.0 -[4.0.0]: https://github.com/level/level/compare/v3.0.1...v4.0.0 +[4.0.0]: https://github.com/Level/level/compare/v3.0.2...v4.0.0 -[3.0.2]: https://github.com/level/level/compare/v3.0.1...v3.0.2 +[3.0.2]: https://github.com/Level/level/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/level/level/compare/v3.0.0...v3.0.1 +[3.0.1]: https://github.com/Level/level/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/level/level/compare/v2.1.2...v3.0.0 +[3.0.0]: https://github.com/Level/level/compare/v2.1.2...v3.0.0 -[2.1.2]: https://github.com/level/level/compare/v2.1.1...v2.1.2 +[2.1.2]: https://github.com/Level/level/compare/v2.1.1...v2.1.2 -[2.1.1]: https://github.com/level/level/compare/v2.1.0...v2.1.1 +[2.1.1]: https://github.com/Level/level/compare/v2.1.0...v2.1.1 -[2.1.0]: https://github.com/level/level/compare/v2.0.1...v2.1.0 +[2.1.0]: https://github.com/Level/level/compare/v2.0.1...v2.1.0 -[2.0.1]: https://github.com/level/level/compare/v2.0.0...v2.0.1 +[2.0.1]: https://github.com/Level/level/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/level/level/compare/v2.0.0-rc3...v2.0.0 +[2.0.0]: https://github.com/Level/level/compare/v2.0.0-rc3...v2.0.0 -[2.0.0-rc3]: https://github.com/level/level/compare/v2.0.0-rc2...v2.0.0-rc3 +[2.0.0-rc3]: https://github.com/Level/level/compare/v2.0.0-rc2...v2.0.0-rc3 -[2.0.0-rc2]: https://github.com/level/level/compare/v2.0.0-rc1...v2.0.0-rc2 +[2.0.0-rc2]: https://github.com/Level/level/compare/v2.0.0-rc1...v2.0.0-rc2 -[2.0.0-rc1]: https://github.com/level/level/compare/v1.7.0...v2.0.0-rc1 +[2.0.0-rc1]: https://github.com/Level/level/compare/v1.7.0...v2.0.0-rc1 -[1.7.0]: https://github.com/level/level/compare/v1.6.0...v1.7.0 +[1.7.0]: https://github.com/Level/level/compare/v1.6.0...v1.7.0 -[1.6.0]: https://github.com/level/level/compare/v1.5.0...v1.6.0 +[1.6.0]: https://github.com/Level/level/compare/v1.5.0...v1.6.0 -[1.5.0]: https://github.com/level/level/compare/v1.4.0...v1.5.0 +[1.5.0]: https://github.com/Level/level/compare/v1.4.0...v1.5.0 -[1.4.0]: https://github.com/level/level/compare/v1.3.0...v1.4.0 +[1.4.0]: https://github.com/Level/level/compare/v1.3.0...v1.4.0 -[1.3.0]: https://github.com/level/level/compare/v1.2.0...v1.3.0 +[1.3.0]: https://github.com/Level/level/compare/v1.2.0...v1.3.0 -[1.2.0]: https://github.com/level/level/compare/v1.1.0...v1.2.0 +[1.2.0]: https://github.com/Level/level/compare/v1.1.0...v1.2.0 -[1.1.0]: https://github.com/level/level/compare/v1.0.0...v1.1.0 +[1.1.0]: https://github.com/Level/level/compare/v1.0.0...v1.1.0 -[1.0.0]: https://github.com/level/level/compare/v1.0.0-0...v1.0.0 +[1.0.0]: https://github.com/Level/level/compare/v1.0.0-0...v1.0.0 -[1.0.0-0]: https://github.com/level/level/compare/v0.19.1...v1.0.0-0 +[1.0.0-0]: https://github.com/Level/level/compare/v0.19.1...v1.0.0-0 -[0.19.1]: https://github.com/level/level/compare/v0.19.0...v0.19.1 +[0.19.1]: https://github.com/Level/level/compare/v0.19.0...v0.19.1 -[0.19.0]: https://github.com/level/level/compare/0.18.0...v0.19.0 +[0.19.0]: https://github.com/Level/level/compare/0.18.0...v0.19.0 -[0.18.0]: https://github.com/level/level/compare/0.17.0-1...0.18.0 +[0.18.0]: https://github.com/Level/level/compare/0.17.0...0.18.0 -[0.17.0-1]: https://github.com/level/level/compare/0.17.0...0.17.0-1 +[0.17.0]: https://github.com/Level/level/compare/0.17.0-1...0.17.0 -[0.17.0]: https://github.com/level/level/compare/0.16.0...0.17.0 +[0.17.0-1]: https://github.com/Level/level/compare/0.16.0...0.17.0-1 -[0.16.0]: https://github.com/level/level/compare/0.15.0...0.16.0 +[0.16.0]: https://github.com/Level/level/compare/0.15.0...0.16.0 -[0.15.0]: https://github.com/level/level/compare/0.14.0...0.15.0 +[0.15.0]: https://github.com/Level/level/compare/0.14.0...0.15.0 -[0.14.0]: https://github.com/level/level/compare/0.13.0...0.14.0 +[0.14.0]: https://github.com/Level/level/compare/0.13.0...0.14.0 -[0.13.0]: https://github.com/level/level/compare/0.12.0...0.13.0 +[0.13.0]: https://github.com/Level/level/compare/0.12.0...0.13.0 -[0.12.0]: https://github.com/level/level/compare/0.11.0...0.12.0 +[0.12.0]: https://github.com/Level/level/compare/0.11.0...0.12.0 -[0.11.0]: https://github.com/level/level/compare/0.10.0...0.11.0 +[0.11.0]: https://github.com/Level/level/compare/0.10.0...0.11.0 -[0.10.0]: https://github.com/level/level/compare/0.9.0...0.10.0 +[0.10.0]: https://github.com/Level/level/compare/0.9.0...0.10.0 -[0.9.0]: https://github.com/level/level/compare/0.8.0...0.9.0 +[0.9.0]: https://github.com/Level/level/compare/0.8.0...0.9.0 diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 1d71a30..8e30cc2 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -3,12 +3,12 @@ | Name | GitHub | Social | | :------------------------- | :--------------------------------------------------------------- | :------------------------------------------------------------ | | **Lars-Magnus Skog** | [**@ralphtheninja**](https://github.com/ralphtheninja) | [**@ralph@social.weho.st**](https://social.weho.st/@ralph) | -| **Rod Vagg** | [**@rvagg**](https://github.com/rvagg) | [**@rvagg@twitter**](https://twitter.com/rvagg) | | **Vincent Weevers** | [**@vweevers**](https://github.com/vweevers) | [**@vweevers@twitter**](https://twitter.com/vweevers) | -| **Julian Gruber** | [**@juliangruber**](https://github.com/juliangruber) | [**@juliangruber@twitter**](https://twitter.com/juliangruber) | +| **Rod Vagg** | [**@rvagg**](https://github.com/rvagg) | [**@rvagg@twitter**](https://twitter.com/rvagg) | | **jess** | [**@monkeywithacupcake**](https://github.com/monkeywithacupcake) | | +| **Julian Gruber** | [**@juliangruber**](https://github.com/juliangruber) | [**@juliangruber@twitter**](https://twitter.com/juliangruber) | | **Tim Oxley** | [**@timoxley**](https://github.com/timoxley) | [**@secoif@twitter**](https://twitter.com/secoif) | +| **Andrew Kelley** | [**@andrewrk**](https://github.com/andrewrk) | | +| **Joseph Dykstra** | [**@ArtskydJ**](https://github.com/ArtskydJ) | | | **Matt Walters** | [**@mateodelnorte**](https://github.com/mateodelnorte) | | | **RasmusErik Voel Jensen** | [**@rasmuserik**](https://github.com/rasmuserik) | | -| **Joseph Dykstra** | [**@ArtskydJ**](https://github.com/ArtskydJ) | | -| **Andrew Kelley** | [**@andrewrk**](https://github.com/andrewrk) | | diff --git a/README.md b/README.md index 50fa3b6..87655bb 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ db.put('name', 'Level', function (err) { At the time of writing, `level` works in Node.js 8+ and Electron 3+ on Linux, Mac OS, Windows and FreeBSD, including any future Node.js and Electron release thanks to [N-API](https://nodejs.org/api/n-api.html), including ARM platforms like Raspberry Pi and Android, as well as in Chrome, Firefox, IE 11, Edge, Safari, iPhone and Chrome for Android. For details, see [Supported Platforms](https://github.com/Level/leveldown#supported-platforms) of `leveldown` and [Browser Support](https://github.com/Level/level-js#browser-support) of `level-js`. -Though `leveldown` and `level-js` have subtle differences in type handling, `level` negates this by transparently wrapping both with [`encoding-down`](https://github.com/Level/encoding-down). If you want to support all possible runtime environments, stick to string keys with encodings like the default `utf8`. Binary values are supported across the board; in browsers that support [IndexedDB Second Edition](https://www.w3.org/TR/IndexedDB-2/) (like Chrome and Firefox) you can also use binary keys. +Binary values are supported across the board; in browsers that support [IndexedDB Second Edition](https://www.w3.org/TR/IndexedDB-2/) (like Chrome and Firefox) you can also use binary keys. If you want to use [Promises](#promise-support), you will need a polyfill like [`pinkie`](https://github.com/floatdrop/pinkie) in older browsers like IE. diff --git a/UPGRADING.md b/UPGRADING.md index bcb45bb..01488b1 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -2,23 +2,58 @@ 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](CHANGELOG.md). -## v5 +## 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`](https://github.com/Level/level-js): + +> 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](https://github.com/Level/memdown/issues/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` \[via `level@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 included `upgrade()` utility to convert stored data to binary (in so far the environment supports it): +> +> ```js +> 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 :sparkles: + +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()`](https://github.com/Level/level#dbclearoptions-callback) to delete all entries or a range! Also works in [`subleveldown`](https://github.com/Level/subleveldown) - empty that bucket! +- Check out [`db.supports`](https://github.com/Level/level#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](https://github.com/Level/leveldown/pull/674)! +- With thanks to [Cirrus CI](https://cirrus-ci.org/), `leveldown` is now [continuously tested in FreeBSD](https://github.com/Level/leveldown/pull/678)! + +Go forth and build amazing things. + +## 5.0.0 Upgraded to [`leveldown@5.0.0`](https://github.com/Level/leveldown/blob/v5.0.0/UPGRADING.md#v5) and (through `level-packager@5`) [`levelup@4`](https://github.com/Level/levelup/blob/v4.0.0/UPGRADING.md#v4) and [`encoding-down@6`](https://github.com/Level/encoding-down/blob/v6.0.0/UPGRADING.md#v6). 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`](https://github.com/nodejs/readable-stream#version-3xx). In addition, `level` got browser support! It uses [`leveldown`](https://github.com/Level/leveldown) in node and [`level-js`](https://github.com/Level/level-js) in browsers (backed by [IndexedDB](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API)). As such, [`level-browserify`](https://github.com/Level/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](README.md#supported-platforms). -## v4 +## 4.0.0 Dropped support for node 4. No other breaking changes. -## v3 +## 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()`](https://github.com/Level/abstract-leveldown/commit/a2621ad70571f6ade9d2be42632ece042e068805). Though this is negated by `levelup`, we decided to release a new major version in the event of dependents reaching down into `db.db`. -## v2 +## 2.0.0 No breaking changes to the `level` API.