@upstash/redis 0.0.0-ci.fcd85d60 → 0.0.0
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 +44 -280
- 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 +27 -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/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 +134 -9
- package/esm/pkg/pipeline.js +180 -12
- package/esm/pkg/redis.js +227 -2
- package/esm/pkg/script.js +77 -0
- package/esm/platforms/cloudflare.js +14 -26
- package/esm/platforms/fastly.js +10 -25
- package/esm/platforms/node_with_fetch.js +30 -26
- package/esm/platforms/nodejs.js +28 -26
- 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 +27 -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/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 +134 -9
- package/script/pkg/pipeline.js +179 -11
- package/script/pkg/redis.js +226 -1
- package/script/pkg/script.js +81 -0
- package/script/platforms/cloudflare.js +14 -26
- package/script/platforms/fastly.js +10 -25
- package/script/platforms/node_with_fetch.js +30 -26
- package/script/platforms/nodejs.js +28 -26
- 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 +27 -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/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 +73 -8
- package/types/pkg/pipeline.d.ts +262 -124
- package/types/pkg/redis.d.ts +162 -19
- package/types/pkg/script.d.ts +42 -0
- package/types/pkg/types.d.ts +27 -1
- package/types/platforms/cloudflare.d.ts +9 -4
- package/types/platforms/fastly.d.ts +3 -3
- package/types/platforms/node_with_fetch.d.ts +3 -3
- package/types/platforms/nodejs.d.ts +19 -3
- package/types/version.d.ts +1 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { toUint8Array, fromUint8Array } from "../../../deno.land/x/base64@v0.2.1/base64url.js";
|
|
2
|
+
const decoder = new TextDecoder();
|
|
3
|
+
const encoder = new TextEncoder();
|
|
4
|
+
/** Serializes a Uint8Array to a hexadecimal string. */
|
|
5
|
+
function toHexString(buf) {
|
|
6
|
+
return buf.reduce((hex, byte) => `${hex}${byte < 16 ? "0" : ""}${byte.toString(16)}`, "");
|
|
7
|
+
}
|
|
8
|
+
/** Deserializes a Uint8Array from a hexadecimal string. */
|
|
9
|
+
function fromHexString(hex) {
|
|
10
|
+
const len = hex.length;
|
|
11
|
+
if (len % 2 || !/^[0-9a-fA-F]+$/.test(hex)) {
|
|
12
|
+
throw new TypeError("Invalid hex string.");
|
|
13
|
+
}
|
|
14
|
+
hex = hex.toLowerCase();
|
|
15
|
+
const buf = new Uint8Array(Math.floor(len / 2));
|
|
16
|
+
const end = len / 2;
|
|
17
|
+
for (let i = 0; i < end; ++i) {
|
|
18
|
+
buf[i] = parseInt(hex.substr(i * 2, 2), 16);
|
|
19
|
+
}
|
|
20
|
+
return buf;
|
|
21
|
+
}
|
|
22
|
+
/** Decodes a Uint8Array to utf8-, base64-, or hex-encoded string. */
|
|
23
|
+
export function decode(buf, encoding = "utf8") {
|
|
24
|
+
if (/^utf-?8$/i.test(encoding)) {
|
|
25
|
+
return decoder.decode(buf);
|
|
26
|
+
}
|
|
27
|
+
else if (/^base64$/i.test(encoding)) {
|
|
28
|
+
return fromUint8Array(buf);
|
|
29
|
+
}
|
|
30
|
+
else if (/^hex(?:adecimal)?$/i.test(encoding)) {
|
|
31
|
+
return toHexString(buf);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw new TypeError("Unsupported string encoding.");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function encode(str, encoding = "utf8") {
|
|
38
|
+
if (/^utf-?8$/i.test(encoding)) {
|
|
39
|
+
return encoder.encode(str);
|
|
40
|
+
}
|
|
41
|
+
else if (/^base64$/i.test(encoding)) {
|
|
42
|
+
return toUint8Array(str);
|
|
43
|
+
}
|
|
44
|
+
else if (/^hex(?:adecimal)?$/i.test(encoding)) {
|
|
45
|
+
return fromHexString(str);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
throw new TypeError("Unsupported string encoding.");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { UpstashError } from "../error.js";
|
|
2
2
|
import { parseResponse } from "../util.js";
|
|
3
|
-
const defaultSerializer = (c) =>
|
|
3
|
+
const defaultSerializer = (c) => {
|
|
4
|
+
switch (typeof c) {
|
|
5
|
+
case "string":
|
|
6
|
+
case "number":
|
|
7
|
+
case "boolean":
|
|
8
|
+
return c;
|
|
9
|
+
default:
|
|
10
|
+
return JSON.stringify(c);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
4
13
|
/**
|
|
5
14
|
* Command offers default (de)serialization and the exec method to all commands.
|
|
6
15
|
*
|
|
@@ -37,7 +46,7 @@ export class Command {
|
|
|
37
46
|
opts.automaticDeserialization
|
|
38
47
|
? opts?.deserialize ?? parseResponse
|
|
39
48
|
: (x) => x;
|
|
40
|
-
this.command = command.map(this.serialize);
|
|
49
|
+
this.command = command.map((c) => this.serialize(c));
|
|
41
50
|
}
|
|
42
51
|
/**
|
|
43
52
|
* Execute the command using a client.
|
|
@@ -50,7 +59,7 @@ export class Command {
|
|
|
50
59
|
throw new UpstashError(error);
|
|
51
60
|
}
|
|
52
61
|
if (typeof result === "undefined") {
|
|
53
|
-
throw new Error(
|
|
62
|
+
throw new Error("Request did not return a result");
|
|
54
63
|
}
|
|
55
64
|
return this.deserialize(result);
|
|
56
65
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
function deserialize(result) {
|
|
3
|
+
if (result.length === 0) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
const obj = {};
|
|
7
|
+
while (result.length >= 2) {
|
|
8
|
+
const key = result.shift();
|
|
9
|
+
const value = result.shift();
|
|
10
|
+
try {
|
|
11
|
+
obj[key] = JSON.parse(value);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
obj[key] = value;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return obj;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @see https://redis.io/commands/hrandfield
|
|
21
|
+
*/
|
|
22
|
+
export class HRandFieldCommand extends Command {
|
|
23
|
+
constructor(cmd, opts) {
|
|
24
|
+
const command = ["hrandfield", cmd[0]];
|
|
25
|
+
if (typeof cmd[1] === "number") {
|
|
26
|
+
command.push(cmd[1]);
|
|
27
|
+
}
|
|
28
|
+
if (cmd[2]) {
|
|
29
|
+
command.push("WITHVALUES");
|
|
30
|
+
}
|
|
31
|
+
super(command, {
|
|
32
|
+
// @ts-ignore TODO:
|
|
33
|
+
deserialize: cmd[2]
|
|
34
|
+
? (result) => deserialize(result)
|
|
35
|
+
: opts?.deserialize,
|
|
36
|
+
...opts,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/json.arrtrim
|
|
4
|
+
*/
|
|
5
|
+
export class JsonArrTrimCommand extends Command {
|
|
6
|
+
constructor(cmd, opts) {
|
|
7
|
+
const path = cmd[1] ?? "$";
|
|
8
|
+
const start = cmd[2] ?? 0;
|
|
9
|
+
const stop = cmd[3] ?? 0;
|
|
10
|
+
super(["JSON.ARRTRIM", cmd[0], path, start, stop], opts);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/json.get
|
|
4
|
+
*/
|
|
5
|
+
export class JsonGetCommand extends Command {
|
|
6
|
+
constructor(cmd, opts) {
|
|
7
|
+
const command = ["JSON.GET"];
|
|
8
|
+
if (typeof cmd[1] === "string") {
|
|
9
|
+
// @ts-ignore - we know this is a string
|
|
10
|
+
command.push(...cmd);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
command.push(cmd[0]);
|
|
14
|
+
if (cmd[1]) {
|
|
15
|
+
if (cmd[1].indent) {
|
|
16
|
+
command.push("INDENT", cmd[1].indent);
|
|
17
|
+
}
|
|
18
|
+
if (cmd[1].newline) {
|
|
19
|
+
command.push("NEWLINE", cmd[1].newline);
|
|
20
|
+
}
|
|
21
|
+
if (cmd[1].space) {
|
|
22
|
+
command.push("SPACE", cmd[1].space);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// @ts-ignore - we know this is a string
|
|
26
|
+
command.push(...cmd.slice(2));
|
|
27
|
+
}
|
|
28
|
+
super(command, opts);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/json.set
|
|
4
|
+
*/
|
|
5
|
+
export class JsonSetCommand extends Command {
|
|
6
|
+
constructor(cmd, opts) {
|
|
7
|
+
const command = ["JSON.SET", cmd[0], cmd[1], cmd[2]];
|
|
8
|
+
if (cmd[3]) {
|
|
9
|
+
if (cmd[3].nx) {
|
|
10
|
+
command.push("NX");
|
|
11
|
+
}
|
|
12
|
+
else if (cmd[3].xx) {
|
|
13
|
+
command.push("XX");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
super(command, opts);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from "./command.js";
|
|
2
|
+
/**
|
|
3
|
+
* @see https://redis.io/commands/lpos
|
|
4
|
+
*/
|
|
5
|
+
export class LPosCommand extends Command {
|
|
6
|
+
constructor(cmd, opts) {
|
|
7
|
+
const args = ["lpos", cmd[0], cmd[1]];
|
|
8
|
+
if (typeof cmd[2]?.rank === "number") {
|
|
9
|
+
args.push("rank", cmd[2].rank);
|
|
10
|
+
}
|
|
11
|
+
if (typeof cmd[2]?.count === "number") {
|
|
12
|
+
args.push("count", cmd[2].count);
|
|
13
|
+
}
|
|
14
|
+
if (typeof cmd[2]?.maxLen === "number") {
|
|
15
|
+
args.push("maxLen", cmd[2].maxLen);
|
|
16
|
+
}
|
|
17
|
+
super(args, opts);
|
|
18
|
+
}
|
|
19
|
+
}
|
package/esm/pkg/commands/mod.js
CHANGED
|
@@ -17,6 +17,7 @@ export * from "./flushall.js";
|
|
|
17
17
|
export * from "./flushdb.js";
|
|
18
18
|
export * from "./get.js";
|
|
19
19
|
export * from "./getbit.js";
|
|
20
|
+
export * from "./getdel.js";
|
|
20
21
|
export * from "./getrange.js";
|
|
21
22
|
export * from "./getset.js";
|
|
22
23
|
export * from "./hdel.js";
|
|
@@ -29,6 +30,7 @@ export * from "./hkeys.js";
|
|
|
29
30
|
export * from "./hlen.js";
|
|
30
31
|
export * from "./hmget.js";
|
|
31
32
|
export * from "./hmset.js";
|
|
33
|
+
export * from "./hrandfield.js";
|
|
32
34
|
export * from "./hscan.js";
|
|
33
35
|
export * from "./hset.js";
|
|
34
36
|
export * from "./hsetnx.js";
|
|
@@ -37,11 +39,34 @@ export * from "./hvals.js";
|
|
|
37
39
|
export * from "./incr.js";
|
|
38
40
|
export * from "./incrby.js";
|
|
39
41
|
export * from "./incrbyfloat.js";
|
|
42
|
+
export * from "./json_arrappend.js";
|
|
43
|
+
export * from "./json_arrindex.js";
|
|
44
|
+
export * from "./json_arrinsert.js";
|
|
45
|
+
export * from "./json_arrlen.js";
|
|
46
|
+
export * from "./json_arrpop.js";
|
|
47
|
+
export * from "./json_arrtrim.js";
|
|
48
|
+
export * from "./json_clear.js";
|
|
49
|
+
export * from "./json_del.js";
|
|
50
|
+
export * from "./json_forget.js";
|
|
51
|
+
export * from "./json_get.js";
|
|
52
|
+
export * from "./json_mget.js";
|
|
53
|
+
export * from "./json_numincrby.js";
|
|
54
|
+
export * from "./json_nummultby.js";
|
|
55
|
+
export * from "./json_objkeys.js";
|
|
56
|
+
export * from "./json_objlen.js";
|
|
57
|
+
export * from "./json_resp.js";
|
|
58
|
+
export * from "./json_set.js";
|
|
59
|
+
export * from "./json_strappend.js";
|
|
60
|
+
export * from "./json_strlen.js";
|
|
61
|
+
export * from "./json_toggle.js";
|
|
62
|
+
export * from "./json_type.js";
|
|
40
63
|
export * from "./keys.js";
|
|
41
64
|
export * from "./lindex.js";
|
|
42
65
|
export * from "./linsert.js";
|
|
43
66
|
export * from "./llen.js";
|
|
67
|
+
export * from "./lmove.js";
|
|
44
68
|
export * from "./lpop.js";
|
|
69
|
+
export * from "./lpos.js";
|
|
45
70
|
export * from "./lpush.js";
|
|
46
71
|
export * from "./lpushx.js";
|
|
47
72
|
export * from "./lrange.js";
|
|
@@ -81,6 +106,7 @@ export * from "./sinter.js";
|
|
|
81
106
|
export * from "./sinterstore.js";
|
|
82
107
|
export * from "./sismember.js";
|
|
83
108
|
export * from "./smembers.js";
|
|
109
|
+
export * from "./smismember.js";
|
|
84
110
|
export * from "./smove.js";
|
|
85
111
|
export * from "./spop.js";
|
|
86
112
|
export * from "./srandmember.js";
|
|
@@ -94,6 +120,7 @@ export * from "./touch.js";
|
|
|
94
120
|
export * from "./ttl.js";
|
|
95
121
|
export * from "./type.js";
|
|
96
122
|
export * from "./unlink.js";
|
|
123
|
+
export * from "./xadd.js";
|
|
97
124
|
export * from "./zadd.js";
|
|
98
125
|
export * from "./zcard.js";
|
|
99
126
|
export * from "./zcount.js";
|
package/esm/pkg/commands/scan.js
CHANGED
package/esm/pkg/commands/set.js
CHANGED
|
@@ -6,17 +6,29 @@ export class SetCommand extends Command {
|
|
|
6
6
|
constructor([key, value, opts], cmdOpts) {
|
|
7
7
|
const command = ["set", key, value];
|
|
8
8
|
if (opts) {
|
|
9
|
+
if ("nx" in opts && opts.nx) {
|
|
10
|
+
command.push("nx");
|
|
11
|
+
}
|
|
12
|
+
else if ("xx" in opts && opts.xx) {
|
|
13
|
+
command.push("xx");
|
|
14
|
+
}
|
|
15
|
+
if ("get" in opts && opts.get) {
|
|
16
|
+
command.push("get");
|
|
17
|
+
}
|
|
9
18
|
if ("ex" in opts && typeof opts.ex === "number") {
|
|
10
19
|
command.push("ex", opts.ex);
|
|
11
20
|
}
|
|
12
21
|
else if ("px" in opts && typeof opts.px === "number") {
|
|
13
22
|
command.push("px", opts.px);
|
|
14
23
|
}
|
|
15
|
-
if ("
|
|
16
|
-
command.push("
|
|
24
|
+
else if ("exat" in opts && typeof opts.exat === "number") {
|
|
25
|
+
command.push("exat", opts.exat);
|
|
17
26
|
}
|
|
18
|
-
else if ("
|
|
19
|
-
command.push("
|
|
27
|
+
else if ("pxat" in opts && typeof opts.pxat === "number") {
|
|
28
|
+
command.push("pxat", opts.pxat);
|
|
29
|
+
}
|
|
30
|
+
else if ("keepTtl" in opts && opts.keepTtl) {
|
|
31
|
+
command.push("keepTtl");
|
|
20
32
|
}
|
|
21
33
|
}
|
|
22
34
|
super(command, cmdOpts);
|
|
@@ -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
|
+
}
|
|
@@ -12,6 +12,12 @@ export class ZRangeCommand extends Command {
|
|
|
12
12
|
if (opts?.byLex) {
|
|
13
13
|
command.push("bylex");
|
|
14
14
|
}
|
|
15
|
+
if (opts?.rev) {
|
|
16
|
+
command.push("rev");
|
|
17
|
+
}
|
|
18
|
+
if (typeof opts?.count !== "undefined" && typeof opts?.offset !== "undefined") {
|
|
19
|
+
command.push("limit", opts.offset, opts.count);
|
|
20
|
+
}
|
|
15
21
|
if (opts?.withScores) {
|
|
16
22
|
command.push("withscores");
|
|
17
23
|
}
|