Dash is a simple, lightweight wrapper around the IndexedDB API. It provides a promise-based interface for working with IndexedDB, making it easier to perform database operations in web applications.
- Promise-based API for IndexedDB operations
- Modular design with separate modules for databases, stores, indexes, and entries
- Built-in error handling and type safety with TypeScript
- Support for custom behaviors and extensions
- Lightweight and easy to integrate into existing projects
npm install @buley/dash
Here's a basic example of how to use Dash:
import dash from '@buley/dash';
// Open a database
dash.get.database({ database: 'myDB', version: 1 })
.then(ctx => {
// Create an object store
return dash.add.store({
...ctx,
store: 'myStore',
store_key_path: 'id',
auto_increment: true
});
})
.then(ctx => {
// Add an entry to the store
return dash.add.entry({
...ctx,
data: { name: 'John Doe', age: 30 }
});
})
.then(ctx => {
console.log('Entry added successfully:', ctx.entry);
})
.catch(error => {
console.error('An error occurred:', error);
});
Dash provides methods for working with databases, stores, indexes, and entries. The API is structured as dash.<action>.<target>
. Here are some key operations:
- Database operations:
dash.get.database
: Open a databasedash.remove.database
: Delete a database
- Store operations:
dash.add.store
: Create a new object storedash.remove.store
: Delete an object storedash.get.stores
: Get all object stores
- Index operations:
dash.add.index
: Create a new indexdash.remove.index
: Delete an indexdash.get.indexes
: Get all indexes for a store
- Entry operations:
dash.add.entry
: Add a new entrydash.get.entry
: Get an entrydash.update.entry
: Update an entrydash.remove.entry
: Delete an entrydash.count.entries
: Count entries in a store
Each method returns a promise, allowing for easy chaining of operations.
Dash supports custom behaviors that can be added to modify or extend its functionality. Behaviors can be used to implement logging, validation, or any custom logic you need.
dash.add.behavior((ctx) => {
console.log('Operation:', ctx.type, ctx.method);
return ctx;
});
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
Taylor Buley (@taylorbuley)