import type { IDBPDatabase, IDBPObjectStore } from 'idb'; import type { Key, Range } from '../interfaces/common.js'; import type { AztecAsyncSet } from '../interfaces/set.js'; import { IndexedDBAztecMap } from './map.js'; import type { AztecIDBSchema } from './store.js'; /** * A set backed by IndexedDB. */ export class IndexedDBAztecSet implements AztecAsyncSet { private map: IndexedDBAztecMap; constructor(rootDb: IDBPDatabase, mapName: string) { this.map = new IndexedDBAztecMap(rootDb, mapName); } set db(db: IDBPObjectStore | undefined) { this.map.db = db; } hasAsync(key: K): Promise { return this.map.hasAsync(key); } add(key: K): Promise { return this.map.set(key, true); } delete(key: K): Promise { return this.map.delete(key); } async *entriesAsync(range: Range = {}): AsyncIterableIterator { yield* this.map.keysAsync(range); } }