@upstash/redis 0.2.1 → 1.0.0-alpha.2

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 (280) hide show
  1. package/.eslintrc.js +49 -0
  2. package/.prettierrc.js +7 -0
  3. package/dist/chunk-7YUZYRJS.mjs +29 -0
  4. package/dist/chunk-FJSI5EBJ.mjs +38 -0
  5. package/dist/chunk-U7OXAQMQ.mjs +37 -0
  6. package/dist/chunk-Y5TC4HX2.mjs +798 -0
  7. package/dist/chunk-ZIB6XPPC.mjs +1061 -0
  8. package/dist/cloudflare.d.ts +38 -0
  9. package/dist/cloudflare.js +1738 -0
  10. package/dist/cloudflare.mjs +35 -0
  11. package/dist/commands.d.ts +206 -0
  12. package/dist/commands.js +1201 -0
  13. package/dist/commands.mjs +219 -0
  14. package/dist/fastly.d.ts +44 -0
  15. package/dist/fastly.js +1728 -0
  16. package/dist/fastly.mjs +25 -0
  17. package/dist/http.d.ts +29 -0
  18. package/dist/http.js +84 -0
  19. package/dist/http.mjs +7 -0
  20. package/dist/index.d.ts +13 -0
  21. package/dist/index.js +1744 -0
  22. package/dist/index.mjs +13 -0
  23. package/dist/nodejs.d.ts +47 -0
  24. package/dist/nodejs.js +1742 -0
  25. package/dist/nodejs.mjs +10 -0
  26. package/dist/package.json +1 -0
  27. package/dist/redis-dd052782.d.ts +962 -0
  28. package/dist/zunionstore-dffa797d.d.ts +670 -0
  29. package/jest.config.js +194 -4
  30. package/package.json +1 -75
  31. package/pkg/cloudflare.ts +77 -0
  32. package/pkg/command.ts +40 -0
  33. package/pkg/commands/append.test.ts +28 -0
  34. package/pkg/commands/append.ts +10 -0
  35. package/pkg/commands/bitcount.test.ts +36 -0
  36. package/pkg/commands/bitcount.ts +19 -0
  37. package/pkg/commands/bitop.test.ts +44 -0
  38. package/pkg/commands/bitop.ts +22 -0
  39. package/pkg/commands/bitpos.test.ts +26 -0
  40. package/pkg/commands/bitpos.ts +10 -0
  41. package/pkg/commands/dbsize.test.ts +17 -0
  42. package/pkg/commands/dbsize.ts +10 -0
  43. package/pkg/commands/decr.test.ts +22 -0
  44. package/pkg/commands/decr.ts +10 -0
  45. package/pkg/commands/decrby.test.ts +23 -0
  46. package/pkg/commands/decrby.ts +10 -0
  47. package/pkg/commands/del.test.ts +38 -0
  48. package/pkg/commands/del.ts +11 -0
  49. package/pkg/commands/echo.test.ts +11 -0
  50. package/pkg/commands/echo.ts +10 -0
  51. package/pkg/commands/exists.test.ts +37 -0
  52. package/pkg/commands/exists.ts +11 -0
  53. package/pkg/commands/expire.test.ts +22 -0
  54. package/pkg/commands/expire.ts +10 -0
  55. package/pkg/commands/expireat.test.ts +24 -0
  56. package/pkg/commands/expireat.ts +10 -0
  57. package/pkg/commands/flushall.test.ts +17 -0
  58. package/pkg/commands/flushall.ts +13 -0
  59. package/pkg/commands/flushdb.test.ts +17 -0
  60. package/pkg/commands/flushdb.ts +13 -0
  61. package/pkg/commands/get.test.ts +34 -0
  62. package/pkg/commands/get.ts +10 -0
  63. package/pkg/commands/getbit.test.ts +16 -0
  64. package/pkg/commands/getbit.ts +10 -0
  65. package/pkg/commands/getrange.test.ts +25 -0
  66. package/pkg/commands/getrange.ts +10 -0
  67. package/pkg/commands/getset.test.ts +33 -0
  68. package/pkg/commands/getset.ts +10 -0
  69. package/pkg/commands/hdel.test.ts +30 -0
  70. package/pkg/commands/hdel.ts +10 -0
  71. package/pkg/commands/hexists.test.ts +31 -0
  72. package/pkg/commands/hexists.ts +10 -0
  73. package/pkg/commands/hget.test.ts +47 -0
  74. package/pkg/commands/hget.ts +10 -0
  75. package/pkg/commands/hgetall.test.ts +32 -0
  76. package/pkg/commands/hgetall.ts +35 -0
  77. package/pkg/commands/hincrby.test.ts +27 -0
  78. package/pkg/commands/hincrby.ts +10 -0
  79. package/pkg/commands/hincrbyfloat.test.ts +25 -0
  80. package/pkg/commands/hincrbyfloat.ts +10 -0
  81. package/pkg/commands/hkeys.test.ts +22 -0
  82. package/pkg/commands/hkeys.ts +10 -0
  83. package/pkg/commands/hlen.test.ts +24 -0
  84. package/pkg/commands/hlen.ts +10 -0
  85. package/pkg/commands/hmget.test.ts +48 -0
  86. package/pkg/commands/hmget.ts +41 -0
  87. package/pkg/commands/hmset.test.ts +24 -0
  88. package/pkg/commands/hmset.ts +10 -0
  89. package/pkg/commands/hscan.test.ts +46 -0
  90. package/pkg/commands/hscan.ts +22 -0
  91. package/pkg/commands/hset.test.ts +21 -0
  92. package/pkg/commands/hset.ts +10 -0
  93. package/pkg/commands/hsetnx.test.ts +37 -0
  94. package/pkg/commands/hsetnx.ts +10 -0
  95. package/pkg/commands/hstrlen.test.ts +24 -0
  96. package/pkg/commands/hstrlen.ts +10 -0
  97. package/pkg/commands/hvals.test.ts +23 -0
  98. package/pkg/commands/hvals.ts +10 -0
  99. package/pkg/commands/incr.test.ts +23 -0
  100. package/pkg/commands/incr.ts +10 -0
  101. package/pkg/commands/incrby.test.ts +23 -0
  102. package/pkg/commands/incrby.ts +10 -0
  103. package/pkg/commands/incrbyfloat.test.ts +24 -0
  104. package/pkg/commands/incrbyfloat.ts +10 -0
  105. package/pkg/commands/index.ts +107 -0
  106. package/pkg/commands/keys.test.ts +17 -0
  107. package/pkg/commands/keys.ts +10 -0
  108. package/pkg/commands/lindex.test.ts +33 -0
  109. package/pkg/commands/lindex.ts +7 -0
  110. package/pkg/commands/linsert.test.ts +19 -0
  111. package/pkg/commands/linsert.ts +6 -0
  112. package/pkg/commands/llen.test.ts +26 -0
  113. package/pkg/commands/llen.ts +10 -0
  114. package/pkg/commands/lpop.test.ts +27 -0
  115. package/pkg/commands/lpop.ts +10 -0
  116. package/pkg/commands/lpush.test.ts +17 -0
  117. package/pkg/commands/lpush.ts +11 -0
  118. package/pkg/commands/lpushx.test.ts +29 -0
  119. package/pkg/commands/lpushx.ts +11 -0
  120. package/pkg/commands/lrange.test.ts +22 -0
  121. package/pkg/commands/lrange.ts +7 -0
  122. package/pkg/commands/lrem.test.ts +19 -0
  123. package/pkg/commands/lrem.ts +6 -0
  124. package/pkg/commands/lset.test.ts +40 -0
  125. package/pkg/commands/lset.ts +7 -0
  126. package/pkg/commands/ltrim.test.ts +29 -0
  127. package/pkg/commands/ltrim.ts +7 -0
  128. package/pkg/commands/mget.test.ts +44 -0
  129. package/pkg/commands/mget.ts +9 -0
  130. package/pkg/commands/mset.test.ts +24 -0
  131. package/pkg/commands/mset.ts +10 -0
  132. package/pkg/commands/msetnx.test.ts +46 -0
  133. package/pkg/commands/msetnx.ts +10 -0
  134. package/pkg/commands/persist.test.ts +22 -0
  135. package/pkg/commands/persist.ts +10 -0
  136. package/pkg/commands/pexpire.test.ts +24 -0
  137. package/pkg/commands/pexpire.ts +10 -0
  138. package/pkg/commands/pexpireat.test.ts +24 -0
  139. package/pkg/commands/pexpireat.ts +10 -0
  140. package/pkg/commands/ping.test.ts +19 -0
  141. package/pkg/commands/ping.ts +13 -0
  142. package/pkg/commands/psetex.test.ts +23 -0
  143. package/pkg/commands/psetex.ts +10 -0
  144. package/pkg/commands/pttl.test.ts +17 -0
  145. package/pkg/commands/pttl.ts +10 -0
  146. package/pkg/commands/randomkey.test.ts +17 -0
  147. package/pkg/commands/randomkey.ts +10 -0
  148. package/pkg/commands/rename.test.ts +18 -0
  149. package/pkg/commands/rename.ts +10 -0
  150. package/pkg/commands/renamenx.test.ts +32 -0
  151. package/pkg/commands/renamenx.ts +10 -0
  152. package/pkg/commands/rpop.test.ts +27 -0
  153. package/pkg/commands/rpop.ts +10 -0
  154. package/pkg/commands/rpush.test.ts +17 -0
  155. package/pkg/commands/rpush.ts +11 -0
  156. package/pkg/commands/rpushx.test.ts +29 -0
  157. package/pkg/commands/rpushx.ts +11 -0
  158. package/pkg/commands/sadd.test.ts +16 -0
  159. package/pkg/commands/sadd.ts +11 -0
  160. package/pkg/commands/scan.test.ts +50 -0
  161. package/pkg/commands/scan.ts +21 -0
  162. package/pkg/commands/scard.test.ts +15 -0
  163. package/pkg/commands/scard.ts +9 -0
  164. package/pkg/commands/sdiff.test.ts +20 -0
  165. package/pkg/commands/sdiff.ts +9 -0
  166. package/pkg/commands/sdiffstore.test.ts +21 -0
  167. package/pkg/commands/sdiffstore.ts +10 -0
  168. package/pkg/commands/set.test.ts +112 -0
  169. package/pkg/commands/set.ts +53 -0
  170. package/pkg/commands/setbit.test.ts +16 -0
  171. package/pkg/commands/setbit.ts +10 -0
  172. package/pkg/commands/setex.test.ts +22 -0
  173. package/pkg/commands/setex.ts +10 -0
  174. package/pkg/commands/setnx.test.ts +27 -0
  175. package/pkg/commands/setnx.ts +10 -0
  176. package/pkg/commands/setrange.test.ts +25 -0
  177. package/pkg/commands/setrange.ts +10 -0
  178. package/pkg/commands/sinter.test.ts +36 -0
  179. package/pkg/commands/sinter.ts +9 -0
  180. package/pkg/commands/sinterstore.test.ts +21 -0
  181. package/pkg/commands/sinterstore.ts +9 -0
  182. package/pkg/commands/sismember.test.ts +30 -0
  183. package/pkg/commands/sismember.ts +9 -0
  184. package/pkg/commands/smembers.test.ts +22 -0
  185. package/pkg/commands/smembers.ts +10 -0
  186. package/pkg/commands/smove.test.ts +18 -0
  187. package/pkg/commands/smove.ts +9 -0
  188. package/pkg/commands/spop.test.ts +35 -0
  189. package/pkg/commands/spop.ts +13 -0
  190. package/pkg/commands/srandmember.test.ts +32 -0
  191. package/pkg/commands/srandmember.ts +13 -0
  192. package/pkg/commands/srem.test.ts +18 -0
  193. package/pkg/commands/srem.ts +10 -0
  194. package/pkg/commands/sscan.test.ts +50 -0
  195. package/pkg/commands/sscan.ts +22 -0
  196. package/pkg/commands/strlen.test.ts +16 -0
  197. package/pkg/commands/strlen.ts +10 -0
  198. package/pkg/commands/sunion.test.ts +22 -0
  199. package/pkg/commands/sunion.ts +10 -0
  200. package/pkg/commands/sunionstore.test.ts +29 -0
  201. package/pkg/commands/sunionstore.ts +10 -0
  202. package/pkg/commands/time.test.ts +11 -0
  203. package/pkg/commands/time.ts +9 -0
  204. package/pkg/commands/touch.test.ts +20 -0
  205. package/pkg/commands/touch.ts +10 -0
  206. package/pkg/commands/ttl.test.ts +17 -0
  207. package/pkg/commands/ttl.ts +10 -0
  208. package/pkg/commands/type.test.ts +72 -0
  209. package/pkg/commands/type.ts +11 -0
  210. package/pkg/commands/unlink.test.ts +21 -0
  211. package/pkg/commands/unlink.ts +10 -0
  212. package/pkg/commands/zadd.test.ts +177 -0
  213. package/pkg/commands/zadd.ts +64 -0
  214. package/pkg/commands/zcard.test.ts +15 -0
  215. package/pkg/commands/zcard.ts +10 -0
  216. package/pkg/commands/zcount.test.ts +15 -0
  217. package/pkg/commands/zcount.ts +9 -0
  218. package/pkg/commands/zincrby.test.ts +20 -0
  219. package/pkg/commands/zincrby.ts +9 -0
  220. package/pkg/commands/zinterstore.test.ts +239 -0
  221. package/pkg/commands/zinterstore.ts +55 -0
  222. package/pkg/commands/zlexcount.test.ts +22 -0
  223. package/pkg/commands/zlexcount.ts +9 -0
  224. package/pkg/commands/zpopmax.test.ts +45 -0
  225. package/pkg/commands/zpopmax.ts +13 -0
  226. package/pkg/commands/zpopmin.test.ts +49 -0
  227. package/pkg/commands/zpopmin.ts +13 -0
  228. package/pkg/commands/zrange.test.ts +52 -0
  229. package/pkg/commands/zrange.ts +22 -0
  230. package/pkg/commands/zrank.test.ts +22 -0
  231. package/pkg/commands/zrank.ts +10 -0
  232. package/pkg/commands/zrem.test.ts +20 -0
  233. package/pkg/commands/zrem.ts +10 -0
  234. package/pkg/commands/zremrangebylex.test.ts +26 -0
  235. package/pkg/commands/zremrangebylex.ts +9 -0
  236. package/pkg/commands/zremrangebyrank.test.ts +27 -0
  237. package/pkg/commands/zremrangebyrank.ts +9 -0
  238. package/pkg/commands/zremrangebyscore.test.ts +24 -0
  239. package/pkg/commands/zremrangebyscore.ts +9 -0
  240. package/pkg/commands/zrevrank.test.ts +22 -0
  241. package/pkg/commands/zrevrank.ts +10 -0
  242. package/pkg/commands/zscan.test.ts +50 -0
  243. package/pkg/commands/zscan.ts +22 -0
  244. package/pkg/commands/zscore.test.ts +18 -0
  245. package/pkg/commands/zscore.ts +10 -0
  246. package/pkg/commands/zunionstore.test.ts +215 -0
  247. package/pkg/commands/zunionstore.ts +55 -0
  248. package/pkg/commands/zz.ts +1 -0
  249. package/pkg/error.ts +9 -0
  250. package/pkg/fastly.ts +54 -0
  251. package/pkg/http.test.ts +34 -0
  252. package/pkg/http.ts +62 -0
  253. package/pkg/index.ts +2 -0
  254. package/pkg/nodejs.ts +83 -0
  255. package/pkg/pipeline.test.ts +177 -0
  256. package/pkg/pipeline.ts +999 -0
  257. package/pkg/redis.ts +930 -0
  258. package/pkg/test-utils.ts +41 -0
  259. package/pkg/types.ts +4 -0
  260. package/pkg/util.ts +22 -0
  261. package/pnpm-lock.yaml +3940 -0
  262. package/tsconfig.json +96 -16
  263. package/tsup.config.ts +16 -0
  264. package/README.md +0 -63
  265. package/dist/main/client.d.ts +0 -21
  266. package/dist/main/client.js +0 -564
  267. package/dist/main/index-cjs.d.ts +0 -1
  268. package/dist/main/index-cjs.js +0 -120
  269. package/dist/main/types.d.ts +0 -179
  270. package/dist/main/types.js +0 -2
  271. package/dist/module/client.d.ts +0 -21
  272. package/dist/module/client.js +0 -559
  273. package/dist/module/index.d.ts +0 -3
  274. package/dist/module/index.js +0 -3
  275. package/dist/module/types.d.ts +0 -179
  276. package/dist/module/types.js +0 -1
  277. package/src/client.ts +0 -626
  278. package/src/index-cjs.ts +0 -117
  279. package/src/index.ts +0 -118
  280. package/src/types.ts +0 -410
package/pkg/nodejs.ts ADDED
@@ -0,0 +1,83 @@
1
+ import * as core from "./redis"
2
+ import { HttpClient } from "./http"
3
+ import "isomorphic-fetch"
4
+
5
+ /**
6
+ * Connection credentials for upstash redis.
7
+ * Get them from https://console.upstash.com/redis/<uuid>
8
+ */
9
+ export type RedisConfigNodejs = {
10
+ /**
11
+ * UPSTASH_REDIS_REST_URL
12
+ */
13
+ url: string
14
+
15
+ /**
16
+ * UPSTASH_REDIS_REST_TOKEN
17
+ */
18
+ token: string
19
+
20
+ // requestOptions?: {
21
+ // /**
22
+ // * **fastly only**
23
+ // *
24
+ // * A Request can be forwarded to any backend defined on your service. Backends
25
+ // * can be created via the Fastly CLI, API, or web interface, and are
26
+ // * referenced by name.
27
+ // */
28
+ // backend?: string
29
+ // }
30
+ }
31
+
32
+ /**
33
+ * Serverless redis client for upstash.
34
+ */
35
+ export class Redis extends core.Redis {
36
+ /**
37
+ * Create a new redis client
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const redis = new Redis({
42
+ * url: "<UPSTASH_REDIS_REST_URL>",
43
+ * token: "<UPSTASH_REDIS_REST_TOKEN>",
44
+ * });
45
+ * ```
46
+ */
47
+ constructor(config: RedisConfigNodejs) {
48
+ const client = new HttpClient({
49
+ baseUrl: config.url,
50
+ headers: {
51
+ authorization: `Bearer ${config.token}`,
52
+ },
53
+ })
54
+
55
+ super(client)
56
+ }
57
+
58
+ /**
59
+ * Create a new Upstash Redis instance from environment variables.
60
+ *
61
+ * Use this to automatically load connection secrets from your environment
62
+ * variables. For instance when using the Vercel integration.
63
+ *
64
+ * This tries to load `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` from
65
+ * your environment using `process.env`.
66
+ */
67
+ static fromEnv(): Redis {
68
+ if (typeof process?.env === "undefined") {
69
+ throw new Error(
70
+ "Unable to get environment variables, `process.env` is undefined. If you are deploying to cloudflare, please use `Redis.onCloudflare()` instead",
71
+ )
72
+ }
73
+ const url = process.env["UPSTASH_REDIS_REST_URL"]
74
+ if (!url) {
75
+ throw new Error("Unable to find environment variable: `UPSTASH_REDIS_REST_URL`")
76
+ }
77
+ const token = process.env["UPSTASH_REDIS_REST_TOKEN"]
78
+ if (!token) {
79
+ throw new Error("Unable to find environment variable: `UPSTASH_REDIS_REST_TOKEN`")
80
+ }
81
+ return new Redis({ url, token })
82
+ }
83
+ }
@@ -0,0 +1,177 @@
1
+ import { Pipeline } from "./pipeline"
2
+ import { keygen, newHttpClient } from "./test-utils"
3
+ import { randomUUID } from "crypto"
4
+ import { describe, it, expect, afterEach } from "@jest/globals"
5
+ const client = newHttpClient()
6
+
7
+ const { newKey, cleanup } = keygen()
8
+ afterEach(cleanup)
9
+
10
+ describe("with single command", () => {
11
+ it("works with multiple commands", async () => {
12
+ const p = new Pipeline(client)
13
+ p.set(newKey(), randomUUID())
14
+ const res = await p.exec()
15
+ expect(res).toHaveLength(1)
16
+ expect(res[0]).toBe("OK")
17
+ })
18
+ })
19
+
20
+ describe("when chaining in a for loop", () => {
21
+ it("works", async () => {
22
+ const key = newKey()
23
+ const res = await new Pipeline(client).set(key, randomUUID()).get(key).exec()
24
+
25
+ expect(res).toHaveLength(2)
26
+ })
27
+ })
28
+
29
+ describe("when chaining inline", () => {
30
+ it("works", async () => {
31
+ const key = newKey()
32
+ const p = new Pipeline(client)
33
+ for (let i = 0; i < 10; i++) {
34
+ p.set(key, randomUUID())
35
+ }
36
+
37
+ const res = await p.exec()
38
+ expect(res).toHaveLength(10)
39
+ })
40
+ })
41
+
42
+ describe("when no commands were added", () => {
43
+ it("throws", async () => {
44
+ expect(() => new Pipeline(client).exec()).rejects.toThrowErrorMatchingInlineSnapshot(
45
+ `"Pipeline is empty"`,
46
+ )
47
+ })
48
+ })
49
+
50
+ describe("when one command throws an error", () => {
51
+ it("throws", async () => {
52
+ const p = new Pipeline(client).set("key", "value").hget("key", "field")
53
+ expect(() => p.exec()).rejects.toThrowErrorMatchingInlineSnapshot(
54
+ `"Command 2 [ hget ] failed: WRONGTYPE Operation against a key holding the wrong kind of value"`,
55
+ )
56
+ })
57
+ })
58
+
59
+ describe("use all the things", () => {
60
+ it("works", async () => {
61
+ const p = new Pipeline(client)
62
+
63
+ const persistentKey = newKey()
64
+ const persistentKey2 = newKey()
65
+
66
+ p.append(newKey(), "hello")
67
+ .bitcount(newKey(), 0, 1)
68
+ .bitop("and", newKey(), newKey())
69
+ .bitpos(newKey(), 0, 1)
70
+ .dbsize()
71
+ .decr(newKey())
72
+ .decrby(newKey(), 1)
73
+ .del(newKey())
74
+ .echo("hello")
75
+ .exists(newKey())
76
+ .expire(newKey(), 5)
77
+ .expireat(newKey(), Math.floor(new Date().getTime() / 1000) + 60)
78
+ .flushall()
79
+ .flushdb()
80
+ .get(newKey())
81
+ .getbit(newKey(), 0)
82
+ .getrange(newKey(), 0, 1)
83
+ .getset(newKey(), "hello")
84
+ .hdel(newKey(), "field")
85
+ .hexists(newKey(), "field")
86
+ .hget(newKey(), "field")
87
+ .hgetall(newKey())
88
+ .hincrby(newKey(), "field", 1)
89
+ .hincrbyfloat(newKey(), "field", 1.5)
90
+ .hkeys(newKey())
91
+ .hlen(newKey())
92
+ .hmget(newKey(), newKey())
93
+ .hmset(newKey(), { field: "field", value: "value" })
94
+ .hscan(newKey(), 0)
95
+ .hset(newKey(), "field", "value")
96
+ .hsetnx(newKey(), "field", "value")
97
+ .hstrlen(newKey(), "field")
98
+ .hvals(newKey())
99
+ .incr(newKey())
100
+ .incrby(newKey(), 1)
101
+ .incrbyfloat(newKey(), 1.5)
102
+ .keys("*")
103
+ .lindex(newKey(), 0)
104
+ .linsert(newKey(), "before", "pivot", "value")
105
+ .llen(newKey())
106
+ .lpop(newKey())
107
+ .lpush(persistentKey, "element")
108
+ .lpushx(newKey(), "element1", "element2")
109
+ .lrange(newKey(), 0, 1)
110
+ .lrem(newKey(), 1, "value")
111
+ .lset(persistentKey, "value", 0)
112
+ .ltrim(newKey(), 0, 1)
113
+ .mget<[string, string]>(newKey(), newKey())
114
+ .mset({ key1: "value", key2: "value" })
115
+ .msetnx({ key3: "value", key4: "value" })
116
+ .persist(newKey())
117
+ .pexpire(newKey(), 1000)
118
+ .pexpireat(newKey(), new Date().getTime() + 1000)
119
+ .ping()
120
+ .psetex(newKey(), 1, "value")
121
+ .pttl(newKey())
122
+ .randomkey()
123
+ .rename(persistentKey, persistentKey2)
124
+ .renamenx(persistentKey2, newKey())
125
+ .rpop(newKey())
126
+ .rpush(newKey(), "element1", "element2")
127
+ .rpushx(newKey(), "element1", "element2")
128
+ .sadd(newKey(), "memeber1", "member2")
129
+ .scan(0)
130
+ .scard(newKey())
131
+ .sdiff(newKey())
132
+ .sdiffstore(newKey(), newKey())
133
+ .set(newKey(), "value")
134
+ .setbit(newKey(), 1, 1)
135
+ .setex(newKey(), 1, "value")
136
+ .setnx(newKey(), "value")
137
+ .setrange(newKey(), 1, "value")
138
+ .sinter(newKey(), newKey())
139
+ .sinterstore(newKey(), newKey())
140
+ .sismember(newKey(), "member")
141
+ .smembers(newKey())
142
+ .smove(newKey(), newKey(), "member")
143
+ .spop(newKey())
144
+ .srandmember(newKey())
145
+ .srem(newKey(), "member")
146
+ .sscan(newKey(), 0)
147
+ .strlen(newKey())
148
+ .sunion(newKey())
149
+ .sunionstore(newKey(), newKey())
150
+ .time()
151
+ .touch()
152
+ .ttl(newKey())
153
+ .type(newKey())
154
+ .unlink()
155
+ .zadd(newKey(), { score: 0, member: "member" })
156
+ .zcard(newKey())
157
+ .zcount(newKey(), 0, 1)
158
+ .zincrby(newKey(), 1, "member")
159
+ .zinterstore(newKey(), 1, [newKey()])
160
+ .zlexcount(newKey(), "-", "+")
161
+ .zpopmax(newKey())
162
+ .zpopmin(newKey())
163
+ .zrange(newKey(), 0, 1)
164
+ .zrank(newKey(), "member")
165
+ .zrem(newKey(), "member")
166
+ .zremrangebylex(newKey(), "-", "+")
167
+ .zremrangebyrank(newKey(), 0, 1)
168
+ .zremrangebyscore(newKey(), 0, 1)
169
+ .zrevrank(newKey(), "member")
170
+ .zscan(newKey(), 0)
171
+ .zscore(newKey(), "member")
172
+ .zunionstore(newKey(), 1, [newKey()])
173
+
174
+ const res = await p.exec()
175
+ expect(res).toHaveLength(107)
176
+ })
177
+ })