@upstash/redis 0.0.0-ci.bafaa360-20230119 → 0.0.0-ci.bc4f4560-20231018

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 (124) hide show
  1. package/README.md +1 -1
  2. package/esm/pkg/commands/command.js +12 -3
  3. package/esm/pkg/commands/geo_add.js +27 -0
  4. package/esm/pkg/commands/geo_hash.js +14 -0
  5. package/esm/pkg/commands/hgetall.js +9 -1
  6. package/esm/pkg/commands/json_arrappend.js +9 -0
  7. package/esm/pkg/commands/json_arrindex.js +9 -0
  8. package/esm/pkg/commands/json_arrinsert.js +9 -0
  9. package/esm/pkg/commands/json_arrlen.js +9 -0
  10. package/esm/pkg/commands/json_arrpop.js +9 -0
  11. package/esm/pkg/commands/json_arrtrim.js +12 -0
  12. package/esm/pkg/commands/json_clear.js +9 -0
  13. package/esm/pkg/commands/json_del.js +9 -0
  14. package/esm/pkg/commands/json_forget.js +9 -0
  15. package/esm/pkg/commands/json_get.js +30 -0
  16. package/esm/pkg/commands/json_mget.js +9 -0
  17. package/esm/pkg/commands/json_numincrby.js +9 -0
  18. package/esm/pkg/commands/json_nummultby.js +9 -0
  19. package/esm/pkg/commands/json_objkeys.js +9 -0
  20. package/esm/pkg/commands/json_objlen.js +9 -0
  21. package/esm/pkg/commands/json_resp.js +9 -0
  22. package/esm/pkg/commands/json_set.js +18 -0
  23. package/esm/pkg/commands/json_strappend.js +9 -0
  24. package/esm/pkg/commands/json_strlen.js +9 -0
  25. package/esm/pkg/commands/json_toggle.js +9 -0
  26. package/esm/pkg/commands/json_type.js +9 -0
  27. package/esm/pkg/commands/mod.js +27 -1
  28. package/esm/pkg/commands/set.js +1 -1
  29. package/esm/pkg/commands/xadd.js +26 -0
  30. package/esm/pkg/commands/xrange.js +36 -0
  31. package/esm/pkg/commands/zunion.js +30 -0
  32. package/esm/pkg/http.js +19 -19
  33. package/esm/pkg/pipeline.js +119 -7
  34. package/esm/pkg/redis.js +135 -1
  35. package/esm/platforms/cloudflare.js +6 -6
  36. package/esm/platforms/fastly.js +5 -0
  37. package/esm/platforms/node_with_fetch.js +10 -11
  38. package/esm/platforms/nodejs.js +13 -11
  39. package/esm/version.js +1 -1
  40. package/package.json +53 -20
  41. package/script/pkg/commands/command.js +12 -3
  42. package/script/pkg/commands/geo_add.js +31 -0
  43. package/script/pkg/commands/geo_hash.js +18 -0
  44. package/script/pkg/commands/hgetall.js +9 -1
  45. package/script/pkg/commands/json_arrappend.js +13 -0
  46. package/script/pkg/commands/json_arrindex.js +13 -0
  47. package/script/pkg/commands/json_arrinsert.js +13 -0
  48. package/script/pkg/commands/json_arrlen.js +13 -0
  49. package/script/pkg/commands/json_arrpop.js +13 -0
  50. package/script/pkg/commands/json_arrtrim.js +16 -0
  51. package/script/pkg/commands/json_clear.js +13 -0
  52. package/script/pkg/commands/json_del.js +13 -0
  53. package/script/pkg/commands/json_forget.js +13 -0
  54. package/script/pkg/commands/json_get.js +34 -0
  55. package/script/pkg/commands/json_mget.js +13 -0
  56. package/script/pkg/commands/json_numincrby.js +13 -0
  57. package/script/pkg/commands/json_nummultby.js +13 -0
  58. package/script/pkg/commands/json_objkeys.js +13 -0
  59. package/script/pkg/commands/json_objlen.js +13 -0
  60. package/script/pkg/commands/json_resp.js +13 -0
  61. package/script/pkg/commands/json_set.js +22 -0
  62. package/script/pkg/commands/json_strappend.js +13 -0
  63. package/script/pkg/commands/json_strlen.js +13 -0
  64. package/script/pkg/commands/json_toggle.js +13 -0
  65. package/script/pkg/commands/json_type.js +13 -0
  66. package/script/pkg/commands/mod.js +27 -1
  67. package/script/pkg/commands/set.js +1 -1
  68. package/script/pkg/commands/xadd.js +30 -0
  69. package/script/pkg/commands/xrange.js +40 -0
  70. package/script/pkg/commands/zunion.js +34 -0
  71. package/script/pkg/http.js +19 -19
  72. package/script/pkg/pipeline.js +118 -6
  73. package/script/pkg/redis.js +134 -0
  74. package/script/platforms/cloudflare.js +6 -6
  75. package/script/platforms/fastly.js +5 -0
  76. package/script/platforms/node_with_fetch.js +10 -11
  77. package/script/platforms/nodejs.js +13 -11
  78. package/script/version.js +1 -1
  79. package/types/pkg/commands/command.d.ts +5 -5
  80. package/types/pkg/commands/geo_add.d.ts +25 -0
  81. package/types/pkg/commands/geo_hash.d.ts +7 -0
  82. package/types/pkg/commands/hdel.d.ts +1 -1
  83. package/types/pkg/commands/json_arrappend.d.ts +7 -0
  84. package/types/pkg/commands/json_arrindex.d.ts +13 -0
  85. package/types/pkg/commands/json_arrinsert.d.ts +7 -0
  86. package/types/pkg/commands/json_arrlen.d.ts +7 -0
  87. package/types/pkg/commands/json_arrpop.d.ts +7 -0
  88. package/types/pkg/commands/json_arrtrim.d.ts +7 -0
  89. package/types/pkg/commands/json_clear.d.ts +7 -0
  90. package/types/pkg/commands/json_del.d.ts +7 -0
  91. package/types/pkg/commands/json_forget.d.ts +7 -0
  92. package/types/pkg/commands/json_get.d.ts +15 -0
  93. package/types/pkg/commands/json_mget.d.ts +7 -0
  94. package/types/pkg/commands/json_numincrby.d.ts +7 -0
  95. package/types/pkg/commands/json_nummultby.d.ts +7 -0
  96. package/types/pkg/commands/json_objkeys.d.ts +7 -0
  97. package/types/pkg/commands/json_objlen.d.ts +7 -0
  98. package/types/pkg/commands/json_resp.d.ts +7 -0
  99. package/types/pkg/commands/json_set.d.ts +18 -0
  100. package/types/pkg/commands/json_strappend.d.ts +7 -0
  101. package/types/pkg/commands/json_strlen.d.ts +7 -0
  102. package/types/pkg/commands/json_toggle.d.ts +7 -0
  103. package/types/pkg/commands/json_type.d.ts +7 -0
  104. package/types/pkg/commands/mod.d.ts +27 -1
  105. package/types/pkg/commands/scan.d.ts +1 -1
  106. package/types/pkg/commands/script_flush.d.ts +1 -1
  107. package/types/pkg/commands/set.d.ts +3 -3
  108. package/types/pkg/commands/type.d.ts +1 -1
  109. package/types/pkg/commands/xadd.d.ts +31 -0
  110. package/types/pkg/commands/xrange.d.ts +9 -0
  111. package/types/pkg/commands/zadd.d.ts +3 -3
  112. package/types/pkg/commands/zinterstore.d.ts +1 -1
  113. package/types/pkg/commands/zrange.d.ts +1 -1
  114. package/types/pkg/commands/zunion.d.ts +29 -0
  115. package/types/pkg/commands/zunionstore.d.ts +1 -1
  116. package/types/pkg/http.d.ts +14 -7
  117. package/types/pkg/pipeline.d.ts +242 -129
  118. package/types/pkg/redis.d.ts +138 -13
  119. package/types/pkg/types.d.ts +11 -2
  120. package/types/platforms/cloudflare.d.ts +2 -2
  121. package/types/platforms/fastly.d.ts +1 -1
  122. package/types/platforms/node_with_fetch.d.ts +1 -1
  123. package/types/platforms/nodejs.d.ts +1 -1
  124. package/types/version.d.ts +1 -1
@@ -11,7 +11,15 @@ function deserialize(result) {
11
11
  const key = result.shift();
12
12
  const value = result.shift();
13
13
  try {
14
- obj[key] = JSON.parse(value);
14
+ // handle unsafe integer
15
+ const valueIsNumberAndNotSafeInteger = !isNaN(Number(value)) &&
16
+ !Number.isSafeInteger(value);
17
+ if (valueIsNumberAndNotSafeInteger) {
18
+ obj[key] = value;
19
+ }
20
+ else {
21
+ obj[key] = JSON.parse(value);
22
+ }
15
23
  }
16
24
  catch {
17
25
  obj[key] = value;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonArrAppendCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.arrappend
7
+ */
8
+ class JsonArrAppendCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.ARRAPPEND", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonArrAppendCommand = JsonArrAppendCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonArrIndexCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.arrindex
7
+ */
8
+ class JsonArrIndexCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.ARRINDEX", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonArrIndexCommand = JsonArrIndexCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonArrInsertCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.arrinsert
7
+ */
8
+ class JsonArrInsertCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.ARRINSERT", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonArrInsertCommand = JsonArrInsertCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonArrLenCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.arrlen
7
+ */
8
+ class JsonArrLenCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.ARRLEN", cmd[0], cmd[1] ?? "$"], opts);
11
+ }
12
+ }
13
+ exports.JsonArrLenCommand = JsonArrLenCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonArrPopCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.arrpop
7
+ */
8
+ class JsonArrPopCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.ARRPOP", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonArrPopCommand = JsonArrPopCommand;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonArrTrimCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.arrtrim
7
+ */
8
+ class JsonArrTrimCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ const path = cmd[1] ?? "$";
11
+ const start = cmd[2] ?? 0;
12
+ const stop = cmd[3] ?? 0;
13
+ super(["JSON.ARRTRIM", cmd[0], path, start, stop], opts);
14
+ }
15
+ }
16
+ exports.JsonArrTrimCommand = JsonArrTrimCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonClearCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.clear
7
+ */
8
+ class JsonClearCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.CLEAR", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonClearCommand = JsonClearCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonDelCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.del
7
+ */
8
+ class JsonDelCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.DEL", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonDelCommand = JsonDelCommand;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonForgetCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.forget
7
+ */
8
+ class JsonForgetCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ super(["JSON.FORGET", ...cmd], opts);
11
+ }
12
+ }
13
+ exports.JsonForgetCommand = JsonForgetCommand;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonGetCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/json.get
7
+ */
8
+ class JsonGetCommand extends command_js_1.Command {
9
+ constructor(cmd, opts) {
10
+ const command = ["JSON.GET"];
11
+ if (typeof cmd[1] === "string") {
12
+ // @ts-ignore - we know this is a string
13
+ command.push(...cmd);
14
+ }
15
+ else {
16
+ command.push(cmd[0]);
17
+ if (cmd[1]) {
18
+ if (cmd[1].indent) {
19
+ command.push("INDENT", cmd[1].indent);
20
+ }
21
+ if (cmd[1].newline) {
22
+ command.push("NEWLINE", cmd[1].newline);
23
+ }
24
+ if (cmd[1].space) {
25
+ command.push("SPACE", cmd[1].space);
26
+ }
27
+ }
28
+ // @ts-ignore - we know this is a string
29
+ command.push(...cmd.slice(2));
30
+ }
31
+ super(command, opts);
32
+ }
33
+ }
34
+ exports.JsonGetCommand = JsonGetCommand;
@@ -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;
@@ -31,6 +31,8 @@ __exportStar(require("./expire.js"), exports);
31
31
  __exportStar(require("./expireat.js"), exports);
32
32
  __exportStar(require("./flushall.js"), exports);
33
33
  __exportStar(require("./flushdb.js"), exports);
34
+ __exportStar(require("./geo_add.js"), exports);
35
+ __exportStar(require("./geo_hash.js"), exports);
34
36
  __exportStar(require("./get.js"), exports);
35
37
  __exportStar(require("./getbit.js"), exports);
36
38
  __exportStar(require("./getdel.js"), exports);
@@ -39,7 +41,6 @@ __exportStar(require("./getset.js"), exports);
39
41
  __exportStar(require("./hdel.js"), exports);
40
42
  __exportStar(require("./hexists.js"), exports);
41
43
  __exportStar(require("./hget.js"), exports);
42
- __exportStar(require("./smismember.js"), exports);
43
44
  __exportStar(require("./hgetall.js"), exports);
44
45
  __exportStar(require("./hincrby.js"), exports);
45
46
  __exportStar(require("./hincrbyfloat.js"), exports);
@@ -56,6 +57,27 @@ __exportStar(require("./hvals.js"), exports);
56
57
  __exportStar(require("./incr.js"), exports);
57
58
  __exportStar(require("./incrby.js"), exports);
58
59
  __exportStar(require("./incrbyfloat.js"), exports);
60
+ __exportStar(require("./json_arrappend.js"), exports);
61
+ __exportStar(require("./json_arrindex.js"), exports);
62
+ __exportStar(require("./json_arrinsert.js"), exports);
63
+ __exportStar(require("./json_arrlen.js"), exports);
64
+ __exportStar(require("./json_arrpop.js"), exports);
65
+ __exportStar(require("./json_arrtrim.js"), exports);
66
+ __exportStar(require("./json_clear.js"), exports);
67
+ __exportStar(require("./json_del.js"), exports);
68
+ __exportStar(require("./json_forget.js"), exports);
69
+ __exportStar(require("./json_get.js"), exports);
70
+ __exportStar(require("./json_mget.js"), exports);
71
+ __exportStar(require("./json_numincrby.js"), exports);
72
+ __exportStar(require("./json_nummultby.js"), exports);
73
+ __exportStar(require("./json_objkeys.js"), exports);
74
+ __exportStar(require("./json_objlen.js"), exports);
75
+ __exportStar(require("./json_resp.js"), exports);
76
+ __exportStar(require("./json_set.js"), exports);
77
+ __exportStar(require("./json_strappend.js"), exports);
78
+ __exportStar(require("./json_strlen.js"), exports);
79
+ __exportStar(require("./json_toggle.js"), exports);
80
+ __exportStar(require("./json_type.js"), exports);
59
81
  __exportStar(require("./keys.js"), exports);
60
82
  __exportStar(require("./lindex.js"), exports);
61
83
  __exportStar(require("./linsert.js"), exports);
@@ -102,6 +124,7 @@ __exportStar(require("./sinter.js"), exports);
102
124
  __exportStar(require("./sinterstore.js"), exports);
103
125
  __exportStar(require("./sismember.js"), exports);
104
126
  __exportStar(require("./smembers.js"), exports);
127
+ __exportStar(require("./smismember.js"), exports);
105
128
  __exportStar(require("./smove.js"), exports);
106
129
  __exportStar(require("./spop.js"), exports);
107
130
  __exportStar(require("./srandmember.js"), exports);
@@ -132,4 +155,7 @@ __exportStar(require("./zremrangebyscore.js"), exports);
132
155
  __exportStar(require("./zrevrank.js"), exports);
133
156
  __exportStar(require("./zscan.js"), exports);
134
157
  __exportStar(require("./zscore.js"), exports);
158
+ __exportStar(require("./zunion.js"), exports);
135
159
  __exportStar(require("./zunionstore.js"), exports);
160
+ __exportStar(require("./xadd.js"), exports);
161
+ __exportStar(require("./xrange.js"), exports);
@@ -31,7 +31,7 @@ class SetCommand extends command_js_1.Command {
31
31
  command.push("pxat", opts.pxat);
32
32
  }
33
33
  else if ("keepTtl" in opts && opts.keepTtl) {
34
- command.push("keepTtl", opts.keepTtl);
34
+ command.push("keepTtl");
35
35
  }
36
36
  }
37
37
  super(command, cmdOpts);
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XAddCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/xadd
7
+ */
8
+ class XAddCommand extends command_js_1.Command {
9
+ constructor([key, id, entries, opts], commandOptions) {
10
+ const command = ["XADD", key];
11
+ if (opts) {
12
+ if (opts.nomkStream) {
13
+ command.push("NOMKSTREAM");
14
+ }
15
+ if (opts.trim) {
16
+ command.push(opts.trim.type, opts.trim.comparison, opts.trim.threshold);
17
+ if (typeof opts.trim.limit !== "undefined") {
18
+ command.push("LIMIT", opts.trim.limit);
19
+ }
20
+ }
21
+ }
22
+ command.push(id);
23
+ // entries
24
+ Object.entries(entries).forEach(([k, v]) => {
25
+ command.push(k, v);
26
+ });
27
+ super(command, commandOptions);
28
+ }
29
+ }
30
+ exports.XAddCommand = XAddCommand;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XRangeCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ function deserialize(result) {
6
+ const obj = {};
7
+ for (const e of result) {
8
+ while (e.length >= 2) {
9
+ const streamId = e.shift();
10
+ const entries = e.shift();
11
+ if (!(streamId in obj)) {
12
+ obj[streamId] = {};
13
+ }
14
+ while (entries.length >= 2) {
15
+ const field = entries.shift();
16
+ const value = entries.shift();
17
+ try {
18
+ obj[streamId][field] = JSON.parse(value);
19
+ }
20
+ catch {
21
+ obj[streamId][field] = value;
22
+ }
23
+ }
24
+ }
25
+ }
26
+ return obj;
27
+ }
28
+ class XRangeCommand extends command_js_1.Command {
29
+ constructor([key, start, end, count], opts) {
30
+ const command = ["XRANGE", key, start, end];
31
+ if (typeof count === "number") {
32
+ command.push("COUNT", count);
33
+ }
34
+ super(command, {
35
+ deserialize: (result) => deserialize(result),
36
+ ...opts,
37
+ });
38
+ }
39
+ }
40
+ exports.XRangeCommand = XRangeCommand;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZUnionCommand = void 0;
4
+ const command_js_1 = require("./command.js");
5
+ /**
6
+ * @see https://redis.io/commands/zunion
7
+ */
8
+ class ZUnionCommand extends command_js_1.Command {
9
+ constructor([numKeys, keyOrKeys, opts], cmdOpts) {
10
+ const command = ["zunion", numKeys];
11
+ if (Array.isArray(keyOrKeys)) {
12
+ command.push(...keyOrKeys);
13
+ }
14
+ else {
15
+ command.push(keyOrKeys);
16
+ }
17
+ if (opts) {
18
+ if ("weights" in opts && opts.weights) {
19
+ command.push("weights", ...opts.weights);
20
+ }
21
+ else if ("weight" in opts && typeof opts.weight === "number") {
22
+ command.push("weights", opts.weight);
23
+ }
24
+ if ("aggregate" in opts) {
25
+ command.push("aggregate", opts.aggregate);
26
+ }
27
+ if (opts?.withScores) {
28
+ command.push("withscores");
29
+ }
30
+ }
31
+ super(command, cmdOpts);
32
+ }
33
+ }
34
+ exports.ZUnionCommand = ZUnionCommand;
@@ -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
  }
@@ -83,6 +75,7 @@ class HttpClient {
83
75
  }
84
76
  async request(req) {
85
77
  const requestOptions = {
78
+ cache: this.options.cache,
86
79
  method: "POST",
87
80
  headers: this.headers,
88
81
  body: JSON.stringify(req.body),
@@ -110,10 +103,17 @@ class HttpClient {
110
103
  }
111
104
  const body = (await res.json());
112
105
  if (!res.ok) {
113
- throw new error_js_1.UpstashError(body.error);
106
+ throw new error_js_1.UpstashError(`${body.error}, command was: ${JSON.stringify(req.body)}`);
114
107
  }
115
108
  if (this.options?.responseEncoding === "base64") {
116
- return Array.isArray(body) ? body.map(decode) : decode(body);
109
+ if (Array.isArray(body)) {
110
+ return body.map(({ result, error }) => ({
111
+ result: decode(result),
112
+ error,
113
+ }));
114
+ }
115
+ const result = decode(body.result);
116
+ return { result, error: body.error };
117
117
  }
118
118
  return body;
119
119
  }
@@ -145,19 +145,19 @@ function base64decode(b64) {
145
145
  }
146
146
  function decode(raw) {
147
147
  let result = undefined;
148
- switch (typeof raw.result) {
148
+ switch (typeof raw) {
149
149
  case "undefined":
150
150
  return raw;
151
151
  case "number": {
152
- result = raw.result;
152
+ result = raw;
153
153
  break;
154
154
  }
155
155
  case "object": {
156
- if (Array.isArray(raw.result)) {
157
- result = raw.result.map((v) => typeof v === "string"
156
+ if (Array.isArray(raw)) {
157
+ result = raw.map((v) => typeof v === "string"
158
158
  ? base64decode(v)
159
159
  : Array.isArray(v)
160
- ? v.map(base64decode)
160
+ ? v.map(decode)
161
161
  : v);
162
162
  }
163
163
  else {
@@ -168,11 +168,11 @@ function decode(raw) {
168
168
  break;
169
169
  }
170
170
  case "string": {
171
- result = raw.result === "OK" ? "OK" : base64decode(raw.result);
171
+ result = raw === "OK" ? "OK" : base64decode(raw);
172
172
  break;
173
173
  }
174
174
  default:
175
175
  break;
176
176
  }
177
- return { result, error: raw.error };
177
+ return result;
178
178
  }