diff --git a/README.md b/README.md index ecc3b0c..bba5532 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ `deferred-leveldown` implements the basic [abstract-leveldown](https://github.com/Level/abstract-leveldown) API so it can be used as a drop-in replacement where `leveldown` is needed. -`put()`, `get()`, `del()`, `batch()` and `clear()` operations are all queued and kept in memory until the `abstract-leveldown`-compatible object has been opened through `deferred-leveldown`'s `open()` method. +`put()`, `get()`, `getMany()`, `del()`, `batch()` and `clear()` operations are all queued and kept in memory until the `abstract-leveldown`-compatible object has been opened through `deferred-leveldown`'s `open()` method. `batch()` operations will all be replayed as the array form. Chained-batch operations are converted before being stored. diff --git a/deferred-leveldown.js b/deferred-leveldown.js index 8c40db9..fcea974 100644 --- a/deferred-leveldown.js +++ b/deferred-leveldown.js @@ -3,8 +3,8 @@ const AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN const inherits = require('inherits') const DeferredIterator = require('./deferred-iterator') -const deferrables = 'put get del batch clear'.split(' ') -const optionalDeferrables = 'approximateSize compactRange'.split(' ') +const deferrables = ['put', 'get', 'getMany', 'del', 'batch', 'clear'] +const optionalDeferrables = ['approximateSize', 'compactRange'] function DeferredLevelDOWN (db) { AbstractLevelDOWN.call(this, db.supports || {}) diff --git a/package.json b/package.json index 622eb70..619a85d 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "UPGRADING.md" ], "dependencies": { - "abstract-leveldown": "^7.0.0", + "abstract-leveldown": "^7.2.0", "inherits": "^2.0.3" }, "devDependencies": { @@ -28,7 +28,7 @@ "airtap-playwright": "^1.0.1", "dependency-check": "^3.3.0", "hallmark": "^3.1.0", - "memdown": "^6.0.0", + "memdown": "^6.1.0", "nyc": "^15.1.0", "reachdown": "^1.0.0", "standard": "^16.0.3", diff --git a/test.js b/test.js index e1b9781..bf63d3c 100644 --- a/test.js +++ b/test.js @@ -17,13 +17,15 @@ const testCommon = suite.common({ createIfMissing: false, errorIfExists: false, - // Opt-in to new clear() tests - clear: true + // Opt-in to new tests + clear: true, + getMany: true }) // Hack: disable failing tests. These fail on serialize tests require('abstract-leveldown/test/put-test').args = noop require('abstract-leveldown/test/get-test').args = noop +require('abstract-leveldown/test/get-many-test').args = noop require('abstract-leveldown/test/del-test').args = noop // This fails on "iterator has db reference" test, as expected because @@ -235,7 +237,7 @@ test('keys and values should not be serialized', function (t) { function noop () {} - t.plan(8) + t.plan(9) t.test('put', function (t) { const calls = [] @@ -261,6 +263,17 @@ test('keys and values should not be serialized', function (t) { }) }) + t.test('getMany', function (t) { + const calls = [] + const ld = Db('getMany', function (keys, cb) { calls.push(keys[0]) }) + ITEMS.forEach(function (key) { ld.getMany([key], noop) }) + ld.open(function (err) { + t.error(err, 'no error') + t.same(calls, ITEMS, 'value ok') + t.end() + }) + }) + t.test('del', function (t) { const calls = [] const ld = Db('del', function (key, cb) { calls.push(key) })