@warlock.js/cache 4.0.48 → 4.0.60

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.
Files changed (101) hide show
  1. package/cjs/cache-manager.d.ts +159 -0
  2. package/cjs/cache-manager.d.ts.map +1 -0
  3. package/cjs/cache-manager.js +312 -0
  4. package/cjs/cache-manager.js.map +1 -0
  5. package/cjs/drivers/base-cache-driver.d.ts +144 -0
  6. package/cjs/drivers/base-cache-driver.d.ts.map +1 -0
  7. package/cjs/drivers/base-cache-driver.js +308 -0
  8. package/cjs/drivers/base-cache-driver.js.map +1 -0
  9. package/cjs/drivers/file-cache-driver.d.ts +45 -0
  10. package/cjs/drivers/file-cache-driver.d.ts.map +1 -0
  11. package/cjs/drivers/file-cache-driver.js +133 -0
  12. package/cjs/drivers/file-cache-driver.js.map +1 -0
  13. package/cjs/drivers/index.d.ts +8 -0
  14. package/cjs/drivers/index.d.ts.map +1 -0
  15. package/cjs/drivers/lru-memory-cache-driver.d.ts +98 -0
  16. package/cjs/drivers/lru-memory-cache-driver.d.ts.map +1 -0
  17. package/cjs/drivers/lru-memory-cache-driver.js +252 -0
  18. package/cjs/drivers/lru-memory-cache-driver.js.map +1 -0
  19. package/cjs/drivers/memory-cache-driver.d.ts +82 -0
  20. package/cjs/drivers/memory-cache-driver.d.ts.map +1 -0
  21. package/cjs/drivers/memory-cache-driver.js +218 -0
  22. package/cjs/drivers/memory-cache-driver.js.map +1 -0
  23. package/cjs/drivers/memory-extended-cache-driver.d.ts +13 -0
  24. package/cjs/drivers/memory-extended-cache-driver.d.ts.map +1 -0
  25. package/cjs/drivers/memory-extended-cache-driver.js +25 -0
  26. package/cjs/drivers/memory-extended-cache-driver.js.map +1 -0
  27. package/cjs/drivers/null-cache-driver.d.ts +58 -0
  28. package/cjs/drivers/null-cache-driver.d.ts.map +1 -0
  29. package/cjs/drivers/null-cache-driver.js +84 -0
  30. package/cjs/drivers/null-cache-driver.js.map +1 -0
  31. package/cjs/drivers/redis-cache-driver.d.ts +57 -0
  32. package/cjs/drivers/redis-cache-driver.d.ts.map +1 -0
  33. package/cjs/drivers/redis-cache-driver.js +222 -0
  34. package/cjs/drivers/redis-cache-driver.js.map +1 -0
  35. package/cjs/index.d.ts +6 -0
  36. package/cjs/index.d.ts.map +1 -0
  37. package/cjs/index.js +1 -42
  38. package/cjs/index.js.map +1 -1
  39. package/cjs/tagged-cache.d.ts +77 -0
  40. package/cjs/tagged-cache.d.ts.map +1 -0
  41. package/cjs/tagged-cache.js +160 -0
  42. package/cjs/tagged-cache.js.map +1 -0
  43. package/cjs/types.d.ts +381 -0
  44. package/cjs/types.d.ts.map +1 -0
  45. package/cjs/types.js +36 -0
  46. package/cjs/types.js.map +1 -0
  47. package/cjs/utils.d.ts +50 -0
  48. package/cjs/utils.d.ts.map +1 -0
  49. package/cjs/utils.js +55 -0
  50. package/cjs/utils.js.map +1 -0
  51. package/esm/cache-manager.d.ts +159 -0
  52. package/esm/cache-manager.d.ts.map +1 -0
  53. package/esm/cache-manager.js +312 -0
  54. package/esm/cache-manager.js.map +1 -0
  55. package/esm/drivers/base-cache-driver.d.ts +144 -0
  56. package/esm/drivers/base-cache-driver.d.ts.map +1 -0
  57. package/esm/drivers/base-cache-driver.js +308 -0
  58. package/esm/drivers/base-cache-driver.js.map +1 -0
  59. package/esm/drivers/file-cache-driver.d.ts +45 -0
  60. package/esm/drivers/file-cache-driver.d.ts.map +1 -0
  61. package/esm/drivers/file-cache-driver.js +133 -0
  62. package/esm/drivers/file-cache-driver.js.map +1 -0
  63. package/esm/drivers/index.d.ts +8 -0
  64. package/esm/drivers/index.d.ts.map +1 -0
  65. package/esm/drivers/lru-memory-cache-driver.d.ts +98 -0
  66. package/esm/drivers/lru-memory-cache-driver.d.ts.map +1 -0
  67. package/esm/drivers/lru-memory-cache-driver.js +252 -0
  68. package/esm/drivers/lru-memory-cache-driver.js.map +1 -0
  69. package/esm/drivers/memory-cache-driver.d.ts +82 -0
  70. package/esm/drivers/memory-cache-driver.d.ts.map +1 -0
  71. package/esm/drivers/memory-cache-driver.js +218 -0
  72. package/esm/drivers/memory-cache-driver.js.map +1 -0
  73. package/esm/drivers/memory-extended-cache-driver.d.ts +13 -0
  74. package/esm/drivers/memory-extended-cache-driver.d.ts.map +1 -0
  75. package/esm/drivers/memory-extended-cache-driver.js +25 -0
  76. package/esm/drivers/memory-extended-cache-driver.js.map +1 -0
  77. package/esm/drivers/null-cache-driver.d.ts +58 -0
  78. package/esm/drivers/null-cache-driver.d.ts.map +1 -0
  79. package/esm/drivers/null-cache-driver.js +84 -0
  80. package/esm/drivers/null-cache-driver.js.map +1 -0
  81. package/esm/drivers/redis-cache-driver.d.ts +57 -0
  82. package/esm/drivers/redis-cache-driver.d.ts.map +1 -0
  83. package/esm/drivers/redis-cache-driver.js +222 -0
  84. package/esm/drivers/redis-cache-driver.js.map +1 -0
  85. package/esm/index.d.ts +6 -0
  86. package/esm/index.d.ts.map +1 -0
  87. package/esm/index.js +1 -7
  88. package/esm/index.js.map +1 -1
  89. package/esm/tagged-cache.d.ts +77 -0
  90. package/esm/tagged-cache.d.ts.map +1 -0
  91. package/esm/tagged-cache.js +160 -0
  92. package/esm/tagged-cache.js.map +1 -0
  93. package/esm/types.d.ts +381 -0
  94. package/esm/types.d.ts.map +1 -0
  95. package/esm/types.js +36 -0
  96. package/esm/types.js.map +1 -0
  97. package/esm/utils.d.ts +50 -0
  98. package/esm/utils.d.ts.map +1 -0
  99. package/esm/utils.js +55 -0
  100. package/esm/utils.js.map +1 -0
  101. package/package.json +38 -51
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-cache-driver.d.ts","sourceRoot":"","sources":["../../src/drivers/base-cache-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,308 @@
1
+ import {log}from'@warlock.js/logger';import {TaggedCache}from'../tagged-cache.js';import {parseCacheKey}from'../utils.js';const messages = {
2
+ clearing: "Clearing namespace",
3
+ cleared: "Namespace cleared",
4
+ fetching: "Fetching key",
5
+ fetched: "Key fetched",
6
+ caching: "Caching key",
7
+ cached: "Key cached",
8
+ flushing: "Flushing cache",
9
+ flushed: "Cache flushed",
10
+ removing: "Removing key",
11
+ removed: "Key removed",
12
+ expired: "Key expired",
13
+ notFound: "Key not found",
14
+ connecting: "Connecting to the cache engine.",
15
+ connected: "Connected to the cache engine.",
16
+ disconnecting: "Disconnecting from the cache engine.",
17
+ disconnected: "Disconnected from the cache engine.",
18
+ error: "Error occurred",
19
+ };
20
+ class BaseCacheDriver {
21
+ /**
22
+ * CLient driver
23
+ */
24
+ clientDriver;
25
+ /**
26
+ * {@inheritdoc}
27
+ */
28
+ get client() {
29
+ return (this.clientDriver || this);
30
+ }
31
+ /**
32
+ * Set client driver
33
+ */
34
+ set client(client) {
35
+ this.clientDriver = client;
36
+ }
37
+ /**
38
+ * Options list
39
+ */
40
+ options;
41
+ /**
42
+ * Event listeners storage
43
+ */
44
+ eventListeners = new Map();
45
+ /**
46
+ * {@inheritdoc}
47
+ */
48
+ parseKey(key) {
49
+ return parseCacheKey(key, this.options);
50
+ }
51
+ /**
52
+ * {@inheritdoc}
53
+ */
54
+ setOptions(options) {
55
+ this.options = options || {};
56
+ return this;
57
+ }
58
+ /**
59
+ * Register an event listener
60
+ */
61
+ on(event, handler) {
62
+ if (!this.eventListeners.has(event)) {
63
+ this.eventListeners.set(event, new Set());
64
+ }
65
+ this.eventListeners.get(event).add(handler);
66
+ return this;
67
+ }
68
+ /**
69
+ * Remove an event listener
70
+ */
71
+ off(event, handler) {
72
+ const handlers = this.eventListeners.get(event);
73
+ if (handlers) {
74
+ handlers.delete(handler);
75
+ }
76
+ return this;
77
+ }
78
+ /**
79
+ * Register a one-time event listener
80
+ */
81
+ once(event, handler) {
82
+ const onceHandler = async (data) => {
83
+ await handler(data);
84
+ this.off(event, onceHandler);
85
+ };
86
+ return this.on(event, onceHandler);
87
+ }
88
+ /**
89
+ * Emit an event to all registered listeners
90
+ */
91
+ async emit(event, data = {}) {
92
+ const handlers = this.eventListeners.get(event);
93
+ if (!handlers || handlers.size === 0)
94
+ return;
95
+ const eventData = {
96
+ driver: this.name,
97
+ ...data,
98
+ };
99
+ // Execute all handlers
100
+ const promises = [];
101
+ for (const handler of handlers) {
102
+ try {
103
+ const result = handler(eventData);
104
+ if (result instanceof Promise) {
105
+ promises.push(result);
106
+ }
107
+ }
108
+ catch (error) {
109
+ this.logError(`Error in event handler for '${event}'`, error);
110
+ }
111
+ }
112
+ // Wait for all async handlers
113
+ if (promises.length > 0) {
114
+ await Promise.allSettled(promises);
115
+ }
116
+ }
117
+ /**
118
+ * {@inheritdoc}
119
+ */
120
+ async has(key) {
121
+ const value = await this.get(key);
122
+ // Event is emitted by get() method
123
+ return value !== null;
124
+ }
125
+ /**
126
+ * Lock storage for preventing cache stampede
127
+ */
128
+ locks = new Map();
129
+ /**
130
+ * {@inheritdoc}
131
+ */
132
+ async remember(key, ttl, callback) {
133
+ const parsedKey = this.parseKey(key);
134
+ // Check cache first
135
+ const cachedValue = await this.get(key);
136
+ if (cachedValue !== null) {
137
+ return cachedValue;
138
+ }
139
+ // Check if another request is already computing this value
140
+ const existingLock = this.locks.get(parsedKey);
141
+ if (existingLock) {
142
+ return existingLock;
143
+ }
144
+ // Create lock and compute value
145
+ const promise = callback()
146
+ .then(async (result) => {
147
+ await this.set(key, result, ttl);
148
+ this.locks.delete(parsedKey);
149
+ return result;
150
+ })
151
+ .catch((err) => {
152
+ this.locks.delete(parsedKey);
153
+ throw err;
154
+ });
155
+ this.locks.set(parsedKey, promise);
156
+ return promise;
157
+ }
158
+ /**
159
+ * {@inheritdoc}
160
+ */
161
+ async pull(key) {
162
+ const value = await this.get(key);
163
+ if (value !== null) {
164
+ await this.remove(key);
165
+ }
166
+ // Events are emitted by get() and remove() methods
167
+ return value;
168
+ }
169
+ /**
170
+ * {@inheritdoc}
171
+ */
172
+ async forever(key, value) {
173
+ // Event is emitted by set() method
174
+ return this.set(key, value, Infinity);
175
+ }
176
+ /**
177
+ * {@inheritdoc}
178
+ */
179
+ async increment(key, value = 1) {
180
+ const current = (await this.get(key)) || 0;
181
+ if (typeof current !== "number") {
182
+ throw new Error(`Cannot increment non-numeric value for key: ${this.parseKey(key)}`);
183
+ }
184
+ const newValue = current + value;
185
+ await this.set(key, newValue);
186
+ return newValue;
187
+ }
188
+ /**
189
+ * {@inheritdoc}
190
+ */
191
+ async decrement(key, value = 1) {
192
+ return this.increment(key, -value);
193
+ }
194
+ /**
195
+ * {@inheritdoc}
196
+ */
197
+ async many(keys) {
198
+ return Promise.all(keys.map((key) => this.get(key)));
199
+ }
200
+ /**
201
+ * {@inheritdoc}
202
+ */
203
+ async setMany(items, ttl) {
204
+ await Promise.all(Object.entries(items).map(([key, value]) => this.set(key, value, ttl)));
205
+ }
206
+ /**
207
+ * Log the operation
208
+ */
209
+ log(operation, key) {
210
+ if (key) {
211
+ // this will be likely used with file cache driver as it will convert the dot to slash
212
+ // to make it consistent and not to confuse developers we will output the key by making sure it's a dot
213
+ key = key.replaceAll("/", ".");
214
+ }
215
+ if (operation == "notFound" || operation == "expired") {
216
+ return log.warn("cache:" + this.name, operation, (key ? key + " " : "") + messages[operation]);
217
+ }
218
+ if (operation.endsWith("ed")) {
219
+ return log.success("cache:" + this.name, operation, (key ? key + " " : "") + messages[operation]);
220
+ }
221
+ log.info("cache:" + this.name, operation, (key ? key + " " : "") + messages[operation]);
222
+ }
223
+ /**
224
+ * Log error message
225
+ */
226
+ logError(message, error) {
227
+ log.error("cache:" + this.name, "error", message);
228
+ if (error) {
229
+ console.log(error);
230
+ }
231
+ }
232
+ /**
233
+ * Get time to live value
234
+ */
235
+ get ttl() {
236
+ return this.options.ttl !== undefined ? this.options.ttl : Infinity;
237
+ }
238
+ /**
239
+ * Get time to live value in milliseconds
240
+ */
241
+ getExpiresAt(ttl = this.ttl) {
242
+ if (ttl) {
243
+ return new Date().getTime() + ttl * 1000;
244
+ }
245
+ }
246
+ /**
247
+ * Prepare data for storage
248
+ */
249
+ prepareDataForStorage(data, ttl) {
250
+ const preparedData = {
251
+ data,
252
+ };
253
+ if (ttl) {
254
+ preparedData.ttl = ttl;
255
+ preparedData.expiresAt = this.getExpiresAt(ttl);
256
+ }
257
+ return preparedData;
258
+ }
259
+ /**
260
+ * Parse fetched data from cache
261
+ */
262
+ async parseCachedData(key, data) {
263
+ this.log("fetched", key);
264
+ if (data.expiresAt && data.expiresAt < Date.now()) {
265
+ this.remove(key);
266
+ return null;
267
+ }
268
+ const value = data.data;
269
+ // Skip cloning for primitives (immutable types)
270
+ if (value === null || value === undefined) {
271
+ return value;
272
+ }
273
+ const type = typeof value;
274
+ if (type === "string" || type === "number" || type === "boolean") {
275
+ return value;
276
+ }
277
+ // Deep clone objects/arrays to prevent cache mutation
278
+ try {
279
+ return structuredClone(value);
280
+ }
281
+ catch (error) {
282
+ console.log(value);
283
+ this.logError(`Failed to clone cached value for ${key}, typeof value: ${typeof value}`, error);
284
+ throw error;
285
+ }
286
+ }
287
+ /**
288
+ * {@inheritdoc}
289
+ */
290
+ async connect() {
291
+ this.log("connecting");
292
+ this.log("connected");
293
+ await this.emit("connected");
294
+ }
295
+ /**
296
+ * {@inheritdoc}
297
+ */
298
+ async disconnect() {
299
+ this.log("disconnected");
300
+ await this.emit("disconnected");
301
+ }
302
+ /**
303
+ * Create a tagged cache instance for the given tags
304
+ */
305
+ tags(tags) {
306
+ return new TaggedCache(tags, this);
307
+ }
308
+ }export{BaseCacheDriver};//# sourceMappingURL=base-cache-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-cache-driver.js","sources":["../../src/drivers/base-cache-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { CacheDriver, CacheKey, FileCacheOptions } from "../types";
2
+ import { BaseCacheDriver } from "./base-cache-driver";
3
+ export declare class FileCacheDriver extends BaseCacheDriver<FileCacheDriver, FileCacheOptions> implements CacheDriver<FileCacheDriver, FileCacheOptions> {
4
+ /**
5
+ * {@inheritdoc}
6
+ */
7
+ name: string;
8
+ /**
9
+ * {@inheritdoc}
10
+ */
11
+ setOptions(options: FileCacheOptions): this;
12
+ /**
13
+ * Get the cache directory
14
+ */
15
+ get directory(): string;
16
+ /**
17
+ * Get file name
18
+ */
19
+ get fileName(): string;
20
+ /**
21
+ * {@inheritdoc}
22
+ */
23
+ removeNamespace(namespace: string): Promise<this>;
24
+ /**
25
+ * {@inheritdoc}
26
+ */
27
+ set(key: CacheKey, value: any, ttl?: number): Promise<this>;
28
+ /**
29
+ * {@inheritdoc}
30
+ */
31
+ get(key: CacheKey): Promise<any>;
32
+ /**
33
+ * {@inheritdoc}
34
+ */
35
+ remove(key: CacheKey): Promise<void>;
36
+ /**
37
+ * {@inheritdoc}
38
+ */
39
+ flush(): Promise<void>;
40
+ /**
41
+ * {@inheritdoc}
42
+ */
43
+ connect(): Promise<void>;
44
+ }
45
+ //# sourceMappingURL=file-cache-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-cache-driver.d.ts","sourceRoot":"","sources":["../../src/drivers/file-cache-driver.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,eACX,SAAQ,eAAe,CAAC,eAAe,EAAE,gBAAgB,CACzD,YAAW,WAAW,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAEzD;;OAEG;IACI,IAAI,SAAU;IAErB;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,gBAAgB;IAU3C;;OAEG;IACH,IAAW,SAAS,WAUnB;IAED;;OAEG;IACH,IAAW,QAAQ,WAQlB;IAED;;OAEG;IACU,eAAe,CAAC,SAAS,EAAE,MAAM;IAc9C;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAqBxD;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,QAAQ;IAgC9B;;OAEG;IACU,MAAM,CAAC,GAAG,EAAE,QAAQ;IAiBjC;;OAEG;IACU,KAAK;IAelB;;OAEG;IACU,OAAO;CAMrB"}
@@ -0,0 +1,133 @@
1
+ import {removeDirectoryAsync,ensureDirectoryAsync,putJsonFileAsync,getJsonFileAsync}from'@mongez/fs';import path from'path';import {CacheConfigurationError}from'../types.js';import {BaseCacheDriver}from'./base-cache-driver.js';class FileCacheDriver extends BaseCacheDriver {
2
+ /**
3
+ * {@inheritdoc}
4
+ */
5
+ name = "file";
6
+ /**
7
+ * {@inheritdoc}
8
+ */
9
+ setOptions(options) {
10
+ if (!options.directory) {
11
+ throw new CacheConfigurationError("File driver requires 'directory' option to be configured.");
12
+ }
13
+ return super.setOptions(options);
14
+ }
15
+ /**
16
+ * Get the cache directory
17
+ */
18
+ get directory() {
19
+ const directory = this.options.directory;
20
+ if (typeof directory === "function") {
21
+ return directory();
22
+ }
23
+ throw new CacheConfigurationError("Cache directory is not defined, please define it in the file driver options");
24
+ }
25
+ /**
26
+ * Get file name
27
+ */
28
+ get fileName() {
29
+ const fileName = this.options.fileName;
30
+ if (typeof fileName === "function") {
31
+ return fileName();
32
+ }
33
+ return "cache.json";
34
+ }
35
+ /**
36
+ * {@inheritdoc}
37
+ */
38
+ async removeNamespace(namespace) {
39
+ this.log("clearing", namespace);
40
+ try {
41
+ await removeDirectoryAsync(path.resolve(this.directory, namespace));
42
+ this.log("cleared", namespace);
43
+ }
44
+ catch (error) {
45
+ //
46
+ }
47
+ return this;
48
+ }
49
+ /**
50
+ * {@inheritdoc}
51
+ */
52
+ async set(key, value, ttl) {
53
+ key = this.parseKey(key);
54
+ this.log("caching", key);
55
+ const data = this.prepareDataForStorage(value, ttl);
56
+ const fileDirectory = path.resolve(this.directory, key);
57
+ await ensureDirectoryAsync(fileDirectory);
58
+ await putJsonFileAsync(path.resolve(fileDirectory, this.fileName), data);
59
+ this.log("cached", key);
60
+ // Emit set event
61
+ await this.emit("set", { key, value, ttl });
62
+ return this;
63
+ }
64
+ /**
65
+ * {@inheritdoc}
66
+ */
67
+ async get(key) {
68
+ const parsedKey = this.parseKey(key);
69
+ this.log("fetching", parsedKey);
70
+ const fileDirectory = path.resolve(this.directory, parsedKey);
71
+ try {
72
+ const value = await getJsonFileAsync(path.resolve(fileDirectory, this.fileName));
73
+ const result = await this.parseCachedData(parsedKey, value);
74
+ if (result === null) {
75
+ // Expired
76
+ await this.emit("miss", { key: parsedKey });
77
+ }
78
+ else {
79
+ // Emit hit event
80
+ await this.emit("hit", { key: parsedKey, value: result });
81
+ }
82
+ return result;
83
+ }
84
+ catch (error) {
85
+ this.log("notFound", parsedKey);
86
+ // Emit miss event
87
+ await this.emit("miss", { key: parsedKey });
88
+ this.remove(key);
89
+ return null;
90
+ }
91
+ }
92
+ /**
93
+ * {@inheritdoc}
94
+ */
95
+ async remove(key) {
96
+ const parsedKey = this.parseKey(key);
97
+ this.log("removing", parsedKey);
98
+ const fileDirectory = path.resolve(this.directory, parsedKey);
99
+ try {
100
+ await removeDirectoryAsync(fileDirectory);
101
+ this.log("removed", parsedKey);
102
+ // Emit removed event
103
+ await this.emit("removed", { key: parsedKey });
104
+ }
105
+ catch (error) {
106
+ //
107
+ }
108
+ }
109
+ /**
110
+ * {@inheritdoc}
111
+ */
112
+ async flush() {
113
+ this.log("flushing");
114
+ if (this.options.globalPrefix) {
115
+ await this.removeNamespace("");
116
+ }
117
+ else {
118
+ await removeDirectoryAsync(this.directory);
119
+ }
120
+ this.log("flushed");
121
+ // Emit flushed event
122
+ await this.emit("flushed");
123
+ }
124
+ /**
125
+ * {@inheritdoc}
126
+ */
127
+ async connect() {
128
+ this.log("connecting");
129
+ await ensureDirectoryAsync(this.directory);
130
+ this.log("connected");
131
+ await this.emit("connected");
132
+ }
133
+ }export{FileCacheDriver};//# sourceMappingURL=file-cache-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-cache-driver.js","sources":["../../src/drivers/file-cache-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from "./base-cache-driver";
2
+ export * from "./file-cache-driver";
3
+ export * from "./lru-memory-cache-driver";
4
+ export * from "./memory-cache-driver";
5
+ export * from "./memory-extended-cache-driver";
6
+ export * from "./null-cache-driver";
7
+ export * from "./redis-cache-driver";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,98 @@
1
+ /// <reference types="node" />
2
+ import type { CacheDriver, CacheKey, LRUMemoryCacheOptions } from "../types";
3
+ import { BaseCacheDriver } from "./base-cache-driver";
4
+ declare class CacheNode {
5
+ key: string;
6
+ value: any;
7
+ next: CacheNode | null;
8
+ prev: CacheNode | null;
9
+ expiresAt?: number;
10
+ constructor(key: string, value: any, ttl?: number);
11
+ get isExpired(): boolean;
12
+ }
13
+ /**
14
+ * LRU Memory Cache Driver
15
+ * The concept of LRU is to remove the least recently used data
16
+ * whenever the cache is full
17
+ * The question that resides here is how to tell the cache is full?
18
+ */
19
+ export declare class LRUMemoryCacheDriver extends BaseCacheDriver<LRUMemoryCacheDriver, LRUMemoryCacheOptions> implements CacheDriver<LRUMemoryCacheDriver, LRUMemoryCacheOptions> {
20
+ /**
21
+ * {@inheritdoc}
22
+ */
23
+ name: string;
24
+ /**
25
+ * Cache map
26
+ */
27
+ protected cache: Map<string, CacheNode>;
28
+ /**
29
+ * Head of the cache
30
+ */
31
+ protected head: CacheNode;
32
+ /**
33
+ * Tail of the cache
34
+ */
35
+ protected tail: CacheNode;
36
+ /**
37
+ * Cleanup interval reference
38
+ */
39
+ protected cleanupInterval?: NodeJS.Timeout;
40
+ /**
41
+ * {@inheritdoc}
42
+ */
43
+ constructor();
44
+ /**
45
+ * Initialize the cache
46
+ */
47
+ init(): void;
48
+ /**
49
+ * Start the cleanup process for expired items
50
+ */
51
+ startCleanup(): void;
52
+ /**
53
+ * {@inheritdoc}
54
+ */
55
+ removeNamespace(_namespace: string): Promise<void>;
56
+ /**
57
+ * {@inheritdoc}
58
+ */
59
+ set(key: CacheKey, value: any, ttl?: number): Promise<this>;
60
+ /**
61
+ * Move the node to the head
62
+ */
63
+ protected moveHead(node: CacheNode): void;
64
+ /**
65
+ * Remove the node from the cache
66
+ */
67
+ protected removeNode(node: CacheNode): void;
68
+ /**
69
+ * Add the node to the head
70
+ */
71
+ protected addNode(node: CacheNode): void;
72
+ /**
73
+ * Remove the tail node
74
+ */
75
+ protected removeTail(): void;
76
+ /**
77
+ * {@inheritdoc}
78
+ */
79
+ get(key: CacheKey): Promise<any>;
80
+ /**
81
+ * {@inheritdoc}
82
+ */
83
+ remove(key: CacheKey): Promise<void>;
84
+ /**
85
+ * {@inheritdoc}
86
+ */
87
+ flush(): Promise<void>;
88
+ /**
89
+ * Get lru capacity
90
+ */
91
+ get capacity(): number;
92
+ /**
93
+ * {@inheritdoc}
94
+ */
95
+ disconnect(): Promise<void>;
96
+ }
97
+ export {};
98
+ //# sourceMappingURL=lru-memory-cache-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lru-memory-cache-driver.d.ts","sourceRoot":"","sources":["../../src/drivers/lru-memory-cache-driver.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,cAAM,SAAS;IAKJ,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,GAAG;IALZ,IAAI,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC9B,IAAI,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEjB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,EACjB,GAAG,CAAC,EAAE,MAAM;IAOd,IAAW,SAAS,IAAI,OAAO,CAE9B;CACF;AAED;;;;;GAKG;AACH,qBAAa,oBACX,SAAQ,eAAe,CAAC,oBAAoB,EAAE,qBAAqB,CACnE,YAAW,WAAW,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;IAEnE;;OAEG;IACI,IAAI,SAAS;IAEpB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAEpD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,CAA2B;IAEpD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,CAA2B;IAEpD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAE3C;;OAEG;;IAQH;;OAEG;IACI,IAAI;IAKX;;OAEG;IACI,YAAY;IAgCnB;;OAEG;IACU,eAAe,CAAC,UAAU,EAAE,MAAM;IAI/C;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAuCxD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS;IAKlC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS;IAKpC;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS;IAOjC;;OAEG;IACH,SAAS,CAAC,UAAU;IAQpB;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,QAAQ;IAuD9B;;OAEG;IACU,MAAM,CAAC,GAAG,EAAE,QAAQ;IAkBjC;;OAEG;IACU,KAAK;IAalB;;OAEG;IACH,IAAW,QAAQ,WAElB;IAED;;OAEG;IACU,UAAU;CASxB"}