@upstash/redis 0.0.0-ci.ce266dce → 0.0.0-ci.cfa9c86e-20230504
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 +20 -18
- 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 +26 -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/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 +92 -2
- package/esm/pkg/pipeline.js +172 -6
- package/esm/pkg/redis.js +223 -2
- package/esm/pkg/script.js +77 -0
- package/esm/platforms/cloudflare.js +10 -2
- package/esm/platforms/fastly.js +6 -0
- package/esm/platforms/node_with_fetch.js +26 -1
- package/esm/platforms/nodejs.js +24 -1
- package/esm/version.js +1 -0
- package/package.json +41 -54
- 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 +26 -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/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 +92 -2
- package/script/pkg/pipeline.js +171 -5
- package/script/pkg/redis.js +222 -1
- package/script/pkg/script.js +81 -0
- package/script/platforms/cloudflare.js +10 -2
- package/script/platforms/fastly.js +6 -0
- package/script/platforms/node_with_fetch.js +26 -1
- package/script/platforms/nodejs.js +24 -1
- package/script/version.js +4 -0
- package/types/deps/deno.land/x/base64@v0.2.1/base.d.ts +5 -0
- package/types/deps/deno.land/x/base64@v0.2.1/base64url.d.ts +1 -0
- package/types/deps/deno.land/x/sha1@v1.0.3/deps.d.ts +1 -0
- package/types/deps/deno.land/x/sha1@v1.0.3/mod.d.ts +26 -0
- package/types/deps/denopkg.com/chiefbiiko/std-encoding@v1.0.0/mod.d.ts +3 -0
- package/types/pkg/commands/bitop.d.ts +0 -1
- package/types/pkg/commands/bitpos.d.ts +1 -1
- package/types/pkg/commands/command.d.ts +5 -5
- package/types/pkg/commands/getdel.d.ts +7 -0
- package/types/pkg/commands/hdel.d.ts +1 -1
- package/types/pkg/commands/hrandfield.d.ts +9 -0
- package/types/pkg/commands/json_arrappend.d.ts +7 -0
- package/types/pkg/commands/json_arrindex.d.ts +13 -0
- package/types/pkg/commands/json_arrinsert.d.ts +7 -0
- package/types/pkg/commands/json_arrlen.d.ts +7 -0
- package/types/pkg/commands/json_arrpop.d.ts +7 -0
- package/types/pkg/commands/json_arrtrim.d.ts +7 -0
- package/types/pkg/commands/json_clear.d.ts +7 -0
- package/types/pkg/commands/json_del.d.ts +7 -0
- package/types/pkg/commands/json_forget.d.ts +7 -0
- package/types/pkg/commands/json_get.d.ts +15 -0
- package/types/pkg/commands/json_mget.d.ts +7 -0
- package/types/pkg/commands/json_numincrby.d.ts +7 -0
- package/types/pkg/commands/json_nummultby.d.ts +7 -0
- package/types/pkg/commands/json_objkeys.d.ts +7 -0
- package/types/pkg/commands/json_objlen.d.ts +7 -0
- package/types/pkg/commands/json_resp.d.ts +7 -0
- package/types/pkg/commands/json_set.d.ts +18 -0
- package/types/pkg/commands/json_strappend.d.ts +7 -0
- package/types/pkg/commands/json_strlen.d.ts +7 -0
- package/types/pkg/commands/json_toggle.d.ts +7 -0
- package/types/pkg/commands/json_type.d.ts +7 -0
- package/types/pkg/commands/lmove.d.ts +12 -0
- package/types/pkg/commands/lpop.d.ts +1 -1
- package/types/pkg/commands/lpos.d.ts +15 -0
- package/types/pkg/commands/mget.d.ts +1 -1
- package/types/pkg/commands/mod.d.ts +26 -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/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 +44 -7
- package/types/pkg/pipeline.d.ts +73 -10
- package/types/pkg/redis.d.ts +161 -18
- package/types/pkg/script.d.ts +42 -0
- package/types/pkg/types.d.ts +27 -1
- package/types/platforms/cloudflare.d.ts +9 -8
- package/types/platforms/fastly.d.ts +3 -7
- package/types/platforms/node_with_fetch.d.ts +3 -22
- package/types/platforms/nodejs.d.ts +4 -7
- package/types/version.d.ts +1 -0
package/script/pkg/http.js
CHANGED
|
@@ -28,9 +28,20 @@ class HttpClient {
|
|
|
28
28
|
writable: true,
|
|
29
29
|
value: void 0
|
|
30
30
|
});
|
|
31
|
+
this.options = {
|
|
32
|
+
backend: config.options?.backend,
|
|
33
|
+
agent: config.agent,
|
|
34
|
+
responseEncoding: config.responseEncoding ?? "base64",
|
|
35
|
+
cache: config.cache,
|
|
36
|
+
};
|
|
31
37
|
this.baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
32
|
-
this.headers = {
|
|
33
|
-
|
|
38
|
+
this.headers = {
|
|
39
|
+
"Content-Type": "application/json",
|
|
40
|
+
...config.headers,
|
|
41
|
+
};
|
|
42
|
+
if (this.options.responseEncoding === "base64") {
|
|
43
|
+
this.headers["Upstash-Encoding"] = "base64";
|
|
44
|
+
}
|
|
34
45
|
if (typeof config?.retry === "boolean" && config?.retry === false) {
|
|
35
46
|
this.retry = {
|
|
36
47
|
attempts: 1,
|
|
@@ -45,12 +56,31 @@ class HttpClient {
|
|
|
45
56
|
};
|
|
46
57
|
}
|
|
47
58
|
}
|
|
59
|
+
mergeTelemetry(telemetry) {
|
|
60
|
+
function merge(obj, key, value) {
|
|
61
|
+
if (!value) {
|
|
62
|
+
return obj;
|
|
63
|
+
}
|
|
64
|
+
if (obj[key]) {
|
|
65
|
+
obj[key] = [obj[key], value].join(",");
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
obj[key] = value;
|
|
69
|
+
}
|
|
70
|
+
return obj;
|
|
71
|
+
}
|
|
72
|
+
this.headers = merge(this.headers, "Upstash-Telemetry-Runtime", telemetry.runtime);
|
|
73
|
+
this.headers = merge(this.headers, "Upstash-Telemetry-Platform", telemetry.platform);
|
|
74
|
+
this.headers = merge(this.headers, "Upstash-Telemetry-Sdk", telemetry.sdk);
|
|
75
|
+
}
|
|
48
76
|
async request(req) {
|
|
49
77
|
const requestOptions = {
|
|
78
|
+
cache: this.options.cache,
|
|
50
79
|
method: "POST",
|
|
51
80
|
headers: this.headers,
|
|
52
81
|
body: JSON.stringify(req.body),
|
|
53
82
|
keepalive: true,
|
|
83
|
+
agent: this.options?.agent,
|
|
54
84
|
/**
|
|
55
85
|
* Fastly specific
|
|
56
86
|
*/
|
|
@@ -75,7 +105,67 @@ class HttpClient {
|
|
|
75
105
|
if (!res.ok) {
|
|
76
106
|
throw new error_js_1.UpstashError(body.error);
|
|
77
107
|
}
|
|
108
|
+
if (this.options?.responseEncoding === "base64") {
|
|
109
|
+
return Array.isArray(body) ? body.map(decode) : decode(body);
|
|
110
|
+
}
|
|
78
111
|
return body;
|
|
79
112
|
}
|
|
80
113
|
}
|
|
81
114
|
exports.HttpClient = HttpClient;
|
|
115
|
+
function base64decode(b64) {
|
|
116
|
+
let dec = "";
|
|
117
|
+
try {
|
|
118
|
+
/**
|
|
119
|
+
* Using only atob() is not enough because it doesn't work with unicode characters
|
|
120
|
+
*/
|
|
121
|
+
const binString = atob(b64);
|
|
122
|
+
const size = binString.length;
|
|
123
|
+
const bytes = new Uint8Array(size);
|
|
124
|
+
for (let i = 0; i < size; i++) {
|
|
125
|
+
bytes[i] = binString.charCodeAt(i);
|
|
126
|
+
}
|
|
127
|
+
dec = new TextDecoder().decode(bytes);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
dec = b64;
|
|
131
|
+
}
|
|
132
|
+
return dec;
|
|
133
|
+
// try {
|
|
134
|
+
// return decodeURIComponent(dec);
|
|
135
|
+
// } catch {
|
|
136
|
+
// return dec;
|
|
137
|
+
// }
|
|
138
|
+
}
|
|
139
|
+
function decode(raw) {
|
|
140
|
+
let result = undefined;
|
|
141
|
+
switch (typeof raw.result) {
|
|
142
|
+
case "undefined":
|
|
143
|
+
return raw;
|
|
144
|
+
case "number": {
|
|
145
|
+
result = raw.result;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
case "object": {
|
|
149
|
+
if (Array.isArray(raw.result)) {
|
|
150
|
+
result = raw.result.map((v) => typeof v === "string"
|
|
151
|
+
? base64decode(v)
|
|
152
|
+
: Array.isArray(v)
|
|
153
|
+
? v.map(base64decode)
|
|
154
|
+
: v);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
// If it's not an array it must be null
|
|
158
|
+
// Apparently null is an object in javascript
|
|
159
|
+
result = null;
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
case "string": {
|
|
164
|
+
result = raw.result === "OK" ? "OK" : base64decode(raw.result);
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
default:
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
return { result, error: raw.error };
|
|
171
|
+
}
|
package/script/pkg/pipeline.js
CHANGED
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Pipeline = void 0;
|
|
4
4
|
const mod_js_1 = require("./commands/mod.js");
|
|
5
5
|
const error_js_1 = require("./error.js");
|
|
6
|
+
const zmscore_js_1 = require("./commands/zmscore.js");
|
|
7
|
+
const hrandfield_js_1 = require("./commands/hrandfield.js");
|
|
8
|
+
const zdiffstore_js_1 = require("./commands/zdiffstore.js");
|
|
6
9
|
/**
|
|
7
10
|
* Upstash REST API supports command pipelining to send multiple commands in
|
|
8
11
|
* batch, instead of sending each command one by one and waiting for a response.
|
|
@@ -19,7 +22,7 @@ const error_js_1 = require("./error.js");
|
|
|
19
22
|
* **Examples:**
|
|
20
23
|
*
|
|
21
24
|
* ```ts
|
|
22
|
-
* const p = redis.pipeline()
|
|
25
|
+
* const p = redis.pipeline() // or redis.multi()
|
|
23
26
|
* p.set("key","value")
|
|
24
27
|
* p.get("key")
|
|
25
28
|
* const res = await p.exec()
|
|
@@ -42,7 +45,7 @@ const error_js_1 = require("./error.js");
|
|
|
42
45
|
* ```
|
|
43
46
|
*/
|
|
44
47
|
class Pipeline {
|
|
45
|
-
constructor(
|
|
48
|
+
constructor(opts) {
|
|
46
49
|
Object.defineProperty(this, "client", {
|
|
47
50
|
enumerable: true,
|
|
48
51
|
configurable: true,
|
|
@@ -61,6 +64,12 @@ class Pipeline {
|
|
|
61
64
|
writable: true,
|
|
62
65
|
value: void 0
|
|
63
66
|
});
|
|
67
|
+
Object.defineProperty(this, "multiExec", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
configurable: true,
|
|
70
|
+
writable: true,
|
|
71
|
+
value: void 0
|
|
72
|
+
});
|
|
64
73
|
/**
|
|
65
74
|
* Send the pipeline request to upstash.
|
|
66
75
|
*
|
|
@@ -79,8 +88,9 @@ class Pipeline {
|
|
|
79
88
|
if (this.commands.length === 0) {
|
|
80
89
|
throw new Error("Pipeline is empty");
|
|
81
90
|
}
|
|
91
|
+
const path = this.multiExec ? ["multi-exec"] : ["pipeline"];
|
|
82
92
|
const res = (await this.client.request({
|
|
83
|
-
path
|
|
93
|
+
path,
|
|
84
94
|
body: Object.values(this.commands).map((c) => c.command),
|
|
85
95
|
}));
|
|
86
96
|
return res.map(({ error, result }, i) => {
|
|
@@ -127,6 +137,15 @@ class Pipeline {
|
|
|
127
137
|
writable: true,
|
|
128
138
|
value: (...args) => this.chain(new mod_js_1.BitPosCommand(args, this.commandOptions))
|
|
129
139
|
});
|
|
140
|
+
/**
|
|
141
|
+
* @see https://redis.io/commands/zdiffstore
|
|
142
|
+
*/
|
|
143
|
+
Object.defineProperty(this, "zdiffstore", {
|
|
144
|
+
enumerable: true,
|
|
145
|
+
configurable: true,
|
|
146
|
+
writable: true,
|
|
147
|
+
value: (...args) => this.chain(new zdiffstore_js_1.ZDiffStoreCommand(args, this.commandOptions))
|
|
148
|
+
});
|
|
130
149
|
/**
|
|
131
150
|
* @see https://redis.io/commands/dbsize
|
|
132
151
|
*/
|
|
@@ -253,6 +272,15 @@ class Pipeline {
|
|
|
253
272
|
writable: true,
|
|
254
273
|
value: (...args) => this.chain(new mod_js_1.GetBitCommand(args, this.commandOptions))
|
|
255
274
|
});
|
|
275
|
+
/**
|
|
276
|
+
* @see https://redis.io/commands/getdel
|
|
277
|
+
*/
|
|
278
|
+
Object.defineProperty(this, "getdel", {
|
|
279
|
+
enumerable: true,
|
|
280
|
+
configurable: true,
|
|
281
|
+
writable: true,
|
|
282
|
+
value: (...args) => this.chain(new mod_js_1.GetDelCommand(args, this.commandOptions))
|
|
283
|
+
});
|
|
256
284
|
/**
|
|
257
285
|
* @see https://redis.io/commands/getrange
|
|
258
286
|
*/
|
|
@@ -361,6 +389,15 @@ class Pipeline {
|
|
|
361
389
|
writable: true,
|
|
362
390
|
value: (key, kv) => this.chain(new mod_js_1.HMSetCommand([key, kv], this.commandOptions))
|
|
363
391
|
});
|
|
392
|
+
/**
|
|
393
|
+
* @see https://redis.io/commands/hrandfield
|
|
394
|
+
*/
|
|
395
|
+
Object.defineProperty(this, "hrandfield", {
|
|
396
|
+
enumerable: true,
|
|
397
|
+
configurable: true,
|
|
398
|
+
writable: true,
|
|
399
|
+
value: (key, count, withValues) => this.chain(new hrandfield_js_1.HRandFieldCommand([key, count, withValues], this.commandOptions))
|
|
400
|
+
});
|
|
364
401
|
/**
|
|
365
402
|
* @see https://redis.io/commands/hscan
|
|
366
403
|
*/
|
|
@@ -469,6 +506,15 @@ class Pipeline {
|
|
|
469
506
|
writable: true,
|
|
470
507
|
value: (...args) => this.chain(new mod_js_1.LLenCommand(args, this.commandOptions))
|
|
471
508
|
});
|
|
509
|
+
/**
|
|
510
|
+
* @see https://redis.io/commands/lmove
|
|
511
|
+
*/
|
|
512
|
+
Object.defineProperty(this, "lmove", {
|
|
513
|
+
enumerable: true,
|
|
514
|
+
configurable: true,
|
|
515
|
+
writable: true,
|
|
516
|
+
value: (...args) => this.chain(new mod_js_1.LMoveCommand(args, this.commandOptions))
|
|
517
|
+
});
|
|
472
518
|
/**
|
|
473
519
|
* @see https://redis.io/commands/lpop
|
|
474
520
|
*/
|
|
@@ -478,6 +524,15 @@ class Pipeline {
|
|
|
478
524
|
writable: true,
|
|
479
525
|
value: (...args) => this.chain(new mod_js_1.LPopCommand(args, this.commandOptions))
|
|
480
526
|
});
|
|
527
|
+
/**
|
|
528
|
+
* @see https://redis.io/commands/lpos
|
|
529
|
+
*/
|
|
530
|
+
Object.defineProperty(this, "lpos", {
|
|
531
|
+
enumerable: true,
|
|
532
|
+
configurable: true,
|
|
533
|
+
writable: true,
|
|
534
|
+
value: (...args) => this.chain(new mod_js_1.LPosCommand(args, this.commandOptions))
|
|
535
|
+
});
|
|
481
536
|
/**
|
|
482
537
|
* @see https://redis.io/commands/lpush
|
|
483
538
|
*/
|
|
@@ -829,6 +884,15 @@ class Pipeline {
|
|
|
829
884
|
writable: true,
|
|
830
885
|
value: (...args) => this.chain(new mod_js_1.SMembersCommand(args, this.commandOptions))
|
|
831
886
|
});
|
|
887
|
+
/**
|
|
888
|
+
* @see https://redis.io/commands/smismember
|
|
889
|
+
*/
|
|
890
|
+
Object.defineProperty(this, "smismember", {
|
|
891
|
+
enumerable: true,
|
|
892
|
+
configurable: true,
|
|
893
|
+
writable: true,
|
|
894
|
+
value: (key, members) => this.chain(new mod_js_1.SMIsMemberCommand([key, members], this.commandOptions))
|
|
895
|
+
});
|
|
832
896
|
/**
|
|
833
897
|
* @see https://redis.io/commands/smove
|
|
834
898
|
*/
|
|
@@ -1005,6 +1069,15 @@ class Pipeline {
|
|
|
1005
1069
|
writable: true,
|
|
1006
1070
|
value: (...args) => this.chain(new mod_js_1.ZLexCountCommand(args, this.commandOptions))
|
|
1007
1071
|
});
|
|
1072
|
+
/**
|
|
1073
|
+
* @see https://redis.io/commands/zmscore
|
|
1074
|
+
*/
|
|
1075
|
+
Object.defineProperty(this, "zmscore", {
|
|
1076
|
+
enumerable: true,
|
|
1077
|
+
configurable: true,
|
|
1078
|
+
writable: true,
|
|
1079
|
+
value: (...args) => this.chain(new zmscore_js_1.ZMScoreCommand(args, this.commandOptions))
|
|
1080
|
+
});
|
|
1008
1081
|
/**
|
|
1009
1082
|
* @see https://redis.io/commands/zpopmax
|
|
1010
1083
|
*/
|
|
@@ -1113,9 +1186,10 @@ class Pipeline {
|
|
|
1113
1186
|
writable: true,
|
|
1114
1187
|
value: (...args) => this.chain(new mod_js_1.ZUnionStoreCommand(args, this.commandOptions))
|
|
1115
1188
|
});
|
|
1116
|
-
this.client = client;
|
|
1189
|
+
this.client = opts.client;
|
|
1117
1190
|
this.commands = [];
|
|
1118
|
-
this.commandOptions = commandOptions;
|
|
1191
|
+
this.commandOptions = opts.commandOptions;
|
|
1192
|
+
this.multiExec = opts.multiExec ?? false;
|
|
1119
1193
|
}
|
|
1120
1194
|
/**
|
|
1121
1195
|
* Pushes a command into the pipelien and returns a chainable instance of the
|
|
@@ -1125,5 +1199,97 @@ class Pipeline {
|
|
|
1125
1199
|
this.commands.push(command);
|
|
1126
1200
|
return this;
|
|
1127
1201
|
}
|
|
1202
|
+
/**
|
|
1203
|
+
* @see https://redis.io/commands/?group=json
|
|
1204
|
+
*/
|
|
1205
|
+
get json() {
|
|
1206
|
+
// For some reason we needed to define the types manually, otherwise Deno wouldn't build it
|
|
1207
|
+
return {
|
|
1208
|
+
/**
|
|
1209
|
+
* @see https://redis.io/commands/json.arrappend
|
|
1210
|
+
*/
|
|
1211
|
+
arrappend: (...args) => this.chain(new mod_js_1.JsonArrAppendCommand(args, this.commandOptions)),
|
|
1212
|
+
/**
|
|
1213
|
+
* @see https://redis.io/commands/json.arrindex
|
|
1214
|
+
*/
|
|
1215
|
+
arrindex: (...args) => this.chain(new mod_js_1.JsonArrIndexCommand(args, this.commandOptions)),
|
|
1216
|
+
/**
|
|
1217
|
+
* @see https://redis.io/commands/json.arrinsert
|
|
1218
|
+
*/
|
|
1219
|
+
arrinsert: (...args) => this.chain(new mod_js_1.JsonArrInsertCommand(args, this.commandOptions)),
|
|
1220
|
+
/**
|
|
1221
|
+
* @see https://redis.io/commands/json.arrlen
|
|
1222
|
+
*/
|
|
1223
|
+
arrlen: (...args) => this.chain(new mod_js_1.JsonArrLenCommand(args, this.commandOptions)),
|
|
1224
|
+
/**
|
|
1225
|
+
* @see https://redis.io/commands/json.arrpop
|
|
1226
|
+
*/
|
|
1227
|
+
arrpop: (...args) => this.chain(new mod_js_1.JsonArrPopCommand(args, this.commandOptions)),
|
|
1228
|
+
/**
|
|
1229
|
+
* @see https://redis.io/commands/json.arrtrim
|
|
1230
|
+
*/
|
|
1231
|
+
arrtrim: (...args) => this.chain(new mod_js_1.JsonArrTrimCommand(args, this.commandOptions)),
|
|
1232
|
+
/**
|
|
1233
|
+
* @see https://redis.io/commands/json.clear
|
|
1234
|
+
*/
|
|
1235
|
+
clear: (...args) => this.chain(new mod_js_1.JsonClearCommand(args, this.commandOptions)),
|
|
1236
|
+
/**
|
|
1237
|
+
* @see https://redis.io/commands/json.del
|
|
1238
|
+
*/
|
|
1239
|
+
del: (...args) => this.chain(new mod_js_1.JsonDelCommand(args, this.commandOptions)),
|
|
1240
|
+
/**
|
|
1241
|
+
* @see https://redis.io/commands/json.forget
|
|
1242
|
+
*/
|
|
1243
|
+
forget: (...args) => this.chain(new mod_js_1.JsonForgetCommand(args, this.commandOptions)),
|
|
1244
|
+
/**
|
|
1245
|
+
* @see https://redis.io/commands/json.get
|
|
1246
|
+
*/
|
|
1247
|
+
get: (...args) => this.chain(new mod_js_1.JsonGetCommand(args, this.commandOptions)),
|
|
1248
|
+
/**
|
|
1249
|
+
* @see https://redis.io/commands/json.mget
|
|
1250
|
+
*/
|
|
1251
|
+
mget: (...args) => this.chain(new mod_js_1.JsonMGetCommand(args, this.commandOptions)),
|
|
1252
|
+
/**
|
|
1253
|
+
* @see https://redis.io/commands/json.numincrby
|
|
1254
|
+
*/
|
|
1255
|
+
numincrby: (...args) => this.chain(new mod_js_1.JsonNumIncrByCommand(args, this.commandOptions)),
|
|
1256
|
+
/**
|
|
1257
|
+
* @see https://redis.io/commands/json.nummultby
|
|
1258
|
+
*/
|
|
1259
|
+
nummultby: (...args) => this.chain(new mod_js_1.JsonNumMultByCommand(args, this.commandOptions)),
|
|
1260
|
+
/**
|
|
1261
|
+
* @see https://redis.io/commands/json.objkeys
|
|
1262
|
+
*/
|
|
1263
|
+
objkeys: (...args) => this.chain(new mod_js_1.JsonObjKeysCommand(args, this.commandOptions)),
|
|
1264
|
+
/**
|
|
1265
|
+
* @see https://redis.io/commands/json.objlen
|
|
1266
|
+
*/
|
|
1267
|
+
objlen: (...args) => this.chain(new mod_js_1.JsonObjLenCommand(args, this.commandOptions)),
|
|
1268
|
+
/**
|
|
1269
|
+
* @see https://redis.io/commands/json.resp
|
|
1270
|
+
*/
|
|
1271
|
+
resp: (...args) => this.chain(new mod_js_1.JsonRespCommand(args, this.commandOptions)),
|
|
1272
|
+
/**
|
|
1273
|
+
* @see https://redis.io/commands/json.set
|
|
1274
|
+
*/
|
|
1275
|
+
set: (...args) => this.chain(new mod_js_1.JsonSetCommand(args, this.commandOptions)),
|
|
1276
|
+
/**
|
|
1277
|
+
* @see https://redis.io/commands/json.strappend
|
|
1278
|
+
*/
|
|
1279
|
+
strappend: (...args) => this.chain(new mod_js_1.JsonStrAppendCommand(args, this.commandOptions)),
|
|
1280
|
+
/**
|
|
1281
|
+
* @see https://redis.io/commands/json.strlen
|
|
1282
|
+
*/
|
|
1283
|
+
strlen: (...args) => this.chain(new mod_js_1.JsonStrLenCommand(args, this.commandOptions)),
|
|
1284
|
+
/**
|
|
1285
|
+
* @see https://redis.io/commands/json.toggle
|
|
1286
|
+
*/
|
|
1287
|
+
toggle: (...args) => this.chain(new mod_js_1.JsonToggleCommand(args, this.commandOptions)),
|
|
1288
|
+
/**
|
|
1289
|
+
* @see https://redis.io/commands/json.type
|
|
1290
|
+
*/
|
|
1291
|
+
type: (...args) => this.chain(new mod_js_1.JsonTypeCommand(args, this.commandOptions)),
|
|
1292
|
+
};
|
|
1293
|
+
}
|
|
1128
1294
|
}
|
|
1129
1295
|
exports.Pipeline = Pipeline;
|
package/script/pkg/redis.js
CHANGED
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Redis = void 0;
|
|
4
4
|
const mod_js_1 = require("./commands/mod.js");
|
|
5
5
|
const pipeline_js_1 = require("./pipeline.js");
|
|
6
|
+
const script_js_1 = require("./script.js");
|
|
7
|
+
const zmscore_js_1 = require("./commands/zmscore.js");
|
|
8
|
+
const zdiffstore_js_1 = require("./commands/zdiffstore.js");
|
|
6
9
|
/**
|
|
7
10
|
* Serverless redis client for upstash.
|
|
8
11
|
*/
|
|
@@ -31,6 +34,45 @@ class Redis {
|
|
|
31
34
|
writable: true,
|
|
32
35
|
value: void 0
|
|
33
36
|
});
|
|
37
|
+
Object.defineProperty(this, "enableTelemetry", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true,
|
|
41
|
+
value: void 0
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* Wrap a new middleware around the HTTP client.
|
|
45
|
+
*/
|
|
46
|
+
Object.defineProperty(this, "use", {
|
|
47
|
+
enumerable: true,
|
|
48
|
+
configurable: true,
|
|
49
|
+
writable: true,
|
|
50
|
+
value: (middleware) => {
|
|
51
|
+
const makeRequest = this.client.request.bind(this.client);
|
|
52
|
+
this.client.request = (req) => middleware(req, makeRequest);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* Technically this is not private, we can hide it from intellisense by doing this
|
|
57
|
+
*/
|
|
58
|
+
Object.defineProperty(this, "addTelemetry", {
|
|
59
|
+
enumerable: true,
|
|
60
|
+
configurable: true,
|
|
61
|
+
writable: true,
|
|
62
|
+
value: (telemetry) => {
|
|
63
|
+
if (!this.enableTelemetry) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
// @ts-ignore - The `Requester` interface does not know about this method but it will be there
|
|
68
|
+
// as long as the user uses the standard HttpClient
|
|
69
|
+
this.client.mergeTelemetry(telemetry);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// ignore
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
34
76
|
/**
|
|
35
77
|
* Create a new pipeline that allows you to send requests in bulk.
|
|
36
78
|
*
|
|
@@ -40,7 +82,30 @@ class Redis {
|
|
|
40
82
|
enumerable: true,
|
|
41
83
|
configurable: true,
|
|
42
84
|
writable: true,
|
|
43
|
-
value: () => new pipeline_js_1.Pipeline(
|
|
85
|
+
value: () => new pipeline_js_1.Pipeline({
|
|
86
|
+
client: this.client,
|
|
87
|
+
commandOptions: this.opts,
|
|
88
|
+
multiExec: false,
|
|
89
|
+
})
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* Create a new transaction to allow executing multiple steps atomically.
|
|
93
|
+
*
|
|
94
|
+
* All the commands in a transaction are serialized and executed sequentially. A request sent by
|
|
95
|
+
* another client will never be served in the middle of the execution of a Redis Transaction. This
|
|
96
|
+
* guarantees that the commands are executed as a single isolated operation.
|
|
97
|
+
*
|
|
98
|
+
* @see {@link Pipeline}
|
|
99
|
+
*/
|
|
100
|
+
Object.defineProperty(this, "multi", {
|
|
101
|
+
enumerable: true,
|
|
102
|
+
configurable: true,
|
|
103
|
+
writable: true,
|
|
104
|
+
value: () => new pipeline_js_1.Pipeline({
|
|
105
|
+
client: this.client,
|
|
106
|
+
commandOptions: this.opts,
|
|
107
|
+
multiExec: true,
|
|
108
|
+
})
|
|
44
109
|
});
|
|
45
110
|
/**
|
|
46
111
|
* @see https://redis.io/commands/append
|
|
@@ -204,6 +269,15 @@ class Redis {
|
|
|
204
269
|
writable: true,
|
|
205
270
|
value: (...args) => new mod_js_1.GetBitCommand(args, this.opts).exec(this.client)
|
|
206
271
|
});
|
|
272
|
+
/**
|
|
273
|
+
* @see https://redis.io/commands/getdel
|
|
274
|
+
*/
|
|
275
|
+
Object.defineProperty(this, "getdel", {
|
|
276
|
+
enumerable: true,
|
|
277
|
+
configurable: true,
|
|
278
|
+
writable: true,
|
|
279
|
+
value: (...args) => new mod_js_1.GetDelCommand(args, this.opts).exec(this.client)
|
|
280
|
+
});
|
|
207
281
|
/**
|
|
208
282
|
* @see https://redis.io/commands/getrange
|
|
209
283
|
*/
|
|
@@ -312,6 +386,16 @@ class Redis {
|
|
|
312
386
|
writable: true,
|
|
313
387
|
value: (key, kv) => new mod_js_1.HMSetCommand([key, kv], this.opts).exec(this.client)
|
|
314
388
|
});
|
|
389
|
+
/**
|
|
390
|
+
* @see https://redis.io/commands/hrandfield
|
|
391
|
+
*/
|
|
392
|
+
Object.defineProperty(this, "hrandfield", {
|
|
393
|
+
enumerable: true,
|
|
394
|
+
configurable: true,
|
|
395
|
+
writable: true,
|
|
396
|
+
value: (key, count, withValues) => new mod_js_1.HRandFieldCommand([key, count, withValues], this.opts)
|
|
397
|
+
.exec(this.client)
|
|
398
|
+
});
|
|
315
399
|
/**
|
|
316
400
|
* @see https://redis.io/commands/hscan
|
|
317
401
|
*/
|
|
@@ -420,6 +504,15 @@ class Redis {
|
|
|
420
504
|
writable: true,
|
|
421
505
|
value: (...args) => new mod_js_1.LLenCommand(args, this.opts).exec(this.client)
|
|
422
506
|
});
|
|
507
|
+
/**
|
|
508
|
+
* @see https://redis.io/commands/lmove
|
|
509
|
+
*/
|
|
510
|
+
Object.defineProperty(this, "lmove", {
|
|
511
|
+
enumerable: true,
|
|
512
|
+
configurable: true,
|
|
513
|
+
writable: true,
|
|
514
|
+
value: (...args) => new mod_js_1.LMoveCommand(args, this.opts).exec(this.client)
|
|
515
|
+
});
|
|
423
516
|
/**
|
|
424
517
|
* @see https://redis.io/commands/lpop
|
|
425
518
|
*/
|
|
@@ -429,6 +522,15 @@ class Redis {
|
|
|
429
522
|
writable: true,
|
|
430
523
|
value: (...args) => new mod_js_1.LPopCommand(args, this.opts).exec(this.client)
|
|
431
524
|
});
|
|
525
|
+
/**
|
|
526
|
+
* @see https://redis.io/commands/lpos
|
|
527
|
+
*/
|
|
528
|
+
Object.defineProperty(this, "lpos", {
|
|
529
|
+
enumerable: true,
|
|
530
|
+
configurable: true,
|
|
531
|
+
writable: true,
|
|
532
|
+
value: (...args) => new mod_js_1.LPosCommand(args, this.opts).exec(this.client)
|
|
533
|
+
});
|
|
432
534
|
/**
|
|
433
535
|
* @see https://redis.io/commands/lpush
|
|
434
536
|
*/
|
|
@@ -771,6 +873,15 @@ class Redis {
|
|
|
771
873
|
writable: true,
|
|
772
874
|
value: (key, member) => new mod_js_1.SIsMemberCommand([key, member], this.opts).exec(this.client)
|
|
773
875
|
});
|
|
876
|
+
/**
|
|
877
|
+
* @see https://redis.io/commands/smismember
|
|
878
|
+
*/
|
|
879
|
+
Object.defineProperty(this, "smismember", {
|
|
880
|
+
enumerable: true,
|
|
881
|
+
configurable: true,
|
|
882
|
+
writable: true,
|
|
883
|
+
value: (key, members) => new mod_js_1.SMIsMemberCommand([key, members], this.opts).exec(this.client)
|
|
884
|
+
});
|
|
774
885
|
/**
|
|
775
886
|
* @see https://redis.io/commands/smembers
|
|
776
887
|
*/
|
|
@@ -929,6 +1040,15 @@ class Redis {
|
|
|
929
1040
|
writable: true,
|
|
930
1041
|
value: (...args) => new mod_js_1.ZCountCommand(args, this.opts).exec(this.client)
|
|
931
1042
|
});
|
|
1043
|
+
/**
|
|
1044
|
+
* @see https://redis.io/commands/zdiffstore
|
|
1045
|
+
*/
|
|
1046
|
+
Object.defineProperty(this, "zdiffstore", {
|
|
1047
|
+
enumerable: true,
|
|
1048
|
+
configurable: true,
|
|
1049
|
+
writable: true,
|
|
1050
|
+
value: (...args) => new zdiffstore_js_1.ZDiffStoreCommand(args, this.opts).exec(this.client)
|
|
1051
|
+
});
|
|
932
1052
|
/**
|
|
933
1053
|
* @see https://redis.io/commands/zincrby
|
|
934
1054
|
*/
|
|
@@ -956,6 +1076,15 @@ class Redis {
|
|
|
956
1076
|
writable: true,
|
|
957
1077
|
value: (...args) => new mod_js_1.ZLexCountCommand(args, this.opts).exec(this.client)
|
|
958
1078
|
});
|
|
1079
|
+
/**
|
|
1080
|
+
* @see https://redis.io/commands/zmscore
|
|
1081
|
+
*/
|
|
1082
|
+
Object.defineProperty(this, "zmscore", {
|
|
1083
|
+
enumerable: true,
|
|
1084
|
+
configurable: true,
|
|
1085
|
+
writable: true,
|
|
1086
|
+
value: (...args) => new zmscore_js_1.ZMScoreCommand(args, this.opts).exec(this.client)
|
|
1087
|
+
});
|
|
959
1088
|
/**
|
|
960
1089
|
* @see https://redis.io/commands/zpopmax
|
|
961
1090
|
*/
|
|
@@ -1066,6 +1195,98 @@ class Redis {
|
|
|
1066
1195
|
});
|
|
1067
1196
|
this.client = client;
|
|
1068
1197
|
this.opts = opts;
|
|
1198
|
+
this.enableTelemetry = opts?.enableTelemetry ?? true;
|
|
1199
|
+
}
|
|
1200
|
+
get json() {
|
|
1201
|
+
return {
|
|
1202
|
+
/**
|
|
1203
|
+
* @see https://redis.io/commands/json.arrappend
|
|
1204
|
+
*/
|
|
1205
|
+
arrappend: (...args) => new mod_js_1.JsonArrAppendCommand(args, this.opts).exec(this.client),
|
|
1206
|
+
/**
|
|
1207
|
+
* @see https://redis.io/commands/json.arrindex
|
|
1208
|
+
*/
|
|
1209
|
+
arrindex: (...args) => new mod_js_1.JsonArrIndexCommand(args, this.opts).exec(this.client),
|
|
1210
|
+
/**
|
|
1211
|
+
* @see https://redis.io/commands/json.arrinsert
|
|
1212
|
+
*/
|
|
1213
|
+
arrinsert: (...args) => new mod_js_1.JsonArrInsertCommand(args, this.opts).exec(this.client),
|
|
1214
|
+
/**
|
|
1215
|
+
* @see https://redis.io/commands/json.arrlen
|
|
1216
|
+
*/
|
|
1217
|
+
arrlen: (...args) => new mod_js_1.JsonArrLenCommand(args, this.opts).exec(this.client),
|
|
1218
|
+
/**
|
|
1219
|
+
* @see https://redis.io/commands/json.arrpop
|
|
1220
|
+
*/
|
|
1221
|
+
arrpop: (...args) => new mod_js_1.JsonArrPopCommand(args, this.opts).exec(this.client),
|
|
1222
|
+
/**
|
|
1223
|
+
* @see https://redis.io/commands/json.arrtrim
|
|
1224
|
+
*/
|
|
1225
|
+
arrtrim: (...args) => new mod_js_1.JsonArrTrimCommand(args, this.opts).exec(this.client),
|
|
1226
|
+
/**
|
|
1227
|
+
* @see https://redis.io/commands/json.clear
|
|
1228
|
+
*/
|
|
1229
|
+
clear: (...args) => new mod_js_1.JsonClearCommand(args, this.opts).exec(this.client),
|
|
1230
|
+
/**
|
|
1231
|
+
* @see https://redis.io/commands/json.del
|
|
1232
|
+
*/
|
|
1233
|
+
del: (...args) => new mod_js_1.JsonDelCommand(args, this.opts).exec(this.client),
|
|
1234
|
+
/**
|
|
1235
|
+
* @see https://redis.io/commands/json.forget
|
|
1236
|
+
*/
|
|
1237
|
+
forget: (...args) => new mod_js_1.JsonForgetCommand(args, this.opts).exec(this.client),
|
|
1238
|
+
/**
|
|
1239
|
+
* @see https://redis.io/commands/json.get
|
|
1240
|
+
*/
|
|
1241
|
+
get: (...args) => new mod_js_1.JsonGetCommand(args, this.opts).exec(this.client),
|
|
1242
|
+
/**
|
|
1243
|
+
* @see https://redis.io/commands/json.mget
|
|
1244
|
+
*/
|
|
1245
|
+
mget: (...args) => new mod_js_1.JsonMGetCommand(args, this.opts).exec(this.client),
|
|
1246
|
+
/**
|
|
1247
|
+
* @see https://redis.io/commands/json.numincrby
|
|
1248
|
+
*/
|
|
1249
|
+
numincrby: (...args) => new mod_js_1.JsonNumIncrByCommand(args, this.opts).exec(this.client),
|
|
1250
|
+
/**
|
|
1251
|
+
* @see https://redis.io/commands/json.nummultby
|
|
1252
|
+
*/
|
|
1253
|
+
nummultby: (...args) => new mod_js_1.JsonNumMultByCommand(args, this.opts).exec(this.client),
|
|
1254
|
+
/**
|
|
1255
|
+
* @see https://redis.io/commands/json.objkeys
|
|
1256
|
+
*/
|
|
1257
|
+
objkeys: (...args) => new mod_js_1.JsonObjKeysCommand(args, this.opts).exec(this.client),
|
|
1258
|
+
/**
|
|
1259
|
+
* @see https://redis.io/commands/json.objlen
|
|
1260
|
+
*/
|
|
1261
|
+
objlen: (...args) => new mod_js_1.JsonObjLenCommand(args, this.opts).exec(this.client),
|
|
1262
|
+
/**
|
|
1263
|
+
* @see https://redis.io/commands/json.resp
|
|
1264
|
+
*/
|
|
1265
|
+
resp: (...args) => new mod_js_1.JsonRespCommand(args, this.opts).exec(this.client),
|
|
1266
|
+
/**
|
|
1267
|
+
* @see https://redis.io/commands/json.set
|
|
1268
|
+
*/
|
|
1269
|
+
set: (...args) => new mod_js_1.JsonSetCommand(args, this.opts).exec(this.client),
|
|
1270
|
+
/**
|
|
1271
|
+
* @see https://redis.io/commands/json.strappend
|
|
1272
|
+
*/
|
|
1273
|
+
strappend: (...args) => new mod_js_1.JsonStrAppendCommand(args, this.opts).exec(this.client),
|
|
1274
|
+
/**
|
|
1275
|
+
* @see https://redis.io/commands/json.strlen
|
|
1276
|
+
*/
|
|
1277
|
+
strlen: (...args) => new mod_js_1.JsonStrLenCommand(args, this.opts).exec(this.client),
|
|
1278
|
+
/**
|
|
1279
|
+
* @see https://redis.io/commands/json.toggle
|
|
1280
|
+
*/
|
|
1281
|
+
toggle: (...args) => new mod_js_1.JsonToggleCommand(args, this.opts).exec(this.client),
|
|
1282
|
+
/**
|
|
1283
|
+
* @see https://redis.io/commands/json.type
|
|
1284
|
+
*/
|
|
1285
|
+
type: (...args) => new mod_js_1.JsonTypeCommand(args, this.opts).exec(this.client),
|
|
1286
|
+
};
|
|
1287
|
+
}
|
|
1288
|
+
createScript(script) {
|
|
1289
|
+
return new script_js_1.Script(this, script);
|
|
1069
1290
|
}
|
|
1070
1291
|
}
|
|
1071
1292
|
exports.Redis = Redis;
|