UNPKG

@creasource/reactive-idb

Version:

A reactive wrapper to indexedDb using Rxjs

90 lines 5.85 kB
import { map } from 'rxjs/operators'; import { wrapRequest } from './utils/wrap-request.util'; export class ReactiveIDBIndex { /** * * @param index * @param objectStore The ReactiveIDBObjectStore this index belongs to. */ constructor(index, objectStore) { this.index = index; this.objectStore = objectStore; } get keyPath() { return this.index.keyPath; } get multiEntry() { return this.index.multiEntry; } /** * Returns the name of the index. */ get name() { return this.index.name; } /** * */ get unique() { return this.index.unique; } /** * Retrieves the number of records matching the given key or key range in query. * * If successful, request's result will be the count. */ count$(key) { return wrapRequest(() => this.index.count(key)); } /** * Retrieves the value of the first record matching the given key or key range in query. * * If successful, request's result will be the value, or undefined if there was no matching record. */ get$(key) { return wrapRequest(() => this.index.get(key)).pipe(map((value) => value !== undefined ? this.objectStore.transformer.deserialize(value) : value)); } /** * Retrieves the values of the records matching the given key or key range in query (up to count if given). * * If successful, request's result will be an Array of the values. */ getAll$(query, count) { return wrapRequest(() => this.index.getAll(query, count)).pipe(map((values) => values.map((v) => this.objectStore.transformer.deserialize(v)))); } /** * Retrieves the keys of records matching the given key or key range in query (up to count if given). * * If successful, request's result will be an Array of the keys. */ getAllKeys$(query, count) { return wrapRequest(() => this.index.getAllKeys(query, count)); } /** * Retrieves the key of the first record matching the given key or key range in query. * * If successful, request's result will be the key, or undefined if there was no matching record. */ getKey$(key) { return wrapRequest(() => this.index.getKey(key)); } /** * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in index are matched. * * If successful, request's result will be an IDBCursorWithValue, or null if there were no matching records. */ openCursor$(query, direction) { return wrapRequest(() => this.index.openCursor(query, direction), false); } /** * Opens a cursor with key only flag set over the records matching query, ordered by direction. If query is null, all records in index are matched. * * If successful, request's result will be an IDBCursor, or null if there were no matching records. */ openKeyCursor$(query, direction) { return wrapRequest(() => this.index.openKeyCursor(query, direction), false); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtaWRiLWluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZWFjdGl2ZS1pZGItaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RCxNQUFNLE9BQU8sZ0JBQWdCO0lBc0IzQjs7OztPQUlHO0lBQ0gsWUFDbUIsS0FBZSxFQUN2QixXQUFzQztRQUQ5QixVQUFLLEdBQUwsS0FBSyxDQUFVO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUEyQjtJQUM5QyxDQUFDO0lBN0JKLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFZRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEdBQStCO1FBQ3BDLE9BQU8sV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsR0FBOEI7UUFDakMsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1osS0FBSyxLQUFLLFNBQVM7WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDakQsQ0FBQyxDQUFDLEtBQUssQ0FDVixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FDTCxLQUF3QyxFQUN4QyxLQUFjO1FBRWQsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvRCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FDVCxLQUF3QyxFQUN4QyxLQUFjO1FBRWQsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsR0FBOEI7UUFDcEMsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FDVCxLQUF3QyxFQUN4QyxTQUE4QjtRQUU5QixPQUFPLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQ1osS0FBd0MsRUFDeEMsU0FBOEI7UUFFOUIsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRiJ9