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.
Files changed (267) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/LICENSE +1 -1
  3. package/README.md +68 -1058
  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/src/scripts/cleanup-index.lua +4 -0
  187. package/src/scripts/conditional-update.lua +21 -0
  188. package/src/scripts/consume-session.lua +21 -0
  189. package/src/scripts/create-session.lua +28 -0
  190. package/src/scripts/delete.lua +2 -0
  191. package/src/scripts/destroy-user.lua +13 -0
  192. package/src/scripts/enforce-limit.lua +17 -0
  193. package/src/scripts/revoke-session.lua +13 -0
  194. package/src/scripts/rotate.lua +24 -0
  195. package/src/scripts/touch-session.lua +28 -0
  196. package/src/scripts/update-session.lua +18 -0
  197. package/dist/cache.d.ts +0 -796
  198. package/dist/cache.js +0 -1120
  199. package/dist/client.d.ts +0 -284
  200. package/dist/client.js +0 -1114
  201. package/dist/cluster-slot.d.ts +0 -4
  202. package/dist/cluster-slot.js +0 -31
  203. package/dist/cluster.d.ts +0 -79
  204. package/dist/cluster.js +0 -156
  205. package/dist/errors.d.ts +0 -30
  206. package/dist/errors.js +0 -63
  207. package/dist/health.d.ts +0 -180
  208. package/dist/health.js +0 -239
  209. package/dist/lock.d.ts +0 -248
  210. package/dist/lock.js +0 -397
  211. package/dist/logger.d.ts +0 -12
  212. package/dist/logger.js +0 -40
  213. package/dist/pubsub.d.ts +0 -423
  214. package/dist/pubsub.js +0 -537
  215. package/dist/ratelimiter.d.ts +0 -441
  216. package/dist/ratelimiter.js +0 -539
  217. package/dist/session/index.d.ts +0 -23
  218. package/dist/session/index.js +0 -16
  219. package/dist/session/revocation-store.d.ts +0 -176
  220. package/dist/session/revocation-store.js +0 -318
  221. package/dist/session/scripts/cleanup-index.lua +0 -21
  222. package/dist/session/scripts/conditional-update-encrypted.lua +0 -60
  223. package/dist/session/scripts/conditional-update.lua +0 -63
  224. package/dist/session/scripts/create.lua +0 -83
  225. package/dist/session/scripts/delete-by-user.lua +0 -29
  226. package/dist/session/scripts/delete.lua +0 -15
  227. package/dist/session/scripts/enforce-limit.lua +0 -38
  228. package/dist/session/scripts/revoke.lua +0 -61
  229. package/dist/session/scripts/rotate-encrypted.lua +0 -110
  230. package/dist/session/scripts/rotate.lua +0 -122
  231. package/dist/session/scripts/touch-encrypted.lua +0 -89
  232. package/dist/session/scripts/touch.lua +0 -72
  233. package/dist/session/scripts/validate.lua +0 -90
  234. package/dist/session/session-circuit-breaker.d.ts +0 -42
  235. package/dist/session/session-circuit-breaker.js +0 -129
  236. package/dist/session/session-config.d.ts +0 -335
  237. package/dist/session/session-config.js +0 -162
  238. package/dist/session/session-cookie.d.ts +0 -72
  239. package/dist/session/session-cookie.js +0 -101
  240. package/dist/session/session-encryption.d.ts +0 -87
  241. package/dist/session/session-encryption.js +0 -139
  242. package/dist/session/session-errors.d.ts +0 -85
  243. package/dist/session/session-errors.js +0 -145
  244. package/dist/session/session-health.d.ts +0 -38
  245. package/dist/session/session-health.js +0 -60
  246. package/dist/session/session-keys.d.ts +0 -51
  247. package/dist/session/session-keys.js +0 -113
  248. package/dist/session/session-manager.d.ts +0 -73
  249. package/dist/session/session-manager.js +0 -94
  250. package/dist/session/session-metrics.d.ts +0 -33
  251. package/dist/session/session-metrics.js +0 -112
  252. package/dist/session/session-repository.d.ts +0 -161
  253. package/dist/session/session-repository.js +0 -683
  254. package/dist/session/session-scripts.d.ts +0 -36
  255. package/dist/session/session-scripts.js +0 -130
  256. package/dist/session/session-serializer.d.ts +0 -42
  257. package/dist/session/session-serializer.js +0 -248
  258. package/dist/session/session-service.d.ts +0 -104
  259. package/dist/session/session-service.js +0 -611
  260. package/dist/session/session-token.d.ts +0 -38
  261. package/dist/session/session-token.js +0 -86
  262. package/dist/session/session-types.d.ts +0 -253
  263. package/dist/session/session-types.js +0 -16
  264. package/dist/types.d.ts +0 -924
  265. package/dist/types.js +0 -151
  266. package/dist/utils/deepmerge.d.ts +0 -9
  267. 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 {};