@hotmeshio/hotmesh 0.4.0 → 0.4.2
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 +39 -14
- package/build/modules/enums.d.ts +110 -0
- package/build/modules/enums.js +134 -0
- package/build/modules/errors.d.ts +124 -0
- package/build/modules/errors.js +191 -0
- package/build/modules/key.d.ts +66 -0
- package/build/modules/key.js +190 -0
- package/build/modules/storage.d.ts +3 -0
- package/build/modules/storage.js +5 -0
- package/build/modules/utils.d.ts +119 -0
- package/build/modules/utils.js +374 -0
- package/build/package.json +1 -1
- package/build/services/activities/activity.d.ts +104 -0
- package/build/services/activities/activity.js +549 -0
- package/build/services/activities/await.d.ts +12 -0
- package/build/services/activities/await.js +114 -0
- package/build/services/activities/cycle.d.ts +19 -0
- package/build/services/activities/cycle.js +112 -0
- package/build/services/activities/hook.d.ts +27 -0
- package/build/services/activities/hook.js +168 -0
- package/build/services/activities/index.d.ts +19 -0
- package/build/services/activities/index.js +20 -0
- package/build/services/activities/interrupt.d.ts +16 -0
- package/build/services/activities/interrupt.js +158 -0
- package/build/services/activities/signal.d.ts +20 -0
- package/build/services/activities/signal.js +134 -0
- package/build/services/activities/trigger.d.ts +37 -0
- package/build/services/activities/trigger.js +246 -0
- package/build/services/activities/worker.d.ts +12 -0
- package/build/services/activities/worker.js +106 -0
- package/build/services/collator/index.d.ts +111 -0
- package/build/services/collator/index.js +293 -0
- package/build/services/compiler/deployer.d.ts +40 -0
- package/build/services/compiler/deployer.js +488 -0
- package/build/services/compiler/index.d.ts +32 -0
- package/build/services/compiler/index.js +112 -0
- package/build/services/compiler/validator.d.ts +34 -0
- package/build/services/compiler/validator.js +147 -0
- package/build/services/connector/factory.d.ts +22 -0
- package/build/services/connector/factory.js +99 -0
- package/build/services/connector/index.d.ts +30 -0
- package/build/services/connector/index.js +54 -0
- package/build/services/connector/providers/ioredis.d.ts +9 -0
- package/build/services/connector/providers/ioredis.js +26 -0
- package/build/services/connector/providers/nats.d.ts +9 -0
- package/build/services/connector/providers/nats.js +34 -0
- package/build/services/connector/providers/postgres.d.ts +20 -0
- package/build/services/connector/providers/postgres.js +102 -0
- package/build/services/connector/providers/redis.d.ts +9 -0
- package/build/services/connector/providers/redis.js +38 -0
- package/build/services/engine/index.d.ts +264 -0
- package/build/services/engine/index.js +761 -0
- package/build/services/exporter/index.d.ts +44 -0
- package/build/services/exporter/index.js +126 -0
- package/build/services/hotmesh/index.d.ts +483 -0
- package/build/services/hotmesh/index.js +622 -0
- package/build/services/logger/index.d.ts +16 -0
- package/build/services/logger/index.js +54 -0
- package/build/services/mapper/index.d.ts +28 -0
- package/build/services/mapper/index.js +81 -0
- package/build/services/memflow/client.d.ts +108 -0
- package/build/services/memflow/client.js +372 -0
- package/build/services/memflow/connection.d.ts +23 -0
- package/build/services/memflow/connection.js +33 -0
- package/build/services/memflow/context.d.ts +143 -0
- package/build/services/memflow/context.js +299 -0
- package/build/services/memflow/exporter.d.ts +51 -0
- package/build/services/memflow/exporter.js +215 -0
- package/build/services/memflow/handle.d.ts +90 -0
- package/build/services/memflow/handle.js +176 -0
- package/build/services/memflow/index.d.ts +116 -0
- package/build/services/memflow/index.js +122 -0
- package/build/services/memflow/schemas/factory.d.ts +29 -0
- package/build/services/memflow/schemas/factory.js +2492 -0
- package/build/services/memflow/search.d.ts +142 -0
- package/build/services/memflow/search.js +320 -0
- package/build/services/memflow/worker.d.ts +124 -0
- package/build/services/memflow/worker.js +514 -0
- package/build/services/memflow/workflow/all.d.ts +7 -0
- package/build/services/memflow/workflow/all.js +15 -0
- package/build/services/memflow/workflow/common.d.ts +20 -0
- package/build/services/memflow/workflow/common.js +47 -0
- package/build/services/memflow/workflow/context.d.ts +6 -0
- package/build/services/memflow/workflow/context.js +45 -0
- package/build/services/memflow/workflow/contextMethods.d.ts +14 -0
- package/build/services/memflow/workflow/contextMethods.js +33 -0
- package/build/services/memflow/workflow/didRun.d.ts +7 -0
- package/build/services/memflow/workflow/didRun.js +22 -0
- package/build/services/memflow/workflow/emit.d.ts +11 -0
- package/build/services/memflow/workflow/emit.js +29 -0
- package/build/services/memflow/workflow/enrich.d.ts +9 -0
- package/build/services/memflow/workflow/enrich.js +17 -0
- package/build/services/memflow/workflow/execChild.d.ts +18 -0
- package/build/services/memflow/workflow/execChild.js +102 -0
- package/build/services/memflow/workflow/execHook.d.ts +65 -0
- package/build/services/memflow/workflow/execHook.js +73 -0
- package/build/services/memflow/workflow/hook.d.ts +9 -0
- package/build/services/memflow/workflow/hook.js +56 -0
- package/build/services/memflow/workflow/index.d.ts +74 -0
- package/build/services/memflow/workflow/index.js +87 -0
- package/build/services/memflow/workflow/interrupt.d.ts +9 -0
- package/build/services/memflow/workflow/interrupt.js +24 -0
- package/build/services/memflow/workflow/isSideEffectAllowed.d.ts +10 -0
- package/build/services/memflow/workflow/isSideEffectAllowed.js +33 -0
- package/build/services/memflow/workflow/proxyActivities.d.ts +20 -0
- package/build/services/memflow/workflow/proxyActivities.js +97 -0
- package/build/services/memflow/workflow/random.d.ts +6 -0
- package/build/services/memflow/workflow/random.js +16 -0
- package/build/services/memflow/workflow/searchMethods.d.ts +6 -0
- package/build/services/memflow/workflow/searchMethods.js +25 -0
- package/build/services/memflow/workflow/signal.d.ts +29 -0
- package/build/services/memflow/workflow/signal.js +50 -0
- package/build/services/memflow/workflow/sleepFor.d.ts +24 -0
- package/build/services/memflow/workflow/sleepFor.js +51 -0
- package/build/services/memflow/workflow/trace.d.ts +14 -0
- package/build/services/memflow/workflow/trace.js +33 -0
- package/build/services/memflow/workflow/waitFor.d.ts +29 -0
- package/build/services/memflow/workflow/waitFor.js +56 -0
- package/build/services/meshcall/index.d.ts +194 -0
- package/build/services/meshcall/index.js +452 -0
- package/build/services/meshcall/schemas/factory.d.ts +9 -0
- package/build/services/meshcall/schemas/factory.js +189 -0
- package/build/services/meshdata/index.d.ts +795 -0
- package/build/services/meshdata/index.js +1235 -0
- package/build/services/meshos/index.d.ts +293 -0
- package/build/services/meshos/index.js +547 -0
- package/build/services/pipe/functions/array.d.ts +17 -0
- package/build/services/pipe/functions/array.js +74 -0
- package/build/services/pipe/functions/bitwise.d.ts +9 -0
- package/build/services/pipe/functions/bitwise.js +24 -0
- package/build/services/pipe/functions/conditional.d.ts +13 -0
- package/build/services/pipe/functions/conditional.js +36 -0
- package/build/services/pipe/functions/cron.d.ts +12 -0
- package/build/services/pipe/functions/cron.js +40 -0
- package/build/services/pipe/functions/date.d.ts +58 -0
- package/build/services/pipe/functions/date.js +171 -0
- package/build/services/pipe/functions/index.d.ts +29 -0
- package/build/services/pipe/functions/index.js +30 -0
- package/build/services/pipe/functions/json.d.ts +5 -0
- package/build/services/pipe/functions/json.js +12 -0
- package/build/services/pipe/functions/logical.d.ts +5 -0
- package/build/services/pipe/functions/logical.js +12 -0
- package/build/services/pipe/functions/math.d.ts +42 -0
- package/build/services/pipe/functions/math.js +184 -0
- package/build/services/pipe/functions/number.d.ts +21 -0
- package/build/services/pipe/functions/number.js +60 -0
- package/build/services/pipe/functions/object.d.ts +25 -0
- package/build/services/pipe/functions/object.js +81 -0
- package/build/services/pipe/functions/string.d.ts +23 -0
- package/build/services/pipe/functions/string.js +69 -0
- package/build/services/pipe/functions/symbol.d.ts +12 -0
- package/build/services/pipe/functions/symbol.js +33 -0
- package/build/services/pipe/functions/unary.d.ts +7 -0
- package/build/services/pipe/functions/unary.js +18 -0
- package/build/services/pipe/index.d.ts +48 -0
- package/build/services/pipe/index.js +242 -0
- package/build/services/quorum/index.d.ts +90 -0
- package/build/services/quorum/index.js +263 -0
- package/build/services/reporter/index.d.ts +50 -0
- package/build/services/reporter/index.js +348 -0
- package/build/services/router/config/index.d.ts +11 -0
- package/build/services/router/config/index.js +36 -0
- package/build/services/router/consumption/index.d.ts +34 -0
- package/build/services/router/consumption/index.js +395 -0
- package/build/services/router/error-handling/index.d.ts +8 -0
- package/build/services/router/error-handling/index.js +98 -0
- package/build/services/router/index.d.ts +57 -0
- package/build/services/router/index.js +121 -0
- package/build/services/router/lifecycle/index.d.ts +27 -0
- package/build/services/router/lifecycle/index.js +80 -0
- package/build/services/router/telemetry/index.d.ts +11 -0
- package/build/services/router/telemetry/index.js +32 -0
- package/build/services/router/throttling/index.d.ts +23 -0
- package/build/services/router/throttling/index.js +76 -0
- package/build/services/search/factory.d.ts +7 -0
- package/build/services/search/factory.js +24 -0
- package/build/services/search/index.d.ts +23 -0
- package/build/services/search/index.js +10 -0
- package/build/services/search/providers/postgres/postgres.d.ts +25 -0
- package/build/services/search/providers/postgres/postgres.js +149 -0
- package/build/services/search/providers/redis/ioredis.d.ts +19 -0
- package/build/services/search/providers/redis/ioredis.js +121 -0
- package/build/services/search/providers/redis/redis.d.ts +19 -0
- package/build/services/search/providers/redis/redis.js +134 -0
- package/build/services/serializer/index.d.ts +42 -0
- package/build/services/serializer/index.js +282 -0
- package/build/services/store/cache.d.ts +67 -0
- package/build/services/store/cache.js +128 -0
- package/build/services/store/factory.d.ts +8 -0
- package/build/services/store/factory.js +24 -0
- package/build/services/store/index.d.ts +89 -0
- package/build/services/store/index.js +9 -0
- package/build/services/store/providers/postgres/kvsql.d.ts +168 -0
- package/build/services/store/providers/postgres/kvsql.js +198 -0
- package/build/services/store/providers/postgres/kvtables.d.ts +20 -0
- package/build/services/store/providers/postgres/kvtables.js +441 -0
- package/build/services/store/providers/postgres/kvtransaction.d.ts +36 -0
- package/build/services/store/providers/postgres/kvtransaction.js +248 -0
- package/build/services/store/providers/postgres/kvtypes/hash.d.ts +60 -0
- package/build/services/store/providers/postgres/kvtypes/hash.js +1287 -0
- package/build/services/store/providers/postgres/kvtypes/list.d.ts +33 -0
- package/build/services/store/providers/postgres/kvtypes/list.js +194 -0
- package/build/services/store/providers/postgres/kvtypes/string.d.ts +20 -0
- package/build/services/store/providers/postgres/kvtypes/string.js +115 -0
- package/build/services/store/providers/postgres/kvtypes/zset.d.ts +41 -0
- package/build/services/store/providers/postgres/kvtypes/zset.js +214 -0
- package/build/services/store/providers/postgres/postgres.d.ts +178 -0
- package/build/services/store/providers/postgres/postgres.js +1244 -0
- package/build/services/store/providers/redis/_base.d.ts +137 -0
- package/build/services/store/providers/redis/_base.js +980 -0
- package/build/services/store/providers/redis/ioredis.d.ts +20 -0
- package/build/services/store/providers/redis/ioredis.js +180 -0
- package/build/services/store/providers/redis/redis.d.ts +18 -0
- package/build/services/store/providers/redis/redis.js +199 -0
- package/build/services/store/providers/store-initializable.d.ts +5 -0
- package/build/services/store/providers/store-initializable.js +2 -0
- package/build/services/stream/factory.d.ts +8 -0
- package/build/services/stream/factory.js +37 -0
- package/build/services/stream/index.d.ts +69 -0
- package/build/services/stream/index.js +11 -0
- package/build/services/stream/providers/nats/nats.d.ts +60 -0
- package/build/services/stream/providers/nats/nats.js +225 -0
- package/build/services/stream/providers/postgres/kvtables.d.ts +3 -0
- package/build/services/stream/providers/postgres/kvtables.js +146 -0
- package/build/services/stream/providers/postgres/postgres.d.ts +107 -0
- package/build/services/stream/providers/postgres/postgres.js +519 -0
- package/build/services/stream/providers/redis/ioredis.d.ts +61 -0
- package/build/services/stream/providers/redis/ioredis.js +272 -0
- package/build/services/stream/providers/redis/redis.d.ts +61 -0
- package/build/services/stream/providers/redis/redis.js +305 -0
- package/build/services/stream/providers/stream-initializable.d.ts +4 -0
- package/build/services/stream/providers/stream-initializable.js +2 -0
- package/build/services/sub/factory.d.ts +7 -0
- package/build/services/sub/factory.js +29 -0
- package/build/services/sub/index.d.ts +22 -0
- package/build/services/sub/index.js +10 -0
- package/build/services/sub/providers/nats/nats.d.ts +19 -0
- package/build/services/sub/providers/nats/nats.js +105 -0
- package/build/services/sub/providers/postgres/postgres.d.ts +19 -0
- package/build/services/sub/providers/postgres/postgres.js +92 -0
- package/build/services/sub/providers/redis/ioredis.d.ts +17 -0
- package/build/services/sub/providers/redis/ioredis.js +81 -0
- package/build/services/sub/providers/redis/redis.d.ts +17 -0
- package/build/services/sub/providers/redis/redis.js +72 -0
- package/build/services/task/index.d.ts +48 -0
- package/build/services/task/index.js +253 -0
- package/build/services/telemetry/index.d.ts +52 -0
- package/build/services/telemetry/index.js +306 -0
- package/build/services/worker/index.d.ts +77 -0
- package/build/services/worker/index.js +197 -0
- package/package.json +1 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/typedoc.json +0 -47
- package/types/activity.ts +0 -268
- package/types/app.ts +0 -20
- package/types/async.ts +0 -6
- package/types/cache.ts +0 -1
- package/types/collator.ts +0 -9
- package/types/error.ts +0 -56
- package/types/exporter.ts +0 -102
- package/types/hook.ts +0 -44
- package/types/hotmesh.ts +0 -314
- package/types/index.ts +0 -306
- package/types/job.ts +0 -233
- package/types/logger.ts +0 -8
- package/types/manifest.ts +0 -70
- package/types/map.ts +0 -5
- package/types/memflow.ts +0 -645
- package/types/meshcall.ts +0 -235
- package/types/meshdata.ts +0 -278
- package/types/ms.d.ts +0 -7
- package/types/nats.ts +0 -270
- package/types/pipe.ts +0 -90
- package/types/postgres.ts +0 -114
- package/types/provider.ts +0 -161
- package/types/quorum.ts +0 -167
- package/types/redis.ts +0 -404
- package/types/serializer.ts +0 -40
- package/types/stats.ts +0 -117
- package/types/stream.ts +0 -231
- package/types/task.ts +0 -7
- package/types/telemetry.ts +0 -16
- package/types/transition.ts +0 -20
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IORedisClientType as RedisClientType, IORedisMultiType as RedisMultiType } from '../../../../types/redis';
|
|
2
|
+
import { StoreInitializable } from '../store-initializable';
|
|
3
|
+
import { RedisStoreBase } from './_base';
|
|
4
|
+
declare class IORedisStoreService extends RedisStoreBase<RedisClientType, RedisMultiType> implements StoreInitializable {
|
|
5
|
+
constructor(storeClient: RedisClientType);
|
|
6
|
+
/**
|
|
7
|
+
* When in cluster mode, the transact wrapper only
|
|
8
|
+
* sends commands to the same node/shard if they share a key.
|
|
9
|
+
* All other commands are sent simultaneouslyusing Promise.all
|
|
10
|
+
* and are then collated. this is effectiely a wrapper for
|
|
11
|
+
* `multi` but is closer to `pipeline` in terms of usage when
|
|
12
|
+
* promises are used.
|
|
13
|
+
*/
|
|
14
|
+
transact(): RedisMultiType;
|
|
15
|
+
exec(...args: any[]): Promise<string | string[] | string[][]>;
|
|
16
|
+
setnxex(key: string, value: string, expireSeconds: number): Promise<boolean>;
|
|
17
|
+
hGetAllResult(result: any): any;
|
|
18
|
+
addTaskQueues(keys: string[]): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export { IORedisStoreService };
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IORedisStoreService = void 0;
|
|
4
|
+
const key_1 = require("../../../../modules/key");
|
|
5
|
+
const enums_1 = require("../../../../modules/enums");
|
|
6
|
+
const _base_1 = require("./_base");
|
|
7
|
+
class IORedisStoreService extends _base_1.RedisStoreBase {
|
|
8
|
+
constructor(storeClient) {
|
|
9
|
+
super(storeClient);
|
|
10
|
+
this.commands = {
|
|
11
|
+
get: 'get',
|
|
12
|
+
set: 'set',
|
|
13
|
+
setnx: 'setnx',
|
|
14
|
+
del: 'del',
|
|
15
|
+
expire: 'expire',
|
|
16
|
+
hset: 'hset',
|
|
17
|
+
hscan: 'hscan',
|
|
18
|
+
hsetnx: 'hsetnx',
|
|
19
|
+
hincrby: 'hincrby',
|
|
20
|
+
hdel: 'hdel',
|
|
21
|
+
hget: 'hget',
|
|
22
|
+
hmget: 'hmget',
|
|
23
|
+
hgetall: 'hgetall',
|
|
24
|
+
hincrbyfloat: 'hincrbyfloat',
|
|
25
|
+
zrank: 'zrank',
|
|
26
|
+
zrange: 'zrange',
|
|
27
|
+
zrangebyscore_withscores: 'zrangebyscore',
|
|
28
|
+
zrangebyscore: 'zrangebyscore',
|
|
29
|
+
zrem: 'zrem',
|
|
30
|
+
zadd: 'zadd',
|
|
31
|
+
lmove: 'lmove',
|
|
32
|
+
lpop: 'lpop',
|
|
33
|
+
lrange: 'lrange',
|
|
34
|
+
rename: 'rename',
|
|
35
|
+
rpush: 'rpush',
|
|
36
|
+
scan: 'scan',
|
|
37
|
+
xack: 'xack',
|
|
38
|
+
xdel: 'xdel',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* When in cluster mode, the transact wrapper only
|
|
43
|
+
* sends commands to the same node/shard if they share a key.
|
|
44
|
+
* All other commands are sent simultaneouslyusing Promise.all
|
|
45
|
+
* and are then collated. this is effectiely a wrapper for
|
|
46
|
+
* `multi` but is closer to `pipeline` in terms of usage when
|
|
47
|
+
* promises are used.
|
|
48
|
+
*/
|
|
49
|
+
transact() {
|
|
50
|
+
const my = this;
|
|
51
|
+
if (enums_1.HMSH_IS_CLUSTER) {
|
|
52
|
+
const commands = [];
|
|
53
|
+
const addCommand = (command, args) => {
|
|
54
|
+
commands.push({ command, args });
|
|
55
|
+
return multiInstance;
|
|
56
|
+
};
|
|
57
|
+
const multiInstance = {
|
|
58
|
+
sendCommand(command) {
|
|
59
|
+
return my.storeClient.sendCommand(command);
|
|
60
|
+
},
|
|
61
|
+
async exec() {
|
|
62
|
+
if (commands.length === 0)
|
|
63
|
+
return [];
|
|
64
|
+
const sameKey = commands.every((cmd) => {
|
|
65
|
+
return cmd.args[0] === commands[0].args[0];
|
|
66
|
+
});
|
|
67
|
+
if (sameKey) {
|
|
68
|
+
const multi = my.storeClient.multi();
|
|
69
|
+
commands.forEach((cmd) => multi[cmd.command](...cmd.args));
|
|
70
|
+
const results = await multi.exec();
|
|
71
|
+
return results.map((item) => item);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
return Promise.all(commands.map((cmd) => my.storeClient[cmd.command](...cmd.args)));
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
xadd(key, id, fields, message) {
|
|
78
|
+
return addCommand('xadd', [key, id, fields, message]);
|
|
79
|
+
},
|
|
80
|
+
xack(key, group, id) {
|
|
81
|
+
return addCommand('xack', [key, group, id]);
|
|
82
|
+
},
|
|
83
|
+
xdel(key, id) {
|
|
84
|
+
return addCommand('xdel', [key, id]);
|
|
85
|
+
},
|
|
86
|
+
xlen(key) {
|
|
87
|
+
return addCommand('xlen', [key]);
|
|
88
|
+
},
|
|
89
|
+
xpending(key, group, start, end, count, consumer) {
|
|
90
|
+
return addCommand('xpending', [
|
|
91
|
+
key,
|
|
92
|
+
group,
|
|
93
|
+
start,
|
|
94
|
+
end,
|
|
95
|
+
count,
|
|
96
|
+
consumer,
|
|
97
|
+
]);
|
|
98
|
+
},
|
|
99
|
+
xclaim(key, group, consumer, minIdleTime, id, ...args) {
|
|
100
|
+
return addCommand('xclaim', [
|
|
101
|
+
key,
|
|
102
|
+
group,
|
|
103
|
+
consumer,
|
|
104
|
+
minIdleTime,
|
|
105
|
+
id,
|
|
106
|
+
...args,
|
|
107
|
+
]);
|
|
108
|
+
},
|
|
109
|
+
del(key) {
|
|
110
|
+
return addCommand('del', [key]);
|
|
111
|
+
},
|
|
112
|
+
expire: function (key, seconds) {
|
|
113
|
+
return addCommand('expire', [key, seconds]);
|
|
114
|
+
},
|
|
115
|
+
hdel(key, itemId) {
|
|
116
|
+
return addCommand('hdel', [key, itemId]);
|
|
117
|
+
},
|
|
118
|
+
hget(key, itemId) {
|
|
119
|
+
return addCommand('hget', [key, itemId]);
|
|
120
|
+
},
|
|
121
|
+
hgetall(key) {
|
|
122
|
+
return addCommand('hgetall', [key]);
|
|
123
|
+
},
|
|
124
|
+
hincrbyfloat(key, itemId, value) {
|
|
125
|
+
return addCommand('hincrbyfloat', [key, itemId, value]);
|
|
126
|
+
},
|
|
127
|
+
hmget(key, itemIds) {
|
|
128
|
+
return addCommand('hmget', [key, itemIds]);
|
|
129
|
+
},
|
|
130
|
+
hset(key, values) {
|
|
131
|
+
return addCommand('hset', [key, values]);
|
|
132
|
+
},
|
|
133
|
+
lrange(key, start, end) {
|
|
134
|
+
return addCommand('lrange', [key, start, end]);
|
|
135
|
+
},
|
|
136
|
+
rpush(key, value) {
|
|
137
|
+
return addCommand('rpush', [key, value]);
|
|
138
|
+
},
|
|
139
|
+
zadd(...args) {
|
|
140
|
+
return addCommand('zadd', args);
|
|
141
|
+
},
|
|
142
|
+
xgroup(command, key, groupName, id, mkStream) {
|
|
143
|
+
return addCommand('xgroup', [command, key, groupName, id, mkStream]);
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
return multiInstance;
|
|
147
|
+
}
|
|
148
|
+
return this.storeClient.multi();
|
|
149
|
+
}
|
|
150
|
+
async exec(...args) {
|
|
151
|
+
const response = await this.storeClient.call.apply(this.storeClient, args);
|
|
152
|
+
if (typeof response === 'string') {
|
|
153
|
+
return response;
|
|
154
|
+
}
|
|
155
|
+
else if (Array.isArray(response)) {
|
|
156
|
+
if (Array.isArray(response[0])) {
|
|
157
|
+
return response;
|
|
158
|
+
}
|
|
159
|
+
return response;
|
|
160
|
+
}
|
|
161
|
+
return response;
|
|
162
|
+
}
|
|
163
|
+
async setnxex(key, value, expireSeconds) {
|
|
164
|
+
const status = await this.storeClient[this.commands.set](key, value, 'NX', 'EX', expireSeconds.toString());
|
|
165
|
+
return this.isSuccessful(status);
|
|
166
|
+
}
|
|
167
|
+
hGetAllResult(result) {
|
|
168
|
+
//ioredis response signature is [null, {}] or [null, null]
|
|
169
|
+
return result[1];
|
|
170
|
+
}
|
|
171
|
+
async addTaskQueues(keys) {
|
|
172
|
+
const multi = this.storeClient.multi();
|
|
173
|
+
const zsetKey = this.mintKey(key_1.KeyType.WORK_ITEMS, { appId: this.appId });
|
|
174
|
+
for (const key of keys) {
|
|
175
|
+
multi.zadd(zsetKey, 'NX', Date.now(), key);
|
|
176
|
+
}
|
|
177
|
+
await multi.exec();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.IORedisStoreService = IORedisStoreService;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { StoreInitializable } from '../store-initializable';
|
|
2
|
+
import { RedisRedisClientType as RedisClientType, RedisRedisMultiType as RedisMultiType } from '../../../../types/redis';
|
|
3
|
+
import { RedisStoreBase } from './_base';
|
|
4
|
+
declare class RedisStoreService extends RedisStoreBase<RedisClientType, RedisMultiType> implements StoreInitializable {
|
|
5
|
+
constructor(storeClient: RedisClientType);
|
|
6
|
+
/**
|
|
7
|
+
* When in cluster mode, the transact wrapper only
|
|
8
|
+
* sends commands to the same node/shard if they share a key.
|
|
9
|
+
* All other commands are sent simultaneouslyusing Promise.all
|
|
10
|
+
* and are then collated
|
|
11
|
+
*/
|
|
12
|
+
transact(): RedisMultiType;
|
|
13
|
+
exec(...args: any[]): Promise<string | string[] | string[][]>;
|
|
14
|
+
setnxex(key: string, value: string, expireSeconds: number): Promise<boolean>;
|
|
15
|
+
zAdd(key: string, score: number | string, value: string | number, redisMulti?: RedisMultiType): Promise<any>;
|
|
16
|
+
zRangeByScore(key: string, score: number | string, value: string | number): Promise<string | null>;
|
|
17
|
+
}
|
|
18
|
+
export { RedisStoreService };
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RedisStoreService = void 0;
|
|
4
|
+
const enums_1 = require("../../../../modules/enums");
|
|
5
|
+
const _base_1 = require("./_base");
|
|
6
|
+
class RedisStoreService extends _base_1.RedisStoreBase {
|
|
7
|
+
constructor(storeClient) {
|
|
8
|
+
super(storeClient);
|
|
9
|
+
this.commands = {
|
|
10
|
+
get: 'GET',
|
|
11
|
+
set: 'SET',
|
|
12
|
+
setnx: 'SETNX',
|
|
13
|
+
del: 'DEL',
|
|
14
|
+
expire: 'EXPIRE',
|
|
15
|
+
hscan: 'HSCAN',
|
|
16
|
+
hset: 'HSET',
|
|
17
|
+
hsetnx: 'HSETNX',
|
|
18
|
+
hincrby: 'HINCRBY',
|
|
19
|
+
hdel: 'HDEL',
|
|
20
|
+
hget: 'HGET',
|
|
21
|
+
hmget: 'HMGET',
|
|
22
|
+
hgetall: 'HGETALL',
|
|
23
|
+
hincrbyfloat: 'HINCRBYFLOAT',
|
|
24
|
+
zrange: 'ZRANGE',
|
|
25
|
+
zrangebyscore_withscores: 'ZRANGEBYSCORE_WITHSCORES',
|
|
26
|
+
zrangebyscore: 'ZRANGEBYSCORE',
|
|
27
|
+
zrem: 'ZREM',
|
|
28
|
+
zadd: 'ZADD',
|
|
29
|
+
lmove: 'LMOVE',
|
|
30
|
+
lrange: 'LRANGE',
|
|
31
|
+
lpop: 'LPOP',
|
|
32
|
+
rename: 'RENAME',
|
|
33
|
+
rpush: 'RPUSH',
|
|
34
|
+
scan: 'SCAN',
|
|
35
|
+
xack: 'XACK',
|
|
36
|
+
xdel: 'XDEL',
|
|
37
|
+
xlen: 'XLEN',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* When in cluster mode, the transact wrapper only
|
|
42
|
+
* sends commands to the same node/shard if they share a key.
|
|
43
|
+
* All other commands are sent simultaneouslyusing Promise.all
|
|
44
|
+
* and are then collated
|
|
45
|
+
*/
|
|
46
|
+
transact() {
|
|
47
|
+
const my = this;
|
|
48
|
+
if (enums_1.HMSH_IS_CLUSTER) {
|
|
49
|
+
const commands = [];
|
|
50
|
+
const addCommand = (command, args) => {
|
|
51
|
+
commands.push({ command: command.toUpperCase(), args });
|
|
52
|
+
return multiInstance;
|
|
53
|
+
};
|
|
54
|
+
const multiInstance = {
|
|
55
|
+
sendCommand(command, ...args) {
|
|
56
|
+
return my.storeClient.sendCommand([command, ...args]);
|
|
57
|
+
},
|
|
58
|
+
async exec() {
|
|
59
|
+
if (commands.length === 0)
|
|
60
|
+
return [];
|
|
61
|
+
const sameKey = commands.every((cmd) => {
|
|
62
|
+
return cmd.args[0] === commands[0].args[0];
|
|
63
|
+
});
|
|
64
|
+
if (sameKey) {
|
|
65
|
+
const multi = my.storeClient.multi();
|
|
66
|
+
commands.forEach((cmd) => {
|
|
67
|
+
if (cmd.command === 'ZADD') {
|
|
68
|
+
return multi.ZADD(cmd.args[0], cmd.args[1], cmd.args[2]);
|
|
69
|
+
}
|
|
70
|
+
return multi[cmd.command](...cmd.args);
|
|
71
|
+
});
|
|
72
|
+
const results = await multi.exec();
|
|
73
|
+
return results.map((item) => item);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return Promise.all(commands.map((cmd) => {
|
|
77
|
+
if (cmd.command === 'ZADD') {
|
|
78
|
+
return my.storeClient.ZADD(cmd.args[0], cmd.args[1], cmd.args[2]);
|
|
79
|
+
}
|
|
80
|
+
return my.storeClient[cmd.command](...cmd.args);
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
XADD(key, id, fields, message) {
|
|
85
|
+
return addCommand('XADD', [key, id, fields, message]);
|
|
86
|
+
},
|
|
87
|
+
XACK(key, group, id) {
|
|
88
|
+
return addCommand('XACK', [key, group, id]);
|
|
89
|
+
},
|
|
90
|
+
XDEL(key, id) {
|
|
91
|
+
return addCommand('XDEL', [key, id]);
|
|
92
|
+
},
|
|
93
|
+
XLEN(key) {
|
|
94
|
+
return addCommand('XLEN', [key]);
|
|
95
|
+
},
|
|
96
|
+
XCLAIM(key, group, consumer, minIdleTime, id, ...args) {
|
|
97
|
+
return addCommand('XCLAIM', [
|
|
98
|
+
key,
|
|
99
|
+
group,
|
|
100
|
+
consumer,
|
|
101
|
+
minIdleTime,
|
|
102
|
+
id,
|
|
103
|
+
...args,
|
|
104
|
+
]);
|
|
105
|
+
},
|
|
106
|
+
XPENDING(key, group, start, end, count, consumer) {
|
|
107
|
+
return addCommand('XPENDING', [
|
|
108
|
+
key,
|
|
109
|
+
group,
|
|
110
|
+
start,
|
|
111
|
+
end,
|
|
112
|
+
count,
|
|
113
|
+
consumer,
|
|
114
|
+
]);
|
|
115
|
+
},
|
|
116
|
+
DEL: function (key) {
|
|
117
|
+
return addCommand('DEL', [key]);
|
|
118
|
+
},
|
|
119
|
+
EXPIRE: function (key, seconds) {
|
|
120
|
+
return addCommand('EXPIRE', [key, seconds]);
|
|
121
|
+
},
|
|
122
|
+
HDEL(key, itemId) {
|
|
123
|
+
return addCommand('HDEL', [key, itemId]);
|
|
124
|
+
},
|
|
125
|
+
HGET(key, itemId) {
|
|
126
|
+
return addCommand('HGET', [key, itemId]);
|
|
127
|
+
},
|
|
128
|
+
HGETALL(key) {
|
|
129
|
+
return addCommand('HGETALL', [key]);
|
|
130
|
+
},
|
|
131
|
+
HINCRBYFLOAT(key, itemId, value) {
|
|
132
|
+
return addCommand('HINCRBYFLOAT', [key, itemId, value]);
|
|
133
|
+
},
|
|
134
|
+
HMGET(key, itemIds) {
|
|
135
|
+
return addCommand('HMGET', [key, itemIds]);
|
|
136
|
+
},
|
|
137
|
+
HSET(key, values) {
|
|
138
|
+
return addCommand('HSET', [key, values]);
|
|
139
|
+
},
|
|
140
|
+
LRANGE(key, start, end) {
|
|
141
|
+
return addCommand('LRANGE', [key, start, end]);
|
|
142
|
+
},
|
|
143
|
+
RPUSH(key, items) {
|
|
144
|
+
return addCommand('RPUSH', [key, items]);
|
|
145
|
+
},
|
|
146
|
+
ZADD(key, args, opts) {
|
|
147
|
+
return addCommand('ZADD', [key, args, opts]);
|
|
148
|
+
},
|
|
149
|
+
XGROUP(command, key, groupName, id, mkStream) {
|
|
150
|
+
return addCommand('XGROUP', [command, key, groupName, id, mkStream]);
|
|
151
|
+
},
|
|
152
|
+
EXISTS: function (key) {
|
|
153
|
+
throw new Error('Function not implemented.');
|
|
154
|
+
},
|
|
155
|
+
HMPUSH: function (key, values) {
|
|
156
|
+
throw new Error('Function not implemented.');
|
|
157
|
+
},
|
|
158
|
+
LPUSH: function (key, items) {
|
|
159
|
+
throw new Error('Function not implemented.');
|
|
160
|
+
},
|
|
161
|
+
SET: function (key, value) {
|
|
162
|
+
throw new Error('Function not implemented.');
|
|
163
|
+
},
|
|
164
|
+
ZRANGE_WITHSCORES: function (key, start, end) {
|
|
165
|
+
throw new Error('Function not implemented.');
|
|
166
|
+
},
|
|
167
|
+
ZRANK: function (key, member) {
|
|
168
|
+
throw new Error('Function not implemented.');
|
|
169
|
+
},
|
|
170
|
+
ZSCORE: function (key, value) {
|
|
171
|
+
throw new Error('Function not implemented.');
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
return multiInstance;
|
|
175
|
+
}
|
|
176
|
+
return this.storeClient.multi();
|
|
177
|
+
}
|
|
178
|
+
async exec(...args) {
|
|
179
|
+
return await this.storeClient.sendCommand(args);
|
|
180
|
+
}
|
|
181
|
+
async setnxex(key, value, expireSeconds) {
|
|
182
|
+
const status = await this.storeClient[this.commands.set](key, value, { NX: true, EX: expireSeconds });
|
|
183
|
+
return this.isSuccessful(status);
|
|
184
|
+
}
|
|
185
|
+
async zAdd(key, score, value, redisMulti) {
|
|
186
|
+
return await (redisMulti || this.storeClient)[this.commands.zadd](key, {
|
|
187
|
+
score: score,
|
|
188
|
+
value: value.toString(),
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
async zRangeByScore(key, score, value) {
|
|
192
|
+
const result = await this.storeClient[this.commands.zrangebyscore](key, score, value);
|
|
193
|
+
if (result?.length > 0) {
|
|
194
|
+
return result[0];
|
|
195
|
+
}
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.RedisStoreService = RedisStoreService;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ILogger } from '../logger';
|
|
2
|
+
import { ProviderClient, ProviderTransaction } from '../../types/provider';
|
|
3
|
+
import { StreamInitializable } from './providers/stream-initializable';
|
|
4
|
+
import { StreamService } from './index';
|
|
5
|
+
declare class StreamServiceFactory {
|
|
6
|
+
static init(provider: ProviderClient, storeProvider: ProviderClient, namespace: string, appId: string, logger: ILogger): Promise<StreamService<ProviderClient, ProviderTransaction> & StreamInitializable>;
|
|
7
|
+
}
|
|
8
|
+
export { StreamServiceFactory };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StreamServiceFactory = void 0;
|
|
4
|
+
const utils_1 = require("../../modules/utils");
|
|
5
|
+
const ioredis_1 = require("./providers/redis/ioredis");
|
|
6
|
+
const redis_1 = require("./providers/redis/redis");
|
|
7
|
+
const nats_1 = require("./providers/nats/nats");
|
|
8
|
+
const postgres_1 = require("./providers/postgres/postgres");
|
|
9
|
+
class StreamServiceFactory {
|
|
10
|
+
static async init(provider, storeProvider, namespace, appId, logger) {
|
|
11
|
+
let service;
|
|
12
|
+
const providerType = (0, utils_1.identifyProvider)(provider);
|
|
13
|
+
if (providerType === 'nats') {
|
|
14
|
+
let storeProvider;
|
|
15
|
+
if ((0, utils_1.identifyProvider)(storeProvider) === 'redis') {
|
|
16
|
+
storeProvider = storeProvider;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
//ioredis
|
|
20
|
+
storeProvider = storeProvider;
|
|
21
|
+
}
|
|
22
|
+
service = new nats_1.NatsStreamService(provider, storeProvider);
|
|
23
|
+
}
|
|
24
|
+
else if (providerType === 'postgres') {
|
|
25
|
+
service = new postgres_1.PostgresStreamService(provider, storeProvider);
|
|
26
|
+
}
|
|
27
|
+
else if (providerType === 'redis') {
|
|
28
|
+
service = new redis_1.RedisStreamService(provider, storeProvider);
|
|
29
|
+
}
|
|
30
|
+
else if (providerType === 'ioredis') {
|
|
31
|
+
service = new ioredis_1.IORedisStreamService(provider, storeProvider);
|
|
32
|
+
} //etc register other providers here
|
|
33
|
+
await service.init(namespace, appId, logger);
|
|
34
|
+
return service;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.StreamServiceFactory = StreamServiceFactory;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ILogger } from '../logger';
|
|
2
|
+
import { PublishMessageConfig, StreamConfig, StreamMessage, StreamStats } from '../../types/stream';
|
|
3
|
+
import { StringAnyType } from '../../types';
|
|
4
|
+
import { KeyStoreParams, KeyType } from '../../modules/key';
|
|
5
|
+
import { ProviderClient, ProviderTransaction } from '../../types/provider';
|
|
6
|
+
export declare abstract class StreamService<ClientProvider extends ProviderClient, TransactionProvider extends ProviderTransaction> {
|
|
7
|
+
protected streamClient: ClientProvider;
|
|
8
|
+
protected storeClient: ProviderClient;
|
|
9
|
+
protected namespace: string;
|
|
10
|
+
protected logger: ILogger;
|
|
11
|
+
protected appId: string;
|
|
12
|
+
protected config: StreamConfig;
|
|
13
|
+
constructor(streamClient: ClientProvider, storeClient: ProviderClient, config?: StreamConfig);
|
|
14
|
+
abstract init(namespace: string, appId: string, logger: ILogger): Promise<void>;
|
|
15
|
+
abstract mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
16
|
+
abstract createStream(streamName: string): Promise<boolean>;
|
|
17
|
+
abstract deleteStream(streamName: string): Promise<boolean>;
|
|
18
|
+
abstract createConsumerGroup(streamName: string, groupName: string): Promise<boolean>;
|
|
19
|
+
abstract deleteConsumerGroup(streamName: string, groupName: string): Promise<boolean>;
|
|
20
|
+
abstract publishMessages(streamName: string, messages: string[], options?: PublishMessageConfig): Promise<string[] | ProviderTransaction>;
|
|
21
|
+
abstract consumeMessages(streamName: string, groupName: string, consumerName: string, options?: {
|
|
22
|
+
batchSize?: number;
|
|
23
|
+
blockTimeout?: number;
|
|
24
|
+
autoAck?: boolean;
|
|
25
|
+
enableBackoff?: boolean;
|
|
26
|
+
initialBackoff?: number;
|
|
27
|
+
maxBackoff?: number;
|
|
28
|
+
maxRetries?: number;
|
|
29
|
+
enableNotifications?: boolean;
|
|
30
|
+
notificationCallback?: (messages: StreamMessage[]) => void;
|
|
31
|
+
}): Promise<StreamMessage[]>;
|
|
32
|
+
abstract transact(): ProviderTransaction;
|
|
33
|
+
abstract ackAndDelete(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number>;
|
|
34
|
+
abstract acknowledgeMessages(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number | TransactionProvider>;
|
|
35
|
+
abstract deleteMessages(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number | TransactionProvider>;
|
|
36
|
+
abstract retryMessages(streamName: string, groupName: string, options?: {
|
|
37
|
+
consumerName?: string;
|
|
38
|
+
minIdleTime?: number;
|
|
39
|
+
messageIds?: string[];
|
|
40
|
+
delay?: number;
|
|
41
|
+
maxRetries?: number;
|
|
42
|
+
limit?: number;
|
|
43
|
+
}): Promise<StreamMessage[]>;
|
|
44
|
+
abstract getStreamStats(streamName: string): Promise<StreamStats>;
|
|
45
|
+
abstract getStreamDepth(streamName: string): Promise<number>;
|
|
46
|
+
abstract getStreamDepths(streamName: {
|
|
47
|
+
stream: string;
|
|
48
|
+
}[]): Promise<{
|
|
49
|
+
stream: string;
|
|
50
|
+
depth: number;
|
|
51
|
+
}[]>;
|
|
52
|
+
abstract trimStream(streamName: string, options: {
|
|
53
|
+
maxLen?: number;
|
|
54
|
+
maxAge?: number;
|
|
55
|
+
exactLimit?: boolean;
|
|
56
|
+
}): Promise<number>;
|
|
57
|
+
abstract getProviderSpecificFeatures(): {
|
|
58
|
+
supportsBatching: boolean;
|
|
59
|
+
supportsDeadLetterQueue: boolean;
|
|
60
|
+
supportsOrdering: boolean;
|
|
61
|
+
supportsTrimming: boolean;
|
|
62
|
+
supportsRetry: boolean;
|
|
63
|
+
supportsNotifications?: boolean;
|
|
64
|
+
maxMessageSize: number;
|
|
65
|
+
maxBatchSize: number;
|
|
66
|
+
};
|
|
67
|
+
stopNotificationConsumer?(streamName: string, groupName: string): Promise<void>;
|
|
68
|
+
cleanup?(): Promise<void>;
|
|
69
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StreamService = void 0;
|
|
4
|
+
class StreamService {
|
|
5
|
+
constructor(streamClient, storeClient, config = {}) {
|
|
6
|
+
this.streamClient = streamClient;
|
|
7
|
+
this.storeClient = storeClient;
|
|
8
|
+
this.config = config;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.StreamService = StreamService;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ILogger } from '../../../logger';
|
|
2
|
+
import { StreamService } from '../../index';
|
|
3
|
+
import { PublishMessageConfig, StreamConfig, StreamMessage, StreamStats } from '../../../../types/stream';
|
|
4
|
+
import { KeyStoreParams, StringAnyType } from '../../../../types';
|
|
5
|
+
import { NatsJetStreamType, NatsJetStreamManager as NatsJetStreamManagerType, NatsPubAckType, NatsClientType } from '../../../../types/nats';
|
|
6
|
+
import { KeyType } from '../../../../modules/key';
|
|
7
|
+
import { ProviderClient, ProviderTransaction } from '../../../../types/provider';
|
|
8
|
+
declare class NatsStreamService extends StreamService<NatsClientType, NatsPubAckType> {
|
|
9
|
+
jetstream: NatsJetStreamType;
|
|
10
|
+
jsm: NatsJetStreamManagerType;
|
|
11
|
+
constructor(streamClient: NatsClientType, storeClient: ProviderClient, config?: StreamConfig);
|
|
12
|
+
init(namespace: string, appId: string, logger: ILogger): Promise<void>;
|
|
13
|
+
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
14
|
+
transact(): ProviderTransaction;
|
|
15
|
+
createStream(streamName: string): Promise<boolean>;
|
|
16
|
+
deleteStream(streamName: string): Promise<boolean>;
|
|
17
|
+
createConsumerGroup(streamName: string, groupName: string): Promise<boolean>;
|
|
18
|
+
deleteConsumerGroup(streamName: string, groupName: string): Promise<boolean>;
|
|
19
|
+
publishMessages(streamName: string, messages: string[], options?: PublishMessageConfig): Promise<string[] | ProviderTransaction>;
|
|
20
|
+
consumeMessages(streamName: string, groupName: string, consumerName: string, options?: {
|
|
21
|
+
batchSize?: number;
|
|
22
|
+
blockTimeout?: number;
|
|
23
|
+
autoAck?: boolean;
|
|
24
|
+
}): Promise<StreamMessage[]>;
|
|
25
|
+
ackAndDelete(streamName: string, groupName: string, messageIds: string[]): Promise<number>;
|
|
26
|
+
acknowledgeMessages(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number>;
|
|
27
|
+
deleteMessages(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number>;
|
|
28
|
+
retryMessages(streamName: string, groupName: string, options?: {
|
|
29
|
+
consumerName?: string;
|
|
30
|
+
minIdleTime?: number;
|
|
31
|
+
messageIds?: string[];
|
|
32
|
+
delay?: number;
|
|
33
|
+
maxRetries?: number;
|
|
34
|
+
limit?: number;
|
|
35
|
+
}): Promise<StreamMessage[]>;
|
|
36
|
+
getStreamStats(streamName: string): Promise<StreamStats>;
|
|
37
|
+
getStreamDepth(streamName: string): Promise<number>;
|
|
38
|
+
getStreamDepths(streamNames: {
|
|
39
|
+
stream: string;
|
|
40
|
+
}[]): Promise<{
|
|
41
|
+
stream: string;
|
|
42
|
+
depth: number;
|
|
43
|
+
}[]>;
|
|
44
|
+
trimStream(streamName: string, options: {
|
|
45
|
+
maxLen?: number;
|
|
46
|
+
maxAge?: number;
|
|
47
|
+
exactLimit?: boolean;
|
|
48
|
+
}): Promise<number>;
|
|
49
|
+
getProviderSpecificFeatures(): {
|
|
50
|
+
supportsBatching: boolean;
|
|
51
|
+
supportsDeadLetterQueue: boolean;
|
|
52
|
+
supportsOrdering: boolean;
|
|
53
|
+
supportsTrimming: boolean;
|
|
54
|
+
supportsRetry: boolean;
|
|
55
|
+
supportsNotifications: boolean;
|
|
56
|
+
maxMessageSize: number;
|
|
57
|
+
maxBatchSize: number;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export { NatsStreamService };
|