@gudhub/core 1.2.4-beta.18 → 1.2.4-beta.20
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/GUDHUB/DataService/IndexedDB/IndexedDBAppService.js +4 -4
- package/GUDHUB/DataService/IndexedDB/IndexedDBChunkService.js +1 -1
- package/GUDHUB/DataService/IndexedDB/IndexedDBService.js +19 -8
- package/GUDHUB/DataService/IndexedDB/StoreManager/BaseStoreManager.js +13 -0
- package/GUDHUB/DataService/IndexedDB/StoreManager/managers.js +12 -0
- package/GUDHUB/DataService/utils.js +104 -1
- package/package.json +1 -1
- package/umd/appRequestWorker.js +1 -1
- package/umd/library.min.js +1 -1
|
@@ -448,7 +448,7 @@ export class IndexedDBAppServiceForWorker extends AppDataService {
|
|
|
448
448
|
}
|
|
449
449
|
|
|
450
450
|
async putApp(id, data) {
|
|
451
|
-
return this.storeManager.
|
|
451
|
+
return this.storeManager.putApp(id, data);
|
|
452
452
|
|
|
453
453
|
// try {
|
|
454
454
|
// await this.openDatabase();
|
|
@@ -502,8 +502,8 @@ export class IndexedDBAppService extends AppDataService {
|
|
|
502
502
|
|
|
503
503
|
// this.appRequestAndProcessWorker = new Worker('./appRequestWorker.js');
|
|
504
504
|
// this.appRequestAndProcessWorker = new Worker(new URL('./appRequestWorker.js', import.meta.url));
|
|
505
|
-
|
|
506
|
-
this.appRequestAndProcessWorker = new Worker('override_npm/gudhub/umd/appRequestWorker.js');
|
|
505
|
+
this.appRequestAndProcessWorker = new Worker('node_modules/@gudhub/core/umd/appRequestWorker.js');
|
|
506
|
+
// this.appRequestAndProcessWorker = new Worker('override_npm/gudhub/umd/appRequestWorker.js');
|
|
507
507
|
// this.appRequestAndProcessWorker = new AppRequestWorker();
|
|
508
508
|
|
|
509
509
|
// new Worker(new URL('./worker.js', import.meta.url));
|
|
@@ -761,7 +761,7 @@ export class IndexedDBAppService extends AppDataService {
|
|
|
761
761
|
}
|
|
762
762
|
|
|
763
763
|
async putApp(id, data) { //TODO -> put?
|
|
764
|
-
return this.storeManager.
|
|
764
|
+
return this.storeManager.putApp(id, data);
|
|
765
765
|
|
|
766
766
|
// try {
|
|
767
767
|
// const db = await this.openDatabase();
|
|
@@ -50,6 +50,9 @@ export class IndexedDBManager {
|
|
|
50
50
|
// });
|
|
51
51
|
|
|
52
52
|
|
|
53
|
+
this.dbPrms = this.openDB();
|
|
54
|
+
|
|
55
|
+
|
|
53
56
|
// this.db = this.openDB();
|
|
54
57
|
|
|
55
58
|
// this
|
|
@@ -132,7 +135,14 @@ export class IndexedDBManager {
|
|
|
132
135
|
// TODO remove outdated stores before also
|
|
133
136
|
|
|
134
137
|
|
|
135
|
-
if (this.db) return this.db;
|
|
138
|
+
// if (this.db) return this.db;
|
|
139
|
+
|
|
140
|
+
let resolver, rejecter;
|
|
141
|
+
|
|
142
|
+
this.dbPrms = new Promise((resolve, reject) => {
|
|
143
|
+
resolver = resolve;
|
|
144
|
+
rejecter = reject;
|
|
145
|
+
});
|
|
136
146
|
|
|
137
147
|
for (let storeName of this.storeNameList) {
|
|
138
148
|
await this.checkAndCreateStore(storeName);
|
|
@@ -142,9 +152,9 @@ export class IndexedDBManager {
|
|
|
142
152
|
|
|
143
153
|
let self = this;
|
|
144
154
|
|
|
145
|
-
return new Promise((resolve, reject) => {
|
|
155
|
+
// return new Promise((resolve, reject) => {
|
|
146
156
|
// const request = indexedDB.open(this.dbName, this.dbVersion);
|
|
147
|
-
const request = indexedDB.open(
|
|
157
|
+
const request = indexedDB.open(this.dbName);
|
|
148
158
|
|
|
149
159
|
// request.onupgradeneeded = (event) => {
|
|
150
160
|
// const db = event.target.result;
|
|
@@ -159,20 +169,21 @@ export class IndexedDBManager {
|
|
|
159
169
|
// };
|
|
160
170
|
|
|
161
171
|
request.onsuccess = (event) => {
|
|
162
|
-
|
|
172
|
+
this.db = event.target.result;
|
|
163
173
|
|
|
164
174
|
// let version = this.db.version;
|
|
165
175
|
|
|
166
|
-
|
|
176
|
+
resolver(this.db);
|
|
167
177
|
};
|
|
168
178
|
|
|
169
|
-
request.onerror =
|
|
170
|
-
});
|
|
179
|
+
request.onerror = rejecter;
|
|
180
|
+
// });
|
|
171
181
|
}
|
|
172
182
|
|
|
173
183
|
async executeOperation(storeName, operation) {
|
|
174
184
|
|
|
175
|
-
|
|
185
|
+
//this get executed more than 1 time
|
|
186
|
+
await this.dbPrms;
|
|
176
187
|
|
|
177
188
|
// if (
|
|
178
189
|
// !this.db
|
|
@@ -21,6 +21,19 @@ export class BaseStoreManager {
|
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
async putItem(id, data) {
|
|
25
|
+
return new Promise(async (resolve, reject) => {
|
|
26
|
+
|
|
27
|
+
this.dbManager.executeOperation(this.storeName, (store) => {
|
|
28
|
+
const request = store.put(data, id);
|
|
29
|
+
|
|
30
|
+
request.onsuccess = resolve;
|
|
31
|
+
request.onerror = reject;
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
24
37
|
async hasItem(id) {
|
|
25
38
|
|
|
26
39
|
// debugger
|
|
@@ -25,6 +25,12 @@ export class AppStoreManager extends BaseStoreManager {
|
|
|
25
25
|
// return dbManager.enqueueOperation('apps', 'readwrite', (store) => store.add(app));
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
async putApp(id, data) {
|
|
29
|
+
return this.putItem(id, data);
|
|
30
|
+
|
|
31
|
+
// return dbManager.enqueueOperation('apps', 'readwrite', (store) => store.add(app));
|
|
32
|
+
}
|
|
33
|
+
|
|
28
34
|
async hasApp(id) {
|
|
29
35
|
return this.hasItem(id);
|
|
30
36
|
}
|
|
@@ -57,6 +63,12 @@ export class ChunksStoreManager extends BaseStoreManager {
|
|
|
57
63
|
// return dbManager.enqueueOperation('apps', 'readwrite', (store) => store.add(app));
|
|
58
64
|
}
|
|
59
65
|
|
|
66
|
+
async putChunk(id, chunk) {
|
|
67
|
+
return this.putItem(id, chunk);
|
|
68
|
+
|
|
69
|
+
// return dbManager.enqueueOperation('apps', 'readwrite', (store) => store.add(app));
|
|
70
|
+
}
|
|
71
|
+
|
|
60
72
|
async deleteChunk(id) {
|
|
61
73
|
return this.deleteItem(id);
|
|
62
74
|
|
|
@@ -31,4 +31,107 @@ export let objectAssignWithoutOverride = (target, ...sourceList) => {
|
|
|
31
31
|
if (desc.enumerable) Object.defineProperty(target, key, desc);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
};
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
// // Base classes
|
|
39
|
+
// class IndexedDBMixin {
|
|
40
|
+
// constructor(dbName, version) {
|
|
41
|
+
// this.dbName = dbName;
|
|
42
|
+
// this.version = version;
|
|
43
|
+
// this.dbPromise = this.openConnection();
|
|
44
|
+
// }
|
|
45
|
+
|
|
46
|
+
// openConnection() {
|
|
47
|
+
// return new Promise((resolve, reject) => {
|
|
48
|
+
// const request = indexedDB.open(this.dbName, this.version);
|
|
49
|
+
|
|
50
|
+
// request.onupgradeneeded = (event) => {
|
|
51
|
+
// const db = event.target.result;
|
|
52
|
+
// if (!db.objectStoreNames.contains('storeName')) {
|
|
53
|
+
// db.createObjectStore('storeName', { keyPath: 'id' });
|
|
54
|
+
// }
|
|
55
|
+
// };
|
|
56
|
+
|
|
57
|
+
// request.onsuccess = (event) => resolve(event.target.result);
|
|
58
|
+
// request.onerror = (event) => reject(event.target.error);
|
|
59
|
+
// });
|
|
60
|
+
// }
|
|
61
|
+
|
|
62
|
+
// async getDB() {
|
|
63
|
+
// return await this.dbPromise;
|
|
64
|
+
// }
|
|
65
|
+
|
|
66
|
+
// async addRecord(storeName, record) {
|
|
67
|
+
// const db = await this.getDB();
|
|
68
|
+
// return new Promise((resolve, reject) => {
|
|
69
|
+
// const transaction = db.transaction(storeName, 'readwrite');
|
|
70
|
+
// const store = transaction.objectStore(storeName);
|
|
71
|
+
// const request = store.add(record);
|
|
72
|
+
|
|
73
|
+
// request.onsuccess = () => resolve(request.result);
|
|
74
|
+
// request.onerror = () => reject(request.error);
|
|
75
|
+
// });
|
|
76
|
+
// }
|
|
77
|
+
|
|
78
|
+
// async getRecord(storeName, key) {
|
|
79
|
+
// const db = await this.getDB();
|
|
80
|
+
// return new Promise((resolve, reject) => {
|
|
81
|
+
// const transaction = db.transaction(storeName, 'readonly');
|
|
82
|
+
// const store = transaction.objectStore(storeName);
|
|
83
|
+
// const request = store.get(key);
|
|
84
|
+
|
|
85
|
+
// request.onsuccess = () => resolve(request.result);
|
|
86
|
+
// request.onerror = () => reject(request.error);
|
|
87
|
+
// });
|
|
88
|
+
// }
|
|
89
|
+
// }
|
|
90
|
+
|
|
91
|
+
// class LoggingMixin {
|
|
92
|
+
// log(message) {
|
|
93
|
+
// console.log(message);
|
|
94
|
+
// }
|
|
95
|
+
|
|
96
|
+
// error(message) {
|
|
97
|
+
// console.error(message);
|
|
98
|
+
// }
|
|
99
|
+
// }
|
|
100
|
+
|
|
101
|
+
// // Mixin function
|
|
102
|
+
// function applyMixins(targetClass, baseClasses) {
|
|
103
|
+
// baseClasses.forEach(baseClass => {
|
|
104
|
+
// Object.getOwnPropertyDescriptors(baseClass.prototype).forEach(descriptor => {
|
|
105
|
+
// Object.defineProperty(targetClass.prototype, descriptor[0], descriptor[1]);
|
|
106
|
+
// });
|
|
107
|
+
// });
|
|
108
|
+
// }
|
|
109
|
+
|
|
110
|
+
// // Combined class
|
|
111
|
+
// class EnhancedIndexedDB extends IndexedDBMixin {
|
|
112
|
+
// constructor(dbName, version) {
|
|
113
|
+
// super(dbName, version);
|
|
114
|
+
// }
|
|
115
|
+
// }
|
|
116
|
+
|
|
117
|
+
// // Apply mixins
|
|
118
|
+
// applyMixins(EnhancedIndexedDB, [LoggingMixin]);
|
|
119
|
+
|
|
120
|
+
// // Usage example
|
|
121
|
+
// const dbFacade = new EnhancedIndexedDB('myDatabase', 1);
|
|
122
|
+
|
|
123
|
+
// dbFacade.addRecord('storeName', { id: 1, name: 'Sample' })
|
|
124
|
+
// .then((id) => {
|
|
125
|
+
// dbFacade.log('Record added with id: ' + id);
|
|
126
|
+
// })
|
|
127
|
+
// .catch((error) => {
|
|
128
|
+
// dbFacade.error('Error adding record: ' + error);
|
|
129
|
+
// });
|
|
130
|
+
|
|
131
|
+
// dbFacade.getRecord('storeName', 1)
|
|
132
|
+
// .then((record) => {
|
|
133
|
+
// dbFacade.log('Record retrieved: ' + JSON.stringify(record));
|
|
134
|
+
// })
|
|
135
|
+
// .catch((error) => {
|
|
136
|
+
// dbFacade.error('Error retrieving record: ' + error);
|
|
137
|
+
// });
|