cachette 1.1.16 → 1.1.19

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/dist/src/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAkC;AAClC,sDAAoC;AACpC,mDAAiC;AACjC,mDAAiC;AACjC,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,sDAAoC;AACpC,mDAAiC;AACjC,mDAAiC;AACjC,0DAAwC"}
@@ -76,6 +76,14 @@ export declare abstract class CacheInstance extends EventEmitter {
76
76
  * @param lock The lock object
77
77
  */
78
78
  unlock(lock: any): Promise<void>;
79
+ /**
80
+ * Determine whether *at least one non-expired lock* starts with the given pattern.
81
+ */
82
+ hasLock(prefix: string): Promise<boolean>;
83
+ /**
84
+ * Terminate / exit / quit the instance
85
+ */
86
+ quit(): Promise<void>;
79
87
  /**
80
88
  * Keep track of active fetches to prevent
81
89
  * simultaneous requests to the same resource in parallel.
@@ -36,6 +36,18 @@ class CacheInstance extends EventEmitter {
36
36
  unlock(lock) {
37
37
  throw new Error('unsupported');
38
38
  }
39
+ /**
40
+ * Determine whether *at least one non-expired lock* starts with the given pattern.
41
+ */
42
+ hasLock(prefix) {
43
+ throw new Error('unsupported');
44
+ }
45
+ /**
46
+ * Terminate / exit / quit the instance
47
+ */
48
+ quit() {
49
+ return new Promise((resolve) => { resolve(); });
50
+ }
39
51
  /**
40
52
  * Get or fetch a value
41
53
  *
@@ -1 +1 @@
1
- {"version":3,"file":"CacheInstance.js","sourceRoot":"","sources":["../../../src/lib/CacheInstance.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AAMvC,MAAsB,aAAc,SAAQ,YAAY;IAAxD;;QA8FE;;;WAGG;QACK,kBAAa,GAA8C,EAAE,CAAC;IA4FxE,CAAC;IA7HC;;OAEG;IACI,kBAAkB;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACI,IAAI,CAAC,QAAgB,EAAE,KAAa;QACzC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,IAAS;QACrB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IASD;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,eAAe,CAC1B,GAAW,EACX,GAAW,EACX,aAA+B,EAC/B,OAAgB,EAChB,gBAA0C;QAG1C,kBAAkB;QAClB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,YAAY,KAAK,EAAE;YAC3B,IAAI,gBAAgB,EAAE;gBACpB,MAAM,MAAM,CAAC;aACd;iBAAM;gBACL,MAAM,GAAG,SAAS,CAAC;aACpB;SACF;QACD,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,MAAM,CAAC;SACf;QAED,oBAAoB;QACpB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,CAAC;SACrB;QAED,wBAAwB;QACxB,IAAI,IAAS,CAAC;QACd,IAAI;YACF,yBAAyB;YACzB,MAAM,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAC;YAChC,IAAI,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBACxC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;gBACjD,8DAA8D;gBAC9D,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,WAAW,YAAY,KAAK,EAAE;oBAChC,IAAI,gBAAgB,EAAE;wBACpB,MAAM,WAAW,CAAC;qBACnB;yBAAM;wBACL,WAAW,GAAG,SAAS,CAAC;qBACzB;iBACF;gBACD,IAAI,WAAW,KAAK,SAAS,EAAE;oBAC7B,OAAO,WAAW,CAAC;iBACpB;aACF;YAED,SAAS;YACT,IAAI,KAAwB,CAAC;YAC7B,IAAI,MAAW,CAAC;YAChB,IAAI;gBACF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,aAAa,EAAE,CAAC;gBAC/D,MAAM,GAAG,MAAM,YAAY,CAAC;aAC7B;YAAC,OAAO,GAAG,EAAE;gBACZ,KAAK,GAAG,GAAG,CAAC;aACb;YAED,oEAAoE;YACpE,IAAI,KAAK,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;gBACxD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;aACtC;iBAAM,IAAI,MAAM,KAAK,SAAS,EAAE;gBAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;aACvC;YAED,IAAI,KAAK,EAAE;gBACT,MAAM,KAAK,CAAC;aACb;YACD,OAAO,MAAM,CAAC;SACf;gBAAS;YACR,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,IAAI,EAAE;gBACR,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACzB;SACF;IACH,CAAC;CAEF;AA9LD,sCA8LC"}
1
+ {"version":3,"file":"CacheInstance.js","sourceRoot":"","sources":["../../../src/lib/CacheInstance.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { CachableValue, CacheInstance } 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;
5
6
  private cache;
6
7
  /**
7
8
  * @inheritdoc
@@ -18,7 +19,7 @@ export declare class LocalCache extends CacheInstance {
18
19
  /**
19
20
  * @inheritdoc
20
21
  */
21
- getValue(key: string): Promise<string>;
22
+ getValue(key: string): Promise<any>;
22
23
  /**
23
24
  * @inheritdoc
24
25
  */
@@ -35,4 +36,24 @@ export declare class LocalCache extends CacheInstance {
35
36
  * @inheritdoc
36
37
  */
37
38
  clearMemory(): Promise<void>;
39
+ /**
40
+ * @inheritdoc
41
+ * Dumb locking is supported for local development work
42
+ */
43
+ isLockingSupported(): boolean;
44
+ /**
45
+ * @inheritdoc
46
+ */
47
+ lock(resource: string, ttlMs: number): Promise<any>;
48
+ /**
49
+ * @inheritdoc
50
+ */
51
+ unlock(lock: any): Promise<void>;
52
+ /**
53
+ * @inheritdoc
54
+ *
55
+ * Note that this specific implementation in `LocalCache` is not very efficient.
56
+ * Use RedisCache for a performant implementation.
57
+ */
58
+ hasLock(prefix: string): Promise<boolean>;
38
59
  }
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LocalCache = void 0;
4
4
  const LRU = require("lru-cache");
5
5
  const CacheInstance_1 = require("./CacheInstance");
6
+ async function sleep(ms) {
7
+ return new Promise(resolve => setTimeout(resolve, ms));
8
+ }
6
9
  class LocalCache extends CacheInstance_1.CacheInstance {
7
10
  constructor() {
8
11
  super(...arguments);
@@ -10,7 +13,7 @@ class LocalCache extends CacheInstance_1.CacheInstance {
10
13
  // for options.
11
14
  this.cache = new LRU({
12
15
  max: Number.parseInt(process.env.CACHETTE_LC_MAX_ITEMS, 10) || LocalCache.DEFAULT_MAX_ITEMS,
13
- maxAge: Number.parseInt(process.env.CACHETTE_LC_MAX_AGE, 10) || LocalCache.DEFAULT_MAX_AGE,
16
+ ttl: Number.parseInt(process.env.CACHETTE_LC_MAX_AGE, 10) || LocalCache.DEFAULT_MAX_AGE,
14
17
  stale: false,
15
18
  });
16
19
  }
@@ -24,7 +27,7 @@ class LocalCache extends CacheInstance_1.CacheInstance {
24
27
  * @inheritdoc
25
28
  */
26
29
  async itemCount() {
27
- return this.cache.itemCount;
30
+ return this.cache.size;
28
31
  }
29
32
  /**
30
33
  * @inheritdoc
@@ -40,7 +43,7 @@ class LocalCache extends CacheInstance_1.CacheInstance {
40
43
  this.cache.set(key, value);
41
44
  }
42
45
  else {
43
- this.cache.set(key, value, ttl * 1000);
46
+ this.cache.set(key, value, { ttl: ttl * 1000 });
44
47
  }
45
48
  return true;
46
49
  }
@@ -62,23 +65,83 @@ class LocalCache extends CacheInstance_1.CacheInstance {
62
65
  * @inheritdoc
63
66
  */
64
67
  async delValue(key) {
65
- this.cache.del(key);
68
+ this.cache.delete(key);
66
69
  }
67
70
  /**
68
71
  * @inheritdoc
69
72
  */
70
73
  async clear() {
71
- this.cache.reset();
74
+ this.cache.clear();
72
75
  }
73
76
  /**
74
77
  * @inheritdoc
75
78
  */
76
79
  async clearMemory() {
77
- this.cache.reset();
80
+ this.cache.clear();
81
+ }
82
+ /**
83
+ * @inheritdoc
84
+ * Dumb locking is supported for local development work
85
+ */
86
+ isLockingSupported() {
87
+ return true;
88
+ }
89
+ /**
90
+ * @inheritdoc
91
+ */
92
+ async lock(resource, ttlMs) {
93
+ let isLocked = true;
94
+ const startTimestamp = Date.now();
95
+ while (isLocked) {
96
+ if (Date.now() - startTimestamp > LocalCache.LOCK_ACQUIRE_TIMEOUT) {
97
+ throw new Error(`Abandoning locking ${resource} , as timed out while waiting for other lock to be released.`);
98
+ }
99
+ this.cache.purgeStale();
100
+ if (!this.cache.has(resource)) {
101
+ isLocked = false;
102
+ }
103
+ else {
104
+ // LRU keeps its TTL information private, so we don't know how long to wait.
105
+ // Whatever, we just loop on waiting a bit and retrying.
106
+ await sleep(10);
107
+ }
108
+ }
109
+ this.cache.set(resource, 1, { ttl: ttlMs });
110
+ return new Promise(resolve => { resolve(resource); });
111
+ }
112
+ /**
113
+ * @inheritdoc
114
+ */
115
+ async unlock(lock) {
116
+ this.cache.delete(lock);
117
+ return new Promise(resolve => { resolve(); });
118
+ }
119
+ /**
120
+ * @inheritdoc
121
+ *
122
+ * Note that this specific implementation in `LocalCache` is not very efficient.
123
+ * Use RedisCache for a performant implementation.
124
+ */
125
+ async hasLock(prefix) {
126
+ const startsWithPattern = prefix.replace(/\*$/, '');
127
+ let found = false;
128
+ this.cache.purgeStale();
129
+ this.cache.forEach((value, key) => {
130
+ // Doing a full CPU-inefficient traversal because `lru-cache.LRU` doesn't
131
+ // provide a `some` function or a way to exit this `forEach`. An alternative
132
+ // would be to work on `keys()`, which then would be RAM-inefficient.
133
+ // Neither is a big deal, this cache is meant to be used for small local/dev
134
+ // If this needs fixing, TODO move away from LRU.lru-cache.
135
+ if (key.startsWith(startsWithPattern)) {
136
+ found = true;
137
+ }
138
+ });
139
+ return new Promise((resolve) => { resolve(found); });
78
140
  }
79
141
  }
80
142
  exports.LocalCache = LocalCache;
81
143
  LocalCache.DEFAULT_MAX_ITEMS = 5000;
82
144
  // Default maximum age for the items, in MS.
83
145
  LocalCache.DEFAULT_MAX_AGE = 30 * 60 * 1000;
146
+ LocalCache.LOCK_ACQUIRE_TIMEOUT = 2000;
84
147
  //# sourceMappingURL=LocalCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalCache.js","sourceRoot":"","sources":["../../../src/lib/LocalCache.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC,mDAA+D;AAG/D,MAAa,UAAW,SAAQ,6BAAa;IAA7C;;QAME,uDAAuD;QACvD,eAAe;QACP,UAAK,GAAQ,IAAI,GAAG,CAAC;YAC3B,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAA+B,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,iBAAiB;YACrG,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAA6B,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,eAAe;YACpG,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IAyEL,CAAC;IAvEC;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,OAAO;IACT,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,KAAoB,EAAE,GAAG,GAAG,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAE7B,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;SACd;QAED,oDAAoD;QACpD,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;SACxC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW;QAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,GAAW;QAC7B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW;QAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;;AAnFH,gCAqFC;AAnFe,4BAAiB,GAAG,IAAI,CAAC;AACvC,4CAA4C;AAC9B,0BAAe,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"LocalCache.js","sourceRoot":"","sources":["../../../src/lib/LocalCache.ts"],"names":[],"mappings":"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"}
@@ -17,11 +17,11 @@ export declare class RedisCache extends CacheInstance {
17
17
  static FALSE_VALUE: string;
18
18
  static JSON_PREFIX: string;
19
19
  static ERROR_PREFIX: string;
20
- static RETRY_DELAY: number;
21
- static MAX_REDLOCK_RETRY_COUNT: number;
22
- static DEFAULT_REDIS_CLOCK_DRIFT_MS: number;
23
- static DEFAULT_REDLOCK_DELAY_MS: number;
24
- static DEFAULT_REDLOCK_JITTER_MS: number;
20
+ static REDIS_CONNECTION_TIMEOUT_MS: number;
21
+ static REDLOCK_RETRY_COUNT: number;
22
+ static REDLOCK_RETRY_DELAY_MS: number;
23
+ static REDLOCK_CLOCK_DRIFT_FACTOR: number;
24
+ static REDLOCK_JITTER_MS: number;
25
25
  private redisClient;
26
26
  private ready;
27
27
  private url;
@@ -41,6 +41,7 @@ export declare class RedisCache extends CacheInstance {
41
41
  * with an UncaughtException.
42
42
  */
43
43
  errorStrategy(): void;
44
+ redlockErrorStrategy(err: any): void;
44
45
  /**
45
46
  * The end event is emitted by the redis client when an
46
47
  * established connection has ended.
@@ -116,4 +117,25 @@ export declare class RedisCache extends CacheInstance {
116
117
  * @inheritdoc
117
118
  */
118
119
  unlock(lock: Redlock.Lock): Promise<void>;
120
+ /**
121
+ * @inheritdoc
122
+ *
123
+ * Implementation note & usage ***warning***: looking at Redis docs and the www,
124
+ * there's no "index-backed" Redis function to do this in O(1).
125
+ *
126
+ * So, doing it with a Redis SCAN, https://redis.io/commands/scan . In many use cases it's okay,
127
+ * 1. Because Redis SCAN is fast (10M keys / 40ms on a laptop)
128
+ * 2. If your use case writes a reasonable number of locks, and sets reasonably-small TTLs,
129
+ * guaranteeing Redis contains a reasonable-to-scan volume of items (depending on your hardware).
130
+ *
131
+ * Recommendation: This implies **workloads relying on this function should
132
+ * own their own Redis db**, to not scan through tons of unrelated keys.
133
+ *
134
+ * Implementation note: you might try to use instead a redis Hashmap / Set / Sorted set to group
135
+ * "sublocks", to be able use H/S/Z Redis functions to query efficiently inside a group of locks.
136
+ * That won't work in use cases where you need one TTL per lock, because it'd limit to one TTL
137
+ * (associated to a Redis *value*!) per prefix. Thus, values with TTLs, thus, SCAN.
138
+ */
139
+ hasLock(prefix: string): Promise<boolean>;
140
+ quit(): Promise<void>;
119
141
  }
@@ -21,7 +21,7 @@ class RedisCache extends CacheInstance_1.CacheInstance {
21
21
  this.url = redisUrl;
22
22
  this.redisClient = new Redis(redisUrl, {
23
23
  readOnly,
24
- retryStrategy: () => RedisCache.RETRY_DELAY,
24
+ retryStrategy: () => RedisCache.REDIS_CONNECTION_TIMEOUT_MS,
25
25
  // master failover
26
26
  reconnectOnError: (err) => !readOnly && err.message.startsWith('READONLY'),
27
27
  // This will prevent the get/setValue calls from hanging
@@ -29,14 +29,16 @@ class RedisCache extends CacheInstance_1.CacheInstance {
29
29
  enableOfflineQueue: false,
30
30
  });
31
31
  this.redlock = new Redlock([this.redisClient], {
32
- driftFactor: RedisCache.DEFAULT_REDIS_CLOCK_DRIFT_MS,
33
- retryCount: RedisCache.MAX_REDLOCK_RETRY_COUNT,
34
- retryDelay: RedisCache.DEFAULT_REDLOCK_DELAY_MS,
35
- retryJitter: RedisCache.DEFAULT_REDLOCK_JITTER_MS,
32
+ driftFactor: RedisCache.REDLOCK_CLOCK_DRIFT_FACTOR,
33
+ retryCount: RedisCache.REDLOCK_RETRY_COUNT,
34
+ retryDelay: RedisCache.REDLOCK_RETRY_DELAY_MS,
35
+ retryJitter: RedisCache.REDLOCK_JITTER_MS,
36
36
  });
37
37
  this.redisClient.on('ready', this.startConnectionStrategy.bind(this));
38
38
  this.redisClient.on('end', this.endConnectionStrategy.bind(this));
39
39
  this.redisClient.on('error', this.errorStrategy.bind(this));
40
+ // TODO when migrating to Redlock v5: rename 'clientError' to 'error'
41
+ this.redlock.on('clientError', this.redlockErrorStrategy.bind(this));
40
42
  }
41
43
  /**
42
44
  * @inheritdoc
@@ -61,6 +63,9 @@ class RedisCache extends CacheInstance_1.CacheInstance {
61
63
  errorStrategy() {
62
64
  this.emit('warn', 'Error while connected to the Redis cache!');
63
65
  }
66
+ redlockErrorStrategy(err) {
67
+ this.emit('warn', 'Redlock error:', err);
68
+ }
64
69
  /**
65
70
  * The end event is emitted by the redis client when an
66
71
  * established connection has ended.
@@ -255,6 +260,43 @@ class RedisCache extends CacheInstance_1.CacheInstance {
255
260
  async unlock(lock) {
256
261
  return this.redlock.unlock(lock);
257
262
  }
263
+ /**
264
+ * @inheritdoc
265
+ *
266
+ * Implementation note & usage ***warning***: looking at Redis docs and the www,
267
+ * there's no "index-backed" Redis function to do this in O(1).
268
+ *
269
+ * So, doing it with a Redis SCAN, https://redis.io/commands/scan . In many use cases it's okay,
270
+ * 1. Because Redis SCAN is fast (10M keys / 40ms on a laptop)
271
+ * 2. If your use case writes a reasonable number of locks, and sets reasonably-small TTLs,
272
+ * guaranteeing Redis contains a reasonable-to-scan volume of items (depending on your hardware).
273
+ *
274
+ * Recommendation: This implies **workloads relying on this function should
275
+ * own their own Redis db**, to not scan through tons of unrelated keys.
276
+ *
277
+ * Implementation note: you might try to use instead a redis Hashmap / Set / Sorted set to group
278
+ * "sublocks", to be able use H/S/Z Redis functions to query efficiently inside a group of locks.
279
+ * That won't work in use cases where you need one TTL per lock, because it'd limit to one TTL
280
+ * (associated to a Redis *value*!) per prefix. Thus, values with TTLs, thus, SCAN.
281
+ */
282
+ async hasLock(prefix) {
283
+ const redisPrefix = prefix.endsWith('*') ? prefix : `${prefix}*`;
284
+ let cursor = '';
285
+ while (cursor !== '0') { // indicates Redis completed the scan
286
+ // Redis detail: we set the `count` option to a number (1000) greater than
287
+ // the default (10), to minimize the amount of network round-trips caused
288
+ // by incomplete scans needing more scanning from the returned cursor.
289
+ const [nextCursor, matchingKeys] = await this.redisClient.scan(cursor || '0', 'match', redisPrefix, 'count', 1000);
290
+ if (matchingKeys.length > 0) {
291
+ return true;
292
+ }
293
+ cursor = nextCursor;
294
+ }
295
+ return false;
296
+ }
297
+ async quit() {
298
+ await this.redisClient.quit();
299
+ }
258
300
  }
259
301
  exports.RedisCache = RedisCache;
260
302
  /**
@@ -266,9 +308,9 @@ RedisCache.TRUE_VALUE = 'f405eed4-507c-4aa5-a6d2-c1813d584b8f-TRUE';
266
308
  RedisCache.FALSE_VALUE = 'f405eed4-507c-4aa5-a6d2-c1813d584b8f-FALSE';
267
309
  RedisCache.JSON_PREFIX = 'f405eed4-507c-4aa5-a6d2-c1813d584b8f-JSON';
268
310
  RedisCache.ERROR_PREFIX = 'f405eed4-507c-4aa5-a6d2-c1813d584b8f-ERROR';
269
- RedisCache.RETRY_DELAY = 5000;
270
- RedisCache.MAX_REDLOCK_RETRY_COUNT = 20;
271
- RedisCache.DEFAULT_REDIS_CLOCK_DRIFT_MS = 0.01;
272
- RedisCache.DEFAULT_REDLOCK_DELAY_MS = 200;
273
- RedisCache.DEFAULT_REDLOCK_JITTER_MS = 200;
311
+ RedisCache.REDIS_CONNECTION_TIMEOUT_MS = parseInt(process.env.REDIS_CONNECTION_TIMEOUT_MS, 10) || 5000;
312
+ RedisCache.REDLOCK_RETRY_COUNT = parseInt(process.env.REDLOCK_RETRY_COUNT, 10) || 20; // lib. default: 10
313
+ RedisCache.REDLOCK_RETRY_DELAY_MS = parseInt(process.env.REDLOCK_RETRY_DELAY_MS, 10) || 200; // lib. default: 200
314
+ RedisCache.REDLOCK_CLOCK_DRIFT_FACTOR = parseInt(process.env.REDLOCK_CLOCK_DRIFT_FACTOR, 10) || 0.01; // lib. default: 0.01
315
+ RedisCache.REDLOCK_JITTER_MS = parseInt(process.env.REDLOCK_JITTER_MS, 10) || 200; // lib. default: 200
274
316
  //# sourceMappingURL=RedisCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RedisCache.js","sourceRoot":"","sources":["../../../src/lib/RedisCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RedisCache.js","sourceRoot":"","sources":["../../../src/lib/RedisCache.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,mCAAmC;AAEnC,mDAA+D;AAG/D;;;;;;GAMG;AACH,MAAa,UAAW,SAAQ,6BAAa;IAuB3C,YAAY,QAAgB,EAAE,QAAQ,GAAG,KAAK;QAC5C,KAAK,EAAE,CAAC;QALF,UAAK,GAAG,KAAK,CAAC;QAOpB,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE;YACxF,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,GAAG,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE;YACrC,QAAQ;YACR,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,2BAA2B;YAC3D,kBAAkB;YAClB,gBAAgB,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;YAC/E,wDAAwD;YACxD,oCAAoC;YACpC,kBAAkB,EAAE,KAAK;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC7C,WAAW,EAAE,UAAU,CAAC,0BAA0B;YAClD,UAAU,EAAE,UAAU,CAAC,mBAAmB;YAC1C,UAAU,EAAE,UAAU,CAAC,sBAAsB;YAC7C,WAAW,EAAE,UAAU,CAAC,iBAAiB;SAC1C,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5D,qEAAqE;QACrE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO;SACR;QACD,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACI,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,2CAA2C,CAAC,CAAC;IACjE,CAAC;IAEM,oBAAoB,CAAC,GAAQ;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,qBAAqB,CAAC,GAAG;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,2BAA2B,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACI,uBAAuB;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,sCAAsC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACvE,CAAC;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,cAAc,CAAC,KAAoB;QAE/C,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,OAAO,UAAU,CAAC,UAAU,CAAC;SAC9B;QAED,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,OAAO,UAAU,CAAC,UAAU,CAAC;SAC9B;QAED,IAAI,KAAK,KAAK,KAAK,EAAE;YACnB,OAAO,UAAU,CAAC,WAAW,CAAC;SAC/B;QAED,IAAI,KAAK,YAAY,KAAK,EAAE;YAC1B,OAAO,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC9C,GAAG,KAAK;gBACR,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;SACJ;QAED,IAAI,KAAK,YAAY,MAAM,EAAE;YAC3B,OAAO,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACvD;QAED,OAAO,KAAK,CAAC;IAEf,CAAC;IAED;;;;;;;;;;;OAWG;IACI,MAAM,CAAC,gBAAgB,CAAC,KAAoB;QAEjD,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,4EAA4E;YAC5E,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,KAAK,KAAK,UAAU,CAAC,UAAU,EAAE;YACnC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,KAAK,KAAK,UAAU,CAAC,UAAU,EAAE;YACnC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,KAAK,KAAK,UAAU,CAAC,WAAW,EAAE;YACpC,OAAO,KAAK,CAAC;SACd;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACtF,4EAA4E;YAC5E,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC;SAC/E;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;SACnE;QAED,OAAO,KAAK,CAAC;IAEf,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CACnB,GAAW,EACX,KAAoB,EACpB,GAAG,GAAG,CAAC;QAEP,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SACrD;QAAC,OAAO,KAAK,EAAE;YACd;;;eAGG;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,0CAA0C,EAAE,KAAK,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,GAAW,EACX,KAAoB,EACpB,GAAW;QAEX,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAE7B,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;SACd;QAED,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC;QACX,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;SAC5D;aAAM;YACL,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACjD;QAED,OAAO,MAAM,KAAK,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW;QAC/B,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SACzC;QAAC,OAAO,KAAK,EAAE;YACd;;;eAGG;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iDAAiD,EAAE,KAAK,CAAC,CAAC;YAC5E,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,GAAW;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,GAAW;QAC7B,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;gBACd,OAAO,CAAC,CAAC;aACV;YACD,IAAI,GAAG,IAAI,CAAC,EAAE;gBACZ,OAAO,SAAS,CAAC;aAClB;YACD,OAAO,GAAG,CAAC;SACZ;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,+CAA+C,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW;QACtB,OAAO;IACT,CAAC;IAED;;;;OAIG;IACI,kBAAkB;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,KAAa;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,IAAkB;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,KAAK,CAAC,OAAO,CAAC,MAAc;QACjC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;QACjE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,OAAO,MAAM,KAAK,GAAG,EAAE,EAAE,qCAAqC;YAC5D,0EAA0E;YAC1E,yEAAyE;YACzE,sEAAsE;YACtE,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACnH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,OAAO,IAAI,CAAC;aACb;YACD,MAAM,GAAG,UAAU,CAAC;SACrB;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;;AAnWH,gCAqWC;AAnWC;;;GAGG;AACW,qBAAU,GAAG,2CAA2C,CAAC;AACzD,qBAAU,GAAG,2CAA2C,CAAC;AACzD,sBAAW,GAAG,4CAA4C,CAAC;AAC3D,sBAAW,GAAG,2CAA2C,CAAC;AAC1D,uBAAY,GAAG,4CAA4C,CAAC;AAE5D,sCAA2B,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAAqC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;AACtG,8BAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAA6B,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,mBAAmB;AACxG,iCAAsB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAgC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,oBAAoB;AAChH,qCAA0B,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAAoC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,qBAAqB;AAC1H,4BAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAA2B,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,oBAAoB"}
@@ -40,7 +40,11 @@ export declare class WriteThroughCache extends CacheInstance {
40
40
  * @inheritdoc
41
41
  */
42
42
  clearMemory(): Promise<void>;
43
+ /**
44
+ * @inheritdoc
45
+ * Locking is *not* supported by the Write-Through cache. You want either:
46
+ * - The full-fledged RedisCache for prod workloads
47
+ * - A dumb LocalCache for dev/local workloads
48
+ */
43
49
  isLockingSupported(): boolean;
44
- lock(resource: string, ttlMs: number): Promise<any>;
45
- unlock(lock: any): Promise<void>;
46
50
  }
@@ -84,14 +84,14 @@ class WriteThroughCache extends CacheInstance_1.CacheInstance {
84
84
  await this.localCache.clearMemory();
85
85
  await this.redisCacheForWriting.clearMemory();
86
86
  }
87
+ /**
88
+ * @inheritdoc
89
+ * Locking is *not* supported by the Write-Through cache. You want either:
90
+ * - The full-fledged RedisCache for prod workloads
91
+ * - A dumb LocalCache for dev/local workloads
92
+ */
87
93
  isLockingSupported() {
88
- return true;
89
- }
90
- lock(resource, ttlMs) {
91
- return this.redisCacheForWriting.lock(resource, ttlMs);
92
- }
93
- unlock(lock) {
94
- return this.redisCacheForWriting.unlock(lock);
94
+ return false;
95
95
  }
96
96
  }
97
97
  exports.WriteThroughCache = WriteThroughCache;
@@ -1 +1 @@
1
- {"version":3,"file":"WriteThroughCache.js","sourceRoot":"","sources":["../../../src/lib/WriteThroughCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WriteThroughCache.js","sourceRoot":"","sources":["../../../src/lib/WriteThroughCache.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cachette",
3
- "version": "1.1.16",
3
+ "version": "1.1.19",
4
4
  "engines": {
5
5
  "node": ">=14.0.0",
6
6
  "npm": ">=6.10.2"
@@ -58,16 +58,17 @@
58
58
  "@types/bluebird": "3.x",
59
59
  "@types/chai": "4.x",
60
60
  "@types/ioredis": "4.x",
61
- "@types/mocha": "8.x",
61
+ "@types/lru-cache": "7.x",
62
+ "@types/mocha": "9.x",
62
63
  "@types/node": "14.x",
63
64
  "@types/sinon": "9.x",
64
- "@typescript-eslint/eslint-plugin": "4.x",
65
- "@typescript-eslint/parser": "4.x",
65
+ "@typescript-eslint/eslint-plugin": "5.x",
66
+ "@typescript-eslint/parser": "5.x",
66
67
  "bluebird": "3.x",
67
68
  "chai": "4.x",
68
- "eslint": "7.x",
69
+ "eslint": "8.x",
69
70
  "mocha": "9.x",
70
- "npm-audit-resolver": "2.x",
71
+ "npm-audit-resolver": "^3.0.0-7",
71
72
  "nyc": "15.x",
72
73
  "pre-commit": "1.x",
73
74
  "sinon": "9.x",
@@ -77,7 +78,7 @@
77
78
  "dependencies": {
78
79
  "@types/redlock": "4.x",
79
80
  "ioredis": "4.x",
80
- "lru-cache": "6.x",
81
+ "lru-cache": "7.x",
81
82
  "redlock": "4.x"
82
83
  }
83
84
  }