@warlock.js/cache 4.0.48 → 4.0.59
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/cjs/cache-manager.d.ts +159 -0
- package/cjs/cache-manager.d.ts.map +1 -0
- package/cjs/cache-manager.js +312 -0
- package/cjs/cache-manager.js.map +1 -0
- package/cjs/drivers/base-cache-driver.d.ts +144 -0
- package/cjs/drivers/base-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/base-cache-driver.js +308 -0
- package/cjs/drivers/base-cache-driver.js.map +1 -0
- package/cjs/drivers/file-cache-driver.d.ts +45 -0
- package/cjs/drivers/file-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/file-cache-driver.js +133 -0
- package/cjs/drivers/file-cache-driver.js.map +1 -0
- package/cjs/drivers/index.d.ts +8 -0
- package/cjs/drivers/index.d.ts.map +1 -0
- package/cjs/drivers/lru-memory-cache-driver.d.ts +98 -0
- package/cjs/drivers/lru-memory-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/lru-memory-cache-driver.js +252 -0
- package/cjs/drivers/lru-memory-cache-driver.js.map +1 -0
- package/cjs/drivers/memory-cache-driver.d.ts +82 -0
- package/cjs/drivers/memory-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/memory-cache-driver.js +218 -0
- package/cjs/drivers/memory-cache-driver.js.map +1 -0
- package/cjs/drivers/memory-extended-cache-driver.d.ts +13 -0
- package/cjs/drivers/memory-extended-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/memory-extended-cache-driver.js +25 -0
- package/cjs/drivers/memory-extended-cache-driver.js.map +1 -0
- package/cjs/drivers/null-cache-driver.d.ts +58 -0
- package/cjs/drivers/null-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/null-cache-driver.js +84 -0
- package/cjs/drivers/null-cache-driver.js.map +1 -0
- package/cjs/drivers/redis-cache-driver.d.ts +57 -0
- package/cjs/drivers/redis-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/redis-cache-driver.js +222 -0
- package/cjs/drivers/redis-cache-driver.js.map +1 -0
- package/cjs/index.d.ts +6 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -42
- package/cjs/index.js.map +1 -1
- package/cjs/tagged-cache.d.ts +77 -0
- package/cjs/tagged-cache.d.ts.map +1 -0
- package/cjs/tagged-cache.js +160 -0
- package/cjs/tagged-cache.js.map +1 -0
- package/cjs/types.d.ts +381 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/types.js +36 -0
- package/cjs/types.js.map +1 -0
- package/cjs/utils.d.ts +50 -0
- package/cjs/utils.d.ts.map +1 -0
- package/cjs/utils.js +55 -0
- package/cjs/utils.js.map +1 -0
- package/esm/cache-manager.d.ts +159 -0
- package/esm/cache-manager.d.ts.map +1 -0
- package/esm/cache-manager.js +312 -0
- package/esm/cache-manager.js.map +1 -0
- package/esm/drivers/base-cache-driver.d.ts +144 -0
- package/esm/drivers/base-cache-driver.d.ts.map +1 -0
- package/esm/drivers/base-cache-driver.js +308 -0
- package/esm/drivers/base-cache-driver.js.map +1 -0
- package/esm/drivers/file-cache-driver.d.ts +45 -0
- package/esm/drivers/file-cache-driver.d.ts.map +1 -0
- package/esm/drivers/file-cache-driver.js +133 -0
- package/esm/drivers/file-cache-driver.js.map +1 -0
- package/esm/drivers/index.d.ts +8 -0
- package/esm/drivers/index.d.ts.map +1 -0
- package/esm/drivers/lru-memory-cache-driver.d.ts +98 -0
- package/esm/drivers/lru-memory-cache-driver.d.ts.map +1 -0
- package/esm/drivers/lru-memory-cache-driver.js +252 -0
- package/esm/drivers/lru-memory-cache-driver.js.map +1 -0
- package/esm/drivers/memory-cache-driver.d.ts +82 -0
- package/esm/drivers/memory-cache-driver.d.ts.map +1 -0
- package/esm/drivers/memory-cache-driver.js +218 -0
- package/esm/drivers/memory-cache-driver.js.map +1 -0
- package/esm/drivers/memory-extended-cache-driver.d.ts +13 -0
- package/esm/drivers/memory-extended-cache-driver.d.ts.map +1 -0
- package/esm/drivers/memory-extended-cache-driver.js +25 -0
- package/esm/drivers/memory-extended-cache-driver.js.map +1 -0
- package/esm/drivers/null-cache-driver.d.ts +58 -0
- package/esm/drivers/null-cache-driver.d.ts.map +1 -0
- package/esm/drivers/null-cache-driver.js +84 -0
- package/esm/drivers/null-cache-driver.js.map +1 -0
- package/esm/drivers/redis-cache-driver.d.ts +57 -0
- package/esm/drivers/redis-cache-driver.d.ts.map +1 -0
- package/esm/drivers/redis-cache-driver.js +222 -0
- package/esm/drivers/redis-cache-driver.js.map +1 -0
- package/esm/index.d.ts +6 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -7
- package/esm/index.js.map +1 -1
- package/esm/tagged-cache.d.ts +77 -0
- package/esm/tagged-cache.d.ts.map +1 -0
- package/esm/tagged-cache.js +160 -0
- package/esm/tagged-cache.js.map +1 -0
- package/esm/types.d.ts +381 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/types.js +36 -0
- package/esm/types.js.map +1 -0
- package/esm/utils.d.ts +50 -0
- package/esm/utils.d.ts.map +1 -0
- package/esm/utils.js +55 -0
- package/esm/utils.js.map +1 -0
- package/package.json +38 -51
package/cjs/utils.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';var reinforcements=require('@mongez/reinforcements');/**
|
|
2
|
+
* Make a proper key for the cache
|
|
3
|
+
*/
|
|
4
|
+
function parseCacheKey(key, options = {}) {
|
|
5
|
+
if (typeof key === "object") {
|
|
6
|
+
key = JSON.stringify(key);
|
|
7
|
+
}
|
|
8
|
+
// remove any curly braces and double quotes along with []
|
|
9
|
+
key = key.replace(/[{}"[\]]/g, "").replaceAll(/[:,]/g, ".");
|
|
10
|
+
const cachePrefix = typeof options.globalPrefix === "function" ? options.globalPrefix() : options.globalPrefix;
|
|
11
|
+
return reinforcements.rtrim(String(cachePrefix ? reinforcements.rtrim(cachePrefix, ".") + "." + key : key), ".");
|
|
12
|
+
}
|
|
13
|
+
exports.CACHE_FOR=void 0;
|
|
14
|
+
(function (CACHE_FOR) {
|
|
15
|
+
/**
|
|
16
|
+
* Cache for 30 Minutes (in seconds)
|
|
17
|
+
*/
|
|
18
|
+
CACHE_FOR[CACHE_FOR["HALF_HOUR"] = 1800] = "HALF_HOUR";
|
|
19
|
+
/**
|
|
20
|
+
* Cache for 1 Hour (in seconds)
|
|
21
|
+
*/
|
|
22
|
+
CACHE_FOR[CACHE_FOR["ONE_HOUR"] = 3600] = "ONE_HOUR";
|
|
23
|
+
/**
|
|
24
|
+
* Cache for 12 Hours (in seconds)
|
|
25
|
+
*/
|
|
26
|
+
CACHE_FOR[CACHE_FOR["HALF_DAY"] = 43200] = "HALF_DAY";
|
|
27
|
+
/**
|
|
28
|
+
* Cache for 24 Hours (in seconds)
|
|
29
|
+
*/
|
|
30
|
+
CACHE_FOR[CACHE_FOR["ONE_DAY"] = 86400] = "ONE_DAY";
|
|
31
|
+
/**
|
|
32
|
+
* Cache for 7 Days (in seconds)
|
|
33
|
+
*/
|
|
34
|
+
CACHE_FOR[CACHE_FOR["ONE_WEEK"] = 604800] = "ONE_WEEK";
|
|
35
|
+
/**
|
|
36
|
+
* Cache for 15 Days (in seconds)
|
|
37
|
+
*/
|
|
38
|
+
CACHE_FOR[CACHE_FOR["HALF_MONTH"] = 1296000] = "HALF_MONTH";
|
|
39
|
+
/**
|
|
40
|
+
* Cache for 30 Days (in seconds)
|
|
41
|
+
*/
|
|
42
|
+
CACHE_FOR[CACHE_FOR["ONE_MONTH"] = 2592000] = "ONE_MONTH";
|
|
43
|
+
/**
|
|
44
|
+
* Cache for 60 Days (in seconds)
|
|
45
|
+
*/
|
|
46
|
+
CACHE_FOR[CACHE_FOR["TWO_MONTHS"] = 5184000] = "TWO_MONTHS";
|
|
47
|
+
/**
|
|
48
|
+
* Cache for 180 Days (in seconds)
|
|
49
|
+
*/
|
|
50
|
+
CACHE_FOR[CACHE_FOR["SIX_MONTHS"] = 15768000] = "SIX_MONTHS";
|
|
51
|
+
/**
|
|
52
|
+
* Cache for 365 Days (in seconds)
|
|
53
|
+
*/
|
|
54
|
+
CACHE_FOR[CACHE_FOR["ONE_YEAR"] = 31536000] = "ONE_YEAR";
|
|
55
|
+
})(exports.CACHE_FOR || (exports.CACHE_FOR = {}));exports.parseCacheKey=parseCacheKey;//# sourceMappingURL=utils.js.map
|
package/cjs/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":["rtrim","CACHE_FOR"],"mappings":"kEAGA;;AAEG;SACa,aAAa,CAC3B,GAAa,EACb,UAAsD,EAAE,EAAA;AAExD,IAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3B,QAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAA;;AAGD,IAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE5D,MAAM,WAAW,GACf,OAAO,OAAO,CAAC,YAAY,KAAK,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAE7F,OAAOA,oBAAK,CAAC,MAAM,CAAC,WAAW,GAAGA,oBAAK,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACrF,CAAC;AAEWC,yBAyCX;AAzCD,CAAA,UAAY,SAAS,EAAA;AACnB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAgB,CAAA;AAChB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,GAAA,UAAe,CAAA;AACf;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAgB,CAAA;AAChB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAe,CAAA;AACf;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,MAAA,CAAA,GAAA,UAAiB,CAAA;AACjB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,OAAA,CAAA,GAAA,YAAoB,CAAA;AACpB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,OAAA,CAAA,GAAA,WAAmB,CAAA;AACnB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,OAAA,CAAA,GAAA,YAAoB,CAAA;AACpB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,QAAA,CAAA,GAAA,YAAqB,CAAA;AACrB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,QAAA,CAAA,GAAA,UAAmB,CAAA;AACrB,CAAC,EAzCWA,iBAAS,KAATA,iBAAS,GAyCpB,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import type { CacheConfigurations, CacheDriver, CacheEventHandler, CacheEventType, CacheKey, DriverClass, TaggedCacheDriver } from "./types";
|
|
2
|
+
export declare class CacheManager implements CacheDriver<any, any> {
|
|
3
|
+
/**
|
|
4
|
+
* Cache Driver
|
|
5
|
+
*/
|
|
6
|
+
currentDriver?: CacheDriver<any, any>;
|
|
7
|
+
/**
|
|
8
|
+
* Loaded drivers
|
|
9
|
+
*/
|
|
10
|
+
loadedDrivers: Record<string, CacheDriver<any, any>>;
|
|
11
|
+
/**
|
|
12
|
+
* Configurations list
|
|
13
|
+
*/
|
|
14
|
+
protected configurations: CacheConfigurations;
|
|
15
|
+
/**
|
|
16
|
+
* Global event listeners
|
|
17
|
+
*/
|
|
18
|
+
protected globalEventListeners: Map<CacheEventType, Set<CacheEventHandler>>;
|
|
19
|
+
/**
|
|
20
|
+
* {@inheritdoc}
|
|
21
|
+
*/
|
|
22
|
+
name: string;
|
|
23
|
+
/**
|
|
24
|
+
* {@inheritdoc}
|
|
25
|
+
*/
|
|
26
|
+
get client(): any;
|
|
27
|
+
/**
|
|
28
|
+
* Set the cache configurations
|
|
29
|
+
*/
|
|
30
|
+
setCacheConfigurations(configurations: CacheConfigurations): void;
|
|
31
|
+
/**
|
|
32
|
+
* Use the given driver
|
|
33
|
+
*/
|
|
34
|
+
use(driver: string | CacheDriver<any, any>): Promise<this>;
|
|
35
|
+
/**
|
|
36
|
+
* Ensure driver is initialized before operations
|
|
37
|
+
*/
|
|
38
|
+
protected ensureDriverInitialized(): void;
|
|
39
|
+
/**
|
|
40
|
+
* {@inheritdoc}
|
|
41
|
+
*/
|
|
42
|
+
get(key: CacheKey): Promise<any>;
|
|
43
|
+
/**
|
|
44
|
+
* Set a value in the cache
|
|
45
|
+
*
|
|
46
|
+
* @param key The cache key, could be an object or string
|
|
47
|
+
* @param value The value to be stored in the cache
|
|
48
|
+
* @param ttl The time to live in seconds
|
|
49
|
+
*/
|
|
50
|
+
set(key: CacheKey, value: any, ttl?: number): Promise<any>;
|
|
51
|
+
/**
|
|
52
|
+
* {@inheritdoc}
|
|
53
|
+
*/
|
|
54
|
+
remove(key: CacheKey): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* {@inheritdoc}
|
|
57
|
+
*/
|
|
58
|
+
removeNamespace(namespace: string): Promise<any>;
|
|
59
|
+
/**
|
|
60
|
+
* {@inheritdoc}
|
|
61
|
+
*/
|
|
62
|
+
flush(): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* {@inheritdoc}
|
|
65
|
+
*/
|
|
66
|
+
connect(): Promise<any>;
|
|
67
|
+
/**
|
|
68
|
+
* {@inheritdoc}
|
|
69
|
+
*/
|
|
70
|
+
parseKey(key: CacheKey): string;
|
|
71
|
+
/**
|
|
72
|
+
* {@inheritdoc}
|
|
73
|
+
*/
|
|
74
|
+
get options(): any;
|
|
75
|
+
/**
|
|
76
|
+
* {@inheritdoc}
|
|
77
|
+
*/
|
|
78
|
+
setOptions(options: Record<string, any>): any;
|
|
79
|
+
/**
|
|
80
|
+
* Get an instance of the cache driver
|
|
81
|
+
*/
|
|
82
|
+
driver(driverName: string): Promise<CacheDriver<any, any>>;
|
|
83
|
+
/**
|
|
84
|
+
* Initialize the cache manager and pick the default driver
|
|
85
|
+
*/
|
|
86
|
+
init(): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Load the given cache driver name
|
|
89
|
+
*/
|
|
90
|
+
load(driver: string): Promise<CacheDriver<any, any>>;
|
|
91
|
+
/**
|
|
92
|
+
* Register and bind a driver
|
|
93
|
+
*/
|
|
94
|
+
registerDriver(driverName: string, driverClass: DriverClass): void;
|
|
95
|
+
/**
|
|
96
|
+
* Disconnect the cache manager
|
|
97
|
+
*/
|
|
98
|
+
disconnect(): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* {@inheritdoc}
|
|
101
|
+
*/
|
|
102
|
+
has(key: CacheKey): Promise<boolean>;
|
|
103
|
+
/**
|
|
104
|
+
* {@inheritdoc}
|
|
105
|
+
*/
|
|
106
|
+
remember(key: CacheKey, ttl: number, callback: () => Promise<any>): Promise<any>;
|
|
107
|
+
/**
|
|
108
|
+
* {@inheritdoc}
|
|
109
|
+
*/
|
|
110
|
+
pull(key: CacheKey): Promise<any | null>;
|
|
111
|
+
/**
|
|
112
|
+
* {@inheritdoc}
|
|
113
|
+
*/
|
|
114
|
+
forever(key: CacheKey, value: any): Promise<any>;
|
|
115
|
+
/**
|
|
116
|
+
* {@inheritdoc}
|
|
117
|
+
*/
|
|
118
|
+
increment(key: CacheKey, value?: number): Promise<number>;
|
|
119
|
+
/**
|
|
120
|
+
* {@inheritdoc}
|
|
121
|
+
*/
|
|
122
|
+
decrement(key: CacheKey, value?: number): Promise<number>;
|
|
123
|
+
/**
|
|
124
|
+
* {@inheritdoc}
|
|
125
|
+
*/
|
|
126
|
+
many(keys: CacheKey[]): Promise<any[]>;
|
|
127
|
+
/**
|
|
128
|
+
* {@inheritdoc}
|
|
129
|
+
*/
|
|
130
|
+
setMany(items: Record<string, any>, ttl?: number): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* Register a global event listener (applies to all drivers)
|
|
133
|
+
*/
|
|
134
|
+
on(event: CacheEventType, handler: CacheEventHandler): this;
|
|
135
|
+
/**
|
|
136
|
+
* Remove a global event listener
|
|
137
|
+
*/
|
|
138
|
+
off(event: CacheEventType, handler: CacheEventHandler): this;
|
|
139
|
+
/**
|
|
140
|
+
* Register a one-time global event listener
|
|
141
|
+
*/
|
|
142
|
+
once(event: CacheEventType, handler: CacheEventHandler): this;
|
|
143
|
+
/**
|
|
144
|
+
* Attach global listeners to a driver
|
|
145
|
+
*/
|
|
146
|
+
protected attachGlobalListeners(driver: CacheDriver<any, any>): void;
|
|
147
|
+
/**
|
|
148
|
+
* Set if not exists (atomic operation)
|
|
149
|
+
* Returns true if key was set, false if key already existed
|
|
150
|
+
* Note: Only supported by drivers that implement setNX (e.g., Redis)
|
|
151
|
+
*/
|
|
152
|
+
setNX(key: CacheKey, value: any, ttl?: number): Promise<boolean>;
|
|
153
|
+
/**
|
|
154
|
+
* Create a tagged cache instance for the given tags
|
|
155
|
+
*/
|
|
156
|
+
tags(tags: string[]): TaggedCacheDriver;
|
|
157
|
+
}
|
|
158
|
+
export declare const cache: CacheManager;
|
|
159
|
+
//# sourceMappingURL=cache-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../src/cache-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import {CacheConfigurationError,CacheDriverNotInitializedError}from'./types.js';class CacheManager {
|
|
2
|
+
/**
|
|
3
|
+
* Cache Driver
|
|
4
|
+
*/
|
|
5
|
+
currentDriver;
|
|
6
|
+
/**
|
|
7
|
+
* Loaded drivers
|
|
8
|
+
*/
|
|
9
|
+
loadedDrivers = {};
|
|
10
|
+
/**
|
|
11
|
+
* Configurations list
|
|
12
|
+
*/
|
|
13
|
+
configurations = {
|
|
14
|
+
drivers: {},
|
|
15
|
+
options: {},
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Global event listeners
|
|
19
|
+
*/
|
|
20
|
+
globalEventListeners = new Map();
|
|
21
|
+
/**
|
|
22
|
+
* {@inheritdoc}
|
|
23
|
+
*/
|
|
24
|
+
name = "cacheManager";
|
|
25
|
+
/**
|
|
26
|
+
* {@inheritdoc}
|
|
27
|
+
*/
|
|
28
|
+
get client() {
|
|
29
|
+
return this.currentDriver?.client;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Set the cache configurations
|
|
33
|
+
*/
|
|
34
|
+
setCacheConfigurations(configurations) {
|
|
35
|
+
this.configurations.default = configurations.default;
|
|
36
|
+
this.configurations.drivers = configurations.drivers;
|
|
37
|
+
this.configurations.options = configurations.options;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Use the given driver
|
|
41
|
+
*/
|
|
42
|
+
async use(driver) {
|
|
43
|
+
if (typeof driver === "string") {
|
|
44
|
+
const driverInstance = await this.load(driver);
|
|
45
|
+
if (!driverInstance) {
|
|
46
|
+
throw new CacheConfigurationError(`Cache driver ${driver} is not found, please declare it in the cache drivers in the configurations list.`);
|
|
47
|
+
}
|
|
48
|
+
driver = driverInstance;
|
|
49
|
+
}
|
|
50
|
+
// Attach global listeners to the new driver
|
|
51
|
+
this.attachGlobalListeners(driver);
|
|
52
|
+
this.currentDriver = driver;
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Ensure driver is initialized before operations
|
|
57
|
+
*/
|
|
58
|
+
ensureDriverInitialized() {
|
|
59
|
+
if (!this.currentDriver) {
|
|
60
|
+
throw new CacheDriverNotInitializedError();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* {@inheritdoc}
|
|
65
|
+
*/
|
|
66
|
+
async get(key) {
|
|
67
|
+
this.ensureDriverInitialized();
|
|
68
|
+
return this.currentDriver.get(key);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Set a value in the cache
|
|
72
|
+
*
|
|
73
|
+
* @param key The cache key, could be an object or string
|
|
74
|
+
* @param value The value to be stored in the cache
|
|
75
|
+
* @param ttl The time to live in seconds
|
|
76
|
+
*/
|
|
77
|
+
async set(key, value, ttl) {
|
|
78
|
+
this.ensureDriverInitialized();
|
|
79
|
+
return this.currentDriver.set(key, value, ttl);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* {@inheritdoc}
|
|
83
|
+
*/
|
|
84
|
+
async remove(key) {
|
|
85
|
+
this.ensureDriverInitialized();
|
|
86
|
+
return this.currentDriver.remove(key);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* {@inheritdoc}
|
|
90
|
+
*/
|
|
91
|
+
async removeNamespace(namespace) {
|
|
92
|
+
this.ensureDriverInitialized();
|
|
93
|
+
return this.currentDriver.removeNamespace(namespace);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* {@inheritdoc}
|
|
97
|
+
*/
|
|
98
|
+
async flush() {
|
|
99
|
+
this.ensureDriverInitialized();
|
|
100
|
+
return this.currentDriver.flush();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* {@inheritdoc}
|
|
104
|
+
*/
|
|
105
|
+
async connect() {
|
|
106
|
+
this.ensureDriverInitialized();
|
|
107
|
+
return this.currentDriver.connect();
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* {@inheritdoc}
|
|
111
|
+
*/
|
|
112
|
+
parseKey(key) {
|
|
113
|
+
this.ensureDriverInitialized();
|
|
114
|
+
return this.currentDriver.parseKey(key);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* {@inheritdoc}
|
|
118
|
+
*/
|
|
119
|
+
get options() {
|
|
120
|
+
this.ensureDriverInitialized();
|
|
121
|
+
return this.currentDriver.options;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* {@inheritdoc}
|
|
125
|
+
*/
|
|
126
|
+
setOptions(options) {
|
|
127
|
+
this.ensureDriverInitialized();
|
|
128
|
+
return this.currentDriver.setOptions(options || {});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get an instance of the cache driver
|
|
132
|
+
*/
|
|
133
|
+
async driver(driverName) {
|
|
134
|
+
return this.loadedDrivers[driverName] || (await this.load(driverName));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Initialize the cache manager and pick the default driver
|
|
138
|
+
*/
|
|
139
|
+
async init() {
|
|
140
|
+
const defaultCacheDriverName = this.configurations.default;
|
|
141
|
+
if (!defaultCacheDriverName) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const driver = await this.driver(defaultCacheDriverName);
|
|
145
|
+
await this.use(driver);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Load the given cache driver name
|
|
149
|
+
*/
|
|
150
|
+
async load(driver) {
|
|
151
|
+
if (this.loadedDrivers[driver])
|
|
152
|
+
return this.loadedDrivers[driver];
|
|
153
|
+
const Driver = this.configurations.drivers[driver];
|
|
154
|
+
if (!Driver) {
|
|
155
|
+
throw new CacheConfigurationError(`Cache driver ${driver} is not found, please declare it in the cache drivers in the configurations list.`);
|
|
156
|
+
}
|
|
157
|
+
const driverInstance = new Driver();
|
|
158
|
+
driverInstance.setOptions(this.configurations.options[driver] || {});
|
|
159
|
+
await driverInstance.connect();
|
|
160
|
+
// Attach global listeners to newly loaded driver
|
|
161
|
+
this.attachGlobalListeners(driverInstance);
|
|
162
|
+
this.loadedDrivers[driver] = driverInstance;
|
|
163
|
+
return driverInstance;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Register and bind a driver
|
|
167
|
+
*/
|
|
168
|
+
registerDriver(driverName, driverClass) {
|
|
169
|
+
this.configurations.drivers[driverName] =
|
|
170
|
+
driverClass;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Disconnect the cache manager
|
|
174
|
+
*/
|
|
175
|
+
async disconnect() {
|
|
176
|
+
if (this.currentDriver) {
|
|
177
|
+
await this.currentDriver.disconnect();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* {@inheritdoc}
|
|
182
|
+
*/
|
|
183
|
+
async has(key) {
|
|
184
|
+
this.ensureDriverInitialized();
|
|
185
|
+
return this.currentDriver.has(key);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* {@inheritdoc}
|
|
189
|
+
*/
|
|
190
|
+
async remember(key, ttl, callback) {
|
|
191
|
+
this.ensureDriverInitialized();
|
|
192
|
+
return this.currentDriver.remember(key, ttl, callback);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* {@inheritdoc}
|
|
196
|
+
*/
|
|
197
|
+
async pull(key) {
|
|
198
|
+
this.ensureDriverInitialized();
|
|
199
|
+
return this.currentDriver.pull(key);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* {@inheritdoc}
|
|
203
|
+
*/
|
|
204
|
+
async forever(key, value) {
|
|
205
|
+
this.ensureDriverInitialized();
|
|
206
|
+
return this.currentDriver.forever(key, value);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* {@inheritdoc}
|
|
210
|
+
*/
|
|
211
|
+
async increment(key, value) {
|
|
212
|
+
this.ensureDriverInitialized();
|
|
213
|
+
return this.currentDriver.increment(key, value);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* {@inheritdoc}
|
|
217
|
+
*/
|
|
218
|
+
async decrement(key, value) {
|
|
219
|
+
this.ensureDriverInitialized();
|
|
220
|
+
return this.currentDriver.decrement(key, value);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* {@inheritdoc}
|
|
224
|
+
*/
|
|
225
|
+
async many(keys) {
|
|
226
|
+
this.ensureDriverInitialized();
|
|
227
|
+
return this.currentDriver.many(keys);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* {@inheritdoc}
|
|
231
|
+
*/
|
|
232
|
+
async setMany(items, ttl) {
|
|
233
|
+
this.ensureDriverInitialized();
|
|
234
|
+
return this.currentDriver.setMany(items, ttl);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Register a global event listener (applies to all drivers)
|
|
238
|
+
*/
|
|
239
|
+
on(event, handler) {
|
|
240
|
+
if (!this.globalEventListeners.has(event)) {
|
|
241
|
+
this.globalEventListeners.set(event, new Set());
|
|
242
|
+
}
|
|
243
|
+
this.globalEventListeners.get(event).add(handler);
|
|
244
|
+
// Also attach to current driver if exists
|
|
245
|
+
if (this.currentDriver) {
|
|
246
|
+
this.currentDriver.on(event, handler);
|
|
247
|
+
}
|
|
248
|
+
// Attach to all loaded drivers
|
|
249
|
+
for (const driver of Object.values(this.loadedDrivers)) {
|
|
250
|
+
driver.on(event, handler);
|
|
251
|
+
}
|
|
252
|
+
return this;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Remove a global event listener
|
|
256
|
+
*/
|
|
257
|
+
off(event, handler) {
|
|
258
|
+
const handlers = this.globalEventListeners.get(event);
|
|
259
|
+
if (handlers) {
|
|
260
|
+
handlers.delete(handler);
|
|
261
|
+
}
|
|
262
|
+
// Also remove from current driver
|
|
263
|
+
if (this.currentDriver) {
|
|
264
|
+
this.currentDriver.off(event, handler);
|
|
265
|
+
}
|
|
266
|
+
// Remove from all loaded drivers
|
|
267
|
+
for (const driver of Object.values(this.loadedDrivers)) {
|
|
268
|
+
driver.off(event, handler);
|
|
269
|
+
}
|
|
270
|
+
return this;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Register a one-time global event listener
|
|
274
|
+
*/
|
|
275
|
+
once(event, handler) {
|
|
276
|
+
const onceHandler = async (data) => {
|
|
277
|
+
await handler(data);
|
|
278
|
+
this.off(event, onceHandler);
|
|
279
|
+
};
|
|
280
|
+
return this.on(event, onceHandler);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Attach global listeners to a driver
|
|
284
|
+
*/
|
|
285
|
+
attachGlobalListeners(driver) {
|
|
286
|
+
for (const [event, handlers] of this.globalEventListeners) {
|
|
287
|
+
for (const handler of handlers) {
|
|
288
|
+
driver.on(event, handler);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Set if not exists (atomic operation)
|
|
294
|
+
* Returns true if key was set, false if key already existed
|
|
295
|
+
* Note: Only supported by drivers that implement setNX (e.g., Redis)
|
|
296
|
+
*/
|
|
297
|
+
async setNX(key, value, ttl) {
|
|
298
|
+
this.ensureDriverInitialized();
|
|
299
|
+
if (!this.currentDriver.setNX) {
|
|
300
|
+
throw new Error(`setNX is not supported by the current cache driver: ${this.currentDriver.name}`);
|
|
301
|
+
}
|
|
302
|
+
return this.currentDriver.setNX(key, value, ttl);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Create a tagged cache instance for the given tags
|
|
306
|
+
*/
|
|
307
|
+
tags(tags) {
|
|
308
|
+
this.ensureDriverInitialized();
|
|
309
|
+
return this.currentDriver.tags(tags);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
const cache = new CacheManager();export{CacheManager,cache};//# sourceMappingURL=cache-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.js","sources":["../src/cache-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { CacheData, CacheDriver, CacheEventData, CacheEventHandler, CacheEventType, CacheKey, CacheOperationType } from "../types";
|
|
2
|
+
export declare abstract class BaseCacheDriver<ClientType, Options extends Record<string, any>> implements CacheDriver<ClientType, Options> {
|
|
3
|
+
/**
|
|
4
|
+
* CLient driver
|
|
5
|
+
*/
|
|
6
|
+
protected clientDriver: ClientType;
|
|
7
|
+
/**
|
|
8
|
+
* {@inheritdoc}
|
|
9
|
+
*/
|
|
10
|
+
get client(): ClientType;
|
|
11
|
+
/**
|
|
12
|
+
* Set client driver
|
|
13
|
+
*/
|
|
14
|
+
set client(client: ClientType);
|
|
15
|
+
/**
|
|
16
|
+
* Get the cache driver name
|
|
17
|
+
*/
|
|
18
|
+
abstract name: string;
|
|
19
|
+
/**
|
|
20
|
+
* Options list
|
|
21
|
+
*/
|
|
22
|
+
options: Options;
|
|
23
|
+
/**
|
|
24
|
+
* Event listeners storage
|
|
25
|
+
*/
|
|
26
|
+
protected eventListeners: Map<CacheEventType, Set<CacheEventHandler>>;
|
|
27
|
+
/**
|
|
28
|
+
* {@inheritdoc}
|
|
29
|
+
*/
|
|
30
|
+
parseKey(key: CacheKey): string;
|
|
31
|
+
/**
|
|
32
|
+
* {@inheritdoc}
|
|
33
|
+
*/
|
|
34
|
+
setOptions(options: Options): this;
|
|
35
|
+
/**
|
|
36
|
+
* Register an event listener
|
|
37
|
+
*/
|
|
38
|
+
on(event: CacheEventType, handler: CacheEventHandler): this;
|
|
39
|
+
/**
|
|
40
|
+
* Remove an event listener
|
|
41
|
+
*/
|
|
42
|
+
off(event: CacheEventType, handler: CacheEventHandler): this;
|
|
43
|
+
/**
|
|
44
|
+
* Register a one-time event listener
|
|
45
|
+
*/
|
|
46
|
+
once(event: CacheEventType, handler: CacheEventHandler): this;
|
|
47
|
+
/**
|
|
48
|
+
* Emit an event to all registered listeners
|
|
49
|
+
*/
|
|
50
|
+
protected emit(event: CacheEventType, data?: Partial<CacheEventData>): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* {@inheritdoc}
|
|
53
|
+
*/
|
|
54
|
+
abstract removeNamespace(namespace: string): Promise<any>;
|
|
55
|
+
/**
|
|
56
|
+
* {@inheritdoc}
|
|
57
|
+
*/
|
|
58
|
+
abstract set(key: CacheKey, value: any, ttl?: number): Promise<any>;
|
|
59
|
+
/**
|
|
60
|
+
* {@inheritdoc}
|
|
61
|
+
*/
|
|
62
|
+
abstract get(key: CacheKey): Promise<any>;
|
|
63
|
+
/**
|
|
64
|
+
* {@inheritdoc}
|
|
65
|
+
*/
|
|
66
|
+
abstract remove(key: CacheKey): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* {@inheritdoc}
|
|
69
|
+
*/
|
|
70
|
+
abstract flush(): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* {@inheritdoc}
|
|
73
|
+
*/
|
|
74
|
+
has(key: CacheKey): Promise<boolean>;
|
|
75
|
+
/**
|
|
76
|
+
* Lock storage for preventing cache stampede
|
|
77
|
+
*/
|
|
78
|
+
protected locks: Map<string, Promise<any>>;
|
|
79
|
+
/**
|
|
80
|
+
* {@inheritdoc}
|
|
81
|
+
*/
|
|
82
|
+
remember(key: CacheKey, ttl: number, callback: () => Promise<any>): Promise<any>;
|
|
83
|
+
/**
|
|
84
|
+
* {@inheritdoc}
|
|
85
|
+
*/
|
|
86
|
+
pull(key: CacheKey): Promise<any | null>;
|
|
87
|
+
/**
|
|
88
|
+
* {@inheritdoc}
|
|
89
|
+
*/
|
|
90
|
+
forever(key: CacheKey, value: any): Promise<any>;
|
|
91
|
+
/**
|
|
92
|
+
* {@inheritdoc}
|
|
93
|
+
*/
|
|
94
|
+
increment(key: CacheKey, value?: number): Promise<number>;
|
|
95
|
+
/**
|
|
96
|
+
* {@inheritdoc}
|
|
97
|
+
*/
|
|
98
|
+
decrement(key: CacheKey, value?: number): Promise<number>;
|
|
99
|
+
/**
|
|
100
|
+
* {@inheritdoc}
|
|
101
|
+
*/
|
|
102
|
+
many(keys: CacheKey[]): Promise<any[]>;
|
|
103
|
+
/**
|
|
104
|
+
* {@inheritdoc}
|
|
105
|
+
*/
|
|
106
|
+
setMany(items: Record<string, any>, ttl?: number): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Log the operation
|
|
109
|
+
*/
|
|
110
|
+
protected log(operation: CacheOperationType, key?: string): any;
|
|
111
|
+
/**
|
|
112
|
+
* Log error message
|
|
113
|
+
*/
|
|
114
|
+
protected logError(message: string, error?: any): void;
|
|
115
|
+
/**
|
|
116
|
+
* Get time to live value
|
|
117
|
+
*/
|
|
118
|
+
get ttl(): any;
|
|
119
|
+
/**
|
|
120
|
+
* Get time to live value in milliseconds
|
|
121
|
+
*/
|
|
122
|
+
getExpiresAt(ttl?: number): number;
|
|
123
|
+
/**
|
|
124
|
+
* Prepare data for storage
|
|
125
|
+
*/
|
|
126
|
+
protected prepareDataForStorage(data: any, ttl?: number): CacheData;
|
|
127
|
+
/**
|
|
128
|
+
* Parse fetched data from cache
|
|
129
|
+
*/
|
|
130
|
+
protected parseCachedData(key: string, data: CacheData): Promise<any>;
|
|
131
|
+
/**
|
|
132
|
+
* {@inheritdoc}
|
|
133
|
+
*/
|
|
134
|
+
connect(): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* {@inheritdoc}
|
|
137
|
+
*/
|
|
138
|
+
disconnect(): Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* Create a tagged cache instance for the given tags
|
|
141
|
+
*/
|
|
142
|
+
tags(tags: string[]): any;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=base-cache-driver.d.ts.map
|