UNPKG

ngx-indexed-db

Version:
53 lines 7.82 kB
export function openDatabase(indexedDB, dbName, version, upgradeCallback) { return new Promise((resolve, reject) => { if (!indexedDB) { reject('IndexedDB not available'); } const request = indexedDB.open(dbName, version); let db; request.onsuccess = (event) => { db = request.result; resolve(db); }; request.onerror = (event) => { reject(`IndexedDB error: ${request.error}`); }; if (typeof upgradeCallback === 'function') { request.onupgradeneeded = (event) => { upgradeCallback(event, db); }; } }); } export function CreateObjectStore(indexedDB, dbName, version, storeSchemas, migrationFactory) { if (!indexedDB) { return; } const request = indexedDB.open(dbName, version); request.onupgradeneeded = (event) => { const database = event.target.result; storeSchemas.forEach((storeSchema) => { if (!database.objectStoreNames.contains(storeSchema.store)) { const objectStore = database.createObjectStore(storeSchema.store, storeSchema.storeConfig); storeSchema.storeSchema.forEach((schema) => { objectStore.createIndex(schema.name, schema.keypath, schema.options); }); } }); const storeMigrations = migrationFactory && migrationFactory(); if (storeMigrations) { Object.keys(storeMigrations) .map((k) => parseInt(k, 10)) .filter((v) => v > event.oldVersion) .sort((a, b) => a - b) .forEach((v) => { storeMigrations[v](database, request.transaction); }); } database.close(); }; request.onsuccess = (e) => { e.target.result.close(); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWluZGV4ZWQtZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaW5kZXhlZC1kYi9zcmMvbGliL25neC1pbmRleGVkLWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxZQUFZLENBQzFCLFNBQXFCLEVBQ3JCLE1BQWMsRUFDZCxPQUFlLEVBQ2YsZUFBb0Q7SUFFcEQsT0FBTyxJQUFJLE9BQU8sQ0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNsRCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDbkM7UUFDRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxJQUFJLEVBQWUsQ0FBQztRQUNwQixPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDbkMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDcEIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxPQUFPLGVBQWUsS0FBSyxVQUFVLEVBQUU7WUFDekMsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO2dCQUN6QyxlQUFlLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQztTQUNIO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixTQUFxQixFQUNyQixNQUFjLEVBQ2QsT0FBZSxFQUNmLFlBQStCLEVBQy9CLGdCQUFrRztJQUVsRyxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2QsT0FBTztLQUNSO0lBQ0QsTUFBTSxPQUFPLEdBQXFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWxFLE9BQU8sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUE0QixFQUFFLEVBQUU7UUFDekQsTUFBTSxRQUFRLEdBQWlCLEtBQUssQ0FBQyxNQUFjLENBQUMsTUFBTSxDQUFDO1FBRTNELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUE0QixFQUFFLEVBQUU7WUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMxRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzNGLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBeUIsRUFBRSxFQUFFO29CQUM1RCxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZFLENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sZUFBZSxHQUFHLGdCQUFnQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDL0QsSUFBSSxlQUFlLEVBQUU7WUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7aUJBQ3pCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDM0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztpQkFDbkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDckIsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2IsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7UUFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdFN0b3JlTWV0YSwgT2JqZWN0U3RvcmVTY2hlbWEgfSBmcm9tICcuL25neC1pbmRleGVkLWRiLm1ldGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkRhdGFiYXNlKFxuICBpbmRleGVkREI6IElEQkZhY3RvcnksXG4gIGRiTmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBudW1iZXIsXG4gIHVwZ3JhZGVDYWxsYmFjaz86IChhOiBFdmVudCwgYjogSURCRGF0YWJhc2UpID0+IHZvaWRcbik6IFByb21pc2U8SURCRGF0YWJhc2U+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPElEQkRhdGFiYXNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKCFpbmRleGVkREIpIHtcbiAgICAgIHJlamVjdCgnSW5kZXhlZERCIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSwgdmVyc2lvbik7XG4gICAgbGV0IGRiOiBJREJEYXRhYmFzZTtcbiAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGRiID0gcmVxdWVzdC5yZXN1bHQ7XG4gICAgICByZXNvbHZlKGRiKTtcbiAgICB9O1xuICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIHJlamVjdChgSW5kZXhlZERCIGVycm9yOiAke3JlcXVlc3QuZXJyb3J9YCk7XG4gICAgfTtcbiAgICBpZiAodHlwZW9mIHVwZ3JhZGVDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIHVwZ3JhZGVDYWxsYmFjayhldmVudCwgZGIpO1xuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3JlYXRlT2JqZWN0U3RvcmUoXG4gIGluZGV4ZWREQjogSURCRmFjdG9yeSxcbiAgZGJOYW1lOiBzdHJpbmcsXG4gIHZlcnNpb246IG51bWJlcixcbiAgc3RvcmVTY2hlbWFzOiBPYmplY3RTdG9yZU1ldGFbXSxcbiAgbWlncmF0aW9uRmFjdG9yeT86ICgpID0+IHsgW2tleTogbnVtYmVyXTogKGRiOiBJREJEYXRhYmFzZSwgdHJhbnNhY3Rpb246IElEQlRyYW5zYWN0aW9uKSA9PiB2b2lkIH1cbik6IHZvaWQge1xuICBpZiAoIWluZGV4ZWREQikge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCByZXF1ZXN0OiBJREJPcGVuREJSZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lLCB2ZXJzaW9uKTtcblxuICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudDogSURCVmVyc2lvbkNoYW5nZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgZGF0YWJhc2U6IElEQkRhdGFiYXNlID0gKGV2ZW50LnRhcmdldCBhcyBhbnkpLnJlc3VsdDtcblxuICAgIHN0b3JlU2NoZW1hcy5mb3JFYWNoKChzdG9yZVNjaGVtYTogT2JqZWN0U3RvcmVNZXRhKSA9PiB7XG4gICAgICBpZiAoIWRhdGFiYXNlLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoc3RvcmVTY2hlbWEuc3RvcmUpKSB7XG4gICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoc3RvcmVTY2hlbWEuc3RvcmUsIHN0b3JlU2NoZW1hLnN0b3JlQ29uZmlnKTtcbiAgICAgICAgc3RvcmVTY2hlbWEuc3RvcmVTY2hlbWEuZm9yRWFjaCgoc2NoZW1hOiBPYmplY3RTdG9yZVNjaGVtYSkgPT4ge1xuICAgICAgICAgIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KHNjaGVtYS5uYW1lLCBzY2hlbWEua2V5cGF0aCwgc2NoZW1hLm9wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHN0b3JlTWlncmF0aW9ucyA9IG1pZ3JhdGlvbkZhY3RvcnkgJiYgbWlncmF0aW9uRmFjdG9yeSgpO1xuICAgIGlmIChzdG9yZU1pZ3JhdGlvbnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKHN0b3JlTWlncmF0aW9ucylcbiAgICAgICAgLm1hcCgoaykgPT4gcGFyc2VJbnQoaywgMTApKVxuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ID4gZXZlbnQub2xkVmVyc2lvbilcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgIHN0b3JlTWlncmF0aW9uc1t2XShkYXRhYmFzZSwgcmVxdWVzdC50cmFuc2FjdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRhdGFiYXNlLmNsb3NlKCk7XG4gIH07XG5cbiAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoZTogYW55KSA9PiB7XG4gICAgZS50YXJnZXQucmVzdWx0LmNsb3NlKCk7XG4gIH07XG59XG4iXX0=