reachdown v1.1.0
reachdown
Get the inner db of an
(abstract-)level(up|down)onion.
Useful for modules likesubleveldownto peel off redundant layers.
Example
const reachdown = require('reachdown')
const db = require('level')('example')Get the innermost db, which in this case is a leveldown instance in node or level-js in browsers:
const down = reachdown(db)Get a specific layer by type:
const enc = reachdown(db, 'encoding-down')
const down = reachdown(enc)
const levelup = reachdown(db, 'levelup') // levelup === dbUse a visitor function:
const down = reachdown(db, function (db, type) {
return db.someProperty && type !== 'levelup'
})API
db = reachdown(db[, visit][, strict = false])
The db argument is required and must be a recent-ish levelup, abstract-leveldown or subleveldown instance. The visit argument can be:
- A string, to find the first
dbwith a matching type - A function, to find the first
dbfor whichvisitreturns a truthy value - Omitted or falsy, to find the innermost
db.
If visit is non-falsy and no matching db is found, reachdown returns null unless strict is false in which case it returns the innermost db.
bool = reachdown.is(db, visit)
Utility to determine the type of db without reaching down. The visit argument is the same as above, i.e. a string or a function. Example:
if (reachdown.is(db, 'levelup')) {
// ..
}Which is the same as the following, except that reachdown.is(..) also works on older versions that don't have a type property:
if (db.type === 'levelup') {
// ..
}Supported Types
levelup(>= 0.0.2 only if db is open, otherwise >= 2.0.0)encoding-down(>= 1)deferred-leveldown(>= 0.3.0 only if db is open, otherwise >= 2.0.0)subleveldown(>= 4)multileveldown(TBD)- Yours?
Implementations of abstract-leveldown can declare a type like so:
MyLeveldown.prototype.type = 'my-leveldown'So that consumers can find that layer:
var down = MyLeveldown()
var db = levelup(down)
reachdown(db, 'my-leveldown') === downInstall
With npm do:
npm install reachdownLicense
MIT © 2019-present Vincent Weevers