datastore-level
Version:
Datastore implementation with level(up|down) backend
73 lines • 2.91 kB
TypeScript
/**
* @packageDocumentation
*
* A Datastore implementation that uses a flavour of [Level](https://leveljs.org/) as a backend.
*
* This module is targetted at Node.js. It is possible to use it in a browser but you should probably use IDBDatastore instead.
*
* @example
*
* ```js
* import { LevelDatastore } from 'datastore-level'
*
* // Default using level as backend for node or the browser
* const store = new LevelDatastore('path/to/store')
*
* // another leveldown compliant backend like memory-level
* const memStore = new LevelDatastore(
* new MemoryLevel({
* keyEncoding: 'utf8',
* valueEncoding: 'view'
* })
* )
* ```
*
* ## Browser Shimming Leveldown
*
* `LevelStore` uses the `level` module to automatically use `level` if a modern bundler is used which can detect bundle targets based on the `pkg.browser` property in your `package.json`.
*
* If you are using a bundler that does not support `pkg.browser`, you will need to handle the shimming yourself, as was the case with versions of `LevelStore` 0.7.0 and earlier.
*
* ## Database names
*
* `level-js@3` changed the database prefix from `IDBWrapper-` to `level-js-`, so please specify the old prefix if you wish to continue using databases created using `datastore-level` prior to `v0.12.0`. E.g.
*
* ```javascript
* import leveljs from 'level-js'
* import browserStore = new LevelDatastore(
* new Level('my/db/name', {
* prefix: 'IDBWrapper-'
* })
* })
* ```
*
* More information: [https://github.com/Level/level-js/blob/master/UPGRADING.md#new-database-prefix](https://github.com/Level/level-js/blob/99831913e905d19e5f6dee56d512b7264fbed7bd/UPGRADING.md#new-database-prefix)
*/
import { BaseDatastore } from 'datastore-core';
import { Key } from 'interface-datastore';
import { Level } from 'level';
import type { Batch, KeyQuery, Pair, Query } from 'interface-datastore';
import type { AbortOptions } from 'interface-store';
import type { DatabaseOptions, OpenOptions } from 'level';
/**
* A datastore backed by leveldb
*/
export declare class LevelDatastore extends BaseDatastore {
db: Level<string, Uint8Array>;
private readonly opts;
constructor(path: string | Level<string, Uint8Array>, opts?: DatabaseOptions<string, Uint8Array> & OpenOptions);
open(): Promise<void>;
put(key: Key, value: Uint8Array, options?: AbortOptions): Promise<Key>;
get(key: Key, options?: AbortOptions): Promise<Uint8Array>;
has(key: Key, options?: AbortOptions): Promise<boolean>;
delete(key: Key, options?: AbortOptions): Promise<void>;
close(): Promise<void>;
batch(): Batch;
query(q: Query, options?: AbortOptions): AsyncIterable<Pair>;
queryKeys(q: KeyQuery, options?: AbortOptions): AsyncIterable<Key>;
_query(opts: {
values: boolean;
prefix?: string;
}): AsyncIterable<Pair>;
}
//# sourceMappingURL=index.d.ts.map