@goatlab/node-backend 1.3.0 → 1.4.0
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/Cache.d.ts +19 -0
- package/dist/Cache.js +38 -6
- package/dist/Cache.js.map +1 -1
- package/dist/cache/LazyRedisStore.d.ts +15 -3
- package/dist/cache/LazyRedisStore.js +14 -4
- package/dist/cache/LazyRedisStore.js.map +1 -1
- package/dist/cache/RedisConnectionPool.d.ts +13 -0
- package/dist/cache/RedisConnectionPool.js +35 -0
- package/dist/cache/RedisConnectionPool.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
package/dist/Cache.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { type Milliseconds } from '@goatlab/js-utils';
|
|
2
|
+
import type { ClusterOptions } from 'ioredis';
|
|
2
3
|
import type { Options } from 'keyv';
|
|
3
4
|
declare const Keyv: any;
|
|
5
|
+
export interface CacheClusterConfig {
|
|
6
|
+
nodes: Array<{
|
|
7
|
+
host: string;
|
|
8
|
+
port: number;
|
|
9
|
+
}>;
|
|
10
|
+
options?: ClusterOptions;
|
|
11
|
+
}
|
|
4
12
|
export interface CacheOptions<T> extends Options<T> {
|
|
5
13
|
usesLRUMemory?: boolean;
|
|
6
14
|
tenantId?: string;
|
|
@@ -14,6 +22,12 @@ export interface CacheOptions<T> extends Options<T> {
|
|
|
14
22
|
* @default true
|
|
15
23
|
*/
|
|
16
24
|
lazy?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Redis Cluster configuration.
|
|
27
|
+
* When provided, the cache connects to a Redis Cluster instead of standalone Redis.
|
|
28
|
+
* Takes precedence over the `connection` string for store creation.
|
|
29
|
+
*/
|
|
30
|
+
cluster?: CacheClusterConfig;
|
|
17
31
|
}
|
|
18
32
|
export declare class Cache<T extends object = any> extends Keyv<T> {
|
|
19
33
|
private ns;
|
|
@@ -85,6 +99,11 @@ export declare class Cache<T extends object = any> extends Keyv<T> {
|
|
|
85
99
|
* @return void
|
|
86
100
|
*/
|
|
87
101
|
flush(): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* SCAN a single Redis node for keys matching a pattern and UNLINK them.
|
|
104
|
+
* Used for cluster-safe flush operations where `keys()` is not viable.
|
|
105
|
+
*/
|
|
106
|
+
private scanAndUnlink;
|
|
88
107
|
/**
|
|
89
108
|
* Get the underlying Redis client if available.
|
|
90
109
|
* Ensures lazy connection is established first.
|
package/dist/Cache.js
CHANGED
|
@@ -19,6 +19,7 @@ class Cache extends Keyv {
|
|
|
19
19
|
const tenantId = opts?.tenantId;
|
|
20
20
|
const namespace = opts?.namespace || '';
|
|
21
21
|
const lazy = opts?.lazy !== false; // Default to true
|
|
22
|
+
const clusterConfig = opts?.cluster;
|
|
22
23
|
// Build the full namespace including tenant ID if provided
|
|
23
24
|
// Format: "tenantId:namespace" or "tenantId" or "namespace" or ""
|
|
24
25
|
const fullNamespace = tenantId && namespace
|
|
@@ -29,7 +30,15 @@ class Cache extends Keyv {
|
|
|
29
30
|
// Determine which store to use
|
|
30
31
|
let store;
|
|
31
32
|
let lazyStore;
|
|
32
|
-
if (
|
|
33
|
+
if (clusterConfig) {
|
|
34
|
+
// Cluster mode: always lazy, use cluster config
|
|
35
|
+
lazyStore = new LazyRedisStore_1.LazyRedisStore(connection || 'cluster', {
|
|
36
|
+
nodes: clusterConfig.nodes,
|
|
37
|
+
options: clusterConfig.options,
|
|
38
|
+
});
|
|
39
|
+
store = lazyStore;
|
|
40
|
+
}
|
|
41
|
+
else if (connection) {
|
|
33
42
|
if (lazy) {
|
|
34
43
|
// Lazy mode: use LazyRedisStore that defers connection
|
|
35
44
|
lazyStore = new LazyRedisStore_1.LazyRedisStore(connection);
|
|
@@ -221,12 +230,21 @@ class Cache extends Keyv {
|
|
|
221
230
|
// Try to get direct Redis access for batch deletion (much faster)
|
|
222
231
|
const redis = await this.getRedisClient();
|
|
223
232
|
if (redis) {
|
|
224
|
-
// Use Redis SCAN + UNLINK for fast bulk deletion
|
|
225
233
|
const pattern = this.ns ? `${this.ns}:*` : '*';
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
//
|
|
229
|
-
|
|
234
|
+
if (typeof redis.nodes === 'function') {
|
|
235
|
+
// Redis Cluster: SCAN each master node individually
|
|
236
|
+
// redis.keys() fails on cluster because it only hits one slot
|
|
237
|
+
const masterNodes = redis.nodes('master');
|
|
238
|
+
for (const node of masterNodes) {
|
|
239
|
+
await this.scanAndUnlink(node, pattern);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
// Standalone: Use Redis SCAN + UNLINK for fast bulk deletion
|
|
244
|
+
const keys = await redis.keys(pattern);
|
|
245
|
+
if (keys.length > 0) {
|
|
246
|
+
await redis.unlink(keys);
|
|
247
|
+
}
|
|
230
248
|
}
|
|
231
249
|
}
|
|
232
250
|
else {
|
|
@@ -252,6 +270,20 @@ class Cache extends Keyv {
|
|
|
252
270
|
await this.memoryCache.clear();
|
|
253
271
|
}
|
|
254
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* SCAN a single Redis node for keys matching a pattern and UNLINK them.
|
|
275
|
+
* Used for cluster-safe flush operations where `keys()` is not viable.
|
|
276
|
+
*/
|
|
277
|
+
async scanAndUnlink(node, pattern) {
|
|
278
|
+
let cursor = '0';
|
|
279
|
+
do {
|
|
280
|
+
const [nextCursor, keys] = await node.scan(cursor, 'MATCH', pattern, 'COUNT', 200);
|
|
281
|
+
cursor = nextCursor;
|
|
282
|
+
if (keys.length > 0) {
|
|
283
|
+
await node.unlink(...keys);
|
|
284
|
+
}
|
|
285
|
+
} while (cursor !== '0');
|
|
286
|
+
}
|
|
255
287
|
/**
|
|
256
288
|
* Get the underlying Redis client if available.
|
|
257
289
|
* Ensures lazy connection is established first.
|
package/dist/Cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../src/Cache.ts"],"names":[],"mappings":";;;AAAA,gDAA+D;AAG/D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,+CAA0C;AAC1C,2DAAuD;AACvD,qEAAiE;AAiBjE,MAAa,KAA8B,SAAQ,IAAO;IAChD,EAAE,CAAQ;IACV,SAAS,CAAS;IAClB,aAAa,CAAU;IACvB,OAAO,CAAY;IACnB,WAAW,CAAa;IACxB,gBAAgB,CAAS;IACzB,cAAc,CAAqB;IACnC,SAAS,CAAiB;IAElC,YAAY,EACV,UAAU,EACV,IAAI,GAIL;QACC,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAA;QAC/B,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAA;QACvC,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,KAAK,CAAA,CAAC,kBAAkB;QAEpD,2DAA2D;QAC3D,kEAAkE;QAClE,MAAM,aAAa,GACjB,QAAQ,IAAI,SAAS;YACnB,CAAC,CAAC,GAAG,QAAQ,IAAI,SAAS,EAAE;YAC5B,CAAC,CAAC,QAAQ,IAAI,SAAS,IAAI,EAAE,CAAA;QAEjC,+BAA+B;QAC/B,MAAM,IAAI,GAAG,yCAAmB,CAAC,WAAW,EAAE,CAAA;QAE9C,+BAA+B;QAC/B,IAAI,KAAU,CAAA;QACd,IAAI,SAAqC,CAAA;QAEzC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,IAAI,EAAE,CAAC;gBACT,uDAAuD;gBACvD,SAAS,GAAG,IAAI,+BAAc,CAAC,UAAU,CAAC,CAAA;gBAC1C,KAAK,GAAG,SAAS,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,0CAA0C;YAC1C,KAAK,GAAG,IAAI,kBAAO,CAAI;gBACrB,GAAG,EAAE,IAAI;gBACT,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,CAAC;aACP,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC;YACJ,KAAK;YACL,GAAG,IAAI;YACP,SAAS,EAAE,aAAa;SACzB,CAAC,CAAA;QAEF,6DAA6D;QAC7D,mFAAmF;QACnF,qFAAqF;QACrF,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC1D,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACpD,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAA;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAE1B,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAI;YAC5B,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,CAAC;SACP,CAAC,CAAA;QAEF,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,SAAS,EAAE,aAAa;SACzB,CAAC,CAAA;QAEF,IAAI,CAAC,EAAE,GAAG,aAAa,CAAA;QACvB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,KAAK,CAAA;IACnD,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;OAEG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAA;IACrC,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAA;QACrC,CAAC;QACD,kDAAkD;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,aAAa,CAAC,MAAW;QAC/B,OAAO,CACL,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAC9B,CAAA;IACH,CAAC;IAEO,YAAY,CAAC,KAAU;QAC7B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;IAC9C,CAAC;IAEO,gBAAgB,CAAC,KAAU;QACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;IACzD,CAAC;IAEO,eAAe,CAAC,KAAU;QAChC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAA;IACpD,CAAC;IAEO,gBAAgB,CAAC,KAAU;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAC/C,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,IAAI,CAC9B,CAAA;QACD,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,CAAA;IACnC,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAsB;QACrC,6BAA6B;QAC7B,sCAAsC;QACtC,sBAAsB;QACtB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAEjD,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAA;YAClB,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEnC,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC;YACjC,sDAAsD;YACtD,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,GAAW;QAC7B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACpC,CAAC;QACD,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAIM,KAAK,CAAC,GAAG,CAAC,GAAsB;QACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC;QAED,OAAO,CAAC,CAAC,KAAK,CAAA;IAChB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,QAAQ,CACnB,GAAW,EACX,EAAgB,EAChB,EAAoB;QAEpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEjC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;QAEzB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,EAAoB;QAC5D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEjC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;QAEzB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,GAAW;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEjC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;QAED,OAAO,KAAU,CAAA;IACnB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,GAAW;QAC7B,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,KAAK;QAChB,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,OAAM;QACR,CAAC;QAED,kEAAkE;QAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QACzC,IAAI,KAAK,EAAE,CAAC;YACV,iDAAiD;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA;YAC9C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACtC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,+DAA+D;gBAC/D,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qEAAqE;YACrE,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YACpD,MAAM,YAAY,GAAa,EAAE,CAAA;YAEjC,IAAI,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjD,IAAI,mBAAmB,GAAG,GAAG,CAAA;gBAC7B,IAAI,eAAe,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACvD,mBAAmB,GAAG,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;gBAC7D,CAAC;gBACD,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YACxC,CAAC;YAED,oDAAoD;YACpD,MAAM,UAAU,GAAG,GAAG,CAAA;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;gBACzD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAA;gBACnD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACvD,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QAChC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,2DAA2D;gBAC3D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;gBAC7C,OAAQ,KAAa,EAAE,KAAK,CAAA;YAC9B,CAAC;YACD,oDAAoD;YACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAY,CAAA;YACrC,OAAO,KAAK,EAAE,KAAK,CAAA;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,KAAa;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,mBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;gBACrE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;gBACjD,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,uFAAuF;QACvF,uDAAuD;QACvD,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAEpD,IAAI,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,kCAAkC;YAClC,IAAI,UAAU,GAAG,GAAG,CAAA;YACpB,IAAI,eAAe,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACvD,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YACpD,CAAC;YAED,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,6EAA6E;gBAC7E,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,0BAA0B,CAAI,KAAa;QACtD,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,mBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;gBACrE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;oBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAA;oBAClE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,MAAM,CAAA;QACf,CAAC;QAED,uFAAuF;QACvF,oEAAoE;QACpE,sDAAsD;QACtD,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAEpD,IAAI,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACtD,kCAAkC;YAClC,IAAI,UAAU,GAAG,GAAG,CAAA;YACpB,IAAI,eAAe,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACvD,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YACpD,CAAC;YAED,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,6DAA6D;gBAC7D,IAAI,WAAW,GAAG,GAAG,CAAA;gBACrB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;wBAC9B,WAAW,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;oBAClE,CAAC;oBAAC,MAAM,CAAC;wBACP,sCAAsC;wBACtC,WAAW,GAAG,GAAG,CAAA;oBACnB,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;OAIG;IACI,OAAO;QACZ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;CACF;AAtaD,sBAsaC"}
|
|
1
|
+
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../src/Cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
import KeyvRedis from '@keyv/redis';
|
|
2
|
+
import type { ClusterNode, ClusterOptions } from 'ioredis';
|
|
3
|
+
export interface ClusterConfig {
|
|
4
|
+
nodes: ClusterNode[];
|
|
5
|
+
options?: ClusterOptions;
|
|
6
|
+
}
|
|
2
7
|
/**
|
|
3
8
|
* A lazy-loading Redis store for Keyv.
|
|
4
9
|
* Defers Redis connection until the first operation is performed.
|
|
5
10
|
* This prevents connection exhaustion during Cloud Run/serverless deployments
|
|
6
11
|
* where old and new containers may briefly run simultaneously.
|
|
7
12
|
*
|
|
13
|
+
* Supports both standalone Redis (via connection string) and Redis Cluster (via clusterConfig).
|
|
14
|
+
*
|
|
8
15
|
* @example
|
|
9
16
|
* ```typescript
|
|
17
|
+
* // Standalone
|
|
10
18
|
* const store = new LazyRedisStore('redis://localhost:6379')
|
|
11
|
-
* // No connection yet!
|
|
12
19
|
*
|
|
13
|
-
*
|
|
20
|
+
* // Cluster
|
|
21
|
+
* const store = new LazyRedisStore('cluster', {
|
|
22
|
+
* nodes: [{ host: '10.0.0.2', port: 6379 }],
|
|
23
|
+
* options: { redisOptions: { password: 'secret', tls: { rejectUnauthorized: false } } }
|
|
24
|
+
* })
|
|
14
25
|
* ```
|
|
15
26
|
*/
|
|
16
27
|
export declare class LazyRedisStore {
|
|
@@ -19,6 +30,7 @@ export declare class LazyRedisStore {
|
|
|
19
30
|
private _store;
|
|
20
31
|
private _connecting;
|
|
21
32
|
private _namespace;
|
|
33
|
+
private _clusterConfig?;
|
|
22
34
|
/**
|
|
23
35
|
* Opts property for Keyv compatibility.
|
|
24
36
|
* Keyv checks for store.opts to detect if iteration is supported.
|
|
@@ -29,7 +41,7 @@ export declare class LazyRedisStore {
|
|
|
29
41
|
dialect: string;
|
|
30
42
|
url: string;
|
|
31
43
|
};
|
|
32
|
-
constructor(connectionString: string);
|
|
44
|
+
constructor(connectionString: string, clusterConfig?: ClusterConfig);
|
|
33
45
|
/**
|
|
34
46
|
* Namespace property for Keyv compatibility.
|
|
35
47
|
* Keyv sets this after construction to enable namespace-scoped operations.
|
|
@@ -8,12 +8,18 @@ const RedisConnectionPool_1 = require("./RedisConnectionPool");
|
|
|
8
8
|
* This prevents connection exhaustion during Cloud Run/serverless deployments
|
|
9
9
|
* where old and new containers may briefly run simultaneously.
|
|
10
10
|
*
|
|
11
|
+
* Supports both standalone Redis (via connection string) and Redis Cluster (via clusterConfig).
|
|
12
|
+
*
|
|
11
13
|
* @example
|
|
12
14
|
* ```typescript
|
|
15
|
+
* // Standalone
|
|
13
16
|
* const store = new LazyRedisStore('redis://localhost:6379')
|
|
14
|
-
* // No connection yet!
|
|
15
17
|
*
|
|
16
|
-
*
|
|
18
|
+
* // Cluster
|
|
19
|
+
* const store = new LazyRedisStore('cluster', {
|
|
20
|
+
* nodes: [{ host: '10.0.0.2', port: 6379 }],
|
|
21
|
+
* options: { redisOptions: { password: 'secret', tls: { rejectUnauthorized: false } } }
|
|
22
|
+
* })
|
|
17
23
|
* ```
|
|
18
24
|
*/
|
|
19
25
|
class LazyRedisStore {
|
|
@@ -22,6 +28,7 @@ class LazyRedisStore {
|
|
|
22
28
|
_store;
|
|
23
29
|
_connecting;
|
|
24
30
|
_namespace;
|
|
31
|
+
_clusterConfig;
|
|
25
32
|
/**
|
|
26
33
|
* Opts property for Keyv compatibility.
|
|
27
34
|
* Keyv checks for store.opts to detect if iteration is supported.
|
|
@@ -29,8 +36,9 @@ class LazyRedisStore {
|
|
|
29
36
|
* @see https://github.com/jaredwray/keyv/blob/main/packages/keyv/src/index.ts
|
|
30
37
|
*/
|
|
31
38
|
opts;
|
|
32
|
-
constructor(connectionString) {
|
|
39
|
+
constructor(connectionString, clusterConfig) {
|
|
33
40
|
this.connectionString = connectionString;
|
|
41
|
+
this._clusterConfig = clusterConfig;
|
|
34
42
|
this.pool = RedisConnectionPool_1.RedisConnectionPool.getInstance();
|
|
35
43
|
// Set opts for Keyv iterator detection
|
|
36
44
|
// Keyv's _checkIterableAdapter() checks if opts.dialect is in iterableAdapters
|
|
@@ -73,7 +81,9 @@ class LazyRedisStore {
|
|
|
73
81
|
// Start connection
|
|
74
82
|
this._connecting = new Promise((resolve, reject) => {
|
|
75
83
|
try {
|
|
76
|
-
this._store = this.
|
|
84
|
+
this._store = this._clusterConfig
|
|
85
|
+
? this.pool.getClusterConnection(this._clusterConfig.nodes, this._clusterConfig.options)
|
|
86
|
+
: this.pool.getConnection(this.connectionString);
|
|
77
87
|
// Forward namespace to the underlying store if set
|
|
78
88
|
// This is critical for clear() and other namespace-scoped operations
|
|
79
89
|
if (this._namespace !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyRedisStore.js","sourceRoot":"","sources":["../../src/cache/LazyRedisStore.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"LazyRedisStore.js","sourceRoot":"","sources":["../../src/cache/LazyRedisStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import KeyvRedis from '@keyv/redis';
|
|
2
|
+
import { type ClusterNode, type ClusterOptions } from 'ioredis';
|
|
2
3
|
/**
|
|
3
4
|
* Singleton connection pool for Redis connections.
|
|
4
5
|
* Ensures multiple Cache instances pointing to the same Redis instance
|
|
@@ -17,6 +18,18 @@ export declare class RedisConnectionPool {
|
|
|
17
18
|
* @returns KeyvRedis store instance
|
|
18
19
|
*/
|
|
19
20
|
getConnection(connectionString: string): KeyvRedis;
|
|
21
|
+
/**
|
|
22
|
+
* Get a Redis store backed by an ioredis Cluster instance.
|
|
23
|
+
* Pools the underlying Cluster connection by a key derived from the sorted node list.
|
|
24
|
+
*
|
|
25
|
+
* IMPORTANT: Uses `useRedisSets: false` because MULTI/EXEC (used by the default
|
|
26
|
+
* useRedisSets: true) is not supported across slots in Redis Cluster.
|
|
27
|
+
*
|
|
28
|
+
* @param nodes Cluster seed nodes
|
|
29
|
+
* @param options ioredis ClusterOptions
|
|
30
|
+
* @returns KeyvRedis store wrapping the shared Cluster instance
|
|
31
|
+
*/
|
|
32
|
+
getClusterConnection(nodes: ClusterNode[], options?: ClusterOptions): KeyvRedis;
|
|
20
33
|
/**
|
|
21
34
|
* Release a Redis connection. When reference count reaches 0,
|
|
22
35
|
* the connection is kept in the pool for reuse.
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.RedisConnectionPool = void 0;
|
|
4
4
|
// npx vitest run ./src/cache/RedisConnectionPool.test.ts
|
|
5
5
|
const redis_1 = require("@keyv/redis");
|
|
6
|
+
const ioredis_1 = require("ioredis");
|
|
6
7
|
/**
|
|
7
8
|
* Singleton connection pool for Redis connections.
|
|
8
9
|
* Ensures multiple Cache instances pointing to the same Redis instance
|
|
@@ -42,6 +43,40 @@ class RedisConnectionPool {
|
|
|
42
43
|
});
|
|
43
44
|
return store;
|
|
44
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a Redis store backed by an ioredis Cluster instance.
|
|
48
|
+
* Pools the underlying Cluster connection by a key derived from the sorted node list.
|
|
49
|
+
*
|
|
50
|
+
* IMPORTANT: Uses `useRedisSets: false` because MULTI/EXEC (used by the default
|
|
51
|
+
* useRedisSets: true) is not supported across slots in Redis Cluster.
|
|
52
|
+
*
|
|
53
|
+
* @param nodes Cluster seed nodes
|
|
54
|
+
* @param options ioredis ClusterOptions
|
|
55
|
+
* @returns KeyvRedis store wrapping the shared Cluster instance
|
|
56
|
+
*/
|
|
57
|
+
getClusterConnection(nodes, options) {
|
|
58
|
+
const poolKey = `cluster:${JSON.stringify([...nodes].sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b))))}`;
|
|
59
|
+
const entry = this.pool.get(poolKey);
|
|
60
|
+
if (entry) {
|
|
61
|
+
entry.refCount++;
|
|
62
|
+
return new redis_1.default(entry.client, { useRedisSets: false });
|
|
63
|
+
}
|
|
64
|
+
const cluster = new ioredis_1.Cluster(nodes, {
|
|
65
|
+
enableReadyCheck: true,
|
|
66
|
+
scaleReads: 'slave',
|
|
67
|
+
dnsLookup: (address, callback) => callback(null, address),
|
|
68
|
+
...options,
|
|
69
|
+
redisOptions: {
|
|
70
|
+
maxRetriesPerRequest: null,
|
|
71
|
+
...options?.redisOptions,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
this.pool.set(poolKey, {
|
|
75
|
+
client: cluster,
|
|
76
|
+
refCount: 1,
|
|
77
|
+
});
|
|
78
|
+
return new redis_1.default(cluster, { useRedisSets: false });
|
|
79
|
+
}
|
|
45
80
|
/**
|
|
46
81
|
* Release a Redis connection. When reference count reaches 0,
|
|
47
82
|
* the connection is kept in the pool for reuse.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisConnectionPool.js","sourceRoot":"","sources":["../../src/cache/RedisConnectionPool.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AACzD,uCAAmC;
|
|
1
|
+
{"version":3,"file":"RedisConnectionPool.js","sourceRoot":"","sources":["../../src/cache/RedisConnectionPool.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { Options } from 'keyv';
|
|
2
|
-
import { Cache, type CacheOptions } from './Cache';
|
|
3
|
-
import { LazyRedisStore } from './cache/LazyRedisStore';
|
|
2
|
+
import { Cache, type CacheClusterConfig, type CacheOptions } from './Cache';
|
|
3
|
+
import { type ClusterConfig, LazyRedisStore } from './cache/LazyRedisStore';
|
|
4
4
|
import { RedisConnectionPool } from './cache/RedisConnectionPool';
|
|
5
5
|
export { Cache, LazyRedisStore, RedisConnectionPool };
|
|
6
|
-
export type { CacheOptions, Options };
|
|
6
|
+
export type { CacheClusterConfig, CacheOptions, ClusterConfig, Options };
|
|
7
7
|
export type * from '@trpc/server';
|
|
8
8
|
export { TRPCError } from '@trpc/server';
|
|
9
9
|
export type * from '@trpc/server/unstable-core-do-not-import';
|
|
10
|
+
export type { ClusterNode, ClusterOptions } from 'ioredis';
|
|
10
11
|
export { Container } from './container/Container';
|
|
11
12
|
export { DistributedCacheInvalidator, getDistributedCacheInvalidator, } from './container/DistributedCacheInvalidator';
|
|
12
13
|
export { createServiceCache } from './container/LruCache';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,mCAA2E;AAIlE,sFAJA,aAAK,OAIA;AAHd,2DAA2E;AAG3D,+FAHa,+BAAc,OAGb;AAF9B,qEAAiE;AAEjC,oGAFvB,yCAAmB,OAEuB;AAInD,uCAAwC;AAA/B,mGAAA,SAAS,OAAA;AAGlB,wBAAwB;AACxB,mBAAmB;AACnB,wBAAwB;AACxB,mDAAiD;AAAxC,sGAAA,SAAS,OAAA;AAClB,uFAGgD;AAF9C,0IAAA,2BAA2B,OAAA;AAC3B,6IAAA,8BAA8B,OAAA;AAEhC,iDAAyD;AAAhD,8GAAA,kBAAkB,OAAA;AAe3B,2CAAsD;AAA7C,2GAAA,kBAAkB,OAAA;AAO3B,iFAA2E;AAAlE,wHAAA,gBAAgB,OAAA;AACzB,sBAAsB;AACtB,2EAAyE;AAAhE,sHAAA,iBAAiB,OAAA;AAE1B,0CAAwC;AAA/B,gGAAA,MAAM,OAAA;AAEf,oEAAiE;AAAxD,iHAAA,cAAc,OAAA;AACvB,8DAIsC;AAFpC,oHAAA,oBAAoB,OAAA;AAGtB,+FAA+F;AAAtF,4IAAA,6BAA6B,OAAA;AACtC,yFAA4E;AAAnE,yHAAA,aAAa,OAAA;AACtB,4EAAqE;AAA5D,2GAAA,SAAS,OAAA;AAMlB,4DAIqC;AAHnC,qHAAA,sBAAsB,OAAA;AACtB,kHAAA,mBAAmB,OAAA;AACnB,iHAAA,kBAAkB,OAAA;AAEpB,uDAAqD;AAA5C,sGAAA,SAAS,OAAA;AAClB,iEAA8D;AAArD,+GAAA,aAAa,OAAA;AAMtB,mEAI4C;AAH1C,sGAAA,OAAO,OAAA;AACP,4GAAA,aAAa,OAAA;AACb,qGAAA,MAAM,OAAA;AAER,uEAAoE;AAA3D,6GAAA,YAAY,OAAA;AACrB,uGAAqG;AAA5F,gJAAA,8BAA8B,OAAA;AAKvC,2EAAwE;AAA/D,+GAAA,aAAa,OAAA;AAEtB,sFAAgF;AAAvE,sHAAA,eAAe,OAAA;AACxB,0FAG2D;AAFzD,yGAAA,EAAE,OAAA;AACF,yHAAA,kBAAkB,OAAA;AAEpB,gEAAqE;AAA5D,+GAAA,iBAAiB,OAAA;AAC1B,kEAA+D;AAAtD,yGAAA,UAAU,OAAA;AACnB,qDAAuE;AAA9D,0HAAA,6BAA6B,OAAA;AACtC,sCAAuC;AAA9B,+FAAA,OAAO,OAAA;AAGhB,wBAAwB;AACxB,oBAAoB;AACpB,wBAAwB;AACxB,mDAAgD"}
|