@upstash/redis 1.3.0 → 1.3.2-alpha.1

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 (404) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -48
  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 +69 -0
  128. package/esm/platforms/vercel.js +68 -0
  129. package/package.json +90 -1
  130. package/script/package.json +3 -0
  131. package/script/pkg/commands/append.js +13 -0
  132. package/script/pkg/commands/bitcount.js +20 -0
  133. package/script/pkg/commands/bitop.js +13 -0
  134. package/script/pkg/commands/bitpos.js +13 -0
  135. package/script/pkg/commands/command.js +50 -0
  136. package/script/pkg/commands/dbsize.js +13 -0
  137. package/script/pkg/commands/decr.js +13 -0
  138. package/script/pkg/commands/decrby.js +13 -0
  139. package/script/pkg/commands/del.js +13 -0
  140. package/script/pkg/commands/echo.js +13 -0
  141. package/script/pkg/commands/eval.js +13 -0
  142. package/script/pkg/commands/evalsha.js +13 -0
  143. package/script/pkg/commands/exists.js +13 -0
  144. package/script/pkg/commands/expire.js +13 -0
  145. package/script/pkg/commands/expireat.js +13 -0
  146. package/script/pkg/commands/flushall.js +17 -0
  147. package/script/pkg/commands/flushdb.js +17 -0
  148. package/script/pkg/commands/get.js +13 -0
  149. package/script/pkg/commands/getbit.js +13 -0
  150. package/script/pkg/commands/getrange.js +13 -0
  151. package/script/pkg/commands/getset.js +13 -0
  152. package/script/pkg/commands/hdel.js +13 -0
  153. package/script/pkg/commands/hexists.js +13 -0
  154. package/script/pkg/commands/hget.js +13 -0
  155. package/script/pkg/commands/hgetall.js +34 -0
  156. package/script/pkg/commands/hincrby.js +13 -0
  157. package/script/pkg/commands/hincrbyfloat.js +13 -0
  158. package/script/pkg/commands/hkeys.js +13 -0
  159. package/script/pkg/commands/hlen.js +13 -0
  160. package/script/pkg/commands/hmget.js +36 -0
  161. package/script/pkg/commands/hmset.js +17 -0
  162. package/script/pkg/commands/hscan.js +20 -0
  163. package/script/pkg/commands/hset.js +17 -0
  164. package/script/pkg/commands/hsetnx.js +13 -0
  165. package/script/pkg/commands/hstrlen.js +13 -0
  166. package/script/pkg/commands/hvals.js +13 -0
  167. package/script/pkg/commands/incr.js +13 -0
  168. package/script/pkg/commands/incrby.js +13 -0
  169. package/script/pkg/commands/incrbyfloat.js +13 -0
  170. package/script/pkg/commands/keys.js +13 -0
  171. package/script/pkg/commands/lindex.js +10 -0
  172. package/script/pkg/commands/linsert.js +10 -0
  173. package/script/pkg/commands/llen.js +13 -0
  174. package/script/pkg/commands/lpop.js +13 -0
  175. package/script/pkg/commands/lpush.js +13 -0
  176. package/script/pkg/commands/lpushx.js +13 -0
  177. package/script/pkg/commands/lrange.js +10 -0
  178. package/script/pkg/commands/lrem.js +10 -0
  179. package/script/pkg/commands/lset.js +10 -0
  180. package/script/pkg/commands/ltrim.js +10 -0
  181. package/script/pkg/commands/mget.js +13 -0
  182. package/script/pkg/commands/mod.js +130 -0
  183. package/script/pkg/commands/mset.js +16 -0
  184. package/script/pkg/commands/msetnx.js +13 -0
  185. package/script/pkg/commands/persist.js +13 -0
  186. package/script/pkg/commands/pexpire.js +13 -0
  187. package/script/pkg/commands/pexpireat.js +13 -0
  188. package/script/pkg/commands/ping.js +17 -0
  189. package/script/pkg/commands/psetex.js +13 -0
  190. package/script/pkg/commands/pttl.js +13 -0
  191. package/script/pkg/commands/publish.js +13 -0
  192. package/script/pkg/commands/randomkey.js +13 -0
  193. package/script/pkg/commands/rename.js +13 -0
  194. package/script/pkg/commands/renamenx.js +13 -0
  195. package/script/pkg/commands/rpop.js +13 -0
  196. package/script/pkg/commands/rpush.js +13 -0
  197. package/script/pkg/commands/rpushx.js +13 -0
  198. package/script/pkg/commands/sadd.js +13 -0
  199. package/script/pkg/commands/scan.js +20 -0
  200. package/script/pkg/commands/scard.js +13 -0
  201. package/script/pkg/commands/script_exists.js +24 -0
  202. package/script/pkg/commands/script_flush.js +20 -0
  203. package/script/pkg/commands/script_load.js +13 -0
  204. package/script/pkg/commands/sdiff.js +13 -0
  205. package/script/pkg/commands/sdiffstore.js +13 -0
  206. package/script/pkg/commands/set.js +28 -0
  207. package/script/pkg/commands/setbit.js +13 -0
  208. package/script/pkg/commands/setex.js +13 -0
  209. package/script/pkg/commands/setnx.js +13 -0
  210. package/script/pkg/commands/setrange.js +13 -0
  211. package/script/pkg/commands/sinter.js +13 -0
  212. package/script/pkg/commands/sinterstore.js +13 -0
  213. package/script/pkg/commands/sismember.js +13 -0
  214. package/script/pkg/commands/smembers.js +13 -0
  215. package/script/pkg/commands/smove.js +13 -0
  216. package/script/pkg/commands/spop.js +17 -0
  217. package/script/pkg/commands/srandmember.js +17 -0
  218. package/script/pkg/commands/srem.js +13 -0
  219. package/script/pkg/commands/sscan.js +20 -0
  220. package/script/pkg/commands/strlen.js +13 -0
  221. package/script/pkg/commands/sunion.js +13 -0
  222. package/script/pkg/commands/sunionstore.js +13 -0
  223. package/script/pkg/commands/time.js +13 -0
  224. package/script/pkg/commands/touch.js +13 -0
  225. package/script/pkg/commands/ttl.js +13 -0
  226. package/script/pkg/commands/type.js +13 -0
  227. package/script/pkg/commands/unlink.js +13 -0
  228. package/script/pkg/commands/zadd.js +30 -0
  229. package/script/pkg/commands/zcard.js +13 -0
  230. package/script/pkg/commands/zcount.js +13 -0
  231. package/script/pkg/commands/zincrby.js +13 -0
  232. package/script/pkg/commands/zinterstore.js +31 -0
  233. package/script/pkg/commands/zlexcount.js +13 -0
  234. package/script/pkg/commands/zpopmax.js +17 -0
  235. package/script/pkg/commands/zpopmin.js +17 -0
  236. package/script/pkg/commands/zrange.js +24 -0
  237. package/script/pkg/commands/zrank.js +13 -0
  238. package/script/pkg/commands/zrem.js +13 -0
  239. package/script/pkg/commands/zremrangebylex.js +13 -0
  240. package/script/pkg/commands/zremrangebyrank.js +13 -0
  241. package/script/pkg/commands/zremrangebyscore.js +13 -0
  242. package/script/pkg/commands/zrevrank.js +13 -0
  243. package/script/pkg/commands/zscan.js +20 -0
  244. package/script/pkg/commands/zscore.js +13 -0
  245. package/script/pkg/commands/zunionstore.js +31 -0
  246. package/script/pkg/error.js +13 -0
  247. package/script/pkg/http.js +53 -0
  248. package/script/pkg/pipeline.js +1122 -0
  249. package/script/pkg/redis.js +1065 -0
  250. package/script/pkg/types.js +2 -0
  251. package/script/pkg/util.js +35 -0
  252. package/script/platforms/cloudflare.js +97 -0
  253. package/script/platforms/fastly.js +76 -0
  254. package/script/platforms/nodejs.js +96 -0
  255. package/script/platforms/vercel.js +95 -0
  256. package/types/pkg/commands/append.d.ts +7 -0
  257. package/types/pkg/commands/bitcount.d.ts +8 -0
  258. package/types/pkg/commands/bitop.d.ts +8 -0
  259. package/types/pkg/commands/bitpos.d.ts +7 -0
  260. package/types/pkg/commands/command.d.ts +23 -0
  261. package/types/pkg/commands/dbsize.d.ts +7 -0
  262. package/types/pkg/commands/decr.d.ts +7 -0
  263. package/types/pkg/commands/decrby.d.ts +7 -0
  264. package/types/pkg/commands/del.d.ts +8 -0
  265. package/types/pkg/commands/echo.d.ts +7 -0
  266. package/types/pkg/commands/eval.d.ts +7 -0
  267. package/types/pkg/commands/evalsha.d.ts +7 -0
  268. package/types/pkg/commands/exists.d.ts +8 -0
  269. package/types/pkg/commands/expire.d.ts +7 -0
  270. package/types/pkg/commands/expireat.d.ts +7 -0
  271. package/types/pkg/commands/flushall.d.ts +9 -0
  272. package/types/pkg/commands/flushdb.d.ts +9 -0
  273. package/types/pkg/commands/get.d.ts +7 -0
  274. package/types/pkg/commands/getbit.d.ts +7 -0
  275. package/types/pkg/commands/getrange.d.ts +7 -0
  276. package/types/pkg/commands/getset.d.ts +7 -0
  277. package/types/pkg/commands/hdel.d.ts +7 -0
  278. package/types/pkg/commands/hexists.d.ts +7 -0
  279. package/types/pkg/commands/hget.d.ts +7 -0
  280. package/types/pkg/commands/hgetall.d.ts +7 -0
  281. package/types/pkg/commands/hincrby.d.ts +7 -0
  282. package/types/pkg/commands/hincrbyfloat.d.ts +7 -0
  283. package/types/pkg/commands/hkeys.d.ts +7 -0
  284. package/types/pkg/commands/hlen.d.ts +7 -0
  285. package/types/pkg/commands/hmget.d.ts +15 -0
  286. package/types/pkg/commands/hmset.d.ts +9 -0
  287. package/types/pkg/commands/hscan.d.ts +14 -0
  288. package/types/pkg/commands/hset.d.ts +9 -0
  289. package/types/pkg/commands/hsetnx.d.ts +7 -0
  290. package/types/pkg/commands/hstrlen.d.ts +7 -0
  291. package/types/pkg/commands/hvals.d.ts +7 -0
  292. package/types/pkg/commands/incr.d.ts +7 -0
  293. package/types/pkg/commands/incrby.d.ts +7 -0
  294. package/types/pkg/commands/incrbyfloat.d.ts +7 -0
  295. package/types/pkg/commands/keys.d.ts +7 -0
  296. package/types/pkg/commands/lindex.d.ts +4 -0
  297. package/types/pkg/commands/linsert.d.ts +4 -0
  298. package/types/pkg/commands/llen.d.ts +7 -0
  299. package/types/pkg/commands/lpop.d.ts +7 -0
  300. package/types/pkg/commands/lpush.d.ts +8 -0
  301. package/types/pkg/commands/lpushx.d.ts +8 -0
  302. package/types/pkg/commands/lrange.d.ts +4 -0
  303. package/types/pkg/commands/lrem.d.ts +4 -0
  304. package/types/pkg/commands/lset.d.ts +4 -0
  305. package/types/pkg/commands/ltrim.d.ts +4 -0
  306. package/types/pkg/commands/mget.d.ts +7 -0
  307. package/types/pkg/commands/mod.d.ts +114 -0
  308. package/types/pkg/commands/mset.d.ts +9 -0
  309. package/types/pkg/commands/msetnx.d.ts +9 -0
  310. package/types/pkg/commands/persist.d.ts +7 -0
  311. package/types/pkg/commands/pexpire.d.ts +7 -0
  312. package/types/pkg/commands/pexpireat.d.ts +7 -0
  313. package/types/pkg/commands/ping.d.ts +7 -0
  314. package/types/pkg/commands/psetex.d.ts +7 -0
  315. package/types/pkg/commands/pttl.d.ts +7 -0
  316. package/types/pkg/commands/publish.d.ts +7 -0
  317. package/types/pkg/commands/randomkey.d.ts +7 -0
  318. package/types/pkg/commands/rename.d.ts +7 -0
  319. package/types/pkg/commands/renamenx.d.ts +7 -0
  320. package/types/pkg/commands/rpop.d.ts +7 -0
  321. package/types/pkg/commands/rpush.d.ts +8 -0
  322. package/types/pkg/commands/rpushx.d.ts +8 -0
  323. package/types/pkg/commands/sadd.d.ts +8 -0
  324. package/types/pkg/commands/scan.d.ts +11 -0
  325. package/types/pkg/commands/scard.d.ts +7 -0
  326. package/types/pkg/commands/script_exists.d.ts +12 -0
  327. package/types/pkg/commands/script_flush.d.ts +14 -0
  328. package/types/pkg/commands/script_load.d.ts +7 -0
  329. package/types/pkg/commands/sdiff.d.ts +7 -0
  330. package/types/pkg/commands/sdiffstore.d.ts +8 -0
  331. package/types/pkg/commands/set.d.ts +26 -0
  332. package/types/pkg/commands/setbit.d.ts +7 -0
  333. package/types/pkg/commands/setex.d.ts +7 -0
  334. package/types/pkg/commands/setnx.d.ts +7 -0
  335. package/types/pkg/commands/setrange.d.ts +7 -0
  336. package/types/pkg/commands/sinter.d.ts +7 -0
  337. package/types/pkg/commands/sinterstore.d.ts +7 -0
  338. package/types/pkg/commands/sismember.d.ts +7 -0
  339. package/types/pkg/commands/smembers.d.ts +7 -0
  340. package/types/pkg/commands/smove.d.ts +7 -0
  341. package/types/pkg/commands/spop.d.ts +7 -0
  342. package/types/pkg/commands/srandmember.d.ts +7 -0
  343. package/types/pkg/commands/srem.d.ts +8 -0
  344. package/types/pkg/commands/sscan.d.ts +14 -0
  345. package/types/pkg/commands/strlen.d.ts +7 -0
  346. package/types/pkg/commands/sunion.d.ts +7 -0
  347. package/types/pkg/commands/sunionstore.d.ts +7 -0
  348. package/types/pkg/commands/time.d.ts +7 -0
  349. package/types/pkg/commands/touch.d.ts +8 -0
  350. package/types/pkg/commands/ttl.d.ts +7 -0
  351. package/types/pkg/commands/type.d.ts +8 -0
  352. package/types/pkg/commands/unlink.d.ts +7 -0
  353. package/types/pkg/commands/zadd.d.ts +27 -0
  354. package/types/pkg/commands/zcard.d.ts +7 -0
  355. package/types/pkg/commands/zcount.d.ts +7 -0
  356. package/types/pkg/commands/zincrby.d.ts +7 -0
  357. package/types/pkg/commands/zinterstore.d.ts +20 -0
  358. package/types/pkg/commands/zlexcount.d.ts +7 -0
  359. package/types/pkg/commands/zpopmax.d.ts +7 -0
  360. package/types/pkg/commands/zpopmin.d.ts +7 -0
  361. package/types/pkg/commands/zrange.d.ts +25 -0
  362. package/types/pkg/commands/zrank.d.ts +7 -0
  363. package/types/pkg/commands/zrem.d.ts +8 -0
  364. package/types/pkg/commands/zremrangebylex.d.ts +7 -0
  365. package/types/pkg/commands/zremrangebyrank.d.ts +7 -0
  366. package/types/pkg/commands/zremrangebyscore.d.ts +7 -0
  367. package/types/pkg/commands/zrevrank.d.ts +7 -0
  368. package/types/pkg/commands/zscan.d.ts +14 -0
  369. package/types/pkg/commands/zscore.d.ts +7 -0
  370. package/types/pkg/commands/zunionstore.d.ts +20 -0
  371. package/types/pkg/error.d.ts +6 -0
  372. package/{http.d.ts → types/pkg/http.d.ts} +7 -13
  373. package/types/pkg/pipeline.d.ts +543 -0
  374. package/types/pkg/redis.d.ts +509 -0
  375. package/types/pkg/types.d.ts +2 -0
  376. package/types/pkg/util.d.ts +1 -0
  377. package/types/platforms/cloudflare.d.ts +38 -0
  378. package/types/platforms/fastly.d.ts +41 -0
  379. package/types/platforms/nodejs.d.ts +81 -0
  380. package/types/platforms/vercel.d.ts +80 -0
  381. package/chunk-5LZNFEHI.mjs +0 -34
  382. package/chunk-7YUZYRJS.mjs +0 -29
  383. package/chunk-C2RGMNOQ.mjs +0 -54
  384. package/chunk-CTSQDNTV.mjs +0 -393
  385. package/chunk-K2UC7PHG.mjs +0 -1140
  386. package/cloudflare.d.ts +0 -43
  387. package/cloudflare.js +0 -1395
  388. package/cloudflare.mjs +0 -34
  389. package/commands.d.ts +0 -761
  390. package/commands.js +0 -1287
  391. package/commands.mjs +0 -233
  392. package/fastly.d.ts +0 -46
  393. package/fastly.js +0 -1384
  394. package/fastly.mjs +0 -23
  395. package/http.js +0 -81
  396. package/http.mjs +0 -7
  397. package/index.d.ts +0 -15
  398. package/index.js +0 -1423
  399. package/index.mjs +0 -13
  400. package/nodejs.d.ts +0 -68
  401. package/nodejs.js +0 -1421
  402. package/nodejs.mjs +0 -10
  403. package/redis-338577a3.d.ts +0 -1056
  404. package/zunionstore-633a2e7a.d.ts +0 -187
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,35 +19,50 @@ 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
 
31
35
  ### Install
32
36
 
37
+ #### npm
38
+
33
39
  ```bash
34
40
  npm install @upstash/redis
35
41
  ```
36
42
 
43
+ #### Deno
44
+
45
+ ```ts
46
+ import { Redis } from "https://deno.land/x/upstash_redis/mod.ts";
47
+ ```
48
+
37
49
  ### Create database
38
50
 
39
51
  Create a new redis database on [upstash](https://console.upstash.com/)
40
52
 
41
53
  ### Environments
42
54
 
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.
55
+ We support various platforms, such as nodejs, cloudflare and fastly. Platforms
56
+ differ slightly when it comes to environment variables and their `fetch` api.
57
+ Please use the correct import when deploying to special platforms.
45
58
 
46
59
  #### Node.js
47
60
 
48
61
  Examples: Vercel, Netlify, AWS Lambda
49
62
 
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:
63
+ If you are running on nodejs you can set `UPSTASH_REDIS_REST_URL` and
64
+ `UPSTASH_REDIS_REST_TOKEN` as environment variable and create a redis instance
65
+ like this:
51
66
 
52
67
  ```ts
53
68
  import { Redis } from "@upstash/redis"
@@ -65,8 +80,9 @@ const redis = Redis.fromEnv()
65
80
 
66
81
  #### Cloudflare Workers
67
82
 
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.
83
+ Cloudflare handles environment variables differently than nodejs. Please add
84
+ `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` using
85
+ `wrangler secret put ...` or in the cloudflare dashboard.
70
86
 
71
87
  Afterwards you can create a redis instance:
72
88
 
@@ -92,7 +108,6 @@ export default {
92
108
  // ...
93
109
  }
94
110
  }
95
-
96
111
  ```
97
112
 
98
113
  - [Code example service worker](https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers)
@@ -101,7 +116,10 @@ export default {
101
116
 
102
117
  #### Fastly
103
118
 
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).
119
+ Fastly introduces a concept called
120
+ [backend](https://developer.fastly.com/reference/api/services/backend/). You
121
+ need to configure a backend in your `fastly.toml`. An example can be found
122
+ [here](https://github.com/upstash/upstash-redis/blob/main/examples/fastly/fastly.toml).
105
123
  Until the fastly api stabilizes we recommend creating an instance manually:
106
124
 
107
125
  ```ts
@@ -117,12 +135,30 @@ const redis = new Redis({
117
135
  - [Code example](https://github.com/upstash/upstash-redis/tree/main/examples/fastly)
118
136
  - [Documentation](https://blog.upstash.com/fastly-compute-edge-with-redi)
119
137
 
138
+ #### Deno
139
+
140
+ Examples: [Deno Deploy](https://deno.com/deploy),
141
+ [Netlify Edge](https://www.netlify.com/products/edge/)
142
+
143
+ ```ts
144
+ import { Redis } from "https://deno.land/x/upstash_redis/mod.ts"
145
+
146
+ const redis = new Redis({
147
+ url: <UPSTASH_REDIS_REST_URL>,
148
+ token: <UPSTASH_REDIS_REST_TOKEN>,
149
+ })
150
+
151
+ // or
152
+ const redis = Redis.fromEnv();
153
+ ```
154
+
120
155
  ### Working with types
121
156
 
122
- Most commands allow you to provide a type to make working with typescript easier.
157
+ Most commands allow you to provide a type to make working with typescript
158
+ easier.
123
159
 
124
160
  ```ts
125
- const data = await redis.get<MyCustomType>("key")
161
+ const data = await redis.get<MyCustomType>("key");
126
162
  // data is typed as `MyCustomType`
127
163
  ```
128
164
 
@@ -130,8 +166,8 @@ const data = await redis.get<MyCustomType>("key")
130
166
 
131
167
  ### Explicit authentication
132
168
 
133
- The library is no longer automatically trying to load connection secrets from environment variables.
134
- You must either supply them yourself:
169
+ The library is no longer automatically trying to load connection secrets from
170
+ environment variables. You must either supply them yourself:
135
171
 
136
172
  ```ts
137
173
  import { Redis } from "@upstash/redis"
@@ -146,14 +182,14 @@ Or use one of the static constructors to load from environment variables:
146
182
 
147
183
  ```ts
148
184
  // Nodejs
149
- import { Redis } from "@upstash/redis"
150
- const redis = Redis.fromEnv()
185
+ import { Redis } from "@upstash/redis";
186
+ const redis = Redis.fromEnv();
151
187
  ```
152
188
 
153
189
  ```ts
154
190
  // or when deploying to cloudflare workers
155
- import { Redis } from "@upstash/redis/cloudflare"
156
- const redis = Redis.fromEnv()
191
+ import { Redis } from "@upstash/redis/cloudflare";
192
+ const redis = Redis.fromEnv();
157
193
  ```
158
194
 
159
195
  ### Error handling
@@ -162,50 +198,56 @@ Errors are now thrown automatically instead of being returned to you.
162
198
 
163
199
  ```ts
164
200
  // old
165
- const { data, error } = await set("key", "value")
201
+ const { data, error } = await set("key", "value");
166
202
  if (error) {
167
- throw new Error(error)
203
+ throw new Error(error);
168
204
  }
169
205
 
170
206
  // new
171
- const data = await redis.set("key", "value") // error is thrown automatically
207
+ const data = await redis.set("key", "value"); // error is thrown automatically
172
208
  ```
173
209
 
174
210
  ## Pipeline
175
211
 
176
- `v1.0.0` introduces redis pipelines.
177
- Pipelining commands allows you to send a single http request with multiple commands.
212
+ `v1.0.0` introduces redis pipelines. Pipelining commands allows you to send a
213
+ single http request with multiple commands.
178
214
 
179
215
  ```ts
180
- import { Redis } from "@upstash/redis"
216
+ import { Redis } from "@upstash/redis";
181
217
 
182
218
  const redis = new Redis({
183
219
  /* auth */
184
- })
220
+ });
185
221
 
186
- const p = redis.pipeline()
222
+ const p = redis.pipeline();
187
223
 
188
224
  // Now you can chain multiple commands to create your pipeline:
189
225
 
190
- p.set("key", 2)
191
- p.incr("key")
226
+ p.set("key", 2);
227
+ p.incr("key");
192
228
 
193
229
  // or inline:
194
- p.hset("key2", "field", { hello: "world" }).hvals("key2")
230
+ p.hset("key2", "field", { hello: "world" }).hvals("key2");
195
231
 
196
232
  // Execute the pipeline once you are done building it:
197
233
  // `exec` returns an array where each element represents the response of a command in the pipeline.
198
234
  // You can optionally provide a type like this to get a typed response.
199
- const res = await p.exec<[Type1, Type2, Type3]>()
235
+ const res = await p.exec<[Type1, Type2, Type3]>();
200
236
  ```
201
237
 
202
- For more information about pipelines using REST see [here](https://blog.upstash.com/pipeline).
238
+ For more information about pipelines using REST see
239
+ [here](https://blog.upstash.com/pipeline).
203
240
 
204
241
  ### Advanced
205
242
 
206
- A low level `Command` class can be imported from `@upstash/redis` in case you need more control about types and or (de)serialization.
243
+ A low level `Command` class can be imported from `@upstash/redis` in case you
244
+ need more control about types and or (de)serialization.
207
245
 
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).
246
+ By default all objects you are storing in redis are serialized using
247
+ `JSON.stringify` and recursively deserialized as well. Here's an example how you
248
+ could customize that behaviour. Keep in mind that you need to provide a `fetch`
249
+ polyfill if you are running on nodejs. We recommend
250
+ [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch).
209
251
 
210
252
  ```ts
211
253
  import { Command } from "@upstash/redis/commands"
@@ -232,46 +274,53 @@ const client = new HttpClient({
232
274
  })
233
275
 
234
276
  const res = new CustomGetCommand("key").exec(client)
235
-
236
277
  ```
237
278
 
238
279
  ### Additional information
239
280
 
240
281
  #### `keepalive`
241
282
 
242
- `@upstash/redis` is trying to reuse connections where possible to minimize latency. Connections can be reused if the client is
243
- stored in memory and not initialized with every new function invocation. The easiest way to achieve this is by creating the client
244
- outside of your handler:
283
+ `@upstash/redis` is capable of reusing connections where possible to minimize
284
+ latency. Connections can be reused if the client is stored in memory and not
285
+ initialized with every new function invocation. The easiest way to achieve this
286
+ is by creating the client outside of your handler and adding an https agent:
245
287
 
246
288
  ```ts
247
289
  // Nextjs api route
248
- import { Redis } from "@upstash/redis"
290
+ import { Redis } from "@upstash/redis";
291
+ import https from "https";
249
292
 
250
- const redis = Redis.fromEnv()
293
+ const redis = Redis.fromEnv({
294
+ agent: new https.Agent({ keepAlive: true }),
295
+ });
251
296
 
252
297
  export default async function (req, res) {
253
298
  // use redis here
254
299
  }
255
300
  ```
256
301
 
257
- Whenever your hot lambda receives a new request the client is already initialized and the previously established connection to upstash is reused.
302
+ Whenever your hot lambda receives a new request the client is already
303
+ initialized and the previously established connection to upstash is reused.
258
304
 
259
305
  #### Javascript MAX_SAFE_INTEGER
260
306
 
261
- Javascript can not handle numbers larger than `2^53 -1` safely and would return wrong results when trying to deserialize them.
262
- In these cases the default deserializer will return them as string instead. This might cause a mismatch with your custom types.
307
+ Javascript can not handle numbers larger than `2^53 -1` safely and would return
308
+ wrong results when trying to deserialize them. In these cases the default
309
+ deserializer will return them as string instead. This might cause a mismatch
310
+ with your custom types.
263
311
 
264
312
  ```ts
265
- await redis.set("key", "101600000000150081467")
266
- const res = await redis<number>("get")
313
+ await redis.set("key", "101600000000150081467");
314
+ const res = await redis<number>("get");
267
315
  ```
268
316
 
269
- In this example `res` will still be a string despite the type annotation.
270
- Please keep that in mind and adjust accordingly.
317
+ In this example `res` will still be a string despite the type annotation. Please
318
+ keep that in mind and adjust accordingly.
271
319
 
272
320
  ## Docs
273
321
 
274
- See [the documentation](https://docs.upstash.com/features/javascriptsdk) for details.
322
+ See [the documentation](https://docs.upstash.com/features/javascriptsdk) for
323
+ details.
275
324
 
276
325
  ## Contributing
277
326
 
@@ -283,7 +332,8 @@ pnpm install
283
332
 
284
333
  ### Database
285
334
 
286
- Create a new redis database on [upstash](https://console.upstash.com/) and copy the url and token to `.env` (See `.env.example` for reference)
335
+ 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)
287
337
 
288
338
  ### Running tests
289
339
 
@@ -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
+ }