js-redis-server 0.0.1 → 0.0.3

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 (482) hide show
  1. package/README.md +210 -39
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +191 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/cluster.d.ts +36 -0
  7. package/dist/cluster.d.ts.map +1 -0
  8. package/dist/cluster.js +227 -0
  9. package/dist/cluster.js.map +1 -0
  10. package/dist/commands/cluster.d.ts +11 -0
  11. package/dist/commands/cluster.d.ts.map +1 -0
  12. package/dist/commands/cluster.js +233 -0
  13. package/dist/commands/cluster.js.map +1 -0
  14. package/dist/commands/command.d.ts +6 -0
  15. package/dist/commands/command.d.ts.map +1 -0
  16. package/dist/commands/command.js +390 -0
  17. package/dist/commands/command.js.map +1 -0
  18. package/dist/commands/config.d.ts +9 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +142 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/connection.d.ts +24 -0
  23. package/dist/commands/connection.d.ts.map +1 -0
  24. package/dist/commands/connection.js +470 -0
  25. package/dist/commands/connection.js.map +1 -0
  26. package/dist/commands/hashes.d.ts +64 -0
  27. package/dist/commands/hashes.d.ts.map +1 -0
  28. package/dist/commands/hashes.js +274 -0
  29. package/dist/commands/hashes.js.map +1 -0
  30. package/dist/commands/helpers.d.ts +16 -0
  31. package/dist/commands/helpers.d.ts.map +1 -0
  32. package/dist/commands/helpers.js +77 -0
  33. package/dist/commands/helpers.js.map +1 -0
  34. package/dist/commands/index.d.ts +24 -0
  35. package/dist/commands/index.d.ts.map +1 -0
  36. package/dist/commands/index.js +198 -0
  37. package/dist/commands/index.js.map +1 -0
  38. package/dist/commands/introspection.d.ts +17 -0
  39. package/dist/commands/introspection.d.ts.map +1 -0
  40. package/dist/commands/introspection.js +54 -0
  41. package/dist/commands/introspection.js.map +1 -0
  42. package/dist/commands/keys.d.ts +66 -0
  43. package/dist/commands/keys.d.ts.map +1 -0
  44. package/dist/commands/keys.js +345 -0
  45. package/dist/commands/keys.js.map +1 -0
  46. package/dist/commands/lists.d.ts +73 -0
  47. package/dist/commands/lists.d.ts.map +1 -0
  48. package/dist/commands/lists.js +447 -0
  49. package/dist/commands/lists.js.map +1 -0
  50. package/dist/commands/scan.d.ts +24 -0
  51. package/dist/commands/scan.d.ts.map +1 -0
  52. package/dist/commands/scan.js +316 -0
  53. package/dist/commands/scan.js.map +1 -0
  54. package/dist/commands/scripts.d.ts +22 -0
  55. package/dist/commands/scripts.d.ts.map +1 -0
  56. package/dist/commands/scripts.js +192 -0
  57. package/dist/commands/scripts.js.map +1 -0
  58. package/dist/commands/sets.d.ts +62 -0
  59. package/dist/commands/sets.d.ts.map +1 -0
  60. package/dist/commands/sets.js +436 -0
  61. package/dist/commands/sets.js.map +1 -0
  62. package/dist/commands/streams.d.ts +63 -0
  63. package/dist/commands/streams.d.ts.map +1 -0
  64. package/dist/commands/streams.js +504 -0
  65. package/dist/commands/streams.js.map +1 -0
  66. package/dist/commands/strings.d.ts +96 -0
  67. package/dist/commands/strings.d.ts.map +1 -0
  68. package/dist/commands/strings.js +555 -0
  69. package/dist/commands/strings.js.map +1 -0
  70. package/dist/commands/transactions.d.ts +9 -0
  71. package/dist/commands/transactions.d.ts.map +1 -0
  72. package/dist/commands/transactions.js +89 -0
  73. package/dist/commands/transactions.js.map +1 -0
  74. package/dist/commands/zsets.d.ts +82 -0
  75. package/dist/commands/zsets.d.ts.map +1 -0
  76. package/dist/commands/zsets.js +504 -0
  77. package/dist/commands/zsets.js.map +1 -0
  78. package/dist/core/client-session.d.ts +172 -0
  79. package/dist/core/client-session.d.ts.map +1 -0
  80. package/dist/core/client-session.js +379 -0
  81. package/dist/core/client-session.js.map +1 -0
  82. package/dist/core/command-definition.d.ts +64 -0
  83. package/dist/core/command-definition.d.ts.map +1 -0
  84. package/dist/core/command-definition.js +10 -0
  85. package/dist/core/command-definition.js.map +1 -0
  86. package/dist/core/command-executor.d.ts +103 -0
  87. package/dist/core/command-executor.d.ts.map +1 -0
  88. package/dist/core/command-executor.js +295 -0
  89. package/dist/core/command-executor.js.map +1 -0
  90. package/dist/core/command-registry.d.ts +16 -0
  91. package/dist/core/command-registry.d.ts.map +1 -0
  92. package/dist/core/command-registry.js +35 -0
  93. package/dist/core/command-registry.js.map +1 -0
  94. package/dist/core/command-schema.d.ts +43 -0
  95. package/dist/core/command-schema.d.ts.map +1 -0
  96. package/dist/core/command-schema.js +189 -0
  97. package/dist/core/command-schema.js.map +1 -0
  98. package/dist/core/execution-policies/auth-policy.d.ts +10 -0
  99. package/dist/core/execution-policies/auth-policy.d.ts.map +1 -0
  100. package/dist/core/execution-policies/auth-policy.js +39 -0
  101. package/dist/core/execution-policies/auth-policy.js.map +1 -0
  102. package/dist/core/execution-policies/cluster-policy.d.ts +8 -0
  103. package/dist/core/execution-policies/cluster-policy.d.ts.map +1 -0
  104. package/dist/core/execution-policies/cluster-policy.js +67 -0
  105. package/dist/core/execution-policies/cluster-policy.js.map +1 -0
  106. package/dist/core/execution-policies/index.d.ts +17 -0
  107. package/dist/core/execution-policies/index.d.ts.map +1 -0
  108. package/dist/core/execution-policies/index.js +10 -0
  109. package/dist/core/execution-policies/index.js.map +1 -0
  110. package/dist/core/execution-policies/transaction-policy.d.ts +3 -0
  111. package/dist/core/execution-policies/transaction-policy.d.ts.map +1 -0
  112. package/dist/core/execution-policies/transaction-policy.js +21 -0
  113. package/dist/core/execution-policies/transaction-policy.js.map +1 -0
  114. package/dist/core/lua-runtime.d.ts +15 -0
  115. package/dist/core/lua-runtime.d.ts.map +1 -0
  116. package/dist/core/lua-runtime.js +165 -0
  117. package/dist/core/lua-runtime.js.map +1 -0
  118. package/dist/core/redis-context.d.ts +46 -0
  119. package/dist/core/redis-context.d.ts.map +1 -0
  120. package/dist/core/redis-context.js +46 -0
  121. package/dist/core/redis-context.js.map +1 -0
  122. package/dist/core/redis-error.d.ts +137 -0
  123. package/dist/core/redis-error.d.ts.map +1 -0
  124. package/dist/core/redis-error.js +288 -0
  125. package/dist/core/redis-error.js.map +1 -0
  126. package/dist/core/redis-result.d.ts +15 -0
  127. package/dist/core/redis-result.d.ts.map +1 -0
  128. package/dist/core/redis-result.js +26 -0
  129. package/dist/core/redis-result.js.map +1 -0
  130. package/dist/core/redis-value.d.ts +65 -0
  131. package/dist/core/redis-value.d.ts.map +1 -0
  132. package/dist/core/redis-value.js +45 -0
  133. package/dist/core/redis-value.js.map +1 -0
  134. package/dist/core/resp-encoder.d.ts +9 -0
  135. package/dist/core/resp-encoder.d.ts.map +1 -0
  136. package/dist/core/resp-encoder.js +164 -0
  137. package/dist/core/resp-encoder.js.map +1 -0
  138. package/dist/core/response-stream.d.ts +17 -0
  139. package/dist/core/response-stream.d.ts.map +1 -0
  140. package/dist/core/response-stream.js +10 -0
  141. package/dist/core/response-stream.js.map +1 -0
  142. package/dist/core/transports/connection-transport.d.ts +12 -0
  143. package/dist/core/transports/connection-transport.d.ts.map +1 -0
  144. package/dist/core/transports/connection-transport.js +3 -0
  145. package/dist/core/transports/connection-transport.js.map +1 -0
  146. package/dist/core/transports/in-memory-connection-transport.d.ts +28 -0
  147. package/dist/core/transports/in-memory-connection-transport.d.ts.map +1 -0
  148. package/dist/core/transports/in-memory-connection-transport.js +111 -0
  149. package/dist/core/transports/in-memory-connection-transport.js.map +1 -0
  150. package/dist/core/transports/resp2/decoder.d.ts +19 -0
  151. package/dist/core/transports/resp2/decoder.d.ts.map +1 -0
  152. package/dist/core/transports/resp2/decoder.js +221 -0
  153. package/dist/core/transports/resp2/decoder.js.map +1 -0
  154. package/dist/core/transports/resp2/index.d.ts +2 -12
  155. package/dist/core/transports/resp2/index.d.ts.map +1 -1
  156. package/dist/core/transports/resp2/index.js +9 -0
  157. package/dist/core/transports/resp2/index.js.map +1 -0
  158. package/dist/core/transports/resp2/server.d.ts +28 -0
  159. package/dist/core/transports/resp2/server.d.ts.map +1 -0
  160. package/dist/core/transports/resp2/server.js +86 -0
  161. package/dist/core/transports/resp2/server.js.map +1 -0
  162. package/dist/core/transports/resp2/session-adapter.d.ts +24 -0
  163. package/dist/core/transports/resp2/session-adapter.d.ts.map +1 -0
  164. package/dist/core/transports/resp2/session-adapter.js +93 -0
  165. package/dist/core/transports/resp2/session-adapter.js.map +1 -0
  166. package/dist/core/transports/socket-connection-transport.d.ts +20 -0
  167. package/dist/core/transports/socket-connection-transport.d.ts.map +1 -0
  168. package/dist/core/transports/socket-connection-transport.js +64 -0
  169. package/dist/core/transports/socket-connection-transport.js.map +1 -0
  170. package/dist/core/turn-queue.d.ts +15 -0
  171. package/dist/core/turn-queue.d.ts.map +1 -0
  172. package/dist/core/turn-queue.js +51 -0
  173. package/dist/core/turn-queue.js.map +1 -0
  174. package/dist/index.d.ts +35 -347
  175. package/dist/index.d.ts.map +1 -1
  176. package/dist/index.js +157 -0
  177. package/dist/index.js.map +1 -0
  178. package/dist/logger.d.ts +6 -0
  179. package/dist/logger.d.ts.map +1 -0
  180. package/dist/logger.js +3 -0
  181. package/dist/logger.js.map +1 -0
  182. package/dist/state/cluster-topology.d.ts +36 -0
  183. package/dist/state/cluster-topology.d.ts.map +1 -0
  184. package/dist/state/cluster-topology.js +109 -0
  185. package/dist/state/cluster-topology.js.map +1 -0
  186. package/dist/state/data-types.d.ts +51 -0
  187. package/dist/state/data-types.d.ts.map +1 -0
  188. package/dist/state/data-types.js +78 -0
  189. package/dist/state/data-types.js.map +1 -0
  190. package/dist/state/database.d.ts +46 -0
  191. package/dist/state/database.d.ts.map +1 -0
  192. package/dist/state/database.js +122 -0
  193. package/dist/state/database.js.map +1 -0
  194. package/dist/state/index.d.ts +14 -0
  195. package/dist/state/index.d.ts.map +1 -0
  196. package/dist/state/index.js +27 -0
  197. package/dist/state/index.js.map +1 -0
  198. package/dist/state/keyspace.d.ts +45 -0
  199. package/dist/state/keyspace.d.ts.map +1 -0
  200. package/dist/state/keyspace.js +181 -0
  201. package/dist/state/keyspace.js.map +1 -0
  202. package/dist/state/mutation-events.d.ts +38 -0
  203. package/dist/state/mutation-events.d.ts.map +1 -0
  204. package/dist/state/mutation-events.js +74 -0
  205. package/dist/state/mutation-events.js.map +1 -0
  206. package/dist/state/pubsub-broker.d.ts +4 -0
  207. package/dist/state/pubsub-broker.d.ts.map +1 -0
  208. package/dist/state/pubsub-broker.js +10 -0
  209. package/dist/state/pubsub-broker.js.map +1 -0
  210. package/dist/state/script-cache.d.ts +10 -0
  211. package/dist/state/script-cache.d.ts.map +1 -0
  212. package/dist/state/script-cache.js +33 -0
  213. package/dist/state/script-cache.js.map +1 -0
  214. package/dist/state/server-state.d.ts +31 -0
  215. package/dist/state/server-state.d.ts.map +1 -0
  216. package/dist/state/server-state.js +44 -0
  217. package/dist/state/server-state.js.map +1 -0
  218. package/package.json +22 -26
  219. package/dist/cli.mjs +0 -5923
  220. package/dist/cli.mjs.map +0 -1
  221. package/dist/commanders/custom/base-commander.d.ts +0 -19
  222. package/dist/commanders/custom/base-commander.d.ts.map +0 -1
  223. package/dist/commanders/custom/cluster-router.d.ts +0 -57
  224. package/dist/commanders/custom/cluster-router.d.ts.map +0 -1
  225. package/dist/commanders/custom/clusterCommander.d.ts +0 -39
  226. package/dist/commanders/custom/clusterCommander.d.ts.map +0 -1
  227. package/dist/commanders/custom/commander.d.ts +0 -12
  228. package/dist/commanders/custom/commander.d.ts.map +0 -1
  229. package/dist/commanders/custom/commands/metadata.d.ts +0 -101
  230. package/dist/commanders/custom/commands/metadata.d.ts.map +0 -1
  231. package/dist/commanders/custom/commands/redis/client/clientSetName.d.ts +0 -8
  232. package/dist/commanders/custom/commands/redis/client/clientSetName.d.ts.map +0 -1
  233. package/dist/commanders/custom/commands/redis/client/index.d.ts +0 -9
  234. package/dist/commanders/custom/commands/redis/client/index.d.ts.map +0 -1
  235. package/dist/commanders/custom/commands/redis/cluster/clusterInfo.d.ts +0 -7
  236. package/dist/commanders/custom/commands/redis/cluster/clusterInfo.d.ts.map +0 -1
  237. package/dist/commanders/custom/commands/redis/cluster/clusterNodes.d.ts +0 -7
  238. package/dist/commanders/custom/commands/redis/cluster/clusterNodes.d.ts.map +0 -1
  239. package/dist/commanders/custom/commands/redis/cluster/clusterShards.d.ts +0 -7
  240. package/dist/commanders/custom/commands/redis/cluster/clusterShards.d.ts.map +0 -1
  241. package/dist/commanders/custom/commands/redis/cluster/clusterSlots.d.ts +0 -7
  242. package/dist/commanders/custom/commands/redis/cluster/clusterSlots.d.ts.map +0 -1
  243. package/dist/commanders/custom/commands/redis/cluster/index.d.ts +0 -8
  244. package/dist/commanders/custom/commands/redis/cluster/index.d.ts.map +0 -1
  245. package/dist/commanders/custom/commands/redis/command/index.d.ts +0 -6
  246. package/dist/commanders/custom/commands/redis/command/index.d.ts.map +0 -1
  247. package/dist/commanders/custom/commands/redis/data/hashes/hdel.d.ts +0 -9
  248. package/dist/commanders/custom/commands/redis/data/hashes/hdel.d.ts.map +0 -1
  249. package/dist/commanders/custom/commands/redis/data/hashes/hexists.d.ts +0 -8
  250. package/dist/commanders/custom/commands/redis/data/hashes/hexists.d.ts.map +0 -1
  251. package/dist/commanders/custom/commands/redis/data/hashes/hget.d.ts +0 -8
  252. package/dist/commanders/custom/commands/redis/data/hashes/hget.d.ts.map +0 -1
  253. package/dist/commanders/custom/commands/redis/data/hashes/hgetall.d.ts +0 -5
  254. package/dist/commanders/custom/commands/redis/data/hashes/hgetall.d.ts.map +0 -1
  255. package/dist/commanders/custom/commands/redis/data/hashes/hincrby.d.ts +0 -9
  256. package/dist/commanders/custom/commands/redis/data/hashes/hincrby.d.ts.map +0 -1
  257. package/dist/commanders/custom/commands/redis/data/hashes/hincrbyfloat.d.ts +0 -9
  258. package/dist/commanders/custom/commands/redis/data/hashes/hincrbyfloat.d.ts.map +0 -1
  259. package/dist/commanders/custom/commands/redis/data/hashes/hkeys.d.ts +0 -5
  260. package/dist/commanders/custom/commands/redis/data/hashes/hkeys.d.ts.map +0 -1
  261. package/dist/commanders/custom/commands/redis/data/hashes/hlen.d.ts +0 -5
  262. package/dist/commanders/custom/commands/redis/data/hashes/hlen.d.ts.map +0 -1
  263. package/dist/commanders/custom/commands/redis/data/hashes/hmget.d.ts +0 -9
  264. package/dist/commanders/custom/commands/redis/data/hashes/hmget.d.ts.map +0 -1
  265. package/dist/commanders/custom/commands/redis/data/hashes/hmset.d.ts +0 -10
  266. package/dist/commanders/custom/commands/redis/data/hashes/hmset.d.ts.map +0 -1
  267. package/dist/commanders/custom/commands/redis/data/hashes/hset.d.ts +0 -10
  268. package/dist/commanders/custom/commands/redis/data/hashes/hset.d.ts.map +0 -1
  269. package/dist/commanders/custom/commands/redis/data/hashes/hvals.d.ts +0 -5
  270. package/dist/commanders/custom/commands/redis/data/hashes/hvals.d.ts.map +0 -1
  271. package/dist/commanders/custom/commands/redis/data/hashes/index.d.ts +0 -13
  272. package/dist/commanders/custom/commands/redis/data/hashes/index.d.ts.map +0 -1
  273. package/dist/commanders/custom/commands/redis/data/index.d.ts +0 -7
  274. package/dist/commanders/custom/commands/redis/data/index.d.ts.map +0 -1
  275. package/dist/commanders/custom/commands/redis/data/keys/dbsize.d.ts +0 -5
  276. package/dist/commanders/custom/commands/redis/data/keys/dbsize.d.ts.map +0 -1
  277. package/dist/commanders/custom/commands/redis/data/keys/del.d.ts +0 -8
  278. package/dist/commanders/custom/commands/redis/data/keys/del.d.ts.map +0 -1
  279. package/dist/commanders/custom/commands/redis/data/keys/exists.d.ts +0 -8
  280. package/dist/commanders/custom/commands/redis/data/keys/exists.d.ts.map +0 -1
  281. package/dist/commanders/custom/commands/redis/data/keys/expire.d.ts +0 -8
  282. package/dist/commanders/custom/commands/redis/data/keys/expire.d.ts.map +0 -1
  283. package/dist/commanders/custom/commands/redis/data/keys/expireat.d.ts +0 -8
  284. package/dist/commanders/custom/commands/redis/data/keys/expireat.d.ts.map +0 -1
  285. package/dist/commanders/custom/commands/redis/data/keys/flushall.d.ts +0 -5
  286. package/dist/commanders/custom/commands/redis/data/keys/flushall.d.ts.map +0 -1
  287. package/dist/commanders/custom/commands/redis/data/keys/flushdb.d.ts +0 -5
  288. package/dist/commanders/custom/commands/redis/data/keys/flushdb.d.ts.map +0 -1
  289. package/dist/commanders/custom/commands/redis/data/keys/index.d.ts +0 -11
  290. package/dist/commanders/custom/commands/redis/data/keys/index.d.ts.map +0 -1
  291. package/dist/commanders/custom/commands/redis/data/keys/pttl.d.ts +0 -5
  292. package/dist/commanders/custom/commands/redis/data/keys/pttl.d.ts.map +0 -1
  293. package/dist/commanders/custom/commands/redis/data/keys/ttl.d.ts +0 -5
  294. package/dist/commanders/custom/commands/redis/data/keys/ttl.d.ts.map +0 -1
  295. package/dist/commanders/custom/commands/redis/data/keys/type.d.ts +0 -5
  296. package/dist/commanders/custom/commands/redis/data/keys/type.d.ts.map +0 -1
  297. package/dist/commanders/custom/commands/redis/data/lists/index.d.ts +0 -11
  298. package/dist/commanders/custom/commands/redis/data/lists/index.d.ts.map +0 -1
  299. package/dist/commanders/custom/commands/redis/data/lists/lindex.d.ts +0 -8
  300. package/dist/commanders/custom/commands/redis/data/lists/lindex.d.ts.map +0 -1
  301. package/dist/commanders/custom/commands/redis/data/lists/llen.d.ts +0 -5
  302. package/dist/commanders/custom/commands/redis/data/lists/llen.d.ts.map +0 -1
  303. package/dist/commanders/custom/commands/redis/data/lists/lpop.d.ts +0 -5
  304. package/dist/commanders/custom/commands/redis/data/lists/lpop.d.ts.map +0 -1
  305. package/dist/commanders/custom/commands/redis/data/lists/lpush.d.ts +0 -9
  306. package/dist/commanders/custom/commands/redis/data/lists/lpush.d.ts.map +0 -1
  307. package/dist/commanders/custom/commands/redis/data/lists/lrange.d.ts +0 -9
  308. package/dist/commanders/custom/commands/redis/data/lists/lrange.d.ts.map +0 -1
  309. package/dist/commanders/custom/commands/redis/data/lists/lrem.d.ts +0 -9
  310. package/dist/commanders/custom/commands/redis/data/lists/lrem.d.ts.map +0 -1
  311. package/dist/commanders/custom/commands/redis/data/lists/lset.d.ts +0 -9
  312. package/dist/commanders/custom/commands/redis/data/lists/lset.d.ts.map +0 -1
  313. package/dist/commanders/custom/commands/redis/data/lists/ltrim.d.ts +0 -9
  314. package/dist/commanders/custom/commands/redis/data/lists/ltrim.d.ts.map +0 -1
  315. package/dist/commanders/custom/commands/redis/data/lists/rpop.d.ts +0 -5
  316. package/dist/commanders/custom/commands/redis/data/lists/rpop.d.ts.map +0 -1
  317. package/dist/commanders/custom/commands/redis/data/lists/rpush.d.ts +0 -9
  318. package/dist/commanders/custom/commands/redis/data/lists/rpush.d.ts.map +0 -1
  319. package/dist/commanders/custom/commands/redis/data/sets/index.d.ts +0 -12
  320. package/dist/commanders/custom/commands/redis/data/sets/index.d.ts.map +0 -1
  321. package/dist/commanders/custom/commands/redis/data/sets/sadd.d.ts +0 -9
  322. package/dist/commanders/custom/commands/redis/data/sets/sadd.d.ts.map +0 -1
  323. package/dist/commanders/custom/commands/redis/data/sets/scard.d.ts +0 -5
  324. package/dist/commanders/custom/commands/redis/data/sets/scard.d.ts.map +0 -1
  325. package/dist/commanders/custom/commands/redis/data/sets/sdiff.d.ts +0 -8
  326. package/dist/commanders/custom/commands/redis/data/sets/sdiff.d.ts.map +0 -1
  327. package/dist/commanders/custom/commands/redis/data/sets/sinter.d.ts +0 -8
  328. package/dist/commanders/custom/commands/redis/data/sets/sinter.d.ts.map +0 -1
  329. package/dist/commanders/custom/commands/redis/data/sets/sismember.d.ts +0 -8
  330. package/dist/commanders/custom/commands/redis/data/sets/sismember.d.ts.map +0 -1
  331. package/dist/commanders/custom/commands/redis/data/sets/smembers.d.ts +0 -5
  332. package/dist/commanders/custom/commands/redis/data/sets/smembers.d.ts.map +0 -1
  333. package/dist/commanders/custom/commands/redis/data/sets/smove.d.ts +0 -9
  334. package/dist/commanders/custom/commands/redis/data/sets/smove.d.ts.map +0 -1
  335. package/dist/commanders/custom/commands/redis/data/sets/spop.d.ts +0 -5
  336. package/dist/commanders/custom/commands/redis/data/sets/spop.d.ts.map +0 -1
  337. package/dist/commanders/custom/commands/redis/data/sets/srandmember.d.ts +0 -8
  338. package/dist/commanders/custom/commands/redis/data/sets/srandmember.d.ts.map +0 -1
  339. package/dist/commanders/custom/commands/redis/data/sets/srem.d.ts +0 -9
  340. package/dist/commanders/custom/commands/redis/data/sets/srem.d.ts.map +0 -1
  341. package/dist/commanders/custom/commands/redis/data/sets/sunion.d.ts +0 -8
  342. package/dist/commanders/custom/commands/redis/data/sets/sunion.d.ts.map +0 -1
  343. package/dist/commanders/custom/commands/redis/data/strings/append.d.ts +0 -8
  344. package/dist/commanders/custom/commands/redis/data/strings/append.d.ts.map +0 -1
  345. package/dist/commanders/custom/commands/redis/data/strings/decr.d.ts +0 -5
  346. package/dist/commanders/custom/commands/redis/data/strings/decr.d.ts.map +0 -1
  347. package/dist/commanders/custom/commands/redis/data/strings/decrby.d.ts +0 -8
  348. package/dist/commanders/custom/commands/redis/data/strings/decrby.d.ts.map +0 -1
  349. package/dist/commanders/custom/commands/redis/data/strings/get.d.ts +0 -5
  350. package/dist/commanders/custom/commands/redis/data/strings/get.d.ts.map +0 -1
  351. package/dist/commanders/custom/commands/redis/data/strings/getset.d.ts +0 -8
  352. package/dist/commanders/custom/commands/redis/data/strings/getset.d.ts.map +0 -1
  353. package/dist/commanders/custom/commands/redis/data/strings/incr.d.ts +0 -5
  354. package/dist/commanders/custom/commands/redis/data/strings/incr.d.ts.map +0 -1
  355. package/dist/commanders/custom/commands/redis/data/strings/incrby.d.ts +0 -8
  356. package/dist/commanders/custom/commands/redis/data/strings/incrby.d.ts.map +0 -1
  357. package/dist/commanders/custom/commands/redis/data/strings/incrbyfloat.d.ts +0 -8
  358. package/dist/commanders/custom/commands/redis/data/strings/incrbyfloat.d.ts.map +0 -1
  359. package/dist/commanders/custom/commands/redis/data/strings/index.d.ts +0 -14
  360. package/dist/commanders/custom/commands/redis/data/strings/index.d.ts.map +0 -1
  361. package/dist/commanders/custom/commands/redis/data/strings/mget.d.ts +0 -8
  362. package/dist/commanders/custom/commands/redis/data/strings/mget.d.ts.map +0 -1
  363. package/dist/commanders/custom/commands/redis/data/strings/mset.d.ts +0 -9
  364. package/dist/commanders/custom/commands/redis/data/strings/mset.d.ts.map +0 -1
  365. package/dist/commanders/custom/commands/redis/data/strings/msetnx.d.ts +0 -9
  366. package/dist/commanders/custom/commands/redis/data/strings/msetnx.d.ts.map +0 -1
  367. package/dist/commanders/custom/commands/redis/data/strings/set.d.ts +0 -29
  368. package/dist/commanders/custom/commands/redis/data/strings/set.d.ts.map +0 -1
  369. package/dist/commanders/custom/commands/redis/data/strings/strlen.d.ts +0 -5
  370. package/dist/commanders/custom/commands/redis/data/strings/strlen.d.ts.map +0 -1
  371. package/dist/commanders/custom/commands/redis/data/zsets/index.d.ts +0 -12
  372. package/dist/commanders/custom/commands/redis/data/zsets/index.d.ts.map +0 -1
  373. package/dist/commanders/custom/commands/redis/data/zsets/zadd.d.ts +0 -10
  374. package/dist/commanders/custom/commands/redis/data/zsets/zadd.d.ts.map +0 -1
  375. package/dist/commanders/custom/commands/redis/data/zsets/zcard.d.ts +0 -5
  376. package/dist/commanders/custom/commands/redis/data/zsets/zcard.d.ts.map +0 -1
  377. package/dist/commanders/custom/commands/redis/data/zsets/zincrby.d.ts +0 -9
  378. package/dist/commanders/custom/commands/redis/data/zsets/zincrby.d.ts.map +0 -1
  379. package/dist/commanders/custom/commands/redis/data/zsets/zrange.d.ts +0 -10
  380. package/dist/commanders/custom/commands/redis/data/zsets/zrange.d.ts.map +0 -1
  381. package/dist/commanders/custom/commands/redis/data/zsets/zrangebyscore.d.ts +0 -9
  382. package/dist/commanders/custom/commands/redis/data/zsets/zrangebyscore.d.ts.map +0 -1
  383. package/dist/commanders/custom/commands/redis/data/zsets/zrank.d.ts +0 -8
  384. package/dist/commanders/custom/commands/redis/data/zsets/zrank.d.ts.map +0 -1
  385. package/dist/commanders/custom/commands/redis/data/zsets/zrem.d.ts +0 -9
  386. package/dist/commanders/custom/commands/redis/data/zsets/zrem.d.ts.map +0 -1
  387. package/dist/commanders/custom/commands/redis/data/zsets/zremrangebyscore.d.ts +0 -9
  388. package/dist/commanders/custom/commands/redis/data/zsets/zremrangebyscore.d.ts.map +0 -1
  389. package/dist/commanders/custom/commands/redis/data/zsets/zrevrange.d.ts +0 -10
  390. package/dist/commanders/custom/commands/redis/data/zsets/zrevrange.d.ts.map +0 -1
  391. package/dist/commanders/custom/commands/redis/data/zsets/zrevrank.d.ts +0 -8
  392. package/dist/commanders/custom/commands/redis/data/zsets/zrevrank.d.ts.map +0 -1
  393. package/dist/commanders/custom/commands/redis/data/zsets/zscore.d.ts +0 -8
  394. package/dist/commanders/custom/commands/redis/data/zsets/zscore.d.ts.map +0 -1
  395. package/dist/commanders/custom/commands/redis/index.d.ts +0 -39
  396. package/dist/commanders/custom/commands/redis/index.d.ts.map +0 -1
  397. package/dist/commanders/custom/commands/redis/info.d.ts +0 -7
  398. package/dist/commanders/custom/commands/redis/info.d.ts.map +0 -1
  399. package/dist/commanders/custom/commands/redis/monitor.d.ts +0 -5
  400. package/dist/commanders/custom/commands/redis/monitor.d.ts.map +0 -1
  401. package/dist/commanders/custom/commands/redis/ping.d.ts +0 -7
  402. package/dist/commanders/custom/commands/redis/ping.d.ts.map +0 -1
  403. package/dist/commanders/custom/commands/redis/quit.d.ts +0 -5
  404. package/dist/commanders/custom/commands/redis/quit.d.ts.map +0 -1
  405. package/dist/commanders/custom/commands/redis/script/debug.d.ts +0 -7
  406. package/dist/commanders/custom/commands/redis/script/debug.d.ts.map +0 -1
  407. package/dist/commanders/custom/commands/redis/script/eval.d.ts +0 -7
  408. package/dist/commanders/custom/commands/redis/script/eval.d.ts.map +0 -1
  409. package/dist/commanders/custom/commands/redis/script/evalsha.d.ts +0 -7
  410. package/dist/commanders/custom/commands/redis/script/evalsha.d.ts.map +0 -1
  411. package/dist/commanders/custom/commands/redis/script/exists.d.ts +0 -8
  412. package/dist/commanders/custom/commands/redis/script/exists.d.ts.map +0 -1
  413. package/dist/commanders/custom/commands/redis/script/flush.d.ts +0 -7
  414. package/dist/commanders/custom/commands/redis/script/flush.d.ts.map +0 -1
  415. package/dist/commanders/custom/commands/redis/script/help.d.ts +0 -5
  416. package/dist/commanders/custom/commands/redis/script/help.d.ts.map +0 -1
  417. package/dist/commanders/custom/commands/redis/script/index.d.ts +0 -8
  418. package/dist/commanders/custom/commands/redis/script/index.d.ts.map +0 -1
  419. package/dist/commanders/custom/commands/redis/script/kill.d.ts +0 -5
  420. package/dist/commanders/custom/commands/redis/script/kill.d.ts.map +0 -1
  421. package/dist/commanders/custom/commands/redis/script/load.d.ts +0 -5
  422. package/dist/commanders/custom/commands/redis/script/load.d.ts.map +0 -1
  423. package/dist/commanders/custom/commands/redis/script/lua-reply.d.ts +0 -8
  424. package/dist/commanders/custom/commands/redis/script/lua-reply.d.ts.map +0 -1
  425. package/dist/commanders/custom/commands/registry.d.ts +0 -84
  426. package/dist/commanders/custom/commands/registry.d.ts.map +0 -1
  427. package/dist/commanders/custom/data-structures/hash.d.ts +0 -16
  428. package/dist/commanders/custom/data-structures/hash.d.ts.map +0 -1
  429. package/dist/commanders/custom/data-structures/list.d.ts +0 -15
  430. package/dist/commanders/custom/data-structures/list.d.ts.map +0 -1
  431. package/dist/commanders/custom/data-structures/set.d.ts +0 -16
  432. package/dist/commanders/custom/data-structures/set.d.ts.map +0 -1
  433. package/dist/commanders/custom/data-structures/stream.d.ts +0 -3
  434. package/dist/commanders/custom/data-structures/stream.d.ts.map +0 -1
  435. package/dist/commanders/custom/data-structures/string.d.ts +0 -5
  436. package/dist/commanders/custom/data-structures/string.d.ts.map +0 -1
  437. package/dist/commanders/custom/data-structures/zset.d.ts +0 -17
  438. package/dist/commanders/custom/data-structures/zset.d.ts.map +0 -1
  439. package/dist/commanders/custom/db.d.ts +0 -67
  440. package/dist/commanders/custom/db.d.ts.map +0 -1
  441. package/dist/commanders/custom/execution-context.d.ts +0 -12
  442. package/dist/commanders/custom/execution-context.d.ts.map +0 -1
  443. package/dist/commanders/custom/lua-runtime.d.ts +0 -16
  444. package/dist/commanders/custom/lua-runtime.d.ts.map +0 -1
  445. package/dist/commanders/custom/redis-kernel.d.ts +0 -46
  446. package/dist/commanders/custom/redis-kernel.d.ts.map +0 -1
  447. package/dist/commanders/custom/schema/builder.d.ts +0 -24
  448. package/dist/commanders/custom/schema/builder.d.ts.map +0 -1
  449. package/dist/commanders/custom/schema/command-adapter.d.ts +0 -25
  450. package/dist/commanders/custom/schema/command-adapter.d.ts.map +0 -1
  451. package/dist/commanders/custom/schema/index.d.ts +0 -7
  452. package/dist/commanders/custom/schema/index.d.ts.map +0 -1
  453. package/dist/commanders/custom/schema/input-mapper.d.ts +0 -28
  454. package/dist/commanders/custom/schema/input-mapper.d.ts.map +0 -1
  455. package/dist/commanders/custom/schema/registry.d.ts +0 -13
  456. package/dist/commanders/custom/schema/registry.d.ts.map +0 -1
  457. package/dist/commanders/custom/schema/resp-input-mapper.d.ts +0 -20
  458. package/dist/commanders/custom/schema/resp-input-mapper.d.ts.map +0 -1
  459. package/dist/commanders/custom/schema/types.d.ts +0 -43
  460. package/dist/commanders/custom/schema/types.d.ts.map +0 -1
  461. package/dist/core/cluster/network.d.ts +0 -24
  462. package/dist/core/cluster/network.d.ts.map +0 -1
  463. package/dist/core/errors.d.ts +0 -87
  464. package/dist/core/errors.d.ts.map +0 -1
  465. package/dist/core/transports/buffered-transport.d.ts +0 -14
  466. package/dist/core/transports/buffered-transport.d.ts.map +0 -1
  467. package/dist/core/transports/capturing-transport.d.ts +0 -19
  468. package/dist/core/transports/capturing-transport.d.ts.map +0 -1
  469. package/dist/core/transports/command-validator.d.ts +0 -12
  470. package/dist/core/transports/command-validator.d.ts.map +0 -1
  471. package/dist/core/transports/resp2/adapter.d.ts +0 -32
  472. package/dist/core/transports/resp2/adapter.d.ts.map +0 -1
  473. package/dist/core/transports/session-state.d.ts +0 -76
  474. package/dist/core/transports/session-state.d.ts.map +0 -1
  475. package/dist/core/transports/session.d.ts +0 -36
  476. package/dist/core/transports/session.d.ts.map +0 -1
  477. package/dist/index.cjs +0 -5759
  478. package/dist/index.cjs.map +0 -1
  479. package/dist/index.mjs +0 -5749
  480. package/dist/index.mjs.map +0 -1
  481. package/dist/types.d.ts +0 -54
  482. package/dist/types.d.ts.map +0 -1
package/README.md CHANGED
@@ -8,13 +8,34 @@
8
8
 
9
9
  In-memory Redis-compatible server implementation in JavaScript. Useful for testing and development without requiring a real Redis instance.
10
10
 
11
+ ## Table of Contents
12
+
13
+ - [Features](#features)
14
+ - [Installation](#installation)
15
+ - [Quick Start](#quick-start)
16
+ - [As a Library](#as-a-library)
17
+ - [As a CLI](#as-a-cli)
18
+ - [CLI Options](#cli-options)
19
+ - [Connecting Clients](#connecting-clients)
20
+ - [Protocol Version (RESP2 / RESP3)](#protocol-version-resp2--resp3)
21
+ - [Connecting with ioredis](#connecting-with-ioredis)
22
+ - [Connecting with node-redis](#connecting-with-node-redis)
23
+ - [Using in Unit Tests](#using-in-unit-tests)
24
+ - [Cluster Mode](#cluster-mode)
25
+ - [API Reference](#api-reference)
26
+ - [Supported Commands](docs/COMMANDS.md)
27
+ - [Requirements](#requirements)
28
+ - [Development](#development)
29
+ - [Contributing](#contributing)
30
+ - [License](#license)
31
+
11
32
  ## Features
12
33
 
13
- - **Redis-compatible protocol** - Works with any Redis client (ioredis, node-redis, etc.)
34
+ - **RESP2 and RESP3 protocols** - Per-session version negotiation via `HELLO`
14
35
  - **Standalone and Cluster modes** - Run a single server or a full cluster
15
36
  - **Lua scripting support** - Execute Redis Lua scripts via WebAssembly
16
37
  - **No external dependencies** - Pure JavaScript, no Redis installation needed
17
- - **Dual package** - Supports both ESM and CommonJS
38
+ - **TypeScript support** - Ships with full type definitions
18
39
 
19
40
  ## Installation
20
41
 
@@ -27,22 +48,27 @@ npm install js-redis-server
27
48
  ### As a Library
28
49
 
29
50
  ```typescript
30
- import { createCustomCommander, Resp2Transport } from 'js-redis-server'
51
+ import {
52
+ RedisServerState,
53
+ createRedisCommandExecutor,
54
+ Resp2Server,
55
+ } from 'js-redis-server'
31
56
 
32
57
  const logger = {
33
58
  info: console.log,
34
59
  error: console.error,
60
+ debug: console.debug,
35
61
  }
36
62
 
37
- const factory = await createCustomCommander(logger)
38
- const transport = new Resp2Transport(logger, factory.createCommander())
63
+ const state = new RedisServerState()
64
+ const executor = createRedisCommandExecutor()
65
+ const server = new Resp2Server({ server: state, executor, logger })
39
66
 
40
- await transport.listen(6379)
41
- console.log('Redis server listening on port 6379')
67
+ await server.listen(6379)
68
+ console.log(`Redis server listening at ${server.getAddress()}`)
42
69
 
43
70
  // Cleanup
44
- await transport.close()
45
- await factory.shutdown()
71
+ await server.close()
46
72
  ```
47
73
 
48
74
  ### As a CLI
@@ -78,66 +104,193 @@ Cluster options:
78
104
  --base-port <number> Starting port for cluster nodes (default 30000)
79
105
 
80
106
  General:
107
+ -d, --debug Enable debug logging
81
108
  -h, --help Show help
82
109
  ```
83
110
 
84
111
  ## Cluster Mode
85
112
 
86
113
  ```typescript
87
- import { ClusterNetwork } from 'js-redis-server'
114
+ import { buildRedisCluster } from 'js-redis-server'
88
115
 
89
- const logger = { info: console.log, error: console.error }
90
- const cluster = new ClusterNetwork(logger)
116
+ const logger = {
117
+ info: console.log,
118
+ error: console.error,
119
+ debug: console.debug,
120
+ }
91
121
 
92
- await cluster.init({
122
+ const cluster = buildRedisCluster({
93
123
  masters: 3,
94
- slaves: 1,
124
+ replicasPerMaster: 1,
95
125
  basePort: 30000,
126
+ logger,
96
127
  })
97
128
 
129
+ await cluster.listen()
130
+
98
131
  // Get all node addresses
99
- const nodes = cluster.getAll()
100
- console.log(nodes.map(n => `${n.host}:${n.port}`))
132
+ console.log(cluster.nodes.map(n => `${n.host}:${n.port}`))
101
133
 
102
134
  // Cleanup
103
- await cluster.shutdown()
135
+ await cluster.close()
104
136
  ```
105
137
 
106
- ## Supported Commands
138
+ ## Connecting Clients
107
139
 
108
- ### Strings
109
- `GET`, `SET`, `MGET`, `MSET`, `MSETNX`, `APPEND`, `STRLEN`, `GETSET`, `INCR`, `INCRBY`, `INCRBYFLOAT`, `DECR`, `DECRBY`
140
+ You can connect to `js-redis-server` using any standard Redis client.
110
141
 
111
- ### Hashes
112
- `HGET`, `HSET`, `HMGET`, `HMSET`, `HDEL`, `HEXISTS`, `HGETALL`, `HINCRBY`, `HINCRBYFLOAT`, `HKEYS`, `HLEN`, `HVALS`
142
+ ### Protocol Version (RESP2 / RESP3)
113
143
 
114
- ### Lists
115
- `LPUSH`, `RPUSH`, `LPOP`, `RPOP`, `LLEN`, `LRANGE`, `LINDEX`, `LSET`, `LREM`, `LTRIM`
144
+ Each connection starts on RESP2 and can switch to RESP3 by sending `HELLO 3`
145
+ (handled per-session, no server restart needed). Clients that support RESP3
146
+ negotiate this automatically:
116
147
 
117
- ### Sets
118
- `SADD`, `SREM`, `SMEMBERS`, `SISMEMBER`, `SCARD`, `SPOP`, `SRANDMEMBER`, `SMOVE`, `SDIFF`, `SINTER`, `SUNION`
148
+ ```typescript
149
+ import { createClient } from 'redis'
119
150
 
120
- ### Sorted Sets
121
- `ZADD`, `ZREM`, `ZSCORE`, `ZRANK`, `ZREVRANK`, `ZCARD`, `ZRANGE`, `ZREVRANGE`, `ZRANGEBYSCORE`, `ZREMRANGEBYSCORE`, `ZINCRBY`
151
+ // node-redis negotiates RESP3 via the `RESP` option
152
+ const client = createClient({
153
+ url: 'redis://127.0.0.1:6379',
154
+ RESP: 3,
155
+ })
156
+ await client.connect()
157
+ ```
158
+
159
+ ### Connecting with ioredis
122
160
 
123
- ### Keys
124
- `DEL`, `EXISTS`, `EXPIRE`, `EXPIREAT`, `TTL`, `PTTL`, `TYPE`
161
+ ```typescript
162
+ import Redis from 'ioredis'
125
163
 
126
- ### Server
127
- `PING`, `QUIT`, `INFO`, `DBSIZE`, `FLUSHDB`, `FLUSHALL`
164
+ // Single Node
165
+ const redis = new Redis(6379, '127.0.0.1')
128
166
 
129
- ### Cluster
130
- `CLUSTER INFO`, `CLUSTER NODES`, `CLUSTER SLOTS`, `CLUSTER SHARDS`
167
+ // Cluster Node
168
+ const cluster = new Redis.Cluster([
169
+ { host: '127.0.0.1', port: 30000 },
170
+ { host: '127.0.0.1', port: 30001 },
171
+ { host: '127.0.0.1', port: 30002 },
172
+ ])
173
+ ```
174
+
175
+ ### Connecting with node-redis
176
+
177
+ ```typescript
178
+ import { createClient, createCluster } from 'redis'
179
+
180
+ // Single Node
181
+ const client = createClient({
182
+ url: 'redis://127.0.0.1:6379'
183
+ })
184
+ await client.connect()
185
+
186
+ // Cluster Node
187
+ const cluster = createCluster({
188
+ rootNodes: [
189
+ { url: 'redis://127.0.0.1:30000' },
190
+ { url: 'redis://127.0.0.1:30001' },
191
+ { url: 'redis://127.0.0.1:30002' },
192
+ ]
193
+ })
194
+ await cluster.connect()
195
+ ```
196
+
197
+ ### Using in Unit Tests
198
+
199
+ Since `js-redis-server` starts instantly, it is perfect for isolated integration testing in Node.js test frameworks (like Mocha, Jest, or Node's test runner):
200
+
201
+ ```typescript
202
+ import { test, before, after } from 'node:test'
203
+ import assert from 'node:assert'
204
+ import Redis from 'ioredis'
205
+ import { RedisServerState, createRedisCommandExecutor, Resp2Server } from 'js-redis-server'
206
+
207
+ let server: Resp2Server
208
+ let client: Redis
209
+
210
+ before(async () => {
211
+ const state = new RedisServerState()
212
+ const executor = createRedisCommandExecutor()
213
+ server = new Resp2Server({ server: state, executor })
214
+
215
+ await server.listen(6379)
216
+ client = new Redis(6379, '127.0.0.1')
217
+ })
218
+
219
+ after(async () => {
220
+ await client.quit()
221
+ await server.close()
222
+ })
223
+
224
+ test('basic set/get operations', async () => {
225
+ await client.set('foo', 'bar')
226
+ const val = await client.get('foo')
227
+ assert.strictEqual(val, 'bar')
228
+ })
229
+ ```
131
230
 
132
- ### Scripting
133
- `EVAL`, `EVALSHA`, `SCRIPT LOAD`
231
+ ## API Reference
232
+
233
+ ### `Resp2Server`
234
+
235
+ Creates a TCP server running the RESP2 protocol.
236
+
237
+ ```typescript
238
+ new Resp2Server(options: Resp2ServerOptions)
239
+ ```
240
+
241
+ **Options (`Resp2ServerOptions`)**:
242
+
243
+ | Parameter | Type | Required | Description |
244
+ | :--- | :--- | :--- | :--- |
245
+ | `server` | `RedisServerState` | Yes | The database server state containing database instances. |
246
+ | `executor` | `CommandExecutor` | Yes | The command executor handling pipeline and execution policies. |
247
+ | `logger` | `Pick<Logger, 'error'>` | No | Optional logger for error logging. |
248
+ | `encoder` | `RespEncodeOptions` | No | Custom RESP protocol encoding options. |
249
+
250
+ ---
251
+
252
+ ### `RedisServerState`
253
+
254
+ Holds the database and keyspace state for the server.
255
+
256
+ ```typescript
257
+ new RedisServerState(options?: RedisServerStateOptions)
258
+ ```
259
+
260
+ **Options (`RedisServerStateOptions`)**:
261
+
262
+ | Parameter | Type | Default | Description |
263
+ | :--- | :--- | :--- | :--- |
264
+ | `databaseCount` | `number` | `1` | Number of databases to initialize. |
265
+ | `clusterTopology` | `RedisClusterTopology` | `undefined` | Optional cluster topology for slot routing. |
266
+ | `pubsubBroker` | `RedisPubSubBroker` | `undefined` | Optional broker for pub/sub operations. |
267
+ | `scriptCache` | `RedisScriptCache` | `undefined` | Optional cache for Lua scripts. |
268
+
269
+ ---
270
+
271
+ ### `buildRedisCluster`
272
+
273
+ Utility function to build and configure a complete Redis cluster in-memory.
274
+
275
+ ```typescript
276
+ buildRedisCluster(options: RedisClusterOptions): RedisCluster
277
+ ```
278
+
279
+ **Options (`RedisClusterOptions`)**:
280
+
281
+ | Parameter | Type | Default | Description |
282
+ | :--- | :--- | :--- | :--- |
283
+ | `masters` | `number` | **Required** | Number of master nodes in the cluster. |
284
+ | `replicasPerMaster` | `number` | `0` | Replicas per master node. |
285
+ | `basePort` | `number` | **Required** | Base port range. If `0`, random OS ports are assigned. |
286
+ | `host` | `string` | `'127.0.0.1'` | Host address to bind to. |
287
+ | `databasesPerNode` | `number` | `1` | Number of databases per cluster node. |
288
+ | `logger` | `Pick<Logger, 'error'>` | `undefined` | Optional logger. |
134
289
 
135
- ### Client
136
- `CLIENT SETNAME`
137
290
 
138
291
  ## Requirements
139
292
 
140
- - Node.js >= 22
293
+ - Node.js >= 24
141
294
 
142
295
  ## Development
143
296
 
@@ -151,16 +304,34 @@ npm run build
151
304
  # Run tests
152
305
  npm test
153
306
 
307
+ # Lint and format
308
+ npm run lint
309
+ npm run format
310
+
154
311
  # Run integration tests (mock backend)
155
312
  npm run test:integration:mock
156
313
 
157
314
  # Run integration tests (real Redis)
315
+ # Requires a Redis cluster — start one with docker-compose.test.yml first:
316
+ # docker compose -f docker-compose.test.yml up -d --wait
158
317
  npm run test:integration:real
159
318
 
160
319
  # Run all tests
161
320
  npm run test:all
162
321
  ```
163
322
 
323
+ > **CI** runs four jobs on every push and pull request: lint + format check,
324
+ > unit tests, mock-backend integration tests, and real-backend integration
325
+ > tests against a Redis cluster spun up via `docker-compose.test.yml`.
326
+
327
+ ## Further Documentation
328
+
329
+ For more details on the architecture, testing infrastructure, and command support, see:
330
+
331
+ - [Architecture](docs/ARCHITECTURE.md) — layers, command pipeline, execution policies, cluster routing, RESP2/RESP3, and diagrams
332
+ - [Detailed Command Implementation Status](docs/COMMANDS.md)
333
+ - [Integration Testing Infrastructure](docs/TEST-INTEGRATION.md)
334
+
164
335
  ## Contributing
165
336
 
166
337
  Contributions are welcome! Please read the [contributing guidelines](CONTRIBUTING.md) before submitting a pull request.
package/dist/cli.d.ts CHANGED
@@ -6,6 +6,7 @@ export type CliOptions = {
6
6
  slaves: number;
7
7
  basePort: number;
8
8
  help: boolean;
9
+ debug: boolean;
9
10
  };
10
11
  export declare function parseArgs(args: string[]): CliOptions;
11
12
  export declare function main(argv?: string[]): Promise<void>;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAKA,KAAK,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEhC,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAWD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAsDpD;AAkHD,wBAAsB,IAAI,CAAC,IAAI,WAAwB,iBActD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAMA,KAAK,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEhC,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAYD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA2DpD;AAqHD,wBAAsB,IAAI,CAAC,IAAI,WAAwB,iBActD"}
package/dist/cli.js ADDED
@@ -0,0 +1,191 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.parseArgs = parseArgs;
5
+ exports.main = main;
6
+ const commands_1 = require("./commands");
7
+ const server_1 = require("./core/transports/resp2/server");
8
+ const cluster_1 = require("./cluster");
9
+ const state_1 = require("./state");
10
+ const defaultOptions = {
11
+ mode: 'single',
12
+ port: 6379,
13
+ masters: 3,
14
+ slaves: 0,
15
+ basePort: 30000,
16
+ help: false,
17
+ debug: false,
18
+ };
19
+ function parseArgs(args) {
20
+ const options = { ...defaultOptions };
21
+ for (let i = 0; i < args.length; i++) {
22
+ const arg = args[i];
23
+ if (arg === '--help' || arg === '-h') {
24
+ options.help = true;
25
+ continue;
26
+ }
27
+ if (arg === '--debug' || arg === '-d') {
28
+ options.debug = true;
29
+ continue;
30
+ }
31
+ if (arg === '--cluster') {
32
+ options.mode = 'cluster';
33
+ continue;
34
+ }
35
+ if (arg === '--single') {
36
+ options.mode = 'single';
37
+ continue;
38
+ }
39
+ if (arg === '--mode') {
40
+ const value = args[++i];
41
+ if (value !== 'single' && value !== 'cluster') {
42
+ throw new Error(`Invalid mode "${value}"`);
43
+ }
44
+ options.mode = value;
45
+ continue;
46
+ }
47
+ if (arg === '--port') {
48
+ options.port = parseInteger(args[++i], '--port');
49
+ continue;
50
+ }
51
+ if (arg === '--base-port') {
52
+ options.basePort = parseInteger(args[++i], '--base-port');
53
+ continue;
54
+ }
55
+ if (arg === '--masters') {
56
+ options.masters = parseInteger(args[++i], '--masters');
57
+ continue;
58
+ }
59
+ if (arg === '--slaves') {
60
+ options.slaves = parseInteger(args[++i], '--slaves');
61
+ continue;
62
+ }
63
+ throw new Error(`Unknown argument "${arg}"`);
64
+ }
65
+ return options;
66
+ }
67
+ function parseInteger(value, name) {
68
+ if (!value) {
69
+ throw new Error(`Missing value for ${name}`);
70
+ }
71
+ const parsed = Number(value);
72
+ if (!Number.isInteger(parsed)) {
73
+ throw new Error(`Invalid value for ${name}: ${value}`);
74
+ }
75
+ return parsed;
76
+ }
77
+ function validatePort(port, name) {
78
+ if (!Number.isInteger(port) || port < 0 || port > 65535) {
79
+ throw new Error(`Invalid ${name} ${port}`);
80
+ }
81
+ }
82
+ function createLogger(debug = false) {
83
+ return {
84
+ info: (msg, metadata) => {
85
+ if (metadata) {
86
+ console.log(msg, metadata);
87
+ }
88
+ else {
89
+ console.log(msg);
90
+ }
91
+ },
92
+ error: (msg, metadata) => {
93
+ if (metadata) {
94
+ console.error(msg, metadata);
95
+ }
96
+ else {
97
+ console.error(msg);
98
+ }
99
+ },
100
+ debug: (msg, metadata) => {
101
+ if (debug) {
102
+ if (metadata) {
103
+ console.debug(msg, metadata);
104
+ }
105
+ else {
106
+ console.debug(msg);
107
+ }
108
+ }
109
+ },
110
+ };
111
+ }
112
+ function printHelp() {
113
+ console.log(`Usage: js-redis-server [options]
114
+
115
+ Modes:
116
+ --single Run a single Redis server (default)
117
+ --cluster Run a Redis cluster
118
+ --mode <single|cluster>
119
+
120
+ Single server options:
121
+ --port <number> Port to listen on (default 6379)
122
+
123
+ Cluster options:
124
+ --masters <number> Number of masters (default 3)
125
+ --slaves <number> Number of replicas per master (default 0)
126
+ --base-port <number> Starting port for cluster nodes (default 30000)
127
+
128
+ General:
129
+ -d, --debug Enable debug logging
130
+ -h, --help Show help
131
+ `);
132
+ }
133
+ async function runSingle(options, logger) {
134
+ validatePort(options.port, 'port');
135
+ logger.debug('Starting single server mode', { port: options.port });
136
+ const state = new state_1.RedisServerState();
137
+ const executor = (0, commands_1.createRedisCommandExecutor)();
138
+ const server = new server_1.Resp2Server({ server: state, executor, logger });
139
+ await server.listen(options.port);
140
+ logger.info(`Single Redis server listening at ${server.getAddress()}`);
141
+ const shutdown = async () => {
142
+ await server.close();
143
+ };
144
+ process.once('SIGINT', shutdown);
145
+ process.once('SIGTERM', shutdown);
146
+ }
147
+ async function runCluster(options, logger) {
148
+ validatePort(options.basePort, 'base-port');
149
+ logger.debug('Starting cluster mode', {
150
+ masters: options.masters,
151
+ slaves: options.slaves,
152
+ basePort: options.basePort,
153
+ });
154
+ const cluster = (0, cluster_1.buildRedisCluster)({
155
+ masters: options.masters,
156
+ replicasPerMaster: options.slaves,
157
+ basePort: options.basePort,
158
+ logger,
159
+ });
160
+ await cluster.listen();
161
+ const nodes = cluster.nodes.map(n => `${n.id} ${n.host}:${n.port}`).join(', ');
162
+ logger.info(`Cluster nodes: ${nodes}`);
163
+ const shutdown = async () => {
164
+ await cluster.close();
165
+ };
166
+ process.once('SIGINT', shutdown);
167
+ process.once('SIGTERM', shutdown);
168
+ }
169
+ async function main(argv = process.argv.slice(2)) {
170
+ const options = parseArgs(argv);
171
+ if (options.help) {
172
+ printHelp();
173
+ return;
174
+ }
175
+ const logger = createLogger(options.debug);
176
+ if (options.mode === 'cluster') {
177
+ await runCluster(options, logger);
178
+ }
179
+ else {
180
+ await runSingle(options, logger);
181
+ }
182
+ }
183
+ // Run when executed directly as CLI. Node resolves bin symlinks to realpath,
184
+ // so require.main === module works for `npm link` / global installs too.
185
+ if (require.main === module) {
186
+ main().catch(err => {
187
+ console.error(err);
188
+ process.exitCode = 1;
189
+ });
190
+ }
191
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { Resp2Server } from './core/transports/resp2/server';
2
+ import { RedisClusterTopology, RedisServerState } from './state';
3
+ import type { Logger } from './logger';
4
+ export type RedisClusterOptions = {
5
+ masters: number;
6
+ replicasPerMaster?: number;
7
+ basePort: number;
8
+ host?: string;
9
+ databasesPerNode?: number;
10
+ replicaUpdateDelayMs?: number;
11
+ logger?: Pick<Logger, 'error'>;
12
+ };
13
+ export type RedisClusterNodeHandle = {
14
+ id: string;
15
+ role: 'master' | 'replica';
16
+ host: string;
17
+ port: number;
18
+ server: RedisServerState;
19
+ };
20
+ export declare class RedisCluster {
21
+ readonly topology: RedisClusterTopology;
22
+ readonly nodes: readonly RedisClusterNodeHandle[];
23
+ private readonly servers;
24
+ private readonly replicationLinks;
25
+ constructor(topology: RedisClusterTopology, nodes: readonly RedisClusterNodeHandle[], servers: readonly Resp2Server[], replicationLinks: readonly ReplicationLink[]);
26
+ listen(): Promise<void>;
27
+ close(): Promise<void>;
28
+ getAddresses(): string[];
29
+ }
30
+ export declare function buildRedisCluster(options: RedisClusterOptions): RedisCluster;
31
+ export declare function computeSlotRange(masterIndex: number, masters: number): [number, number];
32
+ type ReplicationLink = {
33
+ close(): void;
34
+ };
35
+ export {};
36
+ //# sourceMappingURL=cluster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../src/cluster.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAGL,oBAAoB,EACpB,gBAAgB,EAIjB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEtC,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,gBAAgB,CAAA;CACzB,CAAA;AAED,qBAAa,YAAY;IACvB,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAA;IAEjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAGlD,QAAQ,EAAE,oBAAoB,EAC9B,KAAK,EAAE,SAAS,sBAAsB,EAAE,EACxC,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,gBAAgB,EAAE,SAAS,eAAe,EAAE;IAQxC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAevB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,YAAY,IAAI,MAAM,EAAE;CAGzB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAqF5E;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBlB;AA+BD,KAAK,eAAe,GAAG;IACrB,KAAK,IAAI,IAAI,CAAA;CACd,CAAA"}