@warlock.js/cache 3.0.18 → 3.0.21
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 +72 -7
- package/cjs/cache-manager.d.ts.map +1 -1
- package/cjs/cache-manager.js +175 -15
- package/cjs/cache-manager.js.map +1 -1
- package/cjs/drivers/base-cache-driver.d.ts +70 -7
- package/cjs/drivers/base-cache-driver.d.ts.map +1 -1
- package/cjs/drivers/base-cache-driver.js +189 -9
- package/cjs/drivers/base-cache-driver.js.map +1 -1
- package/cjs/drivers/file-cache-driver.d.ts +8 -5
- package/cjs/drivers/file-cache-driver.d.ts.map +1 -1
- package/cjs/drivers/file-cache-driver.js +34 -7
- package/cjs/drivers/file-cache-driver.js.map +1 -1
- package/cjs/drivers/index.d.ts +0 -1
- package/cjs/drivers/index.d.ts.map +1 -1
- package/cjs/drivers/lru-memory-cache-driver.d.ts +20 -6
- package/cjs/drivers/lru-memory-cache-driver.d.ts.map +1 -1
- package/cjs/drivers/lru-memory-cache-driver.js +109 -8
- package/cjs/drivers/lru-memory-cache-driver.js.map +1 -1
- package/cjs/drivers/memory-cache-driver.d.ts +34 -5
- package/cjs/drivers/memory-cache-driver.d.ts.map +1 -1
- package/cjs/drivers/memory-cache-driver.js +116 -8
- package/cjs/drivers/memory-cache-driver.js.map +1 -1
- package/cjs/drivers/memory-extended-cache-driver.d.ts +2 -3
- package/cjs/drivers/memory-extended-cache-driver.d.ts.map +1 -1
- package/cjs/drivers/memory-extended-cache-driver.js +1 -1
- package/cjs/drivers/memory-extended-cache-driver.js.map +1 -1
- package/cjs/drivers/null-cache-driver.d.ts +5 -5
- package/cjs/drivers/null-cache-driver.d.ts.map +1 -1
- package/cjs/drivers/null-cache-driver.js +1 -1
- package/cjs/drivers/null-cache-driver.js.map +1 -1
- package/cjs/drivers/redis-cache-driver.d.ts +23 -5
- package/cjs/drivers/redis-cache-driver.d.ts.map +1 -1
- package/cjs/drivers/redis-cache-driver.js +120 -10
- package/cjs/drivers/redis-cache-driver.js.map +1 -1
- package/cjs/index.d.ts +1 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +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 +186 -19
- package/cjs/types.d.ts.map +1 -1
- package/cjs/types.js +36 -0
- package/cjs/types.js.map +1 -0
- package/cjs/utils.d.ts +3 -3
- package/cjs/utils.d.ts.map +1 -1
- package/cjs/utils.js +13 -13
- package/cjs/utils.js.map +1 -1
- package/esm/cache-manager.d.ts +72 -7
- package/esm/cache-manager.d.ts.map +1 -1
- package/esm/cache-manager.js +175 -15
- package/esm/cache-manager.js.map +1 -1
- package/esm/drivers/base-cache-driver.d.ts +70 -7
- package/esm/drivers/base-cache-driver.d.ts.map +1 -1
- package/esm/drivers/base-cache-driver.js +189 -9
- package/esm/drivers/base-cache-driver.js.map +1 -1
- package/esm/drivers/file-cache-driver.d.ts +8 -5
- package/esm/drivers/file-cache-driver.d.ts.map +1 -1
- package/esm/drivers/file-cache-driver.js +34 -7
- package/esm/drivers/file-cache-driver.js.map +1 -1
- package/esm/drivers/index.d.ts +0 -1
- package/esm/drivers/index.d.ts.map +1 -1
- package/esm/drivers/lru-memory-cache-driver.d.ts +20 -6
- package/esm/drivers/lru-memory-cache-driver.d.ts.map +1 -1
- package/esm/drivers/lru-memory-cache-driver.js +109 -8
- package/esm/drivers/lru-memory-cache-driver.js.map +1 -1
- package/esm/drivers/memory-cache-driver.d.ts +34 -5
- package/esm/drivers/memory-cache-driver.d.ts.map +1 -1
- package/esm/drivers/memory-cache-driver.js +117 -9
- package/esm/drivers/memory-cache-driver.js.map +1 -1
- package/esm/drivers/memory-extended-cache-driver.d.ts +2 -3
- package/esm/drivers/memory-extended-cache-driver.d.ts.map +1 -1
- package/esm/drivers/memory-extended-cache-driver.js +1 -1
- package/esm/drivers/memory-extended-cache-driver.js.map +1 -1
- package/esm/drivers/null-cache-driver.d.ts +5 -5
- package/esm/drivers/null-cache-driver.d.ts.map +1 -1
- package/esm/drivers/null-cache-driver.js +1 -1
- package/esm/drivers/null-cache-driver.js.map +1 -1
- package/esm/drivers/redis-cache-driver.d.ts +23 -5
- package/esm/drivers/redis-cache-driver.d.ts.map +1 -1
- package/esm/drivers/redis-cache-driver.js +120 -10
- package/esm/drivers/redis-cache-driver.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +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 +186 -19
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js +36 -0
- package/esm/types.js.map +1 -0
- package/esm/utils.d.ts +3 -3
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +13 -13
- package/esm/utils.js.map +1 -1
- package/package.json +2 -2
- package/cjs/drivers/database-cache-driver.d.ts +0 -39
- package/cjs/drivers/database-cache-driver.d.ts.map +0 -1
- package/cjs/drivers/database-cache-driver.js +0 -92
- package/cjs/drivers/database-cache-driver.js.map +0 -1
- package/esm/drivers/database-cache-driver.d.ts +0 -39
- package/esm/drivers/database-cache-driver.d.ts.map +0 -1
- package/esm/drivers/database-cache-driver.js +0 -92
- package/esm/drivers/database-cache-driver.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {log}from'@warlock.js/logger';import {parseCacheKey}from'../utils.js';const messages = {
|
|
2
2
|
clearing: "Clearing namespace",
|
|
3
3
|
cleared: "Namespace cleared",
|
|
4
4
|
fetching: "Fetching key",
|
|
@@ -37,12 +37,16 @@ class BaseCacheDriver {
|
|
|
37
37
|
/**
|
|
38
38
|
* Options list
|
|
39
39
|
*/
|
|
40
|
-
options
|
|
40
|
+
options;
|
|
41
|
+
/**
|
|
42
|
+
* Event listeners storage
|
|
43
|
+
*/
|
|
44
|
+
eventListeners = new Map();
|
|
41
45
|
/**
|
|
42
46
|
* {@inheritdoc}
|
|
43
47
|
*/
|
|
44
|
-
|
|
45
|
-
return
|
|
48
|
+
parseKey(key) {
|
|
49
|
+
return parseCacheKey(key, this.options);
|
|
46
50
|
}
|
|
47
51
|
/**
|
|
48
52
|
* {@inheritdoc}
|
|
@@ -51,6 +55,154 @@ class BaseCacheDriver {
|
|
|
51
55
|
this.options = options || {};
|
|
52
56
|
return this;
|
|
53
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
|
+
}
|
|
54
206
|
/**
|
|
55
207
|
* Log the operation
|
|
56
208
|
*/
|
|
@@ -61,13 +213,22 @@ class BaseCacheDriver {
|
|
|
61
213
|
key = key.replaceAll("/", ".");
|
|
62
214
|
}
|
|
63
215
|
if (operation == "notFound" || operation == "expired") {
|
|
64
|
-
return log.
|
|
216
|
+
return log.warn("cache:" + this.name, operation, (key ? key + " " : "") + messages[operation]);
|
|
65
217
|
}
|
|
66
218
|
if (operation.endsWith("ed")) {
|
|
67
219
|
return log.success("cache:" + this.name, operation, (key ? key + " " : "") + messages[operation]);
|
|
68
220
|
}
|
|
69
221
|
log.info("cache:" + this.name, operation, (key ? key + " " : "") + messages[operation]);
|
|
70
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
|
+
}
|
|
71
232
|
/**
|
|
72
233
|
* Get time to live value
|
|
73
234
|
*/
|
|
@@ -104,13 +265,21 @@ class BaseCacheDriver {
|
|
|
104
265
|
this.remove(key);
|
|
105
266
|
return null;
|
|
106
267
|
}
|
|
107
|
-
|
|
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
|
|
108
278
|
try {
|
|
109
|
-
return
|
|
279
|
+
return structuredClone(value);
|
|
110
280
|
}
|
|
111
281
|
catch (error) {
|
|
112
|
-
|
|
113
|
-
console.error(error);
|
|
282
|
+
this.logError(`Failed to clone cached value for ${key}`, error);
|
|
114
283
|
throw error;
|
|
115
284
|
}
|
|
116
285
|
}
|
|
@@ -120,11 +289,22 @@ class BaseCacheDriver {
|
|
|
120
289
|
async connect() {
|
|
121
290
|
this.log("connecting");
|
|
122
291
|
this.log("connected");
|
|
292
|
+
await this.emit("connected");
|
|
123
293
|
}
|
|
124
294
|
/**
|
|
125
295
|
* {@inheritdoc}
|
|
126
296
|
*/
|
|
127
297
|
async disconnect() {
|
|
128
298
|
this.log("disconnected");
|
|
299
|
+
await this.emit("disconnected");
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Create a tagged cache instance for the given tags
|
|
303
|
+
*/
|
|
304
|
+
tags(tags) {
|
|
305
|
+
// Lazy import to avoid circular dependency
|
|
306
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
307
|
+
const { TaggedCache } = require("../tagged-cache");
|
|
308
|
+
return new TaggedCache(tags, this);
|
|
129
309
|
}
|
|
130
310
|
}export{BaseCacheDriver};//# sourceMappingURL=base-cache-driver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-cache-driver.js","sources":["../../src/drivers/base-cache-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-cache-driver.js","sources":["../../src/drivers/base-cache-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { CacheDriver, FileCacheOptions } from "../types";
|
|
1
|
+
import type { CacheDriver, CacheKey, FileCacheOptions } from "../types";
|
|
3
2
|
import { BaseCacheDriver } from "./base-cache-driver";
|
|
4
3
|
export declare class FileCacheDriver extends BaseCacheDriver<FileCacheDriver, FileCacheOptions> implements CacheDriver<FileCacheDriver, FileCacheOptions> {
|
|
5
4
|
/**
|
|
6
5
|
* {@inheritdoc}
|
|
7
6
|
*/
|
|
8
7
|
name: string;
|
|
8
|
+
/**
|
|
9
|
+
* {@inheritdoc}
|
|
10
|
+
*/
|
|
11
|
+
setOptions(options: FileCacheOptions): this;
|
|
9
12
|
/**
|
|
10
13
|
* Get the cache directory
|
|
11
14
|
*/
|
|
@@ -21,15 +24,15 @@ export declare class FileCacheDriver extends BaseCacheDriver<FileCacheDriver, Fi
|
|
|
21
24
|
/**
|
|
22
25
|
* {@inheritdoc}
|
|
23
26
|
*/
|
|
24
|
-
set(key:
|
|
27
|
+
set(key: CacheKey, value: any, ttl?: number): Promise<this>;
|
|
25
28
|
/**
|
|
26
29
|
* {@inheritdoc}
|
|
27
30
|
*/
|
|
28
|
-
get(key:
|
|
31
|
+
get(key: CacheKey): Promise<any>;
|
|
29
32
|
/**
|
|
30
33
|
* {@inheritdoc}
|
|
31
34
|
*/
|
|
32
|
-
remove(key:
|
|
35
|
+
remove(key: CacheKey): Promise<void>;
|
|
33
36
|
/**
|
|
34
37
|
* {@inheritdoc}
|
|
35
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-cache-driver.d.ts","sourceRoot":"","sources":["../../src/drivers/file-cache-driver.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import {removeDirectoryAsync,ensureDirectoryAsync,putJsonFileAsync,getJsonFileAsync}from'@mongez/fs';import path from'path';import {BaseCacheDriver}from'./base-cache-driver.js';class FileCacheDriver extends BaseCacheDriver {
|
|
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
2
|
/**
|
|
3
3
|
* {@inheritdoc}
|
|
4
4
|
*/
|
|
5
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
|
+
}
|
|
6
15
|
/**
|
|
7
16
|
* Get the cache directory
|
|
8
17
|
*/
|
|
@@ -11,7 +20,7 @@ import {removeDirectoryAsync,ensureDirectoryAsync,putJsonFileAsync,getJsonFileAs
|
|
|
11
20
|
if (typeof directory === "function") {
|
|
12
21
|
return directory();
|
|
13
22
|
}
|
|
14
|
-
throw new
|
|
23
|
+
throw new CacheConfigurationError("Cache directory is not defined, please define it in the file driver options");
|
|
15
24
|
}
|
|
16
25
|
/**
|
|
17
26
|
* Get file name
|
|
@@ -27,7 +36,7 @@ import {removeDirectoryAsync,ensureDirectoryAsync,putJsonFileAsync,getJsonFileAs
|
|
|
27
36
|
* {@inheritdoc}
|
|
28
37
|
*/
|
|
29
38
|
async removeNamespace(namespace) {
|
|
30
|
-
this.log("
|
|
39
|
+
this.log("clearing", namespace);
|
|
31
40
|
try {
|
|
32
41
|
await removeDirectoryAsync(path.resolve(this.directory, namespace));
|
|
33
42
|
this.log("cleared", namespace);
|
|
@@ -41,28 +50,41 @@ import {removeDirectoryAsync,ensureDirectoryAsync,putJsonFileAsync,getJsonFileAs
|
|
|
41
50
|
* {@inheritdoc}
|
|
42
51
|
*/
|
|
43
52
|
async set(key, value, ttl) {
|
|
44
|
-
key =
|
|
53
|
+
key = this.parseKey(key);
|
|
45
54
|
this.log("caching", key);
|
|
46
55
|
const data = this.prepareDataForStorage(value, ttl);
|
|
47
56
|
const fileDirectory = path.resolve(this.directory, key);
|
|
48
57
|
await ensureDirectoryAsync(fileDirectory);
|
|
49
58
|
await putJsonFileAsync(path.resolve(fileDirectory, this.fileName), data);
|
|
50
59
|
this.log("cached", key);
|
|
60
|
+
// Emit set event
|
|
61
|
+
await this.emit("set", { key, value, ttl });
|
|
51
62
|
return this;
|
|
52
63
|
}
|
|
53
64
|
/**
|
|
54
65
|
* {@inheritdoc}
|
|
55
66
|
*/
|
|
56
67
|
async get(key) {
|
|
57
|
-
const parsedKey =
|
|
68
|
+
const parsedKey = this.parseKey(key);
|
|
58
69
|
this.log("fetching", parsedKey);
|
|
59
70
|
const fileDirectory = path.resolve(this.directory, parsedKey);
|
|
60
71
|
try {
|
|
61
72
|
const value = await getJsonFileAsync(path.resolve(fileDirectory, this.fileName));
|
|
62
|
-
|
|
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;
|
|
63
83
|
}
|
|
64
84
|
catch (error) {
|
|
65
85
|
this.log("notFound", parsedKey);
|
|
86
|
+
// Emit miss event
|
|
87
|
+
await this.emit("miss", { key: parsedKey });
|
|
66
88
|
this.remove(key);
|
|
67
89
|
return null;
|
|
68
90
|
}
|
|
@@ -71,12 +93,14 @@ import {removeDirectoryAsync,ensureDirectoryAsync,putJsonFileAsync,getJsonFileAs
|
|
|
71
93
|
* {@inheritdoc}
|
|
72
94
|
*/
|
|
73
95
|
async remove(key) {
|
|
74
|
-
const parsedKey =
|
|
96
|
+
const parsedKey = this.parseKey(key);
|
|
75
97
|
this.log("removing", parsedKey);
|
|
76
98
|
const fileDirectory = path.resolve(this.directory, parsedKey);
|
|
77
99
|
try {
|
|
78
100
|
await removeDirectoryAsync(fileDirectory);
|
|
79
101
|
this.log("removed", parsedKey);
|
|
102
|
+
// Emit removed event
|
|
103
|
+
await this.emit("removed", { key: parsedKey });
|
|
80
104
|
}
|
|
81
105
|
catch (error) {
|
|
82
106
|
//
|
|
@@ -94,6 +118,8 @@ import {removeDirectoryAsync,ensureDirectoryAsync,putJsonFileAsync,getJsonFileAs
|
|
|
94
118
|
await removeDirectoryAsync(this.directory);
|
|
95
119
|
}
|
|
96
120
|
this.log("flushed");
|
|
121
|
+
// Emit flushed event
|
|
122
|
+
await this.emit("flushed");
|
|
97
123
|
}
|
|
98
124
|
/**
|
|
99
125
|
* {@inheritdoc}
|
|
@@ -102,5 +128,6 @@ import {removeDirectoryAsync,ensureDirectoryAsync,putJsonFileAsync,getJsonFileAs
|
|
|
102
128
|
this.log("connecting");
|
|
103
129
|
await ensureDirectoryAsync(this.directory);
|
|
104
130
|
this.log("connected");
|
|
131
|
+
await this.emit("connected");
|
|
105
132
|
}
|
|
106
133
|
}export{FileCacheDriver};//# sourceMappingURL=file-cache-driver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-cache-driver.js","sources":["../../src/drivers/file-cache-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-cache-driver.js","sources":["../../src/drivers/file-cache-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/esm/drivers/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,
|
|
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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
import type { CacheDriver, LRUMemoryCacheOptions } from "../types";
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { CacheDriver, CacheKey, LRUMemoryCacheOptions } from "../types";
|
|
3
3
|
import { BaseCacheDriver } from "./base-cache-driver";
|
|
4
4
|
declare class CacheNode {
|
|
5
5
|
key: string;
|
|
6
6
|
value: any;
|
|
7
7
|
next: CacheNode | null;
|
|
8
8
|
prev: CacheNode | null;
|
|
9
|
-
|
|
9
|
+
expiresAt?: number;
|
|
10
|
+
constructor(key: string, value: any, ttl?: number);
|
|
11
|
+
get isExpired(): boolean;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* LRU Memory Cache Driver
|
|
@@ -31,6 +33,10 @@ export declare class LRUMemoryCacheDriver extends BaseCacheDriver<LRUMemoryCache
|
|
|
31
33
|
* Tail of the cache
|
|
32
34
|
*/
|
|
33
35
|
protected tail: CacheNode;
|
|
36
|
+
/**
|
|
37
|
+
* Cleanup interval reference
|
|
38
|
+
*/
|
|
39
|
+
protected cleanupInterval?: NodeJS.Timeout;
|
|
34
40
|
/**
|
|
35
41
|
* {@inheritdoc}
|
|
36
42
|
*/
|
|
@@ -39,6 +45,10 @@ export declare class LRUMemoryCacheDriver extends BaseCacheDriver<LRUMemoryCache
|
|
|
39
45
|
* Initialize the cache
|
|
40
46
|
*/
|
|
41
47
|
init(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Start the cleanup process for expired items
|
|
50
|
+
*/
|
|
51
|
+
startCleanup(): void;
|
|
42
52
|
/**
|
|
43
53
|
* {@inheritdoc}
|
|
44
54
|
*/
|
|
@@ -46,7 +56,7 @@ export declare class LRUMemoryCacheDriver extends BaseCacheDriver<LRUMemoryCache
|
|
|
46
56
|
/**
|
|
47
57
|
* {@inheritdoc}
|
|
48
58
|
*/
|
|
49
|
-
set(key:
|
|
59
|
+
set(key: CacheKey, value: any, ttl?: number): Promise<this>;
|
|
50
60
|
/**
|
|
51
61
|
* Move the node to the head
|
|
52
62
|
*/
|
|
@@ -66,11 +76,11 @@ export declare class LRUMemoryCacheDriver extends BaseCacheDriver<LRUMemoryCache
|
|
|
66
76
|
/**
|
|
67
77
|
* {@inheritdoc}
|
|
68
78
|
*/
|
|
69
|
-
get(key:
|
|
79
|
+
get(key: CacheKey): Promise<any>;
|
|
70
80
|
/**
|
|
71
81
|
* {@inheritdoc}
|
|
72
82
|
*/
|
|
73
|
-
remove(key:
|
|
83
|
+
remove(key: CacheKey): Promise<void>;
|
|
74
84
|
/**
|
|
75
85
|
* {@inheritdoc}
|
|
76
86
|
*/
|
|
@@ -79,6 +89,10 @@ export declare class LRUMemoryCacheDriver extends BaseCacheDriver<LRUMemoryCache
|
|
|
79
89
|
* Get lru capacity
|
|
80
90
|
*/
|
|
81
91
|
get capacity(): number;
|
|
92
|
+
/**
|
|
93
|
+
* {@inheritdoc}
|
|
94
|
+
*/
|
|
95
|
+
disconnect(): Promise<void>;
|
|
82
96
|
}
|
|
83
97
|
export {};
|
|
84
98
|
//# sourceMappingURL=lru-memory-cache-driver.d.ts.map
|
|
@@ -1 +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,
|
|
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"}
|