@upstash/redis 1.0.0-alpha.2 → 1.0.0-alpha.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 (265) hide show
  1. package/{dist/chunk-7YUZYRJS.mjs → chunk-7YUZYRJS.mjs} +0 -0
  2. package/{dist/chunk-FJSI5EBJ.mjs → chunk-FJSI5EBJ.mjs} +0 -0
  3. package/{dist/chunk-U7OXAQMQ.mjs → chunk-U7OXAQMQ.mjs} +0 -0
  4. package/{dist/chunk-Y5TC4HX2.mjs → chunk-Y5TC4HX2.mjs} +0 -0
  5. package/{dist/chunk-ZIB6XPPC.mjs → chunk-ZIB6XPPC.mjs} +0 -0
  6. package/{dist/cloudflare.d.ts → cloudflare.d.ts} +0 -0
  7. package/{dist/cloudflare.js → cloudflare.js} +0 -0
  8. package/{dist/cloudflare.mjs → cloudflare.mjs} +0 -0
  9. package/{dist/commands.d.ts → commands.d.ts} +0 -0
  10. package/{dist/commands.js → commands.js} +0 -0
  11. package/{dist/commands.mjs → commands.mjs} +0 -0
  12. package/{dist/fastly.d.ts → fastly.d.ts} +0 -0
  13. package/{dist/fastly.js → fastly.js} +0 -0
  14. package/{dist/fastly.mjs → fastly.mjs} +0 -0
  15. package/{dist/http.d.ts → http.d.ts} +0 -0
  16. package/{dist/http.js → http.js} +0 -0
  17. package/{dist/http.mjs → http.mjs} +0 -0
  18. package/{dist/index.d.ts → index.d.ts} +0 -0
  19. package/{dist/index.js → index.js} +0 -0
  20. package/{dist/index.mjs → index.mjs} +0 -0
  21. package/{dist/nodejs.d.ts → nodejs.d.ts} +0 -0
  22. package/{dist/nodejs.js → nodejs.js} +0 -0
  23. package/{dist/nodejs.mjs → nodejs.mjs} +0 -0
  24. package/package.json +1 -1
  25. package/{dist/redis-dd052782.d.ts → redis-dd052782.d.ts} +0 -0
  26. package/{dist/zunionstore-dffa797d.d.ts → zunionstore-dffa797d.d.ts} +0 -0
  27. package/.eslintrc.js +0 -49
  28. package/.prettierrc.js +0 -7
  29. package/LICENSE +0 -21
  30. package/dist/package.json +0 -1
  31. package/jest.config.js +0 -195
  32. package/pkg/cloudflare.ts +0 -77
  33. package/pkg/command.ts +0 -40
  34. package/pkg/commands/append.test.ts +0 -28
  35. package/pkg/commands/append.ts +0 -10
  36. package/pkg/commands/bitcount.test.ts +0 -36
  37. package/pkg/commands/bitcount.ts +0 -19
  38. package/pkg/commands/bitop.test.ts +0 -44
  39. package/pkg/commands/bitop.ts +0 -22
  40. package/pkg/commands/bitpos.test.ts +0 -26
  41. package/pkg/commands/bitpos.ts +0 -10
  42. package/pkg/commands/dbsize.test.ts +0 -17
  43. package/pkg/commands/dbsize.ts +0 -10
  44. package/pkg/commands/decr.test.ts +0 -22
  45. package/pkg/commands/decr.ts +0 -10
  46. package/pkg/commands/decrby.test.ts +0 -23
  47. package/pkg/commands/decrby.ts +0 -10
  48. package/pkg/commands/del.test.ts +0 -38
  49. package/pkg/commands/del.ts +0 -11
  50. package/pkg/commands/echo.test.ts +0 -11
  51. package/pkg/commands/echo.ts +0 -10
  52. package/pkg/commands/exists.test.ts +0 -37
  53. package/pkg/commands/exists.ts +0 -11
  54. package/pkg/commands/expire.test.ts +0 -22
  55. package/pkg/commands/expire.ts +0 -10
  56. package/pkg/commands/expireat.test.ts +0 -24
  57. package/pkg/commands/expireat.ts +0 -10
  58. package/pkg/commands/flushall.test.ts +0 -17
  59. package/pkg/commands/flushall.ts +0 -13
  60. package/pkg/commands/flushdb.test.ts +0 -17
  61. package/pkg/commands/flushdb.ts +0 -13
  62. package/pkg/commands/get.test.ts +0 -34
  63. package/pkg/commands/get.ts +0 -10
  64. package/pkg/commands/getbit.test.ts +0 -16
  65. package/pkg/commands/getbit.ts +0 -10
  66. package/pkg/commands/getrange.test.ts +0 -25
  67. package/pkg/commands/getrange.ts +0 -10
  68. package/pkg/commands/getset.test.ts +0 -33
  69. package/pkg/commands/getset.ts +0 -10
  70. package/pkg/commands/hdel.test.ts +0 -30
  71. package/pkg/commands/hdel.ts +0 -10
  72. package/pkg/commands/hexists.test.ts +0 -31
  73. package/pkg/commands/hexists.ts +0 -10
  74. package/pkg/commands/hget.test.ts +0 -47
  75. package/pkg/commands/hget.ts +0 -10
  76. package/pkg/commands/hgetall.test.ts +0 -32
  77. package/pkg/commands/hgetall.ts +0 -35
  78. package/pkg/commands/hincrby.test.ts +0 -27
  79. package/pkg/commands/hincrby.ts +0 -10
  80. package/pkg/commands/hincrbyfloat.test.ts +0 -25
  81. package/pkg/commands/hincrbyfloat.ts +0 -10
  82. package/pkg/commands/hkeys.test.ts +0 -22
  83. package/pkg/commands/hkeys.ts +0 -10
  84. package/pkg/commands/hlen.test.ts +0 -24
  85. package/pkg/commands/hlen.ts +0 -10
  86. package/pkg/commands/hmget.test.ts +0 -48
  87. package/pkg/commands/hmget.ts +0 -41
  88. package/pkg/commands/hmset.test.ts +0 -24
  89. package/pkg/commands/hmset.ts +0 -10
  90. package/pkg/commands/hscan.test.ts +0 -46
  91. package/pkg/commands/hscan.ts +0 -22
  92. package/pkg/commands/hset.test.ts +0 -21
  93. package/pkg/commands/hset.ts +0 -10
  94. package/pkg/commands/hsetnx.test.ts +0 -37
  95. package/pkg/commands/hsetnx.ts +0 -10
  96. package/pkg/commands/hstrlen.test.ts +0 -24
  97. package/pkg/commands/hstrlen.ts +0 -10
  98. package/pkg/commands/hvals.test.ts +0 -23
  99. package/pkg/commands/hvals.ts +0 -10
  100. package/pkg/commands/incr.test.ts +0 -23
  101. package/pkg/commands/incr.ts +0 -10
  102. package/pkg/commands/incrby.test.ts +0 -23
  103. package/pkg/commands/incrby.ts +0 -10
  104. package/pkg/commands/incrbyfloat.test.ts +0 -24
  105. package/pkg/commands/incrbyfloat.ts +0 -10
  106. package/pkg/commands/index.ts +0 -107
  107. package/pkg/commands/keys.test.ts +0 -17
  108. package/pkg/commands/keys.ts +0 -10
  109. package/pkg/commands/lindex.test.ts +0 -33
  110. package/pkg/commands/lindex.ts +0 -7
  111. package/pkg/commands/linsert.test.ts +0 -19
  112. package/pkg/commands/linsert.ts +0 -6
  113. package/pkg/commands/llen.test.ts +0 -26
  114. package/pkg/commands/llen.ts +0 -10
  115. package/pkg/commands/lpop.test.ts +0 -27
  116. package/pkg/commands/lpop.ts +0 -10
  117. package/pkg/commands/lpush.test.ts +0 -17
  118. package/pkg/commands/lpush.ts +0 -11
  119. package/pkg/commands/lpushx.test.ts +0 -29
  120. package/pkg/commands/lpushx.ts +0 -11
  121. package/pkg/commands/lrange.test.ts +0 -22
  122. package/pkg/commands/lrange.ts +0 -7
  123. package/pkg/commands/lrem.test.ts +0 -19
  124. package/pkg/commands/lrem.ts +0 -6
  125. package/pkg/commands/lset.test.ts +0 -40
  126. package/pkg/commands/lset.ts +0 -7
  127. package/pkg/commands/ltrim.test.ts +0 -29
  128. package/pkg/commands/ltrim.ts +0 -7
  129. package/pkg/commands/mget.test.ts +0 -44
  130. package/pkg/commands/mget.ts +0 -9
  131. package/pkg/commands/mset.test.ts +0 -24
  132. package/pkg/commands/mset.ts +0 -10
  133. package/pkg/commands/msetnx.test.ts +0 -46
  134. package/pkg/commands/msetnx.ts +0 -10
  135. package/pkg/commands/persist.test.ts +0 -22
  136. package/pkg/commands/persist.ts +0 -10
  137. package/pkg/commands/pexpire.test.ts +0 -24
  138. package/pkg/commands/pexpire.ts +0 -10
  139. package/pkg/commands/pexpireat.test.ts +0 -24
  140. package/pkg/commands/pexpireat.ts +0 -10
  141. package/pkg/commands/ping.test.ts +0 -19
  142. package/pkg/commands/ping.ts +0 -13
  143. package/pkg/commands/psetex.test.ts +0 -23
  144. package/pkg/commands/psetex.ts +0 -10
  145. package/pkg/commands/pttl.test.ts +0 -17
  146. package/pkg/commands/pttl.ts +0 -10
  147. package/pkg/commands/randomkey.test.ts +0 -17
  148. package/pkg/commands/randomkey.ts +0 -10
  149. package/pkg/commands/rename.test.ts +0 -18
  150. package/pkg/commands/rename.ts +0 -10
  151. package/pkg/commands/renamenx.test.ts +0 -32
  152. package/pkg/commands/renamenx.ts +0 -10
  153. package/pkg/commands/rpop.test.ts +0 -27
  154. package/pkg/commands/rpop.ts +0 -10
  155. package/pkg/commands/rpush.test.ts +0 -17
  156. package/pkg/commands/rpush.ts +0 -11
  157. package/pkg/commands/rpushx.test.ts +0 -29
  158. package/pkg/commands/rpushx.ts +0 -11
  159. package/pkg/commands/sadd.test.ts +0 -16
  160. package/pkg/commands/sadd.ts +0 -11
  161. package/pkg/commands/scan.test.ts +0 -50
  162. package/pkg/commands/scan.ts +0 -21
  163. package/pkg/commands/scard.test.ts +0 -15
  164. package/pkg/commands/scard.ts +0 -9
  165. package/pkg/commands/sdiff.test.ts +0 -20
  166. package/pkg/commands/sdiff.ts +0 -9
  167. package/pkg/commands/sdiffstore.test.ts +0 -21
  168. package/pkg/commands/sdiffstore.ts +0 -10
  169. package/pkg/commands/set.test.ts +0 -112
  170. package/pkg/commands/set.ts +0 -53
  171. package/pkg/commands/setbit.test.ts +0 -16
  172. package/pkg/commands/setbit.ts +0 -10
  173. package/pkg/commands/setex.test.ts +0 -22
  174. package/pkg/commands/setex.ts +0 -10
  175. package/pkg/commands/setnx.test.ts +0 -27
  176. package/pkg/commands/setnx.ts +0 -10
  177. package/pkg/commands/setrange.test.ts +0 -25
  178. package/pkg/commands/setrange.ts +0 -10
  179. package/pkg/commands/sinter.test.ts +0 -36
  180. package/pkg/commands/sinter.ts +0 -9
  181. package/pkg/commands/sinterstore.test.ts +0 -21
  182. package/pkg/commands/sinterstore.ts +0 -9
  183. package/pkg/commands/sismember.test.ts +0 -30
  184. package/pkg/commands/sismember.ts +0 -9
  185. package/pkg/commands/smembers.test.ts +0 -22
  186. package/pkg/commands/smembers.ts +0 -10
  187. package/pkg/commands/smove.test.ts +0 -18
  188. package/pkg/commands/smove.ts +0 -9
  189. package/pkg/commands/spop.test.ts +0 -35
  190. package/pkg/commands/spop.ts +0 -13
  191. package/pkg/commands/srandmember.test.ts +0 -32
  192. package/pkg/commands/srandmember.ts +0 -13
  193. package/pkg/commands/srem.test.ts +0 -18
  194. package/pkg/commands/srem.ts +0 -10
  195. package/pkg/commands/sscan.test.ts +0 -50
  196. package/pkg/commands/sscan.ts +0 -22
  197. package/pkg/commands/strlen.test.ts +0 -16
  198. package/pkg/commands/strlen.ts +0 -10
  199. package/pkg/commands/sunion.test.ts +0 -22
  200. package/pkg/commands/sunion.ts +0 -10
  201. package/pkg/commands/sunionstore.test.ts +0 -29
  202. package/pkg/commands/sunionstore.ts +0 -10
  203. package/pkg/commands/time.test.ts +0 -11
  204. package/pkg/commands/time.ts +0 -9
  205. package/pkg/commands/touch.test.ts +0 -20
  206. package/pkg/commands/touch.ts +0 -10
  207. package/pkg/commands/ttl.test.ts +0 -17
  208. package/pkg/commands/ttl.ts +0 -10
  209. package/pkg/commands/type.test.ts +0 -72
  210. package/pkg/commands/type.ts +0 -11
  211. package/pkg/commands/unlink.test.ts +0 -21
  212. package/pkg/commands/unlink.ts +0 -10
  213. package/pkg/commands/zadd.test.ts +0 -177
  214. package/pkg/commands/zadd.ts +0 -64
  215. package/pkg/commands/zcard.test.ts +0 -15
  216. package/pkg/commands/zcard.ts +0 -10
  217. package/pkg/commands/zcount.test.ts +0 -15
  218. package/pkg/commands/zcount.ts +0 -9
  219. package/pkg/commands/zincrby.test.ts +0 -20
  220. package/pkg/commands/zincrby.ts +0 -9
  221. package/pkg/commands/zinterstore.test.ts +0 -239
  222. package/pkg/commands/zinterstore.ts +0 -55
  223. package/pkg/commands/zlexcount.test.ts +0 -22
  224. package/pkg/commands/zlexcount.ts +0 -9
  225. package/pkg/commands/zpopmax.test.ts +0 -45
  226. package/pkg/commands/zpopmax.ts +0 -13
  227. package/pkg/commands/zpopmin.test.ts +0 -49
  228. package/pkg/commands/zpopmin.ts +0 -13
  229. package/pkg/commands/zrange.test.ts +0 -52
  230. package/pkg/commands/zrange.ts +0 -22
  231. package/pkg/commands/zrank.test.ts +0 -22
  232. package/pkg/commands/zrank.ts +0 -10
  233. package/pkg/commands/zrem.test.ts +0 -20
  234. package/pkg/commands/zrem.ts +0 -10
  235. package/pkg/commands/zremrangebylex.test.ts +0 -26
  236. package/pkg/commands/zremrangebylex.ts +0 -9
  237. package/pkg/commands/zremrangebyrank.test.ts +0 -27
  238. package/pkg/commands/zremrangebyrank.ts +0 -9
  239. package/pkg/commands/zremrangebyscore.test.ts +0 -24
  240. package/pkg/commands/zremrangebyscore.ts +0 -9
  241. package/pkg/commands/zrevrank.test.ts +0 -22
  242. package/pkg/commands/zrevrank.ts +0 -10
  243. package/pkg/commands/zscan.test.ts +0 -50
  244. package/pkg/commands/zscan.ts +0 -22
  245. package/pkg/commands/zscore.test.ts +0 -18
  246. package/pkg/commands/zscore.ts +0 -10
  247. package/pkg/commands/zunionstore.test.ts +0 -215
  248. package/pkg/commands/zunionstore.ts +0 -55
  249. package/pkg/commands/zz.ts +0 -1
  250. package/pkg/error.ts +0 -9
  251. package/pkg/fastly.ts +0 -54
  252. package/pkg/http.test.ts +0 -34
  253. package/pkg/http.ts +0 -62
  254. package/pkg/index.ts +0 -2
  255. package/pkg/nodejs.ts +0 -83
  256. package/pkg/pipeline.test.ts +0 -177
  257. package/pkg/pipeline.ts +0 -999
  258. package/pkg/redis.ts +0 -930
  259. package/pkg/test-utils.ts +0 -41
  260. package/pkg/types.ts +0 -4
  261. package/pkg/util.ts +0 -22
  262. package/pnpm-lock.yaml +0 -3940
  263. package/tsconfig.json +0 -100
  264. package/tsconfig.module.json +0 -8
  265. package/tsup.config.ts +0 -16
@@ -1,20 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { it, expect, afterAll } from "@jest/globals"
3
- import { ZIncrByComand } from "./zincrby"
4
- import { ZAddCommand } from "./zadd"
5
- import { randomUUID } from "crypto"
6
-
7
- const client = newHttpClient()
8
-
9
- const { newKey, cleanup } = keygen()
10
- afterAll(cleanup)
11
-
12
- it("increments and existing value", async () => {
13
- const key = newKey()
14
- const score = 1
15
- const member = randomUUID()
16
- await new ZAddCommand(key, { score, member }).exec(client)
17
- const res = await new ZIncrByComand(key, 2, member).exec(client)
18
-
19
- expect(res).toEqual(3)
20
- })
@@ -1,9 +0,0 @@
1
- import { Command } from "../command"
2
- /**
3
- * @see https://redis.io/commands/zincrby
4
- */
5
- export class ZIncrByComand<TData> extends Command<number, number> {
6
- constructor(key: string, increment: number, member: TData) {
7
- super(["zincrby", key, increment, member])
8
- }
9
- }
@@ -1,239 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { describe, it, expect, afterAll } from "@jest/globals"
4
- import { ZInterStoreCommand } from "./zinterstore"
5
- import { ZAddCommand } from "./zadd"
6
-
7
- const client = newHttpClient()
8
-
9
- const { newKey, cleanup } = keygen()
10
- afterAll(cleanup)
11
-
12
- describe("command format", () => {
13
- describe("without options", () => {
14
- it("builds the correct command", () => {
15
- expect(new ZInterStoreCommand("destination", 1, "key").command).toEqual([
16
- "zinterstore",
17
- "destination",
18
- "1",
19
- "key",
20
- ])
21
- })
22
- })
23
- describe("with multiple keys", () => {
24
- it("builds the correct command", () => {
25
- expect(new ZInterStoreCommand("destination", 2, ["key1", "key2"]).command).toEqual([
26
- "zinterstore",
27
- "destination",
28
- "2",
29
- "key1",
30
- "key2",
31
- ])
32
- })
33
- })
34
- describe("with single weight", () => {
35
- it("builds the correct command", () => {
36
- expect(new ZInterStoreCommand("destination", 1, "key", { weight: 4 }).command).toEqual([
37
- "zinterstore",
38
- "destination",
39
- "1",
40
- "key",
41
- "weights",
42
- "4",
43
- ])
44
- })
45
- })
46
- describe("with multiple weights", () => {
47
- it("builds the correct command", () => {
48
- expect(
49
- new ZInterStoreCommand("destination", 2, ["key1", "key2"], { weights: [2, 3] }).command,
50
- ).toEqual(["zinterstore", "destination", "2", "key1", "key2", "weights", "2", "3"])
51
- })
52
- describe("with aggregate", () => {
53
- describe("sum", () => {
54
- it("builds the correct command", () => {
55
- expect(
56
- new ZInterStoreCommand("destination", 1, "key", { aggregate: "sum" }).command,
57
- ).toEqual(["zinterstore", "destination", "1", "key", "aggregate", "sum"])
58
- })
59
- })
60
- describe("min", () => {
61
- it("builds the correct command", () => {
62
- expect(
63
- new ZInterStoreCommand("destination", 1, "key", { aggregate: "min" }).command,
64
- ).toEqual(["zinterstore", "destination", "1", "key", "aggregate", "min"])
65
- })
66
- })
67
- describe("max", () => {
68
- it("builds the correct command", () => {
69
- expect(
70
- new ZInterStoreCommand("destination", 1, "key", { aggregate: "max" }).command,
71
- ).toEqual(["zinterstore", "destination", "1", "key", "aggregate", "max"])
72
- })
73
- })
74
- })
75
- describe("complex", () => {
76
- it("builds the correct command", () => {
77
- expect(
78
- new ZInterStoreCommand("destination", 2, ["key1", "key2"], {
79
- weights: [4, 2],
80
- aggregate: "max",
81
- }).command,
82
- ).toEqual([
83
- "zinterstore",
84
- "destination",
85
- "2",
86
- "key1",
87
- "key2",
88
- "weights",
89
- "4",
90
- "2",
91
- "aggregate",
92
- "max",
93
- ])
94
- })
95
- })
96
- })
97
- })
98
-
99
- describe("without options", () => {
100
- it("returns the number of elements in the new set ", async () => {
101
- const destination = newKey()
102
- const key1 = newKey()
103
- const key2 = newKey()
104
- const score1 = 1
105
- const member1 = randomUUID()
106
- const score2 = 2
107
- const member2 = randomUUID()
108
-
109
- await new ZAddCommand(key1, { score: score1, member: member1 }).exec(client)
110
- await new ZAddCommand(
111
- key2,
112
- { score: score1, member: member1 },
113
- { score: score2, member: member2 },
114
- ).exec(client)
115
-
116
- const res = await new ZInterStoreCommand(destination, 2, [key1, key2]).exec(client)
117
- expect(res).toBe(1)
118
- })
119
- })
120
-
121
- describe("with weights", () => {
122
- describe("single weight", () => {
123
- it("returns the number of elements in the new set ", async () => {
124
- const destination = newKey()
125
- const key1 = newKey()
126
- const key2 = newKey()
127
- const score1 = 1
128
- const member1 = randomUUID()
129
- const score2 = 2
130
- const member2 = randomUUID()
131
-
132
- await new ZAddCommand(key1, { score: score1, member: member1 }).exec(client)
133
- await new ZAddCommand(
134
- key2,
135
- { score: score1, member: member1 },
136
- { score: score2, member: member2 },
137
- ).exec(client)
138
-
139
- const res = await new ZInterStoreCommand(destination, 2, [key1, key2], {
140
- weights: [2, 3],
141
- }).exec(client)
142
- expect(res).toBe(1)
143
- })
144
- })
145
- describe("multiple weight", () => {
146
- it("returns the number of elements in the new set ", async () => {
147
- const destination = newKey()
148
- const key1 = newKey()
149
- const key2 = newKey()
150
- const score1 = 1
151
- const member1 = randomUUID()
152
- const score2 = 2
153
- const member2 = randomUUID()
154
-
155
- await new ZAddCommand(key1, { score: score1, member: member1 }).exec(client)
156
- await new ZAddCommand(
157
- key2,
158
- { score: score1, member: member1 },
159
- { score: score2, member: member2 },
160
- ).exec(client)
161
-
162
- const res = await new ZInterStoreCommand(destination, 2, [key1, key2], {
163
- weights: [1, 2],
164
- }).exec(client)
165
- expect(res).toBe(1)
166
- })
167
- })
168
- })
169
- describe("aggregate", () => {
170
- describe("sum", () => {
171
- it("returns the number of elements in the new set ", async () => {
172
- const destination = newKey()
173
- const key1 = newKey()
174
- const key2 = newKey()
175
- const score1 = 1
176
- const member1 = randomUUID()
177
- const score2 = 2
178
- const member2 = randomUUID()
179
-
180
- await new ZAddCommand(key1, { score: score1, member: member1 }).exec(client)
181
- await new ZAddCommand(
182
- key2,
183
- { score: score1, member: member1 },
184
- { score: score2, member: member2 },
185
- ).exec(client)
186
-
187
- const res = await new ZInterStoreCommand(destination, 2, [key1, key2], {
188
- aggregate: "sum",
189
- }).exec(client)
190
- expect(res).toBe(1)
191
- })
192
- })
193
- describe("min", () => {
194
- it("returns the number of elements in the new set ", async () => {
195
- const destination = newKey()
196
- const key1 = newKey()
197
- const key2 = newKey()
198
- const score1 = 1
199
- const member1 = randomUUID()
200
- const score2 = 2
201
- const member2 = randomUUID()
202
-
203
- await new ZAddCommand(key1, { score: score1, member: member1 }).exec(client)
204
- await new ZAddCommand(
205
- key2,
206
- { score: score1, member: member1 },
207
- { score: score2, member: member2 },
208
- ).exec(client)
209
-
210
- const res = await new ZInterStoreCommand(destination, 2, [key1, key2], {
211
- aggregate: "min",
212
- }).exec(client)
213
- expect(res).toBe(1)
214
- })
215
- })
216
- describe("max", () => {
217
- it("returns the number of elements in the new set ", async () => {
218
- const destination = newKey()
219
- const key1 = newKey()
220
- const key2 = newKey()
221
- const score1 = 1
222
- const member1 = randomUUID()
223
- const score2 = 2
224
- const member2 = randomUUID()
225
-
226
- await new ZAddCommand(key1, { score: score1, member: member1 }).exec(client)
227
- await new ZAddCommand(
228
- key2,
229
- { score: score1, member: member1 },
230
- { score: score2, member: member2 },
231
- ).exec(client)
232
-
233
- const res = await new ZInterStoreCommand(destination, 2, [key1, key2], {
234
- aggregate: "max",
235
- }).exec(client)
236
- expect(res).toBe(1)
237
- })
238
- })
239
- })
@@ -1,55 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- export type ZInterStoreCommandOptions = {
4
- aggregate?: "sum" | "min" | "max"
5
- } & (
6
- | {
7
- weight: number
8
- weights?: never
9
- }
10
- | {
11
- weight?: never
12
- weights: number[]
13
- }
14
- | {
15
- weight?: never
16
- weights?: never
17
- }
18
- )
19
-
20
- /**
21
- * @see https://redis.io/commands/zInterstore
22
- */
23
- export class ZInterStoreCommand extends Command<number, number> {
24
- constructor(destination: string, numKeys: 1, key: string, opts?: ZInterStoreCommandOptions)
25
- constructor(
26
- destination: string,
27
- numKeys: number,
28
- keys: string[],
29
- opts?: ZInterStoreCommandOptions,
30
- )
31
- constructor(
32
- destination: string,
33
- numKeys: number,
34
- keyOrKeys: string | string[],
35
- opts?: ZInterStoreCommandOptions,
36
- ) {
37
- const command: unknown[] = ["zinterstore", destination, numKeys]
38
- if (Array.isArray(keyOrKeys)) {
39
- command.push(...keyOrKeys)
40
- } else {
41
- command.push(keyOrKeys)
42
- }
43
- if (opts) {
44
- if ("weights" in opts && opts.weights) {
45
- command.push("weights", ...opts.weights)
46
- } else if ("weight" in opts && typeof opts.weight === "number") {
47
- command.push("weights", opts.weight)
48
- }
49
- if ("aggregate" in opts) {
50
- command.push("aggregate", opts.aggregate)
51
- }
52
- }
53
- super(command)
54
- }
55
- }
@@ -1,22 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { it, expect, afterAll } from "@jest/globals"
3
- import { ZAddCommand } from "./zadd"
4
- import { ZLexCountCommand } from "./zlexcount"
5
- const client = newHttpClient()
6
-
7
- const { newKey, cleanup } = keygen()
8
- afterAll(cleanup)
9
-
10
- it("returns the number of elements in the specified score range", async () => {
11
- const key = newKey()
12
- await new ZAddCommand(
13
- key,
14
- { score: 0, member: "a" },
15
- { score: 0, member: "b" },
16
- { score: 0, member: "c" },
17
- { score: 0, member: "d" },
18
- { score: 0, member: "e" },
19
- ).exec(client)
20
- const res = await new ZLexCountCommand(key, "[b", "[f").exec(client)
21
- expect(res).toBe(4)
22
- })
@@ -1,9 +0,0 @@
1
- import { Command } from "../command"
2
- /**
3
- * @see https://redis.io/commands/zlexcount
4
- */
5
- export class ZLexCountCommand extends Command<number, number> {
6
- constructor(key: string, min: string, max: string) {
7
- super(["zlexcount", key, min, max])
8
- }
9
- }
@@ -1,45 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { describe, it, expect, afterAll } from "@jest/globals"
4
- import { ZAddCommand } from "./zadd"
5
- import { ZPopMaxCommand } from "./zpopmax"
6
- const client = newHttpClient()
7
-
8
- const { newKey, cleanup } = keygen()
9
- afterAll(cleanup)
10
-
11
- describe("without options", () => {
12
- it("returns the max", async () => {
13
- const key = newKey()
14
- const score1 = 1
15
- const member1 = randomUUID()
16
- const score2 = 2
17
- const member2 = randomUUID()
18
- await new ZAddCommand(
19
- key,
20
- { score: score1, member: member1 },
21
- { score: score2, member: member2 },
22
- ).exec(client)
23
- const res = await new ZPopMaxCommand(key).exec(client)
24
- expect(res).toHaveLength(2)
25
- expect(res![0]).toEqual(member2)
26
- expect(res![1]).toEqual(score2)
27
- })
28
- })
29
-
30
- describe("with count", () => {
31
- it("returns the n max members", async () => {
32
- const key = newKey()
33
- const score1 = 1
34
- const member1 = randomUUID()
35
- const score2 = 2
36
- const member2 = randomUUID()
37
- await new ZAddCommand(
38
- key,
39
- { score: score1, member: member1 },
40
- { score: score2, member: member2 },
41
- ).exec(client)
42
- const res = await new ZPopMaxCommand(key, 2).exec(client)
43
- expect(res).toEqual([member2, score2, member1, score1])
44
- })
45
- })
@@ -1,13 +0,0 @@
1
- import { Command } from "../command"
2
- /**
3
- * @see https://redis.io/commands/zpopmax
4
- */
5
- export class ZPopMaxCommand<TData> extends Command<TData[], string[]> {
6
- constructor(key: string, count?: number) {
7
- const command: unknown[] = ["zpopmax", key]
8
- if (typeof count === "number") {
9
- command.push(count)
10
- }
11
- super(command)
12
- }
13
- }
@@ -1,49 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { describe, it, expect, afterAll } from "@jest/globals"
4
- import { ZAddCommand } from "./zadd"
5
- import { ZPopMinCommand } from "./zpopmin"
6
- const client = newHttpClient()
7
-
8
- const { newKey, cleanup } = keygen()
9
- afterAll(cleanup)
10
-
11
- describe("without options", () => {
12
- it("returns the popped elements", async () => {
13
- const key = newKey()
14
- const score1 = 1
15
- const member1 = randomUUID()
16
- const score2 = 2
17
- const member2 = randomUUID()
18
- const score3 = 3
19
- const member3 = randomUUID()
20
- await new ZAddCommand(
21
- key,
22
- { score: score1, member: member1 },
23
- { score: score2, member: member2 },
24
- { score: score3, member: member3 },
25
- ).exec(client)
26
- const res = await new ZPopMinCommand(key).exec(client)
27
- expect(res).toEqual([member1, score1])
28
- })
29
- })
30
-
31
- describe("with count", () => {
32
- it("returns the popped elements", async () => {
33
- const key = newKey()
34
- const score1 = 1
35
- const member1 = randomUUID()
36
- const score2 = 2
37
- const member2 = randomUUID()
38
- const score3 = 3
39
- const member3 = randomUUID()
40
- await new ZAddCommand(
41
- key,
42
- { score: score1, member: member1 },
43
- { score: score2, member: member2 },
44
- { score: score3, member: member3 },
45
- ).exec(client)
46
- const res = await new ZPopMinCommand(key, 2).exec(client)
47
- expect(res).toEqual([member1, score1, member2, score2])
48
- })
49
- })
@@ -1,13 +0,0 @@
1
- import { Command } from "../command"
2
- /**
3
- * @see https://redis.io/commands/zpopmin
4
- */
5
- export class ZPopMinCommand<TData> extends Command<TData[], string[]> {
6
- constructor(key: string, count?: number) {
7
- const command: unknown[] = ["zpopmin", key]
8
- if (typeof count === "number") {
9
- command.push(count)
10
- }
11
- super(command)
12
- }
13
- }
@@ -1,52 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { describe, it, expect, afterAll } from "@jest/globals"
4
- import { ZAddCommand } from "./zadd"
5
- import { ZRangeCommand } from "./zrange"
6
- const client = newHttpClient()
7
-
8
- const { newKey, cleanup } = keygen()
9
- afterAll(cleanup)
10
-
11
- describe("without options", () => {
12
- it("returns the set", async () => {
13
- const key = newKey()
14
- const score1 = 2
15
- const member1 = randomUUID()
16
-
17
- const score2 = 5
18
- const member2 = randomUUID()
19
-
20
- await new ZAddCommand(
21
- key,
22
- { score: score1, member: member1 },
23
- { score: score2, member: member2 },
24
- ).exec(client)
25
-
26
- const res = await new ZRangeCommand(key, 1, 3).exec(client)
27
- expect(res).toHaveLength(1)
28
- expect(res![0]).toEqual(member2)
29
- })
30
- })
31
-
32
- describe("withscores", () => {
33
- it("returns the set", async () => {
34
- const key = newKey()
35
- const score1 = 2
36
- const member1 = randomUUID()
37
-
38
- const score2 = 5
39
- const member2 = randomUUID()
40
-
41
- await new ZAddCommand(
42
- key,
43
- { score: score1, member: member1 },
44
- { score: score2, member: member2 },
45
- ).exec(client)
46
-
47
- const res = await new ZRangeCommand(key, 1, 3, { withScores: true }).exec(client)
48
- expect(res).toHaveLength(2)
49
- expect(res![0]).toEqual(member2)
50
- expect(res![1]).toEqual(score2)
51
- })
52
- })
@@ -1,22 +0,0 @@
1
- import { Command } from "../command"
2
- export type ZRangeCommandOptions = {
3
- withScores?: boolean
4
- }
5
-
6
- /**
7
- * @see https://redis.io/commands/zrange
8
- */
9
- export class ZRangeCommand<TData extends unknown[]> extends Command<TData, string[]> {
10
- constructor(
11
- key: string,
12
- min: number | `(${number}`,
13
- max: number | `(${number}`,
14
- opts?: ZRangeCommandOptions,
15
- ) {
16
- const command: unknown[] = ["zrange", key, min, max]
17
- if (opts?.withScores) {
18
- command.push("withscores")
19
- }
20
- super(command)
21
- }
22
- }
@@ -1,22 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { it, expect, afterAll } from "@jest/globals"
3
- import { ZAddCommand } from "./zadd"
4
- import { ZRankCommand } from "./zrank"
5
- const client = newHttpClient()
6
-
7
- const { newKey, cleanup } = keygen()
8
- afterAll(cleanup)
9
-
10
- it("returns the rank", async () => {
11
- const key = newKey()
12
-
13
- await new ZAddCommand(
14
- key,
15
- { score: 1, member: "member1" },
16
- { score: 2, member: "member2" },
17
- { score: 3, member: "member3" },
18
- ).exec(client)
19
-
20
- const res = await new ZRankCommand(key, "member2").exec(client)
21
- expect(res).toBe(1)
22
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
- /**
3
- * @see https://redis.io/commands/zrank
4
- */
5
-
6
- export class ZRankCommand<TData> extends Command<number | null, number | null> {
7
- constructor(key: string, member: TData) {
8
- super(["zrank", key, member])
9
- }
10
- }
@@ -1,20 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { it, expect, afterAll } from "@jest/globals"
4
- import { ZAddCommand } from "./zadd"
5
- import { ZRemCommand } from "./zrem"
6
- const client = newHttpClient()
7
-
8
- const { newKey, cleanup } = keygen()
9
- afterAll(cleanup)
10
-
11
- it("returns the number of removed members", async () => {
12
- const key = newKey()
13
- const member1 = randomUUID()
14
- const member2 = randomUUID()
15
- await new ZAddCommand(key, { score: 1, member: member1 }, { score: 2, member: member2 }).exec(
16
- client,
17
- )
18
- const res = await new ZRemCommand(key, member1, member2).exec(client)
19
- expect(res).toBe(2)
20
- })
@@ -1,10 +0,0 @@
1
- import { NonEmptyArray } from "../types"
2
- import { Command } from "../command"
3
- /**
4
- * @see https://redis.io/commands/zrem
5
- */
6
- export class ZRemCommand<TData = string> extends Command<number, number> {
7
- constructor(key: string, ...members: NonEmptyArray<TData>) {
8
- super(["zrem", key, ...members])
9
- }
10
- }
@@ -1,26 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { it, expect, afterAll } from "@jest/globals"
3
- import { ZAddCommand } from "./zadd"
4
- import { ZRemRangeByLexCommand } from "./zremrangebylex"
5
- const client = newHttpClient()
6
-
7
- const { newKey, cleanup } = keygen()
8
- afterAll(cleanup)
9
-
10
- it("returns the number of elements removed", async () => {
11
- const key = newKey()
12
- await new ZAddCommand(
13
- key,
14
- {
15
- score: 0,
16
- member: "aaaa",
17
- },
18
- { score: 0, member: "b" },
19
- { score: 0, member: "c" },
20
- { score: 0, member: "d" },
21
- { score: 0, member: "e" },
22
- ).exec(client)
23
-
24
- const res = await new ZRemRangeByLexCommand(key, "[b", "[e").exec(client)
25
- expect(res).toBe(4)
26
- })
@@ -1,9 +0,0 @@
1
- import { Command } from "../command"
2
- /**
3
- * @see https://redis.io/commands/zremrangebylex
4
- */
5
- export class ZRemRangeByLexCommand extends Command<number, number> {
6
- constructor(key: string, min: string, max: string) {
7
- super(["zremrangebylex", key, min, max])
8
- }
9
- }