@upstash/redis 0.0.0-ci.d96841bb → 0.0.0-ci.dc584c15-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.
- package/README.md +42 -278
- package/esm/deps/deno.land/x/base64@v0.2.1/base.js +100 -0
- package/esm/deps/deno.land/x/base64@v0.2.1/base64url.js +9 -0
- package/esm/deps/deno.land/x/sha1@v1.0.3/deps.js +1 -0
- package/esm/deps/deno.land/x/sha1@v1.0.3/mod.js +191 -0
- package/esm/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.js +50 -0
- package/esm/pkg/commands/command.js +12 -3
- package/esm/pkg/commands/getdel.js +9 -0
- package/esm/pkg/commands/hgetall.js +0 -4
- package/esm/pkg/commands/hrandfield.js +39 -0
- package/esm/pkg/commands/json_arrappend.js +9 -0
- package/esm/pkg/commands/json_arrindex.js +9 -0
- package/esm/pkg/commands/json_arrinsert.js +9 -0
- package/esm/pkg/commands/json_arrlen.js +9 -0
- package/esm/pkg/commands/json_arrpop.js +9 -0
- package/esm/pkg/commands/json_arrtrim.js +12 -0
- package/esm/pkg/commands/json_clear.js +9 -0
- package/esm/pkg/commands/json_del.js +9 -0
- package/esm/pkg/commands/json_forget.js +9 -0
- package/esm/pkg/commands/json_get.js +30 -0
- package/esm/pkg/commands/json_mget.js +9 -0
- package/esm/pkg/commands/json_numincrby.js +9 -0
- package/esm/pkg/commands/json_nummultby.js +9 -0
- package/esm/pkg/commands/json_objkeys.js +9 -0
- package/esm/pkg/commands/json_objlen.js +9 -0
- package/esm/pkg/commands/json_resp.js +9 -0
- package/esm/pkg/commands/json_set.js +18 -0
- package/esm/pkg/commands/json_strappend.js +9 -0
- package/esm/pkg/commands/json_strlen.js +9 -0
- package/esm/pkg/commands/json_toggle.js +9 -0
- package/esm/pkg/commands/json_type.js +9 -0
- package/esm/pkg/commands/lmove.js +9 -0
- package/esm/pkg/commands/lpos.js +19 -0
- package/esm/pkg/commands/mod.js +28 -0
- package/esm/pkg/commands/scan.js +3 -0
- package/esm/pkg/commands/sdiffstore.js +1 -1
- package/esm/pkg/commands/set.js +16 -4
- package/esm/pkg/commands/smismember.js +9 -0
- package/esm/pkg/commands/xadd.js +26 -0
- package/esm/pkg/commands/xrange.js +37 -0
- package/esm/pkg/commands/zdiffstore.js +9 -0
- package/esm/pkg/commands/zmscore.js +10 -0
- package/esm/pkg/commands/zrange.js +6 -0
- package/esm/pkg/http.js +100 -3
- package/esm/pkg/pipeline.js +180 -12
- package/esm/pkg/redis.js +240 -2
- package/esm/pkg/script.js +77 -0
- package/esm/platforms/cloudflare.js +10 -2
- package/esm/platforms/fastly.js +6 -0
- package/esm/platforms/node_with_fetch.js +26 -1
- package/esm/platforms/nodejs.js +24 -1
- package/esm/version.js +1 -0
- package/package.json +53 -58
- package/script/deps/deno.land/x/base64@v0.2.1/base.js +104 -0
- package/script/deps/deno.land/x/base64@v0.2.1/base64url.js +13 -0
- package/script/deps/deno.land/x/sha1@v1.0.3/deps.js +6 -0
- package/script/deps/deno.land/x/sha1@v1.0.3/mod.js +196 -0
- package/script/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.js +55 -0
- package/script/pkg/commands/command.js +12 -3
- package/script/pkg/commands/getdel.js +13 -0
- package/script/pkg/commands/hgetall.js +0 -4
- package/script/pkg/commands/hrandfield.js +43 -0
- package/script/pkg/commands/json_arrappend.js +13 -0
- package/script/pkg/commands/json_arrindex.js +13 -0
- package/script/pkg/commands/json_arrinsert.js +13 -0
- package/script/pkg/commands/json_arrlen.js +13 -0
- package/script/pkg/commands/json_arrpop.js +13 -0
- package/script/pkg/commands/json_arrtrim.js +16 -0
- package/script/pkg/commands/json_clear.js +13 -0
- package/script/pkg/commands/json_del.js +13 -0
- package/script/pkg/commands/json_forget.js +13 -0
- package/script/pkg/commands/json_get.js +34 -0
- package/script/pkg/commands/json_mget.js +13 -0
- package/script/pkg/commands/json_numincrby.js +13 -0
- package/script/pkg/commands/json_nummultby.js +13 -0
- package/script/pkg/commands/json_objkeys.js +13 -0
- package/script/pkg/commands/json_objlen.js +13 -0
- package/script/pkg/commands/json_resp.js +13 -0
- package/script/pkg/commands/json_set.js +22 -0
- package/script/pkg/commands/json_strappend.js +13 -0
- package/script/pkg/commands/json_strlen.js +13 -0
- package/script/pkg/commands/json_toggle.js +13 -0
- package/script/pkg/commands/json_type.js +13 -0
- package/script/pkg/commands/lmove.js +13 -0
- package/script/pkg/commands/lpos.js +23 -0
- package/script/pkg/commands/mod.js +28 -0
- package/script/pkg/commands/scan.js +3 -0
- package/script/pkg/commands/sdiffstore.js +1 -1
- package/script/pkg/commands/set.js +16 -4
- package/script/pkg/commands/smismember.js +13 -0
- package/script/pkg/commands/xadd.js +30 -0
- package/script/pkg/commands/xrange.js +41 -0
- package/script/pkg/commands/zdiffstore.js +13 -0
- package/script/pkg/commands/zmscore.js +14 -0
- package/script/pkg/commands/zrange.js +6 -0
- package/script/pkg/http.js +100 -3
- package/script/pkg/pipeline.js +179 -11
- package/script/pkg/redis.js +239 -1
- package/script/pkg/script.js +81 -0
- package/script/platforms/cloudflare.js +10 -2
- package/script/platforms/fastly.js +6 -0
- package/script/platforms/node_with_fetch.js +26 -1
- package/script/platforms/nodejs.js +24 -1
- package/script/version.js +4 -0
- package/types/deps/deno.land/x/base64@v0.2.1/base.d.ts +5 -0
- package/types/deps/deno.land/x/base64@v0.2.1/base64url.d.ts +1 -0
- package/types/deps/deno.land/x/sha1@v1.0.3/deps.d.ts +1 -0
- package/types/deps/deno.land/x/sha1@v1.0.3/mod.d.ts +26 -0
- package/types/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.d.ts +3 -0
- package/types/pkg/commands/bitop.d.ts +0 -1
- package/types/pkg/commands/bitpos.d.ts +1 -1
- package/types/pkg/commands/command.d.ts +5 -5
- package/types/pkg/commands/getdel.d.ts +7 -0
- package/types/pkg/commands/hdel.d.ts +1 -1
- package/types/pkg/commands/hrandfield.d.ts +9 -0
- package/types/pkg/commands/json_arrappend.d.ts +7 -0
- package/types/pkg/commands/json_arrindex.d.ts +13 -0
- package/types/pkg/commands/json_arrinsert.d.ts +7 -0
- package/types/pkg/commands/json_arrlen.d.ts +7 -0
- package/types/pkg/commands/json_arrpop.d.ts +7 -0
- package/types/pkg/commands/json_arrtrim.d.ts +7 -0
- package/types/pkg/commands/json_clear.d.ts +7 -0
- package/types/pkg/commands/json_del.d.ts +7 -0
- package/types/pkg/commands/json_forget.d.ts +7 -0
- package/types/pkg/commands/json_get.d.ts +15 -0
- package/types/pkg/commands/json_mget.d.ts +7 -0
- package/types/pkg/commands/json_numincrby.d.ts +7 -0
- package/types/pkg/commands/json_nummultby.d.ts +7 -0
- package/types/pkg/commands/json_objkeys.d.ts +7 -0
- package/types/pkg/commands/json_objlen.d.ts +7 -0
- package/types/pkg/commands/json_resp.d.ts +7 -0
- package/types/pkg/commands/json_set.d.ts +18 -0
- package/types/pkg/commands/json_strappend.d.ts +7 -0
- package/types/pkg/commands/json_strlen.d.ts +7 -0
- package/types/pkg/commands/json_toggle.d.ts +7 -0
- package/types/pkg/commands/json_type.d.ts +7 -0
- package/types/pkg/commands/lmove.d.ts +12 -0
- package/types/pkg/commands/lpop.d.ts +1 -1
- package/types/pkg/commands/lpos.d.ts +15 -0
- package/types/pkg/commands/mget.d.ts +1 -1
- package/types/pkg/commands/mod.d.ts +28 -0
- package/types/pkg/commands/rpop.d.ts +2 -2
- package/types/pkg/commands/scan.d.ts +2 -1
- package/types/pkg/commands/script_flush.d.ts +1 -1
- package/types/pkg/commands/sdiffstore.d.ts +1 -1
- package/types/pkg/commands/set.d.ts +31 -2
- package/types/pkg/commands/smembers.d.ts +2 -2
- package/types/pkg/commands/smismember.d.ts +7 -0
- package/types/pkg/commands/spop.d.ts +2 -2
- package/types/pkg/commands/type.d.ts +1 -1
- package/types/pkg/commands/xadd.d.ts +31 -0
- package/types/pkg/commands/xrange.d.ts +9 -0
- package/types/pkg/commands/zadd.d.ts +4 -4
- package/types/pkg/commands/zdiffstore.d.ts +7 -0
- package/types/pkg/commands/zinterstore.d.ts +1 -1
- package/types/pkg/commands/zmscore.d.ts +7 -0
- package/types/pkg/commands/zrange.d.ts +8 -1
- package/types/pkg/commands/zunionstore.d.ts +1 -1
- package/types/pkg/http.d.ts +48 -7
- package/types/pkg/pipeline.d.ts +262 -124
- package/types/pkg/redis.d.ts +187 -19
- package/types/pkg/script.d.ts +42 -0
- package/types/pkg/types.d.ts +27 -1
- package/types/platforms/cloudflare.d.ts +9 -8
- package/types/platforms/fastly.d.ts +3 -7
- package/types/platforms/node_with_fetch.d.ts +3 -22
- package/types/platforms/nodejs.d.ts +4 -7
- package/types/version.d.ts +1 -0
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(
|
|
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,15 @@ 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).exec(this.client)
|
|
394
|
+
});
|
|
312
395
|
/**
|
|
313
396
|
* @see https://redis.io/commands/hscan
|
|
314
397
|
*/
|
|
@@ -417,6 +500,15 @@ export class Redis {
|
|
|
417
500
|
writable: true,
|
|
418
501
|
value: (...args) => new LLenCommand(args, this.opts).exec(this.client)
|
|
419
502
|
});
|
|
503
|
+
/**
|
|
504
|
+
* @see https://redis.io/commands/lmove
|
|
505
|
+
*/
|
|
506
|
+
Object.defineProperty(this, "lmove", {
|
|
507
|
+
enumerable: true,
|
|
508
|
+
configurable: true,
|
|
509
|
+
writable: true,
|
|
510
|
+
value: (...args) => new LMoveCommand(args, this.opts).exec(this.client)
|
|
511
|
+
});
|
|
420
512
|
/**
|
|
421
513
|
* @see https://redis.io/commands/lpop
|
|
422
514
|
*/
|
|
@@ -426,6 +518,15 @@ export class Redis {
|
|
|
426
518
|
writable: true,
|
|
427
519
|
value: (...args) => new LPopCommand(args, this.opts).exec(this.client)
|
|
428
520
|
});
|
|
521
|
+
/**
|
|
522
|
+
* @see https://redis.io/commands/lpos
|
|
523
|
+
*/
|
|
524
|
+
Object.defineProperty(this, "lpos", {
|
|
525
|
+
enumerable: true,
|
|
526
|
+
configurable: true,
|
|
527
|
+
writable: true,
|
|
528
|
+
value: (...args) => new LPosCommand(args, this.opts).exec(this.client)
|
|
529
|
+
});
|
|
429
530
|
/**
|
|
430
531
|
* @see https://redis.io/commands/lpush
|
|
431
532
|
*/
|
|
@@ -768,6 +869,15 @@ export class Redis {
|
|
|
768
869
|
writable: true,
|
|
769
870
|
value: (key, member) => new SIsMemberCommand([key, member], this.opts).exec(this.client)
|
|
770
871
|
});
|
|
872
|
+
/**
|
|
873
|
+
* @see https://redis.io/commands/smismember
|
|
874
|
+
*/
|
|
875
|
+
Object.defineProperty(this, "smismember", {
|
|
876
|
+
enumerable: true,
|
|
877
|
+
configurable: true,
|
|
878
|
+
writable: true,
|
|
879
|
+
value: (key, members) => new SMIsMemberCommand([key, members], this.opts).exec(this.client)
|
|
880
|
+
});
|
|
771
881
|
/**
|
|
772
882
|
* @see https://redis.io/commands/smembers
|
|
773
883
|
*/
|
|
@@ -894,6 +1004,24 @@ export class Redis {
|
|
|
894
1004
|
writable: true,
|
|
895
1005
|
value: (...args) => new UnlinkCommand(args, this.opts).exec(this.client)
|
|
896
1006
|
});
|
|
1007
|
+
/**
|
|
1008
|
+
* @see https://redis.io/commands/xadd
|
|
1009
|
+
*/
|
|
1010
|
+
Object.defineProperty(this, "xadd", {
|
|
1011
|
+
enumerable: true,
|
|
1012
|
+
configurable: true,
|
|
1013
|
+
writable: true,
|
|
1014
|
+
value: (...args) => new XAddCommand(args, this.opts).exec(this.client)
|
|
1015
|
+
});
|
|
1016
|
+
/**
|
|
1017
|
+
* @see https://redis.io/commands/xrange
|
|
1018
|
+
*/
|
|
1019
|
+
Object.defineProperty(this, "xrange", {
|
|
1020
|
+
enumerable: true,
|
|
1021
|
+
configurable: true,
|
|
1022
|
+
writable: true,
|
|
1023
|
+
value: (...args) => new XRangeCommand(args, this.opts).exec(this.client)
|
|
1024
|
+
});
|
|
897
1025
|
/**
|
|
898
1026
|
* @see https://redis.io/commands/zadd
|
|
899
1027
|
*/
|
|
@@ -926,6 +1054,15 @@ export class Redis {
|
|
|
926
1054
|
writable: true,
|
|
927
1055
|
value: (...args) => new ZCountCommand(args, this.opts).exec(this.client)
|
|
928
1056
|
});
|
|
1057
|
+
/**
|
|
1058
|
+
* @see https://redis.io/commands/zdiffstore
|
|
1059
|
+
*/
|
|
1060
|
+
Object.defineProperty(this, "zdiffstore", {
|
|
1061
|
+
enumerable: true,
|
|
1062
|
+
configurable: true,
|
|
1063
|
+
writable: true,
|
|
1064
|
+
value: (...args) => new ZDiffStoreCommand(args, this.opts).exec(this.client)
|
|
1065
|
+
});
|
|
929
1066
|
/**
|
|
930
1067
|
* @see https://redis.io/commands/zincrby
|
|
931
1068
|
*/
|
|
@@ -953,6 +1090,15 @@ export class Redis {
|
|
|
953
1090
|
writable: true,
|
|
954
1091
|
value: (...args) => new ZLexCountCommand(args, this.opts).exec(this.client)
|
|
955
1092
|
});
|
|
1093
|
+
/**
|
|
1094
|
+
* @see https://redis.io/commands/zmscore
|
|
1095
|
+
*/
|
|
1096
|
+
Object.defineProperty(this, "zmscore", {
|
|
1097
|
+
enumerable: true,
|
|
1098
|
+
configurable: true,
|
|
1099
|
+
writable: true,
|
|
1100
|
+
value: (...args) => new ZMScoreCommand(args, this.opts).exec(this.client)
|
|
1101
|
+
});
|
|
956
1102
|
/**
|
|
957
1103
|
* @see https://redis.io/commands/zpopmax
|
|
958
1104
|
*/
|
|
@@ -1063,5 +1209,97 @@ export class Redis {
|
|
|
1063
1209
|
});
|
|
1064
1210
|
this.client = client;
|
|
1065
1211
|
this.opts = opts;
|
|
1212
|
+
this.enableTelemetry = opts?.enableTelemetry ?? true;
|
|
1213
|
+
}
|
|
1214
|
+
get json() {
|
|
1215
|
+
return {
|
|
1216
|
+
/**
|
|
1217
|
+
* @see https://redis.io/commands/json.arrappend
|
|
1218
|
+
*/
|
|
1219
|
+
arrappend: (...args) => new JsonArrAppendCommand(args, this.opts).exec(this.client),
|
|
1220
|
+
/**
|
|
1221
|
+
* @see https://redis.io/commands/json.arrindex
|
|
1222
|
+
*/
|
|
1223
|
+
arrindex: (...args) => new JsonArrIndexCommand(args, this.opts).exec(this.client),
|
|
1224
|
+
/**
|
|
1225
|
+
* @see https://redis.io/commands/json.arrinsert
|
|
1226
|
+
*/
|
|
1227
|
+
arrinsert: (...args) => new JsonArrInsertCommand(args, this.opts).exec(this.client),
|
|
1228
|
+
/**
|
|
1229
|
+
* @see https://redis.io/commands/json.arrlen
|
|
1230
|
+
*/
|
|
1231
|
+
arrlen: (...args) => new JsonArrLenCommand(args, this.opts).exec(this.client),
|
|
1232
|
+
/**
|
|
1233
|
+
* @see https://redis.io/commands/json.arrpop
|
|
1234
|
+
*/
|
|
1235
|
+
arrpop: (...args) => new JsonArrPopCommand(args, this.opts).exec(this.client),
|
|
1236
|
+
/**
|
|
1237
|
+
* @see https://redis.io/commands/json.arrtrim
|
|
1238
|
+
*/
|
|
1239
|
+
arrtrim: (...args) => new JsonArrTrimCommand(args, this.opts).exec(this.client),
|
|
1240
|
+
/**
|
|
1241
|
+
* @see https://redis.io/commands/json.clear
|
|
1242
|
+
*/
|
|
1243
|
+
clear: (...args) => new JsonClearCommand(args, this.opts).exec(this.client),
|
|
1244
|
+
/**
|
|
1245
|
+
* @see https://redis.io/commands/json.del
|
|
1246
|
+
*/
|
|
1247
|
+
del: (...args) => new JsonDelCommand(args, this.opts).exec(this.client),
|
|
1248
|
+
/**
|
|
1249
|
+
* @see https://redis.io/commands/json.forget
|
|
1250
|
+
*/
|
|
1251
|
+
forget: (...args) => new JsonForgetCommand(args, this.opts).exec(this.client),
|
|
1252
|
+
/**
|
|
1253
|
+
* @see https://redis.io/commands/json.get
|
|
1254
|
+
*/
|
|
1255
|
+
get: (...args) => new JsonGetCommand(args, this.opts).exec(this.client),
|
|
1256
|
+
/**
|
|
1257
|
+
* @see https://redis.io/commands/json.mget
|
|
1258
|
+
*/
|
|
1259
|
+
mget: (...args) => new JsonMGetCommand(args, this.opts).exec(this.client),
|
|
1260
|
+
/**
|
|
1261
|
+
* @see https://redis.io/commands/json.numincrby
|
|
1262
|
+
*/
|
|
1263
|
+
numincrby: (...args) => new JsonNumIncrByCommand(args, this.opts).exec(this.client),
|
|
1264
|
+
/**
|
|
1265
|
+
* @see https://redis.io/commands/json.nummultby
|
|
1266
|
+
*/
|
|
1267
|
+
nummultby: (...args) => new JsonNumMultByCommand(args, this.opts).exec(this.client),
|
|
1268
|
+
/**
|
|
1269
|
+
* @see https://redis.io/commands/json.objkeys
|
|
1270
|
+
*/
|
|
1271
|
+
objkeys: (...args) => new JsonObjKeysCommand(args, this.opts).exec(this.client),
|
|
1272
|
+
/**
|
|
1273
|
+
* @see https://redis.io/commands/json.objlen
|
|
1274
|
+
*/
|
|
1275
|
+
objlen: (...args) => new JsonObjLenCommand(args, this.opts).exec(this.client),
|
|
1276
|
+
/**
|
|
1277
|
+
* @see https://redis.io/commands/json.resp
|
|
1278
|
+
*/
|
|
1279
|
+
resp: (...args) => new JsonRespCommand(args, this.opts).exec(this.client),
|
|
1280
|
+
/**
|
|
1281
|
+
* @see https://redis.io/commands/json.set
|
|
1282
|
+
*/
|
|
1283
|
+
set: (...args) => new JsonSetCommand(args, this.opts).exec(this.client),
|
|
1284
|
+
/**
|
|
1285
|
+
* @see https://redis.io/commands/json.strappend
|
|
1286
|
+
*/
|
|
1287
|
+
strappend: (...args) => new JsonStrAppendCommand(args, this.opts).exec(this.client),
|
|
1288
|
+
/**
|
|
1289
|
+
* @see https://redis.io/commands/json.strlen
|
|
1290
|
+
*/
|
|
1291
|
+
strlen: (...args) => new JsonStrLenCommand(args, this.opts).exec(this.client),
|
|
1292
|
+
/**
|
|
1293
|
+
* @see https://redis.io/commands/json.toggle
|
|
1294
|
+
*/
|
|
1295
|
+
toggle: (...args) => new JsonToggleCommand(args, this.opts).exec(this.client),
|
|
1296
|
+
/**
|
|
1297
|
+
* @see https://redis.io/commands/json.type
|
|
1298
|
+
*/
|
|
1299
|
+
type: (...args) => new JsonTypeCommand(args, this.opts).exec(this.client),
|
|
1300
|
+
};
|
|
1301
|
+
}
|
|
1302
|
+
createScript(script) {
|
|
1303
|
+
return new Script(this, script);
|
|
1066
1304
|
}
|
|
1067
1305
|
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { sha1 as digest } from "../deps/deno.land/x/sha1@v1.0.3/mod.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a new script.
|
|
4
|
+
*
|
|
5
|
+
* Scripts offer the ability to optimistically try to execute a script without having to send the
|
|
6
|
+
* entire script to the server. If the script is loaded on the server, it tries again by sending
|
|
7
|
+
* the entire script. Afterwards, the script is cached on the server.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const redis = new Redis({...})
|
|
12
|
+
*
|
|
13
|
+
* const script = redis.createScript<string>("return ARGV[1];")
|
|
14
|
+
* const arg1 = await script.eval([], ["Hello World"])
|
|
15
|
+
* assertEquals(arg1, "Hello World")
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export class Script {
|
|
19
|
+
constructor(redis, script) {
|
|
20
|
+
Object.defineProperty(this, "script", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
value: void 0
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(this, "sha1", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true,
|
|
30
|
+
value: void 0
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(this, "redis", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true,
|
|
35
|
+
writable: true,
|
|
36
|
+
value: void 0
|
|
37
|
+
});
|
|
38
|
+
this.redis = redis;
|
|
39
|
+
this.sha1 = this.digest(script);
|
|
40
|
+
this.script = script;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Send an `EVAL` command to redis.
|
|
44
|
+
*/
|
|
45
|
+
async eval(keys, args) {
|
|
46
|
+
return await this.redis.eval(this.script, keys, args);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Calculates the sha1 hash of the script and then calls `EVALSHA`.
|
|
50
|
+
*/
|
|
51
|
+
async evalsha(keys, args) {
|
|
52
|
+
return await this.redis.evalsha(this.sha1, keys, args);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Optimistically try to run `EVALSHA` first.
|
|
56
|
+
* If the script is not loaded in redis, it will fall back and try again with `EVAL`.
|
|
57
|
+
*
|
|
58
|
+
* Following calls will be able to use the cached script
|
|
59
|
+
*/
|
|
60
|
+
async exec(keys, args) {
|
|
61
|
+
const res = await this.redis.evalsha(this.sha1, keys, args).catch(async (err) => {
|
|
62
|
+
if (err instanceof Error &&
|
|
63
|
+
err.message.toLowerCase().includes("noscript")) {
|
|
64
|
+
return await this.redis.eval(this.script, keys, args);
|
|
65
|
+
}
|
|
66
|
+
throw err;
|
|
67
|
+
});
|
|
68
|
+
return res;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Compute the sha1 hash of the script and return its hex representation.
|
|
72
|
+
*/
|
|
73
|
+
digest(s) {
|
|
74
|
+
const hash = digest(s, "utf8", "hex");
|
|
75
|
+
return typeof hash === "string" ? hash : new TextDecoder().decode(hash);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as core from "../pkg/redis.js";
|
|
2
2
|
import { HttpClient } from "../pkg/http.js";
|
|
3
|
+
import { VERSION } from "../version.js";
|
|
3
4
|
/**
|
|
4
5
|
* Serverless redis client for upstash.
|
|
5
6
|
*/
|
|
@@ -15,7 +16,7 @@ export class Redis extends core.Redis {
|
|
|
15
16
|
* });
|
|
16
17
|
* ```
|
|
17
18
|
*/
|
|
18
|
-
constructor(config) {
|
|
19
|
+
constructor(config, env) {
|
|
19
20
|
if (config.url.startsWith(" ") ||
|
|
20
21
|
config.url.endsWith(" ") ||
|
|
21
22
|
/\r|\n/.test(config.url)) {
|
|
@@ -30,10 +31,17 @@ export class Redis extends core.Redis {
|
|
|
30
31
|
retry: config.retry,
|
|
31
32
|
baseUrl: config.url,
|
|
32
33
|
headers: { authorization: `Bearer ${config.token}` },
|
|
34
|
+
responseEncoding: config.responseEncoding,
|
|
33
35
|
});
|
|
34
36
|
super(client, {
|
|
37
|
+
enableTelemetry: !env?.UPSTASH_DISABLE_TELEMETRY,
|
|
35
38
|
automaticDeserialization: config.automaticDeserialization,
|
|
36
39
|
});
|
|
40
|
+
// This is only added of the user has not disabled telemetry
|
|
41
|
+
this.addTelemetry({
|
|
42
|
+
platform: "cloudflare",
|
|
43
|
+
sdk: `@upstash/redis@${VERSION}`,
|
|
44
|
+
});
|
|
37
45
|
}
|
|
38
46
|
/*
|
|
39
47
|
* Create a new Upstash Redis instance from environment variables on cloudflare.
|
|
@@ -57,6 +65,6 @@ export class Redis extends core.Redis {
|
|
|
57
65
|
if (!token) {
|
|
58
66
|
throw new Error("Unable to find environment variable: `UPSTASH_REDIS_REST_TOKEN`. Please add it via `wrangler secret put UPSTASH_REDIS_REST_TOKEN`");
|
|
59
67
|
}
|
|
60
|
-
return new Redis({ ...opts, url, token });
|
|
68
|
+
return new Redis({ ...opts, url, token }, env);
|
|
61
69
|
}
|
|
62
70
|
}
|
package/esm/platforms/fastly.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as core from "../pkg/redis.js";
|
|
2
2
|
import { HttpClient } from "../pkg/http.js";
|
|
3
|
+
import { VERSION } from "../version.js";
|
|
3
4
|
/**
|
|
4
5
|
* Serverless redis client for upstash.
|
|
5
6
|
*/
|
|
@@ -32,9 +33,14 @@ export class Redis extends core.Redis {
|
|
|
32
33
|
retry: config.retry,
|
|
33
34
|
headers: { authorization: `Bearer ${config.token}` },
|
|
34
35
|
options: { backend: config.backend },
|
|
36
|
+
responseEncoding: config.responseEncoding,
|
|
35
37
|
});
|
|
36
38
|
super(client, {
|
|
37
39
|
automaticDeserialization: config.automaticDeserialization,
|
|
38
40
|
});
|
|
41
|
+
this.addTelemetry({
|
|
42
|
+
sdk: `@upstash/redis@${VERSION}`,
|
|
43
|
+
platform: "fastly",
|
|
44
|
+
});
|
|
39
45
|
}
|
|
40
46
|
}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
// deno-lint-ignore-file
|
|
2
2
|
import * as core from "../pkg/redis.js";
|
|
3
3
|
import { HttpClient, } from "../pkg/http.js";
|
|
4
|
+
import { VERSION } from "../version.js";
|
|
4
5
|
import "isomorphic-fetch";
|
|
6
|
+
// @ts-ignore Deno can't compile
|
|
7
|
+
// import https from "https";
|
|
8
|
+
// @ts-ignore Deno can't compile
|
|
9
|
+
// import http from "http";
|
|
10
|
+
// import "isomorphic-fetch";
|
|
11
|
+
/**
|
|
12
|
+
* Workaround for nodejs 14, where atob is not included in the standardlib
|
|
13
|
+
*/
|
|
14
|
+
if (typeof atob === "undefined") {
|
|
15
|
+
global.atob = function (b64) {
|
|
16
|
+
return Buffer.from(b64, "base64").toString("utf-8");
|
|
17
|
+
};
|
|
18
|
+
}
|
|
5
19
|
/**
|
|
6
20
|
* Serverless redis client for upstash.
|
|
7
21
|
*/
|
|
@@ -25,10 +39,21 @@ export class Redis extends core.Redis {
|
|
|
25
39
|
baseUrl: configOrRequester.url,
|
|
26
40
|
retry: configOrRequester.retry,
|
|
27
41
|
headers: { authorization: `Bearer ${configOrRequester.token}` },
|
|
28
|
-
//
|
|
42
|
+
// agent: configOrRequester.agent,
|
|
43
|
+
responseEncoding: configOrRequester.responseEncoding,
|
|
29
44
|
});
|
|
30
45
|
super(client, {
|
|
31
46
|
automaticDeserialization: configOrRequester.automaticDeserialization,
|
|
47
|
+
enableTelemetry: !process.env.UPSTASH_DISABLE_TELEMETRY,
|
|
48
|
+
});
|
|
49
|
+
this.addTelemetry({
|
|
50
|
+
runtime: `node@${process.version}`,
|
|
51
|
+
platform: process.env.VERCEL
|
|
52
|
+
? "vercel"
|
|
53
|
+
: process.env.AWS_REGION
|
|
54
|
+
? "aws"
|
|
55
|
+
: "unknown",
|
|
56
|
+
sdk: `@upstash/redis@${VERSION}`,
|
|
32
57
|
});
|
|
33
58
|
}
|
|
34
59
|
/**
|
package/esm/platforms/nodejs.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
// deno-lint-ignore-file
|
|
2
2
|
import * as core from "../pkg/redis.js";
|
|
3
3
|
import { HttpClient, } from "../pkg/http.js";
|
|
4
|
+
import { VERSION } from "../version.js";
|
|
5
|
+
/**
|
|
6
|
+
* Workaround for nodejs 14, where atob is not included in the standardlib
|
|
7
|
+
*/
|
|
8
|
+
if (typeof atob === "undefined") {
|
|
9
|
+
global.atob = function (b64) {
|
|
10
|
+
return Buffer.from(b64, "base64").toString("utf-8");
|
|
11
|
+
};
|
|
12
|
+
}
|
|
4
13
|
/**
|
|
5
14
|
* Serverless redis client for upstash.
|
|
6
15
|
*/
|
|
@@ -24,10 +33,24 @@ export class Redis extends core.Redis {
|
|
|
24
33
|
baseUrl: configOrRequester.url,
|
|
25
34
|
retry: configOrRequester.retry,
|
|
26
35
|
headers: { authorization: `Bearer ${configOrRequester.token}` },
|
|
27
|
-
|
|
36
|
+
agent: configOrRequester.agent,
|
|
37
|
+
responseEncoding: configOrRequester.responseEncoding,
|
|
38
|
+
cache: configOrRequester.cache || "no-store",
|
|
28
39
|
});
|
|
29
40
|
super(client, {
|
|
30
41
|
automaticDeserialization: configOrRequester.automaticDeserialization,
|
|
42
|
+
enableTelemetry: !process.env.UPSTASH_DISABLE_TELEMETRY,
|
|
43
|
+
});
|
|
44
|
+
this.addTelemetry({
|
|
45
|
+
runtime: typeof EdgeRuntime === "string"
|
|
46
|
+
? "edge-light"
|
|
47
|
+
: `node@${process.version}`,
|
|
48
|
+
platform: process.env.VERCEL
|
|
49
|
+
? "vercel"
|
|
50
|
+
: process.env.AWS_REGION
|
|
51
|
+
? "aws"
|
|
52
|
+
: "unknown",
|
|
53
|
+
sdk: `@upstash/redis@${VERSION}`,
|
|
31
54
|
});
|
|
32
55
|
}
|
|
33
56
|
/**
|
package/esm/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const VERSION = "v0.0.0-ci.dc584c15-20231010";
|