lmdb-localstorage

0.0.2 • Public • Published

lmdb-localstorage

A browser localStorage implementation of the NodeJS lmdb API.

This is ALPHA software. Unit tests not yet in place.

Rationale

I personally prefer isomorphic programming and lmdb is not available in the browser. localStorage provides a synchronous API that maps to the synchronous read approach of lmdb.

I will create an async only version using indexedDB as a back-end given sufficient interest.

Installation

npm install lmdb-localstorage

Copy the file node_modules/lmdb-localstorage/lmdb-localstorage.js' and files in node_modules/lmdb-localstorage/src' to you preferred location.

Usage

<script type="module">
    import {open, ABORT} from "lmdb-localstorage.js";`
</script>

Except for documented exceptions below, see the documentation for LMDB at https://github.com/kriszyp/lmdb-js for how to use.

Unsupported/Differences/Under Development DB Options

encoding - The only encoding supported is json, so the option is ignored.

encoder - Custom encoding is not supported.

sharedStructuresKey - Not supported because msgpack is not supported.

compression - true or false only, configurable options under development.

cache - true or false only, configurable options under development.

useVersions - The standard documentation says "Set this to true if you will be setting version numbers on the entries in the database. Note that you can not change this flag once a database has entries in it (or they won't be read correctly)". For lmdb-localstorage turning versions off after initial use does not break the database, they simply won't be used.

key-encoding - ordered-binary (the LMDB default) is currently simulated and the sole options, values are ignored.

keyEncoder - Custom encoding is not supported.

dupSort - Under development.

strictAsyncOrder - Option not supported. API may operate this way. Not yet tested.

maxDbs - Currently unlimited. Under development.

maxReaders - Not supported. Ignored.

overlappingSync - Option not supported. API may operate this way. Not yet tested.

separateFlushed - Not supported.

pageSize - Not supported. Underlying localStorage does not support.

eventTurnBatching - Unlike the core LMDB package, this defaults to false and true is not supported.

commitDelay - Not supported. Ignored.

LMDB Flags - None of the LMDB environment flags are supported.

Unsupported/Under Development Methods

db.getValues(key, options?: RangeOptions): Iterable<any> - Not supported because dupSort, i.e. duplicate entries per key are not currently supported. Under development.

Events

As an EventEmitter lmdb-localstorage has limitations as documented at eventemitter3.

beforecommit - supported

Change History (Reverse Chronological Order)

2023-03-25 v0.0.2 Added ChaCha8 encryption, cache control, compression control, event emitting.

2023-03-24 v0.0.1 First public release

Package Sidebar

Install

npm i lmdb-localstorage

Weekly Downloads

1

Version

0.0.2

License

MIT

Unpacked Size

129 kB

Total Files

11

Last publish

Collaborators

  • anywhichway