synapse-storage 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.cjs +1 -0
- package/dist/api.d.cts +365 -0
- package/dist/api.d.ts +365 -0
- package/dist/api.js +1 -0
- package/dist/chunk-22J2S57D.cjs +1 -0
- package/dist/chunk-4USKKL5R.js +1 -0
- package/dist/chunk-5X65PSGD.js +1 -0
- package/dist/chunk-635Q6YJZ.cjs +1 -0
- package/dist/chunk-6RNZVHSR.js +1 -0
- package/dist/chunk-FW5NGLPP.cjs +1 -0
- package/dist/chunk-IPUPRMZK.js +1 -0
- package/dist/chunk-NMDHQXMS.cjs +1 -0
- package/dist/chunk-S7X7IDBT.js +1 -0
- package/dist/chunk-UFBCZ25Y.cjs +1 -0
- package/dist/chunk-VSIVOWZF.cjs +1 -0
- package/dist/chunk-WC5TDS6C.cjs +1 -0
- package/dist/chunk-WQNH3LVB.js +1 -0
- package/dist/chunk-ZE2EJX2Y.js +1 -0
- package/dist/core.cjs +1 -0
- package/dist/core.d.cts +397 -0
- package/dist/{core/storage/modules/plugin/plugin.interface.d.ts → core.d.ts} +203 -7
- package/dist/core.js +1 -0
- package/dist/dispatcher.module-CdpmkplA.d.cts +363 -0
- package/dist/dispatcher.module-jd8U_ZEs.d.ts +363 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +10 -0
- package/dist/index.d.ts +10 -10
- package/dist/index.js +1 -14
- package/dist/react.cjs +1 -0
- package/dist/react.d.cts +74 -0
- package/dist/react.d.ts +74 -0
- package/dist/react.js +1 -0
- package/dist/reactive.cjs +1 -0
- package/dist/reactive.d.cts +35 -0
- package/dist/reactive.d.ts +35 -0
- package/dist/reactive.js +1 -0
- package/dist/{core/selector/selector.interface.d.ts → selector.interface-CA5y-kD_.d.cts} +7 -35
- package/dist/selector.interface-CA5y-kD_.d.ts +63 -0
- package/dist/storage.interface-Dl8SLUd1.d.cts +128 -0
- package/dist/storage.interface-Dl8SLUd1.d.ts +128 -0
- package/dist/utils.cjs +1 -0
- package/dist/utils.d.cts +92 -0
- package/dist/utils.d.ts +92 -0
- package/dist/utils.js +1 -0
- package/package.json +54 -17
- package/dist/_utils/chunk.util.d.ts +0 -8
- package/dist/_utils/chunk.util.d.ts.map +0 -1
- package/dist/_utils/chunk.util.js +0 -21
- package/dist/_utils/chunk.util.js.map +0 -1
- package/dist/_utils/deepMerge.util.d.ts +0 -2
- package/dist/_utils/deepMerge.util.d.ts.map +0 -1
- package/dist/_utils/deepMerge.util.js +0 -16
- package/dist/_utils/deepMerge.util.js.map +0 -1
- package/dist/_utils/flatMap.util.d.ts +0 -10
- package/dist/_utils/flatMap.util.d.ts.map +0 -1
- package/dist/_utils/flatMap.util.js +0 -23
- package/dist/_utils/flatMap.util.js.map +0 -1
- package/dist/_utils/index.d.ts +0 -4
- package/dist/_utils/index.d.ts.map +0 -1
- package/dist/_utils/index.js +0 -4
- package/dist/_utils/index.js.map +0 -1
- package/dist/api/api.module.d.ts +0 -38
- package/dist/api/api.module.d.ts.map +0 -1
- package/dist/api/api.module.js +0 -82
- package/dist/api/api.module.js.map +0 -1
- package/dist/api/components/endpoint.d.ts +0 -26
- package/dist/api/components/endpoint.d.ts.map +0 -1
- package/dist/api/components/endpoint.js +0 -253
- package/dist/api/components/endpoint.js.map +0 -1
- package/dist/api/components/query-storage.d.ts +0 -84
- package/dist/api/components/query-storage.d.ts.map +0 -1
- package/dist/api/components/query-storage.js +0 -221
- package/dist/api/components/query-storage.js.map +0 -1
- package/dist/api/example.d.ts +0 -83
- package/dist/api/example.d.ts.map +0 -1
- package/dist/api/example.js +0 -85
- package/dist/api/example.js.map +0 -1
- package/dist/api/index.d.ts +0 -4
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -6
- package/dist/api/index.js.map +0 -1
- package/dist/api/types/api.interface.d.ts +0 -108
- package/dist/api/types/api.interface.d.ts.map +0 -1
- package/dist/api/types/api.interface.js +0 -19
- package/dist/api/types/api.interface.js.map +0 -1
- package/dist/api/types/endpoint.interface.d.ts +0 -116
- package/dist/api/types/endpoint.interface.d.ts.map +0 -1
- package/dist/api/types/endpoint.interface.js +0 -2
- package/dist/api/types/endpoint.interface.js.map +0 -1
- package/dist/api/types/query.interface.d.ts +0 -87
- package/dist/api/types/query.interface.d.ts.map +0 -1
- package/dist/api/types/query.interface.js +0 -2
- package/dist/api/types/query.interface.js.map +0 -1
- package/dist/api/utils/api-helpers.d.ts +0 -22
- package/dist/api/utils/api-helpers.d.ts.map +0 -1
- package/dist/api/utils/api-helpers.js +0 -44
- package/dist/api/utils/api-helpers.js.map +0 -1
- package/dist/api/utils/create-header-context.d.ts +0 -10
- package/dist/api/utils/create-header-context.d.ts.map +0 -1
- package/dist/api/utils/create-header-context.js +0 -36
- package/dist/api/utils/create-header-context.js.map +0 -1
- package/dist/api/utils/endpoint-headers.d.ts +0 -23
- package/dist/api/utils/endpoint-headers.d.ts.map +0 -1
- package/dist/api/utils/endpoint-headers.js +0 -57
- package/dist/api/utils/endpoint-headers.js.map +0 -1
- package/dist/api/utils/fetch-base-query.d.ts +0 -9
- package/dist/api/utils/fetch-base-query.d.ts.map +0 -1
- package/dist/api/utils/fetch-base-query.js +0 -181
- package/dist/api/utils/fetch-base-query.js.map +0 -1
- package/dist/api/utils/file-utils.d.ts +0 -43
- package/dist/api/utils/file-utils.d.ts.map +0 -1
- package/dist/api/utils/file-utils.js +0 -108
- package/dist/api/utils/file-utils.js.map +0 -1
- package/dist/api/utils/get-cacheable-headers.d.ts +0 -8
- package/dist/api/utils/get-cacheable-headers.d.ts.map +0 -1
- package/dist/api/utils/get-cacheable-headers.js +0 -21
- package/dist/api/utils/get-cacheable-headers.js.map +0 -1
- package/dist/core/index.d.ts +0 -3
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/index.js.map +0 -1
- package/dist/core/selector/index.d.ts +0 -3
- package/dist/core/selector/index.d.ts.map +0 -1
- package/dist/core/selector/index.js +0 -2
- package/dist/core/selector/index.js.map +0 -1
- package/dist/core/selector/selector.interface.d.ts.map +0 -1
- package/dist/core/selector/selector.interface.js +0 -2
- package/dist/core/selector/selector.interface.js.map +0 -1
- package/dist/core/selector/selector.module.d.ts +0 -29
- package/dist/core/selector/selector.module.d.ts.map +0 -1
- package/dist/core/selector/selector.module.js +0 -467
- package/dist/core/selector/selector.module.js.map +0 -1
- package/dist/core/storage/adapters/base-storage.service.d.ts +0 -65
- package/dist/core/storage/adapters/base-storage.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/base-storage.service.js +0 -660
- package/dist/core/storage/adapters/base-storage.service.js.map +0 -1
- package/dist/core/storage/adapters/indexed-DB.service.d.ts +0 -63
- package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/indexed-DB.service.js +0 -595
- package/dist/core/storage/adapters/indexed-DB.service.js.map +0 -1
- package/dist/core/storage/adapters/indexed-DB.service.old.d.ts +0 -38
- package/dist/core/storage/adapters/indexed-DB.service.old.d.ts.map +0 -1
- package/dist/core/storage/adapters/indexed-DB.service.old.js +0 -318
- package/dist/core/storage/adapters/indexed-DB.service.old.js.map +0 -1
- package/dist/core/storage/adapters/local-storage.service.d.ts +0 -21
- package/dist/core/storage/adapters/local-storage.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/local-storage.service.js +0 -99
- package/dist/core/storage/adapters/local-storage.service.js.map +0 -1
- package/dist/core/storage/adapters/memory-storage.service.d.ts +0 -22
- package/dist/core/storage/adapters/memory-storage.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/memory-storage.service.js +0 -99
- package/dist/core/storage/adapters/memory-storage.service.js.map +0 -1
- package/dist/core/storage/adapters/path.utils.d.ts +0 -5
- package/dist/core/storage/adapters/path.utils.d.ts.map +0 -1
- package/dist/core/storage/adapters/path.utils.js +0 -35
- package/dist/core/storage/adapters/path.utils.js.map +0 -1
- package/dist/core/storage/index.d.ts +0 -11
- package/dist/core/storage/index.d.ts.map +0 -1
- package/dist/core/storage/index.js +0 -12
- package/dist/core/storage/index.js.map +0 -1
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts +0 -9
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/broadcast.middleware.js +0 -115
- package/dist/core/storage/middlewares/broadcast.middleware.js.map +0 -1
- package/dist/core/storage/middlewares/index.d.ts +0 -4
- package/dist/core/storage/middlewares/index.d.ts.map +0 -1
- package/dist/core/storage/middlewares/index.js +0 -3
- package/dist/core/storage/middlewares/index.js.map +0 -1
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts +0 -7
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/storage-batching.middleware.js +0 -36
- package/dist/core/storage/middlewares/storage-batching.middleware.js.map +0 -1
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts +0 -7
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js +0 -46
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.interface.js +0 -2
- package/dist/core/storage/modules/plugin/plugin.interface.js.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.service.d.ts +0 -25
- package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.service.js +0 -186
- package/dist/core/storage/modules/plugin/plugin.service.js.map +0 -1
- package/dist/core/storage/storage.interface.d.ts +0 -70
- package/dist/core/storage/storage.interface.d.ts.map +0 -1
- package/dist/core/storage/storage.interface.js +0 -10
- package/dist/core/storage/storage.interface.js.map +0 -1
- package/dist/core/storage/utils/batch.utils.d.ts +0 -33
- package/dist/core/storage/utils/batch.utils.d.ts.map +0 -1
- package/dist/core/storage/utils/batch.utils.js +0 -88
- package/dist/core/storage/utils/batch.utils.js.map +0 -1
- package/dist/core/storage/utils/broadcast.util.d.ts +0 -48
- package/dist/core/storage/utils/broadcast.util.d.ts.map +0 -1
- package/dist/core/storage/utils/broadcast.util.js +0 -162
- package/dist/core/storage/utils/broadcast.util.js.map +0 -1
- package/dist/core/storage/utils/cache.util.d.ts +0 -33
- package/dist/core/storage/utils/cache.util.d.ts.map +0 -1
- package/dist/core/storage/utils/cache.util.js +0 -47
- package/dist/core/storage/utils/cache.util.js.map +0 -1
- package/dist/core/storage/utils/middleware-module.d.ts +0 -46
- package/dist/core/storage/utils/middleware-module.d.ts.map +0 -1
- package/dist/core/storage/utils/middleware-module.js +0 -109
- package/dist/core/storage/utils/middleware-module.js.map +0 -1
- package/dist/core/storage/utils/storage-key.d.ts +0 -11
- package/dist/core/storage/utils/storage-key.d.ts.map +0 -1
- package/dist/core/storage/utils/storage-key.js +0 -21
- package/dist/core/storage/utils/storage-key.js.map +0 -1
- package/dist/core/storage/utils/storage.utils.d.ts +0 -17
- package/dist/core/storage/utils/storage.utils.d.ts.map +0 -1
- package/dist/core/storage/utils/storage.utils.js +0 -57
- package/dist/core/storage/utils/storage.utils.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/react/hooks/index.d.ts +0 -3
- package/dist/react/hooks/index.d.ts.map +0 -1
- package/dist/react/hooks/index.js +0 -3
- package/dist/react/hooks/index.js.map +0 -1
- package/dist/react/hooks/useSelector.d.ts +0 -22
- package/dist/react/hooks/useSelector.d.ts.map +0 -1
- package/dist/react/hooks/useSelector.js +0 -104
- package/dist/react/hooks/useSelector.js.map +0 -1
- package/dist/react/hooks/useStorageSubscribe.d.ts +0 -12
- package/dist/react/hooks/useStorageSubscribe.d.ts.map +0 -1
- package/dist/react/hooks/useStorageSubscribe.js +0 -49
- package/dist/react/hooks/useStorageSubscribe.js.map +0 -1
- package/dist/react/index.d.ts +0 -3
- package/dist/react/index.d.ts.map +0 -1
- package/dist/react/index.js +0 -3
- package/dist/react/index.js.map +0 -1
- package/dist/react/utils/createSynapseCtx.d.ts +0 -40
- package/dist/react/utils/createSynapseCtx.d.ts.map +0 -1
- package/dist/react/utils/createSynapseCtx.js +0 -125
- package/dist/react/utils/createSynapseCtx.js.map +0 -1
- package/dist/react/utils/index.d.ts +0 -2
- package/dist/react/utils/index.d.ts.map +0 -1
- package/dist/react/utils/index.js +0 -2
- package/dist/react/utils/index.js.map +0 -1
- package/dist/reactive/dispatcher/dispatcher.module.d.ts +0 -195
- package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +0 -1
- package/dist/reactive/dispatcher/dispatcher.module.js +0 -288
- package/dist/reactive/dispatcher/dispatcher.module.js.map +0 -1
- package/dist/reactive/dispatcher/index.d.ts +0 -3
- package/dist/reactive/dispatcher/index.d.ts.map +0 -1
- package/dist/reactive/dispatcher/index.js +0 -3
- package/dist/reactive/dispatcher/index.js.map +0 -1
- package/dist/reactive/dispatcher/middlewares/index.d.ts +0 -2
- package/dist/reactive/dispatcher/middlewares/index.d.ts.map +0 -1
- package/dist/reactive/dispatcher/middlewares/index.js +0 -2
- package/dist/reactive/dispatcher/middlewares/index.js.map +0 -1
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +0 -31
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +0 -1
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js +0 -126
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js.map +0 -1
- package/dist/reactive/effects/effects.module.d.ts +0 -150
- package/dist/reactive/effects/effects.module.d.ts.map +0 -1
- package/dist/reactive/effects/effects.module.js +0 -277
- package/dist/reactive/effects/effects.module.js.map +0 -1
- package/dist/reactive/effects/index.d.ts +0 -2
- package/dist/reactive/effects/index.d.ts.map +0 -1
- package/dist/reactive/effects/index.js +0 -2
- package/dist/reactive/effects/index.js.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts +0 -12
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestConsistent.js +0 -16
- package/dist/reactive/effects/utils/chunkRequestConsistent.js.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts +0 -12
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestParallel.js +0 -13
- package/dist/reactive/effects/utils/chunkRequestParallel.js.map +0 -1
- package/dist/reactive/effects/utils/index.d.ts +0 -3
- package/dist/reactive/effects/utils/index.d.ts.map +0 -1
- package/dist/reactive/effects/utils/index.js +0 -3
- package/dist/reactive/effects/utils/index.js.map +0 -1
- package/dist/reactive/index.d.ts +0 -3
- package/dist/reactive/index.d.ts.map +0 -1
- package/dist/reactive/index.js +0 -3
- package/dist/reactive/index.js.map +0 -1
- package/dist/utils/createSynapse.d.ts +0 -92
- package/dist/utils/createSynapse.d.ts.map +0 -1
- package/dist/utils/createSynapse.js +0 -79
- package/dist/utils/createSynapse.js.map +0 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -2
- package/dist/utils/index.js.map +0 -1
|
@@ -1,595 +0,0 @@
|
|
|
1
|
-
import { StorageKey } from '../utils/storage-key';
|
|
2
|
-
import { BaseStorage } from './base-storage.service.js';
|
|
3
|
-
import { getValueByPath, parsePath, setValueByPath } from './path.utils.js';
|
|
4
|
-
// Управляет соединением с базой данных
|
|
5
|
-
export class IndexedDBManager {
|
|
6
|
-
dbName;
|
|
7
|
-
logger;
|
|
8
|
-
static instances = new Map();
|
|
9
|
-
db = null;
|
|
10
|
-
initPromise = null;
|
|
11
|
-
storeNames = new Set();
|
|
12
|
-
dbVersion;
|
|
13
|
-
constructor(dbName, dbVersion, logger) {
|
|
14
|
-
this.dbName = dbName;
|
|
15
|
-
this.logger = logger;
|
|
16
|
-
this.dbVersion = dbVersion;
|
|
17
|
-
}
|
|
18
|
-
static getInstance(dbName, dbVersion = 1, logger) {
|
|
19
|
-
if (!IndexedDBManager.instances.has(dbName)) {
|
|
20
|
-
IndexedDBManager.instances.set(dbName, new IndexedDBManager(dbName, dbVersion, logger));
|
|
21
|
-
}
|
|
22
|
-
const instance = IndexedDBManager.instances.get(dbName);
|
|
23
|
-
// Update version if higher version is requested
|
|
24
|
-
if (dbVersion > instance.dbVersion) {
|
|
25
|
-
instance.dbVersion = dbVersion;
|
|
26
|
-
}
|
|
27
|
-
return instance;
|
|
28
|
-
}
|
|
29
|
-
async initialize() {
|
|
30
|
-
if (this.db) {
|
|
31
|
-
return this.db;
|
|
32
|
-
}
|
|
33
|
-
if (!this.initPromise) {
|
|
34
|
-
this.initPromise = this.openDatabase();
|
|
35
|
-
}
|
|
36
|
-
return this.initPromise;
|
|
37
|
-
}
|
|
38
|
-
async ensureStoreExists(storeName) {
|
|
39
|
-
await this.initialize();
|
|
40
|
-
if (this.db.objectStoreNames.contains(storeName)) {
|
|
41
|
-
this.storeNames.add(storeName);
|
|
42
|
-
return this.db;
|
|
43
|
-
}
|
|
44
|
-
this.logger?.debug(`Store "${storeName}" not found, upgrading database`, {
|
|
45
|
-
dbName: this.dbName,
|
|
46
|
-
currentStores: Array.from(this.db.objectStoreNames),
|
|
47
|
-
});
|
|
48
|
-
this.db.close();
|
|
49
|
-
this.db = null;
|
|
50
|
-
this.dbVersion++;
|
|
51
|
-
this.initPromise = this.openDatabase([storeName]);
|
|
52
|
-
const newDb = await this.initPromise;
|
|
53
|
-
this.storeNames.add(storeName);
|
|
54
|
-
return newDb;
|
|
55
|
-
}
|
|
56
|
-
async openDatabase(newStores = []) {
|
|
57
|
-
return new Promise((resolve, reject) => {
|
|
58
|
-
this.logger?.debug(`Opening database "${this.dbName}" with version ${this.dbVersion}`);
|
|
59
|
-
const request = indexedDB.open(this.dbName, this.dbVersion);
|
|
60
|
-
request.onerror = () => {
|
|
61
|
-
this.logger?.error(`Failed to open database "${this.dbName}"`, { error: request.error });
|
|
62
|
-
reject(request.error);
|
|
63
|
-
};
|
|
64
|
-
request.onsuccess = () => {
|
|
65
|
-
this.db = request.result;
|
|
66
|
-
// Add existing stores to our set
|
|
67
|
-
for (let i = 0; i < this.db.objectStoreNames.length; i++) {
|
|
68
|
-
this.storeNames.add(this.db.objectStoreNames[i]);
|
|
69
|
-
}
|
|
70
|
-
this.logger?.debug(`Database "${this.dbName}" opened successfully`, {
|
|
71
|
-
version: this.db.version,
|
|
72
|
-
stores: Array.from(this.db.objectStoreNames),
|
|
73
|
-
});
|
|
74
|
-
resolve(this.db);
|
|
75
|
-
};
|
|
76
|
-
request.onupgradeneeded = (event) => {
|
|
77
|
-
const db = event.target.result;
|
|
78
|
-
this.logger?.debug(`Upgrading database "${this.dbName}" to version ${this.dbVersion}`);
|
|
79
|
-
// Create new stores that don't exist yet
|
|
80
|
-
for (const storeName of newStores) {
|
|
81
|
-
if (!db.objectStoreNames.contains(storeName)) {
|
|
82
|
-
this.logger?.debug(`Creating store "${storeName}"`);
|
|
83
|
-
db.createObjectStore(storeName);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
closeDatabase() {
|
|
90
|
-
if (this.db) {
|
|
91
|
-
this.db.close();
|
|
92
|
-
this.db = null;
|
|
93
|
-
this.initPromise = null;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
async deleteDatabase() {
|
|
97
|
-
this.closeDatabase();
|
|
98
|
-
return new Promise((resolve, reject) => {
|
|
99
|
-
const request = indexedDB.deleteDatabase(this.dbName);
|
|
100
|
-
request.onsuccess = () => {
|
|
101
|
-
this.logger?.debug(`Database "${this.dbName}" deleted successfully`);
|
|
102
|
-
IndexedDBManager.instances.delete(this.dbName);
|
|
103
|
-
this.storeNames.clear();
|
|
104
|
-
resolve();
|
|
105
|
-
};
|
|
106
|
-
request.onerror = () => {
|
|
107
|
-
this.logger?.error(`Failed to delete database "${this.dbName}"`, { error: request.error });
|
|
108
|
-
reject(request.error);
|
|
109
|
-
};
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
async ensureStoresExist(storeNames) {
|
|
113
|
-
// Сначала инициализируем базу
|
|
114
|
-
await this.initialize();
|
|
115
|
-
// Проверяем, какие хранилища уже существуют
|
|
116
|
-
const missingStores = storeNames.filter((name) => !this.db.objectStoreNames.contains(name));
|
|
117
|
-
// Если все хранилища уже существуют, просто возвращаем базу
|
|
118
|
-
if (missingStores.length === 0) {
|
|
119
|
-
return this.db;
|
|
120
|
-
}
|
|
121
|
-
// Иначе нам нужно обновить базу для создания новых хранилищ
|
|
122
|
-
this.logger?.debug(`Создание недостающих хранилищ: ${missingStores.join(', ')}`, {
|
|
123
|
-
dbName: this.dbName,
|
|
124
|
-
currentStores: Array.from(this.db.objectStoreNames),
|
|
125
|
-
});
|
|
126
|
-
// Закрываем текущее соединение
|
|
127
|
-
this.db.close();
|
|
128
|
-
this.db = null;
|
|
129
|
-
// Увеличиваем версию один раз для всех новых хранилищ
|
|
130
|
-
this.dbVersion++;
|
|
131
|
-
this.initPromise = this.openDatabase(missingStores);
|
|
132
|
-
return this.initPromise;
|
|
133
|
-
}
|
|
134
|
-
// Метод для получения текущей версии
|
|
135
|
-
getCurrentVersion() {
|
|
136
|
-
return this.dbVersion;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Менеджер для управления версией базы данных IndexedDB
|
|
141
|
-
* и создания хранилищ
|
|
142
|
-
*/
|
|
143
|
-
class DBVersionManager {
|
|
144
|
-
dbName;
|
|
145
|
-
logger;
|
|
146
|
-
db = null;
|
|
147
|
-
version;
|
|
148
|
-
constructor(dbName, initialVersion = 1, logger) {
|
|
149
|
-
this.dbName = dbName;
|
|
150
|
-
this.logger = logger;
|
|
151
|
-
this.version = initialVersion;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Получает текущую версию базы данных
|
|
155
|
-
*/
|
|
156
|
-
getCurrentVersion() {
|
|
157
|
-
return this.version;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Открывает базу данных с заданной версией
|
|
161
|
-
*/
|
|
162
|
-
openDatabase(version, newStores = []) {
|
|
163
|
-
return new Promise((resolve, reject) => {
|
|
164
|
-
this.logger?.debug(`Открытие базы данных "${this.dbName}" с версией ${version}`);
|
|
165
|
-
const request = indexedDB.open(this.dbName, version);
|
|
166
|
-
request.onerror = () => {
|
|
167
|
-
this.logger?.error(`Ошибка при открытии базы данных "${this.dbName}"`, { error: request.error });
|
|
168
|
-
reject(request.error);
|
|
169
|
-
};
|
|
170
|
-
request.onsuccess = () => {
|
|
171
|
-
this.db = request.result;
|
|
172
|
-
this.version = this.db.version;
|
|
173
|
-
this.logger?.debug(`База данных "${this.dbName}" успешно открыта`, {
|
|
174
|
-
version: this.db.version,
|
|
175
|
-
stores: Array.from(this.db.objectStoreNames),
|
|
176
|
-
});
|
|
177
|
-
resolve(this.db);
|
|
178
|
-
};
|
|
179
|
-
request.onupgradeneeded = (event) => {
|
|
180
|
-
const db = event.target.result;
|
|
181
|
-
this.logger?.debug(`Обновление базы данных "${this.dbName}" до версии ${version}`);
|
|
182
|
-
// Создаем все новые хранилища
|
|
183
|
-
for (const storeName of newStores) {
|
|
184
|
-
if (!db.objectStoreNames.contains(storeName)) {
|
|
185
|
-
this.logger?.debug(`Создание хранилища "${storeName}"`);
|
|
186
|
-
db.createObjectStore(storeName);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
};
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Убеждается, что все указанные хранилища существуют в базе данных
|
|
194
|
-
*/
|
|
195
|
-
async ensureStoresExist(storeNames) {
|
|
196
|
-
// Если база еще не открыта, открываем ее
|
|
197
|
-
if (!this.db) {
|
|
198
|
-
this.db = await this.openDatabase(this.version);
|
|
199
|
-
}
|
|
200
|
-
// Проверяем, какие хранилища отсутствуют
|
|
201
|
-
const missingStores = storeNames.filter((name) => !this.db.objectStoreNames.contains(name));
|
|
202
|
-
// Если все хранилища уже существуют, просто возвращаем базу
|
|
203
|
-
if (missingStores.length === 0) {
|
|
204
|
-
return this.db;
|
|
205
|
-
}
|
|
206
|
-
// Иначе нам нужно обновить базу данных
|
|
207
|
-
this.logger?.debug(`Необходимо создать отсутствующие хранилища: ${missingStores.join(', ')}`, {
|
|
208
|
-
dbName: this.dbName,
|
|
209
|
-
currentVersion: this.version,
|
|
210
|
-
});
|
|
211
|
-
// Закрываем текущее соединение
|
|
212
|
-
this.db.close();
|
|
213
|
-
this.db = null;
|
|
214
|
-
// Увеличиваем версию и открываем базу с новыми хранилищами
|
|
215
|
-
this.version++;
|
|
216
|
-
this.db = await this.openDatabase(this.version, missingStores);
|
|
217
|
-
return this.db;
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Закрывает соединение с базой данных
|
|
221
|
-
*/
|
|
222
|
-
close() {
|
|
223
|
-
if (this.db) {
|
|
224
|
-
this.db.close();
|
|
225
|
-
this.db = null;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
export class IndexedDBStorage extends BaseStorage {
|
|
230
|
-
DB_NAME;
|
|
231
|
-
STORE_NAME;
|
|
232
|
-
DB_VERSION;
|
|
233
|
-
dbManager;
|
|
234
|
-
constructor(config, pluginExecutor, eventEmitter, logger) {
|
|
235
|
-
super(config, pluginExecutor, eventEmitter, logger);
|
|
236
|
-
const options = config.options;
|
|
237
|
-
this.DB_NAME = options.dbName || 'app_storage';
|
|
238
|
-
this.STORE_NAME = config.name;
|
|
239
|
-
this.DB_VERSION = options.dbVersion || 1;
|
|
240
|
-
// Get database manager instance
|
|
241
|
-
this.dbManager = IndexedDBManager.getInstance(this.DB_NAME, this.DB_VERSION, logger);
|
|
242
|
-
}
|
|
243
|
-
async initialize() {
|
|
244
|
-
try {
|
|
245
|
-
this.logger?.debug(`Initializing IndexedDB storage "${this.STORE_NAME}"`);
|
|
246
|
-
await this.dbManager.ensureStoreExists(this.STORE_NAME);
|
|
247
|
-
// Проверим еще раз, что хранилище доступно перед инициализацией middleware
|
|
248
|
-
try {
|
|
249
|
-
const db = await this.dbManager.initialize();
|
|
250
|
-
if (!db.objectStoreNames.contains(this.STORE_NAME)) {
|
|
251
|
-
throw new Error(`Store "${this.STORE_NAME}" not found after initialization`);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
catch (error) {
|
|
255
|
-
this.logger?.error(`Error verifying store "${this.STORE_NAME}" exists:`, { error });
|
|
256
|
-
throw error;
|
|
257
|
-
}
|
|
258
|
-
// Initialize middlewares from BaseStorage
|
|
259
|
-
this.initializeMiddlewares();
|
|
260
|
-
try {
|
|
261
|
-
await this.initializeWithMiddlewares();
|
|
262
|
-
this.logger?.debug(`IndexedDB storage "${this.STORE_NAME}" initialized successfully`);
|
|
263
|
-
}
|
|
264
|
-
catch (error) {
|
|
265
|
-
this.logger?.error(`Failed to initialize middleware for store "${this.STORE_NAME}"`, { error });
|
|
266
|
-
// Продолжаем работу даже при ошибке middleware
|
|
267
|
-
}
|
|
268
|
-
return this;
|
|
269
|
-
}
|
|
270
|
-
catch (error) {
|
|
271
|
-
this.logger?.error(`Ошибка инициализации IndexedDB "${this.name}"`, { error });
|
|
272
|
-
throw error;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
static async getCurrentDBVersion(dbName) {
|
|
276
|
-
return new Promise((resolve) => {
|
|
277
|
-
try {
|
|
278
|
-
const request = indexedDB.open(dbName);
|
|
279
|
-
request.onsuccess = () => {
|
|
280
|
-
const version = request.result.version;
|
|
281
|
-
request.result.close(); // Важно закрыть соединение
|
|
282
|
-
resolve(version);
|
|
283
|
-
};
|
|
284
|
-
request.onerror = () => {
|
|
285
|
-
console.warn(`Ошибка при определении версии БД ${dbName}`, request.error);
|
|
286
|
-
resolve(0); // В случае ошибки возвращаем 0
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
catch (error) {
|
|
290
|
-
console.warn(`Исключение при определении версии БД ${dbName}`, error);
|
|
291
|
-
resolve(0);
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
static async createStorages(dbName, configs, logger) {
|
|
296
|
-
// Получаем текущую версию базы данных
|
|
297
|
-
const currentVersion = await this.getCurrentDBVersion(dbName);
|
|
298
|
-
const initialVersion = currentVersion || 1;
|
|
299
|
-
// Создаем менеджер для управления базой данных
|
|
300
|
-
const dbManager = new DBVersionManager(dbName, initialVersion, logger);
|
|
301
|
-
// Получаем имена всех хранилищ, которые нужно создать
|
|
302
|
-
const storeNames = Object.values(configs).map((config) => config.name);
|
|
303
|
-
// Предварительно создаем все хранилища в рамках одной операции
|
|
304
|
-
await dbManager.ensureStoresExist(storeNames);
|
|
305
|
-
// Создаем и инициализируем все хранилища
|
|
306
|
-
const result = {};
|
|
307
|
-
for (const [key, config] of Object.entries(configs)) {
|
|
308
|
-
const storage = new IndexedDBStorage({
|
|
309
|
-
...config,
|
|
310
|
-
options: {
|
|
311
|
-
dbName,
|
|
312
|
-
dbVersion: dbManager.getCurrentVersion(),
|
|
313
|
-
},
|
|
314
|
-
}, config.pluginExecutor, config.eventEmitter, logger);
|
|
315
|
-
// Инициализируем хранилище
|
|
316
|
-
result[key] = await storage.initialize();
|
|
317
|
-
}
|
|
318
|
-
return result;
|
|
319
|
-
}
|
|
320
|
-
async getTransaction(mode = 'readonly') {
|
|
321
|
-
try {
|
|
322
|
-
// Ensure database is open and our store exists
|
|
323
|
-
const db = await this.dbManager.ensureStoreExists(this.STORE_NAME);
|
|
324
|
-
// Проверяем существование хранилища перед созданием транзакции
|
|
325
|
-
if (!db.objectStoreNames.contains(this.STORE_NAME)) {
|
|
326
|
-
// Попытка исправить проблему - закрываем и снова открываем
|
|
327
|
-
this.logger?.warn(`Object store "${this.STORE_NAME}" not found, attempting to repair`);
|
|
328
|
-
db.close();
|
|
329
|
-
this.dbManager.closeDatabase();
|
|
330
|
-
// Пробуем заново создать хранилище с инкрементом версии
|
|
331
|
-
const newDb = await this.dbManager.ensureStoreExists(this.STORE_NAME);
|
|
332
|
-
if (!newDb.objectStoreNames.contains(this.STORE_NAME)) {
|
|
333
|
-
throw new Error(`Object store "${this.STORE_NAME}" still doesn't exist after repair attempt`);
|
|
334
|
-
}
|
|
335
|
-
return newDb.transaction(this.STORE_NAME, mode);
|
|
336
|
-
}
|
|
337
|
-
return db.transaction(this.STORE_NAME, mode);
|
|
338
|
-
}
|
|
339
|
-
catch (error) {
|
|
340
|
-
this.logger?.error(`Failed to create transaction for store "${this.STORE_NAME}"`, { error });
|
|
341
|
-
throw error;
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
async getObjectStore(mode = 'readonly') {
|
|
345
|
-
const transaction = await this.getTransaction(mode);
|
|
346
|
-
return transaction.objectStore(this.STORE_NAME);
|
|
347
|
-
}
|
|
348
|
-
async doGet(key) {
|
|
349
|
-
const store = await this.getObjectStore();
|
|
350
|
-
// Для пустого ключа возвращаем все состояние
|
|
351
|
-
if (key === '') {
|
|
352
|
-
return new Promise((resolve, reject) => {
|
|
353
|
-
const request = store.getAll();
|
|
354
|
-
request.onerror = () => reject(request.error);
|
|
355
|
-
request.onsuccess = () => {
|
|
356
|
-
const allValues = request.result;
|
|
357
|
-
const allKeys = store.getAllKeys();
|
|
358
|
-
allKeys.onsuccess = () => {
|
|
359
|
-
const state = allKeys.result.reduce((acc, k, index) => {
|
|
360
|
-
if (k !== 'root') {
|
|
361
|
-
acc[k] = allValues[index];
|
|
362
|
-
}
|
|
363
|
-
return acc;
|
|
364
|
-
}, {});
|
|
365
|
-
resolve(state);
|
|
366
|
-
};
|
|
367
|
-
allKeys.onerror = () => reject(allKeys.error);
|
|
368
|
-
};
|
|
369
|
-
});
|
|
370
|
-
}
|
|
371
|
-
// Проверяем, является ли ключ "сырым"
|
|
372
|
-
if (key instanceof StorageKey && key.isUnparseable()) {
|
|
373
|
-
return new Promise((resolve, reject) => {
|
|
374
|
-
const request = store.get(key.valueOf());
|
|
375
|
-
request.onerror = () => reject(request.error);
|
|
376
|
-
request.onsuccess = () => resolve(request.result);
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
// Для вложенного пути
|
|
380
|
-
const parts = parsePath(key);
|
|
381
|
-
if (parts.length > 1) {
|
|
382
|
-
const rootKey = parts[0];
|
|
383
|
-
return new Promise((resolve, reject) => {
|
|
384
|
-
const request = store.get(rootKey);
|
|
385
|
-
request.onerror = () => reject(request.error);
|
|
386
|
-
request.onsuccess = () => {
|
|
387
|
-
const rootValue = request.result;
|
|
388
|
-
if (!rootValue) {
|
|
389
|
-
resolve(undefined);
|
|
390
|
-
return;
|
|
391
|
-
}
|
|
392
|
-
const value = getValueByPath(rootValue, parts.slice(1).join('.'));
|
|
393
|
-
resolve(value);
|
|
394
|
-
};
|
|
395
|
-
});
|
|
396
|
-
}
|
|
397
|
-
// Для простого ключа
|
|
398
|
-
return new Promise((resolve, reject) => {
|
|
399
|
-
const request = store.get(parts[0]);
|
|
400
|
-
request.onerror = () => reject(request.error);
|
|
401
|
-
request.onsuccess = () => resolve(request.result);
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
async doSet(key, value) {
|
|
405
|
-
// Для пустого ключа устанавливаем все состояние
|
|
406
|
-
if (key === '') {
|
|
407
|
-
const store = await this.getObjectStore('readwrite');
|
|
408
|
-
return new Promise((resolve, reject) => {
|
|
409
|
-
const tx = store.transaction;
|
|
410
|
-
tx.oncomplete = () => {
|
|
411
|
-
resolve();
|
|
412
|
-
};
|
|
413
|
-
tx.onerror = () => {
|
|
414
|
-
reject(tx.error);
|
|
415
|
-
};
|
|
416
|
-
const clearRequest = store.clear();
|
|
417
|
-
clearRequest.onsuccess = () => {
|
|
418
|
-
const entries = Object.entries(value);
|
|
419
|
-
for (const [entryKey, entryValue] of entries) {
|
|
420
|
-
store.put(entryValue, entryKey);
|
|
421
|
-
}
|
|
422
|
-
};
|
|
423
|
-
clearRequest.onerror = () => {
|
|
424
|
-
reject(clearRequest.error);
|
|
425
|
-
};
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
const store = await this.getObjectStore('readwrite');
|
|
429
|
-
// Для "сырого" ключа
|
|
430
|
-
if (key instanceof StorageKey && key.isUnparseable()) {
|
|
431
|
-
await this.putValueInStore(store, key.valueOf(), value);
|
|
432
|
-
return;
|
|
433
|
-
}
|
|
434
|
-
// Для вложенного пути
|
|
435
|
-
const parts = parsePath(key);
|
|
436
|
-
if (parts.length > 1) {
|
|
437
|
-
const rootKey = parts[0];
|
|
438
|
-
return new Promise((resolve, reject) => {
|
|
439
|
-
const request = store.get(rootKey);
|
|
440
|
-
request.onerror = () => reject(request.error);
|
|
441
|
-
request.onsuccess = () => {
|
|
442
|
-
const rootValue = request.result || {};
|
|
443
|
-
const updatedValue = setValueByPath(rootValue, parts.slice(1).join('.'), value);
|
|
444
|
-
const putRequest = store.put(updatedValue, rootKey);
|
|
445
|
-
putRequest.onerror = () => reject(putRequest.error);
|
|
446
|
-
putRequest.onsuccess = () => resolve();
|
|
447
|
-
};
|
|
448
|
-
});
|
|
449
|
-
}
|
|
450
|
-
// Для простого ключа
|
|
451
|
-
await this.putValueInStore(store, parts[0], value);
|
|
452
|
-
}
|
|
453
|
-
async putValueInStore(store, key, value) {
|
|
454
|
-
return new Promise((resolve, reject) => {
|
|
455
|
-
const request = store.put(value, key.valueOf());
|
|
456
|
-
request.onerror = () => reject(request.error);
|
|
457
|
-
request.onsuccess = () => resolve();
|
|
458
|
-
});
|
|
459
|
-
}
|
|
460
|
-
async doUpdate(updates) {
|
|
461
|
-
// Группируем обновления
|
|
462
|
-
const updatesByRoot = new Map();
|
|
463
|
-
const rawUpdates = [];
|
|
464
|
-
// Разделяем обновления на "сырые" и обычные
|
|
465
|
-
for (const { key, value } of updates) {
|
|
466
|
-
if (key instanceof StorageKey && key.isUnparseable()) {
|
|
467
|
-
rawUpdates.push({ key: key.valueOf(), value });
|
|
468
|
-
continue;
|
|
469
|
-
}
|
|
470
|
-
const parts = parsePath(key);
|
|
471
|
-
const rootKey = parts[0];
|
|
472
|
-
const path = parts.slice(1);
|
|
473
|
-
if (!updatesByRoot.has(rootKey)) {
|
|
474
|
-
updatesByRoot.set(rootKey, []);
|
|
475
|
-
}
|
|
476
|
-
updatesByRoot.get(rootKey).push({ path, value });
|
|
477
|
-
}
|
|
478
|
-
try {
|
|
479
|
-
// Обрабатываем "сырые" обновления
|
|
480
|
-
for (const { key, value } of rawUpdates) {
|
|
481
|
-
const store = await this.getObjectStore('readwrite');
|
|
482
|
-
await this.putValueInStore(store, key, value);
|
|
483
|
-
}
|
|
484
|
-
// Обрабатываем сгруппированные обновления
|
|
485
|
-
for (const [rootKey, pathUpdates] of updatesByRoot) {
|
|
486
|
-
const rootValue = (await this.doGet(rootKey)) || {};
|
|
487
|
-
let updatedValue = { ...rootValue };
|
|
488
|
-
for (const { path, value } of pathUpdates) {
|
|
489
|
-
if (path.length === 0) {
|
|
490
|
-
updatedValue = value;
|
|
491
|
-
}
|
|
492
|
-
else {
|
|
493
|
-
updatedValue = setValueByPath(updatedValue, path.join('.'), value);
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
const store = await this.getObjectStore('readwrite');
|
|
497
|
-
await this.putValueInStore(store, rootKey, updatedValue);
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
catch (error) {
|
|
501
|
-
this.logger?.error('Error during update:', { error });
|
|
502
|
-
throw error;
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
async doDelete(key) {
|
|
506
|
-
const store = await this.getObjectStore('readwrite');
|
|
507
|
-
// Для "сырого" ключа
|
|
508
|
-
if (key instanceof StorageKey && key.isUnparseable()) {
|
|
509
|
-
return new Promise((resolve, reject) => {
|
|
510
|
-
const request = store.delete(key.valueOf());
|
|
511
|
-
request.onerror = () => reject(request.error);
|
|
512
|
-
request.onsuccess = () => resolve(true);
|
|
513
|
-
});
|
|
514
|
-
}
|
|
515
|
-
const parts = parsePath(key);
|
|
516
|
-
// Для простого ключа
|
|
517
|
-
if (parts.length === 1) {
|
|
518
|
-
return new Promise((resolve, reject) => {
|
|
519
|
-
const request = store.delete(parts[0]);
|
|
520
|
-
request.onerror = () => reject(request.error);
|
|
521
|
-
request.onsuccess = () => resolve(true);
|
|
522
|
-
});
|
|
523
|
-
}
|
|
524
|
-
// Для вложенного пути
|
|
525
|
-
const rootKey = parts[0];
|
|
526
|
-
return new Promise((resolve, reject) => {
|
|
527
|
-
const getRequest = store.get(rootKey);
|
|
528
|
-
getRequest.onerror = () => reject(getRequest.error);
|
|
529
|
-
getRequest.onsuccess = () => {
|
|
530
|
-
const rootValue = getRequest.result;
|
|
531
|
-
if (!rootValue) {
|
|
532
|
-
resolve(false);
|
|
533
|
-
return;
|
|
534
|
-
}
|
|
535
|
-
const parent = getValueByPath(rootValue, parts.slice(0, -1).join('.'));
|
|
536
|
-
const lastKey = parts[parts.length - 1];
|
|
537
|
-
if (!parent || !(lastKey in parent)) {
|
|
538
|
-
resolve(false);
|
|
539
|
-
return;
|
|
540
|
-
}
|
|
541
|
-
if (Array.isArray(parent)) {
|
|
542
|
-
const index = parseInt(lastKey, 10);
|
|
543
|
-
if (!isNaN(index)) {
|
|
544
|
-
parent.splice(index, 1);
|
|
545
|
-
}
|
|
546
|
-
else {
|
|
547
|
-
// @ts-ignore
|
|
548
|
-
delete parent[lastKey];
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
else {
|
|
552
|
-
delete parent[lastKey];
|
|
553
|
-
}
|
|
554
|
-
const putRequest = store.put(rootValue, rootKey);
|
|
555
|
-
putRequest.onerror = () => reject(putRequest.error);
|
|
556
|
-
putRequest.onsuccess = () => resolve(true);
|
|
557
|
-
};
|
|
558
|
-
});
|
|
559
|
-
}
|
|
560
|
-
async doClear() {
|
|
561
|
-
const store = await this.getObjectStore('readwrite');
|
|
562
|
-
return new Promise((resolve, reject) => {
|
|
563
|
-
const request = store.clear();
|
|
564
|
-
request.onsuccess = () => resolve();
|
|
565
|
-
request.onerror = () => reject(request.error);
|
|
566
|
-
});
|
|
567
|
-
}
|
|
568
|
-
async doKeys() {
|
|
569
|
-
const store = await this.getObjectStore();
|
|
570
|
-
const request = store.getAllKeys();
|
|
571
|
-
return new Promise((resolve, reject) => {
|
|
572
|
-
request.onsuccess = () => {
|
|
573
|
-
resolve(request.result);
|
|
574
|
-
};
|
|
575
|
-
request.onerror = () => reject(request.error);
|
|
576
|
-
});
|
|
577
|
-
}
|
|
578
|
-
async doHas(key) {
|
|
579
|
-
const value = await this.doGet(key);
|
|
580
|
-
return value !== undefined;
|
|
581
|
-
}
|
|
582
|
-
async doDestroy() {
|
|
583
|
-
try {
|
|
584
|
-
await this.doClear();
|
|
585
|
-
// Note: We don't actually delete the object store from the database
|
|
586
|
-
// as that would require reopening the DB with a higher version.
|
|
587
|
-
// An empty object store takes minimal space.
|
|
588
|
-
}
|
|
589
|
-
catch (error) {
|
|
590
|
-
this.logger?.error(`Error destroying store "${this.STORE_NAME}"`, { error });
|
|
591
|
-
throw error;
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
//# sourceMappingURL=indexed-DB.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"indexed-DB.service.js","sourceRoot":"","sources":["../../../../src/core/storage/adapters/indexed-DB.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { IPluginExecutor } from '../modules/plugin/plugin.interface';
|
|
2
|
-
import { IEventEmitter, ILogger, StorageConfig } from '../storage.interface';
|
|
3
|
-
import { StorageKey, StorageKeyType } from '../utils/storage-key';
|
|
4
|
-
import { BaseStorage } from './base-storage.service';
|
|
5
|
-
export interface IndexedDBConfig {
|
|
6
|
-
dbName?: string;
|
|
7
|
-
dbVersion?: number;
|
|
8
|
-
storeName?: string;
|
|
9
|
-
}
|
|
10
|
-
export declare class IndexedDBStorage<T extends Record<string, any>> extends BaseStorage<T> {
|
|
11
|
-
private initPromise;
|
|
12
|
-
private db;
|
|
13
|
-
private readonly DB_NAME;
|
|
14
|
-
private readonly STORE_NAME;
|
|
15
|
-
private readonly DB_VERSION;
|
|
16
|
-
constructor(config: StorageConfig & {
|
|
17
|
-
options?: IndexedDBConfig;
|
|
18
|
-
}, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
|
|
19
|
-
initialize(): Promise<this>;
|
|
20
|
-
private initDB;
|
|
21
|
-
private ensureInitialized;
|
|
22
|
-
private transaction;
|
|
23
|
-
protected doGet(key: StorageKeyType): Promise<any>;
|
|
24
|
-
protected doSet(key: StorageKeyType, value: any): Promise<void>;
|
|
25
|
-
protected doUpdate(updates: Array<{
|
|
26
|
-
key: string | StorageKey;
|
|
27
|
-
value: any;
|
|
28
|
-
}>): Promise<void>;
|
|
29
|
-
protected doDelete(key: StorageKeyType): Promise<boolean>;
|
|
30
|
-
private putValueInStore;
|
|
31
|
-
protected doClear(): Promise<void>;
|
|
32
|
-
protected doKeys(): Promise<string[]>;
|
|
33
|
-
protected doDestroy(): Promise<void>;
|
|
34
|
-
private deleteDatabase;
|
|
35
|
-
protected doHas(key: StorageKeyType): Promise<boolean>;
|
|
36
|
-
private close;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=indexed-DB.service.old.d.ts.map
|