@upstash/redis 0.0.0-ci.ba39ba1e → 0.0.0-ci.baae64ab-20231010

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 (168) 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/getdel.js +9 -0
  9. package/esm/pkg/commands/hgetall.js +0 -4
  10. package/esm/pkg/commands/hrandfield.js +39 -0
  11. package/esm/pkg/commands/json_arrappend.js +9 -0
  12. package/esm/pkg/commands/json_arrindex.js +9 -0
  13. package/esm/pkg/commands/json_arrinsert.js +9 -0
  14. package/esm/pkg/commands/json_arrlen.js +9 -0
  15. package/esm/pkg/commands/json_arrpop.js +9 -0
  16. package/esm/pkg/commands/json_arrtrim.js +12 -0
  17. package/esm/pkg/commands/json_clear.js +9 -0
  18. package/esm/pkg/commands/json_del.js +9 -0
  19. package/esm/pkg/commands/json_forget.js +9 -0
  20. package/esm/pkg/commands/json_get.js +30 -0
  21. package/esm/pkg/commands/json_mget.js +9 -0
  22. package/esm/pkg/commands/json_numincrby.js +9 -0
  23. package/esm/pkg/commands/json_nummultby.js +9 -0
  24. package/esm/pkg/commands/json_objkeys.js +9 -0
  25. package/esm/pkg/commands/json_objlen.js +9 -0
  26. package/esm/pkg/commands/json_resp.js +9 -0
  27. package/esm/pkg/commands/json_set.js +18 -0
  28. package/esm/pkg/commands/json_strappend.js +9 -0
  29. package/esm/pkg/commands/json_strlen.js +9 -0
  30. package/esm/pkg/commands/json_toggle.js +9 -0
  31. package/esm/pkg/commands/json_type.js +9 -0
  32. package/esm/pkg/commands/lmove.js +9 -0
  33. package/esm/pkg/commands/lpos.js +19 -0
  34. package/esm/pkg/commands/mod.js +28 -0
  35. package/esm/pkg/commands/scan.js +3 -0
  36. package/esm/pkg/commands/sdiffstore.js +1 -1
  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 +37 -0
  41. package/esm/pkg/commands/zdiffstore.js +9 -0
  42. package/esm/pkg/commands/zmscore.js +10 -0
  43. package/esm/pkg/commands/zrange.js +6 -0
  44. package/esm/pkg/http.js +100 -3
  45. package/esm/pkg/pipeline.js +180 -12
  46. package/esm/pkg/redis.js +241 -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/getdel.js +13 -0
  61. package/script/pkg/commands/hgetall.js +0 -4
  62. package/script/pkg/commands/hrandfield.js +43 -0
  63. package/script/pkg/commands/json_arrappend.js +13 -0
  64. package/script/pkg/commands/json_arrindex.js +13 -0
  65. package/script/pkg/commands/json_arrinsert.js +13 -0
  66. package/script/pkg/commands/json_arrlen.js +13 -0
  67. package/script/pkg/commands/json_arrpop.js +13 -0
  68. package/script/pkg/commands/json_arrtrim.js +16 -0
  69. package/script/pkg/commands/json_clear.js +13 -0
  70. package/script/pkg/commands/json_del.js +13 -0
  71. package/script/pkg/commands/json_forget.js +13 -0
  72. package/script/pkg/commands/json_get.js +34 -0
  73. package/script/pkg/commands/json_mget.js +13 -0
  74. package/script/pkg/commands/json_numincrby.js +13 -0
  75. package/script/pkg/commands/json_nummultby.js +13 -0
  76. package/script/pkg/commands/json_objkeys.js +13 -0
  77. package/script/pkg/commands/json_objlen.js +13 -0
  78. package/script/pkg/commands/json_resp.js +13 -0
  79. package/script/pkg/commands/json_set.js +22 -0
  80. package/script/pkg/commands/json_strappend.js +13 -0
  81. package/script/pkg/commands/json_strlen.js +13 -0
  82. package/script/pkg/commands/json_toggle.js +13 -0
  83. package/script/pkg/commands/json_type.js +13 -0
  84. package/script/pkg/commands/lmove.js +13 -0
  85. package/script/pkg/commands/lpos.js +23 -0
  86. package/script/pkg/commands/mod.js +28 -0
  87. package/script/pkg/commands/scan.js +3 -0
  88. package/script/pkg/commands/sdiffstore.js +1 -1
  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 +41 -0
  93. package/script/pkg/commands/zdiffstore.js +13 -0
  94. package/script/pkg/commands/zmscore.js +14 -0
  95. package/script/pkg/commands/zrange.js +6 -0
  96. package/script/pkg/http.js +100 -3
  97. package/script/pkg/pipeline.js +179 -11
  98. package/script/pkg/redis.js +240 -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/bitop.d.ts +0 -1
  111. package/types/pkg/commands/bitpos.d.ts +1 -1
  112. package/types/pkg/commands/command.d.ts +5 -5
  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/lpop.d.ts +1 -1
  139. package/types/pkg/commands/lpos.d.ts +15 -0
  140. package/types/pkg/commands/mget.d.ts +1 -1
  141. package/types/pkg/commands/mod.d.ts +28 -0
  142. package/types/pkg/commands/rpop.d.ts +2 -2
  143. package/types/pkg/commands/scan.d.ts +2 -1
  144. package/types/pkg/commands/script_flush.d.ts +1 -1
  145. package/types/pkg/commands/sdiffstore.d.ts +1 -1
  146. package/types/pkg/commands/set.d.ts +31 -2
  147. package/types/pkg/commands/smembers.d.ts +2 -2
  148. package/types/pkg/commands/smismember.d.ts +7 -0
  149. package/types/pkg/commands/spop.d.ts +2 -2
  150. package/types/pkg/commands/type.d.ts +1 -1
  151. package/types/pkg/commands/xadd.d.ts +31 -0
  152. package/types/pkg/commands/xrange.d.ts +9 -0
  153. package/types/pkg/commands/zadd.d.ts +4 -4
  154. package/types/pkg/commands/zdiffstore.d.ts +7 -0
  155. package/types/pkg/commands/zinterstore.d.ts +1 -1
  156. package/types/pkg/commands/zmscore.d.ts +7 -0
  157. package/types/pkg/commands/zrange.d.ts +8 -1
  158. package/types/pkg/commands/zunionstore.d.ts +1 -1
  159. package/types/pkg/http.d.ts +48 -7
  160. package/types/pkg/pipeline.d.ts +262 -124
  161. package/types/pkg/redis.d.ts +187 -19
  162. package/types/pkg/script.d.ts +42 -0
  163. package/types/pkg/types.d.ts +27 -1
  164. package/types/platforms/cloudflare.d.ts +9 -8
  165. package/types/platforms/fastly.d.ts +3 -7
  166. package/types/platforms/node_with_fetch.d.ts +3 -22
  167. package/types/platforms/nodejs.d.ts +4 -7
  168. 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, 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, 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, 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,10 +87,12 @@ 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
  }));
95
+ console.log("after req", { res });
83
96
  return res.map(({ error, result }, i) => {
84
97
  if (error) {
85
98
  throw new UpstashError(`Command ${i + 1} [ ${this.commands[i].command[0]} ] failed: ${error}`);
@@ -124,6 +137,15 @@ export class Pipeline {
124
137
  writable: true,
125
138
  value: (...args) => this.chain(new BitPosCommand(args, this.commandOptions))
126
139
  });
140
+ /**
141
+ * @see https://redis.io/commands/zdiffstore
142
+ */
143
+ Object.defineProperty(this, "zdiffstore", {
144
+ enumerable: true,
145
+ configurable: true,
146
+ writable: true,
147
+ value: (...args) => this.chain(new ZDiffStoreCommand(args, this.commandOptions))
148
+ });
127
149
  /**
128
150
  * @see https://redis.io/commands/dbsize
129
151
  */
@@ -250,6 +272,15 @@ export class Pipeline {
250
272
  writable: true,
251
273
  value: (...args) => this.chain(new GetBitCommand(args, this.commandOptions))
252
274
  });
275
+ /**
276
+ * @see https://redis.io/commands/getdel
277
+ */
278
+ Object.defineProperty(this, "getdel", {
279
+ enumerable: true,
280
+ configurable: true,
281
+ writable: true,
282
+ value: (...args) => this.chain(new GetDelCommand(args, this.commandOptions))
283
+ });
253
284
  /**
254
285
  * @see https://redis.io/commands/getrange
255
286
  */
@@ -358,6 +389,15 @@ export class Pipeline {
358
389
  writable: true,
359
390
  value: (key, kv) => this.chain(new HMSetCommand([key, kv], this.commandOptions))
360
391
  });
392
+ /**
393
+ * @see https://redis.io/commands/hrandfield
394
+ */
395
+ Object.defineProperty(this, "hrandfield", {
396
+ enumerable: true,
397
+ configurable: true,
398
+ writable: true,
399
+ value: (key, count, withValues) => this.chain(new HRandFieldCommand([key, count, withValues], this.commandOptions))
400
+ });
361
401
  /**
362
402
  * @see https://redis.io/commands/hscan
363
403
  */
@@ -466,6 +506,15 @@ export class Pipeline {
466
506
  writable: true,
467
507
  value: (...args) => this.chain(new LLenCommand(args, this.commandOptions))
468
508
  });
509
+ /**
510
+ * @see https://redis.io/commands/lmove
511
+ */
512
+ Object.defineProperty(this, "lmove", {
513
+ enumerable: true,
514
+ configurable: true,
515
+ writable: true,
516
+ value: (...args) => this.chain(new LMoveCommand(args, this.commandOptions))
517
+ });
469
518
  /**
470
519
  * @see https://redis.io/commands/lpop
471
520
  */
@@ -475,6 +524,15 @@ export class Pipeline {
475
524
  writable: true,
476
525
  value: (...args) => this.chain(new LPopCommand(args, this.commandOptions))
477
526
  });
527
+ /**
528
+ * @see https://redis.io/commands/lpos
529
+ */
530
+ Object.defineProperty(this, "lpos", {
531
+ enumerable: true,
532
+ configurable: true,
533
+ writable: true,
534
+ value: (...args) => this.chain(new LPosCommand(args, this.commandOptions))
535
+ });
478
536
  /**
479
537
  * @see https://redis.io/commands/lpush
480
538
  */
@@ -826,6 +884,15 @@ export class Pipeline {
826
884
  writable: true,
827
885
  value: (...args) => this.chain(new SMembersCommand(args, this.commandOptions))
828
886
  });
887
+ /**
888
+ * @see https://redis.io/commands/smismember
889
+ */
890
+ Object.defineProperty(this, "smismember", {
891
+ enumerable: true,
892
+ configurable: true,
893
+ writable: true,
894
+ value: (key, members) => this.chain(new SMIsMemberCommand([key, members], this.commandOptions))
895
+ });
829
896
  /**
830
897
  * @see https://redis.io/commands/smove
831
898
  */
@@ -1002,6 +1069,15 @@ export class Pipeline {
1002
1069
  writable: true,
1003
1070
  value: (...args) => this.chain(new ZLexCountCommand(args, this.commandOptions))
1004
1071
  });
1072
+ /**
1073
+ * @see https://redis.io/commands/zmscore
1074
+ */
1075
+ Object.defineProperty(this, "zmscore", {
1076
+ enumerable: true,
1077
+ configurable: true,
1078
+ writable: true,
1079
+ value: (...args) => this.chain(new ZMScoreCommand(args, this.commandOptions))
1080
+ });
1005
1081
  /**
1006
1082
  * @see https://redis.io/commands/zpopmax
1007
1083
  */
@@ -1110,16 +1186,108 @@ export class Pipeline {
1110
1186
  writable: true,
1111
1187
  value: (...args) => this.chain(new ZUnionStoreCommand(args, this.commandOptions))
1112
1188
  });
1113
- this.client = client;
1114
- this.commands = [];
1115
- this.commandOptions = commandOptions;
1189
+ this.client = opts.client;
1190
+ 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
1191
+ this.commandOptions = opts.commandOptions;
1192
+ this.multiExec = opts.multiExec ?? false;
1116
1193
  }
1117
1194
  /**
1118
- * Pushes a command into the pipelien and returns a chainable instance of the
1195
+ * Pushes a command into the pipeline and returns a chainable instance of the
1119
1196
  * pipeline
1120
1197
  */
1121
1198
  chain(command) {
1122
1199
  this.commands.push(command);
1123
- return this;
1200
+ return this; // TS thinks we're returning Pipeline<[]> here, because we're not creating a new instance of the class, hence the cast
1201
+ }
1202
+ /**
1203
+ * @see https://redis.io/commands/?group=json
1204
+ */
1205
+ get json() {
1206
+ return {
1207
+ /**
1208
+ * @see https://redis.io/commands/json.arrappend
1209
+ */
1210
+ arrappend: (...args) => this.chain(new JsonArrAppendCommand(args, this.commandOptions)),
1211
+ /**
1212
+ * @see https://redis.io/commands/json.arrindex
1213
+ */
1214
+ arrindex: (...args) => this.chain(new JsonArrIndexCommand(args, this.commandOptions)),
1215
+ /**
1216
+ * @see https://redis.io/commands/json.arrinsert
1217
+ */
1218
+ arrinsert: (...args) => this.chain(new JsonArrInsertCommand(args, this.commandOptions)),
1219
+ /**
1220
+ * @see https://redis.io/commands/json.arrlen
1221
+ */
1222
+ arrlen: (...args) => this.chain(new JsonArrLenCommand(args, this.commandOptions)),
1223
+ /**
1224
+ * @see https://redis.io/commands/json.arrpop
1225
+ */
1226
+ arrpop: (...args) => this.chain(new JsonArrPopCommand(args, this.commandOptions)),
1227
+ /**
1228
+ * @see https://redis.io/commands/json.arrtrim
1229
+ */
1230
+ arrtrim: (...args) => this.chain(new JsonArrTrimCommand(args, this.commandOptions)),
1231
+ /**
1232
+ * @see https://redis.io/commands/json.clear
1233
+ */
1234
+ clear: (...args) => this.chain(new JsonClearCommand(args, this.commandOptions)),
1235
+ /**
1236
+ * @see https://redis.io/commands/json.del
1237
+ */
1238
+ del: (...args) => this.chain(new JsonDelCommand(args, this.commandOptions)),
1239
+ /**
1240
+ * @see https://redis.io/commands/json.forget
1241
+ */
1242
+ forget: (...args) => this.chain(new JsonForgetCommand(args, this.commandOptions)),
1243
+ /**
1244
+ * @see https://redis.io/commands/json.get
1245
+ */
1246
+ get: (...args) => this.chain(new JsonGetCommand(args, this.commandOptions)),
1247
+ /**
1248
+ * @see https://redis.io/commands/json.mget
1249
+ */
1250
+ mget: (...args) => this.chain(new JsonMGetCommand(args, this.commandOptions)),
1251
+ /**
1252
+ * @see https://redis.io/commands/json.numincrby
1253
+ */
1254
+ numincrby: (...args) => this.chain(new JsonNumIncrByCommand(args, this.commandOptions)),
1255
+ /**
1256
+ * @see https://redis.io/commands/json.nummultby
1257
+ */
1258
+ nummultby: (...args) => this.chain(new JsonNumMultByCommand(args, this.commandOptions)),
1259
+ /**
1260
+ * @see https://redis.io/commands/json.objkeys
1261
+ */
1262
+ objkeys: (...args) => this.chain(new JsonObjKeysCommand(args, this.commandOptions)),
1263
+ /**
1264
+ * @see https://redis.io/commands/json.objlen
1265
+ */
1266
+ objlen: (...args) => this.chain(new JsonObjLenCommand(args, this.commandOptions)),
1267
+ /**
1268
+ * @see https://redis.io/commands/json.resp
1269
+ */
1270
+ resp: (...args) => this.chain(new JsonRespCommand(args, this.commandOptions)),
1271
+ /**
1272
+ * @see https://redis.io/commands/json.set
1273
+ */
1274
+ set: (...args) => this.chain(new JsonSetCommand(args, this.commandOptions)),
1275
+ /**
1276
+ * @see https://redis.io/commands/json.strappend
1277
+ */
1278
+ strappend: (...args) => this.chain(new JsonStrAppendCommand(args, this.commandOptions)),
1279
+ /**
1280
+ * @see https://redis.io/commands/json.strlen
1281
+ */
1282
+ strlen: (...args) => this.chain(new JsonStrLenCommand(args, this.commandOptions)),
1283
+ /**
1284
+ * @see https://redis.io/commands/json.toggle
1285
+ */
1286
+ toggle: (...args) => this.chain(new JsonToggleCommand(args, this.commandOptions)),
1287
+ /**
1288
+ * @see https://redis.io/commands/json.type
1289
+ */
1290
+ type: (...args) => this.chain(new JsonTypeCommand(args, this.commandOptions)),
1291
+ };
1124
1292
  }
1125
1293
  }
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, 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, 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, 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,45 @@ 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
+ });
40
+ /**
41
+ * Wrap a new middleware around the HTTP client.
42
+ */
43
+ Object.defineProperty(this, "use", {
44
+ enumerable: true,
45
+ configurable: true,
46
+ writable: true,
47
+ value: (middleware) => {
48
+ const makeRequest = this.client.request.bind(this.client);
49
+ this.client.request = (req) => middleware(req, makeRequest);
50
+ }
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
+ });
31
73
  /**
32
74
  * Create a new pipeline that allows you to send requests in bulk.
33
75
  *
@@ -37,7 +79,30 @@ export class Redis {
37
79
  enumerable: true,
38
80
  configurable: true,
39
81
  writable: true,
40
- 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
+ })
41
106
  });
42
107
  /**
43
108
  * @see https://redis.io/commands/append
@@ -201,6 +266,15 @@ export class Redis {
201
266
  writable: true,
202
267
  value: (...args) => new GetBitCommand(args, this.opts).exec(this.client)
203
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
+ });
204
278
  /**
205
279
  * @see https://redis.io/commands/getrange
206
280
  */
@@ -309,6 +383,16 @@ export class Redis {
309
383
  writable: true,
310
384
  value: (key, kv) => new HMSetCommand([key, kv], this.opts).exec(this.client)
311
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
+ });
312
396
  /**
313
397
  * @see https://redis.io/commands/hscan
314
398
  */
@@ -417,6 +501,15 @@ export class Redis {
417
501
  writable: true,
418
502
  value: (...args) => new LLenCommand(args, this.opts).exec(this.client)
419
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
+ });
420
513
  /**
421
514
  * @see https://redis.io/commands/lpop
422
515
  */
@@ -426,6 +519,15 @@ export class Redis {
426
519
  writable: true,
427
520
  value: (...args) => new LPopCommand(args, this.opts).exec(this.client)
428
521
  });
522
+ /**
523
+ * @see https://redis.io/commands/lpos
524
+ */
525
+ Object.defineProperty(this, "lpos", {
526
+ enumerable: true,
527
+ configurable: true,
528
+ writable: true,
529
+ value: (...args) => new LPosCommand(args, this.opts).exec(this.client)
530
+ });
429
531
  /**
430
532
  * @see https://redis.io/commands/lpush
431
533
  */
@@ -768,6 +870,15 @@ export class Redis {
768
870
  writable: true,
769
871
  value: (key, member) => new SIsMemberCommand([key, member], this.opts).exec(this.client)
770
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
+ });
771
882
  /**
772
883
  * @see https://redis.io/commands/smembers
773
884
  */
@@ -894,6 +1005,24 @@ export class Redis {
894
1005
  writable: true,
895
1006
  value: (...args) => new UnlinkCommand(args, this.opts).exec(this.client)
896
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
+ });
897
1026
  /**
898
1027
  * @see https://redis.io/commands/zadd
899
1028
  */
@@ -926,6 +1055,15 @@ export class Redis {
926
1055
  writable: true,
927
1056
  value: (...args) => new ZCountCommand(args, this.opts).exec(this.client)
928
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
+ });
929
1067
  /**
930
1068
  * @see https://redis.io/commands/zincrby
931
1069
  */
@@ -953,6 +1091,15 @@ export class Redis {
953
1091
  writable: true,
954
1092
  value: (...args) => new ZLexCountCommand(args, this.opts).exec(this.client)
955
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
+ });
956
1103
  /**
957
1104
  * @see https://redis.io/commands/zpopmax
958
1105
  */
@@ -1063,5 +1210,97 @@ export class Redis {
1063
1210
  });
1064
1211
  this.client = client;
1065
1212
  this.opts = opts;
1213
+ this.enableTelemetry = opts?.enableTelemetry ?? true;
1214
+ }
1215
+ get json() {
1216
+ return {
1217
+ /**
1218
+ * @see https://redis.io/commands/json.arrappend
1219
+ */
1220
+ arrappend: (...args) => new JsonArrAppendCommand(args, this.opts).exec(this.client),
1221
+ /**
1222
+ * @see https://redis.io/commands/json.arrindex
1223
+ */
1224
+ arrindex: (...args) => new JsonArrIndexCommand(args, this.opts).exec(this.client),
1225
+ /**
1226
+ * @see https://redis.io/commands/json.arrinsert
1227
+ */
1228
+ arrinsert: (...args) => new JsonArrInsertCommand(args, this.opts).exec(this.client),
1229
+ /**
1230
+ * @see https://redis.io/commands/json.arrlen
1231
+ */
1232
+ arrlen: (...args) => new JsonArrLenCommand(args, this.opts).exec(this.client),
1233
+ /**
1234
+ * @see https://redis.io/commands/json.arrpop
1235
+ */
1236
+ arrpop: (...args) => new JsonArrPopCommand(args, this.opts).exec(this.client),
1237
+ /**
1238
+ * @see https://redis.io/commands/json.arrtrim
1239
+ */
1240
+ arrtrim: (...args) => new JsonArrTrimCommand(args, this.opts).exec(this.client),
1241
+ /**
1242
+ * @see https://redis.io/commands/json.clear
1243
+ */
1244
+ clear: (...args) => new JsonClearCommand(args, this.opts).exec(this.client),
1245
+ /**
1246
+ * @see https://redis.io/commands/json.del
1247
+ */
1248
+ del: (...args) => new JsonDelCommand(args, this.opts).exec(this.client),
1249
+ /**
1250
+ * @see https://redis.io/commands/json.forget
1251
+ */
1252
+ forget: (...args) => new JsonForgetCommand(args, this.opts).exec(this.client),
1253
+ /**
1254
+ * @see https://redis.io/commands/json.get
1255
+ */
1256
+ get: (...args) => new JsonGetCommand(args, this.opts).exec(this.client),
1257
+ /**
1258
+ * @see https://redis.io/commands/json.mget
1259
+ */
1260
+ mget: (...args) => new JsonMGetCommand(args, this.opts).exec(this.client),
1261
+ /**
1262
+ * @see https://redis.io/commands/json.numincrby
1263
+ */
1264
+ numincrby: (...args) => new JsonNumIncrByCommand(args, this.opts).exec(this.client),
1265
+ /**
1266
+ * @see https://redis.io/commands/json.nummultby
1267
+ */
1268
+ nummultby: (...args) => new JsonNumMultByCommand(args, this.opts).exec(this.client),
1269
+ /**
1270
+ * @see https://redis.io/commands/json.objkeys
1271
+ */
1272
+ objkeys: (...args) => new JsonObjKeysCommand(args, this.opts).exec(this.client),
1273
+ /**
1274
+ * @see https://redis.io/commands/json.objlen
1275
+ */
1276
+ objlen: (...args) => new JsonObjLenCommand(args, this.opts).exec(this.client),
1277
+ /**
1278
+ * @see https://redis.io/commands/json.resp
1279
+ */
1280
+ resp: (...args) => new JsonRespCommand(args, this.opts).exec(this.client),
1281
+ /**
1282
+ * @see https://redis.io/commands/json.set
1283
+ */
1284
+ set: (...args) => new JsonSetCommand(args, this.opts).exec(this.client),
1285
+ /**
1286
+ * @see https://redis.io/commands/json.strappend
1287
+ */
1288
+ strappend: (...args) => new JsonStrAppendCommand(args, this.opts).exec(this.client),
1289
+ /**
1290
+ * @see https://redis.io/commands/json.strlen
1291
+ */
1292
+ strlen: (...args) => new JsonStrLenCommand(args, this.opts).exec(this.client),
1293
+ /**
1294
+ * @see https://redis.io/commands/json.toggle
1295
+ */
1296
+ toggle: (...args) => new JsonToggleCommand(args, this.opts).exec(this.client),
1297
+ /**
1298
+ * @see https://redis.io/commands/json.type
1299
+ */
1300
+ type: (...args) => new JsonTypeCommand(args, this.opts).exec(this.client),
1301
+ };
1302
+ }
1303
+ createScript(script) {
1304
+ return new Script(this, script);
1066
1305
  }
1067
1306
  }