@upstash/redis 1.3.2-alpha.2 → 1.3.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 (360) hide show
  1. package/README.md +4 -8
  2. package/esm/pkg/commands/append.js +2 -2
  3. package/esm/pkg/commands/bitcount.js +2 -2
  4. package/esm/pkg/commands/bitop.js +2 -2
  5. package/esm/pkg/commands/bitpos.js +2 -2
  6. package/esm/pkg/commands/command.js +13 -2
  7. package/esm/pkg/commands/dbsize.js +2 -2
  8. package/esm/pkg/commands/decr.js +2 -2
  9. package/esm/pkg/commands/decrby.js +2 -2
  10. package/esm/pkg/commands/del.js +2 -2
  11. package/esm/pkg/commands/echo.js +2 -2
  12. package/esm/pkg/commands/eval.js +2 -2
  13. package/esm/pkg/commands/evalsha.js +2 -2
  14. package/esm/pkg/commands/exists.js +2 -2
  15. package/esm/pkg/commands/expire.js +2 -2
  16. package/esm/pkg/commands/expireat.js +2 -2
  17. package/esm/pkg/commands/flushall.js +3 -3
  18. package/esm/pkg/commands/flushdb.js +2 -2
  19. package/esm/pkg/commands/get.js +2 -2
  20. package/esm/pkg/commands/getbit.js +2 -2
  21. package/esm/pkg/commands/getrange.js +2 -2
  22. package/esm/pkg/commands/getset.js +2 -2
  23. package/esm/pkg/commands/hdel.js +2 -2
  24. package/esm/pkg/commands/hexists.js +2 -2
  25. package/esm/pkg/commands/hget.js +2 -2
  26. package/esm/pkg/commands/hgetall.js +5 -2
  27. package/esm/pkg/commands/hincrby.js +2 -2
  28. package/esm/pkg/commands/hincrbyfloat.js +2 -2
  29. package/esm/pkg/commands/hkeys.js +2 -2
  30. package/esm/pkg/commands/hlen.js +2 -2
  31. package/esm/pkg/commands/hmget.js +5 -2
  32. package/esm/pkg/commands/hmset.js +2 -2
  33. package/esm/pkg/commands/hscan.js +6 -6
  34. package/esm/pkg/commands/hset.js +2 -2
  35. package/esm/pkg/commands/hsetnx.js +2 -2
  36. package/esm/pkg/commands/hstrlen.js +2 -2
  37. package/esm/pkg/commands/hvals.js +2 -2
  38. package/esm/pkg/commands/incr.js +2 -2
  39. package/esm/pkg/commands/incrby.js +2 -2
  40. package/esm/pkg/commands/incrbyfloat.js +2 -2
  41. package/esm/pkg/commands/keys.js +2 -2
  42. package/esm/pkg/commands/lindex.js +2 -2
  43. package/esm/pkg/commands/linsert.js +2 -2
  44. package/esm/pkg/commands/llen.js +2 -2
  45. package/esm/pkg/commands/lpop.js +2 -2
  46. package/esm/pkg/commands/lpush.js +2 -2
  47. package/esm/pkg/commands/lpushx.js +2 -2
  48. package/esm/pkg/commands/lrange.js +2 -2
  49. package/esm/pkg/commands/lrem.js +2 -2
  50. package/esm/pkg/commands/lset.js +2 -2
  51. package/esm/pkg/commands/ltrim.js +2 -2
  52. package/esm/pkg/commands/mget.js +2 -2
  53. package/esm/pkg/commands/mset.js +2 -2
  54. package/esm/pkg/commands/msetnx.js +2 -2
  55. package/esm/pkg/commands/persist.js +2 -2
  56. package/esm/pkg/commands/pexpire.js +2 -2
  57. package/esm/pkg/commands/pexpireat.js +2 -2
  58. package/esm/pkg/commands/ping.js +4 -4
  59. package/esm/pkg/commands/psetex.js +2 -2
  60. package/esm/pkg/commands/pttl.js +2 -2
  61. package/esm/pkg/commands/publish.js +2 -2
  62. package/esm/pkg/commands/randomkey.js +2 -2
  63. package/esm/pkg/commands/rename.js +2 -2
  64. package/esm/pkg/commands/renamenx.js +2 -2
  65. package/esm/pkg/commands/rpop.js +2 -2
  66. package/esm/pkg/commands/rpush.js +2 -2
  67. package/esm/pkg/commands/rpushx.js +2 -2
  68. package/esm/pkg/commands/sadd.js +2 -2
  69. package/esm/pkg/commands/scan.js +2 -2
  70. package/esm/pkg/commands/scard.js +2 -2
  71. package/esm/pkg/commands/script_exists.js +3 -2
  72. package/esm/pkg/commands/script_flush.js +2 -2
  73. package/esm/pkg/commands/script_load.js +2 -2
  74. package/esm/pkg/commands/sdiff.js +2 -2
  75. package/esm/pkg/commands/sdiffstore.js +2 -2
  76. package/esm/pkg/commands/set.js +6 -6
  77. package/esm/pkg/commands/setbit.js +2 -2
  78. package/esm/pkg/commands/setex.js +2 -2
  79. package/esm/pkg/commands/setnx.js +2 -2
  80. package/esm/pkg/commands/setrange.js +2 -2
  81. package/esm/pkg/commands/sinter.js +2 -2
  82. package/esm/pkg/commands/sinterstore.js +2 -2
  83. package/esm/pkg/commands/sismember.js +2 -2
  84. package/esm/pkg/commands/smembers.js +2 -2
  85. package/esm/pkg/commands/smove.js +2 -2
  86. package/esm/pkg/commands/spop.js +2 -2
  87. package/esm/pkg/commands/srandmember.js +2 -2
  88. package/esm/pkg/commands/srem.js +2 -2
  89. package/esm/pkg/commands/sscan.js +2 -2
  90. package/esm/pkg/commands/strlen.js +2 -2
  91. package/esm/pkg/commands/sunion.js +2 -2
  92. package/esm/pkg/commands/sunionstore.js +2 -2
  93. package/esm/pkg/commands/time.js +2 -2
  94. package/esm/pkg/commands/touch.js +2 -2
  95. package/esm/pkg/commands/ttl.js +2 -2
  96. package/esm/pkg/commands/type.js +2 -2
  97. package/esm/pkg/commands/unlink.js +2 -2
  98. package/esm/pkg/commands/zadd.js +7 -7
  99. package/esm/pkg/commands/zcard.js +2 -2
  100. package/esm/pkg/commands/zcount.js +2 -2
  101. package/esm/pkg/commands/zincrby.js +3 -3
  102. package/esm/pkg/commands/zinterstore.js +4 -4
  103. package/esm/pkg/commands/zlexcount.js +2 -2
  104. package/esm/pkg/commands/zpopmax.js +2 -2
  105. package/esm/pkg/commands/zpopmin.js +2 -2
  106. package/esm/pkg/commands/zrange.js +2 -2
  107. package/esm/pkg/commands/zrank.js +2 -2
  108. package/esm/pkg/commands/zrem.js +2 -2
  109. package/esm/pkg/commands/zremrangebylex.js +2 -2
  110. package/esm/pkg/commands/zremrangebyrank.js +2 -2
  111. package/esm/pkg/commands/zremrangebyscore.js +2 -2
  112. package/esm/pkg/commands/zrevrank.js +2 -2
  113. package/esm/pkg/commands/zscan.js +2 -2
  114. package/esm/pkg/commands/zscore.js +2 -2
  115. package/esm/pkg/commands/zunionstore.js +4 -4
  116. package/esm/pkg/pipeline.js +124 -117
  117. package/esm/pkg/redis.js +122 -116
  118. package/esm/platforms/cloudflare.js +3 -1
  119. package/esm/platforms/fastly.js +3 -1
  120. package/esm/platforms/nodejs.js +8 -2
  121. package/package.json +1 -1
  122. package/script/pkg/commands/append.js +2 -2
  123. package/script/pkg/commands/bitcount.js +2 -2
  124. package/script/pkg/commands/bitop.js +2 -2
  125. package/script/pkg/commands/bitpos.js +2 -2
  126. package/script/pkg/commands/command.js +13 -2
  127. package/script/pkg/commands/dbsize.js +2 -2
  128. package/script/pkg/commands/decr.js +2 -2
  129. package/script/pkg/commands/decrby.js +2 -2
  130. package/script/pkg/commands/del.js +2 -2
  131. package/script/pkg/commands/echo.js +2 -2
  132. package/script/pkg/commands/eval.js +2 -2
  133. package/script/pkg/commands/evalsha.js +2 -2
  134. package/script/pkg/commands/exists.js +2 -2
  135. package/script/pkg/commands/expire.js +2 -2
  136. package/script/pkg/commands/expireat.js +2 -2
  137. package/script/pkg/commands/flushall.js +3 -3
  138. package/script/pkg/commands/flushdb.js +2 -2
  139. package/script/pkg/commands/get.js +2 -2
  140. package/script/pkg/commands/getbit.js +2 -2
  141. package/script/pkg/commands/getrange.js +2 -2
  142. package/script/pkg/commands/getset.js +2 -2
  143. package/script/pkg/commands/hdel.js +2 -2
  144. package/script/pkg/commands/hexists.js +2 -2
  145. package/script/pkg/commands/hget.js +2 -2
  146. package/script/pkg/commands/hgetall.js +5 -2
  147. package/script/pkg/commands/hincrby.js +2 -2
  148. package/script/pkg/commands/hincrbyfloat.js +2 -2
  149. package/script/pkg/commands/hkeys.js +2 -2
  150. package/script/pkg/commands/hlen.js +2 -2
  151. package/script/pkg/commands/hmget.js +5 -2
  152. package/script/pkg/commands/hmset.js +2 -2
  153. package/script/pkg/commands/hscan.js +6 -6
  154. package/script/pkg/commands/hset.js +2 -2
  155. package/script/pkg/commands/hsetnx.js +2 -2
  156. package/script/pkg/commands/hstrlen.js +2 -2
  157. package/script/pkg/commands/hvals.js +2 -2
  158. package/script/pkg/commands/incr.js +2 -2
  159. package/script/pkg/commands/incrby.js +2 -2
  160. package/script/pkg/commands/incrbyfloat.js +2 -2
  161. package/script/pkg/commands/keys.js +2 -2
  162. package/script/pkg/commands/lindex.js +2 -2
  163. package/script/pkg/commands/linsert.js +2 -2
  164. package/script/pkg/commands/llen.js +2 -2
  165. package/script/pkg/commands/lpop.js +2 -2
  166. package/script/pkg/commands/lpush.js +2 -2
  167. package/script/pkg/commands/lpushx.js +2 -2
  168. package/script/pkg/commands/lrange.js +2 -2
  169. package/script/pkg/commands/lrem.js +2 -2
  170. package/script/pkg/commands/lset.js +2 -2
  171. package/script/pkg/commands/ltrim.js +2 -2
  172. package/script/pkg/commands/mget.js +2 -2
  173. package/script/pkg/commands/mset.js +2 -2
  174. package/script/pkg/commands/msetnx.js +2 -2
  175. package/script/pkg/commands/persist.js +2 -2
  176. package/script/pkg/commands/pexpire.js +2 -2
  177. package/script/pkg/commands/pexpireat.js +2 -2
  178. package/script/pkg/commands/ping.js +4 -4
  179. package/script/pkg/commands/psetex.js +2 -2
  180. package/script/pkg/commands/pttl.js +2 -2
  181. package/script/pkg/commands/publish.js +2 -2
  182. package/script/pkg/commands/randomkey.js +2 -2
  183. package/script/pkg/commands/rename.js +2 -2
  184. package/script/pkg/commands/renamenx.js +2 -2
  185. package/script/pkg/commands/rpop.js +2 -2
  186. package/script/pkg/commands/rpush.js +2 -2
  187. package/script/pkg/commands/rpushx.js +2 -2
  188. package/script/pkg/commands/sadd.js +2 -2
  189. package/script/pkg/commands/scan.js +2 -2
  190. package/script/pkg/commands/scard.js +2 -2
  191. package/script/pkg/commands/script_exists.js +3 -2
  192. package/script/pkg/commands/script_flush.js +2 -2
  193. package/script/pkg/commands/script_load.js +2 -2
  194. package/script/pkg/commands/sdiff.js +2 -2
  195. package/script/pkg/commands/sdiffstore.js +2 -2
  196. package/script/pkg/commands/set.js +6 -6
  197. package/script/pkg/commands/setbit.js +2 -2
  198. package/script/pkg/commands/setex.js +2 -2
  199. package/script/pkg/commands/setnx.js +2 -2
  200. package/script/pkg/commands/setrange.js +2 -2
  201. package/script/pkg/commands/sinter.js +2 -2
  202. package/script/pkg/commands/sinterstore.js +2 -2
  203. package/script/pkg/commands/sismember.js +2 -2
  204. package/script/pkg/commands/smembers.js +2 -2
  205. package/script/pkg/commands/smove.js +2 -2
  206. package/script/pkg/commands/spop.js +2 -2
  207. package/script/pkg/commands/srandmember.js +2 -2
  208. package/script/pkg/commands/srem.js +2 -2
  209. package/script/pkg/commands/sscan.js +2 -2
  210. package/script/pkg/commands/strlen.js +2 -2
  211. package/script/pkg/commands/sunion.js +2 -2
  212. package/script/pkg/commands/sunionstore.js +2 -2
  213. package/script/pkg/commands/time.js +2 -2
  214. package/script/pkg/commands/touch.js +2 -2
  215. package/script/pkg/commands/ttl.js +2 -2
  216. package/script/pkg/commands/type.js +2 -2
  217. package/script/pkg/commands/unlink.js +2 -2
  218. package/script/pkg/commands/zadd.js +7 -7
  219. package/script/pkg/commands/zcard.js +2 -2
  220. package/script/pkg/commands/zcount.js +2 -2
  221. package/script/pkg/commands/zincrby.js +5 -5
  222. package/script/pkg/commands/zinterstore.js +4 -4
  223. package/script/pkg/commands/zlexcount.js +2 -2
  224. package/script/pkg/commands/zpopmax.js +2 -2
  225. package/script/pkg/commands/zpopmin.js +2 -2
  226. package/script/pkg/commands/zrange.js +2 -2
  227. package/script/pkg/commands/zrank.js +2 -2
  228. package/script/pkg/commands/zrem.js +2 -2
  229. package/script/pkg/commands/zremrangebylex.js +2 -2
  230. package/script/pkg/commands/zremrangebyrank.js +2 -2
  231. package/script/pkg/commands/zremrangebyscore.js +2 -2
  232. package/script/pkg/commands/zrevrank.js +2 -2
  233. package/script/pkg/commands/zscan.js +2 -2
  234. package/script/pkg/commands/zscore.js +2 -2
  235. package/script/pkg/commands/zunionstore.js +4 -4
  236. package/script/pkg/pipeline.js +123 -116
  237. package/script/pkg/redis.js +121 -115
  238. package/script/platforms/cloudflare.js +3 -1
  239. package/script/platforms/fastly.js +3 -1
  240. package/script/platforms/nodejs.js +8 -2
  241. package/types/pkg/commands/append.d.ts +2 -2
  242. package/types/pkg/commands/bitcount.d.ts +3 -3
  243. package/types/pkg/commands/bitop.d.ts +8 -3
  244. package/types/pkg/commands/bitpos.d.ts +2 -2
  245. package/types/pkg/commands/command.d.ts +19 -5
  246. package/types/pkg/commands/dbsize.d.ts +2 -2
  247. package/types/pkg/commands/decr.d.ts +2 -2
  248. package/types/pkg/commands/decrby.d.ts +2 -2
  249. package/types/pkg/commands/del.d.ts +2 -3
  250. package/types/pkg/commands/echo.d.ts +2 -2
  251. package/types/pkg/commands/eval.d.ts +2 -2
  252. package/types/pkg/commands/evalsha.d.ts +2 -2
  253. package/types/pkg/commands/exists.d.ts +2 -3
  254. package/types/pkg/commands/expire.d.ts +3 -3
  255. package/types/pkg/commands/expireat.d.ts +3 -3
  256. package/types/pkg/commands/flushall.d.ts +3 -3
  257. package/types/pkg/commands/flushdb.d.ts +3 -3
  258. package/types/pkg/commands/get.d.ts +3 -3
  259. package/types/pkg/commands/getbit.d.ts +3 -3
  260. package/types/pkg/commands/getrange.d.ts +2 -2
  261. package/types/pkg/commands/getset.d.ts +3 -3
  262. package/types/pkg/commands/hdel.d.ts +3 -3
  263. package/types/pkg/commands/hexists.d.ts +2 -2
  264. package/types/pkg/commands/hget.d.ts +3 -3
  265. package/types/pkg/commands/hgetall.d.ts +3 -3
  266. package/types/pkg/commands/hincrby.d.ts +2 -2
  267. package/types/pkg/commands/hincrbyfloat.d.ts +2 -2
  268. package/types/pkg/commands/hkeys.d.ts +2 -2
  269. package/types/pkg/commands/hlen.d.ts +2 -2
  270. package/types/pkg/commands/hmget.d.ts +3 -3
  271. package/types/pkg/commands/hmset.d.ts +3 -3
  272. package/types/pkg/commands/hscan.d.ts +12 -2
  273. package/types/pkg/commands/hset.d.ts +3 -3
  274. package/types/pkg/commands/hsetnx.d.ts +3 -3
  275. package/types/pkg/commands/hstrlen.d.ts +2 -2
  276. package/types/pkg/commands/hvals.d.ts +3 -3
  277. package/types/pkg/commands/incr.d.ts +2 -2
  278. package/types/pkg/commands/incrby.d.ts +2 -2
  279. package/types/pkg/commands/incrbyfloat.d.ts +2 -2
  280. package/types/pkg/commands/keys.d.ts +2 -2
  281. package/types/pkg/commands/lindex.d.ts +3 -3
  282. package/types/pkg/commands/linsert.d.ts +7 -2
  283. package/types/pkg/commands/llen.d.ts +2 -2
  284. package/types/pkg/commands/lpop.d.ts +3 -3
  285. package/types/pkg/commands/lpush.d.ts +2 -3
  286. package/types/pkg/commands/lpushx.d.ts +2 -3
  287. package/types/pkg/commands/lrange.d.ts +3 -3
  288. package/types/pkg/commands/lrem.d.ts +2 -2
  289. package/types/pkg/commands/lset.d.ts +2 -2
  290. package/types/pkg/commands/ltrim.d.ts +2 -2
  291. package/types/pkg/commands/mget.d.ts +3 -3
  292. package/types/pkg/commands/mset.d.ts +3 -3
  293. package/types/pkg/commands/msetnx.d.ts +3 -3
  294. package/types/pkg/commands/persist.d.ts +3 -3
  295. package/types/pkg/commands/pexpire.d.ts +3 -3
  296. package/types/pkg/commands/pexpireat.d.ts +3 -3
  297. package/types/pkg/commands/ping.d.ts +2 -2
  298. package/types/pkg/commands/psetex.d.ts +2 -2
  299. package/types/pkg/commands/pttl.d.ts +2 -2
  300. package/types/pkg/commands/publish.d.ts +2 -2
  301. package/types/pkg/commands/randomkey.d.ts +2 -2
  302. package/types/pkg/commands/rename.d.ts +2 -2
  303. package/types/pkg/commands/renamenx.d.ts +3 -3
  304. package/types/pkg/commands/rpop.d.ts +3 -3
  305. package/types/pkg/commands/rpush.d.ts +2 -3
  306. package/types/pkg/commands/rpushx.d.ts +2 -3
  307. package/types/pkg/commands/sadd.d.ts +2 -3
  308. package/types/pkg/commands/scan.d.ts +9 -3
  309. package/types/pkg/commands/scard.d.ts +2 -2
  310. package/types/pkg/commands/script_exists.d.ts +3 -6
  311. package/types/pkg/commands/script_flush.d.ts +2 -2
  312. package/types/pkg/commands/script_load.d.ts +2 -2
  313. package/types/pkg/commands/sdiff.d.ts +3 -3
  314. package/types/pkg/commands/sdiffstore.d.ts +2 -3
  315. package/types/pkg/commands/set.d.ts +3 -3
  316. package/types/pkg/commands/setbit.d.ts +3 -3
  317. package/types/pkg/commands/setex.d.ts +2 -2
  318. package/types/pkg/commands/setnx.d.ts +2 -2
  319. package/types/pkg/commands/setrange.d.ts +2 -2
  320. package/types/pkg/commands/sinter.d.ts +3 -3
  321. package/types/pkg/commands/sinterstore.d.ts +3 -3
  322. package/types/pkg/commands/sismember.d.ts +3 -3
  323. package/types/pkg/commands/smembers.d.ts +3 -3
  324. package/types/pkg/commands/smove.d.ts +3 -3
  325. package/types/pkg/commands/spop.d.ts +3 -3
  326. package/types/pkg/commands/srandmember.d.ts +3 -3
  327. package/types/pkg/commands/srem.d.ts +2 -3
  328. package/types/pkg/commands/sscan.d.ts +12 -2
  329. package/types/pkg/commands/strlen.d.ts +2 -2
  330. package/types/pkg/commands/sunion.d.ts +3 -3
  331. package/types/pkg/commands/sunionstore.d.ts +2 -2
  332. package/types/pkg/commands/time.d.ts +2 -2
  333. package/types/pkg/commands/touch.d.ts +2 -3
  334. package/types/pkg/commands/ttl.d.ts +2 -2
  335. package/types/pkg/commands/type.d.ts +2 -2
  336. package/types/pkg/commands/unlink.d.ts +2 -2
  337. package/types/pkg/commands/zadd.d.ts +11 -3
  338. package/types/pkg/commands/zcard.d.ts +2 -2
  339. package/types/pkg/commands/zcount.d.ts +2 -2
  340. package/types/pkg/commands/zincrby.d.ts +3 -3
  341. package/types/pkg/commands/zinterstore.d.ts +13 -3
  342. package/types/pkg/commands/zlexcount.d.ts +2 -2
  343. package/types/pkg/commands/zpopmax.d.ts +3 -3
  344. package/types/pkg/commands/zpopmin.d.ts +3 -3
  345. package/types/pkg/commands/zrange.d.ts +19 -9
  346. package/types/pkg/commands/zrank.d.ts +2 -2
  347. package/types/pkg/commands/zrem.d.ts +2 -3
  348. package/types/pkg/commands/zremrangebylex.d.ts +2 -2
  349. package/types/pkg/commands/zremrangebyrank.d.ts +2 -2
  350. package/types/pkg/commands/zremrangebyscore.d.ts +2 -2
  351. package/types/pkg/commands/zrevrank.d.ts +2 -2
  352. package/types/pkg/commands/zscan.d.ts +12 -2
  353. package/types/pkg/commands/zscore.d.ts +3 -3
  354. package/types/pkg/commands/zunionstore.d.ts +13 -3
  355. package/types/pkg/pipeline.d.ts +20 -23
  356. package/types/pkg/redis.d.ts +30 -23
  357. package/types/pkg/types.d.ts +1 -2
  358. package/types/platforms/cloudflare.d.ts +1 -1
  359. package/types/platforms/fastly.d.ts +1 -1
  360. package/types/platforms/nodejs.d.ts +1 -19
package/README.md CHANGED
@@ -76,7 +76,7 @@ const redis = new Redis({
76
76
  const redis = Redis.fromEnv()
77
77
  ```
78
78
 
79
- - [Code example](https://github.com/upstash/upstash-redis/tree/main/examples/node)
79
+ - [Code example](https://github.com/upstash/upstash-redis/blob/main/examples/nodejs)
80
80
 
81
81
  #### Cloudflare Workers
82
82
 
@@ -324,19 +324,15 @@ details.
324
324
 
325
325
  ## Contributing
326
326
 
327
- ### Installing dependencies
328
-
329
- ```bash
330
- pnpm install
331
- ```
327
+ ### [Install Deno](https://deno.land/#installation)
332
328
 
333
329
  ### Database
334
330
 
335
331
  Create a new redis database on [upstash](https://console.upstash.com/) and copy
336
- the url and token to `.env` (See `.env.example` for reference)
332
+ the url and token
337
333
 
338
334
  ### Running tests
339
335
 
340
336
  ```sh
341
- pnpm test
337
+ UPSTASH_REDIS_REST_URL=".." UPSTASH_REDIS_REST_TOKEN=".." deno test -A
342
338
  ```
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/append
4
4
  */
5
5
  export class AppendCommand extends Command {
6
- constructor(key, value) {
7
- super(["append", key, value]);
6
+ constructor(cmd, opts) {
7
+ super(["append", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/bitcount
4
4
  */
5
5
  export class BitCountCommand extends Command {
6
- constructor(key, start, end) {
6
+ constructor([key, start, end], opts) {
7
7
  const command = ["bitcount", key];
8
8
  if (typeof start === "number") {
9
9
  command.push(start);
@@ -11,6 +11,6 @@ export class BitCountCommand extends Command {
11
11
  if (typeof end === "number") {
12
12
  command.push(end);
13
13
  }
14
- super(command);
14
+ super(command, opts);
15
15
  }
16
16
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/bitop
4
4
  */
5
5
  export class BitOpCommand extends Command {
6
- constructor(op, destinationKey, sourceKey, ...sourceKeys) {
7
- super(["bitop", op, destinationKey, sourceKey, ...sourceKeys]);
6
+ constructor(cmd, opts) {
7
+ super(["bitop", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/bitpos
4
4
  */
5
5
  export class BitPosCommand extends Command {
6
- constructor(key, start, end) {
7
- super(["bitpos", key, start, end]);
6
+ constructor(cmd, opts) {
7
+ super(["bitpos", ...cmd], opts);
8
8
  }
9
9
  }
@@ -1,5 +1,6 @@
1
1
  import { UpstashError } from "../error.js";
2
2
  import { parseResponse } from "../util.js";
3
+ const defaultSerializer = (c) => typeof c === "string" ? c : JSON.stringify(c);
3
4
  /**
4
5
  * Command offers default (de)serialization and the exec method to all commands.
5
6
  *
@@ -19,14 +20,24 @@ export class Command {
19
20
  writable: true,
20
21
  value: void 0
21
22
  });
23
+ Object.defineProperty(this, "serialize", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: void 0
28
+ });
22
29
  Object.defineProperty(this, "deserialize", {
23
30
  enumerable: true,
24
31
  configurable: true,
25
32
  writable: true,
26
33
  value: void 0
27
34
  });
28
- this.command = command.map((c) => typeof c === "string" ? c : JSON.stringify(c));
29
- this.deserialize = opts?.deserialize ?? parseResponse;
35
+ this.serialize = defaultSerializer;
36
+ this.deserialize = typeof opts?.automaticDeserialization === "undefined" ||
37
+ opts.automaticDeserialization
38
+ ? opts?.deserialize ?? parseResponse
39
+ : (x) => x;
40
+ this.command = command.map(this.serialize);
30
41
  }
31
42
  /**
32
43
  * Execute the command using a client.
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/dbsize
4
4
  */
5
5
  export class DBSizeCommand extends Command {
6
- constructor() {
7
- super(["dbsize"]);
6
+ constructor(opts) {
7
+ super(["dbsize"], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/decr
4
4
  */
5
5
  export class DecrCommand extends Command {
6
- constructor(key) {
7
- super(["decr", key]);
6
+ constructor(cmd, opts) {
7
+ super(["decr", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/decrby
4
4
  */
5
5
  export class DecrByCommand extends Command {
6
- constructor(key, decrement) {
7
- super(["decrby", key, decrement]);
6
+ constructor(cmd, opts) {
7
+ super(["decrby", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/del
4
4
  */
5
5
  export class DelCommand extends Command {
6
- constructor(...keys) {
7
- super(["del", ...keys]);
6
+ constructor(cmd, opts) {
7
+ super(["del", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/echo
4
4
  */
5
5
  export class EchoCommand extends Command {
6
- constructor(message) {
7
- super(["echo", message]);
6
+ constructor(cmd, opts) {
7
+ super(["echo", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/eval
4
4
  */
5
5
  export class EvalCommand extends Command {
6
- constructor(script, keys, args) {
7
- super(["eval", script, keys.length, ...keys, ...(args ?? [])]);
6
+ constructor([script, keys, args], opts) {
7
+ super(["eval", script, keys.length, ...keys, ...(args ?? [])], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/evalsha
4
4
  */
5
5
  export class EvalshaCommand extends Command {
6
- constructor(sha, keys, args) {
7
- super(["evalsha", sha, keys.length, ...keys, ...(args ?? [])]);
6
+ constructor([sha, keys, args], opts) {
7
+ super(["evalsha", sha, keys.length, ...keys, ...(args ?? [])], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/exists
4
4
  */
5
5
  export class ExistsCommand extends Command {
6
- constructor(...keys) {
7
- super(["exists", ...keys]);
6
+ constructor(cmd, opts) {
7
+ super(["exists", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/expire
4
4
  */
5
5
  export class ExpireCommand extends Command {
6
- constructor(key, seconds) {
7
- super(["expire", key, seconds]);
6
+ constructor(cmd, opts) {
7
+ super(["expire", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/expireat
4
4
  */
5
5
  export class ExpireAtCommand extends Command {
6
- constructor(key, unix) {
7
- super(["expireat", key, unix]);
6
+ constructor(cmd, opts) {
7
+ super(["expireat", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,11 +3,11 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/flushall
4
4
  */
5
5
  export class FlushAllCommand extends Command {
6
- constructor(opts) {
6
+ constructor(args, opts) {
7
7
  const command = ["flushall"];
8
- if (opts?.async) {
8
+ if (args && args.length > 0 && args[0].async) {
9
9
  command.push("async");
10
10
  }
11
- super(command);
11
+ super(command, opts);
12
12
  }
13
13
  }
@@ -3,11 +3,11 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/flushdb
4
4
  */
5
5
  export class FlushDBCommand extends Command {
6
- constructor(opts) {
6
+ constructor([opts], cmdOpts) {
7
7
  const command = ["flushdb"];
8
8
  if (opts?.async) {
9
9
  command.push("async");
10
10
  }
11
- super(command);
11
+ super(command, cmdOpts);
12
12
  }
13
13
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/get
4
4
  */
5
5
  export class GetCommand extends Command {
6
- constructor(key) {
7
- super(["get", key]);
6
+ constructor(cmd, opts) {
7
+ super(["get", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/getbit
4
4
  */
5
5
  export class GetBitCommand extends Command {
6
- constructor(key, offset) {
7
- super(["getbit", key, offset]);
6
+ constructor(cmd, opts) {
7
+ super(["getbit", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/getrange
4
4
  */
5
5
  export class GetRangeCommand extends Command {
6
- constructor(key, start, end) {
7
- super(["getrange", key, start, end]);
6
+ constructor(cmd, opts) {
7
+ super(["getrange", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/getset
4
4
  */
5
5
  export class GetSetCommand extends Command {
6
- constructor(key, value) {
7
- super(["getset", key, value]);
6
+ constructor(cmd, opts) {
7
+ super(["getset", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hdel
4
4
  */
5
5
  export class HDelCommand extends Command {
6
- constructor(key, field) {
7
- super(["hdel", key, field]);
6
+ constructor(cmd, opts) {
7
+ super(["hdel", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hexists
4
4
  */
5
5
  export class HExistsCommand extends Command {
6
- constructor(key, field) {
7
- super(["hexists", key, field]);
6
+ constructor(cmd, opts) {
7
+ super(["hexists", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hget
4
4
  */
5
5
  export class HGetCommand extends Command {
6
- constructor(key, field) {
7
- super(["hget", key, field]);
6
+ constructor(cmd, opts) {
7
+ super(["hget", ...cmd], opts);
8
8
  }
9
9
  }
@@ -24,7 +24,10 @@ function deserialize(result) {
24
24
  * @see https://redis.io/commands/hgetall
25
25
  */
26
26
  export class HGetAllCommand extends Command {
27
- constructor(key) {
28
- super(["hgetall", key], { deserialize: (result) => deserialize(result) });
27
+ constructor(cmd, opts) {
28
+ super(["hgetall", ...cmd], {
29
+ deserialize: (result) => deserialize(result),
30
+ ...opts,
31
+ });
29
32
  }
30
33
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hincrby
4
4
  */
5
5
  export class HIncrByCommand extends Command {
6
- constructor(key, field, increment) {
7
- super(["hincrby", key, field, increment]);
6
+ constructor(cmd, opts) {
7
+ super(["hincrby", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hincrbyfloat
4
4
  */
5
5
  export class HIncrByFloatCommand extends Command {
6
- constructor(key, field, increment) {
7
- super(["hincrbyfloat", key, field, increment]);
6
+ constructor(cmd, opts) {
7
+ super(["hincrbyfloat", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hkeys
4
4
  */
5
5
  export class HKeysCommand extends Command {
6
- constructor(key) {
7
- super(["hkeys", key]);
6
+ constructor([key], opts) {
7
+ super(["hkeys", key], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hlen
4
4
  */
5
5
  export class HLenCommand extends Command {
6
- constructor(key) {
7
- super(["hlen", key]);
6
+ constructor(cmd, opts) {
7
+ super(["hlen", ...cmd], opts);
8
8
  }
9
9
  }
@@ -26,7 +26,10 @@ function deserialize(fields, result) {
26
26
  * @see https://redis.io/commands/hmget
27
27
  */
28
28
  export class HMGetCommand extends Command {
29
- constructor(key, ...fields) {
30
- super(["hmget", key, ...fields], { deserialize: (result) => deserialize(fields, result) });
29
+ constructor([key, ...fields], opts) {
30
+ super(["hmget", key, ...fields], {
31
+ deserialize: (result) => deserialize(fields, result),
32
+ ...opts,
33
+ });
31
34
  }
32
35
  }
@@ -3,11 +3,11 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hmset
4
4
  */
5
5
  export class HMSetCommand extends Command {
6
- constructor(key, kv) {
6
+ constructor([key, kv], opts) {
7
7
  super([
8
8
  "hmset",
9
9
  key,
10
10
  ...Object.entries(kv).flatMap(([field, value]) => [field, value]),
11
- ]);
11
+ ], opts);
12
12
  }
13
13
  }
@@ -3,14 +3,14 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hscan
4
4
  */
5
5
  export class HScanCommand extends Command {
6
- constructor(key, cursor, opts) {
6
+ constructor([key, cursor, cmdOpts], opts) {
7
7
  const command = ["hscan", key, cursor];
8
- if (opts?.match) {
9
- command.push("match", opts.match);
8
+ if (cmdOpts?.match) {
9
+ command.push("match", cmdOpts.match);
10
10
  }
11
- if (typeof opts?.count === "number") {
12
- command.push("count", opts.count);
11
+ if (typeof cmdOpts?.count === "number") {
12
+ command.push("count", cmdOpts.count);
13
13
  }
14
- super(command);
14
+ super(command, opts);
15
15
  }
16
16
  }
@@ -3,11 +3,11 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hset
4
4
  */
5
5
  export class HSetCommand extends Command {
6
- constructor(key, kv) {
6
+ constructor([key, kv], opts) {
7
7
  super([
8
8
  "hset",
9
9
  key,
10
10
  ...Object.entries(kv).flatMap(([field, value]) => [field, value]),
11
- ]);
11
+ ], opts);
12
12
  }
13
13
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hsetnx
4
4
  */
5
5
  export class HSetNXCommand extends Command {
6
- constructor(key, field, value) {
7
- super(["hsetnx", key, field, value]);
6
+ constructor(cmd, opts) {
7
+ super(["hsetnx", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hstrlen
4
4
  */
5
5
  export class HStrLenCommand extends Command {
6
- constructor(key, field) {
7
- super(["hstrlen", key, field]);
6
+ constructor(cmd, opts) {
7
+ super(["hstrlen", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/hvals
4
4
  */
5
5
  export class HValsCommand extends Command {
6
- constructor(key) {
7
- super(["hvals", key]);
6
+ constructor(cmd, opts) {
7
+ super(["hvals", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/incr
4
4
  */
5
5
  export class IncrCommand extends Command {
6
- constructor(key) {
7
- super(["incr", key]);
6
+ constructor(cmd, opts) {
7
+ super(["incr", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/incrby
4
4
  */
5
5
  export class IncrByCommand extends Command {
6
- constructor(key, value) {
7
- super(["incrby", key, value]);
6
+ constructor(cmd, opts) {
7
+ super(["incrby", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/incrbyfloat
4
4
  */
5
5
  export class IncrByFloatCommand extends Command {
6
- constructor(key, value) {
7
- super(["incrbyfloat", key, value]);
6
+ constructor(cmd, opts) {
7
+ super(["incrbyfloat", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/keys
4
4
  */
5
5
  export class KeysCommand extends Command {
6
- constructor(pattern) {
7
- super(["keys", pattern]);
6
+ constructor(cmd, opts) {
7
+ super(["keys", ...cmd], opts);
8
8
  }
9
9
  }
@@ -1,6 +1,6 @@
1
1
  import { Command } from "./command.js";
2
2
  export class LIndexCommand extends Command {
3
- constructor(key, index) {
4
- super(["lindex", key, index]);
3
+ constructor(cmd, opts) {
4
+ super(["lindex", ...cmd], opts);
5
5
  }
6
6
  }
@@ -1,6 +1,6 @@
1
1
  import { Command } from "./command.js";
2
2
  export class LInsertCommand extends Command {
3
- constructor(key, direction, pivot, value) {
4
- super(["linsert", key, direction, pivot, value]);
3
+ constructor(cmd, opts) {
4
+ super(["linsert", ...cmd], opts);
5
5
  }
6
6
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/llen
4
4
  */
5
5
  export class LLenCommand extends Command {
6
- constructor(key) {
7
- super(["llen", key]);
6
+ constructor(cmd, opts) {
7
+ super(["llen", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/lpop
4
4
  */
5
5
  export class LPopCommand extends Command {
6
- constructor(key) {
7
- super(["lpop", key]);
6
+ constructor(cmd, opts) {
7
+ super(["lpop", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/lpush
4
4
  */
5
5
  export class LPushCommand extends Command {
6
- constructor(key, ...elements) {
7
- super(["lpush", key, ...elements]);
6
+ constructor(cmd, opts) {
7
+ super(["lpush", ...cmd], opts);
8
8
  }
9
9
  }
@@ -3,7 +3,7 @@ import { Command } from "./command.js";
3
3
  * @see https://redis.io/commands/lpushx
4
4
  */
5
5
  export class LPushXCommand extends Command {
6
- constructor(key, ...elements) {
7
- super(["lpushx", key, ...elements]);
6
+ constructor(cmd, opts) {
7
+ super(["lpushx", ...cmd], opts);
8
8
  }
9
9
  }
@@ -1,6 +1,6 @@
1
1
  import { Command } from "./command.js";
2
2
  export class LRangeCommand extends Command {
3
- constructor(key, start, end) {
4
- super(["lrange", key, start, end]);
3
+ constructor(cmd, opts) {
4
+ super(["lrange", ...cmd], opts);
5
5
  }
6
6
  }
@@ -1,6 +1,6 @@
1
1
  import { Command } from "./command.js";
2
2
  export class LRemCommand extends Command {
3
- constructor(key, count, value) {
4
- super(["lrem", key, count, value]);
3
+ constructor(cmd, opts) {
4
+ super(["lrem", ...cmd], opts);
5
5
  }
6
6
  }
@@ -1,6 +1,6 @@
1
1
  import { Command } from "./command.js";
2
2
  export class LSetCommand extends Command {
3
- constructor(key, value, index) {
4
- super(["lset", key, index, value]);
3
+ constructor(cmd, opts) {
4
+ super(["lset", ...cmd], opts);
5
5
  }
6
6
  }