@upstash/redis 0.0.0-ci.77a7de08 → 0.0.0-ci.77dded50-20231019

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 (163) hide show
  1. package/README.md +20 -18
  2. package/esm/deps/deno.land/x/base64@v0.2.1/base.js +100 -0
  3. package/esm/deps/deno.land/x/base64@v0.2.1/base64url.js +9 -0
  4. package/esm/deps/deno.land/x/sha1@v1.0.3/deps.js +1 -0
  5. package/esm/deps/deno.land/x/sha1@v1.0.3/mod.js +191 -0
  6. package/esm/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.js +50 -0
  7. package/esm/pkg/commands/command.js +12 -3
  8. package/esm/pkg/commands/geo_add.js +27 -0
  9. package/esm/pkg/commands/geo_dist.js +11 -0
  10. package/esm/pkg/commands/getdel.js +9 -0
  11. package/esm/pkg/commands/hgetall.js +9 -5
  12. package/esm/pkg/commands/hrandfield.js +39 -0
  13. package/esm/pkg/commands/json_arrappend.js +9 -0
  14. package/esm/pkg/commands/json_arrindex.js +9 -0
  15. package/esm/pkg/commands/json_arrinsert.js +9 -0
  16. package/esm/pkg/commands/json_arrlen.js +9 -0
  17. package/esm/pkg/commands/json_arrpop.js +9 -0
  18. package/esm/pkg/commands/json_arrtrim.js +12 -0
  19. package/esm/pkg/commands/json_clear.js +9 -0
  20. package/esm/pkg/commands/json_del.js +9 -0
  21. package/esm/pkg/commands/json_forget.js +9 -0
  22. package/esm/pkg/commands/json_get.js +30 -0
  23. package/esm/pkg/commands/json_mget.js +9 -0
  24. package/esm/pkg/commands/json_numincrby.js +9 -0
  25. package/esm/pkg/commands/json_nummultby.js +9 -0
  26. package/esm/pkg/commands/json_objkeys.js +9 -0
  27. package/esm/pkg/commands/json_objlen.js +9 -0
  28. package/esm/pkg/commands/json_resp.js +9 -0
  29. package/esm/pkg/commands/json_set.js +18 -0
  30. package/esm/pkg/commands/json_strappend.js +9 -0
  31. package/esm/pkg/commands/json_strlen.js +9 -0
  32. package/esm/pkg/commands/json_toggle.js +9 -0
  33. package/esm/pkg/commands/json_type.js +9 -0
  34. package/esm/pkg/commands/lmove.js +9 -0
  35. package/esm/pkg/commands/mod.js +30 -0
  36. package/esm/pkg/commands/scan.js +3 -0
  37. package/esm/pkg/commands/set.js +16 -4
  38. package/esm/pkg/commands/smismember.js +9 -0
  39. package/esm/pkg/commands/xadd.js +26 -0
  40. package/esm/pkg/commands/xrange.js +36 -0
  41. package/esm/pkg/commands/zdiffstore.js +9 -0
  42. package/esm/pkg/commands/zmscore.js +10 -0
  43. package/esm/pkg/commands/zunion.js +30 -0
  44. package/esm/pkg/http.js +100 -3
  45. package/esm/pkg/pipeline.js +193 -12
  46. package/esm/pkg/redis.js +237 -2
  47. package/esm/pkg/script.js +77 -0
  48. package/esm/platforms/cloudflare.js +10 -2
  49. package/esm/platforms/fastly.js +6 -0
  50. package/esm/platforms/node_with_fetch.js +26 -1
  51. package/esm/platforms/nodejs.js +24 -1
  52. package/esm/version.js +1 -0
  53. package/package.json +53 -58
  54. package/script/deps/deno.land/x/base64@v0.2.1/base.js +104 -0
  55. package/script/deps/deno.land/x/base64@v0.2.1/base64url.js +13 -0
  56. package/script/deps/deno.land/x/sha1@v1.0.3/deps.js +6 -0
  57. package/script/deps/deno.land/x/sha1@v1.0.3/mod.js +196 -0
  58. package/script/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.js +55 -0
  59. package/script/pkg/commands/command.js +12 -3
  60. package/script/pkg/commands/geo_add.js +31 -0
  61. package/script/pkg/commands/geo_dist.js +15 -0
  62. package/script/pkg/commands/getdel.js +13 -0
  63. package/script/pkg/commands/hgetall.js +9 -5
  64. package/script/pkg/commands/hrandfield.js +43 -0
  65. package/script/pkg/commands/json_arrappend.js +13 -0
  66. package/script/pkg/commands/json_arrindex.js +13 -0
  67. package/script/pkg/commands/json_arrinsert.js +13 -0
  68. package/script/pkg/commands/json_arrlen.js +13 -0
  69. package/script/pkg/commands/json_arrpop.js +13 -0
  70. package/script/pkg/commands/json_arrtrim.js +16 -0
  71. package/script/pkg/commands/json_clear.js +13 -0
  72. package/script/pkg/commands/json_del.js +13 -0
  73. package/script/pkg/commands/json_forget.js +13 -0
  74. package/script/pkg/commands/json_get.js +34 -0
  75. package/script/pkg/commands/json_mget.js +13 -0
  76. package/script/pkg/commands/json_numincrby.js +13 -0
  77. package/script/pkg/commands/json_nummultby.js +13 -0
  78. package/script/pkg/commands/json_objkeys.js +13 -0
  79. package/script/pkg/commands/json_objlen.js +13 -0
  80. package/script/pkg/commands/json_resp.js +13 -0
  81. package/script/pkg/commands/json_set.js +22 -0
  82. package/script/pkg/commands/json_strappend.js +13 -0
  83. package/script/pkg/commands/json_strlen.js +13 -0
  84. package/script/pkg/commands/json_toggle.js +13 -0
  85. package/script/pkg/commands/json_type.js +13 -0
  86. package/script/pkg/commands/lmove.js +13 -0
  87. package/script/pkg/commands/mod.js +30 -0
  88. package/script/pkg/commands/scan.js +3 -0
  89. package/script/pkg/commands/set.js +16 -4
  90. package/script/pkg/commands/smismember.js +13 -0
  91. package/script/pkg/commands/xadd.js +30 -0
  92. package/script/pkg/commands/xrange.js +40 -0
  93. package/script/pkg/commands/zdiffstore.js +13 -0
  94. package/script/pkg/commands/zmscore.js +14 -0
  95. package/script/pkg/commands/zunion.js +34 -0
  96. package/script/pkg/http.js +100 -3
  97. package/script/pkg/pipeline.js +192 -11
  98. package/script/pkg/redis.js +236 -1
  99. package/script/pkg/script.js +81 -0
  100. package/script/platforms/cloudflare.js +10 -2
  101. package/script/platforms/fastly.js +6 -0
  102. package/script/platforms/node_with_fetch.js +26 -1
  103. package/script/platforms/nodejs.js +24 -1
  104. package/script/version.js +4 -0
  105. package/types/deps/deno.land/x/base64@v0.2.1/base.d.ts +5 -0
  106. package/types/deps/deno.land/x/base64@v0.2.1/base64url.d.ts +1 -0
  107. package/types/deps/deno.land/x/sha1@v1.0.3/deps.d.ts +1 -0
  108. package/types/deps/deno.land/x/sha1@v1.0.3/mod.d.ts +26 -0
  109. package/types/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.d.ts +3 -0
  110. package/types/pkg/commands/command.d.ts +5 -5
  111. package/types/pkg/commands/geo_add.d.ts +25 -0
  112. package/types/pkg/commands/geo_dist.d.ts +12 -0
  113. package/types/pkg/commands/getdel.d.ts +7 -0
  114. package/types/pkg/commands/hdel.d.ts +1 -1
  115. package/types/pkg/commands/hrandfield.d.ts +9 -0
  116. package/types/pkg/commands/json_arrappend.d.ts +7 -0
  117. package/types/pkg/commands/json_arrindex.d.ts +13 -0
  118. package/types/pkg/commands/json_arrinsert.d.ts +7 -0
  119. package/types/pkg/commands/json_arrlen.d.ts +7 -0
  120. package/types/pkg/commands/json_arrpop.d.ts +7 -0
  121. package/types/pkg/commands/json_arrtrim.d.ts +7 -0
  122. package/types/pkg/commands/json_clear.d.ts +7 -0
  123. package/types/pkg/commands/json_del.d.ts +7 -0
  124. package/types/pkg/commands/json_forget.d.ts +7 -0
  125. package/types/pkg/commands/json_get.d.ts +15 -0
  126. package/types/pkg/commands/json_mget.d.ts +7 -0
  127. package/types/pkg/commands/json_numincrby.d.ts +7 -0
  128. package/types/pkg/commands/json_nummultby.d.ts +7 -0
  129. package/types/pkg/commands/json_objkeys.d.ts +7 -0
  130. package/types/pkg/commands/json_objlen.d.ts +7 -0
  131. package/types/pkg/commands/json_resp.d.ts +7 -0
  132. package/types/pkg/commands/json_set.d.ts +18 -0
  133. package/types/pkg/commands/json_strappend.d.ts +7 -0
  134. package/types/pkg/commands/json_strlen.d.ts +7 -0
  135. package/types/pkg/commands/json_toggle.d.ts +7 -0
  136. package/types/pkg/commands/json_type.d.ts +7 -0
  137. package/types/pkg/commands/lmove.d.ts +12 -0
  138. package/types/pkg/commands/mod.d.ts +30 -0
  139. package/types/pkg/commands/scan.d.ts +2 -1
  140. package/types/pkg/commands/script_flush.d.ts +1 -1
  141. package/types/pkg/commands/set.d.ts +31 -2
  142. package/types/pkg/commands/smembers.d.ts +2 -2
  143. package/types/pkg/commands/smismember.d.ts +7 -0
  144. package/types/pkg/commands/type.d.ts +1 -1
  145. package/types/pkg/commands/xadd.d.ts +31 -0
  146. package/types/pkg/commands/xrange.d.ts +9 -0
  147. package/types/pkg/commands/zadd.d.ts +3 -3
  148. package/types/pkg/commands/zdiffstore.d.ts +7 -0
  149. package/types/pkg/commands/zinterstore.d.ts +1 -1
  150. package/types/pkg/commands/zmscore.d.ts +7 -0
  151. package/types/pkg/commands/zrange.d.ts +1 -1
  152. package/types/pkg/commands/zunion.d.ts +29 -0
  153. package/types/pkg/commands/zunionstore.d.ts +1 -1
  154. package/types/pkg/http.d.ts +48 -7
  155. package/types/pkg/pipeline.d.ts +271 -125
  156. package/types/pkg/redis.d.ts +181 -13
  157. package/types/pkg/script.d.ts +42 -0
  158. package/types/pkg/types.d.ts +27 -1
  159. package/types/platforms/cloudflare.d.ts +9 -8
  160. package/types/platforms/fastly.d.ts +3 -7
  161. package/types/platforms/node_with_fetch.d.ts +3 -22
  162. package/types/platforms/nodejs.d.ts +4 -7
  163. package/types/version.d.ts +1 -0
@@ -1,5 +1,8 @@
1
- import { AppendCommand, BitCountCommand, BitOpCommand, BitPosCommand, DBSizeCommand, DecrByCommand, DecrCommand, DelCommand, EchoCommand, EvalCommand, EvalshaCommand, ExistsCommand, ExpireAtCommand, ExpireCommand, FlushAllCommand, FlushDBCommand, GetBitCommand, GetCommand, GetRangeCommand, GetSetCommand, HDelCommand, HExistsCommand, HGetAllCommand, HGetCommand, HIncrByCommand, HIncrByFloatCommand, HKeysCommand, HLenCommand, HMGetCommand, HMSetCommand, HScanCommand, HSetCommand, HSetNXCommand, HStrLenCommand, HValsCommand, IncrByCommand, IncrByFloatCommand, IncrCommand, KeysCommand, LIndexCommand, LInsertCommand, LLenCommand, LPopCommand, LPosCommand, LPushCommand, LPushXCommand, LRangeCommand, LRemCommand, LSetCommand, LTrimCommand, MGetCommand, MSetCommand, MSetNXCommand, PersistCommand, PExpireAtCommand, PExpireCommand, PingCommand, PSetEXCommand, PTtlCommand, PublishCommand, RandomKeyCommand, RenameCommand, RenameNXCommand, RPopCommand, RPushCommand, RPushXCommand, SAddCommand, ScanCommand, SCardCommand, ScriptExistsCommand, ScriptFlushCommand, ScriptLoadCommand, SDiffCommand, SDiffStoreCommand, SetBitCommand, SetCommand, SetExCommand, SetNxCommand, SetRangeCommand, SInterCommand, SInterStoreCommand, SIsMemberCommand, SMembersCommand, SMoveCommand, SPopCommand, SRandMemberCommand, SRemCommand, SScanCommand, StrLenCommand, SUnionCommand, SUnionStoreCommand, TimeCommand, TouchCommand, TtlCommand, TypeCommand, UnlinkCommand, ZAddCommand, ZCardCommand, ZCountCommand, ZIncrByCommand, ZInterStoreCommand, ZLexCountCommand, ZPopMaxCommand, ZPopMinCommand, ZRangeCommand, ZRankCommand, ZRemCommand, ZRemRangeByLexCommand, ZRemRangeByRankCommand, ZRemRangeByScoreCommand, ZRevRankCommand, ZScanCommand, ZScoreCommand, ZUnionStoreCommand, } from "./commands/mod.js";
1
+ import { AppendCommand, BitCountCommand, BitOpCommand, BitPosCommand, DBSizeCommand, DecrByCommand, DecrCommand, DelCommand, EchoCommand, EvalCommand, EvalshaCommand, ExistsCommand, ExpireAtCommand, ExpireCommand, FlushAllCommand, FlushDBCommand, GeoAddCommand, GeoDistCommand, GetBitCommand, GetCommand, GetDelCommand, GetRangeCommand, GetSetCommand, HDelCommand, HExistsCommand, HGetAllCommand, HGetCommand, HIncrByCommand, HIncrByFloatCommand, HKeysCommand, HLenCommand, HMGetCommand, HMSetCommand, HScanCommand, HSetCommand, HSetNXCommand, HStrLenCommand, HValsCommand, IncrByCommand, IncrByFloatCommand, IncrCommand, JsonArrAppendCommand, JsonArrIndexCommand, JsonArrInsertCommand, JsonArrLenCommand, JsonArrPopCommand, JsonArrTrimCommand, JsonClearCommand, JsonDelCommand, JsonForgetCommand, JsonGetCommand, JsonMGetCommand, JsonNumIncrByCommand, JsonNumMultByCommand, JsonObjKeysCommand, JsonObjLenCommand, JsonRespCommand, JsonSetCommand, JsonStrAppendCommand, JsonStrLenCommand, JsonToggleCommand, JsonTypeCommand, KeysCommand, LIndexCommand, LInsertCommand, LLenCommand, LMoveCommand, LPopCommand, LPosCommand, LPushCommand, LPushXCommand, LRangeCommand, LRemCommand, LSetCommand, LTrimCommand, MGetCommand, MSetCommand, MSetNXCommand, PersistCommand, PExpireAtCommand, PExpireCommand, PingCommand, PSetEXCommand, PTtlCommand, PublishCommand, RandomKeyCommand, RenameCommand, RenameNXCommand, RPopCommand, RPushCommand, RPushXCommand, SAddCommand, ScanCommand, SCardCommand, ScriptExistsCommand, ScriptFlushCommand, ScriptLoadCommand, SDiffCommand, SDiffStoreCommand, SetBitCommand, SetCommand, SetExCommand, SetNxCommand, SetRangeCommand, SInterCommand, SInterStoreCommand, SIsMemberCommand, SMembersCommand, SMIsMemberCommand, SMoveCommand, SPopCommand, SRandMemberCommand, SRemCommand, SScanCommand, StrLenCommand, SUnionCommand, SUnionStoreCommand, TimeCommand, TouchCommand, TtlCommand, TypeCommand, UnlinkCommand, ZAddCommand, ZCardCommand, ZCountCommand, ZIncrByCommand, ZInterStoreCommand, ZLexCountCommand, ZPopMaxCommand, ZPopMinCommand, ZRangeCommand, ZRankCommand, ZRemCommand, ZRemRangeByLexCommand, ZRemRangeByRankCommand, ZRemRangeByScoreCommand, ZRevRankCommand, ZScanCommand, ZScoreCommand, ZUnionCommand, ZUnionStoreCommand, } from "./commands/mod.js";
2
2
  import { UpstashError } from "./error.js";
3
+ import { ZMScoreCommand } from "./commands/zmscore.js";
4
+ import { HRandFieldCommand } from "./commands/hrandfield.js";
5
+ import { ZDiffStoreCommand } from "./commands/zdiffstore.js";
3
6
  /**
4
7
  * Upstash REST API supports command pipelining to send multiple commands in
5
8
  * batch, instead of sending each command one by one and waiting for a response.
@@ -16,7 +19,7 @@ import { UpstashError } from "./error.js";
16
19
  * **Examples:**
17
20
  *
18
21
  * ```ts
19
- * const p = redis.pipeline()
22
+ * const p = redis.pipeline() // or redis.multi()
20
23
  * p.set("key","value")
21
24
  * p.get("key")
22
25
  * const res = await p.exec()
@@ -28,7 +31,7 @@ import { UpstashError } from "./error.js";
28
31
  * const res = await p.set("key","value").get("key").exec()
29
32
  * ```
30
33
  *
31
- * It's not possible to infer correct types with a dynamic pipeline, so you can
34
+ * Return types are inferred if all commands are chained, but you can still
32
35
  * override the response type manually:
33
36
  * ```ts
34
37
  * redis.pipeline()
@@ -39,7 +42,7 @@ import { UpstashError } from "./error.js";
39
42
  * ```
40
43
  */
41
44
  export class Pipeline {
42
- constructor(client, commandOptions) {
45
+ constructor(opts) {
43
46
  Object.defineProperty(this, "client", {
44
47
  enumerable: true,
45
48
  configurable: true,
@@ -58,14 +61,22 @@ export class Pipeline {
58
61
  writable: true,
59
62
  value: void 0
60
63
  });
64
+ Object.defineProperty(this, "multiExec", {
65
+ enumerable: true,
66
+ configurable: true,
67
+ writable: true,
68
+ value: void 0
69
+ });
61
70
  /**
62
71
  * Send the pipeline request to upstash.
63
72
  *
64
73
  * Returns an array with the results of all pipelined commands.
65
74
  *
66
- * You can define a return type manually to make working in typescript easier
75
+ * If all commands are statically chained from start to finish, types are inferred. You can still define a return type manually if necessary though:
67
76
  * ```ts
68
- * redis.pipeline().get("key").exec<[{ greeting: string }]>()
77
+ * const p = redis.pipeline()
78
+ * p.get("key")
79
+ * const result = p.exec<[{ greeting: string }]>()
69
80
  * ```
70
81
  */
71
82
  Object.defineProperty(this, "exec", {
@@ -76,8 +87,9 @@ export class Pipeline {
76
87
  if (this.commands.length === 0) {
77
88
  throw new Error("Pipeline is empty");
78
89
  }
90
+ const path = this.multiExec ? ["multi-exec"] : ["pipeline"];
79
91
  const res = (await this.client.request({
80
- path: ["pipeline"],
92
+ path,
81
93
  body: Object.values(this.commands).map((c) => c.command),
82
94
  }));
83
95
  return res.map(({ error, result }, i) => {
@@ -124,6 +136,15 @@ export class Pipeline {
124
136
  writable: true,
125
137
  value: (...args) => this.chain(new BitPosCommand(args, this.commandOptions))
126
138
  });
139
+ /**
140
+ * @see https://redis.io/commands/zdiffstore
141
+ */
142
+ Object.defineProperty(this, "zdiffstore", {
143
+ enumerable: true,
144
+ configurable: true,
145
+ writable: true,
146
+ value: (...args) => this.chain(new ZDiffStoreCommand(args, this.commandOptions))
147
+ });
127
148
  /**
128
149
  * @see https://redis.io/commands/dbsize
129
150
  */
@@ -250,6 +271,15 @@ export class Pipeline {
250
271
  writable: true,
251
272
  value: (...args) => this.chain(new GetBitCommand(args, this.commandOptions))
252
273
  });
274
+ /**
275
+ * @see https://redis.io/commands/getdel
276
+ */
277
+ Object.defineProperty(this, "getdel", {
278
+ enumerable: true,
279
+ configurable: true,
280
+ writable: true,
281
+ value: (...args) => this.chain(new GetDelCommand(args, this.commandOptions))
282
+ });
253
283
  /**
254
284
  * @see https://redis.io/commands/getrange
255
285
  */
@@ -358,6 +388,15 @@ export class Pipeline {
358
388
  writable: true,
359
389
  value: (key, kv) => this.chain(new HMSetCommand([key, kv], this.commandOptions))
360
390
  });
391
+ /**
392
+ * @see https://redis.io/commands/hrandfield
393
+ */
394
+ Object.defineProperty(this, "hrandfield", {
395
+ enumerable: true,
396
+ configurable: true,
397
+ writable: true,
398
+ value: (key, count, withValues) => this.chain(new HRandFieldCommand([key, count, withValues], this.commandOptions))
399
+ });
361
400
  /**
362
401
  * @see https://redis.io/commands/hscan
363
402
  */
@@ -466,6 +505,15 @@ export class Pipeline {
466
505
  writable: true,
467
506
  value: (...args) => this.chain(new LLenCommand(args, this.commandOptions))
468
507
  });
508
+ /**
509
+ * @see https://redis.io/commands/lmove
510
+ */
511
+ Object.defineProperty(this, "lmove", {
512
+ enumerable: true,
513
+ configurable: true,
514
+ writable: true,
515
+ value: (...args) => this.chain(new LMoveCommand(args, this.commandOptions))
516
+ });
469
517
  /**
470
518
  * @see https://redis.io/commands/lpop
471
519
  */
@@ -835,6 +883,15 @@ export class Pipeline {
835
883
  writable: true,
836
884
  value: (...args) => this.chain(new SMembersCommand(args, this.commandOptions))
837
885
  });
886
+ /**
887
+ * @see https://redis.io/commands/smismember
888
+ */
889
+ Object.defineProperty(this, "smismember", {
890
+ enumerable: true,
891
+ configurable: true,
892
+ writable: true,
893
+ value: (key, members) => this.chain(new SMIsMemberCommand([key, members], this.commandOptions))
894
+ });
838
895
  /**
839
896
  * @see https://redis.io/commands/smove
840
897
  */
@@ -1011,6 +1068,15 @@ export class Pipeline {
1011
1068
  writable: true,
1012
1069
  value: (...args) => this.chain(new ZLexCountCommand(args, this.commandOptions))
1013
1070
  });
1071
+ /**
1072
+ * @see https://redis.io/commands/zmscore
1073
+ */
1074
+ Object.defineProperty(this, "zmscore", {
1075
+ enumerable: true,
1076
+ configurable: true,
1077
+ writable: true,
1078
+ value: (...args) => this.chain(new ZMScoreCommand(args, this.commandOptions))
1079
+ });
1014
1080
  /**
1015
1081
  * @see https://redis.io/commands/zpopmax
1016
1082
  */
@@ -1119,16 +1185,131 @@ export class Pipeline {
1119
1185
  writable: true,
1120
1186
  value: (...args) => this.chain(new ZUnionStoreCommand(args, this.commandOptions))
1121
1187
  });
1122
- this.client = client;
1123
- this.commands = [];
1124
- this.commandOptions = commandOptions;
1188
+ /**
1189
+ * @see https://redis.io/commands/zunion
1190
+ */
1191
+ Object.defineProperty(this, "zunion", {
1192
+ enumerable: true,
1193
+ configurable: true,
1194
+ writable: true,
1195
+ value: (...args) => this.chain(new ZUnionCommand(args, this.commandOptions))
1196
+ });
1197
+ this.client = opts.client;
1198
+ this.commands = []; // the TCommands generic in the class definition is only used for carrying through chained command types and should never be explicitly set when instantiating the class
1199
+ this.commandOptions = opts.commandOptions;
1200
+ this.multiExec = opts.multiExec ?? false;
1125
1201
  }
1126
1202
  /**
1127
- * Pushes a command into the pipelien and returns a chainable instance of the
1203
+ * Returns the length of pipeline before the execution
1204
+ */
1205
+ length() {
1206
+ return this.commands.length;
1207
+ }
1208
+ /**
1209
+ * Pushes a command into the pipeline and returns a chainable instance of the
1128
1210
  * pipeline
1129
1211
  */
1130
1212
  chain(command) {
1131
1213
  this.commands.push(command);
1132
- return this;
1214
+ return this; // TS thinks we're returning Pipeline<[]> here, because we're not creating a new instance of the class, hence the cast
1215
+ }
1216
+ /**
1217
+ * @see https://redis.io/commands/?group=json
1218
+ */
1219
+ get json() {
1220
+ return {
1221
+ /**
1222
+ * @see https://redis.io/commands/json.arrappend
1223
+ */
1224
+ arrappend: (...args) => this.chain(new JsonArrAppendCommand(args, this.commandOptions)),
1225
+ /**
1226
+ * @see https://redis.io/commands/json.arrindex
1227
+ */
1228
+ arrindex: (...args) => this.chain(new JsonArrIndexCommand(args, this.commandOptions)),
1229
+ /**
1230
+ * @see https://redis.io/commands/json.arrinsert
1231
+ */
1232
+ arrinsert: (...args) => this.chain(new JsonArrInsertCommand(args, this.commandOptions)),
1233
+ /**
1234
+ * @see https://redis.io/commands/json.arrlen
1235
+ */
1236
+ arrlen: (...args) => this.chain(new JsonArrLenCommand(args, this.commandOptions)),
1237
+ /**
1238
+ * @see https://redis.io/commands/json.arrpop
1239
+ */
1240
+ arrpop: (...args) => this.chain(new JsonArrPopCommand(args, this.commandOptions)),
1241
+ /**
1242
+ * @see https://redis.io/commands/json.arrtrim
1243
+ */
1244
+ arrtrim: (...args) => this.chain(new JsonArrTrimCommand(args, this.commandOptions)),
1245
+ /**
1246
+ * @see https://redis.io/commands/json.clear
1247
+ */
1248
+ clear: (...args) => this.chain(new JsonClearCommand(args, this.commandOptions)),
1249
+ /**
1250
+ * @see https://redis.io/commands/json.del
1251
+ */
1252
+ del: (...args) => this.chain(new JsonDelCommand(args, this.commandOptions)),
1253
+ /**
1254
+ * @see https://redis.io/commands/json.forget
1255
+ */
1256
+ forget: (...args) => this.chain(new JsonForgetCommand(args, this.commandOptions)),
1257
+ /**
1258
+ * @see https://redis.io/commands/geoadd
1259
+ */
1260
+ geoadd: (...args) => new GeoAddCommand(args, this.commandOptions).exec(this.client),
1261
+ /**
1262
+ * @see https://redis.io/commands/geodist
1263
+ */
1264
+ geodist: (...args) => new GeoDistCommand(args, this.commandOptions).exec(this.client),
1265
+ /**
1266
+ * @see https://redis.io/commands/json.get
1267
+ */
1268
+ get: (...args) => this.chain(new JsonGetCommand(args, this.commandOptions)),
1269
+ /**
1270
+ * @see https://redis.io/commands/json.mget
1271
+ */
1272
+ mget: (...args) => this.chain(new JsonMGetCommand(args, this.commandOptions)),
1273
+ /**
1274
+ * @see https://redis.io/commands/json.numincrby
1275
+ */
1276
+ numincrby: (...args) => this.chain(new JsonNumIncrByCommand(args, this.commandOptions)),
1277
+ /**
1278
+ * @see https://redis.io/commands/json.nummultby
1279
+ */
1280
+ nummultby: (...args) => this.chain(new JsonNumMultByCommand(args, this.commandOptions)),
1281
+ /**
1282
+ * @see https://redis.io/commands/json.objkeys
1283
+ */
1284
+ objkeys: (...args) => this.chain(new JsonObjKeysCommand(args, this.commandOptions)),
1285
+ /**
1286
+ * @see https://redis.io/commands/json.objlen
1287
+ */
1288
+ objlen: (...args) => this.chain(new JsonObjLenCommand(args, this.commandOptions)),
1289
+ /**
1290
+ * @see https://redis.io/commands/json.resp
1291
+ */
1292
+ resp: (...args) => this.chain(new JsonRespCommand(args, this.commandOptions)),
1293
+ /**
1294
+ * @see https://redis.io/commands/json.set
1295
+ */
1296
+ set: (...args) => this.chain(new JsonSetCommand(args, this.commandOptions)),
1297
+ /**
1298
+ * @see https://redis.io/commands/json.strappend
1299
+ */
1300
+ strappend: (...args) => this.chain(new JsonStrAppendCommand(args, this.commandOptions)),
1301
+ /**
1302
+ * @see https://redis.io/commands/json.strlen
1303
+ */
1304
+ strlen: (...args) => this.chain(new JsonStrLenCommand(args, this.commandOptions)),
1305
+ /**
1306
+ * @see https://redis.io/commands/json.toggle
1307
+ */
1308
+ toggle: (...args) => this.chain(new JsonToggleCommand(args, this.commandOptions)),
1309
+ /**
1310
+ * @see https://redis.io/commands/json.type
1311
+ */
1312
+ type: (...args) => this.chain(new JsonTypeCommand(args, this.commandOptions)),
1313
+ };
1133
1314
  }
1134
1315
  }
package/esm/pkg/redis.js CHANGED
@@ -1,5 +1,8 @@
1
- import { AppendCommand, BitCountCommand, BitOpCommand, BitPosCommand, DBSizeCommand, DecrByCommand, DecrCommand, DelCommand, EchoCommand, EvalCommand, EvalshaCommand, ExistsCommand, ExpireAtCommand, ExpireCommand, FlushAllCommand, FlushDBCommand, GetBitCommand, GetCommand, GetRangeCommand, GetSetCommand, HDelCommand, HExistsCommand, HGetAllCommand, HGetCommand, HIncrByCommand, HIncrByFloatCommand, HKeysCommand, HLenCommand, HMGetCommand, HMSetCommand, HScanCommand, HSetCommand, HSetNXCommand, HStrLenCommand, HValsCommand, IncrByCommand, IncrByFloatCommand, IncrCommand, KeysCommand, LIndexCommand, LInsertCommand, LLenCommand, LPopCommand, LPosCommand, LPushCommand, LPushXCommand, LRangeCommand, LRemCommand, LSetCommand, LTrimCommand, MGetCommand, MSetCommand, MSetNXCommand, PersistCommand, PExpireAtCommand, PExpireCommand, PingCommand, PSetEXCommand, PTtlCommand, PublishCommand, RandomKeyCommand, RenameCommand, RenameNXCommand, RPopCommand, RPushCommand, RPushXCommand, SAddCommand, ScanCommand, SCardCommand, ScriptExistsCommand, ScriptFlushCommand, ScriptLoadCommand, SDiffCommand, SDiffStoreCommand, SetBitCommand, SetCommand, SetExCommand, SetNxCommand, SetRangeCommand, SInterCommand, SInterStoreCommand, SIsMemberCommand, SMembersCommand, SMoveCommand, SPopCommand, SRandMemberCommand, SRemCommand, SScanCommand, StrLenCommand, SUnionCommand, SUnionStoreCommand, TimeCommand, TouchCommand, TtlCommand, TypeCommand, UnlinkCommand, ZAddCommand, ZCardCommand, ZCountCommand, ZIncrByCommand, ZInterStoreCommand, ZLexCountCommand, ZPopMaxCommand, ZPopMinCommand, ZRangeCommand, ZRankCommand, ZRemCommand, ZRemRangeByLexCommand, ZRemRangeByRankCommand, ZRemRangeByScoreCommand, ZRevRankCommand, ZScanCommand, ZScoreCommand, ZUnionStoreCommand, } from "./commands/mod.js";
1
+ import { AppendCommand, BitCountCommand, BitOpCommand, BitPosCommand, DBSizeCommand, DecrByCommand, DecrCommand, DelCommand, EchoCommand, EvalCommand, EvalshaCommand, ExistsCommand, ExpireAtCommand, ExpireCommand, FlushAllCommand, FlushDBCommand, GeoAddCommand, GeoDistCommand, GetBitCommand, GetCommand, GetDelCommand, GetRangeCommand, GetSetCommand, HDelCommand, HExistsCommand, HGetAllCommand, HGetCommand, HIncrByCommand, HIncrByFloatCommand, HKeysCommand, HLenCommand, HMGetCommand, HMSetCommand, HRandFieldCommand, HScanCommand, HSetCommand, HSetNXCommand, HStrLenCommand, HValsCommand, IncrByCommand, IncrByFloatCommand, IncrCommand, JsonArrAppendCommand, JsonArrIndexCommand, JsonArrInsertCommand, JsonArrLenCommand, JsonArrPopCommand, JsonArrTrimCommand, JsonClearCommand, JsonDelCommand, JsonForgetCommand, JsonGetCommand, JsonMGetCommand, JsonNumIncrByCommand, JsonNumMultByCommand, JsonObjKeysCommand, JsonObjLenCommand, JsonRespCommand, JsonSetCommand, JsonStrAppendCommand, JsonStrLenCommand, JsonToggleCommand, JsonTypeCommand, KeysCommand, LIndexCommand, LInsertCommand, LLenCommand, LMoveCommand, LPopCommand, LPosCommand, LPushCommand, LPushXCommand, LRangeCommand, LRemCommand, LSetCommand, LTrimCommand, MGetCommand, MSetCommand, MSetNXCommand, PersistCommand, PExpireAtCommand, PExpireCommand, PingCommand, PSetEXCommand, PTtlCommand, PublishCommand, RandomKeyCommand, RenameCommand, RenameNXCommand, RPopCommand, RPushCommand, RPushXCommand, SAddCommand, ScanCommand, SCardCommand, ScriptExistsCommand, ScriptFlushCommand, ScriptLoadCommand, SDiffCommand, SDiffStoreCommand, SetBitCommand, SetCommand, SetExCommand, SetNxCommand, SetRangeCommand, SInterCommand, SInterStoreCommand, SIsMemberCommand, SMembersCommand, SMIsMemberCommand, SMoveCommand, SPopCommand, SRandMemberCommand, SRemCommand, SScanCommand, StrLenCommand, SUnionCommand, SUnionStoreCommand, TimeCommand, TouchCommand, TtlCommand, TypeCommand, UnlinkCommand, XAddCommand, XRangeCommand, ZAddCommand, ZCardCommand, ZCountCommand, ZIncrByCommand, ZInterStoreCommand, ZLexCountCommand, ZPopMaxCommand, ZPopMinCommand, ZRangeCommand, ZRankCommand, ZRemCommand, ZRemRangeByLexCommand, ZRemRangeByRankCommand, ZRemRangeByScoreCommand, ZRevRankCommand, ZScanCommand, ZScoreCommand, ZUnionCommand, ZUnionStoreCommand, } from "./commands/mod.js";
2
2
  import { Pipeline } from "./pipeline.js";
3
+ import { Script } from "./script.js";
4
+ import { ZMScoreCommand } from "./commands/zmscore.js";
5
+ import { ZDiffStoreCommand } from "./commands/zdiffstore.js";
3
6
  /**
4
7
  * Serverless redis client for upstash.
5
8
  */
@@ -28,6 +31,12 @@ export class Redis {
28
31
  writable: true,
29
32
  value: void 0
30
33
  });
34
+ Object.defineProperty(this, "enableTelemetry", {
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true,
38
+ value: void 0
39
+ });
31
40
  /**
32
41
  * Wrap a new middleware around the HTTP client.
33
42
  */
@@ -40,6 +49,27 @@ export class Redis {
40
49
  this.client.request = (req) => middleware(req, makeRequest);
41
50
  }
42
51
  });
52
+ /**
53
+ * Technically this is not private, we can hide it from intellisense by doing this
54
+ */
55
+ Object.defineProperty(this, "addTelemetry", {
56
+ enumerable: true,
57
+ configurable: true,
58
+ writable: true,
59
+ value: (telemetry) => {
60
+ if (!this.enableTelemetry) {
61
+ return;
62
+ }
63
+ try {
64
+ // @ts-ignore - The `Requester` interface does not know about this method but it will be there
65
+ // as long as the user uses the standard HttpClient
66
+ this.client.mergeTelemetry(telemetry);
67
+ }
68
+ catch {
69
+ // ignore
70
+ }
71
+ }
72
+ });
43
73
  /**
44
74
  * Create a new pipeline that allows you to send requests in bulk.
45
75
  *
@@ -49,7 +79,30 @@ export class Redis {
49
79
  enumerable: true,
50
80
  configurable: true,
51
81
  writable: true,
52
- value: () => new Pipeline(this.client, this.opts)
82
+ value: () => new Pipeline({
83
+ client: this.client,
84
+ commandOptions: this.opts,
85
+ multiExec: false,
86
+ })
87
+ });
88
+ /**
89
+ * Create a new transaction to allow executing multiple steps atomically.
90
+ *
91
+ * All the commands in a transaction are serialized and executed sequentially. A request sent by
92
+ * another client will never be served in the middle of the execution of a Redis Transaction. This
93
+ * guarantees that the commands are executed as a single isolated operation.
94
+ *
95
+ * @see {@link Pipeline}
96
+ */
97
+ Object.defineProperty(this, "multi", {
98
+ enumerable: true,
99
+ configurable: true,
100
+ writable: true,
101
+ value: () => new Pipeline({
102
+ client: this.client,
103
+ commandOptions: this.opts,
104
+ multiExec: true,
105
+ })
53
106
  });
54
107
  /**
55
108
  * @see https://redis.io/commands/append
@@ -213,6 +266,15 @@ export class Redis {
213
266
  writable: true,
214
267
  value: (...args) => new GetBitCommand(args, this.opts).exec(this.client)
215
268
  });
269
+ /**
270
+ * @see https://redis.io/commands/getdel
271
+ */
272
+ Object.defineProperty(this, "getdel", {
273
+ enumerable: true,
274
+ configurable: true,
275
+ writable: true,
276
+ value: (...args) => new GetDelCommand(args, this.opts).exec(this.client)
277
+ });
216
278
  /**
217
279
  * @see https://redis.io/commands/getrange
218
280
  */
@@ -321,6 +383,16 @@ export class Redis {
321
383
  writable: true,
322
384
  value: (key, kv) => new HMSetCommand([key, kv], this.opts).exec(this.client)
323
385
  });
386
+ /**
387
+ * @see https://redis.io/commands/hrandfield
388
+ */
389
+ Object.defineProperty(this, "hrandfield", {
390
+ enumerable: true,
391
+ configurable: true,
392
+ writable: true,
393
+ value: (key, count, withValues) => new HRandFieldCommand([key, count, withValues], this.opts)
394
+ .exec(this.client)
395
+ });
324
396
  /**
325
397
  * @see https://redis.io/commands/hscan
326
398
  */
@@ -429,6 +501,15 @@ export class Redis {
429
501
  writable: true,
430
502
  value: (...args) => new LLenCommand(args, this.opts).exec(this.client)
431
503
  });
504
+ /**
505
+ * @see https://redis.io/commands/lmove
506
+ */
507
+ Object.defineProperty(this, "lmove", {
508
+ enumerable: true,
509
+ configurable: true,
510
+ writable: true,
511
+ value: (...args) => new LMoveCommand(args, this.opts).exec(this.client)
512
+ });
432
513
  /**
433
514
  * @see https://redis.io/commands/lpop
434
515
  */
@@ -789,6 +870,15 @@ export class Redis {
789
870
  writable: true,
790
871
  value: (key, member) => new SIsMemberCommand([key, member], this.opts).exec(this.client)
791
872
  });
873
+ /**
874
+ * @see https://redis.io/commands/smismember
875
+ */
876
+ Object.defineProperty(this, "smismember", {
877
+ enumerable: true,
878
+ configurable: true,
879
+ writable: true,
880
+ value: (key, members) => new SMIsMemberCommand([key, members], this.opts).exec(this.client)
881
+ });
792
882
  /**
793
883
  * @see https://redis.io/commands/smembers
794
884
  */
@@ -915,6 +1005,24 @@ export class Redis {
915
1005
  writable: true,
916
1006
  value: (...args) => new UnlinkCommand(args, this.opts).exec(this.client)
917
1007
  });
1008
+ /**
1009
+ * @see https://redis.io/commands/xadd
1010
+ */
1011
+ Object.defineProperty(this, "xadd", {
1012
+ enumerable: true,
1013
+ configurable: true,
1014
+ writable: true,
1015
+ value: (...args) => new XAddCommand(args, this.opts).exec(this.client)
1016
+ });
1017
+ /**
1018
+ * @see https://redis.io/commands/xrange
1019
+ */
1020
+ Object.defineProperty(this, "xrange", {
1021
+ enumerable: true,
1022
+ configurable: true,
1023
+ writable: true,
1024
+ value: (...args) => new XRangeCommand(args, this.opts).exec(this.client)
1025
+ });
918
1026
  /**
919
1027
  * @see https://redis.io/commands/zadd
920
1028
  */
@@ -947,6 +1055,15 @@ export class Redis {
947
1055
  writable: true,
948
1056
  value: (...args) => new ZCountCommand(args, this.opts).exec(this.client)
949
1057
  });
1058
+ /**
1059
+ * @see https://redis.io/commands/zdiffstore
1060
+ */
1061
+ Object.defineProperty(this, "zdiffstore", {
1062
+ enumerable: true,
1063
+ configurable: true,
1064
+ writable: true,
1065
+ value: (...args) => new ZDiffStoreCommand(args, this.opts).exec(this.client)
1066
+ });
950
1067
  /**
951
1068
  * @see https://redis.io/commands/zincrby
952
1069
  */
@@ -974,6 +1091,15 @@ export class Redis {
974
1091
  writable: true,
975
1092
  value: (...args) => new ZLexCountCommand(args, this.opts).exec(this.client)
976
1093
  });
1094
+ /**
1095
+ * @see https://redis.io/commands/zmscore
1096
+ */
1097
+ Object.defineProperty(this, "zmscore", {
1098
+ enumerable: true,
1099
+ configurable: true,
1100
+ writable: true,
1101
+ value: (...args) => new ZMScoreCommand(args, this.opts).exec(this.client)
1102
+ });
977
1103
  /**
978
1104
  * @see https://redis.io/commands/zpopmax
979
1105
  */
@@ -1073,6 +1199,15 @@ export class Redis {
1073
1199
  writable: true,
1074
1200
  value: (key, member) => new ZScoreCommand([key, member], this.opts).exec(this.client)
1075
1201
  });
1202
+ /**
1203
+ * @see https://redis.io/commands/zunion
1204
+ */
1205
+ Object.defineProperty(this, "zunion", {
1206
+ enumerable: true,
1207
+ configurable: true,
1208
+ writable: true,
1209
+ value: (...args) => new ZUnionCommand(args, this.opts).exec(this.client)
1210
+ });
1076
1211
  /**
1077
1212
  * @see https://redis.io/commands/zunionstore
1078
1213
  */
@@ -1084,5 +1219,105 @@ export class Redis {
1084
1219
  });
1085
1220
  this.client = client;
1086
1221
  this.opts = opts;
1222
+ this.enableTelemetry = opts?.enableTelemetry ?? true;
1223
+ }
1224
+ get json() {
1225
+ return {
1226
+ /**
1227
+ * @see https://redis.io/commands/json.arrappend
1228
+ */
1229
+ arrappend: (...args) => new JsonArrAppendCommand(args, this.opts).exec(this.client),
1230
+ /**
1231
+ * @see https://redis.io/commands/json.arrindex
1232
+ */
1233
+ arrindex: (...args) => new JsonArrIndexCommand(args, this.opts).exec(this.client),
1234
+ /**
1235
+ * @see https://redis.io/commands/json.arrinsert
1236
+ */
1237
+ arrinsert: (...args) => new JsonArrInsertCommand(args, this.opts).exec(this.client),
1238
+ /**
1239
+ * @see https://redis.io/commands/json.arrlen
1240
+ */
1241
+ arrlen: (...args) => new JsonArrLenCommand(args, this.opts).exec(this.client),
1242
+ /**
1243
+ * @see https://redis.io/commands/json.arrpop
1244
+ */
1245
+ arrpop: (...args) => new JsonArrPopCommand(args, this.opts).exec(this.client),
1246
+ /**
1247
+ * @see https://redis.io/commands/json.arrtrim
1248
+ */
1249
+ arrtrim: (...args) => new JsonArrTrimCommand(args, this.opts).exec(this.client),
1250
+ /**
1251
+ * @see https://redis.io/commands/json.clear
1252
+ */
1253
+ clear: (...args) => new JsonClearCommand(args, this.opts).exec(this.client),
1254
+ /**
1255
+ * @see https://redis.io/commands/json.del
1256
+ */
1257
+ del: (...args) => new JsonDelCommand(args, this.opts).exec(this.client),
1258
+ /**
1259
+ * @see https://redis.io/commands/json.forget
1260
+ */
1261
+ forget: (...args) => new JsonForgetCommand(args, this.opts).exec(this.client),
1262
+ /**
1263
+ * @see https://redis.io/commands/geoadd
1264
+ */
1265
+ geoadd: (...args) => new GeoAddCommand(args, this.opts).exec(this.client),
1266
+ /**
1267
+ * @see https://redis.io/commands/geodist
1268
+ */
1269
+ geodist: (...args) => new GeoDistCommand(args, this.opts).exec(this.client),
1270
+ /**
1271
+ * @see https://redis.io/commands/json.get
1272
+ */
1273
+ get: (...args) => new JsonGetCommand(args, this.opts).exec(this.client),
1274
+ /**
1275
+ * @see https://redis.io/commands/json.mget
1276
+ */
1277
+ mget: (...args) => new JsonMGetCommand(args, this.opts).exec(this.client),
1278
+ /**
1279
+ * @see https://redis.io/commands/json.numincrby
1280
+ */
1281
+ numincrby: (...args) => new JsonNumIncrByCommand(args, this.opts).exec(this.client),
1282
+ /**
1283
+ * @see https://redis.io/commands/json.nummultby
1284
+ */
1285
+ nummultby: (...args) => new JsonNumMultByCommand(args, this.opts).exec(this.client),
1286
+ /**
1287
+ * @see https://redis.io/commands/json.objkeys
1288
+ */
1289
+ objkeys: (...args) => new JsonObjKeysCommand(args, this.opts).exec(this.client),
1290
+ /**
1291
+ * @see https://redis.io/commands/json.objlen
1292
+ */
1293
+ objlen: (...args) => new JsonObjLenCommand(args, this.opts).exec(this.client),
1294
+ /**
1295
+ * @see https://redis.io/commands/json.resp
1296
+ */
1297
+ resp: (...args) => new JsonRespCommand(args, this.opts).exec(this.client),
1298
+ /**
1299
+ * @see https://redis.io/commands/json.set
1300
+ */
1301
+ set: (...args) => new JsonSetCommand(args, this.opts).exec(this.client),
1302
+ /**
1303
+ * @see https://redis.io/commands/json.strappend
1304
+ */
1305
+ strappend: (...args) => new JsonStrAppendCommand(args, this.opts).exec(this.client),
1306
+ /**
1307
+ * @see https://redis.io/commands/json.strlen
1308
+ */
1309
+ strlen: (...args) => new JsonStrLenCommand(args, this.opts).exec(this.client),
1310
+ /**
1311
+ * @see https://redis.io/commands/json.toggle
1312
+ */
1313
+ toggle: (...args) => new JsonToggleCommand(args, this.opts).exec(this.client),
1314
+ /**
1315
+ * @see https://redis.io/commands/json.type
1316
+ */
1317
+ type: (...args) => new JsonTypeCommand(args, this.opts).exec(this.client),
1318
+ };
1319
+ }
1320
+ createScript(script) {
1321
+ return new Script(this, script);
1087
1322
  }
1088
1323
  }