@creasource/reactive-idb
Version:
A reactive wrapper to indexedDb using Rxjs
63 lines • 4.1 kB
JavaScript
import { defer, of } from 'rxjs';
import { ReactiveIDBObjectStore } from './reactive-idb-object-store';
export class ReactiveIDBTransaction {
/**
* Constructs a ReactiveIDBTransaction
*
* @param transaction The underlying IDBTransaction object
* @param db The associated ReactiveIDBDatabase of this transaction
*/
constructor(transaction, db) {
this.transaction = transaction;
this.db = db;
}
/**
* If the transaction was aborted, returns the error (a DOMException) providing the reason.
*/
get error() {
return this.transaction.error;
}
/**
* Returns the mode the transaction was created with ("readonly" or "readwrite"), or "versionchange" for an upgrade transaction.
*/
get mode() {
return this.transaction.mode;
}
/**
* Returns a list of the names of object stores in the transaction's scope. For an upgrade transaction this is all object stores in the database.
*/
get objectStoreNames() {
return this.transaction.objectStoreNames;
}
/**
* Aborts the transaction. All pending requests will fail with a "AbortError" DOMException and all changes made to the database will be reverted.
*/
abort() {
this.transaction.abort();
}
/**
* Returns a ReactiveIDBObjectStore in the transaction's scope.
*/
objectStore(name, transformer = {
serialize: (o) => o,
deserialize: (v) => v,
}) {
return new ReactiveIDBObjectStore(this.transaction.objectStore(name), this, transformer);
}
/**
* Returns a ReactiveIDBObjectStore in the transaction's scope.
*/
objectStore$(name, transformer = {
serialize: (o) => o,
deserialize: (v) => v,
}) {
return defer(() => of(this.objectStore(name, transformer)));
}
addEventListener(type, listener, options) {
this.transaction.addEventListener(type, listener, options);
}
removeEventListener(type, listener, options) {
this.transaction.removeEventListener(type, listener, options);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtaWRiLXRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZWFjdGl2ZS1pZGItdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFckUsTUFBTSxPQUFPLHNCQUFzQjtJQXNCakM7Ozs7O09BS0c7SUFDSCxZQUNtQixXQUEyQixFQUNuQyxFQUF1QjtRQURmLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUNuQyxPQUFFLEdBQUYsRUFBRSxDQUFxQjtJQUMvQixDQUFDO0lBOUJKOztPQUVHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBYUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQ1QsSUFBWSxFQUNaLGNBQXlDO1FBQ3ZDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuQixXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQU07S0FDM0I7UUFFRCxPQUFPLElBQUksc0JBQXNCLENBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUNsQyxJQUFJLEVBQ0osV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQ1YsSUFBWSxFQUNaLGNBQXlDO1FBQ3ZDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuQixXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQU07S0FDM0I7UUFFRCxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBSSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxJQUFPLEVBQ1AsUUFBdUUsRUFDdkUsT0FBMkM7UUFFM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxtQkFBbUIsQ0FDakIsSUFBTyxFQUNQLFFBQXVFLEVBQ3ZFLE9BQXdDO1FBRXhDLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0YifQ==