Level/community

Add type property to levelup and abstract-leveldown implementations

Closed this issue · 2 comments

A continuation of Level/subleveldown#34. cc @ralphtheninja

Background

Modules like subleveldown and multileveldown have to peel off layers (levelup, deferred-leveldown and/or encoding-down) from an input db to get to the inner db, which they then rewrap with those same layers.

That process ain't pretty, so I wrote reachdown to hide that ugliness. It currently has to feature-detect deferred-leveldown and encoding-down, and this may clash with another abstract-leveldown implementation at some point. To counter that, we can add a type property across the board:

MyLeveldown.prototype.type = 'my-leveldown'

Note: with that in place, the unwrapping (or even merely the fact that we have to unwrap) still isn't very clean, but IMO it's acceptable as a medium-term solution because there's a plan to merge level(up) functionality into abstract-leveldown (#58) which ultimately removes the need to unwrap.

Tasks

Add type

Use reachdown utility

Awesome name reachdown :)

Closing because the remaining items are external (multileveldown) or tests-only (level-test).