ioredis-toolkit 0.0.9 → 0.5.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/CHANGELOG.md +67 -0
- package/LICENSE +1 -1
- package/README.md +68 -1058
- package/dist/cache/cache.d.ts +30 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +59 -0
- package/dist/cache/cache.js.map +1 -0
- package/dist/cache/config.d.ts +12 -0
- package/dist/cache/config.d.ts.map +1 -0
- package/dist/cache/config.js +13 -0
- package/dist/cache/config.js.map +1 -0
- package/dist/cache/types.d.ts +32 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +5 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/index.d.ts +43 -51
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -44
- package/dist/index.js.map +1 -0
- package/dist/lock/config.d.ts +12 -0
- package/dist/lock/config.d.ts.map +1 -0
- package/dist/lock/config.js +8 -0
- package/dist/lock/config.js.map +1 -0
- package/dist/lock/lock.d.ts +20 -0
- package/dist/lock/lock.d.ts.map +1 -0
- package/dist/lock/lock.js +44 -0
- package/dist/lock/lock.js.map +1 -0
- package/dist/lock/types.d.ts +19 -0
- package/dist/lock/types.d.ts.map +1 -0
- package/dist/lock/types.js +2 -0
- package/dist/lock/types.js.map +1 -0
- package/dist/modules-config.d.ts +3 -0
- package/dist/modules-config.d.ts.map +1 -0
- package/dist/modules-config.js +2 -0
- package/dist/modules-config.js.map +1 -0
- package/dist/pubsub/config.d.ts +11 -0
- package/dist/pubsub/config.d.ts.map +1 -0
- package/dist/pubsub/config.js +6 -0
- package/dist/pubsub/config.js.map +1 -0
- package/dist/pubsub/pubsub.d.ts +20 -0
- package/dist/pubsub/pubsub.d.ts.map +1 -0
- package/dist/pubsub/pubsub.js +54 -0
- package/dist/pubsub/pubsub.js.map +1 -0
- package/dist/pubsub/types.d.ts +24 -0
- package/dist/pubsub/types.d.ts.map +1 -0
- package/dist/pubsub/types.js +2 -0
- package/dist/pubsub/types.js.map +1 -0
- package/dist/rate-limit/config.d.ts +12 -0
- package/dist/rate-limit/config.d.ts.map +1 -0
- package/dist/rate-limit/config.js +6 -0
- package/dist/rate-limit/config.js.map +1 -0
- package/dist/rate-limit/rate-limiter.d.ts +18 -0
- package/dist/rate-limit/rate-limiter.d.ts.map +1 -0
- package/dist/rate-limit/rate-limiter.js +37 -0
- package/dist/rate-limit/rate-limiter.js.map +1 -0
- package/dist/rate-limit/types.d.ts +27 -0
- package/dist/rate-limit/types.d.ts.map +1 -0
- package/dist/rate-limit/types.js +2 -0
- package/dist/rate-limit/types.js.map +1 -0
- package/dist/redis/client-facade.d.ts +77 -0
- package/dist/redis/client-facade.d.ts.map +1 -0
- package/dist/redis/client-facade.js +102 -0
- package/dist/redis/client-facade.js.map +1 -0
- package/dist/redis/client.d.ts +10 -0
- package/dist/redis/client.d.ts.map +1 -0
- package/dist/redis/client.js +29 -0
- package/dist/redis/client.js.map +1 -0
- package/dist/redis/cluster.d.ts +7 -0
- package/dist/redis/cluster.d.ts.map +1 -0
- package/dist/redis/cluster.js +47 -0
- package/dist/redis/cluster.js.map +1 -0
- package/dist/redis/config.d.ts +39 -0
- package/dist/redis/config.d.ts.map +1 -0
- package/dist/redis/config.js +52 -0
- package/dist/redis/config.js.map +1 -0
- package/dist/redis/errors.d.ts +5 -0
- package/dist/redis/errors.d.ts.map +1 -0
- package/dist/redis/errors.js +5 -0
- package/dist/redis/errors.js.map +1 -0
- package/dist/redis/types.d.ts +135 -0
- package/dist/redis/types.d.ts.map +1 -0
- package/dist/redis/types.js +2 -0
- package/dist/redis/types.js.map +1 -0
- package/dist/redis/wrapper.d.ts +88 -0
- package/dist/redis/wrapper.d.ts.map +1 -0
- package/dist/redis/wrapper.js +206 -0
- package/dist/redis/wrapper.js.map +1 -0
- package/dist/session/config.d.ts +47 -0
- package/dist/session/config.d.ts.map +1 -0
- package/dist/session/config.js +101 -0
- package/dist/session/config.js.map +1 -0
- package/dist/session/cookie.d.ts +16 -0
- package/dist/session/cookie.d.ts.map +1 -0
- package/dist/session/cookie.js +28 -0
- package/dist/session/cookie.js.map +1 -0
- package/dist/session/errors.d.ts +56 -0
- package/dist/session/errors.d.ts.map +1 -0
- package/dist/session/errors.js +58 -0
- package/dist/session/errors.js.map +1 -0
- package/dist/session/factory.d.ts +21 -0
- package/dist/session/factory.d.ts.map +1 -0
- package/dist/session/factory.js +30 -0
- package/dist/session/factory.js.map +1 -0
- package/dist/session/health.d.ts +12 -0
- package/dist/session/health.d.ts.map +1 -0
- package/dist/session/health.js +23 -0
- package/dist/session/health.js.map +1 -0
- package/dist/session/keys.d.ts +23 -0
- package/dist/session/keys.d.ts.map +1 -0
- package/dist/session/keys.js +27 -0
- package/dist/session/keys.js.map +1 -0
- package/dist/session/manager.d.ts +34 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +31 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/metrics.d.ts +11 -0
- package/dist/session/metrics.d.ts.map +1 -0
- package/dist/session/metrics.js +10 -0
- package/dist/session/metrics.js.map +1 -0
- package/dist/session/repository.d.ts +49 -0
- package/dist/session/repository.d.ts.map +1 -0
- package/dist/session/repository.js +203 -0
- package/dist/session/repository.js.map +1 -0
- package/dist/session/revocation.d.ts +22 -0
- package/dist/session/revocation.d.ts.map +1 -0
- package/dist/session/revocation.js +41 -0
- package/dist/session/revocation.js.map +1 -0
- package/dist/session/script-sources.d.ts +11 -0
- package/dist/session/script-sources.d.ts.map +1 -0
- package/dist/session/script-sources.js +140 -0
- package/dist/session/script-sources.js.map +1 -0
- package/dist/session/scripts.d.ts +15 -0
- package/dist/session/scripts.d.ts.map +1 -0
- package/dist/session/scripts.js +41 -0
- package/dist/session/scripts.js.map +1 -0
- package/dist/session/serializer.d.ts +12 -0
- package/dist/session/serializer.d.ts.map +1 -0
- package/dist/session/serializer.js +77 -0
- package/dist/session/serializer.js.map +1 -0
- package/dist/session/service.d.ts +48 -0
- package/dist/session/service.d.ts.map +1 -0
- package/dist/session/service.js +235 -0
- package/dist/session/service.js.map +1 -0
- package/dist/session/token.d.ts +16 -0
- package/dist/session/token.d.ts.map +1 -0
- package/dist/session/token.js +32 -0
- package/dist/session/token.js.map +1 -0
- package/dist/session/types.d.ts +134 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +2 -0
- package/dist/session/types.js.map +1 -0
- package/dist/streams/config.d.ts +12 -0
- package/dist/streams/config.d.ts.map +1 -0
- package/dist/streams/config.js +6 -0
- package/dist/streams/config.js.map +1 -0
- package/dist/streams/streams.d.ts +24 -0
- package/dist/streams/streams.d.ts.map +1 -0
- package/dist/streams/streams.js +55 -0
- package/dist/streams/streams.js.map +1 -0
- package/dist/streams/types.d.ts +32 -0
- package/dist/streams/types.d.ts.map +1 -0
- package/dist/streams/types.js +2 -0
- package/dist/streams/types.js.map +1 -0
- package/docs/ACCEPTANCE-REPORT.md +70 -0
- package/docs/ARCHITECTURE.md +61 -0
- package/docs/CAPACITY.md +33 -0
- package/docs/DEPLOYMENT.md +22 -0
- package/docs/README-API.md +15 -0
- package/docs/STATE-MACHINE.md +38 -0
- package/docs/TESTING.md +37 -0
- package/docs/THREAT-MODEL.md +23 -0
- package/docs/TYPE-SAFETY.md +34 -0
- package/docs/modules/cache/README.md +7 -0
- package/docs/modules/cache/usage.md +156 -0
- package/docs/modules/lock/README.md +7 -0
- package/docs/modules/lock/usage.md +105 -0
- package/docs/modules/pubsub/README.md +7 -0
- package/docs/modules/pubsub/usage.md +106 -0
- package/docs/modules/rate-limit/README.md +7 -0
- package/docs/modules/rate-limit/usage.md +100 -0
- package/docs/modules/sessions/README.md +7 -0
- package/docs/modules/sessions/usage.md +262 -0
- package/docs/modules/streams/README.md +7 -0
- package/docs/modules/streams/usage.md +141 -0
- package/package.json +50 -60
- package/src/scripts/cleanup-index.lua +4 -0
- package/src/scripts/conditional-update.lua +21 -0
- package/src/scripts/consume-session.lua +21 -0
- package/src/scripts/create-session.lua +28 -0
- package/src/scripts/delete.lua +2 -0
- package/src/scripts/destroy-user.lua +13 -0
- package/src/scripts/enforce-limit.lua +17 -0
- package/src/scripts/revoke-session.lua +13 -0
- package/src/scripts/rotate.lua +24 -0
- package/src/scripts/touch-session.lua +28 -0
- package/src/scripts/update-session.lua +18 -0
- package/dist/cache.d.ts +0 -796
- package/dist/cache.js +0 -1120
- package/dist/client.d.ts +0 -284
- package/dist/client.js +0 -1114
- package/dist/cluster-slot.d.ts +0 -4
- package/dist/cluster-slot.js +0 -31
- package/dist/cluster.d.ts +0 -79
- package/dist/cluster.js +0 -156
- package/dist/errors.d.ts +0 -30
- package/dist/errors.js +0 -63
- package/dist/health.d.ts +0 -180
- package/dist/health.js +0 -239
- package/dist/lock.d.ts +0 -248
- package/dist/lock.js +0 -397
- package/dist/logger.d.ts +0 -12
- package/dist/logger.js +0 -40
- package/dist/pubsub.d.ts +0 -423
- package/dist/pubsub.js +0 -537
- package/dist/ratelimiter.d.ts +0 -441
- package/dist/ratelimiter.js +0 -539
- package/dist/session/index.d.ts +0 -23
- package/dist/session/index.js +0 -16
- package/dist/session/revocation-store.d.ts +0 -176
- package/dist/session/revocation-store.js +0 -318
- package/dist/session/scripts/cleanup-index.lua +0 -21
- package/dist/session/scripts/conditional-update-encrypted.lua +0 -60
- package/dist/session/scripts/conditional-update.lua +0 -63
- package/dist/session/scripts/create.lua +0 -83
- package/dist/session/scripts/delete-by-user.lua +0 -29
- package/dist/session/scripts/delete.lua +0 -15
- package/dist/session/scripts/enforce-limit.lua +0 -38
- package/dist/session/scripts/revoke.lua +0 -61
- package/dist/session/scripts/rotate-encrypted.lua +0 -110
- package/dist/session/scripts/rotate.lua +0 -122
- package/dist/session/scripts/touch-encrypted.lua +0 -89
- package/dist/session/scripts/touch.lua +0 -72
- package/dist/session/scripts/validate.lua +0 -90
- package/dist/session/session-circuit-breaker.d.ts +0 -42
- package/dist/session/session-circuit-breaker.js +0 -129
- package/dist/session/session-config.d.ts +0 -335
- package/dist/session/session-config.js +0 -162
- package/dist/session/session-cookie.d.ts +0 -72
- package/dist/session/session-cookie.js +0 -101
- package/dist/session/session-encryption.d.ts +0 -87
- package/dist/session/session-encryption.js +0 -139
- package/dist/session/session-errors.d.ts +0 -85
- package/dist/session/session-errors.js +0 -145
- package/dist/session/session-health.d.ts +0 -38
- package/dist/session/session-health.js +0 -60
- package/dist/session/session-keys.d.ts +0 -51
- package/dist/session/session-keys.js +0 -113
- package/dist/session/session-manager.d.ts +0 -73
- package/dist/session/session-manager.js +0 -94
- package/dist/session/session-metrics.d.ts +0 -33
- package/dist/session/session-metrics.js +0 -112
- package/dist/session/session-repository.d.ts +0 -161
- package/dist/session/session-repository.js +0 -683
- package/dist/session/session-scripts.d.ts +0 -36
- package/dist/session/session-scripts.js +0 -130
- package/dist/session/session-serializer.d.ts +0 -42
- package/dist/session/session-serializer.js +0 -248
- package/dist/session/session-service.d.ts +0 -104
- package/dist/session/session-service.js +0 -611
- package/dist/session/session-token.d.ts +0 -38
- package/dist/session/session-token.js +0 -86
- package/dist/session/session-types.d.ts +0 -253
- package/dist/session/session-types.js +0 -16
- package/dist/types.d.ts +0 -924
- package/dist/types.js +0 -151
- package/dist/utils/deepmerge.d.ts +0 -9
- package/dist/utils/deepmerge.js +0 -61
package/dist/client.d.ts
DELETED
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
import { Cluster, Redis as RedisClient } from "ioredis";
|
|
2
|
-
import { RateLimitOptionsInput, type ClusterInfo, type ClusterSlotRange, type ConnectionStatus, type RedisConfigInput, type RedisMode, DistributedLockInputOptions, CacheInputConfig } from "./types.js";
|
|
3
|
-
import { type LoggerLike } from "./logger.js";
|
|
4
|
-
import { Cache } from "./cache.js";
|
|
5
|
-
import { PubSub } from "./pubsub.js";
|
|
6
|
-
import { DistributedLock } from "./lock.js";
|
|
7
|
-
import { RateLimiter } from "./ratelimiter.js";
|
|
8
|
-
import { SessionManager, WithSessionManagerOptions } from "./session/session-manager.js";
|
|
9
|
-
import { RedisRevocationStore } from "./session/revocation-store.js";
|
|
10
|
-
export interface RedisClientOptions {
|
|
11
|
-
config: RedisConfigInput;
|
|
12
|
-
logger?: LoggerLike;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Cluster-only administrative/capability surface.
|
|
16
|
-
*/
|
|
17
|
-
export interface ClusterCapabilities {
|
|
18
|
-
getClusterNodes(): RedisClient[];
|
|
19
|
-
getClusterSlots(): Promise<ClusterSlotRange[]>;
|
|
20
|
-
getClusterInfo(): ClusterInfo;
|
|
21
|
-
calculateSlot(key: string): number;
|
|
22
|
-
getSlotRanges(): Promise<Map<number, string[]>>;
|
|
23
|
-
getNodeForKey(key: string): Promise<RedisClient | null>;
|
|
24
|
-
isKeyServed(key: string): Promise<boolean>;
|
|
25
|
-
executeOnNode<T>(key: string, command: string, ...args: unknown[]): Promise<T>;
|
|
26
|
-
mgetClusterAware(keys: string[]): Promise<(string | null)[]>;
|
|
27
|
-
clearNamespaceClusterAware(prefix: string, options?: {
|
|
28
|
-
batchSize?: number;
|
|
29
|
-
scanCount?: number;
|
|
30
|
-
}): Promise<number>;
|
|
31
|
-
}
|
|
32
|
-
type ClusterMethodName = keyof ClusterCapabilities | "isCluster";
|
|
33
|
-
/**
|
|
34
|
-
* Public client surface specialized by Redis topology.
|
|
35
|
-
*/
|
|
36
|
-
export type RedisClientForMode<M extends RedisMode> = M extends "cluster" ? Omit<RedisClientWrapper, "select" | ClusterMethodName> & ClusterCapabilities & {
|
|
37
|
-
isCluster(): true;
|
|
38
|
-
} : Omit<RedisClientWrapper, "isCluster" | "getClusterNodes" | "getClusterSlots" | "getClusterInfo" | "calculateSlot" | "getSlotRanges" | "getNodeForKey" | "isKeyServed" | "executeOnNode" | "mgetClusterAware" | "clearNamespaceClusterAware"> & {
|
|
39
|
-
isCluster(): false;
|
|
40
|
-
};
|
|
41
|
-
type RedisUnderlyingClient = RedisClient | Cluster;
|
|
42
|
-
type RedisCommandArgument = string | number | Buffer;
|
|
43
|
-
type ScanOptions = {
|
|
44
|
-
count?: number;
|
|
45
|
-
batchSize?: number;
|
|
46
|
-
};
|
|
47
|
-
type DeletePatternOptions = {
|
|
48
|
-
batchSize?: number;
|
|
49
|
-
scanCount?: number;
|
|
50
|
-
};
|
|
51
|
-
/**
|
|
52
|
-
* Production-grade Redis client wrapper supporting:
|
|
53
|
-
*
|
|
54
|
-
* - standalone Redis
|
|
55
|
-
* - Redis Sentinel
|
|
56
|
-
* - Redis Cluster
|
|
57
|
-
* - connection lifecycle handling
|
|
58
|
-
* - slow-command tracking
|
|
59
|
-
* - cluster-aware multi-key operations
|
|
60
|
-
* - cache
|
|
61
|
-
* - pub/sub
|
|
62
|
-
* - distributed locks
|
|
63
|
-
* - rate limiting
|
|
64
|
-
* - sessions
|
|
65
|
-
*/
|
|
66
|
-
export declare class RedisClientWrapper {
|
|
67
|
-
private readonly client;
|
|
68
|
-
private _cache?;
|
|
69
|
-
private _pubsub?;
|
|
70
|
-
private _lock?;
|
|
71
|
-
private _rateLimiter?;
|
|
72
|
-
private _session?;
|
|
73
|
-
private _revocationStore?;
|
|
74
|
-
private readonly config;
|
|
75
|
-
private readonly logger;
|
|
76
|
-
private isReady;
|
|
77
|
-
constructor(config: RedisConfigInput, logger?: LoggerLike);
|
|
78
|
-
/**
|
|
79
|
-
* Creates a new Redis client wrapper supporting standalone, sentinel, and cluster topologies.
|
|
80
|
-
*
|
|
81
|
-
* The client automatically adapts to the configured Redis topology and lazily creates
|
|
82
|
-
* and shares sub-components: `cache`, `pubsub`, `lock`, `rateLimiter`, and `session`.
|
|
83
|
-
*
|
|
84
|
-
* @param config - Redis configuration (validated with Zod `RedisConfigSchema`).
|
|
85
|
-
* Must include `mode` (standalone/sentinel/cluster), and topology-specific fields.
|
|
86
|
-
* @param logger - Optional pino-compatible logger; defaults to `console`.
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```ts
|
|
90
|
-
* const client = new RedisClientWrapper({
|
|
91
|
-
* mode: 'standalone',
|
|
92
|
-
* host: 'localhost',
|
|
93
|
-
* port: 6379,
|
|
94
|
-
* });
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
/**
|
|
98
|
-
* Returns the Redis topology mode of this client.
|
|
99
|
-
*
|
|
100
|
-
* @returns `'standalone'`, `'sentinel'`, or `'cluster'`
|
|
101
|
-
*/
|
|
102
|
-
get mode(): RedisMode;
|
|
103
|
-
/**
|
|
104
|
-
* Returns the shared Cache instance (lazily created on first access).
|
|
105
|
-
*
|
|
106
|
-
* The Cache provides JSON serialization, optional gzip compression, namespace
|
|
107
|
-
* support, TTLs, hash helpers, and pattern-based cleanup. All multi-key
|
|
108
|
-
* operations are slot-aware and cluster-safe.
|
|
109
|
-
*
|
|
110
|
-
* @example
|
|
111
|
-
* ```ts
|
|
112
|
-
* const cache = client.cache;
|
|
113
|
-
* await cache.set('user:1', { name: 'alice' });
|
|
114
|
-
* const user = await cache.get('user:1');
|
|
115
|
-
* ```
|
|
116
|
-
*/
|
|
117
|
-
get cache(): Cache;
|
|
118
|
-
withCache(value: CacheInputConfig): RedisClientWrapper;
|
|
119
|
-
/**
|
|
120
|
-
* Returns the shared Pub/Sub instance (lazily created on first access).
|
|
121
|
-
*
|
|
122
|
-
* Publishing works immediately; subscribing requires calling {@link connectSubscriber}
|
|
123
|
-
* first. Messages are JSON-serialized on publish and auto-parsed on delivery.
|
|
124
|
-
*
|
|
125
|
-
* @example
|
|
126
|
-
* ```ts
|
|
127
|
-
* const pubsub = client.pubsub;
|
|
128
|
-
* await pubsub.connectSubscriber({ mode: 'standalone', host: 'localhost', port: 6379 });
|
|
129
|
-
* await pubsub.subscribe('orders:created', (message) => {
|
|
130
|
-
* console.log(message); // { id: 1 }
|
|
131
|
-
* });
|
|
132
|
-
* await pubsub.publish('orders:created', { id: 1 });
|
|
133
|
-
* ```
|
|
134
|
-
*/
|
|
135
|
-
get pubsub(): PubSub;
|
|
136
|
-
/**
|
|
137
|
-
* Returns the shared DistributedLock instance (lazily created on first access).
|
|
138
|
-
*
|
|
139
|
-
* Provides atomic distributed mutual-exclusion locks backed by Redis. Works in
|
|
140
|
-
* standalone, sentinel, and cluster modes. Acquisition uses atomic `SET ... PX NX`;
|
|
141
|
-
* release and extension use Lua scripts so only the lock owner can release or extend.
|
|
142
|
-
*
|
|
143
|
-
* @example
|
|
144
|
-
* ```ts
|
|
145
|
-
* const lock = client.lock;
|
|
146
|
-
* const acquired = await lock.acquire('order:42');
|
|
147
|
-
* if (acquired) {
|
|
148
|
-
* try {
|
|
149
|
-
* // critical section
|
|
150
|
-
* } finally {
|
|
151
|
-
* await lock.release('order:42');
|
|
152
|
-
* }
|
|
153
|
-
* }
|
|
154
|
-
* ```
|
|
155
|
-
*/
|
|
156
|
-
get lock(): DistributedLock;
|
|
157
|
-
withLock(value: DistributedLockInputOptions): RedisClientWrapper;
|
|
158
|
-
/**
|
|
159
|
-
* Returns the shared RateLimiter instance (lazily created on first access).
|
|
160
|
-
*
|
|
161
|
-
* Generic rate limiting for any resource — routes, API endpoints, users, IPs,
|
|
162
|
-
* API keys, database writes, email sends, webhooks. Supports fixed and sliding
|
|
163
|
-
* window algorithms. Fails open when Redis is unavailable.
|
|
164
|
-
*
|
|
165
|
-
* @example
|
|
166
|
-
* ```ts
|
|
167
|
-
* const limiter = client.rateLimiter;
|
|
168
|
-
* const result = await limiter.consume('/api/login', 'ip-10.0.0.1');
|
|
169
|
-
* if (!result.allowed) {
|
|
170
|
-
* // HTTP 429, set Retry-After: result.retryAfter
|
|
171
|
-
* }
|
|
172
|
-
* ```
|
|
173
|
-
*/
|
|
174
|
-
get rateLimiter(): RateLimiter;
|
|
175
|
-
withRateLimiter(value: RateLimitOptionsInput): RedisClientWrapper;
|
|
176
|
-
get revocationStore(): RedisRevocationStore;
|
|
177
|
-
/**
|
|
178
|
-
* Returns the shared SessionManager instance (lazily created on first access).
|
|
179
|
-
*
|
|
180
|
-
* The production session stack: validation with fail-closed semantics, rotation
|
|
181
|
-
* with retry-safe idempotency, throttled touches, idle/absolute expiry, per-user
|
|
182
|
-
* eviction ceilings, security versioning, optional AES-256-GCM encryption at rest,
|
|
183
|
-
* fail-closed circuit breaker, metrics and health. Cluster-safe by construction.
|
|
184
|
-
*
|
|
185
|
-
* @example
|
|
186
|
-
* ```ts
|
|
187
|
-
* const manager = client.session;
|
|
188
|
-
* const { token, session } = await manager.service.create({ userId: 'user-42' });
|
|
189
|
-
* const result = await manager.service.validate(token, { userId: 'user-42' });
|
|
190
|
-
* ```
|
|
191
|
-
*/
|
|
192
|
-
get session(): SessionManager;
|
|
193
|
-
withSession(value: WithSessionManagerOptions): RedisClientWrapper;
|
|
194
|
-
private createClient;
|
|
195
|
-
private createClusterClient;
|
|
196
|
-
private createSentinelClient;
|
|
197
|
-
private createStandaloneClient;
|
|
198
|
-
private buildCommonRedisOptions;
|
|
199
|
-
private setupEventHandlers;
|
|
200
|
-
getRawClient<T extends RedisUnderlyingClient = RedisUnderlyingClient>(): T;
|
|
201
|
-
get raw(): RedisUnderlyingClient;
|
|
202
|
-
ping(): Promise<boolean>;
|
|
203
|
-
close(): Promise<void>;
|
|
204
|
-
private isClusterClient;
|
|
205
|
-
private exec;
|
|
206
|
-
get(key: string): Promise<string | null>;
|
|
207
|
-
set(key: string, value: string | Buffer, ttl?: number): Promise<"OK" | null>;
|
|
208
|
-
setexnx(key: string, value: string | Buffer, ttl?: number): Promise<"OK" | null>;
|
|
209
|
-
defineCommand(...args: Parameters<RedisClient["defineCommand"]>): ReturnType<RedisClient["defineCommand"]>;
|
|
210
|
-
eval(script: string, numKeys: number, ...args: RedisCommandArgument[]): Promise<unknown>;
|
|
211
|
-
evalsha(sha: string, script: string, numKeys: number, ...args: RedisCommandArgument[]): Promise<unknown>;
|
|
212
|
-
scriptLoad(script: string): Promise<string>;
|
|
213
|
-
setnx(key: string, value: string | Buffer, ttl?: number): Promise<number>;
|
|
214
|
-
del(...keys: string[]): Promise<number>;
|
|
215
|
-
getdel(key: string): Promise<string | null>;
|
|
216
|
-
exists(key: string): Promise<number>;
|
|
217
|
-
expire(key: string, ttl: number): Promise<number>;
|
|
218
|
-
ttl(key: string): Promise<number>;
|
|
219
|
-
incr(key: string): Promise<number>;
|
|
220
|
-
decr(key: string): Promise<number>;
|
|
221
|
-
incrby(key: string, amount: number): Promise<number>;
|
|
222
|
-
decrby(key: string, amount: number): Promise<number>;
|
|
223
|
-
time(): Promise<number>;
|
|
224
|
-
mget(...keys: string[]): Promise<(string | null)[]>;
|
|
225
|
-
mset(...pairs: Array<[
|
|
226
|
-
string,
|
|
227
|
-
string | Buffer
|
|
228
|
-
]>): Promise<"OK">;
|
|
229
|
-
hget(key: string, field: string): Promise<string | null>;
|
|
230
|
-
hset(key: string, field: string, value: string | Buffer): Promise<number>;
|
|
231
|
-
hgetall(key: string): Promise<Record<string, string>>;
|
|
232
|
-
hdel(key: string, ...fields: string[]): Promise<number>;
|
|
233
|
-
sadd(key: string, ...members: string[]): Promise<number>;
|
|
234
|
-
srem(key: string, ...members: string[]): Promise<number>;
|
|
235
|
-
smembers(key: string): Promise<string[]>;
|
|
236
|
-
sismember(key: string, member: string): Promise<number>;
|
|
237
|
-
zadd(key: string, score: number, member: string): Promise<number>;
|
|
238
|
-
zrange(key: string, start: number, stop: number): Promise<string[]>;
|
|
239
|
-
zcard(key: string): Promise<number>;
|
|
240
|
-
zrem(key: string, ...members: string[]): Promise<number>;
|
|
241
|
-
pipeline(): ReturnType<RedisClient["pipeline"]>;
|
|
242
|
-
scanIterator(pattern: string, count?: number): AsyncIterable<string>;
|
|
243
|
-
scanCluster(pattern: string, options?: ScanOptions): AsyncIterable<string[]>;
|
|
244
|
-
isCluster(): boolean;
|
|
245
|
-
getClusterNodes(): RedisClient[];
|
|
246
|
-
getClusterSlots(): Promise<ClusterSlotRange[]>;
|
|
247
|
-
calculateSlot(key: string): number;
|
|
248
|
-
getNodeForKey(key: string): Promise<RedisClient | null>;
|
|
249
|
-
getSlotRanges(): Promise<Map<number, string[]>>;
|
|
250
|
-
isKeyServed(key: string): Promise<boolean>;
|
|
251
|
-
executeOnNode<T>(key: string, command: string, ...args: unknown[]): Promise<T>;
|
|
252
|
-
private executeCommandOnClient;
|
|
253
|
-
mgetClusterAware(keys: string[]): Promise<(string | null)[]>;
|
|
254
|
-
deletePattern(pattern: string, options?: DeletePatternOptions): Promise<number>;
|
|
255
|
-
clearNamespace(prefix: string, options?: DeletePatternOptions): Promise<number>;
|
|
256
|
-
clearNamespaceClusterAware(prefix: string, options?: DeletePatternOptions): Promise<number>;
|
|
257
|
-
getClusterInfo(): ClusterInfo;
|
|
258
|
-
info(section?: string): Promise<string>;
|
|
259
|
-
select(database: number): Promise<"OK">;
|
|
260
|
-
getConnectionStatus(): ConnectionStatus;
|
|
261
|
-
private runWithConcurrency;
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Cluster-specific factory overload.
|
|
265
|
-
*/
|
|
266
|
-
export declare function createRedisClient(config: Extract<RedisConfigInput, {
|
|
267
|
-
mode: "cluster";
|
|
268
|
-
}>, logger?: LoggerLike): RedisClientForMode<"cluster">;
|
|
269
|
-
/**
|
|
270
|
-
* Sentinel-specific factory overload.
|
|
271
|
-
*/
|
|
272
|
-
export declare function createRedisClient(config: Extract<RedisConfigInput, {
|
|
273
|
-
mode: "sentinel";
|
|
274
|
-
}>, logger?: LoggerLike): RedisClientForMode<"sentinel">;
|
|
275
|
-
/**
|
|
276
|
-
* Standalone factory overload.
|
|
277
|
-
*
|
|
278
|
-
* Standalone is also the default topology, therefore the input type permits
|
|
279
|
-
* the discriminator to be omitted.
|
|
280
|
-
*/
|
|
281
|
-
export declare function createRedisClient(config: Exclude<RedisConfigInput, {
|
|
282
|
-
mode: "cluster" | "sentinel";
|
|
283
|
-
}>, logger?: LoggerLike): RedisClientForMode<"standalone">;
|
|
284
|
-
export {};
|