@upstash/redis 0.0.0-ci.ec2c4106-20221122 → 0.0.0-ci.ed40a9ac-20230414

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 (119) hide show
  1. package/README.md +9 -2
  2. package/esm/pkg/commands/command.js +12 -3
  3. package/esm/pkg/commands/hgetall.js +0 -4
  4. package/esm/pkg/commands/hrandfield.js +39 -0
  5. package/esm/pkg/commands/json_arrappend.js +9 -0
  6. package/esm/pkg/commands/json_arrindex.js +9 -0
  7. package/esm/pkg/commands/json_arrinsert.js +9 -0
  8. package/esm/pkg/commands/json_arrlen.js +9 -0
  9. package/esm/pkg/commands/json_arrpop.js +9 -0
  10. package/esm/pkg/commands/json_arrtrim.js +12 -0
  11. package/esm/pkg/commands/json_clear.js +9 -0
  12. package/esm/pkg/commands/json_del.js +9 -0
  13. package/esm/pkg/commands/json_forget.js +9 -0
  14. package/esm/pkg/commands/json_get.js +30 -0
  15. package/esm/pkg/commands/json_mget.js +9 -0
  16. package/esm/pkg/commands/json_numincrby.js +9 -0
  17. package/esm/pkg/commands/json_nummultby.js +9 -0
  18. package/esm/pkg/commands/json_objkeys.js +9 -0
  19. package/esm/pkg/commands/json_objlen.js +9 -0
  20. package/esm/pkg/commands/json_resp.js +9 -0
  21. package/esm/pkg/commands/json_set.js +18 -0
  22. package/esm/pkg/commands/json_strappend.js +9 -0
  23. package/esm/pkg/commands/json_strlen.js +9 -0
  24. package/esm/pkg/commands/json_toggle.js +9 -0
  25. package/esm/pkg/commands/json_type.js +9 -0
  26. package/esm/pkg/commands/lmove.js +9 -0
  27. package/esm/pkg/commands/mod.js +25 -1
  28. package/esm/pkg/commands/smismember.js +9 -0
  29. package/esm/pkg/commands/zdiffstore.js +9 -0
  30. package/esm/pkg/http.js +27 -18
  31. package/esm/pkg/pipeline.js +131 -1
  32. package/esm/pkg/redis.js +155 -1
  33. package/esm/platforms/cloudflare.js +6 -6
  34. package/esm/platforms/fastly.js +5 -0
  35. package/esm/platforms/node_with_fetch.js +23 -11
  36. package/esm/platforms/nodejs.js +19 -11
  37. package/esm/version.js +1 -1
  38. package/package.json +41 -16
  39. package/script/pkg/commands/command.js +12 -3
  40. package/script/pkg/commands/hgetall.js +0 -4
  41. package/script/pkg/commands/hrandfield.js +43 -0
  42. package/script/pkg/commands/json_arrappend.js +13 -0
  43. package/script/pkg/commands/json_arrindex.js +13 -0
  44. package/script/pkg/commands/json_arrinsert.js +13 -0
  45. package/script/pkg/commands/json_arrlen.js +13 -0
  46. package/script/pkg/commands/json_arrpop.js +13 -0
  47. package/script/pkg/commands/json_arrtrim.js +16 -0
  48. package/script/pkg/commands/json_clear.js +13 -0
  49. package/script/pkg/commands/json_del.js +13 -0
  50. package/script/pkg/commands/json_forget.js +13 -0
  51. package/script/pkg/commands/json_get.js +34 -0
  52. package/script/pkg/commands/json_mget.js +13 -0
  53. package/script/pkg/commands/json_numincrby.js +13 -0
  54. package/script/pkg/commands/json_nummultby.js +13 -0
  55. package/script/pkg/commands/json_objkeys.js +13 -0
  56. package/script/pkg/commands/json_objlen.js +13 -0
  57. package/script/pkg/commands/json_resp.js +13 -0
  58. package/script/pkg/commands/json_set.js +22 -0
  59. package/script/pkg/commands/json_strappend.js +13 -0
  60. package/script/pkg/commands/json_strlen.js +13 -0
  61. package/script/pkg/commands/json_toggle.js +13 -0
  62. package/script/pkg/commands/json_type.js +13 -0
  63. package/script/pkg/commands/lmove.js +13 -0
  64. package/script/pkg/commands/mod.js +25 -1
  65. package/script/pkg/commands/smismember.js +13 -0
  66. package/script/pkg/commands/zdiffstore.js +13 -0
  67. package/script/pkg/http.js +27 -18
  68. package/script/pkg/pipeline.js +130 -0
  69. package/script/pkg/redis.js +154 -0
  70. package/script/platforms/cloudflare.js +6 -6
  71. package/script/platforms/fastly.js +5 -0
  72. package/script/platforms/node_with_fetch.js +23 -11
  73. package/script/platforms/nodejs.js +19 -11
  74. package/script/version.js +1 -1
  75. package/types/pkg/commands/command.d.ts +5 -5
  76. package/types/pkg/commands/hrandfield.d.ts +9 -0
  77. package/types/pkg/commands/json_arrappend.d.ts +7 -0
  78. package/types/pkg/commands/json_arrindex.d.ts +13 -0
  79. package/types/pkg/commands/json_arrinsert.d.ts +7 -0
  80. package/types/pkg/commands/json_arrlen.d.ts +7 -0
  81. package/types/pkg/commands/json_arrpop.d.ts +7 -0
  82. package/types/pkg/commands/json_arrtrim.d.ts +7 -0
  83. package/types/pkg/commands/json_clear.d.ts +7 -0
  84. package/types/pkg/commands/json_del.d.ts +7 -0
  85. package/types/pkg/commands/json_forget.d.ts +7 -0
  86. package/types/pkg/commands/json_get.d.ts +15 -0
  87. package/types/pkg/commands/json_mget.d.ts +7 -0
  88. package/types/pkg/commands/json_numincrby.d.ts +7 -0
  89. package/types/pkg/commands/json_nummultby.d.ts +7 -0
  90. package/types/pkg/commands/json_objkeys.d.ts +7 -0
  91. package/types/pkg/commands/json_objlen.d.ts +7 -0
  92. package/types/pkg/commands/json_resp.d.ts +7 -0
  93. package/types/pkg/commands/json_set.d.ts +18 -0
  94. package/types/pkg/commands/json_strappend.d.ts +7 -0
  95. package/types/pkg/commands/json_strlen.d.ts +7 -0
  96. package/types/pkg/commands/json_toggle.d.ts +7 -0
  97. package/types/pkg/commands/json_type.d.ts +7 -0
  98. package/types/pkg/commands/lmove.d.ts +12 -0
  99. package/types/pkg/commands/mod.d.ts +25 -1
  100. package/types/pkg/commands/scan.d.ts +1 -1
  101. package/types/pkg/commands/script_flush.d.ts +1 -1
  102. package/types/pkg/commands/set.d.ts +1 -1
  103. package/types/pkg/commands/smembers.d.ts +2 -2
  104. package/types/pkg/commands/smismember.d.ts +7 -0
  105. package/types/pkg/commands/type.d.ts +1 -1
  106. package/types/pkg/commands/zadd.d.ts +3 -3
  107. package/types/pkg/commands/zdiffstore.d.ts +7 -0
  108. package/types/pkg/commands/zinterstore.d.ts +1 -1
  109. package/types/pkg/commands/zrange.d.ts +1 -1
  110. package/types/pkg/commands/zunionstore.d.ts +1 -1
  111. package/types/pkg/http.d.ts +13 -24
  112. package/types/pkg/pipeline.d.ts +44 -2
  113. package/types/pkg/redis.d.ts +120 -10
  114. package/types/pkg/types.d.ts +27 -1
  115. package/types/platforms/cloudflare.d.ts +2 -2
  116. package/types/platforms/fastly.d.ts +1 -1
  117. package/types/platforms/node_with_fetch.d.ts +1 -1
  118. package/types/platforms/nodejs.d.ts +1 -1
  119. package/types/version.d.ts +1 -1
@@ -4,6 +4,8 @@ exports.Pipeline = void 0;
4
4
  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
+ const hrandfield_js_1 = require("./commands/hrandfield.js");
8
+ const zdiffstore_js_1 = require("./commands/zdiffstore.js");
7
9
  /**
8
10
  * Upstash REST API supports command pipelining to send multiple commands in
9
11
  * batch, instead of sending each command one by one and waiting for a response.
@@ -135,6 +137,15 @@ class Pipeline {
135
137
  writable: true,
136
138
  value: (...args) => this.chain(new mod_js_1.BitPosCommand(args, this.commandOptions))
137
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 zdiffstore_js_1.ZDiffStoreCommand(args, this.commandOptions))
148
+ });
138
149
  /**
139
150
  * @see https://redis.io/commands/dbsize
140
151
  */
@@ -378,6 +389,15 @@ class Pipeline {
378
389
  writable: true,
379
390
  value: (key, kv) => this.chain(new mod_js_1.HMSetCommand([key, kv], this.commandOptions))
380
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 hrandfield_js_1.HRandFieldCommand([key, count, withValues], this.commandOptions))
400
+ });
381
401
  /**
382
402
  * @see https://redis.io/commands/hscan
383
403
  */
@@ -486,6 +506,15 @@ class Pipeline {
486
506
  writable: true,
487
507
  value: (...args) => this.chain(new mod_js_1.LLenCommand(args, this.commandOptions))
488
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 mod_js_1.LMoveCommand(args, this.commandOptions))
517
+ });
489
518
  /**
490
519
  * @see https://redis.io/commands/lpop
491
520
  */
@@ -855,6 +884,15 @@ class Pipeline {
855
884
  writable: true,
856
885
  value: (...args) => this.chain(new mod_js_1.SMembersCommand(args, this.commandOptions))
857
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 mod_js_1.SMIsMemberCommand([key, members], this.commandOptions))
895
+ });
858
896
  /**
859
897
  * @see https://redis.io/commands/smove
860
898
  */
@@ -1161,5 +1199,97 @@ class Pipeline {
1161
1199
  this.commands.push(command);
1162
1200
  return this;
1163
1201
  }
1202
+ /**
1203
+ * @see https://redis.io/commands/?group=json
1204
+ */
1205
+ get json() {
1206
+ // For some reason we needed to define the types manually, otherwise Deno wouldn't build it
1207
+ return {
1208
+ /**
1209
+ * @see https://redis.io/commands/json.arrappend
1210
+ */
1211
+ arrappend: (...args) => this.chain(new mod_js_1.JsonArrAppendCommand(args, this.commandOptions)),
1212
+ /**
1213
+ * @see https://redis.io/commands/json.arrindex
1214
+ */
1215
+ arrindex: (...args) => this.chain(new mod_js_1.JsonArrIndexCommand(args, this.commandOptions)),
1216
+ /**
1217
+ * @see https://redis.io/commands/json.arrinsert
1218
+ */
1219
+ arrinsert: (...args) => this.chain(new mod_js_1.JsonArrInsertCommand(args, this.commandOptions)),
1220
+ /**
1221
+ * @see https://redis.io/commands/json.arrlen
1222
+ */
1223
+ arrlen: (...args) => this.chain(new mod_js_1.JsonArrLenCommand(args, this.commandOptions)),
1224
+ /**
1225
+ * @see https://redis.io/commands/json.arrpop
1226
+ */
1227
+ arrpop: (...args) => this.chain(new mod_js_1.JsonArrPopCommand(args, this.commandOptions)),
1228
+ /**
1229
+ * @see https://redis.io/commands/json.arrtrim
1230
+ */
1231
+ arrtrim: (...args) => this.chain(new mod_js_1.JsonArrTrimCommand(args, this.commandOptions)),
1232
+ /**
1233
+ * @see https://redis.io/commands/json.clear
1234
+ */
1235
+ clear: (...args) => this.chain(new mod_js_1.JsonClearCommand(args, this.commandOptions)),
1236
+ /**
1237
+ * @see https://redis.io/commands/json.del
1238
+ */
1239
+ del: (...args) => this.chain(new mod_js_1.JsonDelCommand(args, this.commandOptions)),
1240
+ /**
1241
+ * @see https://redis.io/commands/json.forget
1242
+ */
1243
+ forget: (...args) => this.chain(new mod_js_1.JsonForgetCommand(args, this.commandOptions)),
1244
+ /**
1245
+ * @see https://redis.io/commands/json.get
1246
+ */
1247
+ get: (...args) => this.chain(new mod_js_1.JsonGetCommand(args, this.commandOptions)),
1248
+ /**
1249
+ * @see https://redis.io/commands/json.mget
1250
+ */
1251
+ mget: (...args) => this.chain(new mod_js_1.JsonMGetCommand(args, this.commandOptions)),
1252
+ /**
1253
+ * @see https://redis.io/commands/json.numincrby
1254
+ */
1255
+ numincrby: (...args) => this.chain(new mod_js_1.JsonNumIncrByCommand(args, this.commandOptions)),
1256
+ /**
1257
+ * @see https://redis.io/commands/json.nummultby
1258
+ */
1259
+ nummultby: (...args) => this.chain(new mod_js_1.JsonNumMultByCommand(args, this.commandOptions)),
1260
+ /**
1261
+ * @see https://redis.io/commands/json.objkeys
1262
+ */
1263
+ objkeys: (...args) => this.chain(new mod_js_1.JsonObjKeysCommand(args, this.commandOptions)),
1264
+ /**
1265
+ * @see https://redis.io/commands/json.objlen
1266
+ */
1267
+ objlen: (...args) => this.chain(new mod_js_1.JsonObjLenCommand(args, this.commandOptions)),
1268
+ /**
1269
+ * @see https://redis.io/commands/json.resp
1270
+ */
1271
+ resp: (...args) => this.chain(new mod_js_1.JsonRespCommand(args, this.commandOptions)),
1272
+ /**
1273
+ * @see https://redis.io/commands/json.set
1274
+ */
1275
+ set: (...args) => this.chain(new mod_js_1.JsonSetCommand(args, this.commandOptions)),
1276
+ /**
1277
+ * @see https://redis.io/commands/json.strappend
1278
+ */
1279
+ strappend: (...args) => this.chain(new mod_js_1.JsonStrAppendCommand(args, this.commandOptions)),
1280
+ /**
1281
+ * @see https://redis.io/commands/json.strlen
1282
+ */
1283
+ strlen: (...args) => this.chain(new mod_js_1.JsonStrLenCommand(args, this.commandOptions)),
1284
+ /**
1285
+ * @see https://redis.io/commands/json.toggle
1286
+ */
1287
+ toggle: (...args) => this.chain(new mod_js_1.JsonToggleCommand(args, this.commandOptions)),
1288
+ /**
1289
+ * @see https://redis.io/commands/json.type
1290
+ */
1291
+ type: (...args) => this.chain(new mod_js_1.JsonTypeCommand(args, this.commandOptions)),
1292
+ };
1293
+ }
1164
1294
  }
1165
1295
  exports.Pipeline = Pipeline;
@@ -5,6 +5,7 @@ const mod_js_1 = require("./commands/mod.js");
5
5
  const pipeline_js_1 = require("./pipeline.js");
6
6
  const script_js_1 = require("./script.js");
7
7
  const zmscore_js_1 = require("./commands/zmscore.js");
8
+ const zdiffstore_js_1 = require("./commands/zdiffstore.js");
8
9
  /**
9
10
  * Serverless redis client for upstash.
10
11
  */
@@ -33,6 +34,12 @@ class Redis {
33
34
  writable: true,
34
35
  value: void 0
35
36
  });
37
+ Object.defineProperty(this, "enableTelemetry", {
38
+ enumerable: true,
39
+ configurable: true,
40
+ writable: true,
41
+ value: void 0
42
+ });
36
43
  /**
37
44
  * Wrap a new middleware around the HTTP client.
38
45
  */
@@ -45,6 +52,27 @@ class Redis {
45
52
  this.client.request = (req) => middleware(req, makeRequest);
46
53
  }
47
54
  });
55
+ /**
56
+ * Technically this is not private, we can hide it from intellisense by doing this
57
+ */
58
+ Object.defineProperty(this, "addTelemetry", {
59
+ enumerable: true,
60
+ configurable: true,
61
+ writable: true,
62
+ value: (telemetry) => {
63
+ if (!this.enableTelemetry) {
64
+ return;
65
+ }
66
+ try {
67
+ // @ts-ignore - The `Requester` interface does not know about this method but it will be there
68
+ // as long as the user uses the standard HttpClient
69
+ this.client.mergeTelemetry(telemetry);
70
+ }
71
+ catch {
72
+ // ignore
73
+ }
74
+ }
75
+ });
48
76
  /**
49
77
  * Create a new pipeline that allows you to send requests in bulk.
50
78
  *
@@ -358,6 +386,16 @@ class Redis {
358
386
  writable: true,
359
387
  value: (key, kv) => new mod_js_1.HMSetCommand([key, kv], this.opts).exec(this.client)
360
388
  });
389
+ /**
390
+ * @see https://redis.io/commands/hrandfield
391
+ */
392
+ Object.defineProperty(this, "hrandfield", {
393
+ enumerable: true,
394
+ configurable: true,
395
+ writable: true,
396
+ value: (key, count, withValues) => new mod_js_1.HRandFieldCommand([key, count, withValues], this.opts)
397
+ .exec(this.client)
398
+ });
361
399
  /**
362
400
  * @see https://redis.io/commands/hscan
363
401
  */
@@ -466,6 +504,15 @@ class Redis {
466
504
  writable: true,
467
505
  value: (...args) => new mod_js_1.LLenCommand(args, this.opts).exec(this.client)
468
506
  });
507
+ /**
508
+ * @see https://redis.io/commands/lmove
509
+ */
510
+ Object.defineProperty(this, "lmove", {
511
+ enumerable: true,
512
+ configurable: true,
513
+ writable: true,
514
+ value: (...args) => new mod_js_1.LMoveCommand(args, this.opts).exec(this.client)
515
+ });
469
516
  /**
470
517
  * @see https://redis.io/commands/lpop
471
518
  */
@@ -826,6 +873,15 @@ class Redis {
826
873
  writable: true,
827
874
  value: (key, member) => new mod_js_1.SIsMemberCommand([key, member], this.opts).exec(this.client)
828
875
  });
876
+ /**
877
+ * @see https://redis.io/commands/smismember
878
+ */
879
+ Object.defineProperty(this, "smismember", {
880
+ enumerable: true,
881
+ configurable: true,
882
+ writable: true,
883
+ value: (key, members) => new mod_js_1.SMIsMemberCommand([key, members], this.opts).exec(this.client)
884
+ });
829
885
  /**
830
886
  * @see https://redis.io/commands/smembers
831
887
  */
@@ -984,6 +1040,15 @@ class Redis {
984
1040
  writable: true,
985
1041
  value: (...args) => new mod_js_1.ZCountCommand(args, this.opts).exec(this.client)
986
1042
  });
1043
+ /**
1044
+ * @see https://redis.io/commands/zdiffstore
1045
+ */
1046
+ Object.defineProperty(this, "zdiffstore", {
1047
+ enumerable: true,
1048
+ configurable: true,
1049
+ writable: true,
1050
+ value: (...args) => new zdiffstore_js_1.ZDiffStoreCommand(args, this.opts).exec(this.client)
1051
+ });
987
1052
  /**
988
1053
  * @see https://redis.io/commands/zincrby
989
1054
  */
@@ -1130,6 +1195,95 @@ class Redis {
1130
1195
  });
1131
1196
  this.client = client;
1132
1197
  this.opts = opts;
1198
+ this.enableTelemetry = opts?.enableTelemetry ?? true;
1199
+ }
1200
+ get json() {
1201
+ return {
1202
+ /**
1203
+ * @see https://redis.io/commands/json.arrappend
1204
+ */
1205
+ arrappend: (...args) => new mod_js_1.JsonArrAppendCommand(args, this.opts).exec(this.client),
1206
+ /**
1207
+ * @see https://redis.io/commands/json.arrindex
1208
+ */
1209
+ arrindex: (...args) => new mod_js_1.JsonArrIndexCommand(args, this.opts).exec(this.client),
1210
+ /**
1211
+ * @see https://redis.io/commands/json.arrinsert
1212
+ */
1213
+ arrinsert: (...args) => new mod_js_1.JsonArrInsertCommand(args, this.opts).exec(this.client),
1214
+ /**
1215
+ * @see https://redis.io/commands/json.arrlen
1216
+ */
1217
+ arrlen: (...args) => new mod_js_1.JsonArrLenCommand(args, this.opts).exec(this.client),
1218
+ /**
1219
+ * @see https://redis.io/commands/json.arrpop
1220
+ */
1221
+ arrpop: (...args) => new mod_js_1.JsonArrPopCommand(args, this.opts).exec(this.client),
1222
+ /**
1223
+ * @see https://redis.io/commands/json.arrtrim
1224
+ */
1225
+ arrtrim: (...args) => new mod_js_1.JsonArrTrimCommand(args, this.opts).exec(this.client),
1226
+ /**
1227
+ * @see https://redis.io/commands/json.clear
1228
+ */
1229
+ clear: (...args) => new mod_js_1.JsonClearCommand(args, this.opts).exec(this.client),
1230
+ /**
1231
+ * @see https://redis.io/commands/json.del
1232
+ */
1233
+ del: (...args) => new mod_js_1.JsonDelCommand(args, this.opts).exec(this.client),
1234
+ /**
1235
+ * @see https://redis.io/commands/json.forget
1236
+ */
1237
+ forget: (...args) => new mod_js_1.JsonForgetCommand(args, this.opts).exec(this.client),
1238
+ /**
1239
+ * @see https://redis.io/commands/json.get
1240
+ */
1241
+ get: (...args) => new mod_js_1.JsonGetCommand(args, this.opts).exec(this.client),
1242
+ /**
1243
+ * @see https://redis.io/commands/json.mget
1244
+ */
1245
+ mget: (...args) => new mod_js_1.JsonMGetCommand(args, this.opts).exec(this.client),
1246
+ /**
1247
+ * @see https://redis.io/commands/json.numincrby
1248
+ */
1249
+ numincrby: (...args) => new mod_js_1.JsonNumIncrByCommand(args, this.opts).exec(this.client),
1250
+ /**
1251
+ * @see https://redis.io/commands/json.nummultby
1252
+ */
1253
+ nummultby: (...args) => new mod_js_1.JsonNumMultByCommand(args, this.opts).exec(this.client),
1254
+ /**
1255
+ * @see https://redis.io/commands/json.objkeys
1256
+ */
1257
+ objkeys: (...args) => new mod_js_1.JsonObjKeysCommand(args, this.opts).exec(this.client),
1258
+ /**
1259
+ * @see https://redis.io/commands/json.objlen
1260
+ */
1261
+ objlen: (...args) => new mod_js_1.JsonObjLenCommand(args, this.opts).exec(this.client),
1262
+ /**
1263
+ * @see https://redis.io/commands/json.resp
1264
+ */
1265
+ resp: (...args) => new mod_js_1.JsonRespCommand(args, this.opts).exec(this.client),
1266
+ /**
1267
+ * @see https://redis.io/commands/json.set
1268
+ */
1269
+ set: (...args) => new mod_js_1.JsonSetCommand(args, this.opts).exec(this.client),
1270
+ /**
1271
+ * @see https://redis.io/commands/json.strappend
1272
+ */
1273
+ strappend: (...args) => new mod_js_1.JsonStrAppendCommand(args, this.opts).exec(this.client),
1274
+ /**
1275
+ * @see https://redis.io/commands/json.strlen
1276
+ */
1277
+ strlen: (...args) => new mod_js_1.JsonStrLenCommand(args, this.opts).exec(this.client),
1278
+ /**
1279
+ * @see https://redis.io/commands/json.toggle
1280
+ */
1281
+ toggle: (...args) => new mod_js_1.JsonToggleCommand(args, this.opts).exec(this.client),
1282
+ /**
1283
+ * @see https://redis.io/commands/json.type
1284
+ */
1285
+ type: (...args) => new mod_js_1.JsonTypeCommand(args, this.opts).exec(this.client),
1286
+ };
1133
1287
  }
1134
1288
  createScript(script) {
1135
1289
  return new script_js_1.Script(this, script);
@@ -53,21 +53,21 @@ class Redis extends core.Redis {
53
53
  /\r|\n/.test(config.token)) {
54
54
  console.warn("The redis token contains whitespace or newline, which can cause errors!");
55
55
  }
56
- const telemetry = {};
57
- if (!env?.UPSTASH_DISABLE_TELEMETRY) {
58
- telemetry.platform = "cloudflare";
59
- telemetry.sdk = `@upstash/redis@${version_js_1.VERSION}`;
60
- }
61
56
  const client = new http_js_1.HttpClient({
62
57
  retry: config.retry,
63
58
  baseUrl: config.url,
64
59
  headers: { authorization: `Bearer ${config.token}` },
65
60
  responseEncoding: config.responseEncoding,
66
- telemetry,
67
61
  });
68
62
  super(client, {
63
+ enableTelemetry: !env?.UPSTASH_DISABLE_TELEMETRY,
69
64
  automaticDeserialization: config.automaticDeserialization,
70
65
  });
66
+ // This is only added of the user has not disabled telemetry
67
+ this.addTelemetry({
68
+ platform: "cloudflare",
69
+ sdk: `@upstash/redis@${version_js_1.VERSION}`,
70
+ });
71
71
  }
72
72
  /*
73
73
  * Create a new Upstash Redis instance from environment variables on cloudflare.
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Redis = void 0;
27
27
  const core = __importStar(require("../pkg/redis.js"));
28
28
  const http_js_1 = require("../pkg/http.js");
29
+ const version_js_1 = require("../version.js");
29
30
  /**
30
31
  * Serverless redis client for upstash.
31
32
  */
@@ -63,6 +64,10 @@ class Redis extends core.Redis {
63
64
  super(client, {
64
65
  automaticDeserialization: config.automaticDeserialization,
65
66
  });
67
+ this.addTelemetry({
68
+ sdk: `@upstash/redis@${version_js_1.VERSION}`,
69
+ platform: "fastly",
70
+ });
66
71
  }
67
72
  }
68
73
  exports.Redis = Redis;
@@ -29,6 +29,19 @@ const core = __importStar(require("../pkg/redis.js"));
29
29
  const http_js_1 = require("../pkg/http.js");
30
30
  const version_js_1 = require("../version.js");
31
31
  require("isomorphic-fetch");
32
+ // @ts-ignore Deno can't compile
33
+ // import https from "https";
34
+ // @ts-ignore Deno can't compile
35
+ // import http from "http";
36
+ // import "isomorphic-fetch";
37
+ /**
38
+ * Workaround for nodejs 14, where atob is not included in the standardlib
39
+ */
40
+ if (typeof atob === "undefined") {
41
+ global.atob = function (b64) {
42
+ return Buffer.from(b64, "base64").toString("utf-8");
43
+ };
44
+ }
32
45
  /**
33
46
  * Serverless redis client for upstash.
34
47
  */
@@ -48,26 +61,25 @@ class Redis extends core.Redis {
48
61
  /\r|\n/.test(configOrRequester.token)) {
49
62
  console.warn("The redis token contains whitespace or newline, which can cause errors!");
50
63
  }
51
- const telemetry = {};
52
- if (!process.env.UPSTASH_DISABLE_TELEMETRY) {
53
- telemetry.runtime = `node@${process.version}`;
54
- telemetry.platform = process.env.VERCEL
55
- ? "vercel"
56
- : process.env.AWS_REGION
57
- ? "aws"
58
- : "unknown";
59
- telemetry.sdk = `@upstash/redis@${version_js_1.VERSION}`;
60
- }
61
64
  const client = new http_js_1.HttpClient({
62
65
  baseUrl: configOrRequester.url,
63
66
  retry: configOrRequester.retry,
64
67
  headers: { authorization: `Bearer ${configOrRequester.token}` },
65
68
  // agent: configOrRequester.agent,
66
69
  responseEncoding: configOrRequester.responseEncoding,
67
- telemetry,
68
70
  });
69
71
  super(client, {
70
72
  automaticDeserialization: configOrRequester.automaticDeserialization,
73
+ enableTelemetry: !process.env.UPSTASH_DISABLE_TELEMETRY,
74
+ });
75
+ this.addTelemetry({
76
+ runtime: `node@${process.version}`,
77
+ platform: process.env.VERCEL
78
+ ? "vercel"
79
+ : process.env.AWS_REGION
80
+ ? "aws"
81
+ : "unknown",
82
+ sdk: `@upstash/redis@${version_js_1.VERSION}`,
71
83
  });
72
84
  }
73
85
  /**
@@ -28,6 +28,14 @@ exports.Redis = void 0;
28
28
  const core = __importStar(require("../pkg/redis.js"));
29
29
  const http_js_1 = require("../pkg/http.js");
30
30
  const version_js_1 = require("../version.js");
31
+ /**
32
+ * Workaround for nodejs 14, where atob is not included in the standardlib
33
+ */
34
+ if (typeof atob === "undefined") {
35
+ global.atob = function (b64) {
36
+ return Buffer.from(b64, "base64").toString("utf-8");
37
+ };
38
+ }
31
39
  /**
32
40
  * Serverless redis client for upstash.
33
41
  */
@@ -47,26 +55,26 @@ class Redis extends core.Redis {
47
55
  /\r|\n/.test(configOrRequester.token)) {
48
56
  console.warn("The redis token contains whitespace or newline, which can cause errors!");
49
57
  }
50
- const telemetry = {};
51
- if (!process.env.UPSTASH_DISABLE_TELEMETRY) {
52
- telemetry.runtime = `node@${process.version}`;
53
- telemetry.platform = process.env.VERCEL
54
- ? "vercel"
55
- : process.env.AWS_REGION
56
- ? "aws"
57
- : "unknown";
58
- telemetry.sdk = `@upstash/redis@${version_js_1.VERSION}`;
59
- }
60
58
  const client = new http_js_1.HttpClient({
61
59
  baseUrl: configOrRequester.url,
62
60
  retry: configOrRequester.retry,
63
61
  headers: { authorization: `Bearer ${configOrRequester.token}` },
64
62
  agent: configOrRequester.agent,
65
63
  responseEncoding: configOrRequester.responseEncoding,
66
- telemetry,
64
+ cache: "no-store",
67
65
  });
68
66
  super(client, {
69
67
  automaticDeserialization: configOrRequester.automaticDeserialization,
68
+ enableTelemetry: !process.env.UPSTASH_DISABLE_TELEMETRY,
69
+ });
70
+ this.addTelemetry({
71
+ runtime: `node@${process.version}`,
72
+ platform: process.env.VERCEL
73
+ ? "vercel"
74
+ : process.env.AWS_REGION
75
+ ? "aws"
76
+ : "unknown",
77
+ sdk: `@upstash/redis@${version_js_1.VERSION}`,
70
78
  });
71
79
  }
72
80
  /**
package/script/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "v0.0.0-ci.ec2c4106-20221122";
4
+ exports.VERSION = "v0.0.0-ci.ed40a9ac-20230414";
@@ -1,7 +1,7 @@
1
1
  import { Requester } from "../http.js";
2
- declare type Serialize = (data: unknown) => string;
3
- declare type Deserialize<TResult, TData> = (result: TResult) => TData;
4
- export declare type CommandOptions<TResult, TData> = {
2
+ type Serialize = (data: unknown) => string | number | boolean;
3
+ type Deserialize<TResult, TData> = (result: TResult) => TData;
4
+ export type CommandOptions<TResult, TData> = {
5
5
  /**
6
6
  * Custom deserializer
7
7
  */
@@ -20,7 +20,7 @@ export declare type CommandOptions<TResult, TData> = {
20
20
  * TResult is the raw data returned from upstash, which may need to be transformed or parsed.
21
21
  */
22
22
  export declare class Command<TResult, TData> {
23
- readonly command: string[];
23
+ readonly command: (string | number | boolean)[];
24
24
  readonly serialize: Serialize;
25
25
  readonly deserialize: Deserialize<TResult, TData>;
26
26
  /**
@@ -28,7 +28,7 @@ export declare class Command<TResult, TData> {
28
28
  *
29
29
  * You can define a custom `deserialize` function. By default we try to deserialize as json.
30
30
  */
31
- constructor(command: (string | unknown)[], opts?: CommandOptions<TResult, TData>);
31
+ constructor(command: (string | boolean | number | unknown)[], opts?: CommandOptions<TResult, TData>);
32
32
  /**
33
33
  * Execute the command using a client.
34
34
  */
@@ -0,0 +1,9 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/hrandfield
4
+ */
5
+ export declare class HRandFieldCommand<TData extends string | string[] | Record<string, unknown>> extends Command<string | string[], TData> {
6
+ constructor(cmd: [key: string], opts?: CommandOptions<string, string>);
7
+ constructor(cmd: [key: string, count: number], opts?: CommandOptions<string[], string[]>);
8
+ constructor(cmd: [key: string, count: number, withValues: boolean], opts?: CommandOptions<string[], Partial<TData>>);
9
+ }
@@ -0,0 +1,7 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/json.arrappend
4
+ */
5
+ export declare class JsonArrAppendCommand<TData extends unknown[]> extends Command<(null | string)[], (null | number)[]> {
6
+ constructor(cmd: [key: string, path: string, ...values: TData], opts?: CommandOptions<(null | string)[], (null | number)[]>);
7
+ }
@@ -0,0 +1,13 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/json.arrindex
4
+ */
5
+ export declare class JsonArrIndexCommand<TValue extends unknown> extends Command<(null | string)[], (null | number)[]> {
6
+ constructor(cmd: [
7
+ key: string,
8
+ path: string,
9
+ value: TValue,
10
+ start?: number,
11
+ stop?: number
12
+ ], opts?: CommandOptions<(null | string)[], (null | number)[]>);
13
+ }
@@ -0,0 +1,7 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/json.arrinsert
4
+ */
5
+ export declare class JsonArrInsertCommand<TData extends unknown[]> extends Command<(null | string)[], (null | number)[]> {
6
+ constructor(cmd: [key: string, path: string, index: number, ...values: TData], opts?: CommandOptions<(null | string)[], (null | number)[]>);
7
+ }
@@ -0,0 +1,7 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/json.arrlen
4
+ */
5
+ export declare class JsonArrLenCommand<TValue extends unknown> extends Command<(null | string)[], (null | number)[]> {
6
+ constructor(cmd: [key: string, path?: string], opts?: CommandOptions<(null | string)[], (null | number)[]>);
7
+ }
@@ -0,0 +1,7 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/json.arrpop
4
+ */
5
+ export declare class JsonArrPopCommand<TData extends unknown> extends Command<(null | string)[], (TData | null)[]> {
6
+ constructor(cmd: [key: string, path?: string, index?: number], opts?: CommandOptions<(null | string)[], (TData | null)[]>);
7
+ }
@@ -0,0 +1,7 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/json.arrtrim
4
+ */
5
+ export declare class JsonArrTrimCommand extends Command<(null | string)[], (null | number)[]> {
6
+ constructor(cmd: [key: string, path?: string, start?: number, stop?: number], opts?: CommandOptions<(null | string)[], (null | number)[]>);
7
+ }
@@ -0,0 +1,7 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/json.clear
4
+ */
5
+ export declare class JsonClearCommand extends Command<number, number> {
6
+ constructor(cmd: [key: string, path?: string], opts?: CommandOptions<number, number>);
7
+ }
@@ -0,0 +1,7 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/json.del
4
+ */
5
+ export declare class JsonDelCommand extends Command<number, number> {
6
+ constructor(cmd: [key: string, path?: string], opts?: CommandOptions<number, number>);
7
+ }
@@ -0,0 +1,7 @@
1
+ import { Command, CommandOptions } from "./command.js";
2
+ /**
3
+ * @see https://redis.io/commands/json.forget
4
+ */
5
+ export declare class JsonForgetCommand extends Command<number, number> {
6
+ constructor(cmd: [key: string, path?: string], opts?: CommandOptions<number, number>);
7
+ }