@fjell/cache 4.7.2 → 4.7.5

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.
@@ -23,7 +23,7 @@ export declare abstract class CacheMap<V extends Item<S, L1, L2, L3, L4, L5>, S
23
23
  /**
24
24
  * Store an item with its key
25
25
  */
26
- abstract set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V): void;
26
+ abstract set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V): Promise<void>;
27
27
  /**
28
28
  * Check if a key exists in the cache
29
29
  */
@@ -31,7 +31,7 @@ export declare abstract class CacheMap<V extends Item<S, L1, L2, L3, L4, L5>, S
31
31
  /**
32
32
  * Delete an item by its key
33
33
  */
34
- abstract delete(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): void;
34
+ abstract delete(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<void>;
35
35
  /**
36
36
  * Get all items in the specified locations
37
37
  */
@@ -51,7 +51,7 @@ export declare abstract class CacheMap<V extends Item<S, L1, L2, L3, L4, L5>, S
51
51
  /**
52
52
  * Get all keys in the cache
53
53
  */
54
- abstract keys(): (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[];
54
+ abstract keys(): Promise<(ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]>;
55
55
  /**
56
56
  * Get all values in the cache
57
57
  */
@@ -59,11 +59,11 @@ export declare abstract class CacheMap<V extends Item<S, L1, L2, L3, L4, L5>, S
59
59
  /**
60
60
  * Clear all items from the cache
61
61
  */
62
- abstract clear(): void;
62
+ abstract clear(): Promise<void>;
63
63
  /**
64
64
  * Set a query result as a collection of item keys
65
65
  */
66
- abstract setQueryResult(queryHash: string, itemKeys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): void;
66
+ abstract setQueryResult(queryHash: string, itemKeys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): Promise<void>;
67
67
  /**
68
68
  * Get a query result as a collection of item keys
69
69
  */
@@ -71,15 +71,15 @@ export declare abstract class CacheMap<V extends Item<S, L1, L2, L3, L4, L5>, S
71
71
  /**
72
72
  * Check if a query result exists in cache
73
73
  */
74
- abstract hasQueryResult(queryHash: string): boolean;
74
+ abstract hasQueryResult(queryHash: string): Promise<boolean>;
75
75
  /**
76
76
  * Delete a specific query result
77
77
  */
78
- abstract deleteQueryResult(queryHash: string): void;
78
+ abstract deleteQueryResult(queryHash: string): Promise<void>;
79
79
  /**
80
80
  * Invalidate all cached items by their keys
81
81
  */
82
- abstract invalidateItemKeys(keys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): void;
82
+ abstract invalidateItemKeys(keys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): Promise<void>;
83
83
  /**
84
84
  * Invalidate all items in specified locations and clear related query results
85
85
  */
@@ -87,47 +87,47 @@ export declare abstract class CacheMap<V extends Item<S, L1, L2, L3, L4, L5>, S
87
87
  /**
88
88
  * Clear all query result cache entries
89
89
  */
90
- abstract clearQueryResults(): void;
90
+ abstract clearQueryResults(): Promise<void>;
91
91
  /**
92
92
  * Get metadata for a specific item
93
93
  * @param key - Item key
94
94
  * @returns Metadata if exists, null otherwise
95
95
  */
96
- abstract getMetadata(key: string): CacheItemMetadata | null;
96
+ abstract getMetadata(key: string): Promise<CacheItemMetadata | null>;
97
97
  /**
98
98
  * Set metadata for a specific item
99
99
  * @param key - Item key
100
100
  * @param metadata - Metadata to store
101
101
  */
102
- abstract setMetadata(key: string, metadata: CacheItemMetadata): void;
102
+ abstract setMetadata(key: string, metadata: CacheItemMetadata): Promise<void>;
103
103
  /**
104
104
  * Delete metadata for a specific item
105
105
  * @param key - Item key
106
106
  */
107
- abstract deleteMetadata(key: string): void;
107
+ abstract deleteMetadata(key: string): Promise<void>;
108
108
  /**
109
109
  * Get all metadata entries
110
110
  * @returns Map of all metadata entries
111
111
  */
112
- abstract getAllMetadata(): Map<string, CacheItemMetadata>;
112
+ abstract getAllMetadata(): Promise<Map<string, CacheItemMetadata>>;
113
113
  /**
114
114
  * Clear all metadata
115
115
  */
116
- abstract clearMetadata(): void;
116
+ abstract clearMetadata(): Promise<void>;
117
117
  /**
118
118
  * Get current cache size information
119
119
  * @returns Object with current size metrics
120
120
  */
121
- abstract getCurrentSize(): {
121
+ abstract getCurrentSize(): Promise<{
122
122
  itemCount: number;
123
123
  sizeBytes: number;
124
- };
124
+ }>;
125
125
  /**
126
126
  * Get cache size limits
127
127
  * @returns Object with size limits (null means unlimited)
128
128
  */
129
- abstract getSizeLimits(): {
129
+ abstract getSizeLimits(): Promise<{
130
130
  maxItems: number | null;
131
131
  maxSizeBytes: number | null;
132
- };
132
+ }>;
133
133
  }
@@ -1,4 +1,5 @@
1
1
  import { AllItemTypeArrays, ComKey, Item, ItemQuery, LocKeyArray, PriKey } from "@fjell/core";
2
+ import { CacheItemMetadata } from "../eviction/EvictionStrategy";
2
3
  /**
3
4
  * IndexedDB implementation of CacheMap for browser environments.
4
5
  * Data persists long-term with much larger storage limits than localStorage/sessionStorage.
@@ -14,11 +15,23 @@ export declare class AsyncIndexDBCacheMap<V extends Item<S, L1, L2, L3, L4, L5>,
14
15
  private version;
15
16
  private normalizedHashFunction;
16
17
  private dbPromise;
18
+ private static readonly CURRENT_VERSION;
17
19
  constructor(types: AllItemTypeArrays<S, L1, L2, L3, L4, L5>, dbName?: string, storeName?: string, version?: number);
18
20
  private getDB;
19
21
  private getStorageKey;
20
22
  get(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<V | null>;
21
- set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V): Promise<void>;
23
+ /**
24
+ * Get both the value and metadata for an item
25
+ */
26
+ getWithMetadata(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<{
27
+ value: V;
28
+ metadata?: CacheItemMetadata;
29
+ } | null>;
30
+ set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V, metadata?: CacheItemMetadata): Promise<void>;
31
+ /**
32
+ * Update only the metadata for an existing item
33
+ */
34
+ setMetadata(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, metadata: CacheItemMetadata): Promise<void>;
22
35
  includesKey(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<boolean>;
23
36
  delete(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<void>;
24
37
  allIn(locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<V[]>;
@@ -26,6 +39,10 @@ export declare class AsyncIndexDBCacheMap<V extends Item<S, L1, L2, L3, L4, L5>,
26
39
  queryIn(query: ItemQuery, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<V[]>;
27
40
  clone(): AsyncIndexDBCacheMap<V, S, L1, L2, L3, L4, L5>;
28
41
  keys(): Promise<(ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]>;
42
+ /**
43
+ * Get all metadata entries from IndexedDB
44
+ */
45
+ getAllMetadata(): Promise<Map<string, CacheItemMetadata>>;
29
46
  values(): Promise<V[]>;
30
47
  clear(): Promise<void>;
31
48
  setQueryResult(queryHash: string, itemKeys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): Promise<void>;
@@ -1,69 +1,67 @@
1
1
  import { AllItemTypeArrays, ComKey, Item, ItemQuery, LocKeyArray, PriKey } from "@fjell/core";
2
- import { CacheMap } from "../CacheMap";
3
- import { AsyncIndexDBCacheMap } from "./AsyncIndexDBCacheMap";
4
2
  import { CacheItemMetadata } from "../eviction/EvictionStrategy";
3
+ import { AsyncIndexDBCacheMap } from "./AsyncIndexDBCacheMap";
4
+ import { CacheMap } from "../CacheMap";
5
5
  /**
6
- * Synchronous wrapper for IndexedDB CacheMap implementation.
6
+ * Synchronous IndexedDB CacheMap wrapper implementation.
7
7
  *
8
- * This implementation provides a synchronous interface over IndexedDB
9
- * by maintaining an in-memory cache that is periodically synchronized
10
- * with IndexedDB storage. For full async capabilities, use AsyncIndexDBCacheMap.
8
+ * This implementation provides synchronous memory operations with background IndexedDB persistence.
9
+ * Memory operations are immediate while IndexedDB operations happen asynchronously in the background.
11
10
  *
12
- * Note: This class maintains synchronous compatibility while providing
13
- * persistent storage benefits of IndexedDB.
11
+ * Benefits:
12
+ * - Fast memory access for immediate operations
13
+ * - Background persistence to IndexedDB for durability
14
+ * - Synchronous API compatible with other CacheMap implementations
15
+ * - Automatic sync between memory and IndexedDB
14
16
  */
15
17
  export declare class IndexDBCacheMap<V extends Item<S, L1, L2, L3, L4, L5>, S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> extends CacheMap<V, S, L1, L2, L3, L4, L5> {
16
18
  readonly implementationType = "browser/indexedDB";
19
+ private memoryMap;
20
+ private queryResultCache;
21
+ private metadataMap;
22
+ private normalizedHashFunction;
23
+ protected types: AllItemTypeArrays<S, L1, L2, L3, L4, L5>;
17
24
  asyncCache: AsyncIndexDBCacheMap<V, S, L1, L2, L3, L4, L5>;
18
- private memoryCache;
19
25
  private syncInterval;
20
- private readonly SYNC_INTERVAL_MS;
21
- private pendingSyncOperations;
22
- private initializationPromise;
23
- private isInitialized;
24
- private readonly MAX_RETRY_ATTEMPTS;
25
- private operationSequence;
26
+ private pendingOperations;
27
+ private sequenceCounter;
26
28
  constructor(types: AllItemTypeArrays<S, L1, L2, L3, L4, L5>, dbName?: string, storeName?: string, version?: number);
27
29
  private initializeFromIndexedDB;
28
30
  private startPeriodicSync;
29
- private syncToIndexedDB;
30
31
  private processPendingOperations;
31
- private queueForSync;
32
- private queueDeleteForSync;
33
- private queueClearForSync;
34
32
  get(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<V | null>;
35
- set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V): void;
33
+ set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V): Promise<void>;
36
34
  includesKey(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<boolean>;
37
- delete(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): void;
35
+ delete(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<void>;
36
+ keys(): Promise<(ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]>;
37
+ values(): Promise<V[]>;
38
+ clear(): Promise<void>;
38
39
  allIn(locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<V[]>;
39
40
  contains(query: ItemQuery, locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<boolean>;
40
41
  queryIn(query: ItemQuery, locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<V[]>;
41
- clone(): Promise<IndexDBCacheMap<V, S, L1, L2, L3, L4, L5>>;
42
- keys(): (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[];
43
- values(): Promise<V[]>;
44
- clear(): void;
45
- setQueryResult(queryHash: string, itemKeys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): void;
42
+ setQueryResult(queryHash: string, itemKeys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): Promise<void>;
46
43
  getQueryResult(queryHash: string): Promise<(ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[] | null>;
47
- hasQueryResult(queryHash: string): boolean;
48
- deleteQueryResult(queryHash: string): void;
49
- invalidateItemKeys(keys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): void;
44
+ hasQueryResult(queryHash: string): Promise<boolean>;
45
+ deleteQueryResult(queryHash: string): Promise<void>;
46
+ clearQueryResults(): Promise<void>;
47
+ invalidateItemKeys(keys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): Promise<void>;
50
48
  invalidateLocation(locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<void>;
51
- clearQueryResults(): void;
52
- /**
53
- * Clean up resources when the cache is no longer needed
54
- */
55
- destroy(): void;
56
- getMetadata(key: string): CacheItemMetadata | null;
57
- setMetadata(key: string, metadata: CacheItemMetadata): void;
58
- deleteMetadata(key: string): void;
59
- getAllMetadata(): Map<string, CacheItemMetadata>;
60
- clearMetadata(): void;
61
- getCurrentSize(): {
49
+ getMetadata(key: string): Promise<CacheItemMetadata | null>;
50
+ setMetadata(key: string, metadata: CacheItemMetadata): Promise<void>;
51
+ deleteMetadata(key: string): Promise<void>;
52
+ getAllMetadata(): Promise<Map<string, CacheItemMetadata>>;
53
+ clearMetadata(): Promise<void>;
54
+ getCurrentSize(): Promise<{
62
55
  itemCount: number;
63
56
  sizeBytes: number;
64
- };
65
- getSizeLimits(): {
57
+ }>;
58
+ getSizeLimits(): Promise<{
66
59
  maxItems: number | null;
67
60
  maxSizeBytes: number | null;
68
- };
61
+ }>;
62
+ clone(): Promise<CacheMap<V, S, L1, L2, L3, L4, L5>>;
63
+ /**
64
+ * Clean up resources when the cache is no longer needed
65
+ */
66
+ destroy(): void;
69
67
  }
@@ -25,35 +25,35 @@ export declare class LocalStorageCacheMap<V extends Item<S, L1, L2, L3, L4, L5>,
25
25
  private removeOldestEntries;
26
26
  private getAllStorageKeys;
27
27
  get(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<V | null>;
28
- set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V): void;
28
+ set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V): Promise<void>;
29
29
  includesKey(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<boolean>;
30
- delete(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): void;
30
+ delete(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<void>;
31
31
  allIn(locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<V[]>;
32
32
  contains(query: ItemQuery, locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<boolean>;
33
33
  queryIn(query: ItemQuery, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<V[]>;
34
34
  clone(): Promise<LocalStorageCacheMap<V, S, L1, L2, L3, L4, L5>>;
35
35
  private parseStorageEntry;
36
- keys(): (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[];
36
+ keys(): Promise<(ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]>;
37
37
  values(): Promise<V[]>;
38
- clear(): void;
39
- setQueryResult(queryHash: string, itemKeys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): void;
38
+ clear(): Promise<void>;
39
+ setQueryResult(queryHash: string, itemKeys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): Promise<void>;
40
40
  getQueryResult(queryHash: string): Promise<(ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[] | null>;
41
- hasQueryResult(queryHash: string): boolean;
42
- deleteQueryResult(queryHash: string): void;
43
- invalidateItemKeys(keys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): void;
41
+ hasQueryResult(queryHash: string): Promise<boolean>;
42
+ deleteQueryResult(queryHash: string): Promise<void>;
43
+ invalidateItemKeys(keys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): Promise<void>;
44
44
  invalidateLocation(locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<void>;
45
- clearQueryResults(): void;
46
- getMetadata(key: string): CacheItemMetadata | null;
47
- setMetadata(key: string, metadata: CacheItemMetadata): void;
48
- deleteMetadata(key: string): void;
49
- getAllMetadata(): Map<string, CacheItemMetadata>;
50
- clearMetadata(): void;
51
- getCurrentSize(): {
45
+ clearQueryResults(): Promise<void>;
46
+ getMetadata(key: string): Promise<CacheItemMetadata | null>;
47
+ setMetadata(key: string, metadata: CacheItemMetadata): Promise<void>;
48
+ deleteMetadata(key: string): Promise<void>;
49
+ getAllMetadata(): Promise<Map<string, CacheItemMetadata>>;
50
+ clearMetadata(): Promise<void>;
51
+ getCurrentSize(): Promise<{
52
52
  itemCount: number;
53
53
  sizeBytes: number;
54
- };
55
- getSizeLimits(): {
54
+ }>;
55
+ getSizeLimits(): Promise<{
56
56
  maxItems: number | null;
57
57
  maxSizeBytes: number | null;
58
- };
58
+ }>;
59
59
  }
@@ -18,34 +18,34 @@ export declare class SessionStorageCacheMap<V extends Item<S, L1, L2, L3, L4, L5
18
18
  private getAllStorageKeys;
19
19
  private hasCollisionForHash;
20
20
  get(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<V | null>;
21
- set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V): void;
21
+ set(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, value: V): Promise<void>;
22
22
  includesKey(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<boolean>;
23
- delete(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): void;
23
+ delete(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): Promise<void>;
24
24
  allIn(locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<V[]>;
25
25
  contains(query: ItemQuery, locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<boolean>;
26
26
  queryIn(query: ItemQuery, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<V[]>;
27
27
  clone(): Promise<SessionStorageCacheMap<V, S, L1, L2, L3, L4, L5>>;
28
- keys(): (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[];
28
+ keys(): Promise<(ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]>;
29
29
  values(): Promise<V[]>;
30
- clear(): void;
31
- setQueryResult(queryHash: string, itemKeys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): void;
30
+ clear(): Promise<void>;
31
+ setQueryResult(queryHash: string, itemKeys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): Promise<void>;
32
32
  getQueryResult(queryHash: string): Promise<(ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[] | null>;
33
- hasQueryResult(queryHash: string): boolean;
34
- deleteQueryResult(queryHash: string): void;
35
- invalidateItemKeys(keys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): void;
33
+ hasQueryResult(queryHash: string): Promise<boolean>;
34
+ deleteQueryResult(queryHash: string): Promise<void>;
35
+ invalidateItemKeys(keys: (ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>)[]): Promise<void>;
36
36
  invalidateLocation(locations: LocKeyArray<L1, L2, L3, L4, L5> | []): Promise<void>;
37
- clearQueryResults(): void;
38
- getMetadata(key: string): CacheItemMetadata | null;
39
- setMetadata(key: string, metadata: CacheItemMetadata): void;
40
- deleteMetadata(key: string): void;
41
- getAllMetadata(): Map<string, CacheItemMetadata>;
42
- clearMetadata(): void;
43
- getCurrentSize(): {
37
+ clearQueryResults(): Promise<void>;
38
+ getMetadata(key: string): Promise<CacheItemMetadata | null>;
39
+ setMetadata(key: string, metadata: CacheItemMetadata): Promise<void>;
40
+ deleteMetadata(key: string): Promise<void>;
41
+ getAllMetadata(): Promise<Map<string, CacheItemMetadata>>;
42
+ clearMetadata(): Promise<void>;
43
+ getCurrentSize(): Promise<{
44
44
  itemCount: number;
45
45
  sizeBytes: number;
46
- };
47
- getSizeLimits(): {
46
+ }>;
47
+ getSizeLimits(): Promise<{
48
48
  maxItems: number | null;
49
49
  maxSizeBytes: number | null;
50
- };
50
+ }>;
51
51
  }
@@ -65,6 +65,7 @@ export declare class CacheEventEmitter<V extends Item<S, L1, L2, L3, L4, L5>, S
65
65
  private normalizeLocKey;
66
66
  /**
67
67
  * Check if two location arrays match
68
+ * Filter locations must be a prefix of event locations (in order)
68
69
  */
69
70
  private locationsMatch;
70
71
  /**
@@ -21,7 +21,7 @@ export declare class EvictionManager {
21
21
  * @param key - Item key
22
22
  * @param metadataProvider - Cache metadata provider
23
23
  */
24
- onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): void;
24
+ onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
25
25
  /**
26
26
  * Handle item addition - update metadata and perform eviction if needed
27
27
  * @param key - Item key
@@ -29,7 +29,7 @@ export declare class EvictionManager {
29
29
  * @param metadataProvider - Cache metadata provider
30
30
  * @returns Array of keys that were evicted
31
31
  */
32
- onItemAdded<T>(key: string, value: T, metadataProvider: CacheMapMetadataProvider): string[];
32
+ onItemAdded<T>(key: string, value: T, metadataProvider: CacheMapMetadataProvider): Promise<string[]>;
33
33
  /**
34
34
  * Handle item removal - clean up metadata
35
35
  * @param key - Item key
@@ -41,7 +41,7 @@ export declare class EvictionManager {
41
41
  * @param metadataProvider - Cache metadata provider
42
42
  * @returns Array of keys that were evicted
43
43
  */
44
- performEviction(metadataProvider: CacheMapMetadataProvider): string[];
44
+ performEviction(metadataProvider: CacheMapMetadataProvider): Promise<string[]>;
45
45
  /**
46
46
  * Check if eviction is supported (i.e., strategy is set)
47
47
  * @returns True if eviction is supported
@@ -33,43 +33,43 @@ export interface CacheMapMetadataProvider {
33
33
  * @param key - Item key
34
34
  * @returns Metadata if exists, null otherwise
35
35
  */
36
- getMetadata(key: string): CacheItemMetadata | null;
36
+ getMetadata(key: string): Promise<CacheItemMetadata | null>;
37
37
  /**
38
38
  * Set metadata for a specific item
39
39
  * @param key - Item key
40
40
  * @param metadata - Metadata to store
41
41
  */
42
- setMetadata(key: string, metadata: CacheItemMetadata): void;
42
+ setMetadata(key: string, metadata: CacheItemMetadata): Promise<void>;
43
43
  /**
44
44
  * Delete metadata for a specific item
45
45
  * @param key - Item key
46
46
  */
47
- deleteMetadata(key: string): void;
47
+ deleteMetadata(key: string): Promise<void>;
48
48
  /**
49
49
  * Get all metadata entries
50
50
  * @returns Map of all metadata entries
51
51
  */
52
- getAllMetadata(): Map<string, CacheItemMetadata>;
52
+ getAllMetadata(): Promise<Map<string, CacheItemMetadata>>;
53
53
  /**
54
54
  * Clear all metadata
55
55
  */
56
- clearMetadata(): void;
56
+ clearMetadata(): Promise<void>;
57
57
  /**
58
58
  * Get current cache size information
59
59
  * @returns Object with current size metrics
60
60
  */
61
- getCurrentSize(): {
61
+ getCurrentSize(): Promise<{
62
62
  itemCount: number;
63
63
  sizeBytes: number;
64
- };
64
+ }>;
65
65
  /**
66
66
  * Get cache size limits
67
67
  * @returns Object with size limits (null means unlimited)
68
68
  */
69
- getSizeLimits(): {
69
+ getSizeLimits(): Promise<{
70
70
  maxItems: number | null;
71
71
  maxSizeBytes: number | null;
72
- };
72
+ }>;
73
73
  }
74
74
  /**
75
75
  * Context provided to eviction strategies for decision making
@@ -102,26 +102,26 @@ export declare abstract class EvictionStrategy {
102
102
  * @param context - Current cache state and limits
103
103
  * @returns Array of keys to evict (empty array if no eviction needed)
104
104
  */
105
- abstract selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): string[];
105
+ abstract selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): Promise<string[]>;
106
106
  /**
107
107
  * Update metadata when an item is accessed
108
108
  * @param key - Item key
109
109
  * @param metadataProvider - Provider for accessing cache metadata
110
110
  */
111
- abstract onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): void;
111
+ abstract onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
112
112
  /**
113
113
  * Update metadata when an item is added
114
114
  * @param key - Item key
115
115
  * @param estimatedSize - Estimated size of the item in bytes
116
116
  * @param metadataProvider - Provider for accessing cache metadata
117
117
  */
118
- abstract onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): void;
118
+ abstract onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): Promise<void>;
119
119
  /**
120
120
  * Clean up when an item is removed
121
121
  * @param key - Item key
122
122
  * @param metadataProvider - Provider for accessing cache metadata
123
123
  */
124
- abstract onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): void;
124
+ abstract onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
125
125
  /**
126
126
  * Get the name/identifier of this eviction strategy
127
127
  * @returns String identifier for the strategy
@@ -13,11 +13,11 @@ export declare class ARCEvictionStrategy extends EvictionStrategy {
13
13
  private readonly maxGhostSize;
14
14
  private lastDecayTime;
15
15
  constructor(maxCacheSize?: number, config?: Partial<ARCConfig>);
16
- selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): string[];
16
+ selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): Promise<string[]>;
17
17
  private selectLRUFromItems;
18
- onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): void;
19
- onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): void;
20
- onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): void;
18
+ onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
19
+ onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): Promise<void>;
20
+ onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
21
21
  /**
22
22
  * Add key to recent ghost list with proper size management
23
23
  */
@@ -4,9 +4,9 @@ import { CacheMapMetadataProvider, EvictionContext, EvictionStrategy } from '../
4
4
  * Removes the oldest added item regardless of usage
5
5
  */
6
6
  export declare class FIFOEvictionStrategy extends EvictionStrategy {
7
- selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): string[];
8
- onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): void;
9
- onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): void;
10
- onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): void;
7
+ selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): Promise<string[]>;
8
+ onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
9
+ onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): Promise<void>;
10
+ onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
11
11
  getStrategyName(): string;
12
12
  }
@@ -11,10 +11,10 @@ export declare class LFUEvictionStrategy extends EvictionStrategy {
11
11
  private readonly sketch;
12
12
  private lastDecayTime;
13
13
  constructor(config?: Partial<LFUConfig>);
14
- selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): string[];
15
- onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): void;
16
- onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): void;
17
- onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): void;
14
+ selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): Promise<string[]>;
15
+ onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
16
+ onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): Promise<void>;
17
+ onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
18
18
  /**
19
19
  * Get the effective frequency for an item, applying real-time decay if needed
20
20
  */
@@ -4,9 +4,9 @@ import { CacheMapMetadataProvider, EvictionContext, EvictionStrategy } from '../
4
4
  * Removes the item that was accessed longest ago
5
5
  */
6
6
  export declare class LRUEvictionStrategy extends EvictionStrategy {
7
- selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): string[];
8
- onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): void;
9
- onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): void;
10
- onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): void;
7
+ selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): Promise<string[]>;
8
+ onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
9
+ onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): Promise<void>;
10
+ onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
11
11
  getStrategyName(): string;
12
12
  }
@@ -5,8 +5,8 @@ import { CacheMapMetadataProvider, EvictionContext, EvictionStrategy } from '../
5
5
  */
6
6
  export declare class MRUEvictionStrategy extends EvictionStrategy {
7
7
  getStrategyName(): string;
8
- selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): string[];
9
- onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): void;
10
- onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): void;
11
- onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): void;
8
+ selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): Promise<string[]>;
9
+ onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
10
+ onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): Promise<void>;
11
+ onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
12
12
  }
@@ -4,9 +4,9 @@ import { CacheMapMetadataProvider, EvictionContext, EvictionStrategy } from '../
4
4
  * Removes a random item from the cache
5
5
  */
6
6
  export declare class RandomEvictionStrategy extends EvictionStrategy {
7
- selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): string[];
8
- onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): void;
9
- onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): void;
10
- onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): void;
7
+ selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): Promise<string[]>;
8
+ onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
9
+ onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): Promise<void>;
10
+ onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
11
11
  getStrategyName(): string;
12
12
  }
@@ -15,7 +15,7 @@ export declare class TwoQueueEvictionStrategy extends EvictionStrategy {
15
15
  private readonly maxGhostSize;
16
16
  private lastDecayTime;
17
17
  constructor(maxCacheSize?: number, config?: Partial<TwoQueueConfig>);
18
- selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): string[];
18
+ selectForEviction(metadataProvider: CacheMapMetadataProvider, context: EvictionContext): Promise<string[]>;
19
19
  /**
20
20
  * Select eviction candidate from hot queue using traditional LRU
21
21
  */
@@ -24,9 +24,9 @@ export declare class TwoQueueEvictionStrategy extends EvictionStrategy {
24
24
  * Select eviction candidate from hot queue using frequency-weighted LRU
25
25
  */
26
26
  private selectFromHotQueueFrequencyWeighted;
27
- onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): void;
28
- onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): void;
29
- onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): void;
27
+ onItemAccessed(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
28
+ onItemAdded(key: string, estimatedSize: number, metadataProvider: CacheMapMetadataProvider): Promise<void>;
29
+ onItemRemoved(key: string, metadataProvider: CacheMapMetadataProvider): Promise<void>;
30
30
  /**
31
31
  * Determine if an item should be promoted from recent to hot queue
32
32
  */