ngx-indexed-database
Version:
<div align="center"> <img src="https://w3c.github.io/IndexedDB/logo-db.svg" width="120"/> </div> <h1 align="center">ngx-indexed-database</h1>
74 lines • 12.7 kB
JavaScript
import { __awaiter } from "tslib";
import { Injectable } from "@angular/core";
import { HelperUtils } from "../utils/helper.utils";
import { SCHEMA_STORE_NAME } from "../constants/schema-store.constant";
import * as i0 from "@angular/core";
export class NgxIndexedDatabaseStoreSchemaService {
constructor() {
this.primaryKey = 'name';
}
defineSchemasStore(dbName) {
return __awaiter(this, void 0, void 0, function* () {
try {
const indexedDBOpenRequest = indexedDB.open(dbName, 1);
yield HelperUtils.promisifyIndexedDBRequest(indexedDBOpenRequest, 'onupgradeneeded', 'onerror');
const database = indexedDBOpenRequest.result;
yield database.createObjectStore(SCHEMA_STORE_NAME, { keyPath: this.primaryKey });
yield HelperUtils.promisifyIndexedDBRequest(indexedDBOpenRequest, 'onsuccess', 'onerror');
database === null || database === void 0 ? void 0 : database.close();
}
catch (e) { }
return { success: true };
});
}
modifySchemaStore(dbName, storeName, storeSchema) {
return __awaiter(this, void 0, void 0, function* () {
const indexedDBOpenRequest = indexedDB.open(dbName);
const data = {
[this.primaryKey]: storeName,
schema: encodeURIComponent(JSON.stringify(storeSchema))
};
yield HelperUtils.promisifyIndexedDBRequest(indexedDBOpenRequest, 'onsuccess', 'onerror');
const database = indexedDBOpenRequest.result;
const transaction = database.transaction(SCHEMA_STORE_NAME, "readwrite");
const store = transaction.objectStore(SCHEMA_STORE_NAME);
const updateRequest = store.put(data);
yield HelperUtils.promisifyIndexedDBRequest(updateRequest, 'onsuccess', 'onerror');
database === null || database === void 0 ? void 0 : database.close();
return data;
});
}
getStoreSchema(dbName, storeName) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
const indexedDBOpenRequest = indexedDB.open(dbName);
yield HelperUtils.promisifyIndexedDBRequest(indexedDBOpenRequest, 'onsuccess', 'onerror');
const database = indexedDBOpenRequest.result;
const transaction = database.transaction(SCHEMA_STORE_NAME, "readwrite");
const store = transaction.objectStore(SCHEMA_STORE_NAME);
const readRequest = store.get(storeName);
yield HelperUtils.promisifyIndexedDBRequest(readRequest, 'onsuccess', 'onerror');
database === null || database === void 0 ? void 0 : database.close();
return JSON.parse(decodeURIComponent(((_a = readRequest === null || readRequest === void 0 ? void 0 : readRequest.result) === null || _a === void 0 ? void 0 : _a.schema) || null));
});
}
removeStoreSchema(dbName, storeName) {
return __awaiter(this, void 0, void 0, function* () {
const indexedDBOpenRequest = indexedDB.open(dbName);
yield HelperUtils.promisifyIndexedDBRequest(indexedDBOpenRequest, 'onsuccess', 'onerror');
const database = indexedDBOpenRequest.result;
const transaction = database.transaction(SCHEMA_STORE_NAME, "readwrite");
const store = transaction.objectStore(SCHEMA_STORE_NAME);
const deleteRequest = store.delete(storeName);
yield HelperUtils.promisifyIndexedDBRequest(deleteRequest, 'onsuccess', 'onerror');
database === null || database === void 0 ? void 0 : database.close();
return { success: true };
});
}
}
NgxIndexedDatabaseStoreSchemaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NgxIndexedDatabaseStoreSchemaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
NgxIndexedDatabaseStoreSchemaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NgxIndexedDatabaseStoreSchemaService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NgxIndexedDatabaseStoreSchemaService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWluZGV4ZWQtZGF0YWJhc2Utc3RvcmUtc2NoZW1hLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaW5kZXhlZC1kYXRhYmFzZS9zcmMvbGliL25neC1pbmRleGVkLWRhdGFiYXNlLXN0b3JlLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLG9DQUFvQztJQUcvQztRQUZBLGVBQVUsR0FBRyxNQUFNLENBQUM7SUFFTCxDQUFDO0lBRVYsa0JBQWtCLENBQUMsTUFBYzs7WUFDckMsSUFBSTtnQkFDRixNQUFNLG9CQUFvQixHQUFxQixTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekUsTUFBTSxXQUFXLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ2hHLE1BQU0sUUFBUSxHQUFnQixvQkFBb0IsQ0FBQyxNQUFNLENBQUM7Z0JBQzFELE1BQU0sUUFBUSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUVsRixNQUFNLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzFGLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxLQUFLLEVBQUUsQ0FBQzthQUNuQjtZQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUU7WUFFZCxPQUFPLEVBQUUsT0FBTyxFQUFF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RSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDbkYsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLEtBQUssRUFBRSxDQUFDO1lBRWxCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztLQUFBOztrSUFoRVUsb0NBQW9DO3NJQUFwQyxvQ0FBb0M7NEZBQXBDLG9DQUFvQztrQkFEaEQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7SGVscGVyVXRpbHN9IGZyb20gXCIuLi91dGlscy9oZWxwZXIudXRpbHNcIjtcbmltcG9ydCB7SW5kZXhlZERCU3RvcmVTY2hlbWF9IGZyb20gXCIuLi9tb2RlbHMvSW5kZXhlZERCU3RvcmVTY2hlbWFcIjtcbmltcG9ydCB7U0NIRU1BX1NUT1JFX05BTUV9IGZyb20gXCIuLi9jb25zdGFudHMvc2NoZW1hLXN0b3JlLmNvbnN0YW50XCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hJbmRleGVkRGF0YWJhc2VTdG9yZVNjaGVtYVNlcnZpY2Uge1xuICBwcmltYXJ5S2V5ID0gJ25hbWUnO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBhc3luYyBkZWZpbmVTY2hlbWFzU3RvcmUoZGJOYW1lOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW5kZXhlZERCT3BlblJlcXVlc3Q6IElEQk9wZW5EQlJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUsIDEpO1xuICAgICAgYXdhaXQgSGVscGVyVXRpbHMucHJvbWlzaWZ5SW5kZXhlZERCUmVxdWVzdChpbmRleGVkREJPcGVuUmVxdWVzdCwgJ29udXBncmFkZW5lZWRlZCcsICdvbmVycm9yJyk7XG4gICAgICBjb25zdCBkYXRhYmFzZTogSURCRGF0YWJhc2UgPSBpbmRleGVkREJPcGVuUmVxdWVzdC5yZXN1bHQ7XG4gICAgICBhd2FpdCBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZShTQ0hFTUFfU1RPUkVfTkFNRSwgeyBrZXlQYXRoOiB0aGlzLnByaW1hcnlLZXkgfSk7XG5cbiAgICAgIGF3YWl0IEhlbHBlclV0aWxzLnByb21pc2lmeUluZGV4ZWREQlJlcXVlc3QoaW5kZXhlZERCT3BlblJlcXVlc3QsICdvbnN1Y2Nlc3MnLCAnb25lcnJvcicpO1xuICAgICAgZGF0YWJhc2U/LmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZSkge31cblxuICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgfVxuXG4gIGFzeW5jIG1vZGlmeVNjaGVtYVN0b3JlKGRiTmFtZTogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZywgc3RvcmVTY2hlbWE6IEluZGV4ZWREQlN0b3JlU2NoZW1hKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBpbmRleGVkREJPcGVuUmVxdWVzdDogSURCT3BlbkRCUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgW3RoaXMucHJpbWFyeUtleV06IHN0b3JlTmFtZSxcbiAgICAgIHNjaGVtYTogZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHN0b3JlU2NoZW1hKSlcbiAgICB9O1xuXG4gICAgYXdhaXQgSGVscGVyVXRpbHMucHJvbWlzaWZ5SW5kZXhlZERCUmVxdWVzdChpbmRleGVkREJPcGVuUmVxdWVzdCwgJ29uc3VjY2VzcycsICdvbmVycm9yJyk7XG4gICAgY29uc3QgZGF0YWJhc2U6IElEQkRhdGFiYXNlID0gaW5kZXhlZERCT3BlblJlcXVlc3QucmVzdWx0O1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uOiBJREJUcmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKFNDSEVNQV9TVE9SRV9OQU1FLCBcInJlYWR3cml0ZVwiKTtcbiAgICBjb25zdCBzdG9yZTogSURCT2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShTQ0hFTUFfU1RPUkVfTkFNRSk7XG4gICAgY29uc3QgdXBkYXRlUmVxdWVzdDogSURCUmVxdWVzdCA9IHN0b3JlLnB1dChkYXRhKTtcbiAgICBhd2FpdCBIZWxwZXJVdGlscy5wcm9taXNpZnlJbmRleGVkREJSZXF1ZXN0KHVwZGF0ZVJlcXVlc3QsICdvbnN1Y2Nlc3MnLCAnb25lcnJvcicpO1xuICAgIGRhdGFiYXNlPy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBnZXRTdG9yZVNjaGVtYShkYk5hbWU6IHN0cmluZywgc3RvcmVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPEluZGV4ZWREQlN0b3JlU2NoZW1hPiB7XG4gICAgY29uc3QgaW5kZXhlZERCT3BlblJlcXVlc3Q6IElEQk9wZW5EQlJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpO1xuXG4gICAgYXdhaXQgSGVscGVyVXRpbHMucHJvbWlzaWZ5SW5kZXhlZERCUmVxdWVzdChpbmRleGVkREJPcGVuUmVxdWVzdCwgJ29uc3VjY2VzcycsICdvbmVycm9yJyk7XG4gICAgY29uc3QgZGF0YWJhc2U6IElEQkRhdGFiYXNlID0gaW5kZXhlZERCT3BlblJlcXVlc3QucmVzdWx0O1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uOiBJREJUcmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKFNDSEVNQV9TVE9SRV9OQU1FLCBcInJlYWR3cml0ZVwiKTtcbiAgICBjb25zdCBzdG9yZTogSURCT2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShTQ0hFTUFfU1RPUkVfTkFNRSk7XG4gICAgY29uc3QgcmVhZFJlcXVlc3Q6IElEQlJlcXVlc3QgPSBzdG9yZS5nZXQoc3RvcmVOYW1lKTtcbiAgICBhd2FpdCBIZWxwZXJVdGlscy5wcm9taXNpZnlJbmRleGVkREJSZXF1ZXN0KHJlYWRSZXF1ZXN0LCAnb25zdWNjZXNzJywgJ29uZXJyb3InKTtcbiAgICBkYXRhYmFzZT8uY2xvc2UoKTtcblxuICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChyZWFkUmVxdWVzdD8ucmVzdWx0Py5zY2hlbWEgfHwgbnVsbCkpO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlU3RvcmVTY2hlbWEoZGJOYW1lOiBzdHJpbmcsIHN0b3JlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IGluZGV4ZWREQk9wZW5SZXF1ZXN0OiBJREJPcGVuREJSZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTtcblxuICAgIGF3YWl0IEhlbHBlclV0aWxzLnByb21pc2lmeUluZGV4ZWREQlJlcXVlc3QoaW5kZXhlZERCT3BlblJlcXVlc3QsICdvbnN1Y2Nlc3MnLCAnb25lcnJvcicpO1xuICAgIGNvbnN0IGRhdGFiYXNlOiBJREJEYXRhYmFzZSA9IGluZGV4ZWREQk9wZW5SZXF1ZXN0LnJlc3VsdDtcbiAgICBjb25zdCB0cmFuc2FjdGlvbjogSURCVHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbihTQ0hFTUFfU1RPUkVfTkFNRSwgXCJyZWFkd3JpdGVcIik7XG4gICAgY29uc3Qgc3RvcmU6IElEQk9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoU0NIRU1BX1NUT1JFX05BTUUpO1xuICAgIGNvbnN0IGRlbGV0ZVJlcXVlc3Q6IElEQlJlcXVlc3QgPSBzdG9yZS5kZWxldGUoc3RvcmVOYW1lKTtcbiAgICBhd2FpdCBIZWxwZXJVdGlscy5wcm9taXNpZnlJbmRleGVkREJSZXF1ZXN0KGRlbGV0ZVJlcXVlc3QsICdvbnN1Y2Nlc3MnLCAnb25lcnJvcicpO1xuICAgIGRhdGFiYXNlPy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICB9XG59XG4iXX0=