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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zsets.js","sourceRoot":"","sources":["../../src/commands/zsets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import type { CommandPlan } from './command-definition';
2
+ import { CommandExecutor, type ExecutorResult } from './command-executor';
3
+ import { type ClientSessionMode, type ParkHandler, type RedisClientSession, type RedisExecutionContext } from './redis-context';
4
+ import { RedisResult } from './redis-result';
5
+ import type { RespVersion } from './resp-encoder';
6
+ import { type RedisTurnHandle, type RedisTurnQueue } from './turn-queue';
7
+ import type { RedisClusterNodeRole, RedisDatabase, RedisServerState } from '../state';
8
+ export type ClientSessionOptions = {
9
+ id?: string;
10
+ server: RedisServerState;
11
+ executor: CommandExecutor;
12
+ database?: number;
13
+ nodeRole?: RedisClusterNodeRole;
14
+ signal?: AbortSignal;
15
+ park?: ParkHandler;
16
+ turnQueue?: RedisTurnQueue;
17
+ };
18
+ /**
19
+ * Mutable view of the turn currently held by an in-flight command. A blocking
20
+ * command suspends its turn while parked and is later resumed on a *new* handle,
21
+ * so the holder must be able to both read the current turn and swap it.
22
+ */
23
+ type TurnAccess = {
24
+ get(): RedisTurnHandle | undefined;
25
+ set(turn: RedisTurnHandle | undefined): void;
26
+ };
27
+ /**
28
+ * Per-connection server state and the concrete {@link RedisClientSession}.
29
+ *
30
+ * One instance exists per connected client and owns everything that is scoped
31
+ * to that connection rather than to the shared server:
32
+ * - the selected database index and the resolved {@link RedisDatabase};
33
+ * - the session {@link ClientSessionMode} (normal / transaction / subscribed);
34
+ * - the negotiated RESP protocol version (HELLO);
35
+ * - the cluster READONLY flag (replica reads via READONLY/READWRITE);
36
+ * - the MULTI command queue and its dirty bit;
37
+ * - WATCH key registrations for optimistic locking.
38
+ *
39
+ * Commands are serialized through a per-database turn queue so that, even though
40
+ * execution is async, only one command mutates a given database at a time. This
41
+ * is also what makes blocking commands (BLPOP, ...) cooperate instead of
42
+ * deadlock — see {@link createTurnAwareParkHandler}.
43
+ */
44
+ export declare class ClientSession implements RedisClientSession {
45
+ private static nextId;
46
+ readonly id: string;
47
+ readonly server: RedisServerState;
48
+ /** Aborted when the connection closes; threaded into every command's ctx. */
49
+ readonly signal: AbortSignal;
50
+ private readonly executor;
51
+ private readonly signalSource?;
52
+ private readonly nodeRole?;
53
+ private readonly parkHandler;
54
+ private readonly turnQueueOverride?;
55
+ /**
56
+ * The turn handle of the command currently executing on this session,
57
+ * exposed so {@link executeTransaction} can hand the turn off to another
58
+ * database's queue when a queued SELECT switches databases mid-EXEC.
59
+ */
60
+ private activeTurnAccess?;
61
+ private selectedDatabaseId;
62
+ private sessionMode;
63
+ private respVersion;
64
+ private authenticated;
65
+ /** Set by READONLY, cleared by READWRITE/RESET; lets a replica serve reads. */
66
+ private clusterReadOnlyMode;
67
+ /** Commands buffered between MULTI and EXEC, in submission order. */
68
+ private transactionPlans;
69
+ /** True once a queued command errored — forces EXEC to abort with EXECABORT. */
70
+ private transactionDirty;
71
+ /** Active WATCH registrations, keyed by `db:keyHex`. */
72
+ private readonly watches;
73
+ /** Subset of watched keys mutated since WATCH — non-empty fails the next EXEC. */
74
+ private readonly dirtyWatches;
75
+ constructor(options: ClientSessionOptions);
76
+ get selectedDatabase(): number;
77
+ get mode(): ClientSessionMode;
78
+ get protocolVersion(): RespVersion;
79
+ get clusterReadOnly(): boolean;
80
+ get isAuthenticated(): boolean;
81
+ setAuthenticated(value: boolean): void;
82
+ /** The live database object for the currently selected index. */
83
+ get db(): RedisDatabase;
84
+ setProtocolVersion(version: RespVersion): void;
85
+ /** Toggle replica read mode for this connection (READONLY / READWRITE). */
86
+ setClusterReadOnly(value: boolean): void;
87
+ selectDatabase(database: number): void;
88
+ /** MULTI: enter transaction mode. Redis forbids nesting. */
89
+ beginTransaction(): void;
90
+ /** Buffer one command while in MULTI; replies "+QUEUED" to the client. */
91
+ queueTransaction(plan: CommandPlan): void;
92
+ /**
93
+ * EXEC step 1: hand back the queued plans and atomically reset the session to
94
+ * normal mode (clearing the queue, dirty bit, and WATCHes). The caller is
95
+ * responsible for actually running the returned plans via
96
+ * {@link executeTransaction}. Returns an empty list if not in MULTI.
97
+ */
98
+ drainTransaction(): CommandPlan[];
99
+ /** DISCARD: drop the queued commands and leave transaction mode. */
100
+ discardTransaction(): void;
101
+ /** Flag the transaction as poisoned (a queued command failed). No-op outside MULTI. */
102
+ markTransactionDirty(): void;
103
+ isTransactionDirty(): boolean;
104
+ /**
105
+ * EXEC step 2: run the drained plans in order and collect their replies into a
106
+ * single array reply. Each command runs in its own fresh execution context.
107
+ * Streaming commands (SUBSCRIBE/MONITOR) are not permitted inside a
108
+ * transaction: the stream is closed immediately and replaced with an error
109
+ * entry so the array stays positionally aligned with the queued commands.
110
+ */
111
+ executeTransaction(plans: readonly CommandPlan[]): Promise<RedisResult>;
112
+ /**
113
+ * Release the currently held serialization turn and acquire a fresh one on
114
+ * the selected database's queue. Called when a queued SELECT switches
115
+ * databases mid-EXEC so subsequent commands run under the correct
116
+ * per-database turn (see {@link executeTransaction}).
117
+ *
118
+ * No-op when a fixed turn-queue override is in force (a single queue already
119
+ * serializes every database) or when no managed turn is active.
120
+ */
121
+ private handoffTurnToSelectedDb;
122
+ /**
123
+ * WATCH the given keys for optimistic locking. Each key is subscribed in the
124
+ * keyspace; any mutation flips its entry into {@link dirtyWatches}, which a
125
+ * subsequent EXEC checks via {@link isWatchDirty}. Already-watched keys are
126
+ * skipped so re-WATCHing is idempotent.
127
+ */
128
+ watch(keys: readonly Buffer[]): void;
129
+ /** UNWATCH / cleanup: drop every keyspace subscription and clear dirty state. */
130
+ unwatch(): void;
131
+ /** True if any watched key was mutated since WATCH — EXEC must return nil. */
132
+ isWatchDirty(): boolean;
133
+ /**
134
+ * Public entry point for executing one client command.
135
+ *
136
+ * Acquires a turn on the database's turn queue before running, guaranteeing
137
+ * serialized access to the keyspace, and always releases it afterward. The
138
+ * acquired turn is exposed to the command via a turn-aware park handler so a
139
+ * blocking command can yield the turn while parked (see
140
+ * {@link createTurnAwareParkHandler}); `turn` is reassigned through the
141
+ * {@link TurnAccess} closure because suspending returns a *new* handle.
142
+ */
143
+ execute(rawCommand: Buffer | string, rawArgs: readonly Buffer[]): Promise<ExecutorResult>;
144
+ /**
145
+ * Build the {@link RedisExecutionContext} passed to a command's `execute`.
146
+ * When a turn is supplied (the normal client path) the context gets a
147
+ * turn-aware park handler so blocking commands release their turn while
148
+ * waiting; without one (e.g. nested transaction execution) the plain park
149
+ * handler is used.
150
+ */
151
+ createExecutionContext(turnAccess?: TurnAccess, parkOverride?: ParkHandler): RedisExecutionContext;
152
+ /** Tear down the session: abort in-flight work and reset all per-connection state. */
153
+ close(): void;
154
+ /**
155
+ * Wrap the base park handler so that parking also yields the command's turn.
156
+ *
157
+ * Blocking commands (BLPOP, BRPOP, ...) must not hold the database turn while
158
+ * they wait, or no other client could ever produce the value that unblocks
159
+ * them — a deadlock. The flow:
160
+ * 1. Start the underlying park, capturing its eventual value.
161
+ * 2. Clear the local turn and call `turn.suspend(parked)`, which releases the
162
+ * turn back to the queue and resolves with a fresh turn once the park
163
+ * settles and this session is scheduled again.
164
+ * 3. Store the new turn (so `finally`/subsequent parks see it) and return the
165
+ * parked value.
166
+ *
167
+ * If there is no current turn, fall back to plain parking.
168
+ */
169
+ private createTurnAwareParkHandler;
170
+ }
171
+ export {};
172
+ //# sourceMappingURL=client-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-session.d.ts","sourceRoot":"","sources":["../../src/core/client-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,379 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClientSession = void 0;
4
+ const redis_context_1 = require("./redis-context");
5
+ const redis_error_1 = require("./redis-error");
6
+ const redis_result_1 = require("./redis-result");
7
+ const redis_value_1 = require("./redis-value");
8
+ /**
9
+ * Per-connection server state and the concrete {@link RedisClientSession}.
10
+ *
11
+ * One instance exists per connected client and owns everything that is scoped
12
+ * to that connection rather than to the shared server:
13
+ * - the selected database index and the resolved {@link RedisDatabase};
14
+ * - the session {@link ClientSessionMode} (normal / transaction / subscribed);
15
+ * - the negotiated RESP protocol version (HELLO);
16
+ * - the cluster READONLY flag (replica reads via READONLY/READWRITE);
17
+ * - the MULTI command queue and its dirty bit;
18
+ * - WATCH key registrations for optimistic locking.
19
+ *
20
+ * Commands are serialized through a per-database turn queue so that, even though
21
+ * execution is async, only one command mutates a given database at a time. This
22
+ * is also what makes blocking commands (BLPOP, ...) cooperate instead of
23
+ * deadlock — see {@link createTurnAwareParkHandler}.
24
+ */
25
+ class ClientSession {
26
+ static nextId = 0;
27
+ id;
28
+ server;
29
+ /** Aborted when the connection closes; threaded into every command's ctx. */
30
+ signal;
31
+ executor;
32
+ signalSource;
33
+ nodeRole;
34
+ parkHandler;
35
+ turnQueueOverride;
36
+ /**
37
+ * The turn handle of the command currently executing on this session,
38
+ * exposed so {@link executeTransaction} can hand the turn off to another
39
+ * database's queue when a queued SELECT switches databases mid-EXEC.
40
+ */
41
+ activeTurnAccess;
42
+ selectedDatabaseId;
43
+ sessionMode = 'normal';
44
+ respVersion = 2;
45
+ authenticated = false;
46
+ /** Set by READONLY, cleared by READWRITE/RESET; lets a replica serve reads. */
47
+ clusterReadOnlyMode = false;
48
+ /** Commands buffered between MULTI and EXEC, in submission order. */
49
+ transactionPlans = [];
50
+ /** True once a queued command errored — forces EXEC to abort with EXECABORT. */
51
+ transactionDirty = false;
52
+ /** Active WATCH registrations, keyed by `db:keyHex`. */
53
+ watches = new Map();
54
+ /** Subset of watched keys mutated since WATCH — non-empty fails the next EXEC. */
55
+ dirtyWatches = new Set();
56
+ constructor(options) {
57
+ this.id = options.id ?? `client-${++ClientSession.nextId}`;
58
+ this.server = options.server;
59
+ this.executor = options.executor;
60
+ this.selectedDatabaseId = options.database ?? 0;
61
+ this.nodeRole = options.nodeRole;
62
+ this.parkHandler = options.park ?? (0, redis_context_1.createDefaultParkHandler)();
63
+ this.turnQueueOverride = options.turnQueue;
64
+ if (options.signal) {
65
+ this.signal = options.signal;
66
+ }
67
+ else {
68
+ this.signalSource = new AbortController();
69
+ this.signal = this.signalSource.signal;
70
+ }
71
+ this.server.getDatabase(this.selectedDatabaseId);
72
+ }
73
+ get selectedDatabase() {
74
+ return this.selectedDatabaseId;
75
+ }
76
+ get mode() {
77
+ return this.sessionMode;
78
+ }
79
+ get protocolVersion() {
80
+ return this.respVersion;
81
+ }
82
+ get clusterReadOnly() {
83
+ return this.clusterReadOnlyMode;
84
+ }
85
+ get isAuthenticated() {
86
+ return this.authenticated;
87
+ }
88
+ setAuthenticated(value) {
89
+ this.authenticated = value;
90
+ }
91
+ /** The live database object for the currently selected index. */
92
+ get db() {
93
+ return this.server.getDatabase(this.selectedDatabaseId);
94
+ }
95
+ setProtocolVersion(version) {
96
+ this.respVersion = version;
97
+ }
98
+ /** Toggle replica read mode for this connection (READONLY / READWRITE). */
99
+ setClusterReadOnly(value) {
100
+ this.clusterReadOnlyMode = value;
101
+ }
102
+ selectDatabase(database) {
103
+ if (!Number.isInteger(database) ||
104
+ database < 0 ||
105
+ database >= this.server.databases.length) {
106
+ throw new redis_error_1.RedisCommandError('DB index is out of range');
107
+ }
108
+ this.selectedDatabaseId = database;
109
+ }
110
+ /** MULTI: enter transaction mode. Redis forbids nesting. */
111
+ beginTransaction() {
112
+ if (this.sessionMode === 'transaction') {
113
+ throw new redis_error_1.RedisCommandError('MULTI calls can not be nested');
114
+ }
115
+ this.sessionMode = 'transaction';
116
+ this.transactionPlans = [];
117
+ this.transactionDirty = false;
118
+ }
119
+ /** Buffer one command while in MULTI; replies "+QUEUED" to the client. */
120
+ queueTransaction(plan) {
121
+ if (this.sessionMode !== 'transaction') {
122
+ throw new redis_error_1.RedisCommandError('MULTI has not been called');
123
+ }
124
+ this.transactionPlans.push(plan);
125
+ }
126
+ /**
127
+ * EXEC step 1: hand back the queued plans and atomically reset the session to
128
+ * normal mode (clearing the queue, dirty bit, and WATCHes). The caller is
129
+ * responsible for actually running the returned plans via
130
+ * {@link executeTransaction}. Returns an empty list if not in MULTI.
131
+ */
132
+ drainTransaction() {
133
+ if (this.sessionMode !== 'transaction') {
134
+ return [];
135
+ }
136
+ const plans = [...this.transactionPlans];
137
+ this.transactionPlans = [];
138
+ this.sessionMode = 'normal';
139
+ this.transactionDirty = false;
140
+ this.unwatch();
141
+ return plans;
142
+ }
143
+ /** DISCARD: drop the queued commands and leave transaction mode. */
144
+ discardTransaction() {
145
+ this.transactionPlans = [];
146
+ this.sessionMode = 'normal';
147
+ this.transactionDirty = false;
148
+ this.unwatch();
149
+ }
150
+ /** Flag the transaction as poisoned (a queued command failed). No-op outside MULTI. */
151
+ markTransactionDirty() {
152
+ if (this.sessionMode === 'transaction') {
153
+ this.transactionDirty = true;
154
+ }
155
+ }
156
+ isTransactionDirty() {
157
+ return this.transactionDirty;
158
+ }
159
+ /**
160
+ * EXEC step 2: run the drained plans in order and collect their replies into a
161
+ * single array reply. Each command runs in its own fresh execution context.
162
+ * Streaming commands (SUBSCRIBE/MONITOR) are not permitted inside a
163
+ * transaction: the stream is closed immediately and replaced with an error
164
+ * entry so the array stays positionally aligned with the queued commands.
165
+ */
166
+ async executeTransaction(plans) {
167
+ const values = [];
168
+ // Blocking commands must not park while the EXEC turn is held — that would
169
+ // deadlock because no other session could produce the wakeup write. Override
170
+ // park so any blocking command queued in MULTI behaves non-blocking (returns
171
+ // null immediately), matching real Redis BLPOP-inside-MULTI semantics.
172
+ const noBlockCtx = this.createExecutionContext(undefined, async () => null);
173
+ let currentDbId = this.selectedDatabaseId;
174
+ for (const plan of plans) {
175
+ if (this.signal.aborted) {
176
+ throw createAbortError();
177
+ }
178
+ // A queued SELECT on a previous iteration may have switched databases.
179
+ // Move the held turn onto the now-selected database's queue so its
180
+ // keyspace stays serialized against other sessions (#94 follow-up). Only
181
+ // one turn is ever held at a time (release-then-acquire), so this cannot
182
+ // deadlock even if two transactions select databases in opposite orders.
183
+ if (this.selectedDatabaseId !== currentDbId) {
184
+ await this.handoffTurnToSelectedDb();
185
+ currentDbId = this.selectedDatabaseId;
186
+ }
187
+ // executePlan converts RedisCommandErrors into error results, but a
188
+ // command whose execute() throws an unexpected runtime error (TypeError,
189
+ // etc.) would otherwise propagate out and abandon the partial results
190
+ // array. Real Redis always replies with an N-element EXEC array, so trap
191
+ // the failure into this command's slot and keep running the rest (#83).
192
+ let result;
193
+ try {
194
+ result = await this.executor.executePlan(plan, noBlockCtx);
195
+ }
196
+ catch (err) {
197
+ if (this.signal.aborted) {
198
+ throw err;
199
+ }
200
+ values.push(redis_value_1.RedisValue.error(err.message));
201
+ continue;
202
+ }
203
+ if (result instanceof redis_result_1.RedisResult) {
204
+ values.push(result.value);
205
+ continue;
206
+ }
207
+ result.close('streaming command is not allowed in transaction');
208
+ values.push(redis_value_1.RedisValue.error('Streaming command is not allowed in transaction'));
209
+ }
210
+ return redis_result_1.RedisResult.create(redis_value_1.RedisValue.array(values));
211
+ }
212
+ /**
213
+ * Release the currently held serialization turn and acquire a fresh one on
214
+ * the selected database's queue. Called when a queued SELECT switches
215
+ * databases mid-EXEC so subsequent commands run under the correct
216
+ * per-database turn (see {@link executeTransaction}).
217
+ *
218
+ * No-op when a fixed turn-queue override is in force (a single queue already
219
+ * serializes every database) or when no managed turn is active.
220
+ */
221
+ async handoffTurnToSelectedDb() {
222
+ if (this.turnQueueOverride) {
223
+ return;
224
+ }
225
+ const turnAccess = this.activeTurnAccess;
226
+ if (!turnAccess) {
227
+ return;
228
+ }
229
+ turnAccess.get()?.release();
230
+ const nextTurn = await this.db.turnQueue.waitTurn();
231
+ turnAccess.set(nextTurn);
232
+ }
233
+ /**
234
+ * WATCH the given keys for optimistic locking. Each key is subscribed in the
235
+ * keyspace; any mutation flips its entry into {@link dirtyWatches}, which a
236
+ * subsequent EXEC checks via {@link isWatchDirty}. Already-watched keys are
237
+ * skipped so re-WATCHing is idempotent.
238
+ */
239
+ watch(keys) {
240
+ const database = this.selectedDatabaseId;
241
+ const db = this.db;
242
+ for (const key of keys) {
243
+ const id = watchId(database, key);
244
+ if (this.watches.has(id)) {
245
+ continue;
246
+ }
247
+ const unsubscribe = db.subscribeKey(key, () => {
248
+ this.dirtyWatches.add(id);
249
+ });
250
+ this.watches.set(id, {
251
+ database,
252
+ key: Buffer.from(key),
253
+ unsubscribe,
254
+ });
255
+ }
256
+ }
257
+ /** UNWATCH / cleanup: drop every keyspace subscription and clear dirty state. */
258
+ unwatch() {
259
+ for (const watch of this.watches.values()) {
260
+ watch.unsubscribe();
261
+ }
262
+ this.watches.clear();
263
+ this.dirtyWatches.clear();
264
+ }
265
+ /** True if any watched key was mutated since WATCH — EXEC must return nil. */
266
+ isWatchDirty() {
267
+ return this.dirtyWatches.size > 0;
268
+ }
269
+ /**
270
+ * Public entry point for executing one client command.
271
+ *
272
+ * Acquires a turn on the database's turn queue before running, guaranteeing
273
+ * serialized access to the keyspace, and always releases it afterward. The
274
+ * acquired turn is exposed to the command via a turn-aware park handler so a
275
+ * blocking command can yield the turn while parked (see
276
+ * {@link createTurnAwareParkHandler}); `turn` is reassigned through the
277
+ * {@link TurnAccess} closure because suspending returns a *new* handle.
278
+ */
279
+ async execute(rawCommand, rawArgs) {
280
+ if (this.signal.aborted) {
281
+ throw createAbortError();
282
+ }
283
+ const turnQueue = this.turnQueueOverride ?? this.db.turnQueue;
284
+ let turn = await turnQueue.waitTurn();
285
+ const turnAccess = {
286
+ get: () => turn,
287
+ set: nextTurn => {
288
+ turn = nextTurn;
289
+ },
290
+ };
291
+ this.activeTurnAccess = turnAccess;
292
+ try {
293
+ const ctx = this.createExecutionContext(turnAccess);
294
+ return await this.executor.executeRaw(rawCommand, rawArgs, ctx);
295
+ }
296
+ finally {
297
+ this.activeTurnAccess = undefined;
298
+ turn?.release();
299
+ }
300
+ }
301
+ /**
302
+ * Build the {@link RedisExecutionContext} passed to a command's `execute`.
303
+ * When a turn is supplied (the normal client path) the context gets a
304
+ * turn-aware park handler so blocking commands release their turn while
305
+ * waiting; without one (e.g. nested transaction execution) the plain park
306
+ * handler is used.
307
+ */
308
+ createExecutionContext(turnAccess, parkOverride) {
309
+ // `db` is a live getter, not a snapshot: a queued `SELECT N` runs mid-EXEC
310
+ // and updates `selectedDatabaseId`, so every command must resolve the
311
+ // currently selected database at access time, not at context-build time
312
+ // (issue #94). Arrow keeps `this` bound to the session without aliasing.
313
+ const resolveDb = () => this.db;
314
+ return {
315
+ get db() {
316
+ return resolveDb();
317
+ },
318
+ server: this.server,
319
+ session: this,
320
+ executor: this.executor,
321
+ ...(this.nodeRole ? { nodeRole: this.nodeRole } : {}),
322
+ signal: this.signal,
323
+ park: parkOverride ??
324
+ (turnAccess
325
+ ? this.createTurnAwareParkHandler(turnAccess)
326
+ : this.parkHandler),
327
+ };
328
+ }
329
+ /** Tear down the session: abort in-flight work and reset all per-connection state. */
330
+ close() {
331
+ this.signalSource?.abort();
332
+ this.unwatch();
333
+ this.transactionPlans = [];
334
+ this.transactionDirty = false;
335
+ this.sessionMode = 'normal';
336
+ this.clusterReadOnlyMode = false;
337
+ }
338
+ /**
339
+ * Wrap the base park handler so that parking also yields the command's turn.
340
+ *
341
+ * Blocking commands (BLPOP, BRPOP, ...) must not hold the database turn while
342
+ * they wait, or no other client could ever produce the value that unblocks
343
+ * them — a deadlock. The flow:
344
+ * 1. Start the underlying park, capturing its eventual value.
345
+ * 2. Clear the local turn and call `turn.suspend(parked)`, which releases the
346
+ * turn back to the queue and resolves with a fresh turn once the park
347
+ * settles and this session is scheduled again.
348
+ * 3. Store the new turn (so `finally`/subsequent parks see it) and return the
349
+ * parked value.
350
+ *
351
+ * If there is no current turn, fall back to plain parking.
352
+ */
353
+ createTurnAwareParkHandler(turnAccess) {
354
+ return async (request) => {
355
+ const turn = turnAccess.get();
356
+ if (!turn) {
357
+ return this.parkHandler(request);
358
+ }
359
+ let parkedValue = null;
360
+ const parked = this.parkHandler(request).then(value => {
361
+ parkedValue = value;
362
+ });
363
+ turnAccess.set(undefined);
364
+ const nextTurn = await turn.suspend(parked);
365
+ turnAccess.set(nextTurn);
366
+ return parkedValue;
367
+ };
368
+ }
369
+ }
370
+ exports.ClientSession = ClientSession;
371
+ function watchId(database, key) {
372
+ return `${database}:${key.toString('hex')}`;
373
+ }
374
+ function createAbortError() {
375
+ const err = new Error('The operation was aborted');
376
+ err.name = 'AbortError';
377
+ return err;
378
+ }
379
+ //# sourceMappingURL=client-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-session.js","sourceRoot":"","sources":["../../src/core/client-session.ts"],"names":[],"mappings":"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"}