@upstash/redis 1.37.0-rc.8 → 1.37.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/{chunk-3HKMGXM7.mjs → chunk-IH7W44G6.mjs} +72 -31
- package/cloudflare.d.mts +2 -2
- package/cloudflare.d.ts +2 -2
- package/cloudflare.js +72 -31
- package/cloudflare.mjs +1 -1
- package/{zmscore-CjaAkTRU.d.mts → error-8y4qG0W2.d.mts} +677 -857
- package/{zmscore-CjaAkTRU.d.ts → error-8y4qG0W2.d.ts} +677 -857
- package/fastly.d.mts +2 -2
- package/fastly.d.ts +2 -2
- package/fastly.js +72 -31
- package/fastly.mjs +1 -1
- package/nodejs.d.mts +9 -3
- package/nodejs.d.ts +9 -3
- package/nodejs.js +81 -32
- package/nodejs.mjs +10 -2
- package/package.json +78 -1
package/nodejs.js
CHANGED
|
@@ -165,7 +165,6 @@ var HttpClient = class {
|
|
|
165
165
|
const signal = req.signal ?? this.options.signal;
|
|
166
166
|
const isSignalFunction = typeof signal === "function";
|
|
167
167
|
const requestOptions = {
|
|
168
|
-
//@ts-expect-error this should throw due to bun regression
|
|
169
168
|
cache: this.options.cache,
|
|
170
169
|
method: "POST",
|
|
171
170
|
headers: requestHeaders,
|
|
@@ -2003,6 +2002,18 @@ var SInterCommand = class extends Command {
|
|
|
2003
2002
|
}
|
|
2004
2003
|
};
|
|
2005
2004
|
|
|
2005
|
+
// pkg/commands/sintercard.ts
|
|
2006
|
+
var SInterCardCommand = class extends Command {
|
|
2007
|
+
constructor(cmd, cmdOpts) {
|
|
2008
|
+
const [keys, opts] = cmd;
|
|
2009
|
+
const command = ["sintercard", keys.length, ...keys];
|
|
2010
|
+
if (opts?.limit !== void 0) {
|
|
2011
|
+
command.push("LIMIT", opts.limit);
|
|
2012
|
+
}
|
|
2013
|
+
super(command, cmdOpts);
|
|
2014
|
+
}
|
|
2015
|
+
};
|
|
2016
|
+
|
|
2006
2017
|
// pkg/commands/sinterstore.ts
|
|
2007
2018
|
var SInterStoreCommand = class extends Command {
|
|
2008
2019
|
constructor(cmd, opts) {
|
|
@@ -2152,8 +2163,7 @@ var XAckCommand = class extends Command {
|
|
|
2152
2163
|
var XAckDelCommand = class extends Command {
|
|
2153
2164
|
constructor([key, group, opts, ...ids], cmdOpts) {
|
|
2154
2165
|
const command = ["XACKDEL", key, group];
|
|
2155
|
-
command.push(opts.toUpperCase());
|
|
2156
|
-
command.push("IDS", ids.length, ...ids);
|
|
2166
|
+
command.push(opts.toUpperCase(), "IDS", ids.length, ...ids);
|
|
2157
2167
|
super(command, cmdOpts);
|
|
2158
2168
|
}
|
|
2159
2169
|
};
|
|
@@ -2695,7 +2705,16 @@ var ZUnionStoreCommand = class extends Command {
|
|
|
2695
2705
|
};
|
|
2696
2706
|
|
|
2697
2707
|
// pkg/commands/search/types.ts
|
|
2698
|
-
var FIELD_TYPES = [
|
|
2708
|
+
var FIELD_TYPES = [
|
|
2709
|
+
"TEXT",
|
|
2710
|
+
"U64",
|
|
2711
|
+
"I64",
|
|
2712
|
+
"F64",
|
|
2713
|
+
"BOOL",
|
|
2714
|
+
"DATE",
|
|
2715
|
+
"KEYWORD",
|
|
2716
|
+
"FACET"
|
|
2717
|
+
];
|
|
2699
2718
|
|
|
2700
2719
|
// pkg/commands/search/utils.ts
|
|
2701
2720
|
function isFieldType(value) {
|
|
@@ -2750,7 +2769,7 @@ function deserializeQueryResponse(rawResponse) {
|
|
|
2750
2769
|
const key2 = fieldRaw[0];
|
|
2751
2770
|
const value = fieldRaw[1];
|
|
2752
2771
|
const pathParts = key2.split(".");
|
|
2753
|
-
if (pathParts.length
|
|
2772
|
+
if (pathParts.length === 1) {
|
|
2754
2773
|
data[key2] = value;
|
|
2755
2774
|
} else {
|
|
2756
2775
|
let currentObj = data;
|
|
@@ -2812,6 +2831,10 @@ function deserializeDescribeResponse(rawResponse) {
|
|
|
2812
2831
|
fieldInfo.fast = true;
|
|
2813
2832
|
break;
|
|
2814
2833
|
}
|
|
2834
|
+
case "FROM": {
|
|
2835
|
+
fieldInfo.from = fieldDescription[++j];
|
|
2836
|
+
break;
|
|
2837
|
+
}
|
|
2815
2838
|
}
|
|
2816
2839
|
}
|
|
2817
2840
|
}
|
|
@@ -2827,16 +2850,8 @@ function deserializeDescribeResponse(rawResponse) {
|
|
|
2827
2850
|
function parseCountResponse(rawResponse) {
|
|
2828
2851
|
return typeof rawResponse === "number" ? rawResponse : Number.parseInt(rawResponse, 10);
|
|
2829
2852
|
}
|
|
2830
|
-
function deserializeAggregateResponse(rawResponse
|
|
2831
|
-
|
|
2832
|
-
const aggregationResult = parseAggregationArray(rawResponse[0]);
|
|
2833
|
-
const searchResults = deserializeQueryResponse(rawResponse[1]);
|
|
2834
|
-
return [aggregationResult, searchResults];
|
|
2835
|
-
}
|
|
2836
|
-
if (Array.isArray(rawResponse) && rawResponse.length === 1 && Array.isArray(rawResponse[0])) {
|
|
2837
|
-
return parseAggregationArray(rawResponse[0]);
|
|
2838
|
-
}
|
|
2839
|
-
return rawResponse;
|
|
2853
|
+
function deserializeAggregateResponse(rawResponse) {
|
|
2854
|
+
return parseAggregationArray(rawResponse);
|
|
2840
2855
|
}
|
|
2841
2856
|
function parseAggregationArray(arr) {
|
|
2842
2857
|
const result = {};
|
|
@@ -2855,6 +2870,12 @@ function parseAggregationArray(arr) {
|
|
|
2855
2870
|
}
|
|
2856
2871
|
return result;
|
|
2857
2872
|
}
|
|
2873
|
+
function coerceNumericString(value) {
|
|
2874
|
+
if (typeof value === "string" && value !== "" && !Number.isNaN(Number(value))) {
|
|
2875
|
+
return Number(value);
|
|
2876
|
+
}
|
|
2877
|
+
return value;
|
|
2878
|
+
}
|
|
2858
2879
|
function parseStatsValue(arr) {
|
|
2859
2880
|
const result = {};
|
|
2860
2881
|
for (let i = 0; i < arr.length; i += 2) {
|
|
@@ -2869,14 +2890,14 @@ function parseStatsValue(arr) {
|
|
|
2869
2890
|
result[key] = value;
|
|
2870
2891
|
}
|
|
2871
2892
|
} else {
|
|
2872
|
-
result[key] = value;
|
|
2893
|
+
result[key] = coerceNumericString(value);
|
|
2873
2894
|
}
|
|
2874
2895
|
}
|
|
2875
2896
|
return result;
|
|
2876
2897
|
}
|
|
2877
2898
|
function parseBucketsValue(arr) {
|
|
2878
2899
|
if (arr[0] === "buckets" && Array.isArray(arr[1])) {
|
|
2879
|
-
|
|
2900
|
+
const result = {
|
|
2880
2901
|
buckets: arr[1].map((bucket) => {
|
|
2881
2902
|
const bucketObj = {};
|
|
2882
2903
|
for (let i = 0; i < bucket.length; i += 2) {
|
|
@@ -2887,6 +2908,10 @@ function parseBucketsValue(arr) {
|
|
|
2887
2908
|
return bucketObj;
|
|
2888
2909
|
})
|
|
2889
2910
|
};
|
|
2911
|
+
for (let i = 2; i < arr.length; i += 2) {
|
|
2912
|
+
result[arr[i]] = arr[i + 1];
|
|
2913
|
+
}
|
|
2914
|
+
return result;
|
|
2890
2915
|
}
|
|
2891
2916
|
return arr;
|
|
2892
2917
|
}
|
|
@@ -3010,11 +3035,7 @@ function buildCreateIndexCommand(params) {
|
|
|
3010
3035
|
function buildAggregateCommand(name, options) {
|
|
3011
3036
|
const query = JSON.stringify(options?.filter ?? {});
|
|
3012
3037
|
const aggregations = JSON.stringify(options.aggregations);
|
|
3013
|
-
|
|
3014
|
-
if (options?.limit !== void 0) {
|
|
3015
|
-
command.push("LIMIT", options.limit.toString());
|
|
3016
|
-
}
|
|
3017
|
-
return command;
|
|
3038
|
+
return ["SEARCH.AGGREGATE", name, query, aggregations];
|
|
3018
3039
|
}
|
|
3019
3040
|
|
|
3020
3041
|
// pkg/commands/search/search.ts
|
|
@@ -3029,13 +3050,14 @@ var SearchIndex = class {
|
|
|
3029
3050
|
}
|
|
3030
3051
|
async waitIndexing() {
|
|
3031
3052
|
const command = ["SEARCH.WAITINDEXING", this.name];
|
|
3032
|
-
await new ExecCommand(command).exec(this.client);
|
|
3053
|
+
return await new ExecCommand(command).exec(this.client);
|
|
3033
3054
|
}
|
|
3034
3055
|
async describe() {
|
|
3035
3056
|
const command = ["SEARCH.DESCRIBE", this.name];
|
|
3036
3057
|
const rawResult = await new ExecCommand(command).exec(
|
|
3037
3058
|
this.client
|
|
3038
3059
|
);
|
|
3060
|
+
if (!rawResult) return null;
|
|
3039
3061
|
return deserializeDescribeResponse(rawResult);
|
|
3040
3062
|
}
|
|
3041
3063
|
async query(options) {
|
|
@@ -3043,6 +3065,7 @@ var SearchIndex = class {
|
|
|
3043
3065
|
const rawResult = await new ExecCommand(command).exec(
|
|
3044
3066
|
this.client
|
|
3045
3067
|
);
|
|
3068
|
+
if (!rawResult) return rawResult;
|
|
3046
3069
|
return deserializeQueryResponse(rawResult);
|
|
3047
3070
|
}
|
|
3048
3071
|
async aggregate(options) {
|
|
@@ -3050,7 +3073,7 @@ var SearchIndex = class {
|
|
|
3050
3073
|
const rawResult = await new ExecCommand(
|
|
3051
3074
|
command
|
|
3052
3075
|
).exec(this.client);
|
|
3053
|
-
return deserializeAggregateResponse(rawResult
|
|
3076
|
+
return deserializeAggregateResponse(rawResult);
|
|
3054
3077
|
}
|
|
3055
3078
|
async count({ filter }) {
|
|
3056
3079
|
const command = buildQueryCommand("SEARCH.COUNT", this.name, { filter });
|
|
@@ -3835,6 +3858,10 @@ var Pipeline = class {
|
|
|
3835
3858
|
* @see https://redis.io/commands/sinter
|
|
3836
3859
|
*/
|
|
3837
3860
|
sinter = (...args) => this.chain(new SInterCommand(args, this.commandOptions));
|
|
3861
|
+
/**
|
|
3862
|
+
* @see https://redis.io/commands/sintercard
|
|
3863
|
+
*/
|
|
3864
|
+
sintercard = (...args) => this.chain(new SInterCardCommand(args, this.commandOptions));
|
|
3838
3865
|
/**
|
|
3839
3866
|
* @see https://redis.io/commands/sinterstore
|
|
3840
3867
|
*/
|
|
@@ -4204,6 +4231,7 @@ var Script = class {
|
|
|
4204
4231
|
* future major release.
|
|
4205
4232
|
*/
|
|
4206
4233
|
sha1;
|
|
4234
|
+
initPromise;
|
|
4207
4235
|
redis;
|
|
4208
4236
|
constructor(redis, script) {
|
|
4209
4237
|
this.redis = redis;
|
|
@@ -4214,9 +4242,13 @@ var Script = class {
|
|
|
4214
4242
|
/**
|
|
4215
4243
|
* Initialize the script by computing its SHA-1 hash.
|
|
4216
4244
|
*/
|
|
4217
|
-
|
|
4218
|
-
if (this.
|
|
4219
|
-
|
|
4245
|
+
init(script) {
|
|
4246
|
+
if (!this.initPromise) {
|
|
4247
|
+
this.initPromise = this.digest(script).then((sha1) => {
|
|
4248
|
+
this.sha1 = sha1;
|
|
4249
|
+
});
|
|
4250
|
+
}
|
|
4251
|
+
return this.initPromise;
|
|
4220
4252
|
}
|
|
4221
4253
|
/**
|
|
4222
4254
|
* Send an `EVAL` command to redis.
|
|
@@ -4271,6 +4303,7 @@ var ScriptRO = class {
|
|
|
4271
4303
|
* future major release.
|
|
4272
4304
|
*/
|
|
4273
4305
|
sha1;
|
|
4306
|
+
initPromise;
|
|
4274
4307
|
redis;
|
|
4275
4308
|
constructor(redis, script) {
|
|
4276
4309
|
this.redis = redis;
|
|
@@ -4278,9 +4311,13 @@ var ScriptRO = class {
|
|
|
4278
4311
|
this.script = script;
|
|
4279
4312
|
void this.init(script);
|
|
4280
4313
|
}
|
|
4281
|
-
|
|
4282
|
-
if (this.
|
|
4283
|
-
|
|
4314
|
+
init(script) {
|
|
4315
|
+
if (!this.initPromise) {
|
|
4316
|
+
this.initPromise = this.digest(script).then((sha1) => {
|
|
4317
|
+
this.sha1 = sha1;
|
|
4318
|
+
});
|
|
4319
|
+
}
|
|
4320
|
+
return this.initPromise;
|
|
4284
4321
|
}
|
|
4285
4322
|
/**
|
|
4286
4323
|
* Send an `EVAL_RO` command to redis.
|
|
@@ -5051,6 +5088,10 @@ var Redis = class {
|
|
|
5051
5088
|
* @see https://redis.io/commands/sinter
|
|
5052
5089
|
*/
|
|
5053
5090
|
sinter = (...args) => new SInterCommand(args, this.opts).exec(this.client);
|
|
5091
|
+
/**
|
|
5092
|
+
* @see https://redis.io/commands/sintercard
|
|
5093
|
+
*/
|
|
5094
|
+
sintercard = (...args) => new SInterCardCommand(args, this.opts).exec(this.client);
|
|
5054
5095
|
/**
|
|
5055
5096
|
* @see https://redis.io/commands/sinterstore
|
|
5056
5097
|
*/
|
|
@@ -5287,10 +5328,10 @@ var Redis = class {
|
|
|
5287
5328
|
};
|
|
5288
5329
|
|
|
5289
5330
|
// version.ts
|
|
5290
|
-
var VERSION = "v1.
|
|
5331
|
+
var VERSION = "v1.30.2";
|
|
5291
5332
|
|
|
5292
5333
|
// pkg/commands/search/schema-builder.ts
|
|
5293
|
-
var BUILD = Symbol("build");
|
|
5334
|
+
var BUILD = /* @__PURE__ */ Symbol("build");
|
|
5294
5335
|
var TextFieldBuilder = class _TextFieldBuilder {
|
|
5295
5336
|
_noTokenize;
|
|
5296
5337
|
_noStem;
|
|
@@ -5420,6 +5461,11 @@ var KeywordFieldBuilder = class {
|
|
|
5420
5461
|
return { type: "KEYWORD" };
|
|
5421
5462
|
}
|
|
5422
5463
|
};
|
|
5464
|
+
var FacetFieldBuilder = class {
|
|
5465
|
+
[BUILD]() {
|
|
5466
|
+
return { type: "FACET" };
|
|
5467
|
+
}
|
|
5468
|
+
};
|
|
5423
5469
|
var s = {
|
|
5424
5470
|
string() {
|
|
5425
5471
|
return new TextFieldBuilder();
|
|
@@ -5436,6 +5482,9 @@ var s = {
|
|
|
5436
5482
|
keyword() {
|
|
5437
5483
|
return new KeywordFieldBuilder();
|
|
5438
5484
|
},
|
|
5485
|
+
facet() {
|
|
5486
|
+
return new FacetFieldBuilder();
|
|
5487
|
+
},
|
|
5439
5488
|
object(fields) {
|
|
5440
5489
|
const result = {};
|
|
5441
5490
|
for (const [key, value] of Object.entries(fields)) {
|
package/nodejs.mjs
CHANGED
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
SearchIndex,
|
|
5
5
|
VERSION,
|
|
6
6
|
error_exports
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IH7W44G6.mjs";
|
|
8
8
|
|
|
9
9
|
// pkg/commands/search/schema-builder.ts
|
|
10
|
-
var BUILD = Symbol("build");
|
|
10
|
+
var BUILD = /* @__PURE__ */ Symbol("build");
|
|
11
11
|
var TextFieldBuilder = class _TextFieldBuilder {
|
|
12
12
|
_noTokenize;
|
|
13
13
|
_noStem;
|
|
@@ -137,6 +137,11 @@ var KeywordFieldBuilder = class {
|
|
|
137
137
|
return { type: "KEYWORD" };
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
|
+
var FacetFieldBuilder = class {
|
|
141
|
+
[BUILD]() {
|
|
142
|
+
return { type: "FACET" };
|
|
143
|
+
}
|
|
144
|
+
};
|
|
140
145
|
var s = {
|
|
141
146
|
string() {
|
|
142
147
|
return new TextFieldBuilder();
|
|
@@ -153,6 +158,9 @@ var s = {
|
|
|
153
158
|
keyword() {
|
|
154
159
|
return new KeywordFieldBuilder();
|
|
155
160
|
},
|
|
161
|
+
facet() {
|
|
162
|
+
return new FacetFieldBuilder();
|
|
163
|
+
},
|
|
156
164
|
object(fields) {
|
|
157
165
|
const result = {};
|
|
158
166
|
for (const [key, value] of Object.entries(fields)) {
|
package/package.json
CHANGED
|
@@ -1 +1,78 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "@upstash/redis",
|
|
3
|
+
"version": "1.37.0",
|
|
4
|
+
"main": "./nodejs.js",
|
|
5
|
+
"module": "./nodejs.mjs",
|
|
6
|
+
"types": "./nodejs.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./nodejs.mjs",
|
|
10
|
+
"require": "./nodejs.js"
|
|
11
|
+
},
|
|
12
|
+
"./node": {
|
|
13
|
+
"import": "./nodejs.mjs",
|
|
14
|
+
"require": "./nodejs.js"
|
|
15
|
+
},
|
|
16
|
+
"./cloudflare": {
|
|
17
|
+
"import": "./cloudflare.mjs",
|
|
18
|
+
"require": "./cloudflare.js"
|
|
19
|
+
},
|
|
20
|
+
"./cloudflare.js": {
|
|
21
|
+
"import": "./cloudflare.mjs",
|
|
22
|
+
"require": "./cloudflare.js"
|
|
23
|
+
},
|
|
24
|
+
"./cloudflare.mjs": {
|
|
25
|
+
"import": "./cloudflare.mjs",
|
|
26
|
+
"require": "./cloudflare.js"
|
|
27
|
+
},
|
|
28
|
+
"./fastly": {
|
|
29
|
+
"import": "./fastly.mjs",
|
|
30
|
+
"require": "./fastly.js"
|
|
31
|
+
},
|
|
32
|
+
"./fastly.js": {
|
|
33
|
+
"import": "./fastly.mjs",
|
|
34
|
+
"require": "./fastly.js"
|
|
35
|
+
},
|
|
36
|
+
"./fastly.mjs": {
|
|
37
|
+
"import": "./fastly.mjs",
|
|
38
|
+
"require": "./fastly.js"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"description": "An HTTP/REST based Redis client built on top of Upstash REST API.",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git@github.com:upstash/redis-js.git"
|
|
45
|
+
},
|
|
46
|
+
"keywords": [
|
|
47
|
+
"redis",
|
|
48
|
+
"database",
|
|
49
|
+
"serverless",
|
|
50
|
+
"edge",
|
|
51
|
+
"upstash"
|
|
52
|
+
],
|
|
53
|
+
"files": [
|
|
54
|
+
"./*"
|
|
55
|
+
],
|
|
56
|
+
"scripts": {
|
|
57
|
+
"build": "tsup && cp package.json README.md ../../LICENSE dist/",
|
|
58
|
+
"test": "bun test pkg --bail --timeout 20000",
|
|
59
|
+
"check-exports": "bun run build && cd dist && attw -P"
|
|
60
|
+
},
|
|
61
|
+
"publishConfig": {
|
|
62
|
+
"access": "public"
|
|
63
|
+
},
|
|
64
|
+
"author": "Andreas Thomas <dev@chronark.com>",
|
|
65
|
+
"license": "MIT",
|
|
66
|
+
"bugs": {
|
|
67
|
+
"url": "https://github.com/upstash/upstash-redis/issues"
|
|
68
|
+
},
|
|
69
|
+
"homepage": "https://github.com/upstash/upstash-redis#readme",
|
|
70
|
+
"devDependencies": {
|
|
71
|
+
"@types/bun": "1.3.6",
|
|
72
|
+
"tsup": "^8.2.3",
|
|
73
|
+
"typescript": "latest"
|
|
74
|
+
},
|
|
75
|
+
"dependencies": {
|
|
76
|
+
"uncrypto": "^0.1.3"
|
|
77
|
+
}
|
|
78
|
+
}
|