UNPKG

@creasource/reactive-idb

Version:

A reactive wrapper to indexedDb using Rxjs

163 lines 10.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReactiveIDBObjectStore = void 0; const operators_1 = require("rxjs/operators"); const reactive_idb_index_1 = require("./reactive-idb-index"); const wrap_request_util_1 = require("./utils/wrap-request.util"); class ReactiveIDBObjectStore { /** * * @param store * @param transaction * @param transformer */ constructor(store, transaction, transformer = { serialize: (o) => o, deserialize: (v) => v, }) { this.store = store; this.transaction = transaction; this.transformer = transformer; } /** * Returns true if the store has a key generator, and false otherwise. */ get autoIncrement() { return this.store.autoIncrement; } /** * Returns a list of the names of indexes in the store. */ get indexNames() { return this.store.indexNames; } /** * Returns the key path of the store, or null if none. */ get keyPath() { return this.store.keyPath; } /** * Returns the name of the store. */ get name() { return this.store.name; } /** * Adds or updates a record in store with the given value and key. * * If the store uses in-line keys and key is specified a "DataError" DOMException will be thrown. * * If put() is used, any existing record with the key will be replaced. If add() is used, and if a record with the key already exists the request will fail, with request's error set to a "ConstraintError" DOMException. * * If successful, request's result will be the record's key. */ add$(value, key) { return (0, wrap_request_util_1.wrapRequest)(() => this.store.add(this.transformer.serialize(value), key)); } /** * Deletes all records in store. */ clear$() { return (0, wrap_request_util_1.wrapRequest)(() => this.store.clear()); } /** * Retrieves the number of records matching the given key or key range in query. */ count$(key) { return (0, wrap_request_util_1.wrapRequest)(() => this.store.count(key)); } /** * Creates a new index in store with the given name, keyPath and options and returns a new IDBIndex. If the keyPath and options define constraints that cannot be satisfied with the data already in store the upgrade transaction will abort with a "ConstraintError" DOMException. * * Throws an "InvalidStateError" DOMException if not called within an upgrade transaction. */ // createIndex( // name: string, // keyPath: string | string[], // options?: IDBIndexParameters // ): IDBIndex { // return this.store.createIndex(name, keyPath, options); // } /** * Deletes records in store with the given key or in the given key range in query. * * If successful, request's result will be undefined. */ delete$(key) { return (0, wrap_request_util_1.wrapRequest)(() => this.store.delete(key)); } /** * Deletes the index in store with the given name. * * Throws an "InvalidStateError" DOMException if not called within an upgrade transaction. */ // deleteIndex(name: string): void { // this.store.deleteIndex(name); // } /** * 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$(query) { return (0, wrap_request_util_1.wrapRequest)(() => this.store.get(query)).pipe((0, operators_1.map)((value) => value !== undefined ? this.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 (0, wrap_request_util_1.wrapRequest)(() => this.store.getAll(query, count)).pipe((0, operators_1.map)((values) => values.map((v) => this.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 (0, wrap_request_util_1.wrapRequest)(() => this.store.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$(query) { return (0, wrap_request_util_1.wrapRequest)(() => this.store.getKey(query)); } index(name) { return new reactive_idb_index_1.ReactiveIDBIndex(this.store.index(name), this); } /** * Opens a cursor over the records matching query, ordered by direction. If query is null, all records in store are matched. * * If successful, request's result will be an IDBCursorWithValue pointing at the first matching record, or null if there were no matching records. */ openCursor$(query, direction) { return (0, wrap_request_util_1.wrapRequest)(() => this.store.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 store are matched. * * If successful, request's result will be an IDBCursor pointing at the first matching record, or null if there were no matching records. */ openKeyCursor$(query, direction) { return (0, wrap_request_util_1.wrapRequest)(() => this.store.openKeyCursor(query, direction), false); } /** * Adds or updates a record in store with the given value and key. * * If the store uses in-line keys and key is specified a "DataError" DOMException will be thrown. * * If put() is used, any existing record with the key will be replaced. If add() is used, and if a record with the key already exists the request will fail, with request's error set to a "ConstraintError" DOMException. * * If successful, request's result will be the record's key. */ put$(value, key) { return (0, wrap_request_util_1.wrapRequest)(() => this.store.put(this.transformer.serialize(value), key)); } } exports.ReactiveIDBObjectStore = ReactiveIDBObjectStore; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtaWRiLW9iamVjdC1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcmVhY3RpdmUtaWRiLW9iamVjdC1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw4Q0FBcUM7QUFHckMsNkRBQXdEO0FBRXhELGlFQUF3RDtBQUV4RCxNQUFhLHNCQUFzQjtJQTBCakM7Ozs7O09BS0c7SUFDSCxZQUNtQixLQUFxQixFQUM3QixXQUFtQyxFQUNuQyxjQUF5QztRQUNoRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkIsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFNO0tBQzNCO1FBTGdCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FHbkI7SUFDQSxDQUFDO0lBdENKOztPQUVHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFDRDs7T0FFRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUNEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDO0lBaUJEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBSSxDQUFDLEtBQVEsRUFBRSxHQUFpQjtRQUM5QixPQUFPLElBQUEsK0JBQVcsRUFBQyxHQUFHLEVBQUUsQ0FDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdB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