cachette 4.0.13 → 4.0.15
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/.prettierignore +15 -0
- package/.prettierrc +8 -0
- package/dist/src/lib/CacheClient.js +10 -9
- package/dist/src/lib/CacheClient.js.map +1 -1
- package/dist/src/lib/CacheInstance.d.ts +14 -4
- package/dist/src/lib/CacheInstance.js +11 -6
- package/dist/src/lib/CacheInstance.js.map +1 -1
- package/dist/src/lib/LocalCache.d.ts +2 -7
- package/dist/src/lib/LocalCache.js +19 -24
- package/dist/src/lib/LocalCache.js.map +1 -1
- package/dist/src/lib/RedisCache.d.ts +1 -9
- package/dist/src/lib/RedisCache.js +26 -26
- package/dist/src/lib/RedisCache.js.map +1 -1
- package/dist/src/lib/WriteThroughCache.js +5 -5
- package/dist/src/lib/WriteThroughCache.js.map +1 -1
- package/package.json +4 -2
- package/src/lib/CacheClient.ts +42 -55
- package/src/lib/CacheInstance.ts +23 -15
- package/src/lib/LocalCache.ts +25 -29
- package/src/lib/RedisCache.ts +49 -53
- package/src/lib/WriteThroughCache.ts +27 -27
- package/test/CacheClient_test.ts +25 -44
- package/test/CacheInstance_test.ts +12 -40
- package/test/LocalCache_test.ts +102 -7
- package/test/RedisCache_test.ts +20 -20
- package/test/WriteThroughCache_test.ts +34 -39
package/.prettierignore
ADDED
package/.prettierrc
ADDED
|
@@ -5,21 +5,25 @@ class CacheClient {
|
|
|
5
5
|
cacheInstance;
|
|
6
6
|
buildCacheKey(propertyKey, args) {
|
|
7
7
|
const buildKeyArgs = (args) => args
|
|
8
|
-
.filter(x => typeof x !== 'object' ||
|
|
8
|
+
.filter((x) => typeof x !== 'object' ||
|
|
9
9
|
// If the arg is an object, we check that it's not an instance of a class
|
|
10
10
|
(typeof x === 'object' && (x?.constructor.name === 'Object' || x?.constructor.name === 'Array')) ||
|
|
11
11
|
// typeof null === object, then we need to have another condition to accept null as well
|
|
12
|
-
x === null)
|
|
12
|
+
x === null)
|
|
13
|
+
.map((x) => {
|
|
13
14
|
if (typeof x === 'object' && !Array.isArray(x) && x) {
|
|
14
15
|
// Check if we have a circular reference in the plain object
|
|
15
16
|
JSON.stringify(x);
|
|
16
|
-
return Object.entries(x)
|
|
17
|
+
return Object.entries(x)
|
|
18
|
+
.sort()
|
|
19
|
+
.map(([key, value]) => {
|
|
17
20
|
if (typeof value === 'object') {
|
|
18
21
|
const nestedObjectKeys = buildKeyArgs([value]);
|
|
19
22
|
return `${key}-${nestedObjectKeys}`;
|
|
20
23
|
}
|
|
21
24
|
return `${key}-${value}`;
|
|
22
|
-
})
|
|
25
|
+
})
|
|
26
|
+
.join('-');
|
|
23
27
|
}
|
|
24
28
|
if (Array.isArray(x)) {
|
|
25
29
|
const builtKey = buildKeyArgs(x.sort());
|
|
@@ -27,11 +31,8 @@ class CacheClient {
|
|
|
27
31
|
}
|
|
28
32
|
return new String(x).valueOf();
|
|
29
33
|
});
|
|
30
|
-
const builtKey = [
|
|
31
|
-
|
|
32
|
-
...buildKeyArgs(args),
|
|
33
|
-
].join('-');
|
|
34
|
-
const maxKeyLength = process.env.UNITO_CACHE_MAX_KEY_LENGTH && parseInt(process.env.UNITO_CACHE_MAX_KEY_LENGTH, 10) || 1000;
|
|
34
|
+
const builtKey = [propertyKey, ...buildKeyArgs(args)].join('-');
|
|
35
|
+
const maxKeyLength = (process.env.UNITO_CACHE_MAX_KEY_LENGTH && parseInt(process.env.UNITO_CACHE_MAX_KEY_LENGTH, 10)) || 1000;
|
|
35
36
|
if (builtKey.length > maxKeyLength) {
|
|
36
37
|
throw new Error(`Built key is bigger than ${maxKeyLength} chars`);
|
|
37
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheClient.js","sourceRoot":"","sources":["../../../src/lib/CacheClient.ts"],"names":[],"mappings":";;;AAEA,MAAsB,WAAW;
|
|
1
|
+
{"version":3,"file":"CacheClient.js","sourceRoot":"","sources":["../../../src/lib/CacheClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
export type CachableValue = any;
|
|
3
3
|
export type FetchingFunction = () => Promise<CachableValue>;
|
|
4
|
+
/**
|
|
5
|
+
* Represents a lock on a resource.
|
|
6
|
+
* The lock object must be passed to unlock() to release the lock.
|
|
7
|
+
*/
|
|
8
|
+
export interface Lock {
|
|
9
|
+
value: string | null;
|
|
10
|
+
unlock(): Promise<void>;
|
|
11
|
+
}
|
|
4
12
|
export declare abstract class CacheInstance extends EventEmitter {
|
|
13
|
+
static LOCK_RETRY_COUNT: number;
|
|
14
|
+
static LOCK_RETRY_DELAY_MS: number;
|
|
5
15
|
/**
|
|
6
16
|
* Will resolve when the cache instance connection is ready.
|
|
7
17
|
*/
|
|
@@ -76,15 +86,15 @@ export declare abstract class CacheInstance extends EventEmitter {
|
|
|
76
86
|
* @param ttlMs The time to live of the lock in ms
|
|
77
87
|
* @param retry Whether or not to retry attempts to lock
|
|
78
88
|
*
|
|
79
|
-
* @returns The lock
|
|
89
|
+
* @returns The lock object that must be passed to unlock()
|
|
80
90
|
*/
|
|
81
|
-
lock(resource: string, ttlMs: number, retry?: boolean): Promise<
|
|
91
|
+
lock(resource: string, ttlMs: number, retry?: boolean): Promise<Lock>;
|
|
82
92
|
/**
|
|
83
|
-
* Unlock a named resource
|
|
93
|
+
* Unlock a named resource acquired with lock()
|
|
84
94
|
*
|
|
85
95
|
* @param lock The lock object
|
|
86
96
|
*/
|
|
87
|
-
unlock(lock:
|
|
97
|
+
unlock(lock: Lock): Promise<void>;
|
|
88
98
|
/**
|
|
89
99
|
* Determine whether *at least one non-expired lock* starts with the given pattern.
|
|
90
100
|
*/
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CacheInstance = void 0;
|
|
4
4
|
const node_events_1 = require("node:events");
|
|
5
5
|
class CacheInstance extends node_events_1.EventEmitter {
|
|
6
|
+
// Shared lock configuration with generic env vars
|
|
7
|
+
static LOCK_RETRY_COUNT = parseInt(process.env.CACHETTE_LOCK_RETRY_COUNT, 10) || 20;
|
|
8
|
+
static LOCK_RETRY_DELAY_MS = parseInt(process.env.CACHETTE_LOCK_RETRY_DELAY_MS, 10) || 200;
|
|
6
9
|
/**
|
|
7
10
|
* Determines if locking is supported in the cache implementation
|
|
8
11
|
*/
|
|
@@ -16,18 +19,18 @@ class CacheInstance extends node_events_1.EventEmitter {
|
|
|
16
19
|
* @param ttlMs The time to live of the lock in ms
|
|
17
20
|
* @param retry Whether or not to retry attempts to lock
|
|
18
21
|
*
|
|
19
|
-
* @returns The lock
|
|
22
|
+
* @returns The lock object that must be passed to unlock()
|
|
20
23
|
*/
|
|
21
24
|
lock(resource, ttlMs, retry) {
|
|
22
25
|
throw new Error('unsupported');
|
|
23
26
|
}
|
|
24
27
|
/**
|
|
25
|
-
* Unlock a named resource
|
|
28
|
+
* Unlock a named resource acquired with lock()
|
|
26
29
|
*
|
|
27
30
|
* @param lock The lock object
|
|
28
31
|
*/
|
|
29
|
-
unlock(lock) {
|
|
30
|
-
|
|
32
|
+
async unlock(lock) {
|
|
33
|
+
await lock.unlock();
|
|
31
34
|
}
|
|
32
35
|
/**
|
|
33
36
|
* Determine whether *at least one non-expired lock* starts with the given pattern.
|
|
@@ -39,7 +42,9 @@ class CacheInstance extends node_events_1.EventEmitter {
|
|
|
39
42
|
* Terminate / exit / quit the instance
|
|
40
43
|
*/
|
|
41
44
|
quit() {
|
|
42
|
-
return new Promise((resolve) => {
|
|
45
|
+
return new Promise((resolve) => {
|
|
46
|
+
resolve();
|
|
47
|
+
});
|
|
43
48
|
}
|
|
44
49
|
/**
|
|
45
50
|
* Keep track of active fetches to prevent
|
|
@@ -103,7 +108,7 @@ class CacheInstance extends node_events_1.EventEmitter {
|
|
|
103
108
|
let error;
|
|
104
109
|
let result;
|
|
105
110
|
try {
|
|
106
|
-
const fetchPromise = this.activeFetches[key] = fetchFunction();
|
|
111
|
+
const fetchPromise = (this.activeFetches[key] = fetchFunction());
|
|
107
112
|
result = await fetchPromise;
|
|
108
113
|
}
|
|
109
114
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheInstance.js","sourceRoot":"","sources":["../../../src/lib/CacheInstance.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;
|
|
1
|
+
{"version":3,"file":"CacheInstance.js","sourceRoot":"","sources":["../../../src/lib/CacheInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { CachableValue, CacheInstance } from './CacheInstance';
|
|
1
|
+
import { CachableValue, CacheInstance, Lock } from './CacheInstance';
|
|
2
2
|
export declare class LocalCache extends CacheInstance {
|
|
3
3
|
static DEFAULT_MAX_ITEMS: number;
|
|
4
4
|
static DEFAULT_MAX_AGE: number;
|
|
5
|
-
static LOCK_ACQUIRE_TIMEOUT: number;
|
|
6
5
|
private cache;
|
|
7
6
|
/**
|
|
8
7
|
* @inheritdoc
|
|
@@ -52,11 +51,7 @@ export declare class LocalCache extends CacheInstance {
|
|
|
52
51
|
/**
|
|
53
52
|
* @inheritdoc
|
|
54
53
|
*/
|
|
55
|
-
lock(resource: string, ttlMs: number): Promise<
|
|
56
|
-
/**
|
|
57
|
-
* @inheritdoc
|
|
58
|
-
*/
|
|
59
|
-
unlock(lock: any): Promise<void>;
|
|
54
|
+
lock(resource: string, ttlMs: number, retry?: boolean): Promise<Lock>;
|
|
60
55
|
/**
|
|
61
56
|
* @inheritdoc
|
|
62
57
|
*
|
|
@@ -4,13 +4,12 @@ exports.LocalCache = void 0;
|
|
|
4
4
|
const lru_cache_1 = require("lru-cache");
|
|
5
5
|
const CacheInstance_1 = require("./CacheInstance");
|
|
6
6
|
async function sleep(ms) {
|
|
7
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
7
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
8
8
|
}
|
|
9
9
|
class LocalCache extends CacheInstance_1.CacheInstance {
|
|
10
10
|
static DEFAULT_MAX_ITEMS = 5000;
|
|
11
11
|
// Default maximum age for the items, in MS.
|
|
12
12
|
static DEFAULT_MAX_AGE = 30 * 60 * 1000;
|
|
13
|
-
static LOCK_ACQUIRE_TIMEOUT = 2000;
|
|
14
13
|
// See https://github.com/isaacs/node-lru-cache#options
|
|
15
14
|
// for options.
|
|
16
15
|
cache = new lru_cache_1.LRUCache({
|
|
@@ -108,32 +107,26 @@ class LocalCache extends CacheInstance_1.CacheInstance {
|
|
|
108
107
|
/**
|
|
109
108
|
* @inheritdoc
|
|
110
109
|
*/
|
|
111
|
-
async lock(resource, ttlMs) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
while (isLocked) {
|
|
115
|
-
if (Date.now() - startTimestamp > LocalCache.LOCK_ACQUIRE_TIMEOUT) {
|
|
116
|
-
throw new Error(`Abandoning locking ${resource} , as timed out while waiting for other lock to be released.`);
|
|
117
|
-
}
|
|
110
|
+
async lock(resource, ttlMs, retry = true) {
|
|
111
|
+
const maxAttempts = retry ? LocalCache.LOCK_RETRY_COUNT : 1;
|
|
112
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
118
113
|
this.cache.purgeStale();
|
|
119
114
|
if (!this.cache.has(resource)) {
|
|
120
|
-
|
|
115
|
+
// Lock acquired
|
|
116
|
+
const lockValue = `local-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
117
|
+
this.cache.set(resource, lockValue, { ttl: ttlMs });
|
|
118
|
+
return {
|
|
119
|
+
value: lockValue,
|
|
120
|
+
unlock: async () => {
|
|
121
|
+
this.cache.delete(resource);
|
|
122
|
+
},
|
|
123
|
+
};
|
|
121
124
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
// Whatever, we just loop on waiting a bit and retrying.
|
|
125
|
-
await sleep(10);
|
|
125
|
+
if (attempt < maxAttempts - 1) {
|
|
126
|
+
await sleep(LocalCache.LOCK_RETRY_DELAY_MS);
|
|
126
127
|
}
|
|
127
128
|
}
|
|
128
|
-
|
|
129
|
-
return new Promise(resolve => { resolve(resource); });
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* @inheritdoc
|
|
133
|
-
*/
|
|
134
|
-
async unlock(lock) {
|
|
135
|
-
this.cache.delete(lock);
|
|
136
|
-
return new Promise(resolve => { resolve(); });
|
|
129
|
+
throw new Error(`Failed to acquire lock on ${resource} after ${maxAttempts} attempts`);
|
|
137
130
|
}
|
|
138
131
|
/**
|
|
139
132
|
* @inheritdoc
|
|
@@ -155,7 +148,9 @@ class LocalCache extends CacheInstance_1.CacheInstance {
|
|
|
155
148
|
found = true;
|
|
156
149
|
}
|
|
157
150
|
});
|
|
158
|
-
return new Promise((resolve) => {
|
|
151
|
+
return new Promise((resolve) => {
|
|
152
|
+
resolve(found);
|
|
153
|
+
});
|
|
159
154
|
}
|
|
160
155
|
}
|
|
161
156
|
exports.LocalCache = LocalCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalCache.js","sourceRoot":"","sources":["../../../src/lib/LocalCache.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAErC,
|
|
1
|
+
{"version":3,"file":"LocalCache.js","sourceRoot":"","sources":["../../../src/lib/LocalCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { CachableValue, CacheInstance } from './CacheInstance';
|
|
1
|
+
import { CachableValue, CacheInstance, Lock } from './CacheInstance';
|
|
2
2
|
export declare const SIZE_THRESHOLD_WARNING_BYTES = 20000000;
|
|
3
|
-
export interface Lock {
|
|
4
|
-
value: string | null;
|
|
5
|
-
unlock(): Promise<void>;
|
|
6
|
-
}
|
|
7
3
|
/**
|
|
8
4
|
* Wrapper class for using Redis as a cache.
|
|
9
5
|
*
|
|
@@ -123,10 +119,6 @@ export declare class RedisCache extends CacheInstance {
|
|
|
123
119
|
* @inheritdoc
|
|
124
120
|
*/
|
|
125
121
|
lock(resource: string, ttlMs: number, retry?: boolean): Promise<Lock>;
|
|
126
|
-
/**
|
|
127
|
-
* @inheritdoc
|
|
128
|
-
*/
|
|
129
|
-
unlock(lock: Lock): Promise<void>;
|
|
130
122
|
/**
|
|
131
123
|
* @inheritdoc
|
|
132
124
|
*
|
|
@@ -24,8 +24,9 @@ class RedisCache extends CacheInstance_1.CacheInstance {
|
|
|
24
24
|
static ERROR_PREFIX = 'f405eed4-507c-4aa5-a6d2-c1813d584b8f-ERROR';
|
|
25
25
|
static NUMBER_PREFIX = 'f405eed4-507c-4aa5-a6d2-c1813d584b8f-NUMBER';
|
|
26
26
|
static REDIS_CONNECTION_TIMEOUT_MS = parseInt(process.env.REDIS_CONNECTION_TIMEOUT_MS, 10) || 5000;
|
|
27
|
-
|
|
28
|
-
static
|
|
27
|
+
// Backward compatible: REDLOCK_* takes precedence, then CACHETTE_LOCK_*
|
|
28
|
+
static REDLOCK_RETRY_COUNT = parseInt(process.env.REDLOCK_RETRY_COUNT, 10) || RedisCache.LOCK_RETRY_COUNT; // lib. default: 20
|
|
29
|
+
static REDLOCK_RETRY_DELAY_MS = parseInt(process.env.REDLOCK_RETRY_DELAY_MS, 10) || RedisCache.LOCK_RETRY_DELAY_MS; // lib. default: 200
|
|
29
30
|
static REDLOCK_CLOCK_DRIFT_FACTOR = parseInt(process.env.REDLOCK_CLOCK_DRIFT_FACTOR, 10) || 0.01; // lib. default: 0.01
|
|
30
31
|
static REDLOCK_JITTER_MS = parseInt(process.env.REDLOCK_JITTER_MS, 10) || 200; // lib. default: 200
|
|
31
32
|
redisClient;
|
|
@@ -56,12 +57,14 @@ class RedisCache extends CacheInstance_1.CacheInstance {
|
|
|
56
57
|
enableOfflineQueue: false,
|
|
57
58
|
});
|
|
58
59
|
this.redlock = new Redlock([this.redisClient], {
|
|
60
|
+
// Hack until Redlock 5.x is out of beta
|
|
59
61
|
driftFactor: RedisCache.REDLOCK_CLOCK_DRIFT_FACTOR,
|
|
60
62
|
retryCount: RedisCache.REDLOCK_RETRY_COUNT,
|
|
61
63
|
retryDelay: RedisCache.REDLOCK_RETRY_DELAY_MS,
|
|
62
64
|
retryJitter: RedisCache.REDLOCK_JITTER_MS,
|
|
63
65
|
});
|
|
64
66
|
this.redlockWithoutRetry = new Redlock([this.redisClient], {
|
|
67
|
+
// Hack until Redlock 5.x is out of beta
|
|
65
68
|
driftFactor: RedisCache.REDLOCK_CLOCK_DRIFT_FACTOR,
|
|
66
69
|
retryCount: 0,
|
|
67
70
|
retryDelay: 0,
|
|
@@ -81,7 +84,7 @@ class RedisCache extends CacheInstance_1.CacheInstance {
|
|
|
81
84
|
if (this.ready) {
|
|
82
85
|
return;
|
|
83
86
|
}
|
|
84
|
-
return new Promise(resolve => this.redisClient.on('ready', resolve));
|
|
87
|
+
return new Promise((resolve) => this.redisClient.on('ready', resolve));
|
|
85
88
|
}
|
|
86
89
|
/**
|
|
87
90
|
* @inheritdoc
|
|
@@ -137,26 +140,28 @@ class RedisCache extends CacheInstance_1.CacheInstance {
|
|
|
137
140
|
return RedisCache.FALSE_VALUE;
|
|
138
141
|
}
|
|
139
142
|
if (value instanceof Error) {
|
|
140
|
-
return RedisCache.ERROR_PREFIX +
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
143
|
+
return (RedisCache.ERROR_PREFIX +
|
|
144
|
+
JSON.stringify({
|
|
145
|
+
...value, // serialize potential Error metadata set as object properties
|
|
146
|
+
message: value.message,
|
|
147
|
+
}));
|
|
144
148
|
}
|
|
145
149
|
if (typeof value === 'number') {
|
|
146
150
|
return `${RedisCache.NUMBER_PREFIX}${value}`;
|
|
147
151
|
}
|
|
148
152
|
if (value instanceof Object) {
|
|
149
|
-
return RedisCache.JSON_PREFIX +
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
153
|
+
return (RedisCache.JSON_PREFIX +
|
|
154
|
+
JSON.stringify(value, (key, value) => {
|
|
155
|
+
if (value instanceof Set) {
|
|
156
|
+
return { __dataType: 'Set', value: Array.from(value) };
|
|
157
|
+
}
|
|
158
|
+
else if (value instanceof Map) {
|
|
159
|
+
return { __dataType: 'Map', value: Array.from(value) };
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
return value;
|
|
163
|
+
}
|
|
164
|
+
}));
|
|
160
165
|
}
|
|
161
166
|
return value;
|
|
162
167
|
}
|
|
@@ -334,15 +339,9 @@ class RedisCache extends CacheInstance_1.CacheInstance {
|
|
|
334
339
|
const internalLock = await redlock.lock(resource, ttlMs);
|
|
335
340
|
return {
|
|
336
341
|
value: internalLock.value,
|
|
337
|
-
unlock: async () => internalLock.unlock()
|
|
342
|
+
unlock: async () => internalLock.unlock(),
|
|
338
343
|
};
|
|
339
344
|
}
|
|
340
|
-
/**
|
|
341
|
-
* @inheritdoc
|
|
342
|
-
*/
|
|
343
|
-
async unlock(lock) {
|
|
344
|
-
await lock.unlock();
|
|
345
|
-
}
|
|
346
345
|
/**
|
|
347
346
|
* @inheritdoc
|
|
348
347
|
*
|
|
@@ -365,7 +364,8 @@ class RedisCache extends CacheInstance_1.CacheInstance {
|
|
|
365
364
|
async hasLock(prefix) {
|
|
366
365
|
const redisPrefix = prefix.endsWith('*') ? prefix : `${prefix}*`;
|
|
367
366
|
let cursor = '';
|
|
368
|
-
while (cursor !== '0') {
|
|
367
|
+
while (cursor !== '0') {
|
|
368
|
+
// indicates Redis completed the scan
|
|
369
369
|
// Redis detail: we set the `count` option to a number (1000) greater than
|
|
370
370
|
// the default (10), to minimize the amount of network round-trips caused
|
|
371
371
|
// by incomplete scans needing more scanning from the returned cursor.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisCache.js","sourceRoot":"","sources":["../../../src/lib/RedisCache.ts"],"names":[],"mappings":";;;AAAA,qCAA4B;AAC5B,mCAAmC;AAEnC,
|
|
1
|
+
{"version":3,"file":"RedisCache.js","sourceRoot":"","sources":["../../../src/lib/RedisCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,9 +55,9 @@ class WriteThroughCache extends CacheInstance_1.CacheInstance {
|
|
|
55
55
|
setInterval(() => {
|
|
56
56
|
const total = this.metrics.localHits + this.metrics.redisHits + this.metrics.doubleMisses;
|
|
57
57
|
this.redisCacheForWriting.emit('info', `WriteThroughCache metrics during last ${metricsPeriod} min - Total: ${total}, ` +
|
|
58
|
-
`Local hits: ${this.metrics.localHits} (${total && Math.floor(100 * this.metrics.localHits / total)}%), ` +
|
|
59
|
-
`Redis hits: ${this.metrics.redisHits} (${total && Math.floor(100 * this.metrics.redisHits / total)}%), ` +
|
|
60
|
-
`Double misses: ${this.metrics.doubleMisses} (${total && Math.floor(100 * this.metrics.doubleMisses / total)}%).`);
|
|
58
|
+
`Local hits: ${this.metrics.localHits} (${total && Math.floor((100 * this.metrics.localHits) / total)}%), ` +
|
|
59
|
+
`Redis hits: ${this.metrics.redisHits} (${total && Math.floor((100 * this.metrics.redisHits) / total)}%), ` +
|
|
60
|
+
`Double misses: ${this.metrics.doubleMisses} (${total && Math.floor((100 * this.metrics.doubleMisses) / total)}%).`);
|
|
61
61
|
this.metrics.localHits = 0;
|
|
62
62
|
this.metrics.redisHits = 0;
|
|
63
63
|
this.metrics.doubleMisses = 0;
|
|
@@ -85,14 +85,14 @@ class WriteThroughCache extends CacheInstance_1.CacheInstance {
|
|
|
85
85
|
* @inheritdoc
|
|
86
86
|
*/
|
|
87
87
|
async itemCount() {
|
|
88
|
-
return await this.redisCacheForReading.itemCount() + await this.localCache.itemCount();
|
|
88
|
+
return (await this.redisCacheForReading.itemCount()) + (await this.localCache.itemCount());
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
91
|
* @inheritdoc
|
|
92
92
|
*/
|
|
93
93
|
async setValue(key, value, ttl = 0) {
|
|
94
94
|
const response = await this.localCache.setValue(key, value, ttl);
|
|
95
|
-
return await this.redisCacheForWriting.setValue(key, value, ttl) && response;
|
|
95
|
+
return (await this.redisCacheForWriting.setValue(key, value, ttl)) && response;
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
98
|
* @inheritdoc
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WriteThroughCache.js","sourceRoot":"","sources":["../../../src/lib/WriteThroughCache.ts"],"names":[],"mappings":";;;AAAA,mDAA+D;AAC/D,6CAA0C;AAC1C,6CAA0C;
|
|
1
|
+
{"version":3,"file":"WriteThroughCache.js","sourceRoot":"","sources":["../../../src/lib/WriteThroughCache.ts"],"names":[],"mappings":";;;AAAA,mDAA+D;AAC/D,6CAA0C;AAC1C,6CAA0C;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAa,iBAAkB,SAAQ,6BAAa;IAC1C,oBAAoB,CAAgB;IACpC,oBAAoB,CAAgB;IACpC,UAAU,CAAgB;IAE1B,OAAO,CAKb;IAEF,YAAY,QAAgB;QAC1B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,oBAAoB,GAAG,IAAI,uBAAU,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG,IAAI,uBAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAU,EAAE,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG;YACb,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;YACZ,YAAY,EAAE,CAAC;SAChB,CAAC;QACF,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,CAAC;YAChD,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;YAChF,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,MAAM,EACN,wDAAwD,aAAa,MAAM,CAC5E,CAAC;gBACF,WAAW,CACT,GAAG,EAAE;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC1F,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,MAAM,EACN,yCAAyC,aAAa,iBAAiB,KAAK,IAAI;wBAC9E,eAAe,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM;wBAC3G,eAAe,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM;wBAC3G,kBAAkB,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CACtH,CAAC;oBAEF,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;oBAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;oBAC3B,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;gBAChC,CAAC,EACD,aAAa,GAAG,EAAE,GAAG,IAAI,CAC1B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,MAAM,EACN,+FAA+F;oBAC7F,uCAAuC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,CACvF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEM,EAAE,CAAC,SAA0B,EAAE,QAAkC;QACtE,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS;QACpB,OAAO,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,KAAoB,EAAE,GAAG,GAAG,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC;IACjF,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW;QAC/B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC;YACvC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC;SACtC,CAAC,CAAC;QAEH,IAAI,UAAU,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;YAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,GAAW;QAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,OAAe;QAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW;QACtB,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACI,kBAAkB;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAxKD,8CAwKC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cachette",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.15",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=20",
|
|
6
6
|
"npm": ">=10"
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"clean": "rm -rf dist/ node_modules/ ci_output/ coverage/ .nyc_output/ *.tgz",
|
|
26
26
|
"compile": "tsc",
|
|
27
27
|
"prepublishOnly": "npm run clean && npm install && npm run compile",
|
|
28
|
-
"
|
|
28
|
+
"format:check": "prettier --check 'src/**/*.{js,ts}' 'test/**/*.{js,ts}'",
|
|
29
|
+
"lint": "eslint --fix 'src/**/*.{js,ts}' 'test/**/*.{js,ts}' && prettier --write 'src/**/*.{js,ts}' 'test/**/*.{js,ts}'",
|
|
29
30
|
"test": "npm run compile && nyc mocha --config test/mocharc.js 'dist/test/**/*.js'; test -z \"$TEST_REDIS_URL\" && echo '!!! Warning: TEST_REDIS_URL unset, Redis tests did not run !!!' || true",
|
|
30
31
|
"test:ci": "npm run compile && mkdir -p ci_output/testresults && mocha --config test/mocharc-ci.js 'dist/test/**/*.js'",
|
|
31
32
|
"relock": "rm -rf node_modules package-lock.json; npm install --package-lock; npm out; true",
|
|
@@ -64,6 +65,7 @@
|
|
|
64
65
|
"mocha": "11.x",
|
|
65
66
|
"npm-audit-resolver": "^3.0.0-7",
|
|
66
67
|
"nyc": "17.x",
|
|
68
|
+
"prettier": "3.x",
|
|
67
69
|
"sinon": "21.x",
|
|
68
70
|
"source-map-support": "0.x",
|
|
69
71
|
"typescript": "5.x",
|