@upstash/redis 0.0.0-ci.608697de-20221215 → 0.0.0-ci.6493a578-20230531

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 (115) hide show
  1. package/README.md +8 -1
  2. package/esm/pkg/commands/command.js +12 -3
  3. package/esm/pkg/commands/json_arrappend.js +9 -0
  4. package/esm/pkg/commands/json_arrindex.js +9 -0
  5. package/esm/pkg/commands/json_arrinsert.js +9 -0
  6. package/esm/pkg/commands/json_arrlen.js +9 -0
  7. package/esm/pkg/commands/json_arrpop.js +9 -0
  8. package/esm/pkg/commands/json_arrtrim.js +12 -0
  9. package/esm/pkg/commands/json_clear.js +9 -0
  10. package/esm/pkg/commands/json_del.js +9 -0
  11. package/esm/pkg/commands/json_forget.js +9 -0
  12. package/esm/pkg/commands/json_get.js +30 -0
  13. package/esm/pkg/commands/json_mget.js +9 -0
  14. package/esm/pkg/commands/json_numincrby.js +9 -0
  15. package/esm/pkg/commands/json_nummultby.js +9 -0
  16. package/esm/pkg/commands/json_objkeys.js +9 -0
  17. package/esm/pkg/commands/json_objlen.js +9 -0
  18. package/esm/pkg/commands/json_resp.js +9 -0
  19. package/esm/pkg/commands/json_set.js +18 -0
  20. package/esm/pkg/commands/json_strappend.js +9 -0
  21. package/esm/pkg/commands/json_strlen.js +9 -0
  22. package/esm/pkg/commands/json_toggle.js +9 -0
  23. package/esm/pkg/commands/json_type.js +9 -0
  24. package/esm/pkg/commands/lmove.js +9 -0
  25. package/esm/pkg/commands/mod.js +23 -0
  26. package/esm/pkg/commands/smismember.js +9 -0
  27. package/esm/pkg/commands/zdiffstore.js +9 -0
  28. package/esm/pkg/http.js +26 -16
  29. package/esm/pkg/pipeline.js +128 -7
  30. package/esm/pkg/redis.js +145 -1
  31. package/esm/platforms/cloudflare.js +6 -6
  32. package/esm/platforms/fastly.js +5 -0
  33. package/esm/platforms/node_with_fetch.js +23 -11
  34. package/esm/platforms/nodejs.js +21 -11
  35. package/esm/version.js +1 -1
  36. package/package.json +53 -20
  37. package/script/pkg/commands/command.js +12 -3
  38. package/script/pkg/commands/json_arrappend.js +13 -0
  39. package/script/pkg/commands/json_arrindex.js +13 -0
  40. package/script/pkg/commands/json_arrinsert.js +13 -0
  41. package/script/pkg/commands/json_arrlen.js +13 -0
  42. package/script/pkg/commands/json_arrpop.js +13 -0
  43. package/script/pkg/commands/json_arrtrim.js +16 -0
  44. package/script/pkg/commands/json_clear.js +13 -0
  45. package/script/pkg/commands/json_del.js +13 -0
  46. package/script/pkg/commands/json_forget.js +13 -0
  47. package/script/pkg/commands/json_get.js +34 -0
  48. package/script/pkg/commands/json_mget.js +13 -0
  49. package/script/pkg/commands/json_numincrby.js +13 -0
  50. package/script/pkg/commands/json_nummultby.js +13 -0
  51. package/script/pkg/commands/json_objkeys.js +13 -0
  52. package/script/pkg/commands/json_objlen.js +13 -0
  53. package/script/pkg/commands/json_resp.js +13 -0
  54. package/script/pkg/commands/json_set.js +22 -0
  55. package/script/pkg/commands/json_strappend.js +13 -0
  56. package/script/pkg/commands/json_strlen.js +13 -0
  57. package/script/pkg/commands/json_toggle.js +13 -0
  58. package/script/pkg/commands/json_type.js +13 -0
  59. package/script/pkg/commands/lmove.js +13 -0
  60. package/script/pkg/commands/mod.js +23 -0
  61. package/script/pkg/commands/smismember.js +13 -0
  62. package/script/pkg/commands/zdiffstore.js +13 -0
  63. package/script/pkg/http.js +26 -16
  64. package/script/pkg/pipeline.js +127 -6
  65. package/script/pkg/redis.js +144 -0
  66. package/script/platforms/cloudflare.js +6 -6
  67. package/script/platforms/fastly.js +5 -0
  68. package/script/platforms/node_with_fetch.js +23 -11
  69. package/script/platforms/nodejs.js +21 -11
  70. package/script/version.js +1 -1
  71. package/types/pkg/commands/command.d.ts +5 -5
  72. package/types/pkg/commands/hdel.d.ts +1 -1
  73. package/types/pkg/commands/json_arrappend.d.ts +7 -0
  74. package/types/pkg/commands/json_arrindex.d.ts +13 -0
  75. package/types/pkg/commands/json_arrinsert.d.ts +7 -0
  76. package/types/pkg/commands/json_arrlen.d.ts +7 -0
  77. package/types/pkg/commands/json_arrpop.d.ts +7 -0
  78. package/types/pkg/commands/json_arrtrim.d.ts +7 -0
  79. package/types/pkg/commands/json_clear.d.ts +7 -0
  80. package/types/pkg/commands/json_del.d.ts +7 -0
  81. package/types/pkg/commands/json_forget.d.ts +7 -0
  82. package/types/pkg/commands/json_get.d.ts +15 -0
  83. package/types/pkg/commands/json_mget.d.ts +7 -0
  84. package/types/pkg/commands/json_numincrby.d.ts +7 -0
  85. package/types/pkg/commands/json_nummultby.d.ts +7 -0
  86. package/types/pkg/commands/json_objkeys.d.ts +7 -0
  87. package/types/pkg/commands/json_objlen.d.ts +7 -0
  88. package/types/pkg/commands/json_resp.d.ts +7 -0
  89. package/types/pkg/commands/json_set.d.ts +18 -0
  90. package/types/pkg/commands/json_strappend.d.ts +7 -0
  91. package/types/pkg/commands/json_strlen.d.ts +7 -0
  92. package/types/pkg/commands/json_toggle.d.ts +7 -0
  93. package/types/pkg/commands/json_type.d.ts +7 -0
  94. package/types/pkg/commands/lmove.d.ts +12 -0
  95. package/types/pkg/commands/mod.d.ts +23 -0
  96. package/types/pkg/commands/scan.d.ts +1 -1
  97. package/types/pkg/commands/script_flush.d.ts +1 -1
  98. package/types/pkg/commands/set.d.ts +3 -3
  99. package/types/pkg/commands/smembers.d.ts +2 -2
  100. package/types/pkg/commands/smismember.d.ts +7 -0
  101. package/types/pkg/commands/type.d.ts +1 -1
  102. package/types/pkg/commands/zadd.d.ts +3 -3
  103. package/types/pkg/commands/zdiffstore.d.ts +7 -0
  104. package/types/pkg/commands/zinterstore.d.ts +1 -1
  105. package/types/pkg/commands/zrange.d.ts +1 -1
  106. package/types/pkg/commands/zunionstore.d.ts +1 -1
  107. package/types/pkg/http.d.ts +12 -23
  108. package/types/pkg/pipeline.d.ts +239 -126
  109. package/types/pkg/redis.d.ts +116 -13
  110. package/types/pkg/types.d.ts +27 -1
  111. package/types/platforms/cloudflare.d.ts +2 -2
  112. package/types/platforms/fastly.d.ts +1 -1
  113. package/types/platforms/node_with_fetch.d.ts +1 -1
  114. package/types/platforms/nodejs.d.ts +1 -1
  115. package/types/version.d.ts +1 -1
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonMGetCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.mget
7
+ */
8
+ class JsonMGetCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.MGET", ...cmd[0], cmd[1]], opts);
11
+ }
12
+ }
13
+ exports.JsonMGetCommand = JsonMGetCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonNumIncrByCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.numincrby
7
+ */
8
+ class JsonNumIncrByCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.NUMINCRBY", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonNumIncrByCommand = JsonNumIncrByCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonNumMultByCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.nummultby
7
+ */
8
+ class JsonNumMultByCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.NUMMULTBY", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonNumMultByCommand = JsonNumMultByCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonObjKeysCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.objkeys
7
+ */
8
+ class JsonObjKeysCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.OBJKEYS", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonObjKeysCommand = JsonObjKeysCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonObjLenCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.objlen
7
+ */
8
+ class JsonObjLenCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.OBJLEN", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonObjLenCommand = JsonObjLenCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonRespCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.resp
7
+ */
8
+ class JsonRespCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.RESP", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonRespCommand = JsonRespCommand;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonSetCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.set
7
+ */
8
+ class JsonSetCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ const command = ["JSON.SET", cmd[0], cmd[1], cmd[2]];
11
+ if (cmd[3]) {
12
+ if (cmd[3].nx) {
13
+ command.push("NX");
14
+ }
15
+ else if (cmd[3].xx) {
16
+ command.push("XX");
17
+ }
18
+ }
19
+ super(command, opts);
20
+ }
21
+ }
22
+ exports.JsonSetCommand = JsonSetCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonStrAppendCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.strappend
7
+ */
8
+ class JsonStrAppendCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.STRAPPEND", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonStrAppendCommand = JsonStrAppendCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonStrLenCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.strlen
7
+ */
8
+ class JsonStrLenCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.STRLEN", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonStrLenCommand = JsonStrLenCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonToggleCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.toggle
7
+ */
8
+ class JsonToggleCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.TOGGLE", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonToggleCommand = JsonToggleCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonTypeCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.type
7
+ */
8
+ class JsonTypeCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.TYPE", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonTypeCommand = JsonTypeCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LMoveCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/lmove
7
+ */
8
+ class LMoveCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["lmove", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.LMoveCommand = LMoveCommand;
@@ -55,10 +55,32 @@ __exportStar(require("./hvals.js"), exports);
55
55
  __exportStar(require("./incr.js"), exports);
56
56
  __exportStar(require("./incrby.js"), exports);
57
57
  __exportStar(require("./incrbyfloat.js"), exports);
58
+ __exportStar(require("./json_arrappend.js"), exports);
59
+ __exportStar(require("./json_arrindex.js"), exports);
60
+ __exportStar(require("./json_arrinsert.js"), exports);
61
+ __exportStar(require("./json_arrlen.js"), exports);
62
+ __exportStar(require("./json_arrpop.js"), exports);
63
+ __exportStar(require("./json_arrtrim.js"), exports);
64
+ __exportStar(require("./json_clear.js"), exports);
65
+ __exportStar(require("./json_del.js"), exports);
66
+ __exportStar(require("./json_forget.js"), exports);
67
+ __exportStar(require("./json_get.js"), exports);
68
+ __exportStar(require("./json_mget.js"), exports);
69
+ __exportStar(require("./json_numincrby.js"), exports);
70
+ __exportStar(require("./json_nummultby.js"), exports);
71
+ __exportStar(require("./json_objkeys.js"), exports);
72
+ __exportStar(require("./json_objlen.js"), exports);
73
+ __exportStar(require("./json_resp.js"), exports);
74
+ __exportStar(require("./json_set.js"), exports);
75
+ __exportStar(require("./json_strappend.js"), exports);
76
+ __exportStar(require("./json_strlen.js"), exports);
77
+ __exportStar(require("./json_toggle.js"), exports);
78
+ __exportStar(require("./json_type.js"), exports);
58
79
  __exportStar(require("./keys.js"), exports);
59
80
  __exportStar(require("./lindex.js"), exports);
60
81
  __exportStar(require("./linsert.js"), exports);
61
82
  __exportStar(require("./llen.js"), exports);
83
+ __exportStar(require("./lmove.js"), exports);
62
84
  __exportStar(require("./lpop.js"), exports);
63
85
  __exportStar(require("./lpos.js"), exports);
64
86
  __exportStar(require("./lpush.js"), exports);
@@ -100,6 +122,7 @@ __exportStar(require("./sinter.js"), exports);
100
122
  __exportStar(require("./sinterstore.js"), exports);
101
123
  __exportStar(require("./sismember.js"), exports);
102
124
  __exportStar(require("./smembers.js"), exports);
125
+ __exportStar(require("./smismember.js"), exports);
103
126
  __exportStar(require("./smove.js"), exports);
104
127
  __exportStar(require("./spop.js"), exports);
105
128
  __exportStar(require("./srandmember.js"), exports);
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SMIsMemberCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/smismember
7
+ */
8
+ class SMIsMemberCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["smismember", cmd[0], ...cmd[1]], opts);
11
+ }
12
+ }
13
+ exports.SMIsMemberCommand = SMIsMemberCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZDiffStoreCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/zdiffstore
7
+ */
8
+ class ZDiffStoreCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["zdiffstore", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.ZDiffStoreCommand = ZDiffStoreCommand;
@@ -31,22 +31,14 @@ class HttpClient {
31
31
  this.options = {
32
32
  backend: config.options?.backend,
33
33
  agent: config.agent,
34
- responseEncoding: config.responseEncoding ?? "base64", // default to base64
34
+ responseEncoding: config.responseEncoding ?? "base64",
35
+ cache: config.cache,
35
36
  };
36
37
  this.baseUrl = config.baseUrl.replace(/\/$/, "");
37
38
  this.headers = {
38
39
  "Content-Type": "application/json",
39
40
  ...config.headers,
40
41
  };
41
- if (config.telemetry?.runtime) {
42
- this.headers["Upstash-Telemetry-Runtime"] = config.telemetry.runtime;
43
- }
44
- if (config.telemetry?.platform) {
45
- this.headers["Upstash-Telemetry-Platform"] = config.telemetry.platform;
46
- }
47
- if (config.telemetry?.sdk) {
48
- this.headers["Upstash-Telemetry-Sdk"] = config.telemetry.sdk;
49
- }
50
42
  if (this.options.responseEncoding === "base64") {
51
43
  this.headers["Upstash-Encoding"] = "base64";
52
44
  }
@@ -64,8 +56,26 @@ class HttpClient {
64
56
  };
65
57
  }
66
58
  }
59
+ mergeTelemetry(telemetry) {
60
+ function merge(obj, key, value) {
61
+ if (!value) {
62
+ return obj;
63
+ }
64
+ if (obj[key]) {
65
+ obj[key] = [obj[key], value].join(",");
66
+ }
67
+ else {
68
+ obj[key] = value;
69
+ }
70
+ return obj;
71
+ }
72
+ this.headers = merge(this.headers, "Upstash-Telemetry-Runtime", telemetry.runtime);
73
+ this.headers = merge(this.headers, "Upstash-Telemetry-Platform", telemetry.platform);
74
+ this.headers = merge(this.headers, "Upstash-Telemetry-Sdk", telemetry.sdk);
75
+ }
67
76
  async request(req) {
68
77
  const requestOptions = {
78
+ cache: this.options.cache,
69
79
  method: "POST",
70
80
  headers: this.headers,
71
81
  body: JSON.stringify(req.body),
@@ -119,12 +129,12 @@ function base64decode(b64) {
119
129
  catch {
120
130
  dec = b64;
121
131
  }
122
- try {
123
- return decodeURIComponent(dec);
124
- }
125
- catch {
126
- return dec;
127
- }
132
+ return dec;
133
+ // try {
134
+ // return decodeURIComponent(dec);
135
+ // } catch {
136
+ // return dec;
137
+ // }
128
138
  }
129
139
  function decode(raw) {
130
140
  let result = undefined;
@@ -5,6 +5,7 @@ const mod_js_1 = require("./commands/mod.js");
5
5
  const error_js_1 = require("./error.js");
6
6
  const zmscore_js_1 = require("./commands/zmscore.js");
7
7
  const hrandfield_js_1 = require("./commands/hrandfield.js");
8
+ const zdiffstore_js_1 = require("./commands/zdiffstore.js");
8
9
  /**
9
10
  * Upstash REST API supports command pipelining to send multiple commands in
10
11
  * batch, instead of sending each command one by one and waiting for a response.
@@ -33,7 +34,7 @@ const hrandfield_js_1 = require("./commands/hrandfield.js");
33
34
  * const res = await p.set("key","value").get("key").exec()
34
35
  * ```
35
36
  *
36
- * It's not possible to infer correct types with a dynamic pipeline, so you can
37
+ * Return types are inferred if all commands are chained, but you can still
37
38
  * override the response type manually:
38
39
  * ```ts
39
40
  * redis.pipeline()
@@ -74,9 +75,11 @@ class Pipeline {
74
75
  *
75
76
  * Returns an array with the results of all pipelined commands.
76
77
  *
77
- * You can define a return type manually to make working in typescript easier
78
+ * If all commands are statically chained from start to finish, types are inferred. You can still define a return type manually if necessary though:
78
79
  * ```ts
79
- * redis.pipeline().get("key").exec<[{ greeting: string }]>()
80
+ * const p = redis.pipeline()
81
+ * p.get("key")
82
+ * const result = p.exec<[{ greeting: string }]>()
80
83
  * ```
81
84
  */
82
85
  Object.defineProperty(this, "exec", {
@@ -136,6 +139,15 @@ class Pipeline {
136
139
  writable: true,
137
140
  value: (...args) => this.chain(new mod_js_1.BitPosCommand(args, this.commandOptions))
138
141
  });
142
+ /**
143
+ * @see https://redis.io/commands/zdiffstore
144
+ */
145
+ Object.defineProperty(this, "zdiffstore", {
146
+ enumerable: true,
147
+ configurable: true,
148
+ writable: true,
149
+ value: (...args) => this.chain(new zdiffstore_js_1.ZDiffStoreCommand(args, this.commandOptions))
150
+ });
139
151
  /**
140
152
  * @see https://redis.io/commands/dbsize
141
153
  */
@@ -496,6 +508,15 @@ class Pipeline {
496
508
  writable: true,
497
509
  value: (...args) => this.chain(new mod_js_1.LLenCommand(args, this.commandOptions))
498
510
  });
511
+ /**
512
+ * @see https://redis.io/commands/lmove
513
+ */
514
+ Object.defineProperty(this, "lmove", {
515
+ enumerable: true,
516
+ configurable: true,
517
+ writable: true,
518
+ value: (...args) => this.chain(new mod_js_1.LMoveCommand(args, this.commandOptions))
519
+ });
499
520
  /**
500
521
  * @see https://redis.io/commands/lpop
501
522
  */
@@ -865,6 +886,15 @@ class Pipeline {
865
886
  writable: true,
866
887
  value: (...args) => this.chain(new mod_js_1.SMembersCommand(args, this.commandOptions))
867
888
  });
889
+ /**
890
+ * @see https://redis.io/commands/smismember
891
+ */
892
+ Object.defineProperty(this, "smismember", {
893
+ enumerable: true,
894
+ configurable: true,
895
+ writable: true,
896
+ value: (key, members) => this.chain(new mod_js_1.SMIsMemberCommand([key, members], this.commandOptions))
897
+ });
868
898
  /**
869
899
  * @see https://redis.io/commands/smove
870
900
  */
@@ -1159,17 +1189,108 @@ class Pipeline {
1159
1189
  value: (...args) => this.chain(new mod_js_1.ZUnionStoreCommand(args, this.commandOptions))
1160
1190
  });
1161
1191
  this.client = opts.client;
1162
- this.commands = [];
1192
+ 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
1163
1193
  this.commandOptions = opts.commandOptions;
1164
1194
  this.multiExec = opts.multiExec ?? false;
1165
1195
  }
1166
1196
  /**
1167
- * Pushes a command into the pipelien and returns a chainable instance of the
1197
+ * Pushes a command into the pipeline and returns a chainable instance of the
1168
1198
  * pipeline
1169
1199
  */
1170
1200
  chain(command) {
1171
1201
  this.commands.push(command);
1172
- return this;
1202
+ return this; // TS thinks we're returning Pipeline<[]> here, because we're not creating a new instance of the class, hence the cast
1203
+ }
1204
+ /**
1205
+ * @see https://redis.io/commands/?group=json
1206
+ */
1207
+ get json() {
1208
+ return {
1209
+ /**
1210
+ * @see https://redis.io/commands/json.arrappend
1211
+ */
1212
+ arrappend: (...args) => this.chain(new mod_js_1.JsonArrAppendCommand(args, this.commandOptions)),
1213
+ /**
1214
+ * @see https://redis.io/commands/json.arrindex
1215
+ */
1216
+ arrindex: (...args) => this.chain(new mod_js_1.JsonArrIndexCommand(args, this.commandOptions)),
1217
+ /**
1218
+ * @see https://redis.io/commands/json.arrinsert
1219
+ */
1220
+ arrinsert: (...args) => this.chain(new mod_js_1.JsonArrInsertCommand(args, this.commandOptions)),
1221
+ /**
1222
+ * @see https://redis.io/commands/json.arrlen
1223
+ */
1224
+ arrlen: (...args) => this.chain(new mod_js_1.JsonArrLenCommand(args, this.commandOptions)),
1225
+ /**
1226
+ * @see https://redis.io/commands/json.arrpop
1227
+ */
1228
+ arrpop: (...args) => this.chain(new mod_js_1.JsonArrPopCommand(args, this.commandOptions)),
1229
+ /**
1230
+ * @see https://redis.io/commands/json.arrtrim
1231
+ */
1232
+ arrtrim: (...args) => this.chain(new mod_js_1.JsonArrTrimCommand(args, this.commandOptions)),
1233
+ /**
1234
+ * @see https://redis.io/commands/json.clear
1235
+ */
1236
+ clear: (...args) => this.chain(new mod_js_1.JsonClearCommand(args, this.commandOptions)),
1237
+ /**
1238
+ * @see https://redis.io/commands/json.del
1239
+ */
1240
+ del: (...args) => this.chain(new mod_js_1.JsonDelCommand(args, this.commandOptions)),
1241
+ /**
1242
+ * @see https://redis.io/commands/json.forget
1243
+ */
1244
+ forget: (...args) => this.chain(new mod_js_1.JsonForgetCommand(args, this.commandOptions)),
1245
+ /**
1246
+ * @see https://redis.io/commands/json.get
1247
+ */
1248
+ get: (...args) => this.chain(new mod_js_1.JsonGetCommand(args, this.commandOptions)),
1249
+ /**
1250
+ * @see https://redis.io/commands/json.mget
1251
+ */
1252
+ mget: (...args) => this.chain(new mod_js_1.JsonMGetCommand(args, this.commandOptions)),
1253
+ /**
1254
+ * @see https://redis.io/commands/json.numincrby
1255
+ */
1256
+ numincrby: (...args) => this.chain(new mod_js_1.JsonNumIncrByCommand(args, this.commandOptions)),
1257
+ /**
1258
+ * @see https://redis.io/commands/json.nummultby
1259
+ */
1260
+ nummultby: (...args) => this.chain(new mod_js_1.JsonNumMultByCommand(args, this.commandOptions)),
1261
+ /**
1262
+ * @see https://redis.io/commands/json.objkeys
1263
+ */
1264
+ objkeys: (...args) => this.chain(new mod_js_1.JsonObjKeysCommand(args, this.commandOptions)),
1265
+ /**
1266
+ * @see https://redis.io/commands/json.objlen
1267
+ */
1268
+ objlen: (...args) => this.chain(new mod_js_1.JsonObjLenCommand(args, this.commandOptions)),
1269
+ /**
1270
+ * @see https://redis.io/commands/json.resp
1271
+ */
1272
+ resp: (...args) => this.chain(new mod_js_1.JsonRespCommand(args, this.commandOptions)),
1273
+ /**
1274
+ * @see https://redis.io/commands/json.set
1275
+ */
1276
+ set: (...args) => this.chain(new mod_js_1.JsonSetCommand(args, this.commandOptions)),
1277
+ /**
1278
+ * @see https://redis.io/commands/json.strappend
1279
+ */
1280
+ strappend: (...args) => this.chain(new mod_js_1.JsonStrAppendCommand(args, this.commandOptions)),
1281
+ /**
1282
+ * @see https://redis.io/commands/json.strlen
1283
+ */
1284
+ strlen: (...args) => this.chain(new mod_js_1.JsonStrLenCommand(args, this.commandOptions)),
1285
+ /**
1286
+ * @see https://redis.io/commands/json.toggle
1287
+ */
1288
+ toggle: (...args) => this.chain(new mod_js_1.JsonToggleCommand(args, this.commandOptions)),
1289
+ /**
1290
+ * @see https://redis.io/commands/json.type
1291
+ */
1292
+ type: (...args) => this.chain(new mod_js_1.JsonTypeCommand(args, this.commandOptions)),
1293
+ };
1173
1294
  }
1174
1295
  }
1175
1296
  exports.Pipeline = Pipeline;