@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,26 +0,0 @@
1
- import { BitPosCommand } from "./bitpos"
2
- import { keygen, newHttpClient } from "../test-utils"
3
- import { describe, it, expect, afterAll } from "@jest/globals"
4
- import { SetCommand } from "./set"
5
- const client = newHttpClient()
6
-
7
- const { newKey, cleanup } = keygen()
8
- afterAll(cleanup)
9
-
10
- describe("when key is not set", () => {
11
- it("returns 0", async () => {
12
- const key = newKey()
13
- const res = await new BitPosCommand(key, 1, 1).exec(client)
14
- expect(res).toEqual(-1)
15
- })
16
- })
17
-
18
- describe("when key is set", () => {
19
- it("returns position of first set bit", async () => {
20
- const key = newKey()
21
- const value = "Hello World"
22
- await new SetCommand(key, value).exec(client)
23
- const res = await new BitPosCommand(key, 2, 3).exec(client)
24
- expect(res).toEqual(24)
25
- })
26
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/bitpos
5
- */
6
- export class BitPosCommand extends Command<number, number> {
7
- constructor(key: string, start: number, end: number) {
8
- super(["bitpos", key, start, end])
9
- }
10
- }
@@ -1,17 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { it, expect, afterAll } from "@jest/globals"
4
- import { SetCommand } from "./set"
5
- import { DBSizeCommand } from "./dbsize"
6
- const client = newHttpClient()
7
-
8
- const { newKey, cleanup } = keygen()
9
- afterAll(cleanup)
10
-
11
- it("returns the db size", async () => {
12
- const key = newKey()
13
- const value = randomUUID()
14
- await new SetCommand(key, value).exec(client)
15
- const res = await new DBSizeCommand().exec(client)
16
- expect(res).toBeGreaterThan(0)
17
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/dbsize
5
- */
6
- export class DBSizeCommand extends Command<number, number> {
7
- constructor() {
8
- super(["dbsize"])
9
- }
10
- }
@@ -1,22 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { it, expect, afterAll } from "@jest/globals"
3
- import { SetCommand } from "./set"
4
- import { DecrCommand } from "./decr"
5
- const client = newHttpClient()
6
-
7
- const { newKey, cleanup } = keygen()
8
- afterAll(cleanup)
9
- it("decrements a non-existing value", async () => {
10
- const key = newKey()
11
- const res = await new DecrCommand(key).exec(client)
12
-
13
- expect(res).toEqual(-1)
14
- })
15
-
16
- it("decrements and existing value", async () => {
17
- const key = newKey()
18
- await new SetCommand(key, 4).exec(client)
19
- const res = await new DecrCommand(key).exec(client)
20
-
21
- expect(res).toEqual(3)
22
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/decr
5
- */
6
- export class DecrCommand extends Command<number, number> {
7
- constructor(key: string) {
8
- super(["decr", key])
9
- }
10
- }
@@ -1,23 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { SetCommand } from "./set"
3
- import { DecrByCommand } from "./decrby"
4
- import { it, expect, afterAll } from "@jest/globals"
5
- const client = newHttpClient()
6
-
7
- const { newKey, cleanup } = keygen()
8
- afterAll(cleanup)
9
-
10
- it("decrements a non-existing value", async () => {
11
- const key = newKey()
12
- const res = await new DecrByCommand(key, 2).exec(client)
13
-
14
- expect(res).toEqual(-2)
15
- })
16
-
17
- it("decrements and existing value", async () => {
18
- const key = newKey()
19
- await new SetCommand(key, 5).exec(client)
20
- const res = await new DecrByCommand(key, 2).exec(client)
21
-
22
- expect(res).toEqual(3)
23
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/decrby
5
- */
6
- export class DecrByCommand extends Command<number, number> {
7
- constructor(key: string, decrement: number) {
8
- super(["decrby", key, decrement])
9
- }
10
- }
@@ -1,38 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
-
3
- import { DelCommand } from "./del"
4
- import { SetCommand } from "./set"
5
- import { describe, it, expect, afterAll } from "@jest/globals"
6
-
7
- const client = newHttpClient()
8
-
9
- const { newKey, cleanup } = keygen()
10
- afterAll(cleanup)
11
-
12
- describe("when key does not exist", () => {
13
- it("does nothing", async () => {
14
- const key = newKey()
15
-
16
- const res = await new DelCommand(key).exec(client)
17
- expect(res).toEqual(0)
18
- })
19
- })
20
- describe("when key does exist", () => {
21
- it("deletes the key", async () => {
22
- const key = newKey()
23
- await new SetCommand(key, "value").exec(client)
24
- const res = await new DelCommand(key).exec(client)
25
- expect(res).toEqual(1)
26
- })
27
- })
28
- describe("with multiple keys", () => {
29
- describe("when one does not exist", () => {
30
- it("deletes all keys", async () => {
31
- const key1 = newKey()
32
- const key2 = newKey()
33
- await new SetCommand(key1, "value").exec(client)
34
- const res = await new DelCommand(key1, key2).exec(client)
35
- expect(res).toEqual(1)
36
- })
37
- })
38
- })
@@ -1,11 +0,0 @@
1
- import { NonEmptyArray } from "../types"
2
- import { Command } from "../command"
3
-
4
- /**
5
- * @see https://redis.io/commands/del
6
- */
7
- export class DelCommand extends Command<number, number> {
8
- constructor(...keys: NonEmptyArray<string>) {
9
- super(["del", ...keys])
10
- }
11
- }
@@ -1,11 +0,0 @@
1
- import { newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { it, expect } from "@jest/globals"
4
- import { EchoCommand } from "./echo"
5
- const client = newHttpClient()
6
-
7
- it("returns the message", async () => {
8
- const message = randomUUID()
9
- const res = await new EchoCommand(message).exec(client)
10
- expect(res).toBe(message)
11
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/echo
5
- */
6
- export class EchoCommand extends Command<string, string> {
7
- constructor(message: string) {
8
- super(["echo", message])
9
- }
10
- }
@@ -1,37 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { ExistsCommand } from "./exists"
3
- import { describe, it, expect, afterAll } from "@jest/globals"
4
- import { SetCommand } from "./set"
5
-
6
- const client = newHttpClient()
7
-
8
- const { newKey, cleanup } = keygen()
9
- afterAll(cleanup)
10
-
11
- describe("when the key does not eist", () => {
12
- it("it returns 1", async () => {
13
- const key = newKey()
14
-
15
- const res = await new ExistsCommand(key).exec(client)
16
- expect(res).toEqual(0)
17
- })
18
- })
19
- describe("when the key exists", () => {
20
- it("it returns 1", async () => {
21
- const key = newKey()
22
- await new SetCommand(key, "value").exec(client)
23
- const res = await new ExistsCommand(key).exec(client)
24
- expect(res).toEqual(1)
25
- })
26
- })
27
- describe("with multiple keys", () => {
28
- it("it returns the number of found keys", async () => {
29
- const key1 = newKey()
30
- const key2 = newKey()
31
- const key3 = newKey()
32
- await new SetCommand(key1, "value").exec(client)
33
- await new SetCommand(key2, "value").exec(client)
34
- const res = await new ExistsCommand(key1, key2, key3).exec(client)
35
- expect(res).toEqual(2)
36
- })
37
- })
@@ -1,11 +0,0 @@
1
- import { NonEmptyArray } from "../types"
2
- import { Command } from "../command"
3
-
4
- /**
5
- * @see https://redis.io/commands/exists
6
- */
7
- export class ExistsCommand extends Command<0 | 1, "0" | "1"> {
8
- constructor(...keys: NonEmptyArray<string>) {
9
- super(["exists", ...keys])
10
- }
11
- }
@@ -1,22 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { it, expect, afterAll } from "@jest/globals"
4
- import { SetCommand } from "./set"
5
- import { ExpireCommand } from "./expire"
6
- import { GetCommand } from "./get"
7
- const client = newHttpClient()
8
-
9
- const { newKey, cleanup } = keygen()
10
- afterAll(cleanup)
11
-
12
- it("expires a key correctly", async () => {
13
- const key = newKey()
14
- const value = randomUUID()
15
- await new SetCommand(key, value).exec(client)
16
- const res = await new ExpireCommand(key, 1).exec(client)
17
- expect(res).toEqual(1)
18
- await new Promise((res) => setTimeout(res, 2000))
19
- const res2 = await new GetCommand(key).exec(client)
20
-
21
- expect(res2).toBeNull()
22
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/expire
5
- */
6
- export class ExpireCommand extends Command<0 | 1, "0" | "1"> {
7
- constructor(key: string, seconds: number) {
8
- super(["expire", key, seconds])
9
- }
10
- }
@@ -1,24 +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 { SetCommand } from "./set"
5
- import { GetCommand } from "./get"
6
- import { ExpireAtCommand } from "./expireat"
7
- const client = newHttpClient()
8
-
9
- const { newKey, cleanup } = keygen()
10
- afterAll(cleanup)
11
-
12
- describe("without options", () => {
13
- it("expires the key", async () => {
14
- const key = newKey()
15
- const value = randomUUID()
16
- await new SetCommand(key, value).exec(client)
17
-
18
- const res = await new ExpireAtCommand(key, 1).exec(client)
19
- expect(res).toEqual(1)
20
- await new Promise((res) => setTimeout(res, 2000))
21
- const res2 = await new GetCommand(key).exec(client)
22
- expect(res2).toBeNull
23
- })
24
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/expireat
5
- */
6
- export class ExpireAtCommand extends Command<0 | 1, "0" | "1"> {
7
- constructor(key: string, unix: number) {
8
- super(["expireat", key, unix])
9
- }
10
- }
@@ -1,17 +0,0 @@
1
- import { newHttpClient } from "../test-utils"
2
- import { describe, it, expect } from "@jest/globals"
3
- import { FlushAllCommand } from "./flushall"
4
- const client = newHttpClient()
5
-
6
- describe("without options", () => {
7
- it("flushes the db", async () => {
8
- const res = await new FlushAllCommand().exec(client)
9
- expect(res).toBe("OK")
10
- })
11
- })
12
- describe("async", () => {
13
- it("flushes the db", async () => {
14
- const res = await new FlushAllCommand({ async: true }).exec(client)
15
- expect(res).toBe("OK")
16
- })
17
- })
@@ -1,13 +0,0 @@
1
- import { Command } from "../command"
2
- /**
3
- * @see https://redis.io/commands/flushall
4
- */
5
- export class FlushAllCommand extends Command<"OK", "OK"> {
6
- constructor(opts?: { async?: boolean }) {
7
- const command = ["flushall"]
8
- if (opts?.async) {
9
- command.push("async")
10
- }
11
- super(command)
12
- }
13
- }
@@ -1,17 +0,0 @@
1
- import { newHttpClient } from "../test-utils"
2
- import { describe, it, expect } from "@jest/globals"
3
- import { FlushDBCommand } from "./flushdb"
4
- const client = newHttpClient()
5
-
6
- describe("without options", () => {
7
- it("flushes the db", async () => {
8
- const res = await new FlushDBCommand().exec(client)
9
- expect(res).toBe("OK")
10
- })
11
- })
12
- describe("async", () => {
13
- it("flushes the db", async () => {
14
- const res = await new FlushDBCommand({ async: true }).exec(client)
15
- expect(res).toBe("OK")
16
- })
17
- })
@@ -1,13 +0,0 @@
1
- import { Command } from "../command"
2
- /**
3
- * @see https://redis.io/commands/flushdb
4
- */
5
- export class FlushDBCommand extends Command<"OK", "OK"> {
6
- constructor(opts?: { async?: boolean }) {
7
- const command = ["flushdb"]
8
- if (opts?.async) {
9
- command.push("async")
10
- }
11
- super(command)
12
- }
13
- }
@@ -1,34 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { it, expect, afterAll } from "@jest/globals"
4
- import { SetCommand } from "./set"
5
- import { GetCommand } from "./get"
6
- const client = newHttpClient()
7
-
8
- const { newKey, cleanup } = keygen()
9
- afterAll(cleanup)
10
-
11
- it("gets an exiting value", async () => {
12
- const key = newKey()
13
- const value = randomUUID()
14
- await new SetCommand(key, value).exec(client)
15
- const res = await new GetCommand(key).exec(client)
16
-
17
- expect(res).toEqual(value)
18
- })
19
-
20
- it("gets a non-existing value", async () => {
21
- const key = newKey()
22
- const res = await new GetCommand(key).exec(client)
23
-
24
- expect(res).toBeNull()
25
- })
26
-
27
- it("gets an object", async () => {
28
- const key = newKey()
29
- const value = { v: randomUUID() }
30
- await new SetCommand(key, value).exec(client)
31
- const res = await new GetCommand(key).exec(client)
32
-
33
- expect(res).toEqual(value)
34
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/get
5
- */
6
- export class GetCommand<TData = string> extends Command<TData | null, unknown | null> {
7
- constructor(key: string) {
8
- super(["get", key])
9
- }
10
- }
@@ -1,16 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { it, expect, afterAll } from "@jest/globals"
3
- import { SetBitCommand } from "./setbit"
4
- import { GetBitCommand } from "./getbit"
5
- const client = newHttpClient()
6
-
7
- const { newKey, cleanup } = keygen()
8
- afterAll(cleanup)
9
-
10
- it("returns the bit at offset", async () => {
11
- const key = newKey()
12
-
13
- await new SetBitCommand(key, 0, 1).exec(client)
14
- const res = await new GetBitCommand(key, 0).exec(client)
15
- expect(res).toBe(1)
16
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/getbit
5
- */
6
- export class GetBitCommand extends Command<0 | 1, "0" | "1"> {
7
- constructor(key: string, offset: number) {
8
- super(["getbit", key, offset])
9
- }
10
- }
@@ -1,25 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { it, expect, afterAll } from "@jest/globals"
3
- import { GetRangeCommand } from "./getrange"
4
- import { SetCommand } from "./set"
5
- const client = newHttpClient()
6
-
7
- const { newKey, cleanup } = keygen()
8
- afterAll(cleanup)
9
-
10
- it("gets an exiting value", async () => {
11
- const key = newKey()
12
- const value = "Hello World"
13
- await new SetCommand(key, value).exec(client)
14
- const res = await new GetRangeCommand(key, 2, 4).exec(client)
15
-
16
- expect(res).toBeDefined()
17
- expect(res!).toEqual(value.slice(2, 5))
18
- })
19
-
20
- it("gets a non-existing value", async () => {
21
- const key = newKey()
22
- const res = await new GetRangeCommand(key, 10, 24).exec(client)
23
-
24
- expect(res).toEqual("")
25
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/getrange
5
- */
6
- export class GetRangeCommand extends Command<string, string> {
7
- constructor(key: string, start: number, end: number) {
8
- super(["getrange", key, start, end])
9
- }
10
- }
@@ -1,33 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { it, expect, afterAll } from "@jest/globals"
4
- import { GetSetCommand } from "./getset"
5
- import { SetCommand } from "./set"
6
- import { GetCommand } from "./get"
7
- const client = newHttpClient()
8
-
9
- const { newKey, cleanup } = keygen()
10
- afterAll(cleanup)
11
-
12
- it("overwrites the original value", async () => {
13
- const key = newKey()
14
- const value = randomUUID()
15
- const newValue = randomUUID()
16
- await new SetCommand(key, value).exec(client)
17
- const res = await new GetSetCommand(key, newValue).exec(client)
18
-
19
- expect(res).toEqual(value)
20
- const res2 = await new GetCommand(key).exec(client)
21
-
22
- expect(res2).toEqual(newValue)
23
- })
24
- it("sets a new value if empty", async () => {
25
- const key = newKey()
26
- const newValue = randomUUID()
27
- const res = await new GetSetCommand(key, newValue).exec(client)
28
-
29
- expect(res).toBeNull()
30
- const res2 = await new GetCommand(key).exec(client)
31
-
32
- expect(res2).toEqual(newValue)
33
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/getset
5
- */
6
- export class GetSetCommand<TData = string> extends Command<TData | null, unknown | null> {
7
- constructor(key: string, value: TData) {
8
- super(["getset", key, value])
9
- }
10
- }
@@ -1,30 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { it, expect, afterAll } from "@jest/globals"
4
- import { HDelCommand } from "./hdel"
5
- import { HSetCommand } from "./hset"
6
- import { HGetCommand } from "./hget"
7
- const client = newHttpClient()
8
-
9
- const { newKey, cleanup } = keygen()
10
- afterAll(cleanup)
11
-
12
- it("deletes a hash that does not exist", async () => {
13
- const key = newKey()
14
- const field = randomUUID()
15
- const res = await new HDelCommand(key, field).exec(client)
16
-
17
- expect(res).toEqual(0)
18
- })
19
-
20
- it("deletes a field that exists", async () => {
21
- const key = newKey()
22
- const field = randomUUID()
23
- await new HSetCommand(key, field, randomUUID()).exec(client)
24
- const res = await new HDelCommand(key, field).exec(client)
25
-
26
- expect(res).toEqual(1)
27
- const res2 = await new HGetCommand(key, field).exec(client)
28
-
29
- expect(res2).toEqual(null)
30
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/hdel
5
- */
6
- export class HDelCommand extends Command<0 | 1, "0" | "1"> {
7
- constructor(key: string, field: string) {
8
- super(["hdel", key, field])
9
- }
10
- }
@@ -1,31 +0,0 @@
1
- import { keygen, newHttpClient } from "../test-utils"
2
- import { randomUUID } from "crypto"
3
- import { it, expect, afterAll } from "@jest/globals"
4
- import { HSetCommand } from "./hset"
5
- import { HExistsCommand } from "./hexists"
6
-
7
- const client = newHttpClient()
8
-
9
- const { newKey, cleanup } = keygen()
10
- afterAll(cleanup)
11
-
12
- it("returns 1 for an existing field", async () => {
13
- const key = newKey()
14
- const field = randomUUID()
15
- await new HSetCommand(key, field, randomUUID()).exec(client)
16
- const res = await new HExistsCommand(key, field).exec(client)
17
- expect(res).toEqual(1)
18
- })
19
- it("returns 0 if field does not exist", async () => {
20
- const key = newKey()
21
- await new HSetCommand(key, randomUUID(), randomUUID()).exec(client)
22
-
23
- const res = await new HExistsCommand(key, "not-existing-field").exec(client)
24
- expect(res).toEqual(0)
25
- })
26
- it("returns 0 if hash does not exist", async () => {
27
- const key = newKey()
28
- const field = randomUUID()
29
- const res = await new HExistsCommand(key, field).exec(client)
30
- expect(res).toEqual(0)
31
- })
@@ -1,10 +0,0 @@
1
- import { Command } from "../command"
2
-
3
- /**
4
- * @see https://redis.io/commands/hexists
5
- */
6
- export class HExistsCommand extends Command<number, number> {
7
- constructor(key: string, field: string) {
8
- super(["hexists", key, field])
9
- }
10
- }