@xbg.solutions/bpsk-utils-api-client 1.2.3
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/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +14 -0
- package/lib/index.js.map +1 -0
- package/lib/services/api/api.service.d.ts +67 -0
- package/lib/services/api/api.service.d.ts.map +1 -0
- package/lib/services/api/api.service.js +344 -0
- package/lib/services/api/api.service.js.map +1 -0
- package/lib/services/api/index.d.ts +13 -0
- package/lib/services/api/index.d.ts.map +1 -0
- package/lib/services/api/index.js +15 -0
- package/lib/services/api/index.js.map +1 -0
- package/lib/services/api/request-handler.d.ts +17 -0
- package/lib/services/api/request-handler.d.ts.map +1 -0
- package/lib/services/api/request-handler.js +289 -0
- package/lib/services/api/request-handler.js.map +1 -0
- package/lib/services/api/response-handler.d.ts +16 -0
- package/lib/services/api/response-handler.d.ts.map +1 -0
- package/lib/services/api/response-handler.js +254 -0
- package/lib/services/api/response-handler.js.map +1 -0
- package/lib/services/caching/api-cache.service.d.ts +97 -0
- package/lib/services/caching/api-cache.service.d.ts.map +1 -0
- package/lib/services/caching/api-cache.service.js +294 -0
- package/lib/services/caching/api-cache.service.js.map +1 -0
- package/lib/services/caching/cache.service.d.ts +86 -0
- package/lib/services/caching/cache.service.d.ts.map +1 -0
- package/lib/services/caching/cache.service.js +519 -0
- package/lib/services/caching/cache.service.js.map +1 -0
- package/lib/services/caching/index.d.ts +5 -0
- package/lib/services/caching/index.d.ts.map +1 -0
- package/lib/services/caching/index.js +3 -0
- package/lib/services/caching/index.js.map +1 -0
- package/lib/stores/api.service.d.ts +6 -0
- package/lib/stores/api.service.d.ts.map +1 -0
- package/lib/stores/api.service.js +6 -0
- package/lib/stores/api.service.js.map +1 -0
- package/lib/stores/request-handler.d.ts +6 -0
- package/lib/stores/request-handler.d.ts.map +1 -0
- package/lib/stores/request-handler.js +6 -0
- package/lib/stores/request-handler.js.map +1 -0
- package/lib/stores/response-handler.d.ts +6 -0
- package/lib/stores/response-handler.d.ts.map +1 -0
- package/lib/stores/response-handler.js +6 -0
- package/lib/stores/response-handler.js.map +1 -0
- package/lib/utils/cache-helpers.d.ts +112 -0
- package/lib/utils/cache-helpers.d.ts.map +1 -0
- package/lib/utils/cache-helpers.js +302 -0
- package/lib/utils/cache-helpers.js.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Caching Service
|
|
3
|
+
*
|
|
4
|
+
* Provides multiple levels of caching: memory, localStorage, sessionStorage,
|
|
5
|
+
* and IndexedDB for different use cases and data sizes.
|
|
6
|
+
*/
|
|
7
|
+
import { writable } from 'svelte/store';
|
|
8
|
+
import { loggerService } from '@xbg.solutions/bpsk-core';
|
|
9
|
+
/**
|
|
10
|
+
* Memory cache storage
|
|
11
|
+
*/
|
|
12
|
+
class MemoryCacheStorage {
|
|
13
|
+
constructor(maxSize = 100) {
|
|
14
|
+
this.cache = new Map();
|
|
15
|
+
this.maxSize = maxSize;
|
|
16
|
+
}
|
|
17
|
+
async get(key) {
|
|
18
|
+
const item = this.cache.get(key);
|
|
19
|
+
return item ? item : null;
|
|
20
|
+
}
|
|
21
|
+
async set(key, item) {
|
|
22
|
+
// Implement LRU eviction
|
|
23
|
+
if (this.cache.size >= this.maxSize && !this.cache.has(key)) {
|
|
24
|
+
const firstKey = this.cache.keys().next().value;
|
|
25
|
+
if (firstKey) {
|
|
26
|
+
this.cache.delete(firstKey);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
this.cache.set(key, item);
|
|
30
|
+
}
|
|
31
|
+
async delete(key) {
|
|
32
|
+
this.cache.delete(key);
|
|
33
|
+
}
|
|
34
|
+
async clear() {
|
|
35
|
+
this.cache.clear();
|
|
36
|
+
}
|
|
37
|
+
async keys() {
|
|
38
|
+
return Array.from(this.cache.keys());
|
|
39
|
+
}
|
|
40
|
+
async size() {
|
|
41
|
+
return this.cache.size;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* LocalStorage cache storage
|
|
46
|
+
*/
|
|
47
|
+
class LocalStorageCacheStorage {
|
|
48
|
+
constructor() {
|
|
49
|
+
this.prefix = 'cache:';
|
|
50
|
+
}
|
|
51
|
+
async get(key) {
|
|
52
|
+
if (typeof window === 'undefined')
|
|
53
|
+
return null;
|
|
54
|
+
try {
|
|
55
|
+
const value = localStorage.getItem(this.prefix + key);
|
|
56
|
+
return value ? JSON.parse(value) : null;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async set(key, item) {
|
|
63
|
+
if (typeof window === 'undefined')
|
|
64
|
+
return;
|
|
65
|
+
try {
|
|
66
|
+
localStorage.setItem(this.prefix + key, JSON.stringify(item));
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
// Handle quota exceeded error
|
|
70
|
+
if (error instanceof DOMException && error.code === 22) {
|
|
71
|
+
await this.cleanup();
|
|
72
|
+
try {
|
|
73
|
+
localStorage.setItem(this.prefix + key, JSON.stringify(item));
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Still can't save, give up
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async delete(key) {
|
|
82
|
+
if (typeof window === 'undefined')
|
|
83
|
+
return;
|
|
84
|
+
localStorage.removeItem(this.prefix + key);
|
|
85
|
+
}
|
|
86
|
+
async clear() {
|
|
87
|
+
if (typeof window === 'undefined')
|
|
88
|
+
return;
|
|
89
|
+
const keys = await this.keys();
|
|
90
|
+
keys.forEach(key => localStorage.removeItem(this.prefix + key));
|
|
91
|
+
}
|
|
92
|
+
async keys() {
|
|
93
|
+
if (typeof window === 'undefined')
|
|
94
|
+
return [];
|
|
95
|
+
const keys = [];
|
|
96
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
97
|
+
const key = localStorage.key(i);
|
|
98
|
+
if (key?.startsWith(this.prefix)) {
|
|
99
|
+
keys.push(key.substring(this.prefix.length));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return keys;
|
|
103
|
+
}
|
|
104
|
+
async size() {
|
|
105
|
+
return (await this.keys()).length;
|
|
106
|
+
}
|
|
107
|
+
async cleanup() {
|
|
108
|
+
const keys = await this.keys();
|
|
109
|
+
const items = [];
|
|
110
|
+
// Get all items with their expiration times
|
|
111
|
+
for (const key of keys) {
|
|
112
|
+
const item = await this.get(key);
|
|
113
|
+
if (item) {
|
|
114
|
+
items.push({ key, item });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Sort by expiration time (oldest first)
|
|
118
|
+
items.sort((a, b) => a.item.expiresAt - b.item.expiresAt);
|
|
119
|
+
// Remove oldest 25% of items
|
|
120
|
+
const removeCount = Math.ceil(items.length * 0.25);
|
|
121
|
+
for (let i = 0; i < removeCount; i++) {
|
|
122
|
+
await this.delete(items[i].key);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* SessionStorage cache storage
|
|
128
|
+
*/
|
|
129
|
+
class SessionStorageCacheStorage extends LocalStorageCacheStorage {
|
|
130
|
+
constructor() {
|
|
131
|
+
super(...arguments);
|
|
132
|
+
this.prefix = 'session_cache:';
|
|
133
|
+
}
|
|
134
|
+
async get(key) {
|
|
135
|
+
if (typeof window === 'undefined')
|
|
136
|
+
return null;
|
|
137
|
+
try {
|
|
138
|
+
const value = sessionStorage.getItem(this.prefix + key);
|
|
139
|
+
return value ? JSON.parse(value) : null;
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
async set(key, item) {
|
|
146
|
+
if (typeof window === 'undefined')
|
|
147
|
+
return;
|
|
148
|
+
try {
|
|
149
|
+
sessionStorage.setItem(this.prefix + key, JSON.stringify(item));
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
if (error instanceof DOMException && error.code === 22) {
|
|
153
|
+
await this.cleanup();
|
|
154
|
+
try {
|
|
155
|
+
sessionStorage.setItem(this.prefix + key, JSON.stringify(item));
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// Still can't save
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
async delete(key) {
|
|
164
|
+
if (typeof window === 'undefined')
|
|
165
|
+
return;
|
|
166
|
+
sessionStorage.removeItem(this.prefix + key);
|
|
167
|
+
}
|
|
168
|
+
async keys() {
|
|
169
|
+
if (typeof window === 'undefined')
|
|
170
|
+
return [];
|
|
171
|
+
const keys = [];
|
|
172
|
+
for (let i = 0; i < sessionStorage.length; i++) {
|
|
173
|
+
const key = sessionStorage.key(i);
|
|
174
|
+
if (key?.startsWith(this.prefix)) {
|
|
175
|
+
keys.push(key.substring(this.prefix.length));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return keys;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* IndexedDB cache storage for large data
|
|
183
|
+
*/
|
|
184
|
+
class IndexedDBCacheStorage {
|
|
185
|
+
constructor() {
|
|
186
|
+
this.dbName = 'CacheDB';
|
|
187
|
+
this.version = 1;
|
|
188
|
+
this.storeName = 'cache';
|
|
189
|
+
this.db = null;
|
|
190
|
+
}
|
|
191
|
+
async getDB() {
|
|
192
|
+
if (this.db)
|
|
193
|
+
return this.db;
|
|
194
|
+
return new Promise((resolve, reject) => {
|
|
195
|
+
if (typeof window === 'undefined' || !window.indexedDB) {
|
|
196
|
+
reject(new Error('IndexedDB not available'));
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const request = indexedDB.open(this.dbName, this.version);
|
|
200
|
+
request.onerror = () => reject(request.error);
|
|
201
|
+
request.onsuccess = () => {
|
|
202
|
+
this.db = request.result;
|
|
203
|
+
resolve(this.db);
|
|
204
|
+
};
|
|
205
|
+
request.onupgradeneeded = () => {
|
|
206
|
+
const db = request.result;
|
|
207
|
+
if (!db.objectStoreNames.contains(this.storeName)) {
|
|
208
|
+
const store = db.createObjectStore(this.storeName, { keyPath: 'key' });
|
|
209
|
+
store.createIndex('expiresAt', 'expiresAt');
|
|
210
|
+
store.createIndex('tags', 'tags', { multiEntry: true });
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
async get(key) {
|
|
216
|
+
try {
|
|
217
|
+
const db = await this.getDB();
|
|
218
|
+
const transaction = db.transaction([this.storeName], 'readonly');
|
|
219
|
+
const store = transaction.objectStore(this.storeName);
|
|
220
|
+
return new Promise((resolve, reject) => {
|
|
221
|
+
const request = store.get(key);
|
|
222
|
+
request.onerror = () => reject(request.error);
|
|
223
|
+
request.onsuccess = () => resolve(request.result || null);
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
async set(key, item) {
|
|
231
|
+
try {
|
|
232
|
+
const db = await this.getDB();
|
|
233
|
+
const transaction = db.transaction([this.storeName], 'readwrite');
|
|
234
|
+
const store = transaction.objectStore(this.storeName);
|
|
235
|
+
return new Promise((resolve, reject) => {
|
|
236
|
+
const request = store.put(item);
|
|
237
|
+
request.onerror = () => reject(request.error);
|
|
238
|
+
request.onsuccess = () => resolve();
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
throw new Error(`Failed to set cache item: ${error}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async delete(key) {
|
|
246
|
+
try {
|
|
247
|
+
const db = await this.getDB();
|
|
248
|
+
const transaction = db.transaction([this.storeName], 'readwrite');
|
|
249
|
+
const store = transaction.objectStore(this.storeName);
|
|
250
|
+
return new Promise((resolve, reject) => {
|
|
251
|
+
const request = store.delete(key);
|
|
252
|
+
request.onerror = () => reject(request.error);
|
|
253
|
+
request.onsuccess = () => resolve();
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
throw new Error(`Failed to delete cache item: ${error}`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
async clear() {
|
|
261
|
+
try {
|
|
262
|
+
const db = await this.getDB();
|
|
263
|
+
const transaction = db.transaction([this.storeName], 'readwrite');
|
|
264
|
+
const store = transaction.objectStore(this.storeName);
|
|
265
|
+
return new Promise((resolve, reject) => {
|
|
266
|
+
const request = store.clear();
|
|
267
|
+
request.onerror = () => reject(request.error);
|
|
268
|
+
request.onsuccess = () => resolve();
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
throw new Error(`Failed to clear cache: ${error}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
async keys() {
|
|
276
|
+
try {
|
|
277
|
+
const db = await this.getDB();
|
|
278
|
+
const transaction = db.transaction([this.storeName], 'readonly');
|
|
279
|
+
const store = transaction.objectStore(this.storeName);
|
|
280
|
+
return new Promise((resolve, reject) => {
|
|
281
|
+
const keys = [];
|
|
282
|
+
const request = store.openCursor();
|
|
283
|
+
request.onerror = () => reject(request.error);
|
|
284
|
+
request.onsuccess = () => {
|
|
285
|
+
const cursor = request.result;
|
|
286
|
+
if (cursor) {
|
|
287
|
+
keys.push(cursor.value.key);
|
|
288
|
+
cursor.continue();
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
resolve(keys);
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return [];
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
async size() {
|
|
301
|
+
return (await this.keys()).length;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Main cache service
|
|
306
|
+
*/
|
|
307
|
+
class CacheService {
|
|
308
|
+
constructor() {
|
|
309
|
+
this.storages = new Map();
|
|
310
|
+
this.stats = writable({
|
|
311
|
+
hitCount: 0,
|
|
312
|
+
missCount: 0,
|
|
313
|
+
hitRate: 0,
|
|
314
|
+
itemCount: 0,
|
|
315
|
+
totalSize: 0,
|
|
316
|
+
evictedCount: 0
|
|
317
|
+
});
|
|
318
|
+
this.logger = loggerService.withContext('CacheService');
|
|
319
|
+
this.storages.set('memory', new MemoryCacheStorage());
|
|
320
|
+
this.storages.set('localStorage', new LocalStorageCacheStorage());
|
|
321
|
+
this.storages.set('sessionStorage', new SessionStorageCacheStorage());
|
|
322
|
+
this.storages.set('indexedDB', new IndexedDBCacheStorage());
|
|
323
|
+
// Clean expired items periodically
|
|
324
|
+
if (typeof window !== 'undefined') {
|
|
325
|
+
setInterval(() => this.cleanupExpired(), 5 * 60 * 1000); // Every 5 minutes
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Get item from cache
|
|
330
|
+
*/
|
|
331
|
+
async get(key, storage = 'memory') {
|
|
332
|
+
const store = this.storages.get(storage);
|
|
333
|
+
if (!store) {
|
|
334
|
+
this.logger.warn(`Storage ${storage} not found`);
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
try {
|
|
338
|
+
const item = await store.get(key);
|
|
339
|
+
if (!item) {
|
|
340
|
+
this.updateStats('miss');
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
// Check if expired
|
|
344
|
+
if (Date.now() > item.expiresAt) {
|
|
345
|
+
await store.delete(key);
|
|
346
|
+
this.updateStats('miss');
|
|
347
|
+
return null;
|
|
348
|
+
}
|
|
349
|
+
this.updateStats('hit');
|
|
350
|
+
return item.value;
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
this.logger.error(`Failed to get cache item: ${key}`, error instanceof Error ? error : undefined);
|
|
354
|
+
this.updateStats('miss');
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Set item in cache
|
|
360
|
+
*/
|
|
361
|
+
async set(key, value, options = {}) {
|
|
362
|
+
const storage = options.storage || 'memory';
|
|
363
|
+
const store = this.storages.get(storage);
|
|
364
|
+
if (!store) {
|
|
365
|
+
this.logger.warn(`Storage ${storage} not found`);
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
const now = Date.now();
|
|
369
|
+
const ttl = options.ttl || (60 * 60 * 1000); // Default 1 hour
|
|
370
|
+
const item = {
|
|
371
|
+
key,
|
|
372
|
+
value,
|
|
373
|
+
expiresAt: now + ttl,
|
|
374
|
+
createdAt: now,
|
|
375
|
+
tags: options.tags,
|
|
376
|
+
size: this.estimateSize(value)
|
|
377
|
+
};
|
|
378
|
+
try {
|
|
379
|
+
await store.set(key, item);
|
|
380
|
+
this.logger.debug(`Cached item: ${key}`, { storage, ttl, size: item.size });
|
|
381
|
+
}
|
|
382
|
+
catch (error) {
|
|
383
|
+
this.logger.error(`Failed to set cache item: ${key}`, error instanceof Error ? error : undefined);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Delete item from cache
|
|
388
|
+
*/
|
|
389
|
+
async delete(key, storage = 'memory') {
|
|
390
|
+
const store = this.storages.get(storage);
|
|
391
|
+
if (!store)
|
|
392
|
+
return;
|
|
393
|
+
try {
|
|
394
|
+
await store.delete(key);
|
|
395
|
+
this.logger.debug(`Deleted cache item: ${key}`, { storage });
|
|
396
|
+
}
|
|
397
|
+
catch (error) {
|
|
398
|
+
this.logger.error(`Failed to delete cache item: ${key}`, error instanceof Error ? error : undefined);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Clear all items from cache
|
|
403
|
+
*/
|
|
404
|
+
async clear(storage = 'memory') {
|
|
405
|
+
const store = this.storages.get(storage);
|
|
406
|
+
if (!store)
|
|
407
|
+
return;
|
|
408
|
+
try {
|
|
409
|
+
await store.clear();
|
|
410
|
+
this.logger.info(`Cleared cache storage: ${storage}`);
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
this.logger.error(`Failed to clear cache: ${storage}`, error instanceof Error ? error : undefined);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Get or set cached value
|
|
418
|
+
*/
|
|
419
|
+
async getOrSet(key, factory, options = {}) {
|
|
420
|
+
const cached = await this.get(key, options.storage);
|
|
421
|
+
if (cached !== null) {
|
|
422
|
+
return cached;
|
|
423
|
+
}
|
|
424
|
+
const value = await factory();
|
|
425
|
+
await this.set(key, value, options);
|
|
426
|
+
return value;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Invalidate cache by tags
|
|
430
|
+
*/
|
|
431
|
+
async invalidateByTags(tags, storage = 'memory') {
|
|
432
|
+
const store = this.storages.get(storage);
|
|
433
|
+
if (!store)
|
|
434
|
+
return;
|
|
435
|
+
try {
|
|
436
|
+
const keys = await store.keys();
|
|
437
|
+
const toDelete = [];
|
|
438
|
+
for (const key of keys) {
|
|
439
|
+
const item = await store.get(key);
|
|
440
|
+
if (item?.tags && item.tags.some(tag => tags.includes(tag))) {
|
|
441
|
+
toDelete.push(key);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
await Promise.all(toDelete.map(key => store.delete(key)));
|
|
445
|
+
this.logger.info(`Invalidated ${toDelete.length} items by tags`, { tags, storage });
|
|
446
|
+
}
|
|
447
|
+
catch (error) {
|
|
448
|
+
this.logger.error(`Failed to invalidate by tags`, error instanceof Error ? error : undefined);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Clean up expired items
|
|
453
|
+
*/
|
|
454
|
+
async cleanupExpired() {
|
|
455
|
+
const now = Date.now();
|
|
456
|
+
let totalCleaned = 0;
|
|
457
|
+
for (const [storageName, store] of this.storages) {
|
|
458
|
+
try {
|
|
459
|
+
const keys = await store.keys();
|
|
460
|
+
const toDelete = [];
|
|
461
|
+
for (const key of keys) {
|
|
462
|
+
const item = await store.get(key);
|
|
463
|
+
if (item && now > item.expiresAt) {
|
|
464
|
+
toDelete.push(key);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
await Promise.all(toDelete.map(key => store.delete(key)));
|
|
468
|
+
totalCleaned += toDelete.length;
|
|
469
|
+
}
|
|
470
|
+
catch (error) {
|
|
471
|
+
this.logger.error(`Failed to cleanup expired items in ${storageName}`, error instanceof Error ? error : undefined);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
if (totalCleaned > 0) {
|
|
475
|
+
this.logger.info(`Cleaned up ${totalCleaned} expired cache items`);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Get all keys from a specific storage
|
|
480
|
+
*/
|
|
481
|
+
async keys(storage = 'memory') {
|
|
482
|
+
const store = this.storages.get(storage);
|
|
483
|
+
if (!store)
|
|
484
|
+
return [];
|
|
485
|
+
return store.keys();
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Get cache statistics
|
|
489
|
+
*/
|
|
490
|
+
getStats() {
|
|
491
|
+
return this.stats;
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Estimate object size in bytes
|
|
495
|
+
*/
|
|
496
|
+
estimateSize(value) {
|
|
497
|
+
const str = JSON.stringify(value);
|
|
498
|
+
return new Blob([str]).size;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Update cache statistics
|
|
502
|
+
*/
|
|
503
|
+
updateStats(type) {
|
|
504
|
+
this.stats.update(stats => {
|
|
505
|
+
if (type === 'hit') {
|
|
506
|
+
stats.hitCount++;
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
stats.missCount++;
|
|
510
|
+
}
|
|
511
|
+
const total = stats.hitCount + stats.missCount;
|
|
512
|
+
stats.hitRate = total > 0 ? (stats.hitCount / total) * 100 : 0;
|
|
513
|
+
return stats;
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
// Export singleton instance
|
|
518
|
+
export const cacheService = new CacheService();
|
|
519
|
+
//# sourceMappingURL=cache.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../../src/services/caching/cache.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { cacheService } from './cache.service';
|
|
2
|
+
export { apiCacheService } from './api-cache.service';
|
|
3
|
+
export type { CacheItem, CacheOptions, CacheStats } from './cache.service';
|
|
4
|
+
export type { APIResponse, APICacheOptions } from './api-cache.service';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/caching/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,YAAY,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,WAAW,EACX,eAAe,EAChB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/caching/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.service.d.ts","sourceRoot":"","sources":["../../src/stores/api.service.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,kDAG1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.service.js","sourceRoot":"","sources":["../../src/stores/api.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAOxC,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAkB;IACvD,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,CAAC;CAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-handler.d.ts","sourceRoot":"","sources":["../../src/stores/request-handler.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,mBAAmB,sDAG9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-handler.js","sourceRoot":"","sources":["../../src/stores/request-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAOxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAsB;IAC/D,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,EAAE;CACnB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-handler.d.ts","sourceRoot":"","sources":["../../src/stores/response-handler.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,uDAG/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-handler.js","sourceRoot":"","sources":["../../src/stores/response-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAOxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAuB;IACjE,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,EAAE;CACX,CAAC,CAAC"}
|