@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.
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,252 @@
1
+ import {BaseCacheDriver}from'./base-cache-driver.js';class CacheNode {
2
+ key;
3
+ value;
4
+ next = null;
5
+ prev = null;
6
+ expiresAt;
7
+ constructor(key, value, ttl) {
8
+ this.key = key;
9
+ this.value = value;
10
+ if (ttl && ttl !== Infinity) {
11
+ this.expiresAt = Date.now() + ttl * 1000;
12
+ }
13
+ }
14
+ get isExpired() {
15
+ return this.expiresAt !== undefined && this.expiresAt < Date.now();
16
+ }
17
+ }
18
+ /**
19
+ * LRU Memory Cache Driver
20
+ * The concept of LRU is to remove the least recently used data
21
+ * whenever the cache is full
22
+ * The question that resides here is how to tell the cache is full?
23
+ */
24
+ class LRUMemoryCacheDriver extends BaseCacheDriver {
25
+ /**
26
+ * {@inheritdoc}
27
+ */
28
+ name = "lru";
29
+ /**
30
+ * Cache map
31
+ */
32
+ cache = new Map();
33
+ /**
34
+ * Head of the cache
35
+ */
36
+ head = new CacheNode("", null);
37
+ /**
38
+ * Tail of the cache
39
+ */
40
+ tail = new CacheNode("", null);
41
+ /**
42
+ * Cleanup interval reference
43
+ */
44
+ cleanupInterval;
45
+ /**
46
+ * {@inheritdoc}
47
+ */
48
+ constructor() {
49
+ super();
50
+ this.init();
51
+ this.startCleanup();
52
+ }
53
+ /**
54
+ * Initialize the cache
55
+ */
56
+ init() {
57
+ this.head.next = this.tail;
58
+ this.tail.prev = this.head;
59
+ }
60
+ /**
61
+ * Start the cleanup process for expired items
62
+ */
63
+ startCleanup() {
64
+ // Clear existing interval if any
65
+ if (this.cleanupInterval) {
66
+ clearInterval(this.cleanupInterval);
67
+ }
68
+ this.cleanupInterval = setInterval(async () => {
69
+ const now = Date.now();
70
+ const expiredKeys = [];
71
+ for (const [key, node] of this.cache) {
72
+ if (node.expiresAt && node.expiresAt <= now) {
73
+ expiredKeys.push(key);
74
+ }
75
+ }
76
+ for (const key of expiredKeys) {
77
+ const node = this.cache.get(key);
78
+ if (node) {
79
+ this.removeNode(node);
80
+ this.cache.delete(key);
81
+ this.log("expired", key);
82
+ // Emit expired event
83
+ await this.emit("expired", { key });
84
+ }
85
+ }
86
+ }, 1000);
87
+ // do not block the process from exiting
88
+ this.cleanupInterval.unref();
89
+ }
90
+ /**
91
+ * {@inheritdoc}
92
+ */
93
+ async removeNamespace(_namespace) {
94
+ throw new Error("Namespace is not supported in LRU cache driver.");
95
+ }
96
+ /**
97
+ * {@inheritdoc}
98
+ */
99
+ async set(key, value, ttl) {
100
+ key = this.parseKey(key);
101
+ this.log("caching", key);
102
+ if (ttl === undefined) {
103
+ ttl = this.ttl;
104
+ }
105
+ const existingNode = this.cache.get(key);
106
+ if (existingNode) {
107
+ existingNode.value = value;
108
+ // Update TTL
109
+ if (ttl && ttl !== Infinity) {
110
+ existingNode.expiresAt = Date.now() + ttl * 1000;
111
+ }
112
+ else {
113
+ existingNode.expiresAt = undefined;
114
+ }
115
+ this.moveHead(existingNode);
116
+ }
117
+ else {
118
+ const newNode = new CacheNode(key, value, ttl);
119
+ this.cache.set(key, newNode);
120
+ this.addNode(newNode);
121
+ if (this.cache.size > this.capacity) {
122
+ this.removeTail();
123
+ }
124
+ }
125
+ this.log("cached", key);
126
+ // Emit set event
127
+ await this.emit("set", { key, value, ttl });
128
+ return this;
129
+ }
130
+ /**
131
+ * Move the node to the head
132
+ */
133
+ moveHead(node) {
134
+ this.removeNode(node);
135
+ this.addNode(node);
136
+ }
137
+ /**
138
+ * Remove the node from the cache
139
+ */
140
+ removeNode(node) {
141
+ node.prev.next = node.next;
142
+ node.next.prev = node.prev;
143
+ }
144
+ /**
145
+ * Add the node to the head
146
+ */
147
+ addNode(node) {
148
+ node.next = this.head.next;
149
+ node.prev = this.head;
150
+ this.head.next.prev = node;
151
+ this.head.next = node;
152
+ }
153
+ /**
154
+ * Remove the tail node
155
+ */
156
+ removeTail() {
157
+ const node = this.tail.prev;
158
+ this.removeNode(node);
159
+ this.cache.delete(node.key);
160
+ }
161
+ /**
162
+ * {@inheritdoc}
163
+ */
164
+ async get(key) {
165
+ const parsedKey = this.parseKey(key);
166
+ this.log("fetching", parsedKey);
167
+ const node = this.cache.get(parsedKey);
168
+ if (!node) {
169
+ this.log("notFound", parsedKey);
170
+ // Emit miss event
171
+ await this.emit("miss", { key: parsedKey });
172
+ return null;
173
+ }
174
+ // Check if expired
175
+ if (node.isExpired) {
176
+ this.removeNode(node);
177
+ this.cache.delete(parsedKey);
178
+ this.log("expired", parsedKey);
179
+ // Emit expired event
180
+ await this.emit("expired", { key: parsedKey });
181
+ // Also emit miss since we're returning null
182
+ await this.emit("miss", { key: parsedKey });
183
+ return null;
184
+ }
185
+ this.moveHead(node);
186
+ this.log("fetched", parsedKey);
187
+ const value = node.value;
188
+ // Apply cloning for immutability protection
189
+ if (value === null || value === undefined) {
190
+ return value;
191
+ }
192
+ const type = typeof value;
193
+ if (type === "string" || type === "number" || type === "boolean") {
194
+ // Emit hit event
195
+ await this.emit("hit", { key: parsedKey, value });
196
+ return value;
197
+ }
198
+ try {
199
+ const clonedValue = structuredClone(value);
200
+ // Emit hit event
201
+ await this.emit("hit", { key: parsedKey, value: clonedValue });
202
+ return clonedValue;
203
+ }
204
+ catch (error) {
205
+ this.logError(`Failed to clone cached value for ${parsedKey}`, error);
206
+ throw error;
207
+ }
208
+ }
209
+ /**
210
+ * {@inheritdoc}
211
+ */
212
+ async remove(key) {
213
+ const parsedKey = this.parseKey(key);
214
+ this.log("removing", parsedKey);
215
+ const node = this.cache.get(parsedKey);
216
+ if (node) {
217
+ this.removeNode(node);
218
+ this.cache.delete(parsedKey);
219
+ }
220
+ this.log("removed", parsedKey);
221
+ // Emit removed event
222
+ await this.emit("removed", { key: parsedKey });
223
+ }
224
+ /**
225
+ * {@inheritdoc}
226
+ */
227
+ async flush() {
228
+ this.log("flushing");
229
+ this.cache.clear();
230
+ this.init();
231
+ this.log("flushed");
232
+ // Emit flushed event
233
+ await this.emit("flushed");
234
+ }
235
+ /**
236
+ * Get lru capacity
237
+ */
238
+ get capacity() {
239
+ return this.options.capacity || 1000;
240
+ }
241
+ /**
242
+ * {@inheritdoc}
243
+ */
244
+ async disconnect() {
245
+ // Clear the cleanup interval to prevent memory leaks
246
+ if (this.cleanupInterval) {
247
+ clearInterval(this.cleanupInterval);
248
+ this.cleanupInterval = undefined;
249
+ }
250
+ await super.disconnect();
251
+ }
252
+ }export{LRUMemoryCacheDriver};//# sourceMappingURL=lru-memory-cache-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lru-memory-cache-driver.js","sources":["../../src/drivers/lru-memory-cache-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /// <reference types="node" />
2
+ import type { GenericObject } from "@mongez/reinforcements";
3
+ import type { CacheDriver, CacheKey, MemoryCacheOptions } from "../types";
4
+ import { BaseCacheDriver } from "./base-cache-driver";
5
+ export declare class MemoryCacheDriver extends BaseCacheDriver<MemoryCacheDriver, MemoryCacheOptions> implements CacheDriver<MemoryCacheDriver, MemoryCacheOptions> {
6
+ /**
7
+ * {@inheritdoc}
8
+ */
9
+ name: string;
10
+ /**
11
+ * Cached data
12
+ */
13
+ data: GenericObject;
14
+ /**
15
+ * List of data that will be cleared from cache
16
+ */
17
+ protected temporaryData: Record<string, {
18
+ key: string;
19
+ expiresAt: number;
20
+ }>;
21
+ /**
22
+ * Cleanup interval reference
23
+ */
24
+ protected cleanupInterval?: NodeJS.Timeout;
25
+ /**
26
+ * Access order tracking for LRU eviction (when maxSize is set)
27
+ */
28
+ protected accessOrder: string[];
29
+ /**
30
+ * {@inheritdoc}
31
+ */
32
+ constructor();
33
+ /**
34
+ * Start the cleanup process whenever a data that has a cache key is set
35
+ */
36
+ startCleanup(): void;
37
+ /**
38
+ * {@inheritdoc}
39
+ */
40
+ removeNamespace(namespace: string): Promise<this>;
41
+ /**
42
+ * {@inheritdoc}
43
+ */
44
+ set(key: CacheKey, value: any, ttl?: number): Promise<this>;
45
+ /**
46
+ * {@inheritdoc}
47
+ */
48
+ get(key: CacheKey): Promise<any>;
49
+ /**
50
+ * {@inheritdoc}
51
+ */
52
+ remove(key: CacheKey): Promise<void>;
53
+ /**
54
+ * {@inheritdoc}
55
+ */
56
+ flush(): Promise<void>;
57
+ /**
58
+ * Set the temporary data
59
+ */
60
+ protected setTemporaryData(key: CacheKey, parsedKey: string, ttl: number): void;
61
+ /**
62
+ * Track access for LRU eviction
63
+ */
64
+ protected trackAccess(key: string): void;
65
+ /**
66
+ * Remove key from access order tracking
67
+ */
68
+ protected removeFromAccessOrder(key: string): void;
69
+ /**
70
+ * Enforce max size by evicting least recently used items
71
+ */
72
+ protected enforceMaxSize(): Promise<void>;
73
+ /**
74
+ * Get current cache size (number of cached items)
75
+ */
76
+ protected getCacheSize(): number;
77
+ /**
78
+ * {@inheritdoc}
79
+ */
80
+ disconnect(): Promise<void>;
81
+ }
82
+ //# sourceMappingURL=memory-cache-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-cache-driver.d.ts","sourceRoot":"","sources":["../../src/drivers/memory-cache-driver.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAEV,WAAW,EACX,QAAQ,EACR,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,iBACX,SAAQ,eAAe,CAAC,iBAAiB,EAAE,kBAAkB,CAC7D,YAAW,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAE7D;;OAEG;IACI,IAAI,SAAY;IAEvB;;OAEG;IACI,IAAI,EAAE,aAAa,CAAM;IAEhC;;OAEG;IACH,SAAS,CAAC,aAAa,EAAE,MAAM,CAC7B,MAAM,EACN;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;KACnB,CACF,CAAM;IAEP;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAE3C;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;IAErC;;OAEG;;IAOH;;OAEG;IACI,YAAY;IAyBnB;;OAEG;IACU,eAAe,CAAC,SAAS,EAAE,MAAM;IAY9C;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAsCxD;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,QAAQ;IA6B9B;;OAEG;IACU,MAAM,CAAC,GAAG,EAAE,QAAQ;IAmBjC;;OAEG;IACU,KAAK;IAelB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAOxE;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM;IAajC;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM;IAO3C;;OAEG;cACa,cAAc;IAmB9B;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,MAAM;IAKhC;;OAEG;IACU,UAAU;CASxB"}
@@ -0,0 +1,218 @@
1
+ import {unset,get,set}from'@mongez/reinforcements';import {BaseCacheDriver}from'./base-cache-driver.js';class MemoryCacheDriver extends BaseCacheDriver {
2
+ /**
3
+ * {@inheritdoc}
4
+ */
5
+ name = "memory";
6
+ /**
7
+ * Cached data
8
+ */
9
+ data = {};
10
+ /**
11
+ * List of data that will be cleared from cache
12
+ */
13
+ temporaryData = {};
14
+ /**
15
+ * Cleanup interval reference
16
+ */
17
+ cleanupInterval;
18
+ /**
19
+ * Access order tracking for LRU eviction (when maxSize is set)
20
+ */
21
+ accessOrder = [];
22
+ /**
23
+ * {@inheritdoc}
24
+ */
25
+ constructor() {
26
+ super();
27
+ this.startCleanup();
28
+ }
29
+ /**
30
+ * Start the cleanup process whenever a data that has a cache key is set
31
+ */
32
+ startCleanup() {
33
+ // Clear existing interval if any
34
+ if (this.cleanupInterval) {
35
+ clearInterval(this.cleanupInterval);
36
+ }
37
+ this.cleanupInterval = setInterval(async () => {
38
+ const now = Date.now();
39
+ for (const key in this.temporaryData) {
40
+ if (this.temporaryData[key].expiresAt <= now) {
41
+ await this.remove(this.temporaryData[key].key);
42
+ delete this.temporaryData[key];
43
+ this.log("expired", key);
44
+ // Emit expired event
45
+ await this.emit("expired", { key });
46
+ }
47
+ }
48
+ }, 1000);
49
+ // do not block the process from exiting
50
+ this.cleanupInterval.unref();
51
+ }
52
+ /**
53
+ * {@inheritdoc}
54
+ */
55
+ async removeNamespace(namespace) {
56
+ this.log("clearing", namespace);
57
+ namespace = this.parseKey(namespace);
58
+ unset(this.data, [namespace]);
59
+ this.log("cleared", namespace);
60
+ return this;
61
+ }
62
+ /**
63
+ * {@inheritdoc}
64
+ */
65
+ async set(key, value, ttl) {
66
+ const parsedKey = this.parseKey(key);
67
+ this.log("caching", parsedKey);
68
+ if (ttl === undefined) {
69
+ ttl = this.ttl;
70
+ }
71
+ const data = this.prepareDataForStorage(value, ttl);
72
+ if (ttl) {
73
+ // it means we need to check for expiration
74
+ this.setTemporaryData(key, parsedKey, ttl);
75
+ }
76
+ // Check if key already exists
77
+ const existingData = get(this.data, parsedKey);
78
+ const isNewKey = !existingData;
79
+ set(this.data, parsedKey, data);
80
+ // Track access for LRU eviction
81
+ this.trackAccess(parsedKey);
82
+ // Check size limit and evict if necessary
83
+ if (isNewKey && this.options.maxSize) {
84
+ await this.enforceMaxSize();
85
+ }
86
+ this.log("cached", parsedKey);
87
+ // Emit set event
88
+ await this.emit("set", { key: parsedKey, value, ttl });
89
+ return this;
90
+ }
91
+ /**
92
+ * {@inheritdoc}
93
+ */
94
+ async get(key) {
95
+ const parsedKey = this.parseKey(key);
96
+ this.log("fetching", parsedKey);
97
+ const value = get(this.data, parsedKey);
98
+ if (!value) {
99
+ this.log("notFound", parsedKey);
100
+ // Emit miss event
101
+ await this.emit("miss", { key: parsedKey });
102
+ return null;
103
+ }
104
+ const result = await this.parseCachedData(parsedKey, value);
105
+ if (result === null) {
106
+ // Expired
107
+ await this.emit("miss", { key: parsedKey });
108
+ }
109
+ else {
110
+ // Track access for LRU
111
+ this.trackAccess(parsedKey);
112
+ // Emit hit event
113
+ await this.emit("hit", { key: parsedKey, value: result });
114
+ }
115
+ return result;
116
+ }
117
+ /**
118
+ * {@inheritdoc}
119
+ */
120
+ async remove(key) {
121
+ const parsedKey = this.parseKey(key);
122
+ this.log("removing", parsedKey);
123
+ unset(this.data, [parsedKey]);
124
+ // Clean up from temporaryData as well
125
+ delete this.temporaryData[parsedKey];
126
+ // Remove from access order
127
+ this.removeFromAccessOrder(parsedKey);
128
+ this.log("removed", parsedKey);
129
+ // Emit removed event
130
+ await this.emit("removed", { key: parsedKey });
131
+ }
132
+ /**
133
+ * {@inheritdoc}
134
+ */
135
+ async flush() {
136
+ this.log("flushing");
137
+ if (this.options.globalPrefix) {
138
+ this.removeNamespace("");
139
+ }
140
+ else {
141
+ this.data = {};
142
+ this.accessOrder = [];
143
+ }
144
+ this.log("flushed");
145
+ // Emit flushed event
146
+ await this.emit("flushed");
147
+ }
148
+ /**
149
+ * Set the temporary data
150
+ */
151
+ setTemporaryData(key, parsedKey, ttl) {
152
+ this.temporaryData[parsedKey] = {
153
+ key: JSON.stringify(key),
154
+ expiresAt: Date.now() + ttl * 1000,
155
+ };
156
+ }
157
+ /**
158
+ * Track access for LRU eviction
159
+ */
160
+ trackAccess(key) {
161
+ if (!this.options.maxSize)
162
+ return;
163
+ // Remove key from current position
164
+ const index = this.accessOrder.indexOf(key);
165
+ if (index > -1) {
166
+ this.accessOrder.splice(index, 1);
167
+ }
168
+ // Add to end (most recently used)
169
+ this.accessOrder.push(key);
170
+ }
171
+ /**
172
+ * Remove key from access order tracking
173
+ */
174
+ removeFromAccessOrder(key) {
175
+ const index = this.accessOrder.indexOf(key);
176
+ if (index > -1) {
177
+ this.accessOrder.splice(index, 1);
178
+ }
179
+ }
180
+ /**
181
+ * Enforce max size by evicting least recently used items
182
+ */
183
+ async enforceMaxSize() {
184
+ if (!this.options.maxSize)
185
+ return;
186
+ // Count actual cache items (excluding internal metadata)
187
+ const cacheSize = this.getCacheSize();
188
+ while (cacheSize > this.options.maxSize && this.accessOrder.length > 0) {
189
+ // Evict least recently used (first in array)
190
+ const lruKey = this.accessOrder.shift();
191
+ if (lruKey) {
192
+ this.log("removing", lruKey);
193
+ unset(this.data, [lruKey]);
194
+ delete this.temporaryData[lruKey];
195
+ this.log("removed", lruKey);
196
+ // Could emit 'evicted' event if we add that type
197
+ }
198
+ }
199
+ }
200
+ /**
201
+ * Get current cache size (number of cached items)
202
+ */
203
+ getCacheSize() {
204
+ // Count top-level keys in data object
205
+ return Object.keys(this.data).length;
206
+ }
207
+ /**
208
+ * {@inheritdoc}
209
+ */
210
+ async disconnect() {
211
+ // Clear the cleanup interval to prevent memory leaks
212
+ if (this.cleanupInterval) {
213
+ clearInterval(this.cleanupInterval);
214
+ this.cleanupInterval = undefined;
215
+ }
216
+ await super.disconnect();
217
+ }
218
+ }export{MemoryCacheDriver};//# sourceMappingURL=memory-cache-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-cache-driver.js","sources":["../../src/drivers/memory-cache-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"wGAUM,MAAO,iBACX,SAAQ,eAAsD,CAAA;AAG9D;;AAEG;IACI,IAAI,GAAG,QAAQ,CAAC;AAEvB;;AAEG;IACI,IAAI,GAAkB,EAAE,CAAC;AAEhC;;AAEG;IACO,aAAa,GAMnB,EAAE,CAAC;AAEP;;AAEG;AACO,IAAA,eAAe,CAAkB;AAE3C;;AAEG;IACO,WAAW,GAAa,EAAE,CAAC;AAErC;;AAEG;AACH,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED;;AAEG;IACI,YAAY,GAAA;;QAEjB,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,YAAW;AAC5C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAEvB,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,GAAG,EAAE;AAC5C,oBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,oBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAE/B,oBAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;;oBAEzB,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACrC,iBAAA;AACF,aAAA;SACF,EAAE,IAAI,CAAC,CAAC;;AAGT,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;KAC9B;AAED;;AAEG;IACI,MAAM,eAAe,CAAC,SAAiB,EAAA;AAC5C,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAEhC,QAAA,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAErC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAE9B,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAE/B,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;AACI,IAAA,MAAM,GAAG,CAAC,GAAa,EAAE,KAAU,EAAE,GAAY,EAAA;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAErC,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAE/B,IAAI,GAAG,KAAK,SAAS,EAAE;AACrB,YAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAChB,SAAA;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAEpD,QAAA,IAAI,GAAG,EAAE;;YAEP,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAC5C,SAAA;;QAGD,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/C,QAAA,MAAM,QAAQ,GAAG,CAAC,YAAY,CAAC;QAE/B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;;AAGhC,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;AAG5B,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACpC,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;;AAG9B,QAAA,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAEvD,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;IACI,MAAM,GAAG,CAAC,GAAa,EAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAErC,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEhC,MAAM,KAAK,GAAc,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;;AAEhC,YAAA,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5C,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAE5D,IAAI,MAAM,KAAK,IAAI,EAAE;;AAEnB,YAAA,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;AAE5B,YAAA,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3D,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;AAEG;IACI,MAAM,MAAM,CAAC,GAAa,EAAA;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAErC,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEhC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;;AAG9B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;;AAGrC,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;;AAG/B,QAAA,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;KAChD;AAED;;AAEG;AACI,IAAA,MAAM,KAAK,GAAA;AAChB,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC7B,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;AAGpB,QAAA,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC5B;AAED;;AAEG;AACO,IAAA,gBAAgB,CAAC,GAAa,EAAE,SAAiB,EAAE,GAAW,EAAA;AACtE,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG;AAC9B,YAAA,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI;SACnC,CAAC;KACH;AAED;;AAEG;AACO,IAAA,WAAW,CAAC,GAAW,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;;QAGlC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACnC,SAAA;;AAGD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;AAED;;AAEG;AACO,IAAA,qBAAqB,CAAC,GAAW,EAAA;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACnC,SAAA;KACF;AAED;;AAEG;AACO,IAAA,MAAM,cAAc,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;;AAGlC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAEtC,QAAA,OAAO,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;;YAEtE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACxC,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3B,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;;AAE7B,aAAA;AACF,SAAA;KACF;AAED;;AAEG;IACO,YAAY,GAAA;;QAEpB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;KACtC;AAED;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;;QAErB,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAClC,SAAA;AAED,QAAA,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;KAC1B;AACF"}
@@ -0,0 +1,13 @@
1
+ import type { CacheDriver, CacheKey, MemoryExtendedCacheOptions } from "../types";
2
+ import { MemoryCacheDriver } from "./memory-cache-driver";
3
+ export declare class MemoryExtendedCacheDriver extends MemoryCacheDriver implements CacheDriver<MemoryExtendedCacheDriver, MemoryExtendedCacheOptions> {
4
+ /**
5
+ * {@inheritdoc}
6
+ */
7
+ name: string;
8
+ /**
9
+ * {@inheritdoc}
10
+ */
11
+ get(key: CacheKey): Promise<any>;
12
+ }
13
+ //# sourceMappingURL=memory-extended-cache-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-extended-cache-driver.d.ts","sourceRoot":"","sources":["../../src/drivers/memory-extended-cache-driver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,WAAW,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,qBAAa,yBACX,SAAQ,iBACR,YAAW,WAAW,CAAC,yBAAyB,EAAE,0BAA0B,CAAC;IAE7E;;OAEG;IACI,IAAI,SAAoB;IAE/B;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,QAAQ;CAsB/B"}
@@ -0,0 +1,25 @@
1
+ import {get}from'@mongez/reinforcements';import {MemoryCacheDriver}from'./memory-cache-driver.js';class MemoryExtendedCacheDriver extends MemoryCacheDriver {
2
+ /**
3
+ * {@inheritdoc}
4
+ */
5
+ name = "memoryExtended";
6
+ /**
7
+ * {@inheritdoc}
8
+ */
9
+ async get(key) {
10
+ const parsedKey = this.parseKey(key);
11
+ this.log("fetching", parsedKey);
12
+ const value = get(this.data, parsedKey);
13
+ if (!value) {
14
+ this.log("notFound", parsedKey);
15
+ return null;
16
+ }
17
+ const ttl = value.ttl || this.options.ttl;
18
+ if (ttl) {
19
+ // reset the expiration time
20
+ this.setTemporaryData(key, parsedKey, ttl);
21
+ value.expiresAt = this.getExpiresAt(ttl);
22
+ }
23
+ return this.parseCachedData(parsedKey, value);
24
+ }
25
+ }export{MemoryExtendedCacheDriver};//# sourceMappingURL=memory-extended-cache-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-extended-cache-driver.js","sources":["../../src/drivers/memory-extended-cache-driver.ts"],"sourcesContent":[null],"names":[],"mappings":"kGAIM,MAAO,yBACX,SAAQ,iBAAiB,CAAA;AAGzB;;AAEG;IACI,IAAI,GAAG,gBAAgB,CAAC;AAE/B;;AAEG;IACI,MAAM,GAAG,CAAC,GAAa,EAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAErC,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEhC,MAAM,KAAK,GAAc,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAChC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAE1C,QAAA,IAAI,GAAG,EAAE;;YAEP,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC3C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC1C,SAAA;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KAC/C;AACF"}