Wallet store
Last updated
Last updated
A flexible and extensible library for wallet data storage, supporting multiple storage engine implementations.
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.
🔢 Consistent key-value storage API
🔌 Pluggable storage engine architecture
🔄 Asynchronous operations
🧩 Support for multiple instances
🔐 Designed for wallet data management
Here's a quick example of how to use lib-wallet-store with the Hyperbee engine:
WalletStoreHyperbee
Hyperbee implementation of WalletStore.
new WalletStoreHyperbee(config)
config.store_path
: (optional) Storage path for Hypercore
config.hyperbee
: (optional) Existing Hyperbee instance
config._cache
: (optional) Custom cache Map instance
config.name
: (optional) Store name, defaults to 'default'
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 under
val
: Value to store
opts
: (optional) Hyperbee put options
delete(key, opts)
Removes a value
key
: Key to delete
opts
: (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
lib-wallet-store currently supports the following storage engines:
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
).
To set up the development environment:
Clone the repository:
Install dependencies:
Start coding! 👨💻👩💻
To run the tests:
Make sure you have the testing dependencies installed:
Run the tests:
Contributions are welcome! Here are some ways you can contribute:
Implement new storage engines
Improve existing implementations
Add more test cases
Enhance documentation
: Utilizes the Hyperbee data structure for efficient and distributed storage.
We use the testing framework for our unit tests.