ioredis-toolkit 0.0.10 → 0.0.12

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