@upstash/redis 0.0.0-ci.cc3aae65-20230625 → 0.0.0-ci.cd9a3478-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.
- package/esm/pkg/commands/geo_add.js +27 -0
- package/esm/pkg/commands/geo_dist.js +11 -0
- package/esm/pkg/commands/mod.js +5 -0
- package/esm/pkg/commands/set.js +1 -1
- package/esm/pkg/commands/xadd.js +26 -0
- package/esm/pkg/commands/xrange.js +36 -0
- package/esm/pkg/commands/zunion.js +30 -0
- package/esm/pkg/http.js +16 -9
- package/esm/pkg/pipeline.js +16 -1
- package/esm/pkg/redis.js +36 -1
- package/esm/platforms/nodejs.js +1 -1
- package/esm/version.js +1 -1
- package/package.json +1 -1
- package/script/pkg/commands/geo_add.js +31 -0
- package/script/pkg/commands/geo_dist.js +15 -0
- package/script/pkg/commands/mod.js +5 -0
- package/script/pkg/commands/set.js +1 -1
- package/script/pkg/commands/xadd.js +30 -0
- package/script/pkg/commands/xrange.js +40 -0
- package/script/pkg/commands/zunion.js +34 -0
- package/script/pkg/http.js +16 -9
- package/script/pkg/pipeline.js +15 -0
- package/script/pkg/redis.js +35 -0
- package/script/platforms/nodejs.js +1 -1
- package/script/version.js +1 -1
- package/types/pkg/commands/geo_add.d.ts +25 -0
- package/types/pkg/commands/geo_dist.d.ts +12 -0
- package/types/pkg/commands/mod.d.ts +5 -0
- package/types/pkg/commands/xadd.d.ts +31 -0
- package/types/pkg/commands/xrange.d.ts +9 -0
- package/types/pkg/commands/zunion.d.ts +29 -0
- package/types/pkg/http.d.ts +5 -1
- package/types/pkg/pipeline.d.ts +8 -0
- package/types/pkg/redis.d.ts +37 -0
- package/types/version.d.ts +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/geoadd
|
|
4
|
+
*/
|
|
5
|
+
export class GeoAddCommand extends Command {
|
|
6
|
+
constructor([key, arg1, ...arg2], opts) {
|
|
7
|
+
const command = ["geoadd", key];
|
|
8
|
+
if ("nx" in arg1 && arg1.nx) {
|
|
9
|
+
command.push("nx");
|
|
10
|
+
}
|
|
11
|
+
else if ("xx" in arg1 && arg1.xx) {
|
|
12
|
+
command.push("xx");
|
|
13
|
+
}
|
|
14
|
+
if ("ch" in arg1 && arg1.ch) {
|
|
15
|
+
command.push("ch");
|
|
16
|
+
}
|
|
17
|
+
if ("latitude" in arg1 && arg1.latitude) {
|
|
18
|
+
command.push(arg1.longitude, arg1.latitude, arg1.member);
|
|
19
|
+
}
|
|
20
|
+
command.push(...arg2.flatMap(({ latitude, longitude, member }) => [
|
|
21
|
+
longitude,
|
|
22
|
+
latitude,
|
|
23
|
+
member,
|
|
24
|
+
]));
|
|
25
|
+
super(command, opts);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/geodist
|
|
4
|
+
*/
|
|
5
|
+
export class GeoDistCommand extends Command {
|
|
6
|
+
constructor([key, member1, member2, unit = "M"], opts) {
|
|
7
|
+
const command = ["GEODIST", key];
|
|
8
|
+
command.push(member1, member2, unit);
|
|
9
|
+
super(command, opts);
|
|
10
|
+
}
|
|
11
|
+
}
|
package/esm/pkg/commands/mod.js
CHANGED
|
@@ -15,6 +15,8 @@ export * from "./expire.js";
|
|
|
15
15
|
export * from "./expireat.js";
|
|
16
16
|
export * from "./flushall.js";
|
|
17
17
|
export * from "./flushdb.js";
|
|
18
|
+
export * from "./geo_add.js";
|
|
19
|
+
export * from "./geo_dist.js";
|
|
18
20
|
export * from "./get.js";
|
|
19
21
|
export * from "./getbit.js";
|
|
20
22
|
export * from "./getdel.js";
|
|
@@ -137,4 +139,7 @@ export * from "./zremrangebyscore.js";
|
|
|
137
139
|
export * from "./zrevrank.js";
|
|
138
140
|
export * from "./zscan.js";
|
|
139
141
|
export * from "./zscore.js";
|
|
142
|
+
export * from "./zunion.js";
|
|
140
143
|
export * from "./zunionstore.js";
|
|
144
|
+
export * from "./xadd.js";
|
|
145
|
+
export * from "./xrange.js";
|
package/esm/pkg/commands/set.js
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/xadd
|
|
4
|
+
*/
|
|
5
|
+
export class XAddCommand extends Command {
|
|
6
|
+
constructor([key, id, entries, opts], commandOptions) {
|
|
7
|
+
const command = ["XADD", key];
|
|
8
|
+
if (opts) {
|
|
9
|
+
if (opts.nomkStream) {
|
|
10
|
+
command.push("NOMKSTREAM");
|
|
11
|
+
}
|
|
12
|
+
if (opts.trim) {
|
|
13
|
+
command.push(opts.trim.type, opts.trim.comparison, opts.trim.threshold);
|
|
14
|
+
if (typeof opts.trim.limit !== "undefined") {
|
|
15
|
+
command.push("LIMIT", opts.trim.limit);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
command.push(id);
|
|
20
|
+
// entries
|
|
21
|
+
Object.entries(entries).forEach(([k, v]) => {
|
|
22
|
+
command.push(k, v);
|
|
23
|
+
});
|
|
24
|
+
super(command, commandOptions);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
function deserialize(result) {
|
|
3
|
+
const obj = {};
|
|
4
|
+
for (const e of result) {
|
|
5
|
+
while (e.length >= 2) {
|
|
6
|
+
const streamId = e.shift();
|
|
7
|
+
const entries = e.shift();
|
|
8
|
+
if (!(streamId in obj)) {
|
|
9
|
+
obj[streamId] = {};
|
|
10
|
+
}
|
|
11
|
+
while (entries.length >= 2) {
|
|
12
|
+
const field = entries.shift();
|
|
13
|
+
const value = entries.shift();
|
|
14
|
+
try {
|
|
15
|
+
obj[streamId][field] = JSON.parse(value);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
obj[streamId][field] = value;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return obj;
|
|
24
|
+
}
|
|
25
|
+
export class XRangeCommand extends Command {
|
|
26
|
+
constructor([key, start, end, count], opts) {
|
|
27
|
+
const command = ["XRANGE", key, start, end];
|
|
28
|
+
if (typeof count === "number") {
|
|
29
|
+
command.push("COUNT", count);
|
|
30
|
+
}
|
|
31
|
+
super(command, {
|
|
32
|
+
deserialize: (result) => deserialize(result),
|
|
33
|
+
...opts,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/zunion
|
|
4
|
+
*/
|
|
5
|
+
export class ZUnionCommand extends Command {
|
|
6
|
+
constructor([numKeys, keyOrKeys, opts], cmdOpts) {
|
|
7
|
+
const command = ["zunion", numKeys];
|
|
8
|
+
if (Array.isArray(keyOrKeys)) {
|
|
9
|
+
command.push(...keyOrKeys);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
command.push(keyOrKeys);
|
|
13
|
+
}
|
|
14
|
+
if (opts) {
|
|
15
|
+
if ("weights" in opts && opts.weights) {
|
|
16
|
+
command.push("weights", ...opts.weights);
|
|
17
|
+
}
|
|
18
|
+
else if ("weight" in opts && typeof opts.weight === "number") {
|
|
19
|
+
command.push("weights", opts.weight);
|
|
20
|
+
}
|
|
21
|
+
if ("aggregate" in opts) {
|
|
22
|
+
command.push("aggregate", opts.aggregate);
|
|
23
|
+
}
|
|
24
|
+
if (opts?.withScores) {
|
|
25
|
+
command.push("withscores");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
super(command, cmdOpts);
|
|
29
|
+
}
|
|
30
|
+
}
|
package/esm/pkg/http.js
CHANGED
|
@@ -100,10 +100,17 @@ export class HttpClient {
|
|
|
100
100
|
}
|
|
101
101
|
const body = (await res.json());
|
|
102
102
|
if (!res.ok) {
|
|
103
|
-
throw new UpstashError(body.error);
|
|
103
|
+
throw new UpstashError(`${body.error}, command was: ${JSON.stringify(req.body)}`);
|
|
104
104
|
}
|
|
105
105
|
if (this.options?.responseEncoding === "base64") {
|
|
106
|
-
|
|
106
|
+
if (Array.isArray(body)) {
|
|
107
|
+
return body.map(({ result, error }) => ({
|
|
108
|
+
result: decode(result),
|
|
109
|
+
error,
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
const result = decode(body.result);
|
|
113
|
+
return { result, error: body.error };
|
|
107
114
|
}
|
|
108
115
|
return body;
|
|
109
116
|
}
|
|
@@ -134,19 +141,19 @@ function base64decode(b64) {
|
|
|
134
141
|
}
|
|
135
142
|
function decode(raw) {
|
|
136
143
|
let result = undefined;
|
|
137
|
-
switch (typeof raw
|
|
144
|
+
switch (typeof raw) {
|
|
138
145
|
case "undefined":
|
|
139
146
|
return raw;
|
|
140
147
|
case "number": {
|
|
141
|
-
result = raw
|
|
148
|
+
result = raw;
|
|
142
149
|
break;
|
|
143
150
|
}
|
|
144
151
|
case "object": {
|
|
145
|
-
if (Array.isArray(raw
|
|
146
|
-
result = raw.
|
|
152
|
+
if (Array.isArray(raw)) {
|
|
153
|
+
result = raw.map((v) => typeof v === "string"
|
|
147
154
|
? base64decode(v)
|
|
148
155
|
: Array.isArray(v)
|
|
149
|
-
? v.map(
|
|
156
|
+
? v.map(decode)
|
|
150
157
|
: v);
|
|
151
158
|
}
|
|
152
159
|
else {
|
|
@@ -157,11 +164,11 @@ function decode(raw) {
|
|
|
157
164
|
break;
|
|
158
165
|
}
|
|
159
166
|
case "string": {
|
|
160
|
-
result = raw
|
|
167
|
+
result = raw === "OK" ? "OK" : base64decode(raw);
|
|
161
168
|
break;
|
|
162
169
|
}
|
|
163
170
|
default:
|
|
164
171
|
break;
|
|
165
172
|
}
|
|
166
|
-
return
|
|
173
|
+
return result;
|
|
167
174
|
}
|
package/esm/pkg/pipeline.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AppendCommand, BitCountCommand, BitOpCommand, BitPosCommand, DBSizeCommand, DecrByCommand, DecrCommand, DelCommand, EchoCommand, EvalCommand, EvalshaCommand, ExistsCommand, ExpireAtCommand, ExpireCommand, FlushAllCommand, FlushDBCommand, GetBitCommand, GetCommand, GetDelCommand, GetRangeCommand, GetSetCommand, HDelCommand, HExistsCommand, HGetAllCommand, HGetCommand, HIncrByCommand, HIncrByFloatCommand, HKeysCommand, HLenCommand, HMGetCommand, HMSetCommand, HScanCommand, HSetCommand, HSetNXCommand, HStrLenCommand, HValsCommand, IncrByCommand, IncrByFloatCommand, IncrCommand, JsonArrAppendCommand, JsonArrIndexCommand, JsonArrInsertCommand, JsonArrLenCommand, JsonArrPopCommand, JsonArrTrimCommand, JsonClearCommand, JsonDelCommand, JsonForgetCommand, JsonGetCommand, JsonMGetCommand, JsonNumIncrByCommand, JsonNumMultByCommand, JsonObjKeysCommand, JsonObjLenCommand, JsonRespCommand, JsonSetCommand, JsonStrAppendCommand, JsonStrLenCommand, JsonToggleCommand, JsonTypeCommand, KeysCommand, LIndexCommand, LInsertCommand, LLenCommand, LMoveCommand, LPopCommand, LPosCommand, LPushCommand, LPushXCommand, LRangeCommand, LRemCommand, LSetCommand, LTrimCommand, MGetCommand, MSetCommand, MSetNXCommand, PersistCommand, PExpireAtCommand, PExpireCommand, PingCommand, PSetEXCommand, PTtlCommand, PublishCommand, RandomKeyCommand, RenameCommand, RenameNXCommand, RPopCommand, RPushCommand, RPushXCommand, SAddCommand, ScanCommand, SCardCommand, ScriptExistsCommand, ScriptFlushCommand, ScriptLoadCommand, SDiffCommand, SDiffStoreCommand, SetBitCommand, SetCommand, SetExCommand, SetNxCommand, SetRangeCommand, SInterCommand, SInterStoreCommand, SIsMemberCommand, SMembersCommand, SMIsMemberCommand, SMoveCommand, SPopCommand, SRandMemberCommand, SRemCommand, SScanCommand, StrLenCommand, SUnionCommand, SUnionStoreCommand, TimeCommand, TouchCommand, TtlCommand, TypeCommand, UnlinkCommand, ZAddCommand, ZCardCommand, ZCountCommand, ZIncrByCommand, ZInterStoreCommand, ZLexCountCommand, ZPopMaxCommand, ZPopMinCommand, ZRangeCommand, ZRankCommand, ZRemCommand, ZRemRangeByLexCommand, ZRemRangeByRankCommand, ZRemRangeByScoreCommand, ZRevRankCommand, ZScanCommand, ZScoreCommand, ZUnionStoreCommand, } from "./commands/mod.js";
|
|
1
|
+
import { AppendCommand, BitCountCommand, BitOpCommand, BitPosCommand, DBSizeCommand, DecrByCommand, DecrCommand, DelCommand, EchoCommand, EvalCommand, EvalshaCommand, ExistsCommand, ExpireAtCommand, ExpireCommand, FlushAllCommand, FlushDBCommand, GetBitCommand, GetCommand, GetDelCommand, GetRangeCommand, GetSetCommand, HDelCommand, HExistsCommand, HGetAllCommand, HGetCommand, HIncrByCommand, HIncrByFloatCommand, HKeysCommand, HLenCommand, HMGetCommand, HMSetCommand, HScanCommand, HSetCommand, HSetNXCommand, HStrLenCommand, HValsCommand, IncrByCommand, IncrByFloatCommand, IncrCommand, JsonArrAppendCommand, JsonArrIndexCommand, JsonArrInsertCommand, JsonArrLenCommand, JsonArrPopCommand, JsonArrTrimCommand, JsonClearCommand, JsonDelCommand, JsonForgetCommand, JsonGetCommand, JsonMGetCommand, JsonNumIncrByCommand, JsonNumMultByCommand, JsonObjKeysCommand, JsonObjLenCommand, JsonRespCommand, JsonSetCommand, JsonStrAppendCommand, JsonStrLenCommand, JsonToggleCommand, JsonTypeCommand, KeysCommand, LIndexCommand, LInsertCommand, LLenCommand, LMoveCommand, LPopCommand, LPosCommand, LPushCommand, LPushXCommand, LRangeCommand, LRemCommand, LSetCommand, LTrimCommand, MGetCommand, MSetCommand, MSetNXCommand, PersistCommand, PExpireAtCommand, PExpireCommand, PingCommand, PSetEXCommand, PTtlCommand, PublishCommand, RandomKeyCommand, RenameCommand, RenameNXCommand, RPopCommand, RPushCommand, RPushXCommand, SAddCommand, ScanCommand, SCardCommand, ScriptExistsCommand, ScriptFlushCommand, ScriptLoadCommand, SDiffCommand, SDiffStoreCommand, SetBitCommand, SetCommand, SetExCommand, SetNxCommand, SetRangeCommand, SInterCommand, SInterStoreCommand, SIsMemberCommand, SMembersCommand, SMIsMemberCommand, SMoveCommand, SPopCommand, SRandMemberCommand, SRemCommand, SScanCommand, StrLenCommand, SUnionCommand, SUnionStoreCommand, TimeCommand, TouchCommand, TtlCommand, TypeCommand, UnlinkCommand, ZAddCommand, ZCardCommand, ZCountCommand, ZIncrByCommand, ZInterStoreCommand, ZLexCountCommand, ZPopMaxCommand, ZPopMinCommand, ZRangeCommand, ZRankCommand, ZRemCommand, ZRemRangeByLexCommand, ZRemRangeByRankCommand, ZRemRangeByScoreCommand, ZRevRankCommand, ZScanCommand, ZScoreCommand, ZUnionCommand, ZUnionStoreCommand, } from "./commands/mod.js";
|
|
2
2
|
import { UpstashError } from "./error.js";
|
|
3
3
|
import { ZMScoreCommand } from "./commands/zmscore.js";
|
|
4
4
|
import { HRandFieldCommand } from "./commands/hrandfield.js";
|
|
@@ -1185,11 +1185,26 @@ export class Pipeline {
|
|
|
1185
1185
|
writable: true,
|
|
1186
1186
|
value: (...args) => this.chain(new ZUnionStoreCommand(args, this.commandOptions))
|
|
1187
1187
|
});
|
|
1188
|
+
/**
|
|
1189
|
+
* @see https://redis.io/commands/zunion
|
|
1190
|
+
*/
|
|
1191
|
+
Object.defineProperty(this, "zunion", {
|
|
1192
|
+
enumerable: true,
|
|
1193
|
+
configurable: true,
|
|
1194
|
+
writable: true,
|
|
1195
|
+
value: (...args) => this.chain(new ZUnionCommand(args, this.commandOptions))
|
|
1196
|
+
});
|
|
1188
1197
|
this.client = opts.client;
|
|
1189
1198
|
this.commands = []; // the TCommands generic in the class definition is only used for carrying through chained command types and should never be explicitly set when instantiating the class
|
|
1190
1199
|
this.commandOptions = opts.commandOptions;
|
|
1191
1200
|
this.multiExec = opts.multiExec ?? false;
|
|
1192
1201
|
}
|
|
1202
|
+
/**
|
|
1203
|
+
* Returns the length of pipeline before the execution
|
|
1204
|
+
*/
|
|
1205
|
+
length() {
|
|
1206
|
+
return this.commands.length;
|
|
1207
|
+
}
|
|
1193
1208
|
/**
|
|
1194
1209
|
* Pushes a command into the pipeline and returns a chainable instance of the
|
|
1195
1210
|
* pipeline
|
package/esm/pkg/redis.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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, 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, GeoAddCommand, GeoDistCommand, 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, ZUnionCommand, ZUnionStoreCommand, } from "./commands/mod.js";
|
|
2
2
|
import { Pipeline } from "./pipeline.js";
|
|
3
3
|
import { Script } from "./script.js";
|
|
4
4
|
import { ZMScoreCommand } from "./commands/zmscore.js";
|
|
@@ -1005,6 +1005,24 @@ export class Redis {
|
|
|
1005
1005
|
writable: true,
|
|
1006
1006
|
value: (...args) => new UnlinkCommand(args, this.opts).exec(this.client)
|
|
1007
1007
|
});
|
|
1008
|
+
/**
|
|
1009
|
+
* @see https://redis.io/commands/xadd
|
|
1010
|
+
*/
|
|
1011
|
+
Object.defineProperty(this, "xadd", {
|
|
1012
|
+
enumerable: true,
|
|
1013
|
+
configurable: true,
|
|
1014
|
+
writable: true,
|
|
1015
|
+
value: (...args) => new XAddCommand(args, this.opts).exec(this.client)
|
|
1016
|
+
});
|
|
1017
|
+
/**
|
|
1018
|
+
* @see https://redis.io/commands/xrange
|
|
1019
|
+
*/
|
|
1020
|
+
Object.defineProperty(this, "xrange", {
|
|
1021
|
+
enumerable: true,
|
|
1022
|
+
configurable: true,
|
|
1023
|
+
writable: true,
|
|
1024
|
+
value: (...args) => new XRangeCommand(args, this.opts).exec(this.client)
|
|
1025
|
+
});
|
|
1008
1026
|
/**
|
|
1009
1027
|
* @see https://redis.io/commands/zadd
|
|
1010
1028
|
*/
|
|
@@ -1181,6 +1199,15 @@ export class Redis {
|
|
|
1181
1199
|
writable: true,
|
|
1182
1200
|
value: (key, member) => new ZScoreCommand([key, member], this.opts).exec(this.client)
|
|
1183
1201
|
});
|
|
1202
|
+
/**
|
|
1203
|
+
* @see https://redis.io/commands/zunion
|
|
1204
|
+
*/
|
|
1205
|
+
Object.defineProperty(this, "zunion", {
|
|
1206
|
+
enumerable: true,
|
|
1207
|
+
configurable: true,
|
|
1208
|
+
writable: true,
|
|
1209
|
+
value: (...args) => new ZUnionCommand(args, this.opts).exec(this.client)
|
|
1210
|
+
});
|
|
1184
1211
|
/**
|
|
1185
1212
|
* @see https://redis.io/commands/zunionstore
|
|
1186
1213
|
*/
|
|
@@ -1232,6 +1259,14 @@ export class Redis {
|
|
|
1232
1259
|
* @see https://redis.io/commands/json.forget
|
|
1233
1260
|
*/
|
|
1234
1261
|
forget: (...args) => new JsonForgetCommand(args, this.opts).exec(this.client),
|
|
1262
|
+
/**
|
|
1263
|
+
* @see https://redis.io/commands/geoadd
|
|
1264
|
+
*/
|
|
1265
|
+
geoadd: (...args) => new GeoAddCommand(args, this.opts).exec(this.client),
|
|
1266
|
+
/**
|
|
1267
|
+
* @see https://redis.io/commands/geodist
|
|
1268
|
+
*/
|
|
1269
|
+
geodist: (...args) => new GeoDistCommand(args, this.opts).exec(this.client),
|
|
1235
1270
|
/**
|
|
1236
1271
|
* @see https://redis.io/commands/json.get
|
|
1237
1272
|
*/
|
package/esm/platforms/nodejs.js
CHANGED
|
@@ -35,7 +35,7 @@ export class Redis extends core.Redis {
|
|
|
35
35
|
headers: { authorization: `Bearer ${configOrRequester.token}` },
|
|
36
36
|
agent: configOrRequester.agent,
|
|
37
37
|
responseEncoding: configOrRequester.responseEncoding,
|
|
38
|
-
cache: "no-store",
|
|
38
|
+
cache: configOrRequester.cache || "no-store",
|
|
39
39
|
});
|
|
40
40
|
super(client, {
|
|
41
41
|
automaticDeserialization: configOrRequester.automaticDeserialization,
|
package/esm/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "v0.0.0-ci.
|
|
1
|
+
export const VERSION = "v0.0.0-ci.cd9a3478-20231018";
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"main": "./script/platforms/nodejs.js",
|
|
4
4
|
"types": "./types/platforms/nodejs.d.ts",
|
|
5
5
|
"name": "@upstash/redis",
|
|
6
|
-
"version": "v0.0.0-ci.
|
|
6
|
+
"version": "v0.0.0-ci.cd9a3478-20231018",
|
|
7
7
|
"description": "An HTTP/REST based Redis client built on top of Upstash REST API.",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeoAddCommand = void 0;
|
|
4
|
+
const command_js_1 = require("./command.js");
|
|
5
|
+
/**
|
|
6
|
+
* @see https://redis.io/commands/geoadd
|
|
7
|
+
*/
|
|
8
|
+
class GeoAddCommand extends command_js_1.Command {
|
|
9
|
+
constructor([key, arg1, ...arg2], opts) {
|
|
10
|
+
const command = ["geoadd", key];
|
|
11
|
+
if ("nx" in arg1 && arg1.nx) {
|
|
12
|
+
command.push("nx");
|
|
13
|
+
}
|
|
14
|
+
else if ("xx" in arg1 && arg1.xx) {
|
|
15
|
+
command.push("xx");
|
|
16
|
+
}
|
|
17
|
+
if ("ch" in arg1 && arg1.ch) {
|
|
18
|
+
command.push("ch");
|
|
19
|
+
}
|
|
20
|
+
if ("latitude" in arg1 && arg1.latitude) {
|
|
21
|
+
command.push(arg1.longitude, arg1.latitude, arg1.member);
|
|
22
|
+
}
|
|
23
|
+
command.push(...arg2.flatMap(({ latitude, longitude, member }) => [
|
|
24
|
+
longitude,
|
|
25
|
+
latitude,
|
|
26
|
+
member,
|
|
27
|
+
]));
|
|
28
|
+
super(command, opts);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.GeoAddCommand = GeoAddCommand;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeoDistCommand = void 0;
|
|
4
|
+
const command_js_1 = require("./command.js");
|
|
5
|
+
/**
|
|
6
|
+
* @see https://redis.io/commands/geodist
|
|
7
|
+
*/
|
|
8
|
+
class GeoDistCommand extends command_js_1.Command {
|
|
9
|
+
constructor([key, member1, member2, unit = "M"], opts) {
|
|
10
|
+
const command = ["GEODIST", key];
|
|
11
|
+
command.push(member1, member2, unit);
|
|
12
|
+
super(command, opts);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.GeoDistCommand = GeoDistCommand;
|
|
@@ -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_dist.js"), exports);
|
|
34
36
|
__exportStar(require("./get.js"), exports);
|
|
35
37
|
__exportStar(require("./getbit.js"), exports);
|
|
36
38
|
__exportStar(require("./getdel.js"), exports);
|
|
@@ -153,4 +155,7 @@ __exportStar(require("./zremrangebyscore.js"), exports);
|
|
|
153
155
|
__exportStar(require("./zrevrank.js"), exports);
|
|
154
156
|
__exportStar(require("./zscan.js"), exports);
|
|
155
157
|
__exportStar(require("./zscore.js"), exports);
|
|
158
|
+
__exportStar(require("./zunion.js"), exports);
|
|
156
159
|
__exportStar(require("./zunionstore.js"), exports);
|
|
160
|
+
__exportStar(require("./xadd.js"), exports);
|
|
161
|
+
__exportStar(require("./xrange.js"), exports);
|
|
@@ -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;
|
package/script/pkg/http.js
CHANGED
|
@@ -103,10 +103,17 @@ class HttpClient {
|
|
|
103
103
|
}
|
|
104
104
|
const body = (await res.json());
|
|
105
105
|
if (!res.ok) {
|
|
106
|
-
throw new error_js_1.UpstashError(body.error);
|
|
106
|
+
throw new error_js_1.UpstashError(`${body.error}, command was: ${JSON.stringify(req.body)}`);
|
|
107
107
|
}
|
|
108
108
|
if (this.options?.responseEncoding === "base64") {
|
|
109
|
-
|
|
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 };
|
|
110
117
|
}
|
|
111
118
|
return body;
|
|
112
119
|
}
|
|
@@ -138,19 +145,19 @@ function base64decode(b64) {
|
|
|
138
145
|
}
|
|
139
146
|
function decode(raw) {
|
|
140
147
|
let result = undefined;
|
|
141
|
-
switch (typeof raw
|
|
148
|
+
switch (typeof raw) {
|
|
142
149
|
case "undefined":
|
|
143
150
|
return raw;
|
|
144
151
|
case "number": {
|
|
145
|
-
result = raw
|
|
152
|
+
result = raw;
|
|
146
153
|
break;
|
|
147
154
|
}
|
|
148
155
|
case "object": {
|
|
149
|
-
if (Array.isArray(raw
|
|
150
|
-
result = raw.
|
|
156
|
+
if (Array.isArray(raw)) {
|
|
157
|
+
result = raw.map((v) => typeof v === "string"
|
|
151
158
|
? base64decode(v)
|
|
152
159
|
: Array.isArray(v)
|
|
153
|
-
? v.map(
|
|
160
|
+
? v.map(decode)
|
|
154
161
|
: v);
|
|
155
162
|
}
|
|
156
163
|
else {
|
|
@@ -161,11 +168,11 @@ function decode(raw) {
|
|
|
161
168
|
break;
|
|
162
169
|
}
|
|
163
170
|
case "string": {
|
|
164
|
-
result = raw
|
|
171
|
+
result = raw === "OK" ? "OK" : base64decode(raw);
|
|
165
172
|
break;
|
|
166
173
|
}
|
|
167
174
|
default:
|
|
168
175
|
break;
|
|
169
176
|
}
|
|
170
|
-
return
|
|
177
|
+
return result;
|
|
171
178
|
}
|
package/script/pkg/pipeline.js
CHANGED
|
@@ -1188,11 +1188,26 @@ class Pipeline {
|
|
|
1188
1188
|
writable: true,
|
|
1189
1189
|
value: (...args) => this.chain(new mod_js_1.ZUnionStoreCommand(args, this.commandOptions))
|
|
1190
1190
|
});
|
|
1191
|
+
/**
|
|
1192
|
+
* @see https://redis.io/commands/zunion
|
|
1193
|
+
*/
|
|
1194
|
+
Object.defineProperty(this, "zunion", {
|
|
1195
|
+
enumerable: true,
|
|
1196
|
+
configurable: true,
|
|
1197
|
+
writable: true,
|
|
1198
|
+
value: (...args) => this.chain(new mod_js_1.ZUnionCommand(args, this.commandOptions))
|
|
1199
|
+
});
|
|
1191
1200
|
this.client = opts.client;
|
|
1192
1201
|
this.commands = []; // the TCommands generic in the class definition is only used for carrying through chained command types and should never be explicitly set when instantiating the class
|
|
1193
1202
|
this.commandOptions = opts.commandOptions;
|
|
1194
1203
|
this.multiExec = opts.multiExec ?? false;
|
|
1195
1204
|
}
|
|
1205
|
+
/**
|
|
1206
|
+
* Returns the length of pipeline before the execution
|
|
1207
|
+
*/
|
|
1208
|
+
length() {
|
|
1209
|
+
return this.commands.length;
|
|
1210
|
+
}
|
|
1196
1211
|
/**
|
|
1197
1212
|
* Pushes a command into the pipeline and returns a chainable instance of the
|
|
1198
1213
|
* pipeline
|
package/script/pkg/redis.js
CHANGED
|
@@ -1008,6 +1008,24 @@ class Redis {
|
|
|
1008
1008
|
writable: true,
|
|
1009
1009
|
value: (...args) => new mod_js_1.UnlinkCommand(args, this.opts).exec(this.client)
|
|
1010
1010
|
});
|
|
1011
|
+
/**
|
|
1012
|
+
* @see https://redis.io/commands/xadd
|
|
1013
|
+
*/
|
|
1014
|
+
Object.defineProperty(this, "xadd", {
|
|
1015
|
+
enumerable: true,
|
|
1016
|
+
configurable: true,
|
|
1017
|
+
writable: true,
|
|
1018
|
+
value: (...args) => new mod_js_1.XAddCommand(args, this.opts).exec(this.client)
|
|
1019
|
+
});
|
|
1020
|
+
/**
|
|
1021
|
+
* @see https://redis.io/commands/xrange
|
|
1022
|
+
*/
|
|
1023
|
+
Object.defineProperty(this, "xrange", {
|
|
1024
|
+
enumerable: true,
|
|
1025
|
+
configurable: true,
|
|
1026
|
+
writable: true,
|
|
1027
|
+
value: (...args) => new mod_js_1.XRangeCommand(args, this.opts).exec(this.client)
|
|
1028
|
+
});
|
|
1011
1029
|
/**
|
|
1012
1030
|
* @see https://redis.io/commands/zadd
|
|
1013
1031
|
*/
|
|
@@ -1184,6 +1202,15 @@ class Redis {
|
|
|
1184
1202
|
writable: true,
|
|
1185
1203
|
value: (key, member) => new mod_js_1.ZScoreCommand([key, member], this.opts).exec(this.client)
|
|
1186
1204
|
});
|
|
1205
|
+
/**
|
|
1206
|
+
* @see https://redis.io/commands/zunion
|
|
1207
|
+
*/
|
|
1208
|
+
Object.defineProperty(this, "zunion", {
|
|
1209
|
+
enumerable: true,
|
|
1210
|
+
configurable: true,
|
|
1211
|
+
writable: true,
|
|
1212
|
+
value: (...args) => new mod_js_1.ZUnionCommand(args, this.opts).exec(this.client)
|
|
1213
|
+
});
|
|
1187
1214
|
/**
|
|
1188
1215
|
* @see https://redis.io/commands/zunionstore
|
|
1189
1216
|
*/
|
|
@@ -1235,6 +1262,14 @@ class Redis {
|
|
|
1235
1262
|
* @see https://redis.io/commands/json.forget
|
|
1236
1263
|
*/
|
|
1237
1264
|
forget: (...args) => new mod_js_1.JsonForgetCommand(args, this.opts).exec(this.client),
|
|
1265
|
+
/**
|
|
1266
|
+
* @see https://redis.io/commands/geoadd
|
|
1267
|
+
*/
|
|
1268
|
+
geoadd: (...args) => new mod_js_1.GeoAddCommand(args, this.opts).exec(this.client),
|
|
1269
|
+
/**
|
|
1270
|
+
* @see https://redis.io/commands/geodist
|
|
1271
|
+
*/
|
|
1272
|
+
geodist: (...args) => new mod_js_1.GeoDistCommand(args, this.opts).exec(this.client),
|
|
1238
1273
|
/**
|
|
1239
1274
|
* @see https://redis.io/commands/json.get
|
|
1240
1275
|
*/
|
|
@@ -61,7 +61,7 @@ class Redis extends core.Redis {
|
|
|
61
61
|
headers: { authorization: `Bearer ${configOrRequester.token}` },
|
|
62
62
|
agent: configOrRequester.agent,
|
|
63
63
|
responseEncoding: configOrRequester.responseEncoding,
|
|
64
|
-
cache: "no-store",
|
|
64
|
+
cache: configOrRequester.cache || "no-store",
|
|
65
65
|
});
|
|
66
66
|
super(client, {
|
|
67
67
|
automaticDeserialization: configOrRequester.automaticDeserialization,
|
package/script/version.js
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Command, CommandOptions } from "./command.js";
|
|
2
|
+
export type GeoAddCommandOptions = {
|
|
3
|
+
nx?: boolean;
|
|
4
|
+
xx?: never;
|
|
5
|
+
} | ({
|
|
6
|
+
nx?: never;
|
|
7
|
+
xx?: boolean;
|
|
8
|
+
} & {
|
|
9
|
+
ch?: boolean;
|
|
10
|
+
});
|
|
11
|
+
export interface GeoMember<TMemberType> {
|
|
12
|
+
latitude: number;
|
|
13
|
+
longitude: number;
|
|
14
|
+
member: TMemberType;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @see https://redis.io/commands/geoadd
|
|
18
|
+
*/
|
|
19
|
+
export declare class GeoAddCommand<TMemberType = string> extends Command<number | null, number | null> {
|
|
20
|
+
constructor([key, arg1, ...arg2]: [
|
|
21
|
+
string,
|
|
22
|
+
GeoMember<TMemberType> | GeoAddCommandOptions,
|
|
23
|
+
...GeoMember<TMemberType>[]
|
|
24
|
+
], opts?: CommandOptions<number | null, number | null>);
|
|
25
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command, CommandOptions } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/geodist
|
|
4
|
+
*/
|
|
5
|
+
export declare class GeoDistCommand extends Command<number | null, number | null> {
|
|
6
|
+
constructor([key, member1, member2, unit]: [
|
|
7
|
+
key: string,
|
|
8
|
+
member1: string,
|
|
9
|
+
member2: string,
|
|
10
|
+
unit?: "M" | "KM" | "FT" | "MI"
|
|
11
|
+
], opts?: CommandOptions<number | null, number | null>);
|
|
12
|
+
}
|
|
@@ -15,6 +15,8 @@ export * from "./expire.js";
|
|
|
15
15
|
export * from "./expireat.js";
|
|
16
16
|
export * from "./flushall.js";
|
|
17
17
|
export * from "./flushdb.js";
|
|
18
|
+
export * from "./geo_add.js";
|
|
19
|
+
export * from "./geo_dist.js";
|
|
18
20
|
export * from "./get.js";
|
|
19
21
|
export * from "./getbit.js";
|
|
20
22
|
export * from "./getdel.js";
|
|
@@ -137,4 +139,7 @@ export * from "./zremrangebyscore.js";
|
|
|
137
139
|
export * from "./zrevrank.js";
|
|
138
140
|
export * from "./zscan.js";
|
|
139
141
|
export * from "./zscore.js";
|
|
142
|
+
export * from "./zunion.js";
|
|
140
143
|
export * from "./zunionstore.js";
|
|
144
|
+
export * from "./xadd.js";
|
|
145
|
+
export * from "./xrange.js";
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Command, CommandOptions } from "./command.js";
|
|
2
|
+
type XAddCommandOptions = {
|
|
3
|
+
nomkStream?: boolean;
|
|
4
|
+
trim?: ({
|
|
5
|
+
type: "MAXLEN" | "maxlen";
|
|
6
|
+
threshold: number;
|
|
7
|
+
} | {
|
|
8
|
+
type: "MINID" | "minid";
|
|
9
|
+
threshold: string;
|
|
10
|
+
}) & ({
|
|
11
|
+
comparison: "~";
|
|
12
|
+
limit?: number;
|
|
13
|
+
} | {
|
|
14
|
+
comparison: "=";
|
|
15
|
+
limit?: never;
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @see https://redis.io/commands/xadd
|
|
20
|
+
*/
|
|
21
|
+
export declare class XAddCommand extends Command<string, string> {
|
|
22
|
+
constructor([key, id, entries, opts]: [
|
|
23
|
+
key: string,
|
|
24
|
+
id: "*" | string,
|
|
25
|
+
entries: {
|
|
26
|
+
[field: string]: unknown;
|
|
27
|
+
},
|
|
28
|
+
opts?: XAddCommandOptions
|
|
29
|
+
], commandOptions?: CommandOptions<string, string>);
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command, CommandOptions } from "./command.js";
|
|
2
|
+
export declare class XRangeCommand<TData extends Record<string, Record<string, unknown>>> extends Command<string[][], TData> {
|
|
3
|
+
constructor([key, start, end, count]: [
|
|
4
|
+
key: string,
|
|
5
|
+
start: string,
|
|
6
|
+
end: string,
|
|
7
|
+
count?: number
|
|
8
|
+
], opts?: CommandOptions<unknown[], TData[]>);
|
|
9
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Command, CommandOptions } from "./command.js";
|
|
2
|
+
export type ZUnionCommandOptions = {
|
|
3
|
+
withScores?: boolean;
|
|
4
|
+
aggregate?: "sum" | "min" | "max";
|
|
5
|
+
} & ({
|
|
6
|
+
weight: number;
|
|
7
|
+
weights?: never;
|
|
8
|
+
} | {
|
|
9
|
+
weight?: never;
|
|
10
|
+
weights: number[];
|
|
11
|
+
} | {
|
|
12
|
+
weight?: never;
|
|
13
|
+
weights?: never;
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* @see https://redis.io/commands/zunion
|
|
17
|
+
*/
|
|
18
|
+
export declare class ZUnionCommand<TData extends unknown[]> extends Command<string[], TData> {
|
|
19
|
+
constructor(cmd: [
|
|
20
|
+
numKeys: 1,
|
|
21
|
+
key: string,
|
|
22
|
+
opts?: ZUnionCommandOptions
|
|
23
|
+
], cmdOpts?: CommandOptions<string[], TData>);
|
|
24
|
+
constructor(cmd: [
|
|
25
|
+
numKeys: number,
|
|
26
|
+
keys: string[],
|
|
27
|
+
opts?: ZUnionCommandOptions
|
|
28
|
+
], cmdOpts?: CommandOptions<string[], TData>);
|
|
29
|
+
}
|
package/types/pkg/http.d.ts
CHANGED
|
@@ -62,6 +62,11 @@ export type RequesterConfig = {
|
|
|
62
62
|
* @default "base64"
|
|
63
63
|
*/
|
|
64
64
|
responseEncoding?: false | "base64";
|
|
65
|
+
/**
|
|
66
|
+
* Configure the cache behaviour
|
|
67
|
+
* @default "no-store"
|
|
68
|
+
*/
|
|
69
|
+
cache?: CacheSetting;
|
|
65
70
|
};
|
|
66
71
|
export type HttpClientConfig = {
|
|
67
72
|
headers?: Record<string, string>;
|
|
@@ -69,7 +74,6 @@ export type HttpClientConfig = {
|
|
|
69
74
|
options?: Options;
|
|
70
75
|
retry?: RetryConfig;
|
|
71
76
|
agent?: any;
|
|
72
|
-
cache?: CacheSetting;
|
|
73
77
|
} & RequesterConfig;
|
|
74
78
|
export declare class HttpClient implements Requester {
|
|
75
79
|
baseUrl: string;
|
package/types/pkg/pipeline.d.ts
CHANGED
|
@@ -66,6 +66,10 @@ export declare class Pipeline<TCommands extends Command<any, any>[] = []> {
|
|
|
66
66
|
* ```
|
|
67
67
|
*/
|
|
68
68
|
exec: <TCommandResults extends unknown[] = [] extends TCommands ? unknown[] : InferResponseData<TCommands>>() => Promise<TCommandResults>;
|
|
69
|
+
/**
|
|
70
|
+
* Returns the length of pipeline before the execution
|
|
71
|
+
*/
|
|
72
|
+
length(): number;
|
|
69
73
|
/**
|
|
70
74
|
* Pushes a command into the pipeline and returns a chainable instance of the
|
|
71
75
|
* pipeline
|
|
@@ -579,6 +583,10 @@ export declare class Pipeline<TCommands extends Command<any, any>[] = []> {
|
|
|
579
583
|
* @see https://redis.io/commands/zunionstore
|
|
580
584
|
*/
|
|
581
585
|
zunionstore: (destination: string, numKeys: number, keys: string[], opts?: import("./commands/zunionstore.js").ZUnionStoreCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, number>]>;
|
|
586
|
+
/**
|
|
587
|
+
* @see https://redis.io/commands/zunion
|
|
588
|
+
*/
|
|
589
|
+
zunion: (numKeys: number, keys: string[], opts?: import("./commands/zunion.js").ZUnionCommandOptions | undefined) => Pipeline<[...TCommands, Command<any, any>]>;
|
|
582
590
|
/**
|
|
583
591
|
* @see https://redis.io/commands/?group=json
|
|
584
592
|
*/
|
package/types/pkg/redis.d.ts
CHANGED
|
@@ -61,6 +61,14 @@ export declare class Redis {
|
|
|
61
61
|
* @see https://redis.io/commands/json.forget
|
|
62
62
|
*/
|
|
63
63
|
forget: (key: string, path?: string | undefined) => Promise<number>;
|
|
64
|
+
/**
|
|
65
|
+
* @see https://redis.io/commands/geoadd
|
|
66
|
+
*/
|
|
67
|
+
geoadd: (args_0: string, args_1: import("./commands/geo_add.js").GeoAddCommandOptions | import("./commands/geo_add.js").GeoMember<unknown>, ...args_2: import("./commands/geo_add.js").GeoMember<unknown>[]) => Promise<number | null>;
|
|
68
|
+
/**
|
|
69
|
+
* @see https://redis.io/commands/geodist
|
|
70
|
+
*/
|
|
71
|
+
geodist: (key: string, member1: string, member2: string, unit?: "M" | "KM" | "FT" | "MI" | undefined) => Promise<number | null>;
|
|
64
72
|
/**
|
|
65
73
|
* @see https://redis.io/commands/json.get
|
|
66
74
|
*/
|
|
@@ -562,6 +570,31 @@ export declare class Redis {
|
|
|
562
570
|
* @see https://redis.io/commands/unlink
|
|
563
571
|
*/
|
|
564
572
|
unlink: (...args: CommandArgs<typeof UnlinkCommand>) => Promise<number>;
|
|
573
|
+
/**
|
|
574
|
+
* @see https://redis.io/commands/xadd
|
|
575
|
+
*/
|
|
576
|
+
xadd: (key: string, id: string, entries: {
|
|
577
|
+
[field: string]: unknown;
|
|
578
|
+
}, opts?: {
|
|
579
|
+
nomkStream?: boolean | undefined;
|
|
580
|
+
trim?: (({
|
|
581
|
+
type: "MAXLEN" | "maxlen";
|
|
582
|
+
threshold: number;
|
|
583
|
+
} | {
|
|
584
|
+
type: "MINID" | "minid";
|
|
585
|
+
threshold: string;
|
|
586
|
+
}) & ({
|
|
587
|
+
comparison: "~";
|
|
588
|
+
limit?: number | undefined;
|
|
589
|
+
} | {
|
|
590
|
+
comparison: "=";
|
|
591
|
+
limit?: undefined;
|
|
592
|
+
})) | undefined;
|
|
593
|
+
} | undefined) => Promise<string>;
|
|
594
|
+
/**
|
|
595
|
+
* @see https://redis.io/commands/xrange
|
|
596
|
+
*/
|
|
597
|
+
xrange: (key: string, start: string, end: string, count?: number | undefined) => Promise<Record<string, Record<string, unknown>>>;
|
|
565
598
|
/**
|
|
566
599
|
* @see https://redis.io/commands/zadd
|
|
567
600
|
*/
|
|
@@ -652,6 +685,10 @@ export declare class Redis {
|
|
|
652
685
|
* @see https://redis.io/commands/zscore
|
|
653
686
|
*/
|
|
654
687
|
zscore: <TData>(key: string, member: TData) => Promise<number | null>;
|
|
688
|
+
/**
|
|
689
|
+
* @see https://redis.io/commands/zunion
|
|
690
|
+
*/
|
|
691
|
+
zunion: (numKeys: number, keys: string[], opts?: import("./commands/zunion.js").ZUnionCommandOptions | undefined) => Promise<any>;
|
|
655
692
|
/**
|
|
656
693
|
* @see https://redis.io/commands/zunionstore
|
|
657
694
|
*/
|
package/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "v0.0.0-ci.
|
|
1
|
+
export declare const VERSION = "v0.0.0-ci.cd9a3478-20231018";
|