@upstash/redis 1.3.0-alpha.1 → 1.3.2-alpha.0

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 (399) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +87 -41
  3. package/esm/package.json +3 -0
  4. package/esm/pkg/commands/append.js +9 -0
  5. package/esm/pkg/commands/bitcount.js +16 -0
  6. package/esm/pkg/commands/bitop.js +9 -0
  7. package/esm/pkg/commands/bitpos.js +9 -0
  8. package/esm/pkg/commands/command.js +46 -0
  9. package/esm/pkg/commands/dbsize.js +9 -0
  10. package/esm/pkg/commands/decr.js +9 -0
  11. package/esm/pkg/commands/decrby.js +9 -0
  12. package/esm/pkg/commands/del.js +9 -0
  13. package/esm/pkg/commands/echo.js +9 -0
  14. package/esm/pkg/commands/eval.js +9 -0
  15. package/esm/pkg/commands/evalsha.js +9 -0
  16. package/esm/pkg/commands/exists.js +9 -0
  17. package/esm/pkg/commands/expire.js +9 -0
  18. package/esm/pkg/commands/expireat.js +9 -0
  19. package/esm/pkg/commands/flushall.js +13 -0
  20. package/esm/pkg/commands/flushdb.js +13 -0
  21. package/esm/pkg/commands/get.js +9 -0
  22. package/esm/pkg/commands/getbit.js +9 -0
  23. package/esm/pkg/commands/getrange.js +9 -0
  24. package/esm/pkg/commands/getset.js +9 -0
  25. package/esm/pkg/commands/hdel.js +9 -0
  26. package/esm/pkg/commands/hexists.js +9 -0
  27. package/esm/pkg/commands/hget.js +9 -0
  28. package/esm/pkg/commands/hgetall.js +30 -0
  29. package/esm/pkg/commands/hincrby.js +9 -0
  30. package/esm/pkg/commands/hincrbyfloat.js +9 -0
  31. package/esm/pkg/commands/hkeys.js +9 -0
  32. package/esm/pkg/commands/hlen.js +9 -0
  33. package/esm/pkg/commands/hmget.js +32 -0
  34. package/esm/pkg/commands/hmset.js +13 -0
  35. package/esm/pkg/commands/hscan.js +16 -0
  36. package/esm/pkg/commands/hset.js +13 -0
  37. package/esm/pkg/commands/hsetnx.js +9 -0
  38. package/esm/pkg/commands/hstrlen.js +9 -0
  39. package/esm/pkg/commands/hvals.js +9 -0
  40. package/esm/pkg/commands/incr.js +9 -0
  41. package/esm/pkg/commands/incrby.js +9 -0
  42. package/esm/pkg/commands/incrbyfloat.js +9 -0
  43. package/esm/pkg/commands/keys.js +9 -0
  44. package/esm/pkg/commands/lindex.js +6 -0
  45. package/esm/pkg/commands/linsert.js +6 -0
  46. package/esm/pkg/commands/llen.js +9 -0
  47. package/esm/pkg/commands/lpop.js +9 -0
  48. package/esm/pkg/commands/lpush.js +9 -0
  49. package/esm/pkg/commands/lpushx.js +9 -0
  50. package/esm/pkg/commands/lrange.js +6 -0
  51. package/esm/pkg/commands/lrem.js +6 -0
  52. package/esm/pkg/commands/lset.js +6 -0
  53. package/esm/pkg/commands/ltrim.js +6 -0
  54. package/esm/pkg/commands/mget.js +9 -0
  55. package/esm/pkg/commands/mod.js +114 -0
  56. package/esm/pkg/commands/mset.js +12 -0
  57. package/esm/pkg/commands/msetnx.js +9 -0
  58. package/esm/pkg/commands/persist.js +9 -0
  59. package/esm/pkg/commands/pexpire.js +9 -0
  60. package/esm/pkg/commands/pexpireat.js +9 -0
  61. package/esm/pkg/commands/ping.js +13 -0
  62. package/esm/pkg/commands/psetex.js +9 -0
  63. package/esm/pkg/commands/pttl.js +9 -0
  64. package/esm/pkg/commands/publish.js +9 -0
  65. package/esm/pkg/commands/randomkey.js +9 -0
  66. package/esm/pkg/commands/rename.js +9 -0
  67. package/esm/pkg/commands/renamenx.js +9 -0
  68. package/esm/pkg/commands/rpop.js +9 -0
  69. package/esm/pkg/commands/rpush.js +9 -0
  70. package/esm/pkg/commands/rpushx.js +9 -0
  71. package/esm/pkg/commands/sadd.js +9 -0
  72. package/esm/pkg/commands/scan.js +16 -0
  73. package/esm/pkg/commands/scard.js +9 -0
  74. package/esm/pkg/commands/script_exists.js +20 -0
  75. package/esm/pkg/commands/script_flush.js +16 -0
  76. package/esm/pkg/commands/script_load.js +9 -0
  77. package/esm/pkg/commands/sdiff.js +9 -0
  78. package/esm/pkg/commands/sdiffstore.js +9 -0
  79. package/esm/pkg/commands/set.js +24 -0
  80. package/esm/pkg/commands/setbit.js +9 -0
  81. package/esm/pkg/commands/setex.js +9 -0
  82. package/esm/pkg/commands/setnx.js +9 -0
  83. package/esm/pkg/commands/setrange.js +9 -0
  84. package/esm/pkg/commands/sinter.js +9 -0
  85. package/esm/pkg/commands/sinterstore.js +9 -0
  86. package/esm/pkg/commands/sismember.js +9 -0
  87. package/esm/pkg/commands/smembers.js +9 -0
  88. package/esm/pkg/commands/smove.js +9 -0
  89. package/esm/pkg/commands/spop.js +13 -0
  90. package/esm/pkg/commands/srandmember.js +13 -0
  91. package/esm/pkg/commands/srem.js +9 -0
  92. package/esm/pkg/commands/sscan.js +16 -0
  93. package/esm/pkg/commands/strlen.js +9 -0
  94. package/esm/pkg/commands/sunion.js +9 -0
  95. package/esm/pkg/commands/sunionstore.js +9 -0
  96. package/esm/pkg/commands/time.js +9 -0
  97. package/esm/pkg/commands/touch.js +9 -0
  98. package/esm/pkg/commands/ttl.js +9 -0
  99. package/esm/pkg/commands/type.js +9 -0
  100. package/esm/pkg/commands/unlink.js +9 -0
  101. package/esm/pkg/commands/zadd.js +26 -0
  102. package/esm/pkg/commands/zcard.js +9 -0
  103. package/esm/pkg/commands/zcount.js +9 -0
  104. package/esm/pkg/commands/zincrby.js +9 -0
  105. package/esm/pkg/commands/zinterstore.js +27 -0
  106. package/esm/pkg/commands/zlexcount.js +9 -0
  107. package/esm/pkg/commands/zpopmax.js +13 -0
  108. package/esm/pkg/commands/zpopmin.js +13 -0
  109. package/esm/pkg/commands/zrange.js +20 -0
  110. package/esm/pkg/commands/zrank.js +9 -0
  111. package/esm/pkg/commands/zrem.js +9 -0
  112. package/esm/pkg/commands/zremrangebylex.js +9 -0
  113. package/esm/pkg/commands/zremrangebyrank.js +9 -0
  114. package/esm/pkg/commands/zremrangebyscore.js +9 -0
  115. package/esm/pkg/commands/zrevrank.js +9 -0
  116. package/esm/pkg/commands/zscan.js +16 -0
  117. package/esm/pkg/commands/zscore.js +9 -0
  118. package/esm/pkg/commands/zunionstore.js +27 -0
  119. package/esm/pkg/error.js +9 -0
  120. package/esm/pkg/http.js +49 -0
  121. package/esm/pkg/pipeline.js +1118 -0
  122. package/esm/pkg/redis.js +1061 -0
  123. package/esm/pkg/types.js +1 -0
  124. package/esm/pkg/util.js +31 -0
  125. package/esm/platforms/cloudflare.js +70 -0
  126. package/esm/platforms/fastly.js +49 -0
  127. package/esm/platforms/nodejs.js +71 -0
  128. package/package.json +85 -1
  129. package/script/package.json +3 -0
  130. package/script/pkg/commands/append.js +13 -0
  131. package/script/pkg/commands/bitcount.js +20 -0
  132. package/script/pkg/commands/bitop.js +13 -0
  133. package/script/pkg/commands/bitpos.js +13 -0
  134. package/script/pkg/commands/command.js +50 -0
  135. package/script/pkg/commands/dbsize.js +13 -0
  136. package/script/pkg/commands/decr.js +13 -0
  137. package/script/pkg/commands/decrby.js +13 -0
  138. package/script/pkg/commands/del.js +13 -0
  139. package/script/pkg/commands/echo.js +13 -0
  140. package/script/pkg/commands/eval.js +13 -0
  141. package/script/pkg/commands/evalsha.js +13 -0
  142. package/script/pkg/commands/exists.js +13 -0
  143. package/script/pkg/commands/expire.js +13 -0
  144. package/script/pkg/commands/expireat.js +13 -0
  145. package/script/pkg/commands/flushall.js +17 -0
  146. package/script/pkg/commands/flushdb.js +17 -0
  147. package/script/pkg/commands/get.js +13 -0
  148. package/script/pkg/commands/getbit.js +13 -0
  149. package/script/pkg/commands/getrange.js +13 -0
  150. package/script/pkg/commands/getset.js +13 -0
  151. package/script/pkg/commands/hdel.js +13 -0
  152. package/script/pkg/commands/hexists.js +13 -0
  153. package/script/pkg/commands/hget.js +13 -0
  154. package/script/pkg/commands/hgetall.js +34 -0
  155. package/script/pkg/commands/hincrby.js +13 -0
  156. package/script/pkg/commands/hincrbyfloat.js +13 -0
  157. package/script/pkg/commands/hkeys.js +13 -0
  158. package/script/pkg/commands/hlen.js +13 -0
  159. package/script/pkg/commands/hmget.js +36 -0
  160. package/script/pkg/commands/hmset.js +17 -0
  161. package/script/pkg/commands/hscan.js +20 -0
  162. package/script/pkg/commands/hset.js +17 -0
  163. package/script/pkg/commands/hsetnx.js +13 -0
  164. package/script/pkg/commands/hstrlen.js +13 -0
  165. package/script/pkg/commands/hvals.js +13 -0
  166. package/script/pkg/commands/incr.js +13 -0
  167. package/script/pkg/commands/incrby.js +13 -0
  168. package/script/pkg/commands/incrbyfloat.js +13 -0
  169. package/script/pkg/commands/keys.js +13 -0
  170. package/script/pkg/commands/lindex.js +10 -0
  171. package/script/pkg/commands/linsert.js +10 -0
  172. package/script/pkg/commands/llen.js +13 -0
  173. package/script/pkg/commands/lpop.js +13 -0
  174. package/script/pkg/commands/lpush.js +13 -0
  175. package/script/pkg/commands/lpushx.js +13 -0
  176. package/script/pkg/commands/lrange.js +10 -0
  177. package/script/pkg/commands/lrem.js +10 -0
  178. package/script/pkg/commands/lset.js +10 -0
  179. package/script/pkg/commands/ltrim.js +10 -0
  180. package/script/pkg/commands/mget.js +13 -0
  181. package/script/pkg/commands/mod.js +130 -0
  182. package/script/pkg/commands/mset.js +16 -0
  183. package/script/pkg/commands/msetnx.js +13 -0
  184. package/script/pkg/commands/persist.js +13 -0
  185. package/script/pkg/commands/pexpire.js +13 -0
  186. package/script/pkg/commands/pexpireat.js +13 -0
  187. package/script/pkg/commands/ping.js +17 -0
  188. package/script/pkg/commands/psetex.js +13 -0
  189. package/script/pkg/commands/pttl.js +13 -0
  190. package/script/pkg/commands/publish.js +13 -0
  191. package/script/pkg/commands/randomkey.js +13 -0
  192. package/script/pkg/commands/rename.js +13 -0
  193. package/script/pkg/commands/renamenx.js +13 -0
  194. package/script/pkg/commands/rpop.js +13 -0
  195. package/script/pkg/commands/rpush.js +13 -0
  196. package/script/pkg/commands/rpushx.js +13 -0
  197. package/script/pkg/commands/sadd.js +13 -0
  198. package/script/pkg/commands/scan.js +20 -0
  199. package/script/pkg/commands/scard.js +13 -0
  200. package/script/pkg/commands/script_exists.js +24 -0
  201. package/script/pkg/commands/script_flush.js +20 -0
  202. package/script/pkg/commands/script_load.js +13 -0
  203. package/script/pkg/commands/sdiff.js +13 -0
  204. package/script/pkg/commands/sdiffstore.js +13 -0
  205. package/script/pkg/commands/set.js +28 -0
  206. package/script/pkg/commands/setbit.js +13 -0
  207. package/script/pkg/commands/setex.js +13 -0
  208. package/script/pkg/commands/setnx.js +13 -0
  209. package/script/pkg/commands/setrange.js +13 -0
  210. package/script/pkg/commands/sinter.js +13 -0
  211. package/script/pkg/commands/sinterstore.js +13 -0
  212. package/script/pkg/commands/sismember.js +13 -0
  213. package/script/pkg/commands/smembers.js +13 -0
  214. package/script/pkg/commands/smove.js +13 -0
  215. package/script/pkg/commands/spop.js +17 -0
  216. package/script/pkg/commands/srandmember.js +17 -0
  217. package/script/pkg/commands/srem.js +13 -0
  218. package/script/pkg/commands/sscan.js +20 -0
  219. package/script/pkg/commands/strlen.js +13 -0
  220. package/script/pkg/commands/sunion.js +13 -0
  221. package/script/pkg/commands/sunionstore.js +13 -0
  222. package/script/pkg/commands/time.js +13 -0
  223. package/script/pkg/commands/touch.js +13 -0
  224. package/script/pkg/commands/ttl.js +13 -0
  225. package/script/pkg/commands/type.js +13 -0
  226. package/script/pkg/commands/unlink.js +13 -0
  227. package/script/pkg/commands/zadd.js +30 -0
  228. package/script/pkg/commands/zcard.js +13 -0
  229. package/script/pkg/commands/zcount.js +13 -0
  230. package/script/pkg/commands/zincrby.js +13 -0
  231. package/script/pkg/commands/zinterstore.js +31 -0
  232. package/script/pkg/commands/zlexcount.js +13 -0
  233. package/script/pkg/commands/zpopmax.js +17 -0
  234. package/script/pkg/commands/zpopmin.js +17 -0
  235. package/script/pkg/commands/zrange.js +24 -0
  236. package/script/pkg/commands/zrank.js +13 -0
  237. package/script/pkg/commands/zrem.js +13 -0
  238. package/script/pkg/commands/zremrangebylex.js +13 -0
  239. package/script/pkg/commands/zremrangebyrank.js +13 -0
  240. package/script/pkg/commands/zremrangebyscore.js +13 -0
  241. package/script/pkg/commands/zrevrank.js +13 -0
  242. package/script/pkg/commands/zscan.js +20 -0
  243. package/script/pkg/commands/zscore.js +13 -0
  244. package/script/pkg/commands/zunionstore.js +31 -0
  245. package/script/pkg/error.js +13 -0
  246. package/script/pkg/http.js +53 -0
  247. package/script/pkg/pipeline.js +1122 -0
  248. package/script/pkg/redis.js +1065 -0
  249. package/script/pkg/types.js +2 -0
  250. package/script/pkg/util.js +35 -0
  251. package/script/platforms/cloudflare.js +97 -0
  252. package/script/platforms/fastly.js +76 -0
  253. package/script/platforms/nodejs.js +98 -0
  254. package/types/pkg/commands/append.d.ts +7 -0
  255. package/types/pkg/commands/bitcount.d.ts +8 -0
  256. package/types/pkg/commands/bitop.d.ts +8 -0
  257. package/types/pkg/commands/bitpos.d.ts +7 -0
  258. package/types/pkg/commands/command.d.ts +23 -0
  259. package/types/pkg/commands/dbsize.d.ts +7 -0
  260. package/types/pkg/commands/decr.d.ts +7 -0
  261. package/types/pkg/commands/decrby.d.ts +7 -0
  262. package/types/pkg/commands/del.d.ts +8 -0
  263. package/types/pkg/commands/echo.d.ts +7 -0
  264. package/types/pkg/commands/eval.d.ts +7 -0
  265. package/types/pkg/commands/evalsha.d.ts +7 -0
  266. package/types/pkg/commands/exists.d.ts +8 -0
  267. package/types/pkg/commands/expire.d.ts +7 -0
  268. package/types/pkg/commands/expireat.d.ts +7 -0
  269. package/types/pkg/commands/flushall.d.ts +9 -0
  270. package/types/pkg/commands/flushdb.d.ts +9 -0
  271. package/types/pkg/commands/get.d.ts +7 -0
  272. package/types/pkg/commands/getbit.d.ts +7 -0
  273. package/types/pkg/commands/getrange.d.ts +7 -0
  274. package/types/pkg/commands/getset.d.ts +7 -0
  275. package/types/pkg/commands/hdel.d.ts +7 -0
  276. package/types/pkg/commands/hexists.d.ts +7 -0
  277. package/types/pkg/commands/hget.d.ts +7 -0
  278. package/types/pkg/commands/hgetall.d.ts +7 -0
  279. package/types/pkg/commands/hincrby.d.ts +7 -0
  280. package/types/pkg/commands/hincrbyfloat.d.ts +7 -0
  281. package/types/pkg/commands/hkeys.d.ts +7 -0
  282. package/types/pkg/commands/hlen.d.ts +7 -0
  283. package/types/pkg/commands/hmget.d.ts +15 -0
  284. package/types/pkg/commands/hmset.d.ts +9 -0
  285. package/types/pkg/commands/hscan.d.ts +14 -0
  286. package/types/pkg/commands/hset.d.ts +9 -0
  287. package/types/pkg/commands/hsetnx.d.ts +7 -0
  288. package/types/pkg/commands/hstrlen.d.ts +7 -0
  289. package/types/pkg/commands/hvals.d.ts +7 -0
  290. package/types/pkg/commands/incr.d.ts +7 -0
  291. package/types/pkg/commands/incrby.d.ts +7 -0
  292. package/types/pkg/commands/incrbyfloat.d.ts +7 -0
  293. package/types/pkg/commands/keys.d.ts +7 -0
  294. package/types/pkg/commands/lindex.d.ts +4 -0
  295. package/types/pkg/commands/linsert.d.ts +4 -0
  296. package/types/pkg/commands/llen.d.ts +7 -0
  297. package/types/pkg/commands/lpop.d.ts +7 -0
  298. package/types/pkg/commands/lpush.d.ts +8 -0
  299. package/types/pkg/commands/lpushx.d.ts +8 -0
  300. package/types/pkg/commands/lrange.d.ts +4 -0
  301. package/types/pkg/commands/lrem.d.ts +4 -0
  302. package/types/pkg/commands/lset.d.ts +4 -0
  303. package/types/pkg/commands/ltrim.d.ts +4 -0
  304. package/types/pkg/commands/mget.d.ts +7 -0
  305. package/types/pkg/commands/mod.d.ts +114 -0
  306. package/types/pkg/commands/mset.d.ts +9 -0
  307. package/types/pkg/commands/msetnx.d.ts +9 -0
  308. package/types/pkg/commands/persist.d.ts +7 -0
  309. package/types/pkg/commands/pexpire.d.ts +7 -0
  310. package/types/pkg/commands/pexpireat.d.ts +7 -0
  311. package/types/pkg/commands/ping.d.ts +7 -0
  312. package/types/pkg/commands/psetex.d.ts +7 -0
  313. package/types/pkg/commands/pttl.d.ts +7 -0
  314. package/types/pkg/commands/publish.d.ts +7 -0
  315. package/types/pkg/commands/randomkey.d.ts +7 -0
  316. package/types/pkg/commands/rename.d.ts +7 -0
  317. package/types/pkg/commands/renamenx.d.ts +7 -0
  318. package/types/pkg/commands/rpop.d.ts +7 -0
  319. package/types/pkg/commands/rpush.d.ts +8 -0
  320. package/types/pkg/commands/rpushx.d.ts +8 -0
  321. package/types/pkg/commands/sadd.d.ts +8 -0
  322. package/types/pkg/commands/scan.d.ts +11 -0
  323. package/types/pkg/commands/scard.d.ts +7 -0
  324. package/types/pkg/commands/script_exists.d.ts +12 -0
  325. package/types/pkg/commands/script_flush.d.ts +14 -0
  326. package/types/pkg/commands/script_load.d.ts +7 -0
  327. package/types/pkg/commands/sdiff.d.ts +7 -0
  328. package/types/pkg/commands/sdiffstore.d.ts +8 -0
  329. package/types/pkg/commands/set.d.ts +26 -0
  330. package/types/pkg/commands/setbit.d.ts +7 -0
  331. package/types/pkg/commands/setex.d.ts +7 -0
  332. package/types/pkg/commands/setnx.d.ts +7 -0
  333. package/types/pkg/commands/setrange.d.ts +7 -0
  334. package/types/pkg/commands/sinter.d.ts +7 -0
  335. package/types/pkg/commands/sinterstore.d.ts +7 -0
  336. package/types/pkg/commands/sismember.d.ts +7 -0
  337. package/types/pkg/commands/smembers.d.ts +7 -0
  338. package/types/pkg/commands/smove.d.ts +7 -0
  339. package/types/pkg/commands/spop.d.ts +7 -0
  340. package/types/pkg/commands/srandmember.d.ts +7 -0
  341. package/types/pkg/commands/srem.d.ts +8 -0
  342. package/types/pkg/commands/sscan.d.ts +14 -0
  343. package/types/pkg/commands/strlen.d.ts +7 -0
  344. package/types/pkg/commands/sunion.d.ts +7 -0
  345. package/types/pkg/commands/sunionstore.d.ts +7 -0
  346. package/types/pkg/commands/time.d.ts +7 -0
  347. package/types/pkg/commands/touch.d.ts +8 -0
  348. package/types/pkg/commands/ttl.d.ts +7 -0
  349. package/types/pkg/commands/type.d.ts +8 -0
  350. package/types/pkg/commands/unlink.d.ts +7 -0
  351. package/types/pkg/commands/zadd.d.ts +27 -0
  352. package/types/pkg/commands/zcard.d.ts +7 -0
  353. package/types/pkg/commands/zcount.d.ts +7 -0
  354. package/types/pkg/commands/zincrby.d.ts +7 -0
  355. package/types/pkg/commands/zinterstore.d.ts +20 -0
  356. package/types/pkg/commands/zlexcount.d.ts +7 -0
  357. package/types/pkg/commands/zpopmax.d.ts +7 -0
  358. package/types/pkg/commands/zpopmin.d.ts +7 -0
  359. package/types/pkg/commands/zrange.d.ts +25 -0
  360. package/types/pkg/commands/zrank.d.ts +7 -0
  361. package/types/pkg/commands/zrem.d.ts +8 -0
  362. package/types/pkg/commands/zremrangebylex.d.ts +7 -0
  363. package/types/pkg/commands/zremrangebyrank.d.ts +7 -0
  364. package/types/pkg/commands/zremrangebyscore.d.ts +7 -0
  365. package/types/pkg/commands/zrevrank.d.ts +7 -0
  366. package/types/pkg/commands/zscan.d.ts +14 -0
  367. package/types/pkg/commands/zscore.d.ts +7 -0
  368. package/types/pkg/commands/zunionstore.d.ts +20 -0
  369. package/types/pkg/error.d.ts +6 -0
  370. package/{http.d.ts → types/pkg/http.d.ts} +8 -7
  371. package/types/pkg/pipeline.d.ts +543 -0
  372. package/types/pkg/redis.d.ts +509 -0
  373. package/types/pkg/types.d.ts +2 -0
  374. package/types/pkg/util.d.ts +1 -0
  375. package/{cloudflare.d.ts → types/platforms/cloudflare.d.ts} +5 -8
  376. package/{fastly.d.ts → types/platforms/fastly.d.ts} +5 -8
  377. package/types/platforms/nodejs.d.ts +81 -0
  378. package/chunk-5567SQFQ.mjs +0 -1088
  379. package/chunk-7YUZYRJS.mjs +0 -29
  380. package/chunk-HIDCSH5S.mjs +0 -36
  381. package/chunk-KI7YOGWS.mjs +0 -429
  382. package/chunk-T3BIHZ2F.mjs +0 -38
  383. package/cloudflare.js +0 -1390
  384. package/cloudflare.mjs +0 -36
  385. package/commands.d.ts +0 -734
  386. package/commands.js +0 -1231
  387. package/commands.mjs +0 -225
  388. package/fastly.js +0 -1379
  389. package/fastly.mjs +0 -25
  390. package/http.js +0 -83
  391. package/http.mjs +0 -7
  392. package/index.d.ts +0 -13
  393. package/index.js +0 -1395
  394. package/index.mjs +0 -13
  395. package/nodejs.d.ts +0 -47
  396. package/nodejs.js +0 -1393
  397. package/nodejs.mjs +0 -10
  398. package/redis-364a4445.d.ts +0 -1064
  399. package/zunionstore-342168a6.d.ts +0 -173
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Upstash, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -19,12 +19,16 @@ It is the only connectionless (HTTP based) Redis client and designed for:
19
19
  - WebAssembly
20
20
  - and other environments where HTTP is preferred over TCP.
21
21
 
22
- See [the list of APIs](https://docs.upstash.com/features/restapi#rest---redis-api-compatibility) supported.
22
+ See
23
+ [the list of APIs](https://docs.upstash.com/features/restapi#rest---redis-api-compatibility)
24
+ supported.
23
25
 
24
26
  ## Upgrading from v0.2.0?
25
27
 
26
- Please read the [migration guide](https://github.com/upstash/upstash-redis#migrating-to-v1).
27
- For further explanation we wrote a [blog post](https://blog.upstash.com/upstash-redis-sdk-v1).
28
+ Please read the
29
+ [migration guide](https://github.com/upstash/upstash-redis#migrating-to-v1). For
30
+ further explanation we wrote a
31
+ [blog post](https://blog.upstash.com/upstash-redis-sdk-v1).
28
32
 
29
33
  ## Quick Start
30
34
 
@@ -40,14 +44,17 @@ Create a new redis database on [upstash](https://console.upstash.com/)
40
44
 
41
45
  ### Environments
42
46
 
43
- We support various platforms, such as nodejs, cloudflare and fastly.
44
- Platforms differ slightly when it comes to environment variables and their `fetch` api. Please use the correct import when deploying to special platforms.
47
+ We support various platforms, such as nodejs, cloudflare and fastly. Platforms
48
+ differ slightly when it comes to environment variables and their `fetch` api.
49
+ Please use the correct import when deploying to special platforms.
45
50
 
46
51
  #### Node.js
47
52
 
48
53
  Examples: Vercel, Netlify, AWS Lambda
49
54
 
50
- If you are running on nodejs you can set `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` as environment variable and create a redis instance like this:
55
+ If you are running on nodejs you can set `UPSTASH_REDIS_REST_URL` and
56
+ `UPSTASH_REDIS_REST_TOKEN` as environment variable and create a redis instance
57
+ like this:
51
58
 
52
59
  ```ts
53
60
  import { Redis } from "@upstash/redis"
@@ -65,8 +72,9 @@ const redis = Redis.fromEnv()
65
72
 
66
73
  #### Cloudflare Workers
67
74
 
68
- Cloudflare handles environment variables differently than nodejs.
69
- Please add `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` using `wrangler secret put ...` or in the cloudflare dashboard.
75
+ Cloudflare handles environment variables differently than nodejs. Please add
76
+ `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` using
77
+ `wrangler secret put ...` or in the cloudflare dashboard.
70
78
 
71
79
  Afterwards you can create a redis instance:
72
80
 
@@ -92,7 +100,6 @@ export default {
92
100
  // ...
93
101
  }
94
102
  }
95
-
96
103
  ```
97
104
 
98
105
  - [Code example service worker](https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers)
@@ -101,7 +108,10 @@ export default {
101
108
 
102
109
  #### Fastly
103
110
 
104
- Fastly introduces a concept called [backend](https://developer.fastly.com/reference/api/services/backend/). You need to configure a backend in your `fastly.toml`. An example can be found [here](https://github.com/upstash/upstash-redis/blob/main/examples/fastly/fastly.toml).
111
+ Fastly introduces a concept called
112
+ [backend](https://developer.fastly.com/reference/api/services/backend/). You
113
+ need to configure a backend in your `fastly.toml`. An example can be found
114
+ [here](https://github.com/upstash/upstash-redis/blob/main/examples/fastly/fastly.toml).
105
115
  Until the fastly api stabilizes we recommend creating an instance manually:
106
116
 
107
117
  ```ts
@@ -119,10 +129,11 @@ const redis = new Redis({
119
129
 
120
130
  ### Working with types
121
131
 
122
- Most commands allow you to provide a type to make working with typescript easier.
132
+ Most commands allow you to provide a type to make working with typescript
133
+ easier.
123
134
 
124
135
  ```ts
125
- const data = await redis.get<MyCustomType>("key")
136
+ const data = await redis.get<MyCustomType>("key");
126
137
  // data is typed as `MyCustomType`
127
138
  ```
128
139
 
@@ -130,8 +141,8 @@ const data = await redis.get<MyCustomType>("key")
130
141
 
131
142
  ### Explicit authentication
132
143
 
133
- The library is no longer automatically trying to load connection secrets from environment variables.
134
- You must either supply them yourself:
144
+ The library is no longer automatically trying to load connection secrets from
145
+ environment variables. You must either supply them yourself:
135
146
 
136
147
  ```ts
137
148
  import { Redis } from "@upstash/redis"
@@ -146,14 +157,14 @@ Or use one of the static constructors to load from environment variables:
146
157
 
147
158
  ```ts
148
159
  // Nodejs
149
- import { Redis } from "@upstash/redis"
150
- const redis = Redis.fromEnv()
160
+ import { Redis } from "@upstash/redis";
161
+ const redis = Redis.fromEnv();
151
162
  ```
152
163
 
153
164
  ```ts
154
165
  // or when deploying to cloudflare workers
155
- import { Redis } from "@upstash/redis/cloudflare"
156
- const redis = Redis.fromEnv()
166
+ import { Redis } from "@upstash/redis/cloudflare";
167
+ const redis = Redis.fromEnv();
157
168
  ```
158
169
 
159
170
  ### Error handling
@@ -162,50 +173,56 @@ Errors are now thrown automatically instead of being returned to you.
162
173
 
163
174
  ```ts
164
175
  // old
165
- const { data, error } = await set("key", "value")
176
+ const { data, error } = await set("key", "value");
166
177
  if (error) {
167
- throw new Error(error)
178
+ throw new Error(error);
168
179
  }
169
180
 
170
181
  // new
171
- const data = await redis.set("key", "value") // error is thrown automatically
182
+ const data = await redis.set("key", "value"); // error is thrown automatically
172
183
  ```
173
184
 
174
185
  ## Pipeline
175
186
 
176
- `v1.0.0` introduces redis pipelines.
177
- Pipelining commands allows you to send a single http request with multiple commands.
187
+ `v1.0.0` introduces redis pipelines. Pipelining commands allows you to send a
188
+ single http request with multiple commands.
178
189
 
179
190
  ```ts
180
- import { Redis } from "@upstash/redis"
191
+ import { Redis } from "@upstash/redis";
181
192
 
182
193
  const redis = new Redis({
183
194
  /* auth */
184
- })
195
+ });
185
196
 
186
- const p = redis.pipeline()
197
+ const p = redis.pipeline();
187
198
 
188
199
  // Now you can chain multiple commands to create your pipeline:
189
200
 
190
- p.set("key", 2)
191
- p.incr("key")
201
+ p.set("key", 2);
202
+ p.incr("key");
192
203
 
193
204
  // or inline:
194
- p.hset("key2", "field", { hello: "world" }).hvals("key2")
205
+ p.hset("key2", "field", { hello: "world" }).hvals("key2");
195
206
 
196
207
  // Execute the pipeline once you are done building it:
197
208
  // `exec` returns an array where each element represents the response of a command in the pipeline.
198
209
  // You can optionally provide a type like this to get a typed response.
199
- const res = await p.exec<[Type1, Type2, Type3]>()
210
+ const res = await p.exec<[Type1, Type2, Type3]>();
200
211
  ```
201
212
 
202
- For more information about pipelines using REST see [here](https://blog.upstash.com/pipeline).
213
+ For more information about pipelines using REST see
214
+ [here](https://blog.upstash.com/pipeline).
203
215
 
204
216
  ### Advanced
205
217
 
206
- A low level `Command` class can be imported from `@upstash/redis` in case you need more control about types and or (de)serialization.
218
+ A low level `Command` class can be imported from `@upstash/redis` in case you
219
+ need more control about types and or (de)serialization.
207
220
 
208
- By default all objects you are storing in redis are serialized using `JSON.stringify` and recursively deserialized as well. Here's an example how you could customize that behaviour. Keep in mind that you need to provide a `fetch` polyfill if you are running on nodejs. We recommend [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch).
221
+ By default all objects you are storing in redis are serialized using
222
+ `JSON.stringify` and recursively deserialized as well. Here's an example how you
223
+ could customize that behaviour. Keep in mind that you need to provide a `fetch`
224
+ polyfill if you are running on nodejs. We recommend
225
+ [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch).
209
226
 
210
227
  ```ts
211
228
  import { Command } from "@upstash/redis/commands"
@@ -232,25 +249,53 @@ const client = new HttpClient({
232
249
  })
233
250
 
234
251
  const res = new CustomGetCommand("key").exec(client)
252
+ ```
235
253
 
254
+ ### Additional information
255
+
256
+ #### `keepalive`
257
+
258
+ `@upstash/redis` is capable of reusing connections where possible to minimize
259
+ latency. Connections can be reused if the client is stored in memory and not
260
+ initialized with every new function invocation. The easiest way to achieve this
261
+ is by creating the client outside of your handler and adding an https agent:
262
+
263
+ ```ts
264
+ // Nextjs api route
265
+ import { Redis } from "@upstash/redis";
266
+ import https from "https";
267
+
268
+ const redis = Redis.fromEnv({
269
+ agent: new https.Agent({ keepAlive: true }),
270
+ });
271
+
272
+ export default async function (req, res) {
273
+ // use redis here
274
+ }
236
275
  ```
237
276
 
277
+ Whenever your hot lambda receives a new request the client is already
278
+ initialized and the previously established connection to upstash is reused.
279
+
238
280
  #### Javascript MAX_SAFE_INTEGER
239
281
 
240
- Javascript can not handle numbers larger than `2^53 -1` safely and would return wrong results when trying to deserialize them.
241
- In these cases the default deserializer will return them as string instead. This might cause a mismatch with your custom types.
282
+ Javascript can not handle numbers larger than `2^53 -1` safely and would return
283
+ wrong results when trying to deserialize them. In these cases the default
284
+ deserializer will return them as string instead. This might cause a mismatch
285
+ with your custom types.
242
286
 
243
287
  ```ts
244
- await redis.set("key", "101600000000150081467")
245
- const res = await redis<number>("get")
288
+ await redis.set("key", "101600000000150081467");
289
+ const res = await redis<number>("get");
246
290
  ```
247
291
 
248
- In this example `res` will still be a string despite the type annotation.
249
- Please keep that in mind and adjust accordingly.
292
+ In this example `res` will still be a string despite the type annotation. Please
293
+ keep that in mind and adjust accordingly.
250
294
 
251
295
  ## Docs
252
296
 
253
- See [the documentation](https://docs.upstash.com/features/javascriptsdk) for details.
297
+ See [the documentation](https://docs.upstash.com/features/javascriptsdk) for
298
+ details.
254
299
 
255
300
  ## Contributing
256
301
 
@@ -262,7 +307,8 @@ pnpm install
262
307
 
263
308
  ### Database
264
309
 
265
- Create a new redis database on [upstash](https://console.upstash.com/) and copy the url and token to `.env` (See `.env.example` for reference)
310
+ Create a new redis database on [upstash](https://console.upstash.com/) and copy
311
+ the url and token to `.env` (See `.env.example` for reference)
266
312
 
267
313
  ### Running tests
268
314
 
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/append
4
+ */
5
+ export class AppendCommand extends Command {
6
+ constructor(key, value) {
7
+ super(["append", key, value]);
8
+ }
9
+ }
@@ -0,0 +1,16 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/bitcount
4
+ */
5
+ export class BitCountCommand extends Command {
6
+ constructor(key, start, end) {
7
+ const command = ["bitcount", key];
8
+ if (typeof start === "number") {
9
+ command.push(start);
10
+ }
11
+ if (typeof end === "number") {
12
+ command.push(end);
13
+ }
14
+ super(command);
15
+ }
16
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/bitop
4
+ */
5
+ export class BitOpCommand extends Command {
6
+ constructor(op, destinationKey, sourceKey, ...sourceKeys) {
7
+ super(["bitop", op, destinationKey, sourceKey, ...sourceKeys]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/bitpos
4
+ */
5
+ export class BitPosCommand extends Command {
6
+ constructor(key, start, end) {
7
+ super(["bitpos", key, start, end]);
8
+ }
9
+ }
@@ -0,0 +1,46 @@
1
+ import { UpstashError } from "../error.js";
2
+ import { parseResponse } from "../util.js";
3
+ /**
4
+ * Command offers default (de)serialization and the exec method to all commands.
5
+ *
6
+ * TData represents what the user will enter or receive,
7
+ * TResult is the raw data returned from upstash, which may need to be transformed or parsed.
8
+ */
9
+ export class Command {
10
+ /**
11
+ * Create a new command instance.
12
+ *
13
+ * You can define a custom `deserialize` function. By default we try to deserialize as json.
14
+ */
15
+ constructor(command, opts) {
16
+ Object.defineProperty(this, "command", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: void 0
21
+ });
22
+ Object.defineProperty(this, "deserialize", {
23
+ enumerable: true,
24
+ configurable: true,
25
+ writable: true,
26
+ value: void 0
27
+ });
28
+ this.command = command.map((c) => typeof c === "string" ? c : JSON.stringify(c));
29
+ this.deserialize = opts?.deserialize ?? parseResponse;
30
+ }
31
+ /**
32
+ * Execute the command using a client.
33
+ */
34
+ async exec(client) {
35
+ const { result, error } = await client.request({
36
+ body: this.command,
37
+ });
38
+ if (error) {
39
+ throw new UpstashError(error);
40
+ }
41
+ if (typeof result === "undefined") {
42
+ throw new Error(`Request did not return a result`);
43
+ }
44
+ return this.deserialize(result);
45
+ }
46
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/dbsize
4
+ */
5
+ export class DBSizeCommand extends Command {
6
+ constructor() {
7
+ super(["dbsize"]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/decr
4
+ */
5
+ export class DecrCommand extends Command {
6
+ constructor(key) {
7
+ super(["decr", key]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/decrby
4
+ */
5
+ export class DecrByCommand extends Command {
6
+ constructor(key, decrement) {
7
+ super(["decrby", key, decrement]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/del
4
+ */
5
+ export class DelCommand extends Command {
6
+ constructor(...keys) {
7
+ super(["del", ...keys]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/echo
4
+ */
5
+ export class EchoCommand extends Command {
6
+ constructor(message) {
7
+ super(["echo", message]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/eval
4
+ */
5
+ export class EvalCommand extends Command {
6
+ constructor(script, keys, args) {
7
+ super(["eval", script, keys.length, ...keys, ...(args ?? [])]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/evalsha
4
+ */
5
+ export class EvalshaCommand extends Command {
6
+ constructor(sha, keys, args) {
7
+ super(["evalsha", sha, keys.length, ...keys, ...(args ?? [])]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/exists
4
+ */
5
+ export class ExistsCommand extends Command {
6
+ constructor(...keys) {
7
+ super(["exists", ...keys]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/expire
4
+ */
5
+ export class ExpireCommand extends Command {
6
+ constructor(key, seconds) {
7
+ super(["expire", key, seconds]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/expireat
4
+ */
5
+ export class ExpireAtCommand extends Command {
6
+ constructor(key, unix) {
7
+ super(["expireat", key, unix]);
8
+ }
9
+ }
@@ -0,0 +1,13 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/flushall
4
+ */
5
+ export class FlushAllCommand extends Command {
6
+ constructor(opts) {
7
+ const command = ["flushall"];
8
+ if (opts?.async) {
9
+ command.push("async");
10
+ }
11
+ super(command);
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/flushdb
4
+ */
5
+ export class FlushDBCommand extends Command {
6
+ constructor(opts) {
7
+ const command = ["flushdb"];
8
+ if (opts?.async) {
9
+ command.push("async");
10
+ }
11
+ super(command);
12
+ }
13
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/get
4
+ */
5
+ export class GetCommand extends Command {
6
+ constructor(key) {
7
+ super(["get", key]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/getbit
4
+ */
5
+ export class GetBitCommand extends Command {
6
+ constructor(key, offset) {
7
+ super(["getbit", key, offset]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/getrange
4
+ */
5
+ export class GetRangeCommand extends Command {
6
+ constructor(key, start, end) {
7
+ super(["getrange", key, start, end]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/getset
4
+ */
5
+ export class GetSetCommand extends Command {
6
+ constructor(key, value) {
7
+ super(["getset", key, value]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/hdel
4
+ */
5
+ export class HDelCommand extends Command {
6
+ constructor(key, field) {
7
+ super(["hdel", key, field]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/hexists
4
+ */
5
+ export class HExistsCommand extends Command {
6
+ constructor(key, field) {
7
+ super(["hexists", key, field]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/hget
4
+ */
5
+ export class HGetCommand extends Command {
6
+ constructor(key, field) {
7
+ super(["hget", key, field]);
8
+ }
9
+ }
@@ -0,0 +1,30 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @param result De
4
+ * @returns
5
+ */
6
+ function deserialize(result) {
7
+ if (result.length === 0) {
8
+ return null;
9
+ }
10
+ const obj = {};
11
+ while (result.length >= 2) {
12
+ const key = result.shift();
13
+ const value = result.shift();
14
+ try {
15
+ obj[key] = JSON.parse(value);
16
+ }
17
+ catch {
18
+ obj[key] = value;
19
+ }
20
+ }
21
+ return obj;
22
+ }
23
+ /**
24
+ * @see https://redis.io/commands/hgetall
25
+ */
26
+ export class HGetAllCommand extends Command {
27
+ constructor(key) {
28
+ super(["hgetall", key], { deserialize: (result) => deserialize(result) });
29
+ }
30
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/hincrby
4
+ */
5
+ export class HIncrByCommand extends Command {
6
+ constructor(key, field, increment) {
7
+ super(["hincrby", key, field, increment]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/hincrbyfloat
4
+ */
5
+ export class HIncrByFloatCommand extends Command {
6
+ constructor(key, field, increment) {
7
+ super(["hincrbyfloat", key, field, increment]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/hkeys
4
+ */
5
+ export class HKeysCommand extends Command {
6
+ constructor(key) {
7
+ super(["hkeys", key]);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/hlen
4
+ */
5
+ export class HLenCommand extends Command {
6
+ constructor(key) {
7
+ super(["hlen", key]);
8
+ }
9
+ }