-
-
Notifications
You must be signed in to change notification settings - Fork 15
Closed
Labels
discussionDiscussionDiscussion
Description
I felt the need to defragment various threads:
- Detect presence of
approximateSize: implement manifest functionality deferred-leveldown#35 and detecting approximateSize presence abstract-leveldown#8 - Get an underlying
dbwith a certaintype: Current functionality and the future (hoping on support for all use cases) subleveldown#34 - Exposing sublevels to clients: multilevel(down) and level-manifest compatibility subleveldown#35
- Various: isEmbedded() expose what sort of contract the leveldown can provide. levelup#279
Prior art:
level-manifest(used bymultilevelbut notmultileveldown)
Requirements:
- Manifests must be objects (established in isEmbedded() expose what sort of contract the leveldown can provide. levelup#279)
- Declare high-level features as booleans:
- snapshot guarantees (use case: tests, consumers that require consistency)
- exclusive access (use case: live streams, prehooks) (see isEmbedded() expose what sort of contract the leveldown can provide. levelup#279)
- binary keys (use case: tests, deciding on a network transport)
- permanence (use case: packager tests)
- seeking (use case: tests, multiget, skip scans)
- Declare additional methods and properties (that are not part of the abstract API)
- Examples:
approximateSize()(use case: defer/proxy/expose)- sublevels (use case: exposing them to clients)
- Declare name, return type, sync/callback/promise
- Examples:
- Nice to have: use manifests the other way around, to declare features that a plugin wants
Open questions:
- Should manifests extend manifests from underlying downs? Note that underlying downs can be swapped at runtime.
- In some cases, feature support depends on the runtime environment too. E.g. not all browsers support binary keys in
level-js. Is that something we want to expose?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
discussionDiscussionDiscussion