@libs-ui/utils 0.2.51 → 0.2.53
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/cache.d.ts +2 -1
- package/esm2022/cache.mjs +44 -56
- package/esm2022/helpers.mjs +5 -3
- package/fesm2022/libs-ui-utils.mjs +46 -56
- package/fesm2022/libs-ui-utils.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -241,11 +241,13 @@ const set = (obj, path, value) => {
|
|
|
241
241
|
key = key.replace(/\[(\d+)]/g, '$1');
|
|
242
242
|
current[key] = /\[(\d+)]/g.test(nextKey) ? [] : {};
|
|
243
243
|
}
|
|
244
|
-
|
|
245
|
-
|
|
244
|
+
current = key ? current[key] : current;
|
|
245
|
+
lastIsSignal = isSignal(current);
|
|
246
|
+
current = lastIsSignal ? current() : current;
|
|
246
247
|
return;
|
|
247
248
|
}
|
|
248
249
|
// Gán giá trị ở cuối đường dẫn
|
|
250
|
+
key = key.replace(/\[(\d+)]/g, '$1');
|
|
249
251
|
if (lastIsSignal) {
|
|
250
252
|
current.update((data) => {
|
|
251
253
|
data[key] = value;
|
|
@@ -968,8 +970,8 @@ class UtilsCache {
|
|
|
968
970
|
if (config.typeKeyClearLocalStorage) {
|
|
969
971
|
UtilsCache.typeKeyClearLocalStorage = config.typeKeyClearLocalStorage;
|
|
970
972
|
}
|
|
971
|
-
if (config.
|
|
972
|
-
UtilsCache.listKeyKeepWhenClearALll = config.
|
|
973
|
+
if (config.listKeyKeepWhenClearAll) {
|
|
974
|
+
UtilsCache.listKeyKeepWhenClearALll = config.listKeyKeepWhenClearAll;
|
|
973
975
|
}
|
|
974
976
|
if (config.languageKeyCache) {
|
|
975
977
|
UtilsCache.languageKeyCache = config.languageKeyCache;
|
|
@@ -991,7 +993,7 @@ class UtilsCache {
|
|
|
991
993
|
request.onupgradeneeded = (event) => {
|
|
992
994
|
const db = event.target.result;
|
|
993
995
|
if (!db.objectStoreNames.contains(UtilsCache.dbName)) {
|
|
994
|
-
const objectStore = db.createObjectStore(UtilsCache.dbName, { keyPath:
|
|
996
|
+
const objectStore = db.createObjectStore(UtilsCache.dbName, { keyPath: UtilsCache.itemIndexByKey, autoIncrement: true });
|
|
995
997
|
objectStore.createIndex(UtilsCache.itemIndexByKey, UtilsCache.itemIndexByKey, { unique: true });
|
|
996
998
|
}
|
|
997
999
|
};
|
|
@@ -1087,8 +1089,7 @@ class UtilsCache {
|
|
|
1087
1089
|
if (!objectStore) {
|
|
1088
1090
|
return resolve(default_value);
|
|
1089
1091
|
}
|
|
1090
|
-
const
|
|
1091
|
-
const request = index.get(key);
|
|
1092
|
+
const request = objectStore.get(key);
|
|
1092
1093
|
request.onsuccess = () => {
|
|
1093
1094
|
if (!request.result) {
|
|
1094
1095
|
return resolve(default_value);
|
|
@@ -1136,41 +1137,25 @@ class UtilsCache {
|
|
|
1136
1137
|
return default_value;
|
|
1137
1138
|
}
|
|
1138
1139
|
static async SetAsync(key, value, expireTimeBySecond = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT, isKeyMD5 = false) {
|
|
1139
|
-
return new Promise(async (resolve
|
|
1140
|
-
|
|
1140
|
+
return new Promise(async (resolve) => {
|
|
1141
|
+
const objectStore = await UtilsCache.getObjectStore();
|
|
1141
1142
|
key = isKeyMD5 ? key : md5(key);
|
|
1142
1143
|
try {
|
|
1143
1144
|
const currentMillisecond = expireTimeBySecond === UtilsCache.CACHE_EXPIRE_NONE ? UtilsCache.CACHE_EXPIRE_NONE : (new Date().valueOf() / 1000) + expireTimeBySecond;
|
|
1144
1145
|
const data = {
|
|
1145
|
-
key: key,
|
|
1146
1146
|
value: encrypt(JSON.stringify({ json: value, expire: currentMillisecond })),
|
|
1147
1147
|
};
|
|
1148
|
+
data[UtilsCache.itemIndexByKey] = key;
|
|
1148
1149
|
if (!objectStore) {
|
|
1149
1150
|
return resolve(-1);
|
|
1150
1151
|
}
|
|
1151
|
-
const
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
const item = getIndexKeyRequest.result;
|
|
1155
|
-
if (item) {
|
|
1156
|
-
await UtilsCache.ClearAsync(key, true);
|
|
1157
|
-
objectStore = await UtilsCache.getObjectStore();
|
|
1158
|
-
}
|
|
1159
|
-
if (!objectStore) {
|
|
1160
|
-
return resolve(-1);
|
|
1161
|
-
}
|
|
1162
|
-
const request = objectStore.add(data);
|
|
1163
|
-
request.onsuccess = () => {
|
|
1164
|
-
resolve(request.result);
|
|
1165
|
-
};
|
|
1166
|
-
request.onerror = () => {
|
|
1167
|
-
console.log(request.error);
|
|
1168
|
-
return resolve(-1);
|
|
1169
|
-
};
|
|
1152
|
+
const request = objectStore?.put(data);
|
|
1153
|
+
request.onsuccess = () => {
|
|
1154
|
+
resolve(request.result);
|
|
1170
1155
|
};
|
|
1171
|
-
|
|
1172
|
-
console.
|
|
1173
|
-
|
|
1156
|
+
request.onerror = () => {
|
|
1157
|
+
console.log(request.error);
|
|
1158
|
+
return resolve(-1);
|
|
1174
1159
|
};
|
|
1175
1160
|
}
|
|
1176
1161
|
catch (error) {
|
|
@@ -1201,23 +1186,11 @@ class UtilsCache {
|
|
|
1201
1186
|
if (!objectStore) {
|
|
1202
1187
|
return resolve({});
|
|
1203
1188
|
}
|
|
1204
|
-
const
|
|
1205
|
-
|
|
1206
|
-
getRequest.onsuccess = () => {
|
|
1207
|
-
const result = getRequest.result;
|
|
1208
|
-
if (result) {
|
|
1209
|
-
const deleteRequest = objectStore.delete(result.id); // Xóa theo id của item tìm được
|
|
1210
|
-
deleteRequest.onsuccess = () => {
|
|
1211
|
-
resolve({});
|
|
1212
|
-
};
|
|
1213
|
-
deleteRequest.onerror = () => {
|
|
1214
|
-
resolve({});
|
|
1215
|
-
};
|
|
1216
|
-
return;
|
|
1217
|
-
}
|
|
1189
|
+
const request = objectStore.delete(isMD5 ? key : md5(key));
|
|
1190
|
+
request.onsuccess = () => {
|
|
1218
1191
|
resolve({});
|
|
1219
1192
|
};
|
|
1220
|
-
|
|
1193
|
+
request.onerror = () => {
|
|
1221
1194
|
resolve({});
|
|
1222
1195
|
};
|
|
1223
1196
|
});
|
|
@@ -1229,8 +1202,12 @@ class UtilsCache {
|
|
|
1229
1202
|
this.LocalStorage.removeItem(key);
|
|
1230
1203
|
}
|
|
1231
1204
|
static ClearAllAsync() {
|
|
1232
|
-
return new Promise((resolve, reject) => {
|
|
1233
|
-
const
|
|
1205
|
+
return new Promise(async (resolve, reject) => {
|
|
1206
|
+
const objectStore = await UtilsCache.getObjectStore();
|
|
1207
|
+
if (!objectStore) {
|
|
1208
|
+
return resolve({});
|
|
1209
|
+
}
|
|
1210
|
+
const request = objectStore.clear();
|
|
1234
1211
|
request.onsuccess = () => {
|
|
1235
1212
|
console.log('Database deleted successfully');
|
|
1236
1213
|
resolve(true);
|
|
@@ -1239,9 +1216,6 @@ class UtilsCache {
|
|
|
1239
1216
|
console.error('Error deleting database:', event.target.error);
|
|
1240
1217
|
reject(event.target.error);
|
|
1241
1218
|
};
|
|
1242
|
-
request.onblocked = () => {
|
|
1243
|
-
console.warn('Delete request is blocked');
|
|
1244
|
-
};
|
|
1245
1219
|
});
|
|
1246
1220
|
}
|
|
1247
1221
|
static ClearAll() {
|
|
@@ -1293,18 +1267,18 @@ class UtilsCache {
|
|
|
1293
1267
|
if (!objectStore) {
|
|
1294
1268
|
return resolve({});
|
|
1295
1269
|
}
|
|
1296
|
-
const index = objectStore.index(UtilsCache.itemIndexByKey);
|
|
1297
1270
|
// Lấy tất cả các keys từ index
|
|
1298
|
-
const request =
|
|
1271
|
+
const request = objectStore.getAll();
|
|
1299
1272
|
keyCacheStartWith = isKeyMD5 ? keyCacheStartWith : md5(keyCacheStartWith);
|
|
1300
1273
|
request.onsuccess = (e) => {
|
|
1301
1274
|
const data = e.target.result;
|
|
1275
|
+
console.log(data);
|
|
1302
1276
|
if (!Array.isArray(data)) {
|
|
1303
1277
|
return resolve({});
|
|
1304
1278
|
}
|
|
1305
1279
|
data.forEach(obj => {
|
|
1306
|
-
if (obj.
|
|
1307
|
-
UtilsCache.ClearAsync(obj.
|
|
1280
|
+
if (obj[UtilsCache.itemIndexByKey].startsWith(keyCacheStartWith)) {
|
|
1281
|
+
UtilsCache.ClearAsync(obj[UtilsCache.itemIndexByKey], true);
|
|
1308
1282
|
}
|
|
1309
1283
|
});
|
|
1310
1284
|
return resolve({});
|
|
@@ -1326,6 +1300,22 @@ class UtilsCache {
|
|
|
1326
1300
|
}
|
|
1327
1301
|
});
|
|
1328
1302
|
}
|
|
1303
|
+
static DeleteDatabaseIndexDB(dbName) {
|
|
1304
|
+
return new Promise((resolve, reject) => {
|
|
1305
|
+
const request = indexedDB.deleteDatabase(dbName);
|
|
1306
|
+
request.onsuccess = () => {
|
|
1307
|
+
console.log('Database deleted successfully');
|
|
1308
|
+
resolve(true);
|
|
1309
|
+
};
|
|
1310
|
+
request.onerror = (event) => {
|
|
1311
|
+
console.error('Error deleting database:', event.target.error);
|
|
1312
|
+
reject(event.target.error);
|
|
1313
|
+
};
|
|
1314
|
+
request.onblocked = () => {
|
|
1315
|
+
console.warn('Delete request is blocked');
|
|
1316
|
+
};
|
|
1317
|
+
});
|
|
1318
|
+
}
|
|
1329
1319
|
}
|
|
1330
1320
|
|
|
1331
1321
|
const formatNumber = (value) => {
|