@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.
- package/dist/CacheMap.d.ts +18 -18
- package/dist/browser/AsyncIndexDBCacheMap.d.ts +18 -1
- package/dist/browser/IndexDBCacheMap.d.ts +41 -43
- package/dist/browser/LocalStorageCacheMap.d.ts +18 -18
- package/dist/browser/SessionStorageCacheMap.d.ts +18 -18
- package/dist/events/CacheEventEmitter.d.ts +1 -0
- package/dist/eviction/EvictionManager.d.ts +3 -3
- package/dist/eviction/EvictionStrategy.d.ts +13 -13
- package/dist/eviction/strategies/ARCEvictionStrategy.d.ts +4 -4
- package/dist/eviction/strategies/FIFOEvictionStrategy.d.ts +4 -4
- package/dist/eviction/strategies/LFUEvictionStrategy.d.ts +4 -4
- package/dist/eviction/strategies/LRUEvictionStrategy.d.ts +4 -4
- package/dist/eviction/strategies/MRUEvictionStrategy.d.ts +4 -4
- package/dist/eviction/strategies/RandomEvictionStrategy.d.ts +4 -4
- package/dist/eviction/strategies/TwoQueueEvictionStrategy.d.ts +4 -4
- package/dist/index.js +750 -607
- package/dist/index.js.map +4 -4
- package/dist/memory/EnhancedMemoryCacheMap.d.ts +18 -18
- package/dist/memory/MemoryCacheMap.d.ts +18 -18
- package/dist/ttl/TTLManager.d.ts +10 -10
- package/package.json +7 -7
package/dist/CacheMap.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|
6
|
+
* Synchronous IndexedDB CacheMap wrapper implementation.
|
|
7
7
|
*
|
|
8
|
-
* This implementation provides
|
|
9
|
-
*
|
|
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
|
-
*
|
|
13
|
-
*
|
|
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
|
|
21
|
-
private
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
*/
|