Level / community

Discussion, support and common information for projects in the community.
MIT License
42 stars 15 forks source link

Add type property to levelup and abstract-leveldown implementations #82

Closed vweevers closed 4 years ago

vweevers commented 4 years ago

A continuation of https://github.com/Level/subleveldown/issues/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 (https://github.com/Level/community/issues/58) which ultimately removes the need to unwrap.

Tasks

Add type

Use reachdown utility

ralphtheninja commented 4 years ago

Awesome name reachdown :)

vweevers commented 4 years ago

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