This is the one of thousands implementations of data access to IndexedDB. It exposes simple promises API.
import { DataAccess } from './DataAccess.class';
class Item {
uid: string;
data: any;
}
const idb = new DataAccess<Item>('db_name', 'store_name');
idb.add({ uid: '42', data: 'value' });
idb.update({ uid: '42', data: 'updated' });
idb.remove('42');
idb.retrieve();
idb.get('42');