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,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transactionCommands = exports.unwatchCommand = exports.watchCommand = exports.discardCommand = exports.execCommand = exports.multiCommand = void 0;
4
+ const command_definition_1 = require("../core/command-definition");
5
+ const command_schema_1 = require("../core/command-schema");
6
+ const redis_error_1 = require("../core/redis-error");
7
+ const redis_result_1 = require("../core/redis-result");
8
+ const redis_value_1 = require("../core/redis-value");
9
+ const helpers_1 = require("./helpers");
10
+ exports.multiCommand = (0, command_definition_1.defineCommand)({
11
+ name: 'multi',
12
+ schema: command_schema_1.t.object({}),
13
+ flags: ['readonly', 'fast', 'transaction'],
14
+ keys: () => [],
15
+ execute: (_args, ctx) => {
16
+ ctx.session.beginTransaction();
17
+ return (0, helpers_1.ok)();
18
+ },
19
+ });
20
+ exports.execCommand = (0, command_definition_1.defineCommand)({
21
+ name: 'exec',
22
+ schema: command_schema_1.t.object({}),
23
+ // EXEC inherits flags from queued commands at runtime. The flag list here
24
+ // only marks it as transaction-control so policies do not treat it as a
25
+ // normal write/read command.
26
+ flags: ['transaction'],
27
+ keys: () => [],
28
+ execute: async (_args, ctx) => {
29
+ if (ctx.session.mode !== 'transaction') {
30
+ throw new redis_error_1.ExecWithoutMultiError();
31
+ }
32
+ if (ctx.session.isWatchDirty()) {
33
+ ctx.session.discardTransaction();
34
+ return redis_result_1.RedisResult.create(redis_value_1.RedisValue.nullArray());
35
+ }
36
+ if (ctx.session.isTransactionDirty()) {
37
+ ctx.session.discardTransaction();
38
+ throw new redis_error_1.TransactionDiscardedError();
39
+ }
40
+ const plans = ctx.session.drainTransaction();
41
+ return ctx.session.executeTransaction(plans);
42
+ },
43
+ });
44
+ exports.discardCommand = (0, command_definition_1.defineCommand)({
45
+ name: 'discard',
46
+ schema: command_schema_1.t.object({}),
47
+ flags: ['readonly', 'fast', 'transaction'],
48
+ keys: () => [],
49
+ execute: (_args, ctx) => {
50
+ if (ctx.session.mode !== 'transaction') {
51
+ throw new redis_error_1.DiscardWithoutMultiError();
52
+ }
53
+ ctx.session.discardTransaction();
54
+ return (0, helpers_1.ok)();
55
+ },
56
+ });
57
+ exports.watchCommand = (0, command_definition_1.defineCommand)({
58
+ name: 'watch',
59
+ schema: command_schema_1.t.object({
60
+ keys: command_schema_1.t.variadic(command_schema_1.t.key(), { min: 1 }),
61
+ }),
62
+ flags: ['readonly', 'fast', 'transaction'],
63
+ keys: args => args.keys,
64
+ execute: (args, ctx) => {
65
+ if (ctx.session.mode === 'transaction') {
66
+ throw new redis_error_1.WatchInsideMultiError();
67
+ }
68
+ ctx.session.watch(args.keys);
69
+ return (0, helpers_1.ok)();
70
+ },
71
+ });
72
+ exports.unwatchCommand = (0, command_definition_1.defineCommand)({
73
+ name: 'unwatch',
74
+ schema: command_schema_1.t.object({}),
75
+ flags: ['readonly', 'fast'],
76
+ keys: () => [],
77
+ execute: (_args, ctx) => {
78
+ ctx.session.unwatch();
79
+ return (0, helpers_1.ok)();
80
+ },
81
+ });
82
+ exports.transactionCommands = [
83
+ exports.multiCommand,
84
+ exports.execCommand,
85
+ exports.discardCommand,
86
+ exports.watchCommand,
87
+ exports.unwatchCommand,
88
+ ];
89
+ //# sourceMappingURL=transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/commands/transactions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ type ZaddPair = {
2
+ score: number;
3
+ member: Buffer;
4
+ };
5
+ type ZaddCondition = 'NX' | 'XX';
6
+ type ZaddComparison = 'GT' | 'LT';
7
+ type ZaddOptions = {
8
+ condition?: ZaddCondition;
9
+ comparison?: ZaddComparison;
10
+ ch: boolean;
11
+ incr: boolean;
12
+ };
13
+ type ZaddArgs = {
14
+ key: Buffer;
15
+ options: ZaddOptions;
16
+ pairs: ZaddPair[];
17
+ };
18
+ export declare const zaddCommand: import("../core/command-definition").CommandDefinition<ZaddArgs>;
19
+ export declare const zremCommand: import("../core/command-definition").CommandDefinition<{
20
+ key: Buffer<ArrayBufferLike>;
21
+ members: Buffer<ArrayBufferLike>[];
22
+ }>;
23
+ export declare const zcardCommand: import("../core/command-definition").CommandDefinition<{
24
+ key: Buffer<ArrayBufferLike>;
25
+ }>;
26
+ export declare const zrankCommand: import("../core/command-definition").CommandDefinition<{
27
+ key: Buffer<ArrayBufferLike>;
28
+ member: Buffer<ArrayBufferLike>;
29
+ }>;
30
+ export declare const zrevrankCommand: import("../core/command-definition").CommandDefinition<{
31
+ key: Buffer<ArrayBufferLike>;
32
+ member: Buffer<ArrayBufferLike>;
33
+ }>;
34
+ export declare const zscoreCommand: import("../core/command-definition").CommandDefinition<{
35
+ key: Buffer<ArrayBufferLike>;
36
+ member: Buffer<ArrayBufferLike>;
37
+ }>;
38
+ export declare const zincrbyCommand: import("../core/command-definition").CommandDefinition<{
39
+ key: Buffer<ArrayBufferLike>;
40
+ increment: string;
41
+ member: Buffer<ArrayBufferLike>;
42
+ }>;
43
+ export declare const zrangeCommand: import("../core/command-definition").CommandDefinition<{
44
+ key: Buffer<ArrayBufferLike>;
45
+ start: number;
46
+ stop: number;
47
+ withScores: "WITHSCORES" | undefined;
48
+ }>;
49
+ export declare const zrevrangeCommand: import("../core/command-definition").CommandDefinition<{
50
+ key: Buffer<ArrayBufferLike>;
51
+ start: number;
52
+ stop: number;
53
+ withScores: "WITHSCORES" | undefined;
54
+ }>;
55
+ export declare const zrangebyscoreCommand: import("../core/command-definition").CommandDefinition<{
56
+ key: Buffer<ArrayBufferLike>;
57
+ min: string;
58
+ max: string;
59
+ }>;
60
+ export declare const zremrangebyscoreCommand: import("../core/command-definition").CommandDefinition<{
61
+ key: Buffer<ArrayBufferLike>;
62
+ min: string;
63
+ max: string;
64
+ }>;
65
+ export declare const zcountCommand: import("../core/command-definition").CommandDefinition<{
66
+ key: Buffer<ArrayBufferLike>;
67
+ min: string;
68
+ max: string;
69
+ }>;
70
+ export declare const zpopminCommand: import("../core/command-definition").CommandDefinition<{
71
+ key: Buffer<ArrayBufferLike>;
72
+ count: number | undefined;
73
+ }>;
74
+ export declare const zpopmaxCommand: import("../core/command-definition").CommandDefinition<{
75
+ key: Buffer<ArrayBufferLike>;
76
+ count: number | undefined;
77
+ }>;
78
+ export declare const zsetsCommands: import("../core/command-definition").CommandDefinition<{
79
+ key: Buffer<ArrayBufferLike>;
80
+ }>[];
81
+ export {};
82
+ //# sourceMappingURL=zsets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zsets.d.ts","sourceRoot":"","sources":["../../src/commands/zsets.ts"],"names":[],"mappings":"AAsEA,KAAK,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AACjD,KAAK,aAAa,GAAG,IAAI,GAAG,IAAI,CAAA;AAChC,KAAK,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;AAEjC,KAAK,WAAW,GAAG;IACjB,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAA;CAClB,CAAA;AA4HD,eAAO,MAAM,WAAW,kEA6CtB,CAAA;AAEF,eAAO,MAAM,WAAW;;;EAoBtB,CAAA;AAEF,eAAO,MAAM,YAAY;;EASvB,CAAA;AAEF,eAAO,MAAM,YAAY;;;EAcvB,CAAA;AAEF,eAAO,MAAM,eAAe;;;EAiB1B,CAAA;AAEF,eAAO,MAAM,aAAa;;;EAYxB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;EAgBzB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;EA4BxB,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;EA4B3B,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;EAkB/B,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;EAyBlC,CAAA;AAEF,eAAO,MAAM,aAAa;;;;EAgBxB,CAAA;AAEF,eAAO,MAAM,cAAc;;;EA2BzB,CAAA;AAEF,eAAO,MAAM,cAAc;;;EA2BzB,CAAA;AAgBF,eAAO,MAAM,aAAa;;IAezB,CAAA"}
@@ -0,0 +1,504 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zsetsCommands = exports.zpopmaxCommand = exports.zpopminCommand = exports.zcountCommand = exports.zremrangebyscoreCommand = exports.zrangebyscoreCommand = exports.zrevrangeCommand = exports.zrangeCommand = exports.zincrbyCommand = exports.zscoreCommand = exports.zrevrankCommand = exports.zrankCommand = exports.zcardCommand = exports.zremCommand = exports.zaddCommand = void 0;
4
+ const command_definition_1 = require("../core/command-definition");
5
+ const command_schema_1 = require("../core/command-schema");
6
+ const redis_error_1 = require("../core/redis-error");
7
+ const redis_result_1 = require("../core/redis-result");
8
+ const redis_value_1 = require("../core/redis-value");
9
+ const helpers_1 = require("./helpers");
10
+ function getSortedMembers(zset) {
11
+ return Array.from(zset.members.values()).sort((a, b) => a.score !== b.score
12
+ ? a.score - b.score
13
+ : a.member.toString().localeCompare(b.member.toString()));
14
+ }
15
+ function parseFloatArg(s) {
16
+ const n = Number(s);
17
+ if (!Number.isFinite(n))
18
+ throw new redis_error_1.ExpectedFloatError();
19
+ return n;
20
+ }
21
+ function parseScoreBoundArg(s) {
22
+ const exclusive = s.startsWith('(');
23
+ const raw = exclusive ? s.slice(1) : s;
24
+ if (raw.length === 0)
25
+ throw new redis_error_1.MinMaxNotFloatError();
26
+ const normalized = raw.toLowerCase();
27
+ if (normalized === '+inf')
28
+ return { value: Infinity, exclusive };
29
+ if (normalized === '-inf')
30
+ return { value: -Infinity, exclusive };
31
+ const n = Number(raw);
32
+ if (!Number.isFinite(n))
33
+ throw new redis_error_1.MinMaxNotFloatError();
34
+ return { value: n, exclusive };
35
+ }
36
+ function scoreWithinBounds(score, min, max) {
37
+ if (min.exclusive ? score <= min.value : score < min.value)
38
+ return false;
39
+ if (max.exclusive ? score >= max.value : score > max.value)
40
+ return false;
41
+ return true;
42
+ }
43
+ function parsePopCountArg(s) {
44
+ if (!/^-?\d+$/.test(s)) {
45
+ throw new redis_error_1.PositiveCountError();
46
+ }
47
+ const count = Number(s);
48
+ if (!Number.isSafeInteger(count) || count < 0) {
49
+ throw new redis_error_1.PositiveCountError();
50
+ }
51
+ return count;
52
+ }
53
+ function createZaddSchema() {
54
+ return command_schema_1.t.custom((input, index, ctx) => {
55
+ const key = input[index];
56
+ if (!key) {
57
+ throw new redis_error_1.WrongNumberOfArgumentsError(ctx.commandName);
58
+ }
59
+ const options = { ch: false, incr: false };
60
+ let cursor = index + 1;
61
+ while (cursor < input.length) {
62
+ const option = input[cursor].toString().toUpperCase();
63
+ if (option === 'NX') {
64
+ if (options.condition === 'XX')
65
+ throw new redis_error_1.ZaddNxXxConflictError();
66
+ options.condition = 'NX';
67
+ cursor++;
68
+ continue;
69
+ }
70
+ if (option === 'XX') {
71
+ if (options.condition === 'NX')
72
+ throw new redis_error_1.ZaddNxXxConflictError();
73
+ options.condition = 'XX';
74
+ cursor++;
75
+ continue;
76
+ }
77
+ if (option === 'GT') {
78
+ if (options.comparison === 'LT') {
79
+ throw new redis_error_1.ZaddGtLtNxConflictError();
80
+ }
81
+ options.comparison = 'GT';
82
+ cursor++;
83
+ continue;
84
+ }
85
+ if (option === 'LT') {
86
+ if (options.comparison === 'GT') {
87
+ throw new redis_error_1.ZaddGtLtNxConflictError();
88
+ }
89
+ options.comparison = 'LT';
90
+ cursor++;
91
+ continue;
92
+ }
93
+ if (option === 'CH') {
94
+ options.ch = true;
95
+ cursor++;
96
+ continue;
97
+ }
98
+ if (option === 'INCR') {
99
+ options.incr = true;
100
+ cursor++;
101
+ continue;
102
+ }
103
+ break;
104
+ }
105
+ if (options.condition === 'NX' && options.comparison) {
106
+ throw new redis_error_1.ZaddGtLtNxConflictError();
107
+ }
108
+ const pairs = parseZaddPairs(input, cursor, ctx);
109
+ if (options.incr && pairs.length !== 1) {
110
+ throw new redis_error_1.ZaddIncrPairError();
111
+ }
112
+ return { value: { key, options, pairs }, nextIndex: input.length };
113
+ });
114
+ }
115
+ function parseZaddPairs(input, index, ctx) {
116
+ const pairs = [];
117
+ let cursor = index;
118
+ if (cursor >= input.length) {
119
+ throw new redis_error_1.WrongNumberOfArgumentsError(ctx.commandName);
120
+ }
121
+ while (cursor < input.length) {
122
+ const scoreToken = input[cursor];
123
+ const memberToken = input[cursor + 1];
124
+ if (!scoreToken || !memberToken) {
125
+ throw new redis_error_1.WrongNumberOfArgumentsError(ctx.commandName);
126
+ }
127
+ const score = Number(scoreToken.toString());
128
+ if (!Number.isFinite(score))
129
+ throw new redis_error_1.ExpectedFloatError();
130
+ pairs.push({ score, member: memberToken });
131
+ cursor += 2;
132
+ }
133
+ return pairs;
134
+ }
135
+ function shouldApplyZaddUpdate(existing, score, options) {
136
+ if (!existing)
137
+ return options.condition !== 'XX';
138
+ if (options.condition === 'NX')
139
+ return false;
140
+ if (options.comparison === 'GT')
141
+ return score > existing.score;
142
+ if (options.comparison === 'LT')
143
+ return score < existing.score;
144
+ return true;
145
+ }
146
+ function deleteSortedSetIfEmpty(db, key) {
147
+ if ((db.getSortedSet(key)?.members.size ?? 0) === 0) {
148
+ db.delete(key);
149
+ }
150
+ }
151
+ exports.zaddCommand = (0, command_definition_1.defineCommand)({
152
+ name: 'zadd',
153
+ schema: createZaddSchema(),
154
+ flags: ['write', 'denyoom', 'fast'],
155
+ keys: args => [args.key],
156
+ execute: (args, ctx) => {
157
+ if (args.options.incr) {
158
+ const [{ score, member }] = args.pairs;
159
+ const newScore = ctx.db.updateSortedSet(args.key, zset => {
160
+ const hex = member.toString('hex');
161
+ const existing = zset.members.get(hex);
162
+ const nextScore = (existing?.score ?? 0) + score;
163
+ if (!shouldApplyZaddUpdate(existing, nextScore, args.options)) {
164
+ return null;
165
+ }
166
+ zset.members.set(hex, { member, score: nextScore });
167
+ return nextScore;
168
+ });
169
+ deleteSortedSetIfEmpty(ctx.db, args.key);
170
+ return (0, helpers_1.bulk)(newScore === null ? null : Buffer.from(newScore.toString()));
171
+ }
172
+ const changed = ctx.db.updateSortedSet(args.key, zset => {
173
+ let count = 0;
174
+ for (const { score, member } of args.pairs) {
175
+ const hex = member.toString('hex');
176
+ const existing = zset.members.get(hex);
177
+ if (!shouldApplyZaddUpdate(existing, score, args.options)) {
178
+ continue;
179
+ }
180
+ if (!existing || args.options.ch) {
181
+ if (!existing || existing.score !== score)
182
+ count++;
183
+ }
184
+ zset.members.set(hex, { member, score });
185
+ }
186
+ return count;
187
+ });
188
+ deleteSortedSetIfEmpty(ctx.db, args.key);
189
+ return (0, helpers_1.integer)(changed);
190
+ },
191
+ });
192
+ exports.zremCommand = (0, command_definition_1.defineCommand)({
193
+ name: 'zrem',
194
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), members: command_schema_1.t.variadic(command_schema_1.t.key(), { min: 1 }) }),
195
+ flags: ['write', 'fast'],
196
+ keys: args => [args.key],
197
+ execute: (args, ctx) => {
198
+ let removed = 0;
199
+ ctx.db.updateSortedSet(args.key, zset => {
200
+ for (const member of args.members) {
201
+ if (zset.members.delete(member.toString('hex')))
202
+ removed++;
203
+ }
204
+ });
205
+ if (removed > 0 &&
206
+ (ctx.db.getSortedSet(args.key)?.members.size ?? 0) === 0) {
207
+ ctx.db.delete(args.key);
208
+ }
209
+ return (0, helpers_1.integer)(removed);
210
+ },
211
+ });
212
+ exports.zcardCommand = (0, command_definition_1.defineCommand)({
213
+ name: 'zcard',
214
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key() }),
215
+ flags: ['readonly', 'fast'],
216
+ keys: args => [args.key],
217
+ execute: (args, ctx) => {
218
+ const zset = ctx.db.getSortedSet(args.key);
219
+ return (0, helpers_1.integer)(zset?.members.size ?? 0);
220
+ },
221
+ });
222
+ exports.zrankCommand = (0, command_definition_1.defineCommand)({
223
+ name: 'zrank',
224
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), member: command_schema_1.t.key() }),
225
+ flags: ['readonly', 'fast'],
226
+ keys: args => [args.key],
227
+ execute: (args, ctx) => {
228
+ const zset = ctx.db.getSortedSet(args.key);
229
+ if (!zset)
230
+ return redis_result_1.RedisResult.nil();
231
+ const hex = args.member.toString('hex');
232
+ if (!zset.members.has(hex))
233
+ return redis_result_1.RedisResult.nil();
234
+ const sorted = getSortedMembers(zset);
235
+ const rank = sorted.findIndex(m => m.member.toString('hex') === hex);
236
+ return (0, helpers_1.integer)(rank);
237
+ },
238
+ });
239
+ exports.zrevrankCommand = (0, command_definition_1.defineCommand)({
240
+ name: 'zrevrank',
241
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), member: command_schema_1.t.key() }),
242
+ flags: ['readonly', 'fast'],
243
+ keys: args => [args.key],
244
+ execute: (args, ctx) => {
245
+ const zset = ctx.db.getSortedSet(args.key);
246
+ if (!zset)
247
+ return redis_result_1.RedisResult.nil();
248
+ const hex = args.member.toString('hex');
249
+ if (!zset.members.has(hex))
250
+ return redis_result_1.RedisResult.nil();
251
+ const sorted = getSortedMembers(zset);
252
+ const rank = sorted
253
+ .slice()
254
+ .reverse()
255
+ .findIndex(m => m.member.toString('hex') === hex);
256
+ return (0, helpers_1.integer)(rank);
257
+ },
258
+ });
259
+ exports.zscoreCommand = (0, command_definition_1.defineCommand)({
260
+ name: 'zscore',
261
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), member: command_schema_1.t.key() }),
262
+ flags: ['readonly', 'fast'],
263
+ keys: args => [args.key],
264
+ execute: (args, ctx) => {
265
+ const zset = ctx.db.getSortedSet(args.key);
266
+ if (!zset)
267
+ return (0, helpers_1.bulk)(null);
268
+ const entry = zset.members.get(args.member.toString('hex'));
269
+ if (!entry)
270
+ return (0, helpers_1.bulk)(null);
271
+ return (0, helpers_1.bulk)(Buffer.from(entry.score.toString()));
272
+ },
273
+ });
274
+ exports.zincrbyCommand = (0, command_definition_1.defineCommand)({
275
+ name: 'zincrby',
276
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), increment: command_schema_1.t.string(), member: command_schema_1.t.key() }),
277
+ flags: ['write', 'fast'],
278
+ keys: args => [args.key],
279
+ execute: (args, ctx) => {
280
+ const inc = parseFloatArg(args.increment);
281
+ const newScore = ctx.db.updateSortedSet(args.key, zset => {
282
+ const hex = args.member.toString('hex');
283
+ const existing = zset.members.get(hex);
284
+ const score = (existing?.score ?? 0) + inc;
285
+ zset.members.set(hex, { member: args.member, score });
286
+ return score;
287
+ });
288
+ return (0, helpers_1.bulk)(Buffer.from(newScore.toString()));
289
+ },
290
+ });
291
+ exports.zrangeCommand = (0, command_definition_1.defineCommand)({
292
+ name: 'zrange',
293
+ schema: command_schema_1.t.object({
294
+ key: command_schema_1.t.key(),
295
+ start: command_schema_1.t.integer(),
296
+ stop: command_schema_1.t.integer(),
297
+ withScores: command_schema_1.t.optional(command_schema_1.t.keyword('WITHSCORES')),
298
+ }),
299
+ flags: ['readonly'],
300
+ keys: args => [args.key],
301
+ execute: (args, ctx) => {
302
+ const zset = ctx.db.getSortedSet(args.key);
303
+ if (!zset)
304
+ return (0, helpers_1.array)([]);
305
+ const sorted = getSortedMembers(zset);
306
+ const len = sorted.length;
307
+ const start = args.start < 0 ? Math.max(0, len + args.start) : args.start;
308
+ const stop = args.stop < 0 ? len + args.stop : Math.min(args.stop, len - 1);
309
+ if (start > stop)
310
+ return (0, helpers_1.array)([]);
311
+ const slice = sorted.slice(start, stop + 1);
312
+ const items = [];
313
+ for (const entry of slice) {
314
+ items.push(redis_value_1.RedisValue.bulkString(entry.member));
315
+ if (args.withScores) {
316
+ items.push(redis_value_1.RedisValue.bulkString(Buffer.from(entry.score.toString())));
317
+ }
318
+ }
319
+ return (0, helpers_1.array)(items);
320
+ },
321
+ });
322
+ exports.zrevrangeCommand = (0, command_definition_1.defineCommand)({
323
+ name: 'zrevrange',
324
+ schema: command_schema_1.t.object({
325
+ key: command_schema_1.t.key(),
326
+ start: command_schema_1.t.integer(),
327
+ stop: command_schema_1.t.integer(),
328
+ withScores: command_schema_1.t.optional(command_schema_1.t.keyword('WITHSCORES')),
329
+ }),
330
+ flags: ['readonly'],
331
+ keys: args => [args.key],
332
+ execute: (args, ctx) => {
333
+ const zset = ctx.db.getSortedSet(args.key);
334
+ if (!zset)
335
+ return (0, helpers_1.array)([]);
336
+ const sorted = getSortedMembers(zset).slice().reverse();
337
+ const len = sorted.length;
338
+ const start = args.start < 0 ? Math.max(0, len + args.start) : args.start;
339
+ const stop = args.stop < 0 ? len + args.stop : Math.min(args.stop, len - 1);
340
+ if (start > stop)
341
+ return (0, helpers_1.array)([]);
342
+ const slice = sorted.slice(start, stop + 1);
343
+ const items = [];
344
+ for (const entry of slice) {
345
+ items.push(redis_value_1.RedisValue.bulkString(entry.member));
346
+ if (args.withScores) {
347
+ items.push(redis_value_1.RedisValue.bulkString(Buffer.from(entry.score.toString())));
348
+ }
349
+ }
350
+ return (0, helpers_1.array)(items);
351
+ },
352
+ });
353
+ exports.zrangebyscoreCommand = (0, command_definition_1.defineCommand)({
354
+ name: 'zrangebyscore',
355
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), min: command_schema_1.t.string(), max: command_schema_1.t.string() }),
356
+ flags: ['readonly'],
357
+ keys: args => [args.key],
358
+ execute: (args, ctx) => {
359
+ const min = parseScoreBoundArg(args.min);
360
+ const max = parseScoreBoundArg(args.max);
361
+ const zset = ctx.db.getSortedSet(args.key);
362
+ if (!zset)
363
+ return (0, helpers_1.array)([]);
364
+ const items = [];
365
+ for (const entry of getSortedMembers(zset)) {
366
+ if (scoreWithinBounds(entry.score, min, max)) {
367
+ items.push(redis_value_1.RedisValue.bulkString(entry.member));
368
+ }
369
+ }
370
+ return (0, helpers_1.array)(items);
371
+ },
372
+ });
373
+ exports.zremrangebyscoreCommand = (0, command_definition_1.defineCommand)({
374
+ name: 'zremrangebyscore',
375
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), min: command_schema_1.t.string(), max: command_schema_1.t.string() }),
376
+ flags: ['write'],
377
+ keys: args => [args.key],
378
+ execute: (args, ctx) => {
379
+ const min = parseScoreBoundArg(args.min);
380
+ const max = parseScoreBoundArg(args.max);
381
+ let removed = 0;
382
+ ctx.db.updateSortedSet(args.key, zset => {
383
+ for (const [hex, entry] of zset.members) {
384
+ if (scoreWithinBounds(entry.score, min, max)) {
385
+ zset.members.delete(hex);
386
+ removed++;
387
+ }
388
+ }
389
+ });
390
+ if (removed > 0 &&
391
+ (ctx.db.getSortedSet(args.key)?.members.size ?? 0) === 0) {
392
+ ctx.db.delete(args.key);
393
+ }
394
+ return (0, helpers_1.integer)(removed);
395
+ },
396
+ });
397
+ exports.zcountCommand = (0, command_definition_1.defineCommand)({
398
+ name: 'zcount',
399
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), min: command_schema_1.t.string(), max: command_schema_1.t.string() }),
400
+ flags: ['readonly', 'fast'],
401
+ keys: args => [args.key],
402
+ execute: (args, ctx) => {
403
+ const min = parseScoreBoundArg(args.min);
404
+ const max = parseScoreBoundArg(args.max);
405
+ const zset = ctx.db.getSortedSet(args.key);
406
+ if (!zset)
407
+ return (0, helpers_1.integer)(0);
408
+ let count = 0;
409
+ for (const entry of zset.members.values()) {
410
+ if (scoreWithinBounds(entry.score, min, max))
411
+ count++;
412
+ }
413
+ return (0, helpers_1.integer)(count);
414
+ },
415
+ });
416
+ exports.zpopminCommand = (0, command_definition_1.defineCommand)({
417
+ name: 'zpopmin',
418
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), count: command_schema_1.t.optional(zpopCountSchema()) }),
419
+ flags: ['write', 'fast'],
420
+ keys: args => [args.key],
421
+ execute: (args, ctx) => {
422
+ const zset = ctx.db.getSortedSet(args.key);
423
+ if (!zset)
424
+ return (0, helpers_1.array)([]);
425
+ const count = args.count ?? 1;
426
+ const sorted = getSortedMembers(zset);
427
+ const toRemove = sorted.slice(0, count);
428
+ if (toRemove.length === 0)
429
+ return (0, helpers_1.array)([]);
430
+ ctx.db.updateSortedSet(args.key, z => {
431
+ for (const entry of toRemove) {
432
+ z.members.delete(entry.member.toString('hex'));
433
+ }
434
+ });
435
+ if ((ctx.db.getSortedSet(args.key)?.members.size ?? 0) === 0) {
436
+ ctx.db.delete(args.key);
437
+ }
438
+ const items = [];
439
+ for (const entry of toRemove) {
440
+ items.push(redis_value_1.RedisValue.bulkString(entry.member));
441
+ items.push(redis_value_1.RedisValue.bulkString(Buffer.from(entry.score.toString())));
442
+ }
443
+ return (0, helpers_1.array)(items);
444
+ },
445
+ });
446
+ exports.zpopmaxCommand = (0, command_definition_1.defineCommand)({
447
+ name: 'zpopmax',
448
+ schema: command_schema_1.t.object({ key: command_schema_1.t.key(), count: command_schema_1.t.optional(zpopCountSchema()) }),
449
+ flags: ['write', 'fast'],
450
+ keys: args => [args.key],
451
+ execute: (args, ctx) => {
452
+ const zset = ctx.db.getSortedSet(args.key);
453
+ if (!zset)
454
+ return (0, helpers_1.array)([]);
455
+ const count = args.count ?? 1;
456
+ const sorted = getSortedMembers(zset).slice().reverse();
457
+ const toRemove = sorted.slice(0, count);
458
+ if (toRemove.length === 0)
459
+ return (0, helpers_1.array)([]);
460
+ ctx.db.updateSortedSet(args.key, z => {
461
+ for (const entry of toRemove) {
462
+ z.members.delete(entry.member.toString('hex'));
463
+ }
464
+ });
465
+ if ((ctx.db.getSortedSet(args.key)?.members.size ?? 0) === 0) {
466
+ ctx.db.delete(args.key);
467
+ }
468
+ const items = [];
469
+ for (const entry of toRemove) {
470
+ items.push(redis_value_1.RedisValue.bulkString(entry.member));
471
+ items.push(redis_value_1.RedisValue.bulkString(Buffer.from(entry.score.toString())));
472
+ }
473
+ return (0, helpers_1.array)(items);
474
+ },
475
+ });
476
+ function zpopCountSchema() {
477
+ return command_schema_1.t.custom((input, index, ctx) => {
478
+ const token = input[index];
479
+ if (!token) {
480
+ throw new redis_error_1.WrongNumberOfArgumentsError(ctx.commandName);
481
+ }
482
+ return {
483
+ value: parsePopCountArg(token.toString()),
484
+ nextIndex: index + 1,
485
+ };
486
+ });
487
+ }
488
+ exports.zsetsCommands = [
489
+ exports.zaddCommand,
490
+ exports.zremCommand,
491
+ exports.zcardCommand,
492
+ exports.zrankCommand,
493
+ exports.zrevrankCommand,
494
+ exports.zscoreCommand,
495
+ exports.zincrbyCommand,
496
+ exports.zrangeCommand,
497
+ exports.zrevrangeCommand,
498
+ exports.zrangebyscoreCommand,
499
+ exports.zremrangebyscoreCommand,
500
+ exports.zcountCommand,
501
+ exports.zpopminCommand,
502
+ exports.zpopmaxCommand,
503
+ ];
504
+ //# sourceMappingURL=zsets.js.map