@this-dot/cypress-indexeddb
Version:
A Cypress.io helper library for reading and manipulating data inside IndexedDB
51 lines • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createVersionUpdateDatabaseConnection = void 0;
const rxjs_1 = require("rxjs");
const alias_setup_1 = require("./alias-setup");
/**
* Create a version update database connection
*
* @remarks This method should be used only internally. The method creates a database upgrade before creating a new object store.
*
* @param openDatabase `IDBDatabase` instance
*
* @returns IDBDatabase
*/
function createVersionUpdateDatabaseConnection(openDatabase) {
let error;
let databaseVersion;
const databaseName = openDatabase.name;
const log = Cypress.log({
name: `upgrade`,
type: 'parent',
message: `IDBDatabase - ${databaseName}`,
consoleProps: () => ({
'old database version': openDatabase.version,
'new database version': databaseVersion,
'database name': databaseName,
error: error || 'no',
}),
autoEnd: false,
});
return new Promise((resolve, reject) => {
openDatabase.close();
const request = window.indexedDB.open(databaseName, openDatabase.version + 1);
request.onerror = (e) => {
error = e;
log.error(e).end();
reject(e);
};
request.onupgradeneeded = (e) => {
request.onerror = () => void 0;
const db = e.target.result;
db.onversionchange = rxjs_1.noop;
databaseVersion = db.version;
(0, alias_setup_1.setDatabaseInternal)(databaseName, db);
log.end();
resolve(db);
};
});
}
exports.createVersionUpdateDatabaseConnection = createVersionUpdateDatabaseConnection;
//# sourceMappingURL=upgrade-database.js.map