Wallet store
A flexible and extensible library for wallet data storage, supporting multiple storage engine implementations.
๐ Table of Contents
๐ Overview
lib-wallet-store provides a consistent interface for wallet data storage, allowing developers to choose or implement the storage engine that best fits their needs. Whether you need in-memory storage, file-based persistence, or distributed data structures, lib-wallet-store offers a unified API to work with various backend technologies.
โจ Features
๐ข Consistent key-value storage API
๐ Pluggable storage engine architecture
๐ Asynchronous operations
๐งฉ Support for multiple instances
๐ Designed for wallet data management
๐ง Usage
Here's a quick example of how to use lib-wallet-store with the Hyperbee engine:
๐ API
WalletStoreHyperbee
WalletStoreHyperbee
Hyperbee implementation of WalletStore.
Constructor
new WalletStoreHyperbee(config)
config.store_path
: (optional) Storage path for Hypercoreconfig.hyperbee
: (optional) Existing Hyperbee instanceconfig._cache
: (optional) Custom cache Map instanceconfig.name
: (optional) Store name, defaults to 'default'
Instance Methods
init()
Initializes the Hyperbee database
close()
Closes the database and cleans up cache
newInstance(opts)
Creates a new instance with shared cache
opts.name
: (required) Name for the new instance
has(key)
Checks if key exists in store
key
: Key to check
get(key)
Retrieves and parses a value
key
: Key to retrieve
put(key, val, opts)
Stores a value, converting objects to JSON
key
: Key to store underval
: Value to storeopts
: (optional) Hyperbee put options
delete(key, opts)
Removes a value
key
: Key to deleteopts
: (optional) Hyperbee delete options
clear()
Clears all entries
import(snapshot)
Imports data from object
snapshot
: Object with key-value pairs
some(cb, opts)
Iterates until callback returns true
cb
:(key: string, value: any) => Promise<boolean>
opts
: (optional) Hyperbee stream options
entries(cb, opts)
Iterates over all entries
cb
:(key: string, value: any) => Promise<void>
opts
: (optional) Hyperbee stream options
๐พ Storage Engines
lib-wallet-store currently supports the following storage engines:
Hyperbee Engine: Utilizes the Hyperbee data structure for efficient and distributed storage.
To implement a new storage engine:
Create a new class that extends the base
WalletStore
class.Implement the required methods:
init()
,get()
,put()
,delete()
,clear()
,close()
, etc.Place your implementation in the project's root directory (e.g.,
wallet-store-yourenginename.js
).
๐ Development
To set up the development environment:
Clone the repository:
Install dependencies:
Start coding! ๐จโ๐ป๐ฉโ๐ป
๐งช Testing
We use the Brittle testing framework for our unit tests.
To run the tests:
Make sure you have the testing dependencies installed:
Run the tests:
๐ค Contributing
Contributions are welcome! Here are some ways you can contribute:
Implement new storage engines
Improve existing implementations
Add more test cases
Enhance documentation
Last updated