@upstash/redis 0.0.0-ci.97cb5577-20231010 → 0.0.0-ci.9d88b94d-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_pos.js +26 -0
- package/esm/pkg/commands/hgetall.js +9 -1
- package/esm/pkg/commands/mod.js +5 -1
- package/esm/pkg/commands/xrange.js +36 -0
- package/esm/pkg/commands/zunion.js +30 -0
- package/esm/pkg/pipeline.js +20 -2
- package/esm/pkg/redis.js +36 -5
- 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_pos.js +30 -0
- package/script/pkg/commands/hgetall.js +9 -1
- package/script/pkg/commands/mod.js +5 -1
- package/script/pkg/commands/xrange.js +40 -0
- package/script/pkg/commands/zunion.js +34 -0
- package/script/pkg/pipeline.js +19 -1
- package/script/pkg/redis.js +35 -4
- package/script/version.js +1 -1
- package/types/pkg/commands/geo_add.d.ts +25 -0
- package/types/pkg/commands/geo_pos.d.ts +12 -0
- package/types/pkg/commands/mod.d.ts +5 -1
- package/types/pkg/commands/xrange.d.ts +9 -0
- package/types/pkg/commands/zunion.d.ts +29 -0
- package/types/pkg/pipeline.d.ts +13 -1
- package/types/pkg/redis.d.ts +38 -1
- 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,26 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/geopos
|
|
4
|
+
*/
|
|
5
|
+
export class GeoPosCommand extends Command {
|
|
6
|
+
constructor(cmd, opts) {
|
|
7
|
+
const [key] = cmd;
|
|
8
|
+
// Check if the second argument is an array of strings (members).
|
|
9
|
+
// If it is, use it directly; if not, it means the members were passed individually,
|
|
10
|
+
// so we slice the cmd from the second element onwards to get the members.
|
|
11
|
+
const members = Array.isArray(cmd[1]) ? cmd[1] : cmd.slice(1);
|
|
12
|
+
super(["GEOPOS", key, ...members], {
|
|
13
|
+
deserialize: (result) => transform(result),
|
|
14
|
+
...opts,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function transform(result) {
|
|
19
|
+
const final = [];
|
|
20
|
+
for (const pos of result) {
|
|
21
|
+
if (!pos?.[0] || !pos?.[1])
|
|
22
|
+
continue;
|
|
23
|
+
final.push({ lng: pos[0], lat: pos[1] });
|
|
24
|
+
}
|
|
25
|
+
return final;
|
|
26
|
+
}
|
|
@@ -8,7 +8,15 @@ function deserialize(result) {
|
|
|
8
8
|
const key = result.shift();
|
|
9
9
|
const value = result.shift();
|
|
10
10
|
try {
|
|
11
|
-
|
|
11
|
+
// handle unsafe integer
|
|
12
|
+
const valueIsNumberAndNotSafeInteger = !isNaN(Number(value)) &&
|
|
13
|
+
!Number.isSafeInteger(value);
|
|
14
|
+
if (valueIsNumberAndNotSafeInteger) {
|
|
15
|
+
obj[key] = value;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
obj[key] = JSON.parse(value);
|
|
19
|
+
}
|
|
12
20
|
}
|
|
13
21
|
catch {
|
|
14
22
|
obj[key] = value;
|
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_pos.js";
|
|
18
20
|
export * from "./get.js";
|
|
19
21
|
export * from "./getbit.js";
|
|
20
22
|
export * from "./getdel.js";
|
|
@@ -120,7 +122,6 @@ export * from "./touch.js";
|
|
|
120
122
|
export * from "./ttl.js";
|
|
121
123
|
export * from "./type.js";
|
|
122
124
|
export * from "./unlink.js";
|
|
123
|
-
export * from "./xadd.js";
|
|
124
125
|
export * from "./zadd.js";
|
|
125
126
|
export * from "./zcard.js";
|
|
126
127
|
export * from "./zcount.js";
|
|
@@ -138,4 +139,7 @@ export * from "./zremrangebyscore.js";
|
|
|
138
139
|
export * from "./zrevrank.js";
|
|
139
140
|
export * from "./zscan.js";
|
|
140
141
|
export * from "./zscore.js";
|
|
142
|
+
export * from "./zunion.js";
|
|
141
143
|
export * from "./zunionstore.js";
|
|
144
|
+
export * from "./xadd.js";
|
|
145
|
+
export * from "./xrange.js";
|
|
@@ -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/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, GeoPosCommand, 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";
|
|
@@ -92,7 +92,6 @@ export class Pipeline {
|
|
|
92
92
|
path,
|
|
93
93
|
body: Object.values(this.commands).map((c) => c.command),
|
|
94
94
|
}));
|
|
95
|
-
console.log("after req", { res });
|
|
96
95
|
return res.map(({ error, result }, i) => {
|
|
97
96
|
if (error) {
|
|
98
97
|
throw new UpstashError(`Command ${i + 1} [ ${this.commands[i].command[0]} ] failed: ${error}`);
|
|
@@ -1186,11 +1185,26 @@ export class Pipeline {
|
|
|
1186
1185
|
writable: true,
|
|
1187
1186
|
value: (...args) => this.chain(new ZUnionStoreCommand(args, this.commandOptions))
|
|
1188
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
|
+
});
|
|
1189
1197
|
this.client = opts.client;
|
|
1190
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
|
|
1191
1199
|
this.commandOptions = opts.commandOptions;
|
|
1192
1200
|
this.multiExec = opts.multiExec ?? false;
|
|
1193
1201
|
}
|
|
1202
|
+
/**
|
|
1203
|
+
* Returns the length of pipeline before the execution
|
|
1204
|
+
*/
|
|
1205
|
+
length() {
|
|
1206
|
+
return this.commands.length;
|
|
1207
|
+
}
|
|
1194
1208
|
/**
|
|
1195
1209
|
* Pushes a command into the pipeline and returns a chainable instance of the
|
|
1196
1210
|
* pipeline
|
|
@@ -1240,6 +1254,10 @@ export class Pipeline {
|
|
|
1240
1254
|
* @see https://redis.io/commands/json.forget
|
|
1241
1255
|
*/
|
|
1242
1256
|
forget: (...args) => this.chain(new JsonForgetCommand(args, this.commandOptions)),
|
|
1257
|
+
/**
|
|
1258
|
+
* @see https://redis.io/commands/geopos
|
|
1259
|
+
*/
|
|
1260
|
+
geopos: (...args) => new GeoPosCommand(args, this.commandOptions).exec(this.client),
|
|
1243
1261
|
/**
|
|
1244
1262
|
* @see https://redis.io/commands/json.get
|
|
1245
1263
|
*/
|
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, GeoPosCommand, 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,10 +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
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
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
|
+
});
|
|
1012
1026
|
/**
|
|
1013
1027
|
* @see https://redis.io/commands/zadd
|
|
1014
1028
|
*/
|
|
@@ -1185,6 +1199,15 @@ export class Redis {
|
|
|
1185
1199
|
writable: true,
|
|
1186
1200
|
value: (key, member) => new ZScoreCommand([key, member], this.opts).exec(this.client)
|
|
1187
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
|
+
});
|
|
1188
1211
|
/**
|
|
1189
1212
|
* @see https://redis.io/commands/zunionstore
|
|
1190
1213
|
*/
|
|
@@ -1236,6 +1259,14 @@ export class Redis {
|
|
|
1236
1259
|
* @see https://redis.io/commands/json.forget
|
|
1237
1260
|
*/
|
|
1238
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/geopos
|
|
1268
|
+
*/
|
|
1269
|
+
geopos: (...args) => new GeoPosCommand(args, this.opts).exec(this.client),
|
|
1239
1270
|
/**
|
|
1240
1271
|
* @see https://redis.io/commands/json.get
|
|
1241
1272
|
*/
|
package/esm/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "v0.0.0-ci.
|
|
1
|
+
export const VERSION = "v0.0.0-ci.9d88b94d-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.9d88b94d-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,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeoPosCommand = void 0;
|
|
4
|
+
const command_js_1 = require("./command.js");
|
|
5
|
+
/**
|
|
6
|
+
* @see https://redis.io/commands/geopos
|
|
7
|
+
*/
|
|
8
|
+
class GeoPosCommand extends command_js_1.Command {
|
|
9
|
+
constructor(cmd, opts) {
|
|
10
|
+
const [key] = cmd;
|
|
11
|
+
// Check if the second argument is an array of strings (members).
|
|
12
|
+
// If it is, use it directly; if not, it means the members were passed individually,
|
|
13
|
+
// so we slice the cmd from the second element onwards to get the members.
|
|
14
|
+
const members = Array.isArray(cmd[1]) ? cmd[1] : cmd.slice(1);
|
|
15
|
+
super(["GEOPOS", key, ...members], {
|
|
16
|
+
deserialize: (result) => transform(result),
|
|
17
|
+
...opts,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.GeoPosCommand = GeoPosCommand;
|
|
22
|
+
function transform(result) {
|
|
23
|
+
const final = [];
|
|
24
|
+
for (const pos of result) {
|
|
25
|
+
if (!pos?.[0] || !pos?.[1])
|
|
26
|
+
continue;
|
|
27
|
+
final.push({ lng: pos[0], lat: pos[1] });
|
|
28
|
+
}
|
|
29
|
+
return final;
|
|
30
|
+
}
|
|
@@ -11,7 +11,15 @@ function deserialize(result) {
|
|
|
11
11
|
const key = result.shift();
|
|
12
12
|
const value = result.shift();
|
|
13
13
|
try {
|
|
14
|
-
|
|
14
|
+
// handle unsafe integer
|
|
15
|
+
const valueIsNumberAndNotSafeInteger = !isNaN(Number(value)) &&
|
|
16
|
+
!Number.isSafeInteger(value);
|
|
17
|
+
if (valueIsNumberAndNotSafeInteger) {
|
|
18
|
+
obj[key] = value;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
obj[key] = JSON.parse(value);
|
|
22
|
+
}
|
|
15
23
|
}
|
|
16
24
|
catch {
|
|
17
25
|
obj[key] = value;
|
|
@@ -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_pos.js"), exports);
|
|
34
36
|
__exportStar(require("./get.js"), exports);
|
|
35
37
|
__exportStar(require("./getbit.js"), exports);
|
|
36
38
|
__exportStar(require("./getdel.js"), exports);
|
|
@@ -136,7 +138,6 @@ __exportStar(require("./touch.js"), exports);
|
|
|
136
138
|
__exportStar(require("./ttl.js"), exports);
|
|
137
139
|
__exportStar(require("./type.js"), exports);
|
|
138
140
|
__exportStar(require("./unlink.js"), exports);
|
|
139
|
-
__exportStar(require("./xadd.js"), exports);
|
|
140
141
|
__exportStar(require("./zadd.js"), exports);
|
|
141
142
|
__exportStar(require("./zcard.js"), exports);
|
|
142
143
|
__exportStar(require("./zcount.js"), exports);
|
|
@@ -154,4 +155,7 @@ __exportStar(require("./zremrangebyscore.js"), exports);
|
|
|
154
155
|
__exportStar(require("./zrevrank.js"), exports);
|
|
155
156
|
__exportStar(require("./zscan.js"), exports);
|
|
156
157
|
__exportStar(require("./zscore.js"), exports);
|
|
158
|
+
__exportStar(require("./zunion.js"), exports);
|
|
157
159
|
__exportStar(require("./zunionstore.js"), exports);
|
|
160
|
+
__exportStar(require("./xadd.js"), exports);
|
|
161
|
+
__exportStar(require("./xrange.js"), exports);
|
|
@@ -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/pipeline.js
CHANGED
|
@@ -95,7 +95,6 @@ class Pipeline {
|
|
|
95
95
|
path,
|
|
96
96
|
body: Object.values(this.commands).map((c) => c.command),
|
|
97
97
|
}));
|
|
98
|
-
console.log("after req", { res });
|
|
99
98
|
return res.map(({ error, result }, i) => {
|
|
100
99
|
if (error) {
|
|
101
100
|
throw new error_js_1.UpstashError(`Command ${i + 1} [ ${this.commands[i].command[0]} ] failed: ${error}`);
|
|
@@ -1189,11 +1188,26 @@ class Pipeline {
|
|
|
1189
1188
|
writable: true,
|
|
1190
1189
|
value: (...args) => this.chain(new mod_js_1.ZUnionStoreCommand(args, this.commandOptions))
|
|
1191
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
|
+
});
|
|
1192
1200
|
this.client = opts.client;
|
|
1193
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
|
|
1194
1202
|
this.commandOptions = opts.commandOptions;
|
|
1195
1203
|
this.multiExec = opts.multiExec ?? false;
|
|
1196
1204
|
}
|
|
1205
|
+
/**
|
|
1206
|
+
* Returns the length of pipeline before the execution
|
|
1207
|
+
*/
|
|
1208
|
+
length() {
|
|
1209
|
+
return this.commands.length;
|
|
1210
|
+
}
|
|
1197
1211
|
/**
|
|
1198
1212
|
* Pushes a command into the pipeline and returns a chainable instance of the
|
|
1199
1213
|
* pipeline
|
|
@@ -1243,6 +1257,10 @@ class Pipeline {
|
|
|
1243
1257
|
* @see https://redis.io/commands/json.forget
|
|
1244
1258
|
*/
|
|
1245
1259
|
forget: (...args) => this.chain(new mod_js_1.JsonForgetCommand(args, this.commandOptions)),
|
|
1260
|
+
/**
|
|
1261
|
+
* @see https://redis.io/commands/geopos
|
|
1262
|
+
*/
|
|
1263
|
+
geopos: (...args) => new mod_js_1.GeoPosCommand(args, this.commandOptions).exec(this.client),
|
|
1246
1264
|
/**
|
|
1247
1265
|
* @see https://redis.io/commands/json.get
|
|
1248
1266
|
*/
|
package/script/pkg/redis.js
CHANGED
|
@@ -1008,10 +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
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
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
|
+
});
|
|
1015
1029
|
/**
|
|
1016
1030
|
* @see https://redis.io/commands/zadd
|
|
1017
1031
|
*/
|
|
@@ -1188,6 +1202,15 @@ class Redis {
|
|
|
1188
1202
|
writable: true,
|
|
1189
1203
|
value: (key, member) => new mod_js_1.ZScoreCommand([key, member], this.opts).exec(this.client)
|
|
1190
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
|
+
});
|
|
1191
1214
|
/**
|
|
1192
1215
|
* @see https://redis.io/commands/zunionstore
|
|
1193
1216
|
*/
|
|
@@ -1239,6 +1262,14 @@ class Redis {
|
|
|
1239
1262
|
* @see https://redis.io/commands/json.forget
|
|
1240
1263
|
*/
|
|
1241
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/geopos
|
|
1271
|
+
*/
|
|
1272
|
+
geopos: (...args) => new mod_js_1.GeoPosCommand(args, this.opts).exec(this.client),
|
|
1242
1273
|
/**
|
|
1243
1274
|
* @see https://redis.io/commands/json.get
|
|
1244
1275
|
*/
|
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
|
+
type Coordinates = {
|
|
3
|
+
lng: string;
|
|
4
|
+
lat: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* @see https://redis.io/commands/geopos
|
|
8
|
+
*/
|
|
9
|
+
export declare class GeoPosCommand<TData extends Coordinates[]> extends Command<(string | null)[][], TData> {
|
|
10
|
+
constructor(cmd: [string, ...string[]] | [string, string[]], opts?: CommandOptions<(string | null)[][], TData>);
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -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_pos.js";
|
|
18
20
|
export * from "./get.js";
|
|
19
21
|
export * from "./getbit.js";
|
|
20
22
|
export * from "./getdel.js";
|
|
@@ -120,7 +122,6 @@ export * from "./touch.js";
|
|
|
120
122
|
export * from "./ttl.js";
|
|
121
123
|
export * from "./type.js";
|
|
122
124
|
export * from "./unlink.js";
|
|
123
|
-
export * from "./xadd.js";
|
|
124
125
|
export * from "./zadd.js";
|
|
125
126
|
export * from "./zcard.js";
|
|
126
127
|
export * from "./zcount.js";
|
|
@@ -138,4 +139,7 @@ export * from "./zremrangebyscore.js";
|
|
|
138
139
|
export * from "./zrevrank.js";
|
|
139
140
|
export * from "./zscan.js";
|
|
140
141
|
export * from "./zscore.js";
|
|
142
|
+
export * from "./zunion.js";
|
|
141
143
|
export * from "./zunionstore.js";
|
|
144
|
+
export * from "./xadd.js";
|
|
145
|
+
export * from "./xrange.js";
|
|
@@ -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/pipeline.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BitOpCommand, DelCommand, ExistsCommand, FlushAllCommand, JsonGetCommand, MGetCommand, PingCommand, ScoreMember, ScriptExistsCommand, SetCommandOptions, TouchCommand, UnlinkCommand, ZAddCommandOptions, ZAddCommandOptionsWithIncr, ZRangeCommandOptions } from "./commands/mod.js";
|
|
1
|
+
import { BitOpCommand, DelCommand, ExistsCommand, FlushAllCommand, GeoPosCommand, JsonGetCommand, MGetCommand, PingCommand, ScoreMember, ScriptExistsCommand, SetCommandOptions, TouchCommand, UnlinkCommand, ZAddCommandOptions, ZAddCommandOptionsWithIncr, ZRangeCommandOptions } from "./commands/mod.js";
|
|
2
2
|
import { Command, CommandOptions } from "./commands/command.js";
|
|
3
3
|
import { Requester } from "./http.js";
|
|
4
4
|
import { CommandArgs } from "./types.js";
|
|
@@ -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
|
*/
|
|
@@ -619,6 +627,10 @@ export declare class Pipeline<TCommands extends Command<any, any>[] = []> {
|
|
|
619
627
|
* @see https://redis.io/commands/json.forget
|
|
620
628
|
*/
|
|
621
629
|
forget: (key: string, path?: string | undefined) => Pipeline<[...TCommands, Command<any, number>]>;
|
|
630
|
+
/**
|
|
631
|
+
* @see https://redis.io/commands/geopos
|
|
632
|
+
*/
|
|
633
|
+
geopos: (...args: CommandArgs<typeof GeoPosCommand>) => Promise<any>;
|
|
622
634
|
/**
|
|
623
635
|
* @see https://redis.io/commands/json.get
|
|
624
636
|
*/
|
package/types/pkg/redis.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CommandOptions, DelCommand, ExistsCommand, FlushAllCommand, JsonGetCommand, MGetCommand, PingCommand, ScoreMember, ScriptExistsCommand, SetCommandOptions, TouchCommand, UnlinkCommand, ZAddCommandOptions, ZAddCommandOptionsWithIncr, ZRangeCommandOptions } from "./commands/mod.js";
|
|
1
|
+
import { CommandOptions, DelCommand, ExistsCommand, FlushAllCommand, GeoPosCommand, JsonGetCommand, MGetCommand, PingCommand, ScoreMember, ScriptExistsCommand, SetCommandOptions, TouchCommand, UnlinkCommand, ZAddCommandOptions, ZAddCommandOptionsWithIncr, ZRangeCommandOptions } from "./commands/mod.js";
|
|
2
2
|
import { Requester, UpstashRequest, UpstashResponse } from "./http.js";
|
|
3
3
|
import { Pipeline } from "./pipeline.js";
|
|
4
4
|
import type { CommandArgs } from "./types.js";
|
|
@@ -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/geopos
|
|
70
|
+
*/
|
|
71
|
+
geopos: (...args: CommandArgs<typeof GeoPosCommand>) => Promise<any>;
|
|
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.9d88b94d-20231018";
|