diff --git a/index.js b/index.js index c1bee4c..1c2d2af 100644 --- a/index.js +++ b/index.js @@ -284,6 +284,7 @@ class MemoryLevel extends AbstractLevel { permanence: false, createIfMissing: false, errorIfExists: false, + has: true, encodings: { [storeEncoding]: true }, signals: { // Would have no value here because the operations are synchronous @@ -313,6 +314,20 @@ class MemoryLevel extends AbstractLevel { return keys.map(key => this[kTree].get(key)) } + async _has (key, options) { + const tree = options.snapshot != null + ? options.snapshot[kTree] + : this[kTree] + return tree.get(key) !== undefined + } + + async _hasMany (keys, options) { + const tree = options.snapshot != null + ? options.snapshot[kTree] + : this[kTree] + return keys.map(has, tree) + } + async _del (key, options) { this[kTree] = this[kTree].remove(key) } @@ -394,3 +409,7 @@ if (typeof process !== 'undefined' && !process.browser && typeof global !== 'und function isRangeOption (k) { return rangeOptions.has(k) } + +function has (key) { + return this.get(key) !== undefined +}