UNPKG

@multiplayer-app/session-recorder-browser

Version:
54 lines 2.02 kB
const dbName = 'mpRrwebEventsDB'; const storeName = 'mpEventsStore'; export class IndexedDBService { constructor() { this.dbPromise = this.openDB(); } openDB() { return new Promise((resolve, reject) => { const request = indexedDB.open(dbName, 1); request.onupgradeneeded = () => { const db = request.result; if (!db.objectStoreNames.contains(storeName)) { db.createObjectStore(storeName, { keyPath: 'id', autoIncrement: true }); } }; request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } async saveEvent(event) { const db = await this.dbPromise; return new Promise((resolve, reject) => { const tx = db.transaction(storeName, 'readwrite'); const store = tx.objectStore(storeName); store.add({ event }); tx.oncomplete = () => resolve(); tx.onerror = () => reject(tx.error); }); } async getAllEvents() { const db = await this.dbPromise; return new Promise((resolve, reject) => { const tx = db.transaction(storeName, 'readonly'); const store = tx.objectStore(storeName); const request = store.getAll(); request.onsuccess = () => { const events = request.result.map((record) => record.event); resolve(events); }; request.onerror = () => reject(request.error); }); } async clearEvents() { const db = await this.dbPromise; return new Promise((resolve, reject) => { const tx = db.transaction(storeName, 'readwrite'); const store = tx.objectStore(storeName); store.clear(); tx.oncomplete = () => resolve(); tx.onerror = () => reject(tx.error); }); } } //# sourceMappingURL=indexedDbService.js.map