@upstash/redis 0.0.0-ci.f55d85c5 → 0.0.0-ci.f5cad9e7bda3d77569d9df207b4e1565f75d6154

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 (389) hide show
  1. package/README.md +53 -282
  2. package/cloudflare.d.mts +45 -0
  3. package/{types/platforms/cloudflare.d.ts → cloudflare.d.ts} +15 -8
  4. package/cloudflare.js +1 -0
  5. package/cloudflare.mjs +1 -0
  6. package/fastly.d.mts +43 -0
  7. package/{types/platforms/fastly.d.ts → fastly.d.ts} +8 -6
  8. package/fastly.js +1 -0
  9. package/fastly.mjs +1 -0
  10. package/{types/platforms/node_with_fetch.d.ts → nodejs.d.mts} +24 -7
  11. package/{types/platforms/nodejs.d.ts → nodejs.d.ts} +24 -6
  12. package/nodejs.js +1 -0
  13. package/nodejs.mjs +1 -0
  14. package/package.json +31 -67
  15. package/redis-b1b1b1df.d.ts +1959 -0
  16. package/.releaserc +0 -14
  17. package/esm/package.json +0 -3
  18. package/esm/pkg/commands/append.js +0 -9
  19. package/esm/pkg/commands/bitcount.js +0 -16
  20. package/esm/pkg/commands/bitop.js +0 -9
  21. package/esm/pkg/commands/bitpos.js +0 -9
  22. package/esm/pkg/commands/command.js +0 -57
  23. package/esm/pkg/commands/dbsize.js +0 -9
  24. package/esm/pkg/commands/decr.js +0 -9
  25. package/esm/pkg/commands/decrby.js +0 -9
  26. package/esm/pkg/commands/del.js +0 -9
  27. package/esm/pkg/commands/echo.js +0 -9
  28. package/esm/pkg/commands/eval.js +0 -9
  29. package/esm/pkg/commands/evalsha.js +0 -9
  30. package/esm/pkg/commands/exists.js +0 -9
  31. package/esm/pkg/commands/expire.js +0 -9
  32. package/esm/pkg/commands/expireat.js +0 -9
  33. package/esm/pkg/commands/flushall.js +0 -13
  34. package/esm/pkg/commands/flushdb.js +0 -13
  35. package/esm/pkg/commands/get.js +0 -9
  36. package/esm/pkg/commands/getbit.js +0 -9
  37. package/esm/pkg/commands/getrange.js +0 -9
  38. package/esm/pkg/commands/getset.js +0 -9
  39. package/esm/pkg/commands/hdel.js +0 -9
  40. package/esm/pkg/commands/hexists.js +0 -9
  41. package/esm/pkg/commands/hget.js +0 -9
  42. package/esm/pkg/commands/hgetall.js +0 -33
  43. package/esm/pkg/commands/hincrby.js +0 -9
  44. package/esm/pkg/commands/hincrbyfloat.js +0 -9
  45. package/esm/pkg/commands/hkeys.js +0 -9
  46. package/esm/pkg/commands/hlen.js +0 -9
  47. package/esm/pkg/commands/hmget.js +0 -35
  48. package/esm/pkg/commands/hmset.js +0 -13
  49. package/esm/pkg/commands/hscan.js +0 -16
  50. package/esm/pkg/commands/hset.js +0 -13
  51. package/esm/pkg/commands/hsetnx.js +0 -9
  52. package/esm/pkg/commands/hstrlen.js +0 -9
  53. package/esm/pkg/commands/hvals.js +0 -9
  54. package/esm/pkg/commands/incr.js +0 -9
  55. package/esm/pkg/commands/incrby.js +0 -9
  56. package/esm/pkg/commands/incrbyfloat.js +0 -9
  57. package/esm/pkg/commands/keys.js +0 -9
  58. package/esm/pkg/commands/lindex.js +0 -6
  59. package/esm/pkg/commands/linsert.js +0 -6
  60. package/esm/pkg/commands/llen.js +0 -9
  61. package/esm/pkg/commands/lpop.js +0 -9
  62. package/esm/pkg/commands/lpush.js +0 -9
  63. package/esm/pkg/commands/lpushx.js +0 -9
  64. package/esm/pkg/commands/lrange.js +0 -6
  65. package/esm/pkg/commands/lrem.js +0 -6
  66. package/esm/pkg/commands/lset.js +0 -6
  67. package/esm/pkg/commands/ltrim.js +0 -6
  68. package/esm/pkg/commands/mget.js +0 -9
  69. package/esm/pkg/commands/mod.js +0 -114
  70. package/esm/pkg/commands/mset.js +0 -12
  71. package/esm/pkg/commands/msetnx.js +0 -9
  72. package/esm/pkg/commands/persist.js +0 -9
  73. package/esm/pkg/commands/pexpire.js +0 -9
  74. package/esm/pkg/commands/pexpireat.js +0 -9
  75. package/esm/pkg/commands/ping.js +0 -13
  76. package/esm/pkg/commands/psetex.js +0 -9
  77. package/esm/pkg/commands/pttl.js +0 -9
  78. package/esm/pkg/commands/publish.js +0 -9
  79. package/esm/pkg/commands/randomkey.js +0 -9
  80. package/esm/pkg/commands/rename.js +0 -9
  81. package/esm/pkg/commands/renamenx.js +0 -9
  82. package/esm/pkg/commands/rpop.js +0 -9
  83. package/esm/pkg/commands/rpush.js +0 -9
  84. package/esm/pkg/commands/rpushx.js +0 -9
  85. package/esm/pkg/commands/sadd.js +0 -9
  86. package/esm/pkg/commands/scan.js +0 -16
  87. package/esm/pkg/commands/scard.js +0 -9
  88. package/esm/pkg/commands/script_exists.js +0 -21
  89. package/esm/pkg/commands/script_flush.js +0 -16
  90. package/esm/pkg/commands/script_load.js +0 -9
  91. package/esm/pkg/commands/sdiff.js +0 -9
  92. package/esm/pkg/commands/sdiffstore.js +0 -9
  93. package/esm/pkg/commands/set.js +0 -24
  94. package/esm/pkg/commands/setbit.js +0 -9
  95. package/esm/pkg/commands/setex.js +0 -9
  96. package/esm/pkg/commands/setnx.js +0 -9
  97. package/esm/pkg/commands/setrange.js +0 -9
  98. package/esm/pkg/commands/sinter.js +0 -9
  99. package/esm/pkg/commands/sinterstore.js +0 -9
  100. package/esm/pkg/commands/sismember.js +0 -9
  101. package/esm/pkg/commands/smembers.js +0 -9
  102. package/esm/pkg/commands/smove.js +0 -9
  103. package/esm/pkg/commands/spop.js +0 -13
  104. package/esm/pkg/commands/srandmember.js +0 -13
  105. package/esm/pkg/commands/srem.js +0 -9
  106. package/esm/pkg/commands/sscan.js +0 -16
  107. package/esm/pkg/commands/strlen.js +0 -9
  108. package/esm/pkg/commands/sunion.js +0 -9
  109. package/esm/pkg/commands/sunionstore.js +0 -9
  110. package/esm/pkg/commands/time.js +0 -9
  111. package/esm/pkg/commands/touch.js +0 -9
  112. package/esm/pkg/commands/ttl.js +0 -9
  113. package/esm/pkg/commands/type.js +0 -9
  114. package/esm/pkg/commands/unlink.js +0 -9
  115. package/esm/pkg/commands/zadd.js +0 -26
  116. package/esm/pkg/commands/zcard.js +0 -9
  117. package/esm/pkg/commands/zcount.js +0 -9
  118. package/esm/pkg/commands/zincrby.js +0 -9
  119. package/esm/pkg/commands/zinterstore.js +0 -27
  120. package/esm/pkg/commands/zlexcount.js +0 -9
  121. package/esm/pkg/commands/zpopmax.js +0 -13
  122. package/esm/pkg/commands/zpopmin.js +0 -13
  123. package/esm/pkg/commands/zrange.js +0 -20
  124. package/esm/pkg/commands/zrank.js +0 -9
  125. package/esm/pkg/commands/zrem.js +0 -9
  126. package/esm/pkg/commands/zremrangebylex.js +0 -9
  127. package/esm/pkg/commands/zremrangebyrank.js +0 -9
  128. package/esm/pkg/commands/zremrangebyscore.js +0 -9
  129. package/esm/pkg/commands/zrevrank.js +0 -9
  130. package/esm/pkg/commands/zscan.js +0 -16
  131. package/esm/pkg/commands/zscore.js +0 -9
  132. package/esm/pkg/commands/zunionstore.js +0 -27
  133. package/esm/pkg/error.js +0 -9
  134. package/esm/pkg/http.js +0 -49
  135. package/esm/pkg/pipeline.js +0 -1125
  136. package/esm/pkg/redis.js +0 -1067
  137. package/esm/pkg/types.js +0 -1
  138. package/esm/pkg/util.js +0 -31
  139. package/esm/platforms/cloudflare.js +0 -82
  140. package/esm/platforms/fastly.js +0 -61
  141. package/esm/platforms/node_with_fetch.js +0 -81
  142. package/esm/platforms/nodejs.js +0 -80
  143. package/script/package.json +0 -3
  144. package/script/pkg/commands/append.js +0 -13
  145. package/script/pkg/commands/bitcount.js +0 -20
  146. package/script/pkg/commands/bitop.js +0 -13
  147. package/script/pkg/commands/bitpos.js +0 -13
  148. package/script/pkg/commands/command.js +0 -61
  149. package/script/pkg/commands/dbsize.js +0 -13
  150. package/script/pkg/commands/decr.js +0 -13
  151. package/script/pkg/commands/decrby.js +0 -13
  152. package/script/pkg/commands/del.js +0 -13
  153. package/script/pkg/commands/echo.js +0 -13
  154. package/script/pkg/commands/eval.js +0 -13
  155. package/script/pkg/commands/evalsha.js +0 -13
  156. package/script/pkg/commands/exists.js +0 -13
  157. package/script/pkg/commands/expire.js +0 -13
  158. package/script/pkg/commands/expireat.js +0 -13
  159. package/script/pkg/commands/flushall.js +0 -17
  160. package/script/pkg/commands/flushdb.js +0 -17
  161. package/script/pkg/commands/get.js +0 -13
  162. package/script/pkg/commands/getbit.js +0 -13
  163. package/script/pkg/commands/getrange.js +0 -13
  164. package/script/pkg/commands/getset.js +0 -13
  165. package/script/pkg/commands/hdel.js +0 -13
  166. package/script/pkg/commands/hexists.js +0 -13
  167. package/script/pkg/commands/hget.js +0 -13
  168. package/script/pkg/commands/hgetall.js +0 -37
  169. package/script/pkg/commands/hincrby.js +0 -13
  170. package/script/pkg/commands/hincrbyfloat.js +0 -13
  171. package/script/pkg/commands/hkeys.js +0 -13
  172. package/script/pkg/commands/hlen.js +0 -13
  173. package/script/pkg/commands/hmget.js +0 -39
  174. package/script/pkg/commands/hmset.js +0 -17
  175. package/script/pkg/commands/hscan.js +0 -20
  176. package/script/pkg/commands/hset.js +0 -17
  177. package/script/pkg/commands/hsetnx.js +0 -13
  178. package/script/pkg/commands/hstrlen.js +0 -13
  179. package/script/pkg/commands/hvals.js +0 -13
  180. package/script/pkg/commands/incr.js +0 -13
  181. package/script/pkg/commands/incrby.js +0 -13
  182. package/script/pkg/commands/incrbyfloat.js +0 -13
  183. package/script/pkg/commands/keys.js +0 -13
  184. package/script/pkg/commands/lindex.js +0 -10
  185. package/script/pkg/commands/linsert.js +0 -10
  186. package/script/pkg/commands/llen.js +0 -13
  187. package/script/pkg/commands/lpop.js +0 -13
  188. package/script/pkg/commands/lpush.js +0 -13
  189. package/script/pkg/commands/lpushx.js +0 -13
  190. package/script/pkg/commands/lrange.js +0 -10
  191. package/script/pkg/commands/lrem.js +0 -10
  192. package/script/pkg/commands/lset.js +0 -10
  193. package/script/pkg/commands/ltrim.js +0 -10
  194. package/script/pkg/commands/mget.js +0 -13
  195. package/script/pkg/commands/mod.js +0 -130
  196. package/script/pkg/commands/mset.js +0 -16
  197. package/script/pkg/commands/msetnx.js +0 -13
  198. package/script/pkg/commands/persist.js +0 -13
  199. package/script/pkg/commands/pexpire.js +0 -13
  200. package/script/pkg/commands/pexpireat.js +0 -13
  201. package/script/pkg/commands/ping.js +0 -17
  202. package/script/pkg/commands/psetex.js +0 -13
  203. package/script/pkg/commands/pttl.js +0 -13
  204. package/script/pkg/commands/publish.js +0 -13
  205. package/script/pkg/commands/randomkey.js +0 -13
  206. package/script/pkg/commands/rename.js +0 -13
  207. package/script/pkg/commands/renamenx.js +0 -13
  208. package/script/pkg/commands/rpop.js +0 -13
  209. package/script/pkg/commands/rpush.js +0 -13
  210. package/script/pkg/commands/rpushx.js +0 -13
  211. package/script/pkg/commands/sadd.js +0 -13
  212. package/script/pkg/commands/scan.js +0 -20
  213. package/script/pkg/commands/scard.js +0 -13
  214. package/script/pkg/commands/script_exists.js +0 -25
  215. package/script/pkg/commands/script_flush.js +0 -20
  216. package/script/pkg/commands/script_load.js +0 -13
  217. package/script/pkg/commands/sdiff.js +0 -13
  218. package/script/pkg/commands/sdiffstore.js +0 -13
  219. package/script/pkg/commands/set.js +0 -28
  220. package/script/pkg/commands/setbit.js +0 -13
  221. package/script/pkg/commands/setex.js +0 -13
  222. package/script/pkg/commands/setnx.js +0 -13
  223. package/script/pkg/commands/setrange.js +0 -13
  224. package/script/pkg/commands/sinter.js +0 -13
  225. package/script/pkg/commands/sinterstore.js +0 -13
  226. package/script/pkg/commands/sismember.js +0 -13
  227. package/script/pkg/commands/smembers.js +0 -13
  228. package/script/pkg/commands/smove.js +0 -13
  229. package/script/pkg/commands/spop.js +0 -17
  230. package/script/pkg/commands/srandmember.js +0 -17
  231. package/script/pkg/commands/srem.js +0 -13
  232. package/script/pkg/commands/sscan.js +0 -20
  233. package/script/pkg/commands/strlen.js +0 -13
  234. package/script/pkg/commands/sunion.js +0 -13
  235. package/script/pkg/commands/sunionstore.js +0 -13
  236. package/script/pkg/commands/time.js +0 -13
  237. package/script/pkg/commands/touch.js +0 -13
  238. package/script/pkg/commands/ttl.js +0 -13
  239. package/script/pkg/commands/type.js +0 -13
  240. package/script/pkg/commands/unlink.js +0 -13
  241. package/script/pkg/commands/zadd.js +0 -30
  242. package/script/pkg/commands/zcard.js +0 -13
  243. package/script/pkg/commands/zcount.js +0 -13
  244. package/script/pkg/commands/zincrby.js +0 -13
  245. package/script/pkg/commands/zinterstore.js +0 -31
  246. package/script/pkg/commands/zlexcount.js +0 -13
  247. package/script/pkg/commands/zpopmax.js +0 -17
  248. package/script/pkg/commands/zpopmin.js +0 -17
  249. package/script/pkg/commands/zrange.js +0 -24
  250. package/script/pkg/commands/zrank.js +0 -13
  251. package/script/pkg/commands/zrem.js +0 -13
  252. package/script/pkg/commands/zremrangebylex.js +0 -13
  253. package/script/pkg/commands/zremrangebyrank.js +0 -13
  254. package/script/pkg/commands/zremrangebyscore.js +0 -13
  255. package/script/pkg/commands/zrevrank.js +0 -13
  256. package/script/pkg/commands/zscan.js +0 -20
  257. package/script/pkg/commands/zscore.js +0 -13
  258. package/script/pkg/commands/zunionstore.js +0 -31
  259. package/script/pkg/error.js +0 -13
  260. package/script/pkg/http.js +0 -53
  261. package/script/pkg/pipeline.js +0 -1129
  262. package/script/pkg/redis.js +0 -1071
  263. package/script/pkg/types.js +0 -2
  264. package/script/pkg/util.js +0 -35
  265. package/script/platforms/cloudflare.js +0 -109
  266. package/script/platforms/fastly.js +0 -88
  267. package/script/platforms/node_with_fetch.js +0 -108
  268. package/script/platforms/nodejs.js +0 -107
  269. package/types/pkg/commands/append.d.ts +0 -7
  270. package/types/pkg/commands/bitcount.d.ts +0 -8
  271. package/types/pkg/commands/bitop.d.ts +0 -13
  272. package/types/pkg/commands/bitpos.d.ts +0 -7
  273. package/types/pkg/commands/command.d.ts +0 -37
  274. package/types/pkg/commands/dbsize.d.ts +0 -7
  275. package/types/pkg/commands/decr.d.ts +0 -7
  276. package/types/pkg/commands/decrby.d.ts +0 -7
  277. package/types/pkg/commands/del.d.ts +0 -7
  278. package/types/pkg/commands/echo.d.ts +0 -7
  279. package/types/pkg/commands/eval.d.ts +0 -7
  280. package/types/pkg/commands/evalsha.d.ts +0 -7
  281. package/types/pkg/commands/exists.d.ts +0 -7
  282. package/types/pkg/commands/expire.d.ts +0 -7
  283. package/types/pkg/commands/expireat.d.ts +0 -7
  284. package/types/pkg/commands/flushall.d.ts +0 -9
  285. package/types/pkg/commands/flushdb.d.ts +0 -9
  286. package/types/pkg/commands/get.d.ts +0 -7
  287. package/types/pkg/commands/getbit.d.ts +0 -7
  288. package/types/pkg/commands/getrange.d.ts +0 -7
  289. package/types/pkg/commands/getset.d.ts +0 -7
  290. package/types/pkg/commands/hdel.d.ts +0 -7
  291. package/types/pkg/commands/hexists.d.ts +0 -7
  292. package/types/pkg/commands/hget.d.ts +0 -7
  293. package/types/pkg/commands/hgetall.d.ts +0 -7
  294. package/types/pkg/commands/hincrby.d.ts +0 -7
  295. package/types/pkg/commands/hincrbyfloat.d.ts +0 -7
  296. package/types/pkg/commands/hkeys.d.ts +0 -7
  297. package/types/pkg/commands/hlen.d.ts +0 -7
  298. package/types/pkg/commands/hmget.d.ts +0 -15
  299. package/types/pkg/commands/hmset.d.ts +0 -9
  300. package/types/pkg/commands/hscan.d.ts +0 -24
  301. package/types/pkg/commands/hset.d.ts +0 -9
  302. package/types/pkg/commands/hsetnx.d.ts +0 -7
  303. package/types/pkg/commands/hstrlen.d.ts +0 -7
  304. package/types/pkg/commands/hvals.d.ts +0 -7
  305. package/types/pkg/commands/incr.d.ts +0 -7
  306. package/types/pkg/commands/incrby.d.ts +0 -7
  307. package/types/pkg/commands/incrbyfloat.d.ts +0 -7
  308. package/types/pkg/commands/keys.d.ts +0 -7
  309. package/types/pkg/commands/lindex.d.ts +0 -4
  310. package/types/pkg/commands/linsert.d.ts +0 -9
  311. package/types/pkg/commands/llen.d.ts +0 -7
  312. package/types/pkg/commands/lpop.d.ts +0 -7
  313. package/types/pkg/commands/lpush.d.ts +0 -7
  314. package/types/pkg/commands/lpushx.d.ts +0 -7
  315. package/types/pkg/commands/lrange.d.ts +0 -4
  316. package/types/pkg/commands/lrem.d.ts +0 -4
  317. package/types/pkg/commands/lset.d.ts +0 -4
  318. package/types/pkg/commands/ltrim.d.ts +0 -4
  319. package/types/pkg/commands/mget.d.ts +0 -7
  320. package/types/pkg/commands/mod.d.ts +0 -114
  321. package/types/pkg/commands/mset.d.ts +0 -9
  322. package/types/pkg/commands/msetnx.d.ts +0 -9
  323. package/types/pkg/commands/persist.d.ts +0 -7
  324. package/types/pkg/commands/pexpire.d.ts +0 -7
  325. package/types/pkg/commands/pexpireat.d.ts +0 -7
  326. package/types/pkg/commands/ping.d.ts +0 -7
  327. package/types/pkg/commands/psetex.d.ts +0 -7
  328. package/types/pkg/commands/pttl.d.ts +0 -7
  329. package/types/pkg/commands/publish.d.ts +0 -7
  330. package/types/pkg/commands/randomkey.d.ts +0 -7
  331. package/types/pkg/commands/rename.d.ts +0 -7
  332. package/types/pkg/commands/renamenx.d.ts +0 -7
  333. package/types/pkg/commands/rpop.d.ts +0 -7
  334. package/types/pkg/commands/rpush.d.ts +0 -7
  335. package/types/pkg/commands/rpushx.d.ts +0 -7
  336. package/types/pkg/commands/sadd.d.ts +0 -7
  337. package/types/pkg/commands/scan.d.ts +0 -17
  338. package/types/pkg/commands/scard.d.ts +0 -7
  339. package/types/pkg/commands/script_exists.d.ts +0 -9
  340. package/types/pkg/commands/script_flush.d.ts +0 -14
  341. package/types/pkg/commands/script_load.d.ts +0 -7
  342. package/types/pkg/commands/sdiff.d.ts +0 -7
  343. package/types/pkg/commands/sdiffstore.d.ts +0 -7
  344. package/types/pkg/commands/set.d.ts +0 -26
  345. package/types/pkg/commands/setbit.d.ts +0 -7
  346. package/types/pkg/commands/setex.d.ts +0 -7
  347. package/types/pkg/commands/setnx.d.ts +0 -7
  348. package/types/pkg/commands/setrange.d.ts +0 -7
  349. package/types/pkg/commands/sinter.d.ts +0 -7
  350. package/types/pkg/commands/sinterstore.d.ts +0 -7
  351. package/types/pkg/commands/sismember.d.ts +0 -7
  352. package/types/pkg/commands/smembers.d.ts +0 -7
  353. package/types/pkg/commands/smove.d.ts +0 -7
  354. package/types/pkg/commands/spop.d.ts +0 -7
  355. package/types/pkg/commands/srandmember.d.ts +0 -7
  356. package/types/pkg/commands/srem.d.ts +0 -7
  357. package/types/pkg/commands/sscan.d.ts +0 -24
  358. package/types/pkg/commands/strlen.d.ts +0 -7
  359. package/types/pkg/commands/sunion.d.ts +0 -7
  360. package/types/pkg/commands/sunionstore.d.ts +0 -7
  361. package/types/pkg/commands/time.d.ts +0 -7
  362. package/types/pkg/commands/touch.d.ts +0 -7
  363. package/types/pkg/commands/ttl.d.ts +0 -7
  364. package/types/pkg/commands/type.d.ts +0 -8
  365. package/types/pkg/commands/unlink.d.ts +0 -7
  366. package/types/pkg/commands/zadd.d.ts +0 -35
  367. package/types/pkg/commands/zcard.d.ts +0 -7
  368. package/types/pkg/commands/zcount.d.ts +0 -7
  369. package/types/pkg/commands/zincrby.d.ts +0 -7
  370. package/types/pkg/commands/zinterstore.d.ts +0 -30
  371. package/types/pkg/commands/zlexcount.d.ts +0 -7
  372. package/types/pkg/commands/zpopmax.d.ts +0 -7
  373. package/types/pkg/commands/zpopmin.d.ts +0 -7
  374. package/types/pkg/commands/zrange.d.ts +0 -35
  375. package/types/pkg/commands/zrank.d.ts +0 -7
  376. package/types/pkg/commands/zrem.d.ts +0 -7
  377. package/types/pkg/commands/zremrangebylex.d.ts +0 -7
  378. package/types/pkg/commands/zremrangebyrank.d.ts +0 -7
  379. package/types/pkg/commands/zremrangebyscore.d.ts +0 -7
  380. package/types/pkg/commands/zrevrank.d.ts +0 -7
  381. package/types/pkg/commands/zscan.d.ts +0 -24
  382. package/types/pkg/commands/zscore.d.ts +0 -7
  383. package/types/pkg/commands/zunionstore.d.ts +0 -30
  384. package/types/pkg/error.d.ts +0 -6
  385. package/types/pkg/http.d.ts +0 -30
  386. package/types/pkg/pipeline.d.ts +0 -540
  387. package/types/pkg/redis.d.ts +0 -516
  388. package/types/pkg/types.d.ts +0 -1
  389. package/types/pkg/util.d.ts +0 -1
package/README.md CHANGED
@@ -11,9 +11,9 @@ It is the only connectionless (HTTP based) Redis client and designed for:
11
11
 
12
12
  - Serverless functions (AWS Lambda ...)
13
13
  - Cloudflare Workers (see
14
- [the example](https://github.com/upstash/upstash-redis/tree/master/examples/cloudflare-workers))
14
+ [the example](https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers))
15
15
  - Fastly Compute@Edge (see
16
- [the example](https://github.com/upstash/upstash-redis/tree/master/examples/fastly))
16
+ [the example](https://github.com/upstash/upstash-redis/tree/main/examples/fastly))
17
17
  - Next.js, Jamstack ...
18
18
  - Client side web/mobile applications
19
19
  - WebAssembly
@@ -23,29 +23,11 @@ See
23
23
  [the list of APIs](https://docs.upstash.com/features/restapi#rest---redis-api-compatibility)
24
24
  supported.
25
25
 
26
- ## Upgrading to v1.4.0 **(ReferenceError: fetch is not defined)**
27
-
28
- If you are running on nodejs v17 and earlier, `fetch` will not be natively
29
- supported. Platforms like Vercel, Netlify, Deno, Fastly etc. provide a polyfill
30
- for you. But if you are running on bare node, you need to either specify a
31
- polyfill yourself or change the import path to:
32
-
33
- ```typescript
34
- import { Redis } from "@upstash/redis/with-fetch";
35
- ```
36
-
37
- ## Upgrading from v0.2.0?
38
-
39
- Please read the
40
- [migration guide](https://github.com/upstash/upstash-redis#migrating-to-v1). For
41
- further explanation we wrote a
42
- [blog post](https://blog.upstash.com/upstash-redis-sdk-v1).
43
-
44
26
  ## Quick Start
45
27
 
46
28
  ### Install
47
29
 
48
- #### npm
30
+ #### Node.js
49
31
 
50
32
  ```bash
51
33
  npm install @upstash/redis
@@ -54,26 +36,14 @@ npm install @upstash/redis
54
36
  #### Deno
55
37
 
56
38
  ```ts
57
- import { Redis } from "https://deno.land/x/upstash_redis/mod.ts";
39
+ import { Redis } from "https://esm.sh/@upstash/redis";
58
40
  ```
59
41
 
60
42
  ### Create database
61
43
 
62
44
  Create a new redis database on [upstash](https://console.upstash.com/)
63
45
 
64
- ### Environments
65
-
66
- We support various platforms, such as nodejs, cloudflare and fastly. Platforms
67
- differ slightly when it comes to environment variables and their `fetch` api.
68
- Please use the correct import when deploying to special platforms.
69
-
70
- #### Node.js
71
-
72
- Examples: Vercel, Netlify, AWS Lambda
73
-
74
- If you are running on nodejs you can set `UPSTASH_REDIS_REST_URL` and
75
- `UPSTASH_REDIS_REST_TOKEN` as environment variable and create a redis instance
76
- like this:
46
+ ## Basic Usage:
77
47
 
78
48
  ```ts
79
49
  import { Redis } from "@upstash/redis"
@@ -83,259 +53,40 @@ const redis = new Redis({
83
53
  token: <UPSTASH_REDIS_REST_TOKEN>,
84
54
  })
85
55
 
86
- // or load directly from env
87
- const redis = Redis.fromEnv()
88
- ```
89
-
90
- If you are running on nodejs v17 and earlier, `fetch` will not be natively
91
- supported. Platforms like Vercel, Netlify, Deno, Fastly etc. provide a polyfill
92
- for you. But if you are running on bare node, you need to either specify a
93
- polyfill yourself or change the import path to:
94
-
95
- ```typescript
96
- import { Redis } from "@upstash/redis/with-fetch";
97
- ```
98
-
99
- - [Code example](https://github.com/upstash/upstash-redis/blob/main/examples/nodejs)
100
-
101
- #### Cloudflare Workers
102
-
103
- Cloudflare handles environment variables differently than nodejs. Please add
104
- `UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN` using
105
- `wrangler secret put ...` or in the cloudflare dashboard.
106
-
107
- Afterwards you can create a redis instance:
108
-
109
- ```ts
110
- import { Redis } from "@upstash/redis/cloudflare"
111
-
112
- const redis = new Redis({
113
- url: <UPSTASH_REDIS_REST_URL>,
114
- token: <UPSTASH_REDIS_REST_TOKEN>,
115
- })
116
-
117
-
118
- // or load directly from global env
119
-
120
- // service worker
121
- const redis = Redis.fromEnv()
122
-
123
-
124
- // module worker
125
- export default {
126
- async fetch(request: Request, env: Bindings) {
127
- const redis = Redis.fromEnv(env)
128
- // ...
129
- }
130
- }
131
- ```
132
-
133
- - [Code example service worker](https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers)
134
- - [Code example module worker](https://github.com/upstash/upstash-redis/tree/main/examples/cloudflare-workers-modules)
135
- - [Documentation](https://docs.upstash.com/redis/tutorials/cloudflare_workers_with_redis)
136
-
137
- #### Fastly
138
-
139
- Fastly introduces a concept called
140
- [backend](https://developer.fastly.com/reference/api/services/backend/). You
141
- need to configure a backend in your `fastly.toml`. An example can be found
142
- [here](https://github.com/upstash/upstash-redis/blob/main/examples/fastly/fastly.toml).
143
- Until the fastly api stabilizes we recommend creating an instance manually:
144
-
145
- ```ts
146
- import { Redis } from "@upstash/redis/fastly"
147
-
148
- const redis = new Redis({
149
- url: <UPSTASH_REDIS_REST_URL>,
150
- token: <UPSTASH_REDIS_REST_TOKEN>,
151
- backend: <BACKEND_NAME>,
152
- })
153
- ```
154
-
155
- - [Code example](https://github.com/upstash/upstash-redis/tree/main/examples/fastly)
156
- - [Documentation](https://blog.upstash.com/fastly-compute-edge-with-redi)
56
+ // string
57
+ await redis.set('key', 'value');
58
+ let data = await redis.get('key');
59
+ console.log(data)
157
60
 
158
- #### Deno
61
+ await redis.set('key3', 'value3', {ex: 1});
159
62
 
160
- Examples: [Deno Deploy](https://deno.com/deploy),
161
- [Netlify Edge](https://www.netlify.com/products/edge/)
63
+ // sorted set
64
+ await redis.zadd('scores', { score: 1, member: 'team1' })
65
+ data = await redis.zrange('scores', 0, 100 )
66
+ console.log(data)
162
67
 
163
- ```ts
164
- import { Redis } from "https://deno.land/x/upstash_redis/mod.ts"
68
+ // list
69
+ await redis.lpush('elements', 'magnesium')
70
+ data = await redis.lrange('elements', 0, 100 )
71
+ console.log(data)
165
72
 
166
- const redis = new Redis({
167
- url: <UPSTASH_REDIS_REST_URL>,
168
- token: <UPSTASH_REDIS_REST_TOKEN>,
169
- })
73
+ // hash
74
+ await redis.hset('people', {name: 'joe'})
75
+ data = await redis.hget('people', 'name' )
76
+ console.log(data)
170
77
 
171
- // or
172
- const redis = Redis.fromEnv();
78
+ // sets
79
+ await redis.sadd('animals', 'cat')
80
+ data = await redis.spop('animals', 1)
81
+ console.log(data)
173
82
  ```
174
83
 
175
- ### Working with types
176
-
177
- Most commands allow you to provide a type to make working with typescript
178
- easier.
179
-
180
- ```ts
181
- const data = await redis.get<MyCustomType>("key");
182
- // data is typed as `MyCustomType`
183
- ```
84
+ ## Troubleshooting
184
85
 
185
- ## Migrating to v1
186
-
187
- ### Explicit authentication
188
-
189
- The library is no longer automatically trying to load connection secrets from
190
- environment variables. You must either supply them yourself:
191
-
192
- ```ts
193
- import { Redis } from "@upstash/redis"
194
-
195
- const redis = new Redis({
196
- url: <UPSTASH_REDIS_REST_URL>,
197
- token: <UPSTASH_REDIS_REST_TOKEN>,
198
- })
199
- ```
200
-
201
- Or use one of the static constructors to load from environment variables:
202
-
203
- ```ts
204
- // Nodejs
205
- import { Redis } from "@upstash/redis";
206
- const redis = Redis.fromEnv();
207
- ```
208
-
209
- ```ts
210
- // or when deploying to cloudflare workers
211
- import { Redis } from "@upstash/redis/cloudflare";
212
- const redis = Redis.fromEnv();
213
- ```
214
-
215
- ### Error handling
216
-
217
- Errors are now thrown automatically instead of being returned to you.
218
-
219
- ```ts
220
- // old
221
- const { data, error } = await set("key", "value");
222
- if (error) {
223
- throw new Error(error);
224
- }
225
-
226
- // new
227
- const data = await redis.set("key", "value"); // error is thrown automatically
228
- ```
229
-
230
- ## Pipeline
231
-
232
- `v1.0.0` introduces redis pipelines. Pipelining commands allows you to send a
233
- single http request with multiple commands.
234
-
235
- ```ts
236
- import { Redis } from "@upstash/redis";
237
-
238
- const redis = new Redis({
239
- /* auth */
240
- });
241
-
242
- const p = redis.pipeline();
243
-
244
- // Now you can chain multiple commands to create your pipeline:
245
-
246
- p.set("key", 2);
247
- p.incr("key");
248
-
249
- // or inline:
250
- p.hset("key2", "field", { hello: "world" }).hvals("key2");
251
-
252
- // Execute the pipeline once you are done building it:
253
- // `exec` returns an array where each element represents the response of a command in the pipeline.
254
- // You can optionally provide a type like this to get a typed response.
255
- const res = await p.exec<[Type1, Type2, Type3]>();
256
- ```
257
-
258
- For more information about pipelines using REST see
259
- [here](https://blog.upstash.com/pipeline).
260
-
261
- ### Advanced
262
-
263
- A low level `Command` class can be imported from `@upstash/redis` in case you
264
- need more control about types and or (de)serialization.
265
-
266
- By default all objects you are storing in redis are serialized using
267
- `JSON.stringify` and recursively deserialized as well. Here's an example how you
268
- could customize that behaviour. Keep in mind that you need to provide a `fetch`
269
- polyfill if you are running on nodejs. We recommend
270
- [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch).
271
-
272
- ```ts
273
- import { Command } from "@upstash/redis/commands"
274
- import { HttpClient } from "@upstash/redis/http"
275
-
276
- /**
277
- * TData represents what the user will enter or receive,
278
- * TResult is the raw data returned from upstash, which may need to be
279
- * transformed or parsed.
280
- */
281
- const deserialize: (raw: TResult) => TData = ...
282
-
283
- class CustomGetCommand<TData, TResult> extends Command<TData | null, TResult | null> {
284
- constructor(key: string, ) {
285
- super(["get", key], { deserialize })
286
- }
287
- }
288
-
289
- const client = new HttpClient({
290
- baseUrl: <UPSTASH_REDIS_REST_URL>,
291
- headers: {
292
- authorization: `Bearer ${<UPSTASH_REDIS_REST_TOKEN>}`,
293
- },
294
- })
295
-
296
- const res = new CustomGetCommand("key").exec(client)
297
- ```
298
-
299
- ### Additional information
300
-
301
- #### `keepalive`
302
-
303
- `@upstash/redis` is capable of reusing connections where possible to minimize
304
- latency. Connections can be reused if the client is stored in memory and not
305
- initialized with every new function invocation. The easiest way to achieve this
306
- is by creating the client outside of your handler and adding an https agent:
307
-
308
- ```ts
309
- // Nextjs api route
310
- import { Redis } from "@upstash/redis";
311
- import https from "https";
312
-
313
- const redis = Redis.fromEnv({
314
- agent: new https.Agent({ keepAlive: true }),
315
- });
316
-
317
- export default async function (req, res) {
318
- // use redis here
319
- }
320
- ```
321
-
322
- Whenever your hot lambda receives a new request the client is already
323
- initialized and the previously established connection to upstash is reused.
324
-
325
- #### Javascript MAX_SAFE_INTEGER
326
-
327
- Javascript can not handle numbers larger than `2^53 -1` safely and would return
328
- wrong results when trying to deserialize them. In these cases the default
329
- deserializer will return them as string instead. This might cause a mismatch
330
- with your custom types.
331
-
332
- ```ts
333
- await redis.set("key", "101600000000150081467");
334
- const res = await redis<number>("get");
335
- ```
336
-
337
- In this example `res` will still be a string despite the type annotation. Please
338
- keep that in mind and adjust accordingly.
86
+ We have a
87
+ [dedicated page](https://docs.upstash.com/redis/sdks/javascriptsdk/troubleshooting)
88
+ for common problems. If you can't find a solution, please
89
+ [open an issue](https://github.com/upstash/upstash-redis/issues/new).
339
90
 
340
91
  ## Docs
341
92
 
@@ -344,7 +95,7 @@ details.
344
95
 
345
96
  ## Contributing
346
97
 
347
- ### [Install Deno](https://deno.land/#installation)
98
+ ### [Install Bun](https://bun.sh/docs/installation)
348
99
 
349
100
  ### Database
350
101
 
@@ -354,8 +105,28 @@ the url and token
354
105
  ### Running tests
355
106
 
356
107
  ```sh
357
- UPSTASH_REDIS_REST_URL=".." UPSTASH_REDIS_REST_TOKEN=".." deno test -A
108
+ bun run test
358
109
  ```
359
110
 
111
+ ### Building
112
+
113
+ ```sh
114
+ bun run build
360
115
  ```
116
+
117
+
118
+ ### Telemetry
119
+
120
+ This library sends anonymous telemetry data to help us improve your experience.
121
+ We collect the following:
122
+
123
+ - SDK version
124
+ - Platform (Deno, Cloudflare, Vercel)
125
+ - Runtime version (node@18.x)
126
+
127
+ You can opt out by setting the `UPSTASH_DISABLE_TELEMETRY` environment variable
128
+ to any truthy value.
129
+
130
+ ```sh
131
+ UPSTASH_DISABLE_TELEMETRY=1
361
132
  ```
@@ -0,0 +1,45 @@
1
+ import { R as RedisOptions, a as RequesterConfig, b as Redis$1 } from './redis-b1b1b1df.js';
2
+ export { c as Requester, U as UpstashRequest, d as UpstashResponse } from './redis-b1b1b1df.js';
3
+
4
+ type Env = {
5
+ UPSTASH_DISABLE_TELEMETRY?: string;
6
+ };
7
+
8
+ /**
9
+ * Connection credentials for upstash redis.
10
+ * Get them from https://console.upstash.com/redis/<uuid>
11
+ */
12
+ type RedisConfigCloudflare = {
13
+ /**
14
+ * UPSTASH_REDIS_REST_URL
15
+ */
16
+ url: string;
17
+ /**
18
+ * UPSTASH_REDIS_REST_TOKEN
19
+ */
20
+ token: string;
21
+ } & RedisOptions & RequesterConfig & Env;
22
+ /**
23
+ * Serverless redis client for upstash.
24
+ */
25
+ declare class Redis extends Redis$1 {
26
+ /**
27
+ * Create a new redis client
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const redis = new Redis({
32
+ * url: "<UPSTASH_REDIS_REST_URL>",
33
+ * token: "<UPSTASH_REDIS_REST_TOKEN>",
34
+ * });
35
+ * ```
36
+ */
37
+ constructor(config: RedisConfigCloudflare, env?: Env);
38
+ static fromEnv(env?: {
39
+ UPSTASH_REDIS_REST_URL: string;
40
+ UPSTASH_REDIS_REST_TOKEN: string;
41
+ UPSTASH_DISABLE_TELEMETRY?: string;
42
+ }, opts?: Omit<RedisConfigCloudflare, "url" | "token">): Redis;
43
+ }
44
+
45
+ export { Redis, RedisConfigCloudflare };
@@ -1,11 +1,15 @@
1
- import * as core from "../pkg/redis.js";
2
- import type { Requester, UpstashRequest, UpstashResponse } from "../pkg/http.js";
3
- export type { Requester, UpstashRequest, UpstashResponse };
1
+ import { R as RedisOptions, a as RequesterConfig, b as Redis$1 } from './redis-b1b1b1df.js';
2
+ export { c as Requester, U as UpstashRequest, d as UpstashResponse } from './redis-b1b1b1df.js';
3
+
4
+ type Env = {
5
+ UPSTASH_DISABLE_TELEMETRY?: string;
6
+ };
7
+
4
8
  /**
5
9
  * Connection credentials for upstash redis.
6
10
  * Get them from https://console.upstash.com/redis/<uuid>
7
11
  */
8
- export declare type RedisConfigCloudflare = {
12
+ type RedisConfigCloudflare = {
9
13
  /**
10
14
  * UPSTASH_REDIS_REST_URL
11
15
  */
@@ -14,11 +18,11 @@ export declare type RedisConfigCloudflare = {
14
18
  * UPSTASH_REDIS_REST_TOKEN
15
19
  */
16
20
  token: string;
17
- } & core.RedisOptions;
21
+ } & RedisOptions & RequesterConfig & Env;
18
22
  /**
19
23
  * Serverless redis client for upstash.
20
24
  */
21
- export declare class Redis extends core.Redis {
25
+ declare class Redis extends Redis$1 {
22
26
  /**
23
27
  * Create a new redis client
24
28
  *
@@ -30,9 +34,12 @@ export declare class Redis extends core.Redis {
30
34
  * });
31
35
  * ```
32
36
  */
33
- constructor(config: RedisConfigCloudflare);
37
+ constructor(config: RedisConfigCloudflare, env?: Env);
34
38
  static fromEnv(env?: {
35
39
  UPSTASH_REDIS_REST_URL: string;
36
40
  UPSTASH_REDIS_REST_TOKEN: string;
37
- }): Redis;
41
+ UPSTASH_DISABLE_TELEMETRY?: string;
42
+ }, opts?: Omit<RedisConfigCloudflare, "url" | "token">): Redis;
38
43
  }
44
+
45
+ export { Redis, RedisConfigCloudflare };
package/cloudflare.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";var ye=Object.create;var ee=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,we=Object.prototype.hasOwnProperty;var De=(s,n)=>{for(var t in n)ee(s,t,{get:n[t],enumerable:!0})},ce=(s,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let m of Te(n))!we.call(s,m)&&m!==t&&ee(s,m,{get:()=>n[m],enumerable:!(o=be(n,m))||o.enumerable});return s};var ue=(s,n,t)=>(t=s!=null?ye(Oe(s)):{},ce(n||!s||!s.__esModule?ee(t,"default",{value:s,enumerable:!0}):t,s)),Ae=s=>ce(ee({},"__esModule",{value:!0}),s);var Le={};De(Le,{Redis:()=>pe});module.exports=Ae(Le);var c=class extends Error{constructor(n){super(n),this.name="UpstashError"}};var oe=class{baseUrl;headers;options;retry;constructor(n){this.options={backend:n.options?.backend,agent:n.agent,responseEncoding:n.responseEncoding??"base64",cache:n.cache},this.baseUrl=n.baseUrl.replace(/\/$/,""),this.headers={"Content-Type":"application/json",...n.headers},this.options.responseEncoding==="base64"&&(this.headers["Upstash-Encoding"]="base64"),typeof n?.retry=="boolean"&&n?.retry===!1?this.retry={attempts:1,backoff:()=>0}:this.retry={attempts:n?.retry?.retries??5,backoff:n?.retry?.backoff??(t=>Math.exp(t)*50)}}mergeTelemetry(n){function t(o,m,r){return r&&(o[m]?o[m]=[o[m],r].join(","):o[m]=r),o}this.headers=t(this.headers,"Upstash-Telemetry-Runtime",n.runtime),this.headers=t(this.headers,"Upstash-Telemetry-Platform",n.platform),this.headers=t(this.headers,"Upstash-Telemetry-Sdk",n.sdk)}async request(n){let t={cache:this.options.cache,method:"POST",headers:this.headers,body:JSON.stringify(n.body),keepalive:!0,agent:this.options?.agent,backend:this.options?.backend},o=null,m=null;for(let a=0;a<=this.retry.attempts;a++)try{o=await fetch([this.baseUrl,...n.path??[]].join("/"),t);break}catch(i){m=i,await new Promise(p=>setTimeout(p,this.retry.backoff(a)))}if(!o)throw m??new Error("Exhausted all retries");let r=await o.json();if(!o.ok)throw new c(`${r.error}, command was: ${JSON.stringify(n.body)}`);return this.options?.responseEncoding==="base64"?Array.isArray(r)?r.map(({result:i,error:p})=>({result:ie(i),error:p})):{result:ie(r.result),error:r.error}:r}};function he(s){let n="";try{let t=atob(s),o=t.length,m=new Uint8Array(o);for(let r=0;r<o;r++)m[r]=t.charCodeAt(r);n=new TextDecoder().decode(m)}catch{n=s}return n}function ie(s){let n;switch(typeof s){case"undefined":return s;case"number":{n=s;break}case"object":{Array.isArray(s)?n=s.map(t=>typeof t=="string"?he(t):Array.isArray(t)?t.map(ie):t):n=null;break}case"string":{n=s==="OK"?"OK":he(s);break}default:break}return n}function le(s){let n=Array.isArray(s)?s.map(t=>{try{return le(t)}catch{return t}}):JSON.parse(s);return typeof n=="number"&&n.toString()!==s?s:n}function Ce(s){try{return le(s)}catch{return s}}var ke=s=>{switch(typeof s){case"string":case"number":case"boolean":return s;default:return JSON.stringify(s)}},e=class{command;serialize;deserialize;constructor(n,t){this.serialize=ke,this.deserialize=typeof t?.automaticDeserialization>"u"||t.automaticDeserialization?t?.deserialize??Ce:o=>o,this.command=n.map(o=>this.serialize(o))}async exec(n){let{result:t,error:o}=await n.request({body:this.command});if(o)throw new c(o);if(typeof t>"u")throw new Error("Request did not return a result");return this.deserialize(t)}};var l=class extends e{constructor(n,t){super(["append",...n],t)}};var C=class extends e{constructor([n,t,o],m){let r=["bitcount",n];typeof t=="number"&&r.push(t),typeof o=="number"&&r.push(o),super(r,m)}};var g=class extends e{constructor(n,t){super(["bitop",...n],t)}};var x=class extends e{constructor(n,t){super(["bitpos",...n],t)}};var f=class extends e{constructor(n){super(["dbsize"],n)}};var y=class extends e{constructor(n,t){super(["decr",...n],t)}};var b=class extends e{constructor(n,t){super(["decrby",...n],t)}};var T=class extends e{constructor(n,t){super(["del",...n],t)}};var O=class extends e{constructor(n,t){super(["echo",...n],t)}};var w=class extends e{constructor([n,t,o],m){super(["eval",n,t.length,...t,...o??[]],m)}};var D=class extends e{constructor([n,t,o],m){super(["evalsha",n,t.length,...t,...o??[]],m)}};var A=class extends e{constructor(n,t){super(["exists",...n],t)}};var k=class extends e{constructor(n,t){super(["expire",...n],t)}};var S=class extends e{constructor(n,t){super(["expireat",...n],t)}};var R=class extends e{constructor(n,t){let o=["flushall"];n&&n.length>0&&n[0].async&&o.push("async"),super(o,t)}};var M=class extends e{constructor([n],t){let o=["flushdb"];n?.async&&o.push("async"),super(o,t)}};var E=class extends e{constructor([n,t,...o],m){let r=["geoadd",n];"nx"in t&&t.nx?r.push("nx"):"xx"in t&&t.xx&&r.push("xx"),"ch"in t&&t.ch&&r.push("ch"),"latitude"in t&&t.latitude&&r.push(t.longitude,t.latitude,t.member),r.push(...o.flatMap(({latitude:a,longitude:i,member:p})=>[i,a,p])),super(r,m)}};var v=class extends e{constructor([n,t,o,m="M"],r){super(["GEODIST",n,t,o,m],r)}};var z=class extends e{constructor(n,t){let[o]=n,m=Array.isArray(n[1])?n[1]:n.slice(1);super(["GEOPOS",o,...m],{deserialize:r=>Se(r),...t})}};function Se(s){let n=[];for(let t of s)!t?.[0]||!t?.[1]||n.push({lng:parseFloat(t[0]),lat:parseFloat(t[1])});return n}var L=class extends e{constructor(n,t){let[o]=n,m=Array.isArray(n[1])?n[1]:n.slice(1);super(["GEOHASH",o,...m],t)}};var I=class extends e{constructor([n,t,o,m,r],a){let i=["GEOSEARCH",n];(t.type==="FROMMEMBER"||t.type==="frommember")&&i.push(t.type,t.member),(t.type==="FROMLONLAT"||t.type==="fromlonlat")&&i.push(t.type,t.coordinate.lon,t.coordinate.lat),(o.type==="BYRADIUS"||o.type==="byradius")&&i.push(o.type,o.radius,o.radiusType),(o.type==="BYBOX"||o.type==="bybox")&&i.push(o.type,o.rect.width,o.rect.height,o.rectType),i.push(m),r?.count&&i.push(r.count.limit,...r.count.any?["ANY"]:[]);let p=de=>!r?.withCoord&&!r?.withDist&&!r?.withHash?de.map(d=>{try{return{member:JSON.parse(d)}}catch{return{member:d}}}):de.map(d=>{let te=1,h={};try{h.member=JSON.parse(d[0])}catch{h.member=d[0]}return r.withDist&&(h.dist=parseFloat(d[te++])),r.withHash&&(h.hash=d[te++].toString()),r.withCoord&&(h.coord={long:parseFloat(d[te][0]),lat:parseFloat(d[te][1])}),h});super([...i,...r?.withCoord?["WITHCOORD"]:[],...r?.withDist?["WITHDIST"]:[],...r?.withHash?["WITHHASH"]:[]],{...a,deserialize:p})}};var P=class extends e{constructor([n,t,o,m,r,a],i){let p=["GEOSEARCHSTORE",n,t];(o.type==="FROMMEMBER"||o.type==="frommember")&&p.push(o.type,o.member),(o.type==="FROMLONLAT"||o.type==="fromlonlat")&&p.push(o.type,o.coordinate.lon,o.coordinate.lat),(m.type==="BYRADIUS"||m.type==="byradius")&&p.push(m.type,m.radius,m.radiusType),(m.type==="BYBOX"||m.type==="bybox")&&p.push(m.type,m.rect.width,m.rect.height,m.rectType),p.push(r),a?.count&&p.push(a.count.limit,...a.count.any?["ANY"]:[]),super([...p,...a?.storeDist?["STOREDIST"]:[]],i)}};var J=class extends e{constructor(n,t){super(["get",...n],t)}};var K=class extends e{constructor(n,t){super(["getbit",...n],t)}};var N=class extends e{constructor(n,t){super(["getdel",...n],t)}};var Z=class extends e{constructor(n,t){super(["getrange",...n],t)}};var U=class extends e{constructor(n,t){super(["getset",...n],t)}};var G=class extends e{constructor(n,t){super(["hdel",...n],t)}};var H=class extends e{constructor(n,t){super(["hexists",...n],t)}};var B=class extends e{constructor(n,t){super(["hget",...n],t)}};function Re(s){if(s.length===0)return null;let n={};for(;s.length>=2;){let t=s.shift(),o=s.shift();try{!Number.isNaN(Number(o))&&!Number.isSafeInteger(o)?n[t]=o:n[t]=JSON.parse(o)}catch{n[t]=o}}return n}var F=class extends e{constructor(n,t){super(["hgetall",...n],{deserialize:o=>Re(o),...t})}};var q=class extends e{constructor(n,t){super(["hincrby",...n],t)}};var _=class extends e{constructor(n,t){super(["hincrbyfloat",...n],t)}};var $=class extends e{constructor([n],t){super(["hkeys",n],t)}};var X=class extends e{constructor(n,t){super(["hlen",...n],t)}};function Me(s,n){if(n.length===0||n.every(o=>o===null))return null;let t={};for(let o=0;o<s.length;o++)try{t[s[o]]=JSON.parse(n[o])}catch{t[s[o]]=n[o]}return t}var j=class extends e{constructor([n,...t],o){super(["hmget",n,...t],{deserialize:m=>Me(t,m),...o})}};var Y=class extends e{constructor([n,t],o){super(["hmset",n,...Object.entries(t).flatMap(([m,r])=>[m,r])],o)}};function Ee(s){if(s.length===0)return null;let n={};for(;s.length>=2;){let t=s.shift(),o=s.shift();try{n[t]=JSON.parse(o)}catch{n[t]=o}}return n}var W=class extends e{constructor(n,t){let o=["hrandfield",n[0]];typeof n[1]=="number"&&o.push(n[1]),n[2]&&o.push("WITHVALUES"),super(o,{deserialize:n[2]?m=>Ee(m):t?.deserialize,...t})}};var V=class extends e{constructor([n,t,o],m){let r=["hscan",n,t];o?.match&&r.push("match",o.match),typeof o?.count=="number"&&r.push("count",o.count),super(r,m)}};var Q=class extends e{constructor([n,t],o){super(["hset",n,...Object.entries(t).flatMap(([m,r])=>[m,r])],o)}};var nn=class extends e{constructor(n,t){super(["hsetnx",...n],t)}};var tn=class extends e{constructor(n,t){super(["hstrlen",...n],t)}};var en=class extends e{constructor(n,t){super(["hvals",...n],t)}};var on=class extends e{constructor(n,t){super(["incr",...n],t)}};var sn=class extends e{constructor(n,t){super(["incrby",...n],t)}};var mn=class extends e{constructor(n,t){super(["incrbyfloat",...n],t)}};var rn=class extends e{constructor(n,t){super(["JSON.ARRAPPEND",...n],t)}};var an=class extends e{constructor(n,t){super(["JSON.ARRINDEX",...n],t)}};var pn=class extends e{constructor(n,t){super(["JSON.ARRINSERT",...n],t)}};var dn=class extends e{constructor(n,t){super(["JSON.ARRLEN",n[0],n[1]??"$"],t)}};var cn=class extends e{constructor(n,t){super(["JSON.ARRPOP",...n],t)}};var un=class extends e{constructor(n,t){let o=n[1]??"$",m=n[2]??0,r=n[3]??0;super(["JSON.ARRTRIM",n[0],o,m,r],t)}};var hn=class extends e{constructor(n,t){super(["JSON.CLEAR",...n],t)}};var ln=class extends e{constructor(n,t){super(["JSON.DEL",...n],t)}};var Cn=class extends e{constructor(n,t){super(["JSON.FORGET",...n],t)}};var gn=class extends e{constructor(n,t){let o=["JSON.GET"];typeof n[1]=="string"?o.push(...n):(o.push(n[0]),n[1]&&(n[1].indent&&o.push("INDENT",n[1].indent),n[1].newline&&o.push("NEWLINE",n[1].newline),n[1].space&&o.push("SPACE",n[1].space)),o.push(...n.slice(2))),super(o,t)}};var xn=class extends e{constructor(n,t){super(["JSON.MGET",...n[0],n[1]],t)}};var fn=class extends e{constructor(n,t){super(["JSON.NUMINCRBY",...n],t)}};var yn=class extends e{constructor(n,t){super(["JSON.NUMMULTBY",...n],t)}};var bn=class extends e{constructor(n,t){super(["JSON.OBJKEYS",...n],t)}};var Tn=class extends e{constructor(n,t){super(["JSON.OBJLEN",...n],t)}};var On=class extends e{constructor(n,t){super(["JSON.RESP",...n],t)}};var wn=class extends e{constructor(n,t){let o=["JSON.SET",n[0],n[1],n[2]];n[3]&&(n[3].nx?o.push("NX"):n[3].xx&&o.push("XX")),super(o,t)}};var Dn=class extends e{constructor(n,t){super(["JSON.STRAPPEND",...n],t)}};var An=class extends e{constructor(n,t){super(["JSON.STRLEN",...n],t)}};var kn=class extends e{constructor(n,t){super(["JSON.TOGGLE",...n],t)}};var Sn=class extends e{constructor(n,t){super(["JSON.TYPE",...n],t)}};var Rn=class extends e{constructor(n,t){super(["keys",...n],t)}};var Mn=class extends e{constructor(n,t){super(["lindex",...n],t)}};var En=class extends e{constructor(n,t){super(["linsert",...n],t)}};var vn=class extends e{constructor(n,t){super(["llen",...n],t)}};var zn=class extends e{constructor(n,t){super(["lmove",...n],t)}};var Ln=class extends e{constructor(n,t){super(["lpop",...n],t)}};var In=class extends e{constructor(n,t){let o=["lpos",n[0],n[1]];typeof n[2]?.rank=="number"&&o.push("rank",n[2].rank),typeof n[2]?.count=="number"&&o.push("count",n[2].count),typeof n[2]?.maxLen=="number"&&o.push("maxLen",n[2].maxLen),super(o,t)}};var Pn=class extends e{constructor(n,t){super(["lpush",...n],t)}};var Jn=class extends e{constructor(n,t){super(["lpushx",...n],t)}};var Kn=class extends e{constructor(n,t){super(["lrange",...n],t)}};var Nn=class extends e{constructor(n,t){super(["lrem",...n],t)}};var Zn=class extends e{constructor(n,t){super(["lset",...n],t)}};var Un=class extends e{constructor(n,t){super(["ltrim",...n],t)}};var Gn=class extends e{constructor(n,t){let o=Array.isArray(n[0])?n[0]:n;super(["mget",...o],t)}};var Hn=class extends e{constructor([n],t){super(["mset",...Object.entries(n).flatMap(([o,m])=>[o,m])],t)}};var Bn=class extends e{constructor([n],t){super(["msetnx",...Object.entries(n).flatMap(o=>o)],t)}};var Fn=class extends e{constructor(n,t){super(["persist",...n],t)}};var qn=class extends e{constructor(n,t){super(["pexpire",...n],t)}};var _n=class extends e{constructor(n,t){super(["pexpireat",...n],t)}};var $n=class extends e{constructor(n,t){let o=["ping"];typeof n<"u"&&typeof n[0]<"u"&&o.push(n[0]),super(o,t)}};var Xn=class extends e{constructor(n,t){super(["psetex",...n],t)}};var jn=class extends e{constructor(n,t){super(["pttl",...n],t)}};var Yn=class extends e{constructor(n,t){super(["publish",...n],t)}};var Wn=class extends e{constructor(n){super(["randomkey"],n)}};var Vn=class extends e{constructor(n,t){super(["rename",...n],t)}};var Qn=class extends e{constructor(n,t){super(["renamenx",...n],t)}};var nt=class extends e{constructor(n,t){super(["rpop",...n],t)}};var tt=class extends e{constructor(n,t){super(["rpush",...n],t)}};var et=class extends e{constructor(n,t){super(["rpushx",...n],t)}};var ot=class extends e{constructor(n,t){super(["sadd",...n],t)}};var st=class extends e{constructor([n,t],o){let m=["scan",n];t?.match&&m.push("match",t.match),typeof t?.count=="number"&&m.push("count",t.count),t?.type&&t.type.length>0&&m.push("type",t.type),super(m,o)}};var mt=class extends e{constructor(n,t){super(["scard",...n],t)}};var rt=class extends e{constructor(n,t){super(["script","exists",...n],{deserialize:o=>o,...t})}};var at=class extends e{constructor([n],t){let o=["script","flush"];n?.sync?o.push("sync"):n?.async&&o.push("async"),super(o,t)}};var it=class extends e{constructor(n,t){super(["script","load",...n],t)}};var pt=class extends e{constructor(n,t){super(["sdiff",...n],t)}};var dt=class extends e{constructor(n,t){super(["sdiffstore",...n],t)}};var ct=class extends e{constructor([n,t,o],m){let r=["set",n,t];o&&("nx"in o&&o.nx?r.push("nx"):"xx"in o&&o.xx&&r.push("xx"),"get"in o&&o.get&&r.push("get"),"ex"in o&&typeof o.ex=="number"?r.push("ex",o.ex):"px"in o&&typeof o.px=="number"?r.push("px",o.px):"exat"in o&&typeof o.exat=="number"?r.push("exat",o.exat):"pxat"in o&&typeof o.pxat=="number"?r.push("pxat",o.pxat):"keepTtl"in o&&o.keepTtl&&r.push("keepTtl")),super(r,m)}};var ut=class extends e{constructor(n,t){super(["setbit",...n],t)}};var ht=class extends e{constructor(n,t){super(["setex",...n],t)}};var lt=class extends e{constructor(n,t){super(["setnx",...n],t)}};var Ct=class extends e{constructor(n,t){super(["setrange",...n],t)}};var gt=class extends e{constructor(n,t){super(["sinter",...n],t)}};var xt=class extends e{constructor(n,t){super(["sinterstore",...n],t)}};var ft=class extends e{constructor(n,t){super(["sismember",...n],t)}};var yt=class extends e{constructor(n,t){super(["smembers",...n],t)}};var bt=class extends e{constructor(n,t){super(["smismember",n[0],...n[1]],t)}};var Tt=class extends e{constructor(n,t){super(["smove",...n],t)}};var Ot=class extends e{constructor([n,t],o){let m=["spop",n];typeof t=="number"&&m.push(t),super(m,o)}};var wt=class extends e{constructor([n,t],o){let m=["srandmember",n];typeof t=="number"&&m.push(t),super(m,o)}};var Dt=class extends e{constructor(n,t){super(["srem",...n],t)}};var At=class extends e{constructor([n,t,o],m){let r=["sscan",n,t];o?.match&&r.push("match",o.match),typeof o?.count=="number"&&r.push("count",o.count),super(r,m)}};var kt=class extends e{constructor(n,t){super(["strlen",...n],t)}};var St=class extends e{constructor(n,t){super(["sunion",...n],t)}};var Rt=class extends e{constructor(n,t){super(["sunionstore",...n],t)}};var Mt=class extends e{constructor(n){super(["time"],n)}};var Et=class extends e{constructor(n,t){super(["touch",...n],t)}};var vt=class extends e{constructor(n,t){super(["ttl",...n],t)}};var zt=class extends e{constructor(n,t){super(["type",...n],t)}};var Lt=class extends e{constructor(n,t){super(["unlink",...n],t)}};var se=class extends e{constructor([n,t,o,m],r){let a=["XADD",n];m&&(m.nomkStream&&a.push("NOMKSTREAM"),m.trim&&(a.push(m.trim.type,m.trim.comparison,m.trim.threshold),typeof m.trim.limit<"u"&&a.push("LIMIT",m.trim.limit))),a.push(t);for(let[i,p]of Object.entries(o))a.push(i,p);super(a,r)}};function ve(s){let n={};for(let t of s)for(;t.length>=2;){let o=t.shift(),m=t.shift();for((o in n)||(n[o]={});m.length>=2;){let r=m.shift(),a=m.shift();try{n[o][r]=JSON.parse(a)}catch{n[o][r]=a}}}return n}var me=class extends e{constructor([n,t,o,m],r){let a=["XRANGE",n,t,o];typeof m=="number"&&a.push("COUNT",m),super(a,{deserialize:i=>ve(i),...r})}};var u=class extends e{constructor([n,t,...o],m){let r=["zadd",n];"nx"in t&&t.nx?r.push("nx"):"xx"in t&&t.xx&&r.push("xx"),"ch"in t&&t.ch&&r.push("ch"),"incr"in t&&t.incr&&r.push("incr"),"score"in t&&"member"in t&&r.push(t.score,t.member),r.push(...o.flatMap(({score:a,member:i})=>[a,i])),super(r,m)}};var It=class extends e{constructor(n,t){super(["zcard",...n],t)}};var Pt=class extends e{constructor(n,t){super(["zcount",...n],t)}};var Jt=class extends e{constructor(n,t){super(["zincrby",...n],t)}};var Kt=class extends e{constructor([n,t,o,m],r){let a=["zinterstore",n,t];Array.isArray(o)?a.push(...o):a.push(o),m&&("weights"in m&&m.weights?a.push("weights",...m.weights):"weight"in m&&typeof m.weight=="number"&&a.push("weights",m.weight),"aggregate"in m&&a.push("aggregate",m.aggregate)),super(a,r)}};var Nt=class extends e{constructor(n,t){super(["zlexcount",...n],t)}};var Zt=class extends e{constructor([n,t],o){let m=["zpopmax",n];typeof t=="number"&&m.push(t),super(m,o)}};var Ut=class extends e{constructor([n,t],o){let m=["zpopmin",n];typeof t=="number"&&m.push(t),super(m,o)}};var Gt=class extends e{constructor([n,t,o,m],r){let a=["zrange",n,t,o];m?.byScore&&a.push("byscore"),m?.byLex&&a.push("bylex"),m?.rev&&a.push("rev"),typeof m?.count<"u"&&typeof m?.offset<"u"&&a.push("limit",m.offset,m.count),m?.withScores&&a.push("withscores"),super(a,r)}};var Ht=class extends e{constructor(n,t){super(["zrank",...n],t)}};var Bt=class extends e{constructor(n,t){super(["zrem",...n],t)}};var Ft=class extends e{constructor(n,t){super(["zremrangebylex",...n],t)}};var qt=class extends e{constructor(n,t){super(["zremrangebyrank",...n],t)}};var _t=class extends e{constructor(n,t){super(["zremrangebyscore",...n],t)}};var $t=class extends e{constructor(n,t){super(["zrevrank",...n],t)}};var Xt=class extends e{constructor([n,t,o],m){let r=["zscan",n,t];o?.match&&r.push("match",o.match),typeof o?.count=="number"&&r.push("count",o.count),super(r,m)}};var jt=class extends e{constructor(n,t){super(["zscore",...n],t)}};var Yt=class extends e{constructor([n,t,o],m){let r=["zunion",n];Array.isArray(t)?r.push(...t):r.push(t),o&&("weights"in o&&o.weights?r.push("weights",...o.weights):"weight"in o&&typeof o.weight=="number"&&r.push("weights",o.weight),"aggregate"in o&&r.push("aggregate",o.aggregate),o?.withScores&&r.push("withscores")),super(r,m)}};var Wt=class extends e{constructor([n,t,o,m],r){let a=["zunionstore",n,t];Array.isArray(o)?a.push(...o):a.push(o),m&&("weights"in m&&m.weights?a.push("weights",...m.weights):"weight"in m&&typeof m.weight=="number"&&a.push("weights",m.weight),"aggregate"in m&&a.push("aggregate",m.aggregate)),super(a,r)}};var Vt=class extends e{constructor(n,t){super(["zdiffstore",...n],t)}};var Qt=class extends e{constructor(n,t){let[o,m]=n;super(["zmscore",o,...m],t)}};var ne=class{client;commands;commandOptions;multiExec;constructor(n){this.client=n.client,this.commands=[],this.commandOptions=n.commandOptions,this.multiExec=n.multiExec??!1}exec=async()=>{if(this.commands.length===0)throw new Error("Pipeline is empty");let n=this.multiExec?["multi-exec"]:["pipeline"];return(await this.client.request({path:n,body:Object.values(this.commands).map(o=>o.command)})).map(({error:o,result:m},r)=>{if(o)throw new c(`Command ${r+1} [ ${this.commands[r].command[0]} ] failed: ${o}`);return this.commands[r].deserialize(m)})};length(){return this.commands.length}chain(n){return this.commands.push(n),this}append=(...n)=>this.chain(new l(n,this.commandOptions));bitcount=(...n)=>this.chain(new C(n,this.commandOptions));bitop=(n,t,o,...m)=>this.chain(new g([n,t,o,...m],this.commandOptions));bitpos=(...n)=>this.chain(new x(n,this.commandOptions));zdiffstore=(...n)=>this.chain(new Vt(n,this.commandOptions));dbsize=()=>this.chain(new f(this.commandOptions));decr=(...n)=>this.chain(new y(n,this.commandOptions));decrby=(...n)=>this.chain(new b(n,this.commandOptions));del=(...n)=>this.chain(new T(n,this.commandOptions));echo=(...n)=>this.chain(new O(n,this.commandOptions));eval=(...n)=>this.chain(new w(n,this.commandOptions));evalsha=(...n)=>this.chain(new D(n,this.commandOptions));exists=(...n)=>this.chain(new A(n,this.commandOptions));expire=(...n)=>this.chain(new k(n,this.commandOptions));expireat=(...n)=>this.chain(new S(n,this.commandOptions));flushall=n=>this.chain(new R(n,this.commandOptions));flushdb=(...n)=>this.chain(new M(n,this.commandOptions));get=(...n)=>this.chain(new J(n,this.commandOptions));getbit=(...n)=>this.chain(new K(n,this.commandOptions));getdel=(...n)=>this.chain(new N(n,this.commandOptions));getrange=(...n)=>this.chain(new Z(n,this.commandOptions));getset=(n,t)=>this.chain(new U([n,t],this.commandOptions));hdel=(...n)=>this.chain(new G(n,this.commandOptions));hexists=(...n)=>this.chain(new H(n,this.commandOptions));hget=(...n)=>this.chain(new B(n,this.commandOptions));hgetall=(...n)=>this.chain(new F(n,this.commandOptions));hincrby=(...n)=>this.chain(new q(n,this.commandOptions));hincrbyfloat=(...n)=>this.chain(new _(n,this.commandOptions));hkeys=(...n)=>this.chain(new $(n,this.commandOptions));hlen=(...n)=>this.chain(new X(n,this.commandOptions));hmget=(...n)=>this.chain(new j(n,this.commandOptions));hmset=(n,t)=>this.chain(new Y([n,t],this.commandOptions));hrandfield=(n,t,o)=>this.chain(new W([n,t,o],this.commandOptions));hscan=(...n)=>this.chain(new V(n,this.commandOptions));hset=(n,t)=>this.chain(new Q([n,t],this.commandOptions));hsetnx=(n,t,o)=>this.chain(new nn([n,t,o],this.commandOptions));hstrlen=(...n)=>this.chain(new tn(n,this.commandOptions));hvals=(...n)=>this.chain(new en(n,this.commandOptions));incr=(...n)=>this.chain(new on(n,this.commandOptions));incrby=(...n)=>this.chain(new sn(n,this.commandOptions));incrbyfloat=(...n)=>this.chain(new mn(n,this.commandOptions));keys=(...n)=>this.chain(new Rn(n,this.commandOptions));lindex=(...n)=>this.chain(new Mn(n,this.commandOptions));linsert=(n,t,o,m)=>this.chain(new En([n,t,o,m],this.commandOptions));llen=(...n)=>this.chain(new vn(n,this.commandOptions));lmove=(...n)=>this.chain(new zn(n,this.commandOptions));lpop=(...n)=>this.chain(new Ln(n,this.commandOptions));lpos=(...n)=>this.chain(new In(n,this.commandOptions));lpush=(n,...t)=>this.chain(new Pn([n,...t],this.commandOptions));lpushx=(n,...t)=>this.chain(new Jn([n,...t],this.commandOptions));lrange=(...n)=>this.chain(new Kn(n,this.commandOptions));lrem=(n,t,o)=>this.chain(new Nn([n,t,o],this.commandOptions));lset=(n,t,o)=>this.chain(new Zn([n,t,o],this.commandOptions));ltrim=(...n)=>this.chain(new Un(n,this.commandOptions));mget=(...n)=>this.chain(new Gn(n,this.commandOptions));mset=n=>this.chain(new Hn([n],this.commandOptions));msetnx=n=>this.chain(new Bn([n],this.commandOptions));persist=(...n)=>this.chain(new Fn(n,this.commandOptions));pexpire=(...n)=>this.chain(new qn(n,this.commandOptions));pexpireat=(...n)=>this.chain(new _n(n,this.commandOptions));ping=n=>this.chain(new $n(n,this.commandOptions));psetex=(n,t,o)=>this.chain(new Xn([n,t,o],this.commandOptions));pttl=(...n)=>this.chain(new jn(n,this.commandOptions));publish=(...n)=>this.chain(new Yn(n,this.commandOptions));randomkey=()=>this.chain(new Wn(this.commandOptions));rename=(...n)=>this.chain(new Vn(n,this.commandOptions));renamenx=(...n)=>this.chain(new Qn(n,this.commandOptions));rpop=(...n)=>this.chain(new nt(n,this.commandOptions));rpush=(n,...t)=>this.chain(new tt([n,...t],this.commandOptions));rpushx=(n,...t)=>this.chain(new et([n,...t],this.commandOptions));sadd=(n,...t)=>this.chain(new ot([n,...t],this.commandOptions));scan=(...n)=>this.chain(new st(n,this.commandOptions));scard=(...n)=>this.chain(new mt(n,this.commandOptions));scriptExists=(...n)=>this.chain(new rt(n,this.commandOptions));scriptFlush=(...n)=>this.chain(new at(n,this.commandOptions));scriptLoad=(...n)=>this.chain(new it(n,this.commandOptions));sdiff=(...n)=>this.chain(new pt(n,this.commandOptions));sdiffstore=(...n)=>this.chain(new dt(n,this.commandOptions));set=(n,t,o)=>this.chain(new ct([n,t,o],this.commandOptions));setbit=(...n)=>this.chain(new ut(n,this.commandOptions));setex=(n,t,o)=>this.chain(new ht([n,t,o],this.commandOptions));setnx=(n,t)=>this.chain(new lt([n,t],this.commandOptions));setrange=(...n)=>this.chain(new Ct(n,this.commandOptions));sinter=(...n)=>this.chain(new gt(n,this.commandOptions));sinterstore=(...n)=>this.chain(new xt(n,this.commandOptions));sismember=(n,t)=>this.chain(new ft([n,t],this.commandOptions));smembers=(...n)=>this.chain(new yt(n,this.commandOptions));smismember=(n,t)=>this.chain(new bt([n,t],this.commandOptions));smove=(n,t,o)=>this.chain(new Tt([n,t,o],this.commandOptions));spop=(...n)=>this.chain(new Ot(n,this.commandOptions));srandmember=(...n)=>this.chain(new wt(n,this.commandOptions));srem=(n,...t)=>this.chain(new Dt([n,...t],this.commandOptions));sscan=(...n)=>this.chain(new At(n,this.commandOptions));strlen=(...n)=>this.chain(new kt(n,this.commandOptions));sunion=(...n)=>this.chain(new St(n,this.commandOptions));sunionstore=(...n)=>this.chain(new Rt(n,this.commandOptions));time=()=>this.chain(new Mt(this.commandOptions));touch=(...n)=>this.chain(new Et(n,this.commandOptions));ttl=(...n)=>this.chain(new vt(n,this.commandOptions));type=(...n)=>this.chain(new zt(n,this.commandOptions));unlink=(...n)=>this.chain(new Lt(n,this.commandOptions));zadd=(...n)=>"score"in n[1]?this.chain(new u([n[0],n[1],...n.slice(2)],this.commandOptions)):this.chain(new u([n[0],n[1],...n.slice(2)],this.commandOptions));zcard=(...n)=>this.chain(new It(n,this.commandOptions));zcount=(...n)=>this.chain(new Pt(n,this.commandOptions));zincrby=(n,t,o)=>this.chain(new Jt([n,t,o],this.commandOptions));zinterstore=(...n)=>this.chain(new Kt(n,this.commandOptions));zlexcount=(...n)=>this.chain(new Nt(n,this.commandOptions));zmscore=(...n)=>this.chain(new Qt(n,this.commandOptions));zpopmax=(...n)=>this.chain(new Zt(n,this.commandOptions));zpopmin=(...n)=>this.chain(new Ut(n,this.commandOptions));zrange=(...n)=>this.chain(new Gt(n,this.commandOptions));zrank=(n,t)=>this.chain(new Ht([n,t],this.commandOptions));zrem=(n,...t)=>this.chain(new Bt([n,...t],this.commandOptions));zremrangebylex=(...n)=>this.chain(new Ft(n,this.commandOptions));zremrangebyrank=(...n)=>this.chain(new qt(n,this.commandOptions));zremrangebyscore=(...n)=>this.chain(new _t(n,this.commandOptions));zrevrank=(n,t)=>this.chain(new $t([n,t],this.commandOptions));zscan=(...n)=>this.chain(new Xt(n,this.commandOptions));zscore=(n,t)=>this.chain(new jt([n,t],this.commandOptions));zunionstore=(...n)=>this.chain(new Wt(n,this.commandOptions));zunion=(...n)=>this.chain(new Yt(n,this.commandOptions));get json(){return{arrappend:(...n)=>this.chain(new rn(n,this.commandOptions)),arrindex:(...n)=>this.chain(new an(n,this.commandOptions)),arrinsert:(...n)=>this.chain(new pn(n,this.commandOptions)),arrlen:(...n)=>this.chain(new dn(n,this.commandOptions)),arrpop:(...n)=>this.chain(new cn(n,this.commandOptions)),arrtrim:(...n)=>this.chain(new un(n,this.commandOptions)),clear:(...n)=>this.chain(new hn(n,this.commandOptions)),del:(...n)=>this.chain(new ln(n,this.commandOptions)),forget:(...n)=>this.chain(new Cn(n,this.commandOptions)),geoadd:(...n)=>new E(n,this.commandOptions).exec(this.client),geodist:(...n)=>new v(n,this.commandOptions).exec(this.client),geopos:(...n)=>new z(n,this.commandOptions).exec(this.client),geohash:(...n)=>new L(n,this.commandOptions).exec(this.client),geosearch:(...n)=>new I(n,this.commandOptions).exec(this.client),geosearchstore:(...n)=>new P(n,this.commandOptions).exec(this.client),get:(...n)=>this.chain(new gn(n,this.commandOptions)),mget:(...n)=>this.chain(new xn(n,this.commandOptions)),numincrby:(...n)=>this.chain(new fn(n,this.commandOptions)),nummultby:(...n)=>this.chain(new yn(n,this.commandOptions)),objkeys:(...n)=>this.chain(new bn(n,this.commandOptions)),objlen:(...n)=>this.chain(new Tn(n,this.commandOptions)),resp:(...n)=>this.chain(new On(n,this.commandOptions)),set:(...n)=>this.chain(new wn(n,this.commandOptions)),strappend:(...n)=>this.chain(new Dn(n,this.commandOptions)),strlen:(...n)=>this.chain(new An(n,this.commandOptions)),toggle:(...n)=>this.chain(new kn(n,this.commandOptions)),type:(...n)=>this.chain(new Sn(n,this.commandOptions))}}};var ge=ue(require("crypto-js/enc-hex")),xe=ue(require("crypto-js/sha1")),re=class{script;sha1;redis;constructor(n,t){this.redis=n,this.sha1=this.digest(t),this.script=t}async eval(n,t){return await this.redis.eval(this.script,n,t)}async evalsha(n,t){return await this.redis.evalsha(this.sha1,n,t)}async exec(n,t){return await this.redis.evalsha(this.sha1,n,t).catch(async m=>{if(m instanceof Error&&m.message.toLowerCase().includes("noscript"))return await this.redis.eval(this.script,n,t);throw m})}digest(n){return ge.default.stringify((0,xe.default)(n))}};var ae=class{client;opts;enableTelemetry;constructor(n,t){this.client=n,this.opts=t,this.enableTelemetry=t?.enableTelemetry??!0}get json(){return{arrappend:(...n)=>new rn(n,this.opts).exec(this.client),arrindex:(...n)=>new an(n,this.opts).exec(this.client),arrinsert:(...n)=>new pn(n,this.opts).exec(this.client),arrlen:(...n)=>new dn(n,this.opts).exec(this.client),arrpop:(...n)=>new cn(n,this.opts).exec(this.client),arrtrim:(...n)=>new un(n,this.opts).exec(this.client),clear:(...n)=>new hn(n,this.opts).exec(this.client),del:(...n)=>new ln(n,this.opts).exec(this.client),forget:(...n)=>new Cn(n,this.opts).exec(this.client),geoadd:(...n)=>new E(n,this.opts).exec(this.client),geopos:(...n)=>new z(n,this.opts).exec(this.client),geodist:(...n)=>new v(n,this.opts).exec(this.client),geohash:(...n)=>new L(n,this.opts).exec(this.client),geosearch:(...n)=>new I(n,this.opts).exec(this.client),geosearchstore:(...n)=>new P(n,this.opts).exec(this.client),get:(...n)=>new gn(n,this.opts).exec(this.client),mget:(...n)=>new xn(n,this.opts).exec(this.client),numincrby:(...n)=>new fn(n,this.opts).exec(this.client),nummultby:(...n)=>new yn(n,this.opts).exec(this.client),objkeys:(...n)=>new bn(n,this.opts).exec(this.client),objlen:(...n)=>new Tn(n,this.opts).exec(this.client),resp:(...n)=>new On(n,this.opts).exec(this.client),set:(...n)=>new wn(n,this.opts).exec(this.client),strappend:(...n)=>new Dn(n,this.opts).exec(this.client),strlen:(...n)=>new An(n,this.opts).exec(this.client),toggle:(...n)=>new kn(n,this.opts).exec(this.client),type:(...n)=>new Sn(n,this.opts).exec(this.client)}}use=n=>{let t=this.client.request.bind(this.client);this.client.request=o=>n(o,t)};addTelemetry=n=>{if(this.enableTelemetry)try{this.client.mergeTelemetry(n)}catch{}};createScript(n){return new re(this,n)}pipeline=()=>new ne({client:this.client,commandOptions:this.opts,multiExec:!1});multi=()=>new ne({client:this.client,commandOptions:this.opts,multiExec:!0});append=(...n)=>new l(n,this.opts).exec(this.client);bitcount=(...n)=>new C(n,this.opts).exec(this.client);bitop=(n,t,o,...m)=>new g([n,t,o,...m],this.opts).exec(this.client);bitpos=(...n)=>new x(n,this.opts).exec(this.client);dbsize=()=>new f(this.opts).exec(this.client);decr=(...n)=>new y(n,this.opts).exec(this.client);decrby=(...n)=>new b(n,this.opts).exec(this.client);del=(...n)=>new T(n,this.opts).exec(this.client);echo=(...n)=>new O(n,this.opts).exec(this.client);eval=(...n)=>new w(n,this.opts).exec(this.client);evalsha=(...n)=>new D(n,this.opts).exec(this.client);exists=(...n)=>new A(n,this.opts).exec(this.client);expire=(...n)=>new k(n,this.opts).exec(this.client);expireat=(...n)=>new S(n,this.opts).exec(this.client);flushall=n=>new R(n,this.opts).exec(this.client);flushdb=(...n)=>new M(n,this.opts).exec(this.client);get=(...n)=>new J(n,this.opts).exec(this.client);getbit=(...n)=>new K(n,this.opts).exec(this.client);getdel=(...n)=>new N(n,this.opts).exec(this.client);getrange=(...n)=>new Z(n,this.opts).exec(this.client);getset=(n,t)=>new U([n,t],this.opts).exec(this.client);hdel=(...n)=>new G(n,this.opts).exec(this.client);hexists=(...n)=>new H(n,this.opts).exec(this.client);hget=(...n)=>new B(n,this.opts).exec(this.client);hgetall=(...n)=>new F(n,this.opts).exec(this.client);hincrby=(...n)=>new q(n,this.opts).exec(this.client);hincrbyfloat=(...n)=>new _(n,this.opts).exec(this.client);hkeys=(...n)=>new $(n,this.opts).exec(this.client);hlen=(...n)=>new X(n,this.opts).exec(this.client);hmget=(...n)=>new j(n,this.opts).exec(this.client);hmset=(n,t)=>new Y([n,t],this.opts).exec(this.client);hrandfield=(n,t,o)=>new W([n,t,o],this.opts).exec(this.client);hscan=(...n)=>new V(n,this.opts).exec(this.client);hset=(n,t)=>new Q([n,t],this.opts).exec(this.client);hsetnx=(n,t,o)=>new nn([n,t,o],this.opts).exec(this.client);hstrlen=(...n)=>new tn(n,this.opts).exec(this.client);hvals=(...n)=>new en(n,this.opts).exec(this.client);incr=(...n)=>new on(n,this.opts).exec(this.client);incrby=(...n)=>new sn(n,this.opts).exec(this.client);incrbyfloat=(...n)=>new mn(n,this.opts).exec(this.client);keys=(...n)=>new Rn(n,this.opts).exec(this.client);lindex=(...n)=>new Mn(n,this.opts).exec(this.client);linsert=(n,t,o,m)=>new En([n,t,o,m],this.opts).exec(this.client);llen=(...n)=>new vn(n,this.opts).exec(this.client);lmove=(...n)=>new zn(n,this.opts).exec(this.client);lpop=(...n)=>new Ln(n,this.opts).exec(this.client);lpos=(...n)=>new In(n,this.opts).exec(this.client);lpush=(n,...t)=>new Pn([n,...t],this.opts).exec(this.client);lpushx=(n,...t)=>new Jn([n,...t],this.opts).exec(this.client);lrange=(...n)=>new Kn(n,this.opts).exec(this.client);lrem=(n,t,o)=>new Nn([n,t,o],this.opts).exec(this.client);lset=(n,t,o)=>new Zn([n,t,o],this.opts).exec(this.client);ltrim=(...n)=>new Un(n,this.opts).exec(this.client);mget=(...n)=>new Gn(n,this.opts).exec(this.client);mset=n=>new Hn([n],this.opts).exec(this.client);msetnx=n=>new Bn([n],this.opts).exec(this.client);persist=(...n)=>new Fn(n,this.opts).exec(this.client);pexpire=(...n)=>new qn(n,this.opts).exec(this.client);pexpireat=(...n)=>new _n(n,this.opts).exec(this.client);ping=n=>new $n(n,this.opts).exec(this.client);psetex=(n,t,o)=>new Xn([n,t,o],this.opts).exec(this.client);pttl=(...n)=>new jn(n,this.opts).exec(this.client);publish=(...n)=>new Yn(n,this.opts).exec(this.client);randomkey=()=>new Wn().exec(this.client);rename=(...n)=>new Vn(n,this.opts).exec(this.client);renamenx=(...n)=>new Qn(n,this.opts).exec(this.client);rpop=(...n)=>new nt(n,this.opts).exec(this.client);rpush=(n,...t)=>new tt([n,...t],this.opts).exec(this.client);rpushx=(n,...t)=>new et([n,...t],this.opts).exec(this.client);sadd=(n,...t)=>new ot([n,...t],this.opts).exec(this.client);scan=(...n)=>new st(n,this.opts).exec(this.client);scard=(...n)=>new mt(n,this.opts).exec(this.client);scriptExists=(...n)=>new rt(n,this.opts).exec(this.client);scriptFlush=(...n)=>new at(n,this.opts).exec(this.client);scriptLoad=(...n)=>new it(n,this.opts).exec(this.client);sdiff=(...n)=>new pt(n,this.opts).exec(this.client);sdiffstore=(...n)=>new dt(n,this.opts).exec(this.client);set=(n,t,o)=>new ct([n,t,o],this.opts).exec(this.client);setbit=(...n)=>new ut(n,this.opts).exec(this.client);setex=(n,t,o)=>new ht([n,t,o],this.opts).exec(this.client);setnx=(n,t)=>new lt([n,t],this.opts).exec(this.client);setrange=(...n)=>new Ct(n,this.opts).exec(this.client);sinter=(...n)=>new gt(n,this.opts).exec(this.client);sinterstore=(...n)=>new xt(n,this.opts).exec(this.client);sismember=(n,t)=>new ft([n,t],this.opts).exec(this.client);smismember=(n,t)=>new bt([n,t],this.opts).exec(this.client);smembers=(...n)=>new yt(n,this.opts).exec(this.client);smove=(n,t,o)=>new Tt([n,t,o],this.opts).exec(this.client);spop=(...n)=>new Ot(n,this.opts).exec(this.client);srandmember=(...n)=>new wt(n,this.opts).exec(this.client);srem=(n,...t)=>new Dt([n,...t],this.opts).exec(this.client);sscan=(...n)=>new At(n,this.opts).exec(this.client);strlen=(...n)=>new kt(n,this.opts).exec(this.client);sunion=(...n)=>new St(n,this.opts).exec(this.client);sunionstore=(...n)=>new Rt(n,this.opts).exec(this.client);time=()=>new Mt().exec(this.client);touch=(...n)=>new Et(n,this.opts).exec(this.client);ttl=(...n)=>new vt(n,this.opts).exec(this.client);type=(...n)=>new zt(n,this.opts).exec(this.client);unlink=(...n)=>new Lt(n,this.opts).exec(this.client);xadd=(...n)=>new se(n,this.opts).exec(this.client);xrange=(...n)=>new me(n,this.opts).exec(this.client);zadd=(...n)=>"score"in n[1]?new u([n[0],n[1],...n.slice(2)],this.opts).exec(this.client):new u([n[0],n[1],...n.slice(2)],this.opts).exec(this.client);zcard=(...n)=>new It(n,this.opts).exec(this.client);zcount=(...n)=>new Pt(n,this.opts).exec(this.client);zdiffstore=(...n)=>new Vt(n,this.opts).exec(this.client);zincrby=(n,t,o)=>new Jt([n,t,o],this.opts).exec(this.client);zinterstore=(...n)=>new Kt(n,this.opts).exec(this.client);zlexcount=(...n)=>new Nt(n,this.opts).exec(this.client);zmscore=(...n)=>new Qt(n,this.opts).exec(this.client);zpopmax=(...n)=>new Zt(n,this.opts).exec(this.client);zpopmin=(...n)=>new Ut(n,this.opts).exec(this.client);zrange=(...n)=>new Gt(n,this.opts).exec(this.client);zrank=(n,t)=>new Ht([n,t],this.opts).exec(this.client);zrem=(n,...t)=>new Bt([n,...t],this.opts).exec(this.client);zremrangebylex=(...n)=>new Ft(n,this.opts).exec(this.client);zremrangebyrank=(...n)=>new qt(n,this.opts).exec(this.client);zremrangebyscore=(...n)=>new _t(n,this.opts).exec(this.client);zrevrank=(n,t)=>new $t([n,t],this.opts).exec(this.client);zscan=(...n)=>new Xt(n,this.opts).exec(this.client);zscore=(n,t)=>new jt([n,t],this.opts).exec(this.client);zunion=(...n)=>new Yt(n,this.opts).exec(this.client);zunionstore=(...n)=>new Wt(n,this.opts).exec(this.client)};var fe="v0.0.0-ci.f5cad9e7bda3d77569d9df207b4e1565f75d6154";var pe=class s extends ae{constructor(n,t){(n.url.startsWith(" ")||n.url.endsWith(" ")||/\r|\n/.test(n.url))&&console.warn("The redis url contains whitespace or newline, which can cause errors!"),(n.token.startsWith(" ")||n.token.endsWith(" ")||/\r|\n/.test(n.token))&&console.warn("The redis token contains whitespace or newline, which can cause errors!");let o=new oe({retry:n.retry,baseUrl:n.url,headers:{authorization:`Bearer ${n.token}`},responseEncoding:n.responseEncoding});super(o,{enableTelemetry:!t?.UPSTASH_DISABLE_TELEMETRY,automaticDeserialization:n.automaticDeserialization}),this.addTelemetry({platform:"cloudflare",sdk:`@upstash/redis@${fe}`})}static fromEnv(n,t){let o=n?.UPSTASH_REDIS_REST_URL??UPSTASH_REDIS_REST_URL,m=n?.UPSTASH_REDIS_REST_TOKEN??UPSTASH_REDIS_REST_TOKEN;if(!o)throw new Error("Unable to find environment variable: `UPSTASH_REDIS_REST_URL`. Please add it via `wrangler secret put UPSTASH_REDIS_REST_URL`");if(!m)throw new Error("Unable to find environment variable: `UPSTASH_REDIS_REST_TOKEN`. Please add it via `wrangler secret put UPSTASH_REDIS_REST_TOKEN`");return new s({...t,url:o,token:m},n)}};0&&(module.exports={Redis});