@devvit/shared-types 0.10.21-next-2024-05-13-fca9b634e.0 → 0.10.21-next-2024-05-13-e62a4282b.0
Sign up to get free protection for your applications and to get access to all the features.
- package/Actor.d.ts +31 -0
- package/Actor.d.ts.map +1 -0
- package/Actor.js +31 -0
- package/Config.d.ts +26 -0
- package/Config.d.ts.map +1 -0
- package/Config.js +1 -0
- package/Namespace.d.ts +12 -0
- package/Namespace.d.ts.map +1 -0
- package/Namespace.js +1 -0
- package/package.json +7 -4
- package/test/LocalRedis.d.ts +49 -0
- package/test/LocalRedis.d.ts.map +1 -0
- package/test/LocalRedis.js +443 -0
- package/test/LocalRedis.test.d.ts.map +1 -0
package/Actor.d.ts
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
/**
|
2
|
+
* All Bundle programs are Actor subclasses. Actor instances are expected to
|
3
|
+
* populate the passed in Config which is used by the builder to compile and
|
4
|
+
* link the programs. Bundle programs are expected to export their subclass
|
5
|
+
* constructor, either their own Actor subclass or Devvit.
|
6
|
+
*
|
7
|
+
* Devvit is an Actor subclass singleton with a non-class-based API.
|
8
|
+
*
|
9
|
+
* `instanceof` and `isPrototypeOf()` tests fail because Devvit and Actor
|
10
|
+
* are multiply defined.
|
11
|
+
*
|
12
|
+
* Developers will, for now, implement this class and
|
13
|
+
* utilize the the `cfg.use/provide` api for both:
|
14
|
+
*
|
15
|
+
* 1. specifying their `DependencySpec` (proto: devvit/runtime/bundle)
|
16
|
+
* Build packs will, for now, create an instance of the Actor and use the
|
17
|
+
* result of `config.export` for linking
|
18
|
+
*
|
19
|
+
* 2. When running within the overall system, `Bootstrap` actor will
|
20
|
+
* inject a config that is used to setup links within the runtime.
|
21
|
+
*/
|
22
|
+
import type { Config } from './Config.js';
|
23
|
+
/**
|
24
|
+
* Subclasses are expected to call config.init(), provides(), and uses(). It
|
25
|
+
* is erroneous to not override the constructor. Override, invoke
|
26
|
+
* `super(config)`, and call the Config APIs.
|
27
|
+
*/
|
28
|
+
export declare abstract class Actor {
|
29
|
+
constructor(config: Config);
|
30
|
+
}
|
31
|
+
//# sourceMappingURL=Actor.d.ts.map
|
package/Actor.d.ts.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../src/Actor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,8BAAsB,KAAK;gBAGvB,MAAM,EAAE,MAAM;CAEjB"}
|
package/Actor.js
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
/**
|
2
|
+
* All Bundle programs are Actor subclasses. Actor instances are expected to
|
3
|
+
* populate the passed in Config which is used by the builder to compile and
|
4
|
+
* link the programs. Bundle programs are expected to export their subclass
|
5
|
+
* constructor, either their own Actor subclass or Devvit.
|
6
|
+
*
|
7
|
+
* Devvit is an Actor subclass singleton with a non-class-based API.
|
8
|
+
*
|
9
|
+
* `instanceof` and `isPrototypeOf()` tests fail because Devvit and Actor
|
10
|
+
* are multiply defined.
|
11
|
+
*
|
12
|
+
* Developers will, for now, implement this class and
|
13
|
+
* utilize the the `cfg.use/provide` api for both:
|
14
|
+
*
|
15
|
+
* 1. specifying their `DependencySpec` (proto: devvit/runtime/bundle)
|
16
|
+
* Build packs will, for now, create an instance of the Actor and use the
|
17
|
+
* result of `config.export` for linking
|
18
|
+
*
|
19
|
+
* 2. When running within the overall system, `Bootstrap` actor will
|
20
|
+
* inject a config that is used to setup links within the runtime.
|
21
|
+
*/
|
22
|
+
/**
|
23
|
+
* Subclasses are expected to call config.init(), provides(), and uses(). It
|
24
|
+
* is erroneous to not override the constructor. Override, invoke
|
25
|
+
* `super(config)`, and call the Config APIs.
|
26
|
+
*/
|
27
|
+
export class Actor {
|
28
|
+
constructor(
|
29
|
+
// @ts-expect-error
|
30
|
+
config) { }
|
31
|
+
}
|
package/Config.d.ts
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
import type { Definition, DependencySpec, PackageQuery } from '@devvit/protos';
|
2
|
+
import type { AssetMap } from './Assets.js';
|
3
|
+
import type { DeepPartial } from './BuiltinTypes.js';
|
4
|
+
import type { Namespace } from './Namespace.js';
|
5
|
+
/**
|
6
|
+
* Bundle configuration for code about to be built (eg, dependencies). All
|
7
|
+
* Bundle config state that impacts building should be recorded in the
|
8
|
+
* implementation. See Actor subclass constructors.
|
9
|
+
*
|
10
|
+
* This type is = kind of like a builder pattern where export() is the build
|
11
|
+
* method. Devvit almost implements this class.
|
12
|
+
*/
|
13
|
+
export type Config = {
|
14
|
+
assets: Readonly<AssetMap>;
|
15
|
+
providedDefinitions: Readonly<Definition>[];
|
16
|
+
export(namespace: Readonly<Namespace>): DependencySpec;
|
17
|
+
provides(definition: Readonly<Definition>): void;
|
18
|
+
use<T>(definition: Readonly<Definition>, options?: Readonly<DeepPartial<PackageQuery>>): T;
|
19
|
+
/**
|
20
|
+
* Check if a previous call to `use` was made. This is useful for allowing polyfills
|
21
|
+
* to ensure that they can provide functionality in terms of a plugin, or fallback to
|
22
|
+
* default functionality if not
|
23
|
+
*/
|
24
|
+
uses(definition: Readonly<Definition>): boolean;
|
25
|
+
};
|
26
|
+
//# sourceMappingURL=Config.d.ts.map
|
package/Config.d.ts.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE3B,mBAAmB,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IAE5C,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC;IAEvD,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAEjD,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;IAE3F;;;;OAIG;IACH,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;CACjD,CAAC"}
|
package/Config.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/Namespace.d.ts
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
export type Namespace = {
|
2
|
+
/**
|
3
|
+
* Nonnullish address when bound. Set when bound but may be set sooner. May
|
4
|
+
* not be unset when unbound.
|
5
|
+
*
|
6
|
+
* Hostnames are not necessarily unique. Clients always have the same hostname
|
7
|
+
* as their EnvelopeDispatcher. Stream IDs are used to distinguish duplicate
|
8
|
+
* hostnames.
|
9
|
+
*/
|
10
|
+
hostname: string | undefined;
|
11
|
+
};
|
12
|
+
//# sourceMappingURL=Namespace.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Namespace.d.ts","sourceRoot":"","sources":["../src/Namespace.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB;;;;;;;OAOG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC"}
|
package/Namespace.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@devvit/shared-types",
|
3
|
-
"version": "0.10.21-next-2024-05-13-
|
3
|
+
"version": "0.10.21-next-2024-05-13-e62a4282b.0",
|
4
4
|
"license": "BSD-3-Clause",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -23,14 +23,17 @@
|
|
23
23
|
},
|
24
24
|
"types": "./index.d.ts",
|
25
25
|
"dependencies": {
|
26
|
-
"@devvit/protos": "0.10.21-next-2024-05-13-
|
26
|
+
"@devvit/protos": "0.10.21-next-2024-05-13-e62a4282b.0"
|
27
27
|
},
|
28
28
|
"devDependencies": {
|
29
29
|
"@devvit/eslint-config": "0.10.20",
|
30
30
|
"@devvit/repo-tools": "0.10.20",
|
31
|
-
"@devvit/tsconfig": "0.10.21-next-2024-05-13-
|
31
|
+
"@devvit/tsconfig": "0.10.21-next-2024-05-13-e62a4282b.0",
|
32
|
+
"@types/redis-mock": "0.17.1",
|
32
33
|
"eslint": "8.9.0",
|
33
34
|
"lit": "2.2.8",
|
35
|
+
"redis": "4.6.6",
|
36
|
+
"redis-mock": "0.56.3",
|
34
37
|
"typescript": "5.3.2",
|
35
38
|
"vitest": "0.31.0"
|
36
39
|
},
|
@@ -38,5 +41,5 @@
|
|
38
41
|
"directory": "dist"
|
39
42
|
},
|
40
43
|
"source": "./src/index.ts",
|
41
|
-
"gitHead": "
|
44
|
+
"gitHead": "93cd2af8a1943e6b3416c82906891de040277b45"
|
42
45
|
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import type { ExpireRequest, HIncrByRequest, IncrByRequest, KeyValuesRequest, KeysRequest, Metadata, RedisAPI, SetRangeRequest, TransactionId, TransactionResponses, WatchRequest, ZIncrByRequest, ZRankRequest, ZScanRequest, ZScanResponse } from '@devvit/protos';
|
2
|
+
import { DoubleValue, Empty, Int64Value, RedisFieldValues, RedisValues, StringValue } from '@devvit/protos';
|
3
|
+
import type { RedisClientType, RedisDefaultModules } from 'redis';
|
4
|
+
import type { HDelRequest, HGetRequest, HScanRequest, HScanResponse, HSetRequest, KeyRangeRequest, KeyRequest, KeysResponse, SetRequest, ZAddRequest, ZRangeRequest, ZRemRangeByLexRequest, ZRemRangeByRankRequest, ZRemRangeByScoreRequest, ZRemRequest, ZScoreRequest } from '@devvit/protos';
|
5
|
+
import { ZMembers } from '@devvit/protos';
|
6
|
+
type RedisClient = RedisClientType<RedisDefaultModules>;
|
7
|
+
export declare class LocalRedis implements RedisAPI {
|
8
|
+
#private;
|
9
|
+
static create(url?: string): Promise<LocalRedis>;
|
10
|
+
constructor(redis: RedisClient);
|
11
|
+
Del(request: KeysRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
12
|
+
Type(request: KeyRequest, metadata: Metadata | undefined): Promise<StringValue>;
|
13
|
+
Multi(request: TransactionId, _metadata: Metadata | undefined): Promise<Empty>;
|
14
|
+
Exec(request: TransactionId, _metadata: Metadata | undefined): Promise<TransactionResponses>;
|
15
|
+
Discard(request: TransactionId, _metadata: Metadata | undefined): Promise<Empty>;
|
16
|
+
Unwatch(request: TransactionId, _metadata: Metadata | undefined): Promise<Empty>;
|
17
|
+
Watch(request: WatchRequest, metadata: Metadata | undefined): Promise<TransactionId>;
|
18
|
+
GetRange(request: KeyRangeRequest, metadata: Metadata | undefined): Promise<StringValue>;
|
19
|
+
IncrBy(request: IncrByRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
20
|
+
SetRange(request: SetRangeRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
21
|
+
Strlen(request: KeyRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
22
|
+
MGet(request: KeysRequest, metadata: Metadata | undefined): Promise<RedisValues>;
|
23
|
+
MSet(request: KeyValuesRequest, metadata: Metadata | undefined): Promise<Empty>;
|
24
|
+
Get(request: KeyRequest, metadata: Metadata | undefined): Promise<StringValue>;
|
25
|
+
Set(request: SetRequest, metadata: Metadata | undefined): Promise<StringValue>;
|
26
|
+
Expire(request: ExpireRequest, metadata: Metadata | undefined): Promise<Empty>;
|
27
|
+
ExpireTime(request: KeyRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
28
|
+
ZCard(request: KeyRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
29
|
+
ZAdd(request: ZAddRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
30
|
+
ZRem(request: ZRemRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
31
|
+
ZRange(request: ZRangeRequest, metadata: Metadata | undefined): Promise<ZMembers>;
|
32
|
+
ZRemRangeByLex(request: ZRemRangeByLexRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
33
|
+
ZRemRangeByRank(request: ZRemRangeByRankRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
34
|
+
ZRemRangeByScore(request: ZRemRangeByScoreRequest, metadata: Metadata | undefined): Promise<Int64Value>;
|
35
|
+
HGet(_request: HGetRequest, _metadata: Metadata | undefined): Promise<StringValue>;
|
36
|
+
HSet(_request: HSetRequest, _metadata: Metadata | undefined): Promise<Int64Value>;
|
37
|
+
HGetAll(_request: KeyRequest, _metadata: Metadata | undefined): Promise<RedisFieldValues>;
|
38
|
+
HDel(_request: HDelRequest, _metadata: Metadata | undefined): Promise<Int64Value>;
|
39
|
+
ZScore(_request: ZScoreRequest, _metadata: Metadata | undefined): Promise<DoubleValue>;
|
40
|
+
ZRank(_request: ZRankRequest, _metadata: Metadata | undefined): Promise<Int64Value>;
|
41
|
+
ZScan(_request: ZScanRequest, _metadata: Metadata | undefined): Promise<ZScanResponse>;
|
42
|
+
ZIncrBy(_request: ZIncrByRequest, _metadata: Metadata | undefined): Promise<DoubleValue>;
|
43
|
+
HKeys(_request: KeyRequest, _metadata?: Metadata): Promise<KeysResponse>;
|
44
|
+
HScan(_request: HScanRequest, _metadata?: Metadata): Promise<HScanResponse>;
|
45
|
+
HIncrBy(_request: HIncrByRequest, _metadata?: Metadata): Promise<Int64Value>;
|
46
|
+
HLen(_request: KeyRequest, _metadata?: Metadata): Promise<Int64Value>;
|
47
|
+
}
|
48
|
+
export {};
|
49
|
+
//# sourceMappingURL=LocalRedis.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"LocalRedis.d.ts","sourceRoot":"","sources":["../../src/test/LocalRedis.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,443 @@
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
6
|
+
};
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
11
|
+
};
|
12
|
+
var _LocalRedis_instances, _LocalRedis_redis, _LocalRedis_transactions, _LocalRedis_tx, _LocalRedis_newtx;
|
13
|
+
import { DoubleValue, Empty, Int64Value, RedisFieldValues, RedisValues, StringValue, } from '@devvit/protos';
|
14
|
+
import { createClient } from 'redis';
|
15
|
+
import { ZMembers } from '@devvit/protos';
|
16
|
+
import { Header } from '../Header.js';
|
17
|
+
const MaxResults = 1000;
|
18
|
+
const localRuntimeError = 'Please use devvit playtest to verify your app in a test subreddit.';
|
19
|
+
function namespacedKey(metadata, key) {
|
20
|
+
const installation = metadata?.[Header.Installation]?.values[0] || '';
|
21
|
+
const app = metadata?.[Header.App]?.values[0] || '';
|
22
|
+
return `${installation}:${app}:${key}`;
|
23
|
+
}
|
24
|
+
export class LocalRedis {
|
25
|
+
static async create(url) {
|
26
|
+
if (!url) {
|
27
|
+
if (process.env.CI === 'true') {
|
28
|
+
url = 'redis://redis:6379';
|
29
|
+
}
|
30
|
+
else {
|
31
|
+
url = 'redis://localhost:6379';
|
32
|
+
}
|
33
|
+
}
|
34
|
+
const redis = createClient({ url });
|
35
|
+
console.log(`connecting to ${url} ...`);
|
36
|
+
await redis.connect();
|
37
|
+
await redis.flushAll();
|
38
|
+
return new LocalRedis(redis);
|
39
|
+
}
|
40
|
+
constructor(redis) {
|
41
|
+
_LocalRedis_instances.add(this);
|
42
|
+
_LocalRedis_redis.set(this, void 0);
|
43
|
+
_LocalRedis_transactions.set(this, {});
|
44
|
+
__classPrivateFieldSet(this, _LocalRedis_redis, redis, "f");
|
45
|
+
}
|
46
|
+
async Del(request, metadata) {
|
47
|
+
const keys = request.keys.map((key) => namespacedKey(metadata, key));
|
48
|
+
if (request.transactionId) {
|
49
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).del(keys);
|
50
|
+
return { value: 0 };
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
const count = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").del(keys);
|
54
|
+
return { value: count };
|
55
|
+
}
|
56
|
+
}
|
57
|
+
async Type(request, metadata) {
|
58
|
+
const type = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").type(namespacedKey(metadata, request.key));
|
59
|
+
return { value: type };
|
60
|
+
}
|
61
|
+
async Multi(request, _metadata) {
|
62
|
+
const transaction = __classPrivateFieldGet(this, _LocalRedis_transactions, "f")[request.id];
|
63
|
+
if (!transaction) {
|
64
|
+
throw new Error('Transaction not found');
|
65
|
+
}
|
66
|
+
if (transaction.multi) {
|
67
|
+
throw new Error('Transaction already multi');
|
68
|
+
}
|
69
|
+
transaction.multi = transaction.isoClient.multi();
|
70
|
+
return {};
|
71
|
+
}
|
72
|
+
async Exec(request, _metadata) {
|
73
|
+
const transaction = __classPrivateFieldGet(this, _LocalRedis_transactions, "f")[request.id];
|
74
|
+
if (!transaction) {
|
75
|
+
throw new Error('Transaction not found');
|
76
|
+
}
|
77
|
+
if (!transaction.multi) {
|
78
|
+
await transaction.close();
|
79
|
+
throw new Error('Transaction not multi');
|
80
|
+
}
|
81
|
+
const responses = await transaction.multi.exec();
|
82
|
+
console.log(responses);
|
83
|
+
delete __classPrivateFieldGet(this, _LocalRedis_transactions, "f")[request.id];
|
84
|
+
const values = (responses || []).map((value) => {
|
85
|
+
if (typeof value === 'string') {
|
86
|
+
return { str: value };
|
87
|
+
}
|
88
|
+
else if (value === null) {
|
89
|
+
return { nil: {} };
|
90
|
+
}
|
91
|
+
else if (typeof value === 'number') {
|
92
|
+
return { num: value };
|
93
|
+
}
|
94
|
+
else if (Array.isArray(value)) {
|
95
|
+
const strings = value.map((v) => v + '');
|
96
|
+
return { values: { values: strings } };
|
97
|
+
}
|
98
|
+
else {
|
99
|
+
throw new Error('Unsupported value type');
|
100
|
+
}
|
101
|
+
});
|
102
|
+
await transaction.close();
|
103
|
+
return { response: values };
|
104
|
+
}
|
105
|
+
async Discard(request, _metadata) {
|
106
|
+
const transaction = __classPrivateFieldGet(this, _LocalRedis_transactions, "f")[request.id];
|
107
|
+
if (!transaction) {
|
108
|
+
throw new Error('Transaction not found');
|
109
|
+
}
|
110
|
+
if (!transaction.multi) {
|
111
|
+
await transaction.close();
|
112
|
+
throw new Error('Multi not found');
|
113
|
+
}
|
114
|
+
transaction.multi.discard();
|
115
|
+
await transaction.close();
|
116
|
+
delete __classPrivateFieldGet(this, _LocalRedis_transactions, "f")[request.id];
|
117
|
+
return Empty.fromPartial({});
|
118
|
+
}
|
119
|
+
async Unwatch(request, _metadata) {
|
120
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request).unwatch();
|
121
|
+
return Empty.fromPartial({});
|
122
|
+
}
|
123
|
+
async Watch(request, metadata) {
|
124
|
+
let id = request.transactionId;
|
125
|
+
if (!id) {
|
126
|
+
const tx = await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_newtx).call(this);
|
127
|
+
id = { id: tx.id };
|
128
|
+
}
|
129
|
+
if (request.keys.length > 0) {
|
130
|
+
const keys = request.keys.map((key) => namespacedKey(metadata, key));
|
131
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, id).watch(keys);
|
132
|
+
}
|
133
|
+
return id;
|
134
|
+
}
|
135
|
+
async GetRange(request, metadata) {
|
136
|
+
const key = namespacedKey(metadata, request.key);
|
137
|
+
if (request.transactionId) {
|
138
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).getRange(key, request.start, request.end);
|
139
|
+
return StringValue.fromPartial({});
|
140
|
+
}
|
141
|
+
else {
|
142
|
+
const value = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").getRange(key, request.start, request.end);
|
143
|
+
return value ? { value: value } : StringValue.fromPartial({});
|
144
|
+
}
|
145
|
+
}
|
146
|
+
async IncrBy(request, metadata) {
|
147
|
+
const key = namespacedKey(metadata, request.key);
|
148
|
+
if (request.transactionId) {
|
149
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).incrBy(key, request.value);
|
150
|
+
return Int64Value.fromPartial({});
|
151
|
+
}
|
152
|
+
else {
|
153
|
+
const value = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").incrBy(key, request.value);
|
154
|
+
return { value };
|
155
|
+
}
|
156
|
+
}
|
157
|
+
async SetRange(request, metadata) {
|
158
|
+
const key = namespacedKey(metadata, request.key);
|
159
|
+
if (request.transactionId) {
|
160
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).setRange(key, request.offset, request.value);
|
161
|
+
return Int64Value.fromPartial({});
|
162
|
+
}
|
163
|
+
else {
|
164
|
+
const length = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").setRange(key, request.offset, request.value);
|
165
|
+
return { value: length };
|
166
|
+
}
|
167
|
+
}
|
168
|
+
async Strlen(request, metadata) {
|
169
|
+
const key = namespacedKey(metadata, request.key);
|
170
|
+
if (request.transactionId) {
|
171
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).strLen(key);
|
172
|
+
return Int64Value.fromPartial({});
|
173
|
+
}
|
174
|
+
else {
|
175
|
+
const length = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").strLen(key);
|
176
|
+
return { value: length };
|
177
|
+
}
|
178
|
+
}
|
179
|
+
async MGet(request, metadata) {
|
180
|
+
const keys = request.keys.map((key) => namespacedKey(metadata, key));
|
181
|
+
if (request.transactionId) {
|
182
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).mGet(keys);
|
183
|
+
return RedisValues.fromPartial({});
|
184
|
+
}
|
185
|
+
else {
|
186
|
+
const values = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").mGet(keys);
|
187
|
+
return RedisValues.fromPartial({ values: values.map((value) => (value ? value : '')) });
|
188
|
+
}
|
189
|
+
}
|
190
|
+
async MSet(request, metadata) {
|
191
|
+
const keyValues = request.kv.reduce((obj, item) => {
|
192
|
+
obj[namespacedKey(metadata, item.key)] = item.value;
|
193
|
+
return obj;
|
194
|
+
}, {});
|
195
|
+
if (request.transactionId) {
|
196
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).mSet(keyValues);
|
197
|
+
}
|
198
|
+
else {
|
199
|
+
await __classPrivateFieldGet(this, _LocalRedis_redis, "f").mSet(keyValues);
|
200
|
+
}
|
201
|
+
return Empty.fromPartial({});
|
202
|
+
}
|
203
|
+
async Get(request, metadata) {
|
204
|
+
const key = namespacedKey(metadata, request.key);
|
205
|
+
if (request.transactionId) {
|
206
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).get(key);
|
207
|
+
return StringValue.fromPartial({});
|
208
|
+
}
|
209
|
+
else {
|
210
|
+
const value = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").get(key);
|
211
|
+
return { value: value ?? '' };
|
212
|
+
}
|
213
|
+
}
|
214
|
+
async Set(request, metadata) {
|
215
|
+
const key = namespacedKey(metadata, request.key);
|
216
|
+
if (request.transactionId) {
|
217
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).set(key, request.value);
|
218
|
+
return StringValue.fromPartial({});
|
219
|
+
}
|
220
|
+
else {
|
221
|
+
if (request.nx) {
|
222
|
+
const value = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").setNX(key, request.value);
|
223
|
+
return { value: value ? 'OK' : '' };
|
224
|
+
}
|
225
|
+
else {
|
226
|
+
const value = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").set(key, request.value);
|
227
|
+
return { value: value ?? '' };
|
228
|
+
}
|
229
|
+
}
|
230
|
+
}
|
231
|
+
async Expire(request, metadata) {
|
232
|
+
const key = namespacedKey(metadata, request.key);
|
233
|
+
if (request.transactionId) {
|
234
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).expire(key, request.seconds);
|
235
|
+
}
|
236
|
+
else {
|
237
|
+
await __classPrivateFieldGet(this, _LocalRedis_redis, "f").expire(key, request.seconds);
|
238
|
+
}
|
239
|
+
return Empty.fromPartial({});
|
240
|
+
}
|
241
|
+
async ExpireTime(request, metadata) {
|
242
|
+
const key = namespacedKey(metadata, request.key);
|
243
|
+
if (request.transactionId) {
|
244
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).ttl(key);
|
245
|
+
return Int64Value.fromPartial({});
|
246
|
+
}
|
247
|
+
else {
|
248
|
+
const ttl = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").ttl(key);
|
249
|
+
return { value: ttl };
|
250
|
+
}
|
251
|
+
}
|
252
|
+
async ZCard(request, metadata) {
|
253
|
+
const key = namespacedKey(metadata, request.key);
|
254
|
+
if (request.transactionId) {
|
255
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).zCard(key);
|
256
|
+
return Int64Value.fromPartial({});
|
257
|
+
}
|
258
|
+
else {
|
259
|
+
const length = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").zCard(key);
|
260
|
+
return { value: length };
|
261
|
+
}
|
262
|
+
}
|
263
|
+
async ZAdd(request, metadata) {
|
264
|
+
const key = namespacedKey(metadata, request.key);
|
265
|
+
const zaddArgs = request.members.flatMap((member) => ({
|
266
|
+
score: member.score,
|
267
|
+
value: member.member,
|
268
|
+
}));
|
269
|
+
if (request.transactionId) {
|
270
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.transactionId).zAdd(key, zaddArgs);
|
271
|
+
return Int64Value.fromPartial({});
|
272
|
+
}
|
273
|
+
else {
|
274
|
+
const changed = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").zAdd(key, zaddArgs);
|
275
|
+
return { value: changed };
|
276
|
+
}
|
277
|
+
}
|
278
|
+
async ZRem(request, metadata) {
|
279
|
+
const key = namespacedKey(metadata, request.key.key);
|
280
|
+
if (request.key?.transactionId) {
|
281
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.key?.transactionId).zRem(key, request.members);
|
282
|
+
return Int64Value.fromPartial({});
|
283
|
+
}
|
284
|
+
else {
|
285
|
+
const count = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").zRem(key, request.members);
|
286
|
+
return { value: count };
|
287
|
+
}
|
288
|
+
}
|
289
|
+
async ZRange(request, metadata) {
|
290
|
+
const key = namespacedKey(metadata, request.key.key);
|
291
|
+
const count = Math.min(request.count, MaxResults); // Define MaxResults constant somewhere in your code
|
292
|
+
// eslint-disable-next-line
|
293
|
+
let opts = {};
|
294
|
+
if (!request.byLex && !request.byScore) {
|
295
|
+
let stop = parseInt(request.stop);
|
296
|
+
const start = parseInt(request.start);
|
297
|
+
stop = Math.min(stop, start + MaxResults);
|
298
|
+
if (stop < 0)
|
299
|
+
stop = start + MaxResults;
|
300
|
+
request.stop = stop.toString();
|
301
|
+
}
|
302
|
+
else {
|
303
|
+
opts.LIMIT = {
|
304
|
+
offset: request.offset,
|
305
|
+
count: count,
|
306
|
+
};
|
307
|
+
}
|
308
|
+
if (request.rev) {
|
309
|
+
throw new Error('unsupported');
|
310
|
+
}
|
311
|
+
if (request.byLex)
|
312
|
+
opts.BY = 'LEX';
|
313
|
+
if (request.byScore)
|
314
|
+
opts.BY = 'SCORE';
|
315
|
+
if (request.rev)
|
316
|
+
opts.REV = true;
|
317
|
+
if (request.key?.transactionId) {
|
318
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.key?.transactionId).zRangeWithScores(key, request.start, request.stop, opts);
|
319
|
+
return ZMembers.fromPartial({});
|
320
|
+
}
|
321
|
+
else {
|
322
|
+
const rsp = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").zRangeWithScores(key, request.start, request.stop, opts);
|
323
|
+
return { members: rsp.map(({ score, value }) => ({ score, member: value })) };
|
324
|
+
}
|
325
|
+
}
|
326
|
+
async ZRemRangeByLex(request, metadata) {
|
327
|
+
const key = namespacedKey(metadata, request.key.key);
|
328
|
+
if (request.key?.transactionId) {
|
329
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.key?.transactionId).zRemRangeByLex(key, request.min, request.max);
|
330
|
+
return Int64Value.fromPartial({});
|
331
|
+
}
|
332
|
+
else {
|
333
|
+
const count = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").zRemRangeByLex(key, request.min, request.max);
|
334
|
+
return { value: count };
|
335
|
+
}
|
336
|
+
}
|
337
|
+
async ZRemRangeByRank(request, metadata) {
|
338
|
+
const key = namespacedKey(metadata, request.key.key);
|
339
|
+
if (request.key?.transactionId) {
|
340
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.key?.transactionId).zRemRangeByRank(key, request.start, request.stop);
|
341
|
+
return Int64Value.fromPartial({});
|
342
|
+
}
|
343
|
+
else {
|
344
|
+
const count = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").zRemRangeByRank(key, request.start, request.stop);
|
345
|
+
return { value: count };
|
346
|
+
}
|
347
|
+
}
|
348
|
+
async ZRemRangeByScore(request, metadata) {
|
349
|
+
const key = namespacedKey(metadata, request.key.key);
|
350
|
+
if (request.key?.transactionId) {
|
351
|
+
await __classPrivateFieldGet(this, _LocalRedis_instances, "m", _LocalRedis_tx).call(this, request.key?.transactionId).zRemRangeByScore(key, request.min.toString(), request.max.toString());
|
352
|
+
return Int64Value.fromPartial({});
|
353
|
+
}
|
354
|
+
else {
|
355
|
+
const count = await __classPrivateFieldGet(this, _LocalRedis_redis, "f").zRemRangeByScore(key, request.min.toString(), request.max.toString());
|
356
|
+
return { value: count };
|
357
|
+
}
|
358
|
+
}
|
359
|
+
async HGet(_request, _metadata) {
|
360
|
+
console.error('HGET is not supported in Node Runtime. ' + localRuntimeError);
|
361
|
+
return StringValue.fromPartial({});
|
362
|
+
}
|
363
|
+
async HSet(_request, _metadata) {
|
364
|
+
console.error('HSET is not supported in Node Runtime. ' + localRuntimeError);
|
365
|
+
return Int64Value.fromPartial({});
|
366
|
+
}
|
367
|
+
async HGetAll(_request, _metadata) {
|
368
|
+
console.error('HGETAll is not supported in Node Runtime. ' + localRuntimeError);
|
369
|
+
return RedisFieldValues.fromPartial({});
|
370
|
+
}
|
371
|
+
async HDel(_request, _metadata) {
|
372
|
+
console.error('HDel is not supported in Node Runtime. ' + localRuntimeError);
|
373
|
+
return Int64Value.fromPartial({});
|
374
|
+
}
|
375
|
+
async ZScore(_request, _metadata) {
|
376
|
+
console.error('ZScore is not supported in Node Runtime. ' + localRuntimeError);
|
377
|
+
return DoubleValue.fromPartial({});
|
378
|
+
}
|
379
|
+
async ZRank(_request, _metadata) {
|
380
|
+
console.error('ZRank is not supported in Node Runtime. ' + localRuntimeError);
|
381
|
+
return Int64Value.fromPartial({});
|
382
|
+
}
|
383
|
+
async ZScan(_request, _metadata) {
|
384
|
+
console.error('ZScan is not supported in Node Runtime. ' + localRuntimeError);
|
385
|
+
return { cursor: 0, members: [] };
|
386
|
+
}
|
387
|
+
async ZIncrBy(_request, _metadata) {
|
388
|
+
console.error('ZIncrBy is not supported in Node Runtime. ' + localRuntimeError);
|
389
|
+
return DoubleValue.fromPartial({});
|
390
|
+
}
|
391
|
+
async HKeys(_request, _metadata) {
|
392
|
+
console.error('HKeys is not supported in Node Runtime. ' + localRuntimeError);
|
393
|
+
return { keys: [] };
|
394
|
+
}
|
395
|
+
async HScan(_request, _metadata) {
|
396
|
+
console.error('HScan is not supported in Node Runtime. ' + localRuntimeError);
|
397
|
+
return { cursor: 0, fieldValues: [] };
|
398
|
+
}
|
399
|
+
async HIncrBy(_request, _metadata) {
|
400
|
+
console.error('HIncrBy is not supported in Node Runtime. ' + localRuntimeError);
|
401
|
+
return Int64Value.fromPartial({});
|
402
|
+
}
|
403
|
+
async HLen(_request, _metadata) {
|
404
|
+
console.error('HLen is not supported in Node Runtime. ' + localRuntimeError);
|
405
|
+
return Int64Value.fromPartial({});
|
406
|
+
}
|
407
|
+
}
|
408
|
+
_LocalRedis_redis = new WeakMap(), _LocalRedis_transactions = new WeakMap(), _LocalRedis_instances = new WeakSet(), _LocalRedis_tx = function _LocalRedis_tx(txId) {
|
409
|
+
const tx = __classPrivateFieldGet(this, _LocalRedis_transactions, "f")[txId.id];
|
410
|
+
if (!tx) {
|
411
|
+
throw new Error('Transaction not found');
|
412
|
+
}
|
413
|
+
if (tx.multi) {
|
414
|
+
return tx.multi;
|
415
|
+
}
|
416
|
+
return tx.isoClient;
|
417
|
+
}, _LocalRedis_newtx = async function _LocalRedis_newtx() {
|
418
|
+
const id = Math.random().toString(36).substring(7);
|
419
|
+
let close;
|
420
|
+
let ready;
|
421
|
+
const closePromise = new Promise((resolve) => {
|
422
|
+
close = resolve;
|
423
|
+
});
|
424
|
+
const readyPromise = new Promise((resolve) => {
|
425
|
+
ready = resolve;
|
426
|
+
});
|
427
|
+
__classPrivateFieldGet(this, _LocalRedis_redis, "f")
|
428
|
+
.executeIsolated(async (isoClient) => {
|
429
|
+
__classPrivateFieldGet(this, _LocalRedis_transactions, "f")[id] = {
|
430
|
+
isoClient,
|
431
|
+
close,
|
432
|
+
multi: undefined,
|
433
|
+
id,
|
434
|
+
};
|
435
|
+
ready();
|
436
|
+
await closePromise;
|
437
|
+
})
|
438
|
+
.catch((err) => {
|
439
|
+
console.error(err);
|
440
|
+
});
|
441
|
+
await readyPromise;
|
442
|
+
return __classPrivateFieldGet(this, _LocalRedis_transactions, "f")[id];
|
443
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"LocalRedis.test.d.ts","sourceRoot":"","sources":["../../src/test/LocalRedis.test.ts"],"names":[],"mappings":""}
|