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