ioredis-streams 1.0.4 → 1.2.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/dist/index.d.ts +18 -7
- package/dist/index.js +34 -24
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +64 -36
package/dist/index.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export declare class RedisStreams {
|
|
|
29
29
|
protected peerName: string;
|
|
30
30
|
protected groups: Map<string, Map<string, StreamGroupConsumer>>;
|
|
31
31
|
protected config: RedisStreamsConfig;
|
|
32
|
-
constructor(peerName: string, config?: Partial<
|
|
32
|
+
constructor(peerName: string, config?: Partial<RedisStreamsInputConfig>);
|
|
33
33
|
private getConsumerRedis;
|
|
34
34
|
private getProducerRedis;
|
|
35
35
|
private static getDefaultConfigs;
|
|
@@ -60,6 +60,14 @@ export declare type RedisStreamsConfig = {
|
|
|
60
60
|
maxSize: number;
|
|
61
61
|
};
|
|
62
62
|
};
|
|
63
|
+
export declare type RedisStreamsInputConfig = Omit<RedisStreamsConfig, 'redis'> & {
|
|
64
|
+
redis: {
|
|
65
|
+
host: string;
|
|
66
|
+
port: number;
|
|
67
|
+
} | {
|
|
68
|
+
cluster: string;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
63
71
|
export declare type StreamConfigs = {
|
|
64
72
|
readBlockTime: number;
|
|
65
73
|
claimIdleTime: number;
|
|
@@ -73,7 +81,9 @@ export declare type ProduceFunc = (...events: IEvent<any>[]) => {
|
|
|
73
81
|
};
|
|
74
82
|
export declare type StreamGroupConsumer = ConsumeFunctions & {
|
|
75
83
|
handle: HandleFunction<any>;
|
|
76
|
-
produce: (...events: IEvent<any>[]) => Promise<void
|
|
84
|
+
produce: (...events: (IEvent<any> | IWaitEvent<any>)[]) => Promise<void> | {
|
|
85
|
+
wait: (timeout: number) => Promise<any>;
|
|
86
|
+
};
|
|
77
87
|
produceMany: ProduceFunc;
|
|
78
88
|
with: <O extends AllowedFactories<O>>(events: O) => WithTypedHandlers<O>;
|
|
79
89
|
};
|
|
@@ -83,16 +93,17 @@ export declare type ConsumerGroup = {
|
|
|
83
93
|
declare type NamedEvent<T, N extends string> = IEvent<T> & {
|
|
84
94
|
name: N;
|
|
85
95
|
};
|
|
86
|
-
declare type NamedWaitEvent<T, N extends string> = IWaitEvent<T> & {
|
|
96
|
+
declare type NamedWaitEvent<T, N extends string, ReplyType = any> = IWaitEvent<T> & {
|
|
87
97
|
name: N;
|
|
88
98
|
};
|
|
89
99
|
declare type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
|
|
100
|
+
declare type ReplyTypeOf<T> = T extends NamedWaitEvent<any, string, infer Reply> ? Reply : any;
|
|
90
101
|
declare type DataOfHandler<T> = T extends (...args: any[]) => IEvent<infer R> ? R : any;
|
|
91
102
|
declare type ArgsOf<T> = T extends (...args: infer Args) => any ? Args : never;
|
|
92
103
|
declare type AllowedFactories<T> = {
|
|
93
|
-
[name in (keyof T)]: (...args: any[]) => IEvent<DataOfHandler<T[name]>>;
|
|
104
|
+
[name in (keyof T)]: (...args: any[]) => IEvent<DataOfHandler<T[name]>> | IWaitEvent<DataOfHandler<T[name]>>;
|
|
94
105
|
};
|
|
95
|
-
export declare type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<
|
|
106
|
+
export declare type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<any>;
|
|
96
107
|
export declare type ConsumeFunctions = {
|
|
97
108
|
consume: () => Promise<{
|
|
98
109
|
stop: () => void;
|
|
@@ -111,13 +122,13 @@ declare type PromisifiedFunctionsMap<T> = {
|
|
|
111
122
|
source: string;
|
|
112
123
|
};
|
|
113
124
|
} ? {
|
|
114
|
-
wait: (timeout: number) => Promise<
|
|
125
|
+
wait: (timeout: number) => Promise<ReplyTypeOf<ReturnType<T[func]>>>;
|
|
115
126
|
} : Promise<void>;
|
|
116
127
|
};
|
|
117
128
|
export declare const event: <N extends string>(name: N, v?: string) => {
|
|
118
129
|
of: <T>() => { [K in N]: (data: T, time?: number | undefined) => NamedEvent<T, N>; };
|
|
119
130
|
};
|
|
120
131
|
export declare const eventWithReply: <N extends string>(name: N, source: string, v?: string) => {
|
|
121
|
-
of: <T>() => { [K in N]: (data: T, time?: number | undefined) => NamedWaitEvent<T, N>; };
|
|
132
|
+
of: <T, ReplyType = any>() => { [K in N]: (data: T, time?: number | undefined) => NamedWaitEvent<T, N, ReplyType>; };
|
|
122
133
|
};
|
|
123
134
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -9,19 +9,20 @@ const ioredis_1 = __importDefault(require("ioredis"));
|
|
|
9
9
|
const redisHost = process.env.REDIS_HOST;
|
|
10
10
|
const redisPort = parseInt(process.env.REDIS_PORT || '0');
|
|
11
11
|
const redisCluster = process.env.REDIS_CLUSTER || undefined;
|
|
12
|
+
const parseClusterString = (redisCluster) => redisCluster
|
|
13
|
+
.split(',')
|
|
14
|
+
.map(x => x.split(':'))
|
|
15
|
+
.map(([host, port]) => ({ host, port: parseInt(port) }));
|
|
12
16
|
const getDefaultRedisConfigs = () => {
|
|
17
|
+
if (redisCluster) {
|
|
18
|
+
return parseClusterString(redisCluster);
|
|
19
|
+
}
|
|
13
20
|
if (!redisHost || redisHost === '') {
|
|
14
21
|
throw new Error('No redis connection provided (REDIS_HOST) ...');
|
|
15
22
|
}
|
|
16
|
-
if (!redisPort
|
|
23
|
+
if (!redisPort) {
|
|
17
24
|
throw new Error('No redis connection provided (REDIS_PORT) ...');
|
|
18
25
|
}
|
|
19
|
-
if (redisCluster) {
|
|
20
|
-
return redisCluster
|
|
21
|
-
.split(',')
|
|
22
|
-
.map(x => x.split(':'))
|
|
23
|
-
.map(([host, port]) => ({ host, port: parseInt(port) }));
|
|
24
|
-
}
|
|
25
26
|
return {
|
|
26
27
|
host: process.env.REDIS_HOST || '',
|
|
27
28
|
port: parseInt(process.env.REDIS_PORT || '0')
|
|
@@ -64,10 +65,14 @@ class RedisStreams {
|
|
|
64
65
|
return (0, exports.getExistingRedisClient)(this.config.redis);
|
|
65
66
|
}
|
|
66
67
|
static getDefaultConfigs(peerName, config) {
|
|
68
|
+
let cluster;
|
|
69
|
+
if (config?.redis && 'cluster' in config.redis) {
|
|
70
|
+
cluster = config.redis.cluster;
|
|
71
|
+
}
|
|
67
72
|
return Object.assign({
|
|
68
73
|
redis: getDefaultRedisConfigs(),
|
|
69
74
|
logger: log4js_api_1.default.getLogger(peerName),
|
|
70
|
-
}, config || {});
|
|
75
|
+
}, config || {}, { ...(cluster ? { redis: parseClusterString(cluster) } : {}) });
|
|
71
76
|
}
|
|
72
77
|
buildConsumerConfigs(streamName, groupName, config) {
|
|
73
78
|
return Object.assign({
|
|
@@ -99,7 +104,6 @@ class RedisStreams {
|
|
|
99
104
|
if (!handle) {
|
|
100
105
|
return;
|
|
101
106
|
}
|
|
102
|
-
;
|
|
103
107
|
return handle(id, eventObj);
|
|
104
108
|
};
|
|
105
109
|
const newStream = new StreamConsumer(this.getConsumerRedis(), handler, config);
|
|
@@ -152,34 +156,32 @@ class RedisStreams {
|
|
|
152
156
|
}
|
|
153
157
|
};
|
|
154
158
|
};
|
|
155
|
-
const produce =
|
|
159
|
+
const produce = (...events) => {
|
|
156
160
|
if (events.length === 1 && events[0]['wait']) {
|
|
157
161
|
const pipeline = this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events);
|
|
158
162
|
return {
|
|
159
163
|
wait: async (timeout) => {
|
|
160
164
|
const redis = this.getConsumerRedis();
|
|
161
|
-
const channel = events[0].name + '_' + events[0].time;
|
|
165
|
+
const channel = events[0].name + '_' + events[0].time + '_' + events[0]['wait']?.['source'];
|
|
162
166
|
let id;
|
|
167
|
+
let handler;
|
|
163
168
|
const cleanup = () => {
|
|
169
|
+
if (handler)
|
|
170
|
+
redis.off('message', handler);
|
|
164
171
|
redis.unsubscribe(channel);
|
|
165
172
|
redis.disconnect();
|
|
166
173
|
if (id)
|
|
167
174
|
clearTimeout(id);
|
|
168
175
|
};
|
|
169
176
|
try {
|
|
170
|
-
await new Promise(async (resolve, reject) => {
|
|
177
|
+
const reply = await new Promise(async (resolve, reject) => {
|
|
171
178
|
id = setTimeout(() => reject(new Error('Timeout')), timeout);
|
|
172
179
|
await redis.subscribe(channel);
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const eventObj = JSON.parse(data);
|
|
176
|
-
if (eventObj && eventObj.source === events?.[0]?.['wait']?.['source'])
|
|
177
|
-
resolve(eventObj);
|
|
178
|
-
}
|
|
179
|
-
catch (err) { }
|
|
180
|
-
});
|
|
180
|
+
handler = (commingChannel, data) => resolve(JSON.parse(data)['reply']);
|
|
181
|
+
redis.on('message', handler);
|
|
181
182
|
await pipeline.exec();
|
|
182
183
|
});
|
|
184
|
+
return reply;
|
|
183
185
|
}
|
|
184
186
|
finally {
|
|
185
187
|
cleanup();
|
|
@@ -188,9 +190,9 @@ class RedisStreams {
|
|
|
188
190
|
};
|
|
189
191
|
}
|
|
190
192
|
else {
|
|
191
|
-
|
|
193
|
+
const r1 = this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events);
|
|
194
|
+
return r1.exec().then(r => { return; });
|
|
192
195
|
}
|
|
193
|
-
return;
|
|
194
196
|
};
|
|
195
197
|
const newStream = {
|
|
196
198
|
consume,
|
|
@@ -342,7 +344,15 @@ class StreamConsumer {
|
|
|
342
344
|
//log corrupted messages
|
|
343
345
|
return this.logger.error('Error while parsing message. Corrupted or wrong-formatted stream message.', id, message, err);
|
|
344
346
|
}
|
|
345
|
-
|
|
347
|
+
const result = await this.processEvent(id, event, eventObj);
|
|
348
|
+
if (eventObj['wait']) {
|
|
349
|
+
const channel = eventObj.name + '_' + eventObj.time + '_' + eventObj['wait']?.['source'];
|
|
350
|
+
await this.redis.publish(channel, JSON.stringify({
|
|
351
|
+
reply: result,
|
|
352
|
+
wait: eventObj['wait']
|
|
353
|
+
}));
|
|
354
|
+
}
|
|
355
|
+
return result;
|
|
346
356
|
}
|
|
347
357
|
async dispose() {
|
|
348
358
|
this.disposing = true;
|
|
@@ -416,7 +426,7 @@ class ConsumerBuffer {
|
|
|
416
426
|
const augmentEvents = (events, stream) => {
|
|
417
427
|
return Object.keys(events).reduce((p, c) => {
|
|
418
428
|
const factory = events[c];
|
|
419
|
-
p[c] =
|
|
429
|
+
p[c] = (...args) => stream.produce(factory(...args));
|
|
420
430
|
return p;
|
|
421
431
|
}, { ...events, ...stream });
|
|
422
432
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ioredis-streams",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"author": "Zaid Al-Omari",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
"@typescript-eslint/parser": "^4.22.0",
|
|
35
35
|
"chai": "^4.2.0",
|
|
36
36
|
"eslint": "^7.0.0",
|
|
37
|
-
"mocha": "^
|
|
37
|
+
"mocha": "^11.7.1",
|
|
38
38
|
"nyc": "^15.0.1",
|
|
39
39
|
"sinon": "^9.0.2",
|
|
40
40
|
"sinon-chai": "^3.5.0",
|
|
41
41
|
"source-map-support": "^0.5.19",
|
|
42
42
|
"typescript": "^4.6.2"
|
|
43
43
|
}
|
|
44
|
-
}
|
|
44
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -5,19 +5,21 @@ const redisHost = process.env.REDIS_HOST;
|
|
|
5
5
|
const redisPort = parseInt(process.env.REDIS_PORT || '0');
|
|
6
6
|
const redisCluster = process.env.REDIS_CLUSTER || undefined;
|
|
7
7
|
|
|
8
|
+
const parseClusterString = (redisCluster: string) => redisCluster
|
|
9
|
+
.split(',')
|
|
10
|
+
.map(x => x.split(':'))
|
|
11
|
+
.map(([host, port]) => ({ host, port: parseInt(port) }));
|
|
12
|
+
|
|
8
13
|
const getDefaultRedisConfigs = () => {
|
|
14
|
+
if (redisCluster) {
|
|
15
|
+
return parseClusterString(redisCluster);
|
|
16
|
+
}
|
|
9
17
|
if (!redisHost || redisHost === '') {
|
|
10
18
|
throw new Error('No redis connection provided (REDIS_HOST) ...')
|
|
11
19
|
}
|
|
12
|
-
if (!redisPort
|
|
20
|
+
if (!redisPort) {
|
|
13
21
|
throw new Error('No redis connection provided (REDIS_PORT) ...')
|
|
14
22
|
}
|
|
15
|
-
if (redisCluster) {
|
|
16
|
-
return redisCluster
|
|
17
|
-
.split(',')
|
|
18
|
-
.map(x => x.split(':'))
|
|
19
|
-
.map(([host, port]) => ({ host, port: parseInt(port) }))
|
|
20
|
-
}
|
|
21
23
|
return {
|
|
22
24
|
host: process.env.REDIS_HOST || '',
|
|
23
25
|
port: parseInt(process.env.REDIS_PORT || '0')
|
|
@@ -60,7 +62,7 @@ export class RedisStreams {
|
|
|
60
62
|
protected groups: Map<string, Map<string, StreamGroupConsumer>> = new Map();
|
|
61
63
|
protected config: RedisStreamsConfig;
|
|
62
64
|
|
|
63
|
-
constructor(protected peerName: string, config?: Partial<
|
|
65
|
+
constructor(protected peerName: string, config?: Partial<RedisStreamsInputConfig>) {
|
|
64
66
|
this.config = RedisStreams.getDefaultConfigs(peerName, config);
|
|
65
67
|
}
|
|
66
68
|
|
|
@@ -72,11 +74,17 @@ export class RedisStreams {
|
|
|
72
74
|
return getExistingRedisClient(this.config.redis);
|
|
73
75
|
}
|
|
74
76
|
|
|
75
|
-
private static getDefaultConfigs(peerName: string, config?: Partial<
|
|
77
|
+
private static getDefaultConfigs(peerName: string, config?: Partial<RedisStreamsInputConfig>) {
|
|
78
|
+
let cluster: string | undefined;
|
|
79
|
+
if (config?.redis && 'cluster' in config.redis) {
|
|
80
|
+
cluster = (config!.redis! as { cluster: string }).cluster;
|
|
81
|
+
}
|
|
82
|
+
|
|
76
83
|
return <RedisStreamsConfig>Object.assign(<RedisStreamsConfig>{
|
|
77
84
|
redis: getDefaultRedisConfigs(),
|
|
78
85
|
logger: loggerFactory.getLogger(peerName),
|
|
79
|
-
}, config || {}
|
|
86
|
+
}, config || {},
|
|
87
|
+
{ ...(cluster ? { redis: parseClusterString(cluster) } : {}) });
|
|
80
88
|
}
|
|
81
89
|
|
|
82
90
|
private buildConsumerConfigs(streamName: string, groupName: string, config?: Partial<StreamConfigs>) {
|
|
@@ -107,7 +115,7 @@ export class RedisStreams {
|
|
|
107
115
|
if (!handle) handle = handlers.get('*');
|
|
108
116
|
if (!handle) {
|
|
109
117
|
return;
|
|
110
|
-
}
|
|
118
|
+
}
|
|
111
119
|
return handle(id, eventObj);
|
|
112
120
|
};
|
|
113
121
|
const newStream = new StreamConsumer(this.getConsumerRedis(), handler, config);
|
|
@@ -162,40 +170,39 @@ export class RedisStreams {
|
|
|
162
170
|
}
|
|
163
171
|
}
|
|
164
172
|
}
|
|
165
|
-
const produce =
|
|
173
|
+
const produce = <T, R = any>(...events: (IEvent<T> | IWaitEvent<T>)[]) => {
|
|
166
174
|
if (events.length === 1 && events[0]['wait']) {
|
|
167
175
|
const pipeline = this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events);
|
|
168
176
|
return {
|
|
169
177
|
wait: async (timeout: number) => {
|
|
170
178
|
const redis = this.getConsumerRedis();
|
|
171
|
-
const channel = events[0].name + '_' + events[0].time;
|
|
179
|
+
const channel = events[0].name + '_' + events[0].time + '_' + events[0]['wait']?.['source'];
|
|
172
180
|
let id: NodeJS.Timeout | undefined;
|
|
181
|
+
let handler: ((...args: any[]) => void) | undefined;
|
|
173
182
|
const cleanup = () => {
|
|
183
|
+
if (handler) redis.off('message', handler);
|
|
174
184
|
redis.unsubscribe(channel);
|
|
175
185
|
redis.disconnect();
|
|
176
186
|
if (id) clearTimeout(id);
|
|
177
187
|
}
|
|
178
188
|
try {
|
|
179
|
-
await new Promise<
|
|
189
|
+
const reply = await new Promise<R>(async (resolve, reject) => {
|
|
180
190
|
id = setTimeout(() => reject(new Error('Timeout')), timeout);
|
|
181
191
|
await redis.subscribe(channel);
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
const eventObj = JSON.parse(data);
|
|
185
|
-
if (eventObj && eventObj.source === events?.[0]?.['wait']?.['source']) resolve(eventObj);
|
|
186
|
-
} catch (err) { }
|
|
187
|
-
});
|
|
192
|
+
handler = (commingChannel, data) => resolve(JSON.parse(data)['reply']);
|
|
193
|
+
redis.on('message', handler);
|
|
188
194
|
await pipeline.exec();
|
|
189
195
|
});
|
|
196
|
+
return reply;
|
|
190
197
|
} finally {
|
|
191
198
|
cleanup();
|
|
192
199
|
}
|
|
193
200
|
}
|
|
194
201
|
}
|
|
195
202
|
} else {
|
|
196
|
-
|
|
203
|
+
const r1 = this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events);
|
|
204
|
+
return r1.exec().then(r => { return; });
|
|
197
205
|
}
|
|
198
|
-
return;
|
|
199
206
|
}
|
|
200
207
|
|
|
201
208
|
const newStream = <StreamGroupConsumer>{
|
|
@@ -228,7 +235,7 @@ export class RedisStreams {
|
|
|
228
235
|
}
|
|
229
236
|
}
|
|
230
237
|
|
|
231
|
-
type EventProccessor = <T>(id: string, event: string, eventObj: IEvent<T>) => Promise<
|
|
238
|
+
type EventProccessor = <T>(id: string, event: string, eventObj: IEvent<T> | IWaitEvent<T>) => Promise<any>;
|
|
232
239
|
class StreamConsumer {
|
|
233
240
|
|
|
234
241
|
protected logger!: loggerFactory.Logger;
|
|
@@ -369,7 +376,7 @@ class StreamConsumer {
|
|
|
369
376
|
|
|
370
377
|
protected async processMessage<T>(id: string, message: string[]) {
|
|
371
378
|
let event: string;
|
|
372
|
-
let eventObj: IEvent<T>
|
|
379
|
+
let eventObj: IEvent<T> | IWaitEvent<T>
|
|
373
380
|
try {
|
|
374
381
|
let value: string;
|
|
375
382
|
[event, value] = message;
|
|
@@ -379,7 +386,15 @@ class StreamConsumer {
|
|
|
379
386
|
//log corrupted messages
|
|
380
387
|
return this.logger.error('Error while parsing message. Corrupted or wrong-formatted stream message.', id, message, err);
|
|
381
388
|
}
|
|
382
|
-
|
|
389
|
+
const result = await this.processEvent(id, event, eventObj);
|
|
390
|
+
if (eventObj['wait']) {
|
|
391
|
+
const channel = eventObj.name + '_' + eventObj.time + '_' + eventObj['wait']?.['source'];
|
|
392
|
+
await this.redis.publish(channel, JSON.stringify({
|
|
393
|
+
reply: result,
|
|
394
|
+
wait: eventObj['wait']
|
|
395
|
+
}));
|
|
396
|
+
}
|
|
397
|
+
return result;
|
|
383
398
|
}
|
|
384
399
|
|
|
385
400
|
async dispose() {
|
|
@@ -413,7 +428,7 @@ class ConsumerBuffer {
|
|
|
413
428
|
buffer: [string, string[]][] = [];
|
|
414
429
|
constructor(protected configs: {
|
|
415
430
|
ack: (...id: string[]) => Promise<void>,
|
|
416
|
-
process: (id: string, message: string[]) => Promise<
|
|
431
|
+
process: (id: string, message: string[]) => Promise<any>,
|
|
417
432
|
error: (id: string, message: string[], error: Error) => Promise<void>,
|
|
418
433
|
mode: 'parallel' | 'serial',
|
|
419
434
|
size: number
|
|
@@ -463,7 +478,7 @@ class ConsumerBuffer {
|
|
|
463
478
|
const augmentEvents = <T extends AllowedFactories<R>, R>(events: T, stream: StreamGroupConsumer) => {
|
|
464
479
|
return Object.keys(events).reduce((p, c) => {
|
|
465
480
|
const factory = events[c as keyof T];
|
|
466
|
-
p[c] =
|
|
481
|
+
p[c] = (...args: any[]) => stream.produce(factory(...args))
|
|
467
482
|
return p;
|
|
468
483
|
}, { ...events, ...stream })
|
|
469
484
|
}
|
|
@@ -488,6 +503,16 @@ export type RedisStreamsConfig = {
|
|
|
488
503
|
};
|
|
489
504
|
}
|
|
490
505
|
|
|
506
|
+
export type RedisStreamsInputConfig = Omit<RedisStreamsConfig, 'redis'> & {
|
|
507
|
+
redis: {
|
|
508
|
+
host: string;
|
|
509
|
+
port: number;
|
|
510
|
+
}
|
|
511
|
+
| {
|
|
512
|
+
cluster: string;
|
|
513
|
+
};
|
|
514
|
+
};
|
|
515
|
+
|
|
491
516
|
export type StreamConfigs = {
|
|
492
517
|
readBlockTime: number;
|
|
493
518
|
claimIdleTime: number;
|
|
@@ -514,7 +539,9 @@ export type ProduceFunc = (...events: IEvent<any>[]) => {
|
|
|
514
539
|
|
|
515
540
|
export type StreamGroupConsumer = ConsumeFunctions & {
|
|
516
541
|
handle: HandleFunction<any>;
|
|
517
|
-
produce: (...events: IEvent<any>[]) => Promise<void
|
|
542
|
+
produce: (...events: (IEvent<any> | IWaitEvent<any>)[]) => Promise<void> | {
|
|
543
|
+
wait: (timeout: number) => Promise<any>;
|
|
544
|
+
}
|
|
518
545
|
produceMany: ProduceFunc;
|
|
519
546
|
with: <O extends AllowedFactories<O>>(events: O) => WithTypedHandlers<O>;
|
|
520
547
|
}
|
|
@@ -524,13 +551,14 @@ export type ConsumerGroup = {
|
|
|
524
551
|
}
|
|
525
552
|
|
|
526
553
|
type NamedEvent<T, N extends string> = IEvent<T> & { name: N };
|
|
527
|
-
type NamedWaitEvent<T, N extends string> = IWaitEvent<T> & { name: N };
|
|
554
|
+
type NamedWaitEvent<T, N extends string, ReplyType = any> = IWaitEvent<T> & { name: N };
|
|
528
555
|
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
|
|
556
|
+
type ReplyTypeOf<T> = T extends NamedWaitEvent<any, string, infer Reply> ? Reply : any
|
|
529
557
|
type DataOfHandler<T> = T extends (...args: any[]) => IEvent<infer R> ? R : any;
|
|
530
558
|
type ArgsOf<T> = T extends (...args: infer Args) => any ? Args : never;
|
|
531
559
|
|
|
532
|
-
type AllowedFactories<T> = { [name in (keyof T)]: (...args: any[]) => IEvent<DataOfHandler<T[name]>> };
|
|
533
|
-
export type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<
|
|
560
|
+
type AllowedFactories<T> = { [name in (keyof T)]: (...args: any[]) => IEvent<DataOfHandler<T[name]>> | IWaitEvent<DataOfHandler<T[name]>> };
|
|
561
|
+
export type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<any>;
|
|
534
562
|
|
|
535
563
|
export type ConsumeFunctions = {
|
|
536
564
|
consume: () => Promise<{
|
|
@@ -549,7 +577,7 @@ type WithTypedHandlers<T> = PromisifiedFunctionsMap<T> & {
|
|
|
549
577
|
|
|
550
578
|
|
|
551
579
|
type PromisifiedFunctionsMap<T> = {
|
|
552
|
-
[func in keyof T]: (...args: ArgsOf<T[func]>) => ReturnType<T[func]> extends { wait: { source: string } } ? { wait: (timeout: number) => Promise<
|
|
580
|
+
[func in keyof T]: (...args: ArgsOf<T[func]>) => ReturnType<T[func]> extends { wait: { source: string } } ? { wait: (timeout: number) => Promise<ReplyTypeOf<ReturnType<T[func]>>> } : Promise<void>
|
|
553
581
|
};
|
|
554
582
|
|
|
555
583
|
export const event = <N extends string>(name: N, v = '1.0.0') => {
|
|
@@ -566,16 +594,16 @@ export const event = <N extends string>(name: N, v = '1.0.0') => {
|
|
|
566
594
|
}
|
|
567
595
|
|
|
568
596
|
export const eventWithReply = <N extends string>(name: N, source: string, v = '1.0.0') => {
|
|
569
|
-
type ReturnType<T, N extends string> = {
|
|
570
|
-
[K in N]: (data: T, time?: number) => NamedWaitEvent<T, N>;
|
|
597
|
+
type ReturnType<T, N extends string, ReplyType> = {
|
|
598
|
+
[K in N]: (data: T, time?: number) => NamedWaitEvent<T, N, ReplyType>;
|
|
571
599
|
};
|
|
572
600
|
return {
|
|
573
|
-
of: <T>() => {
|
|
601
|
+
of: <T, ReplyType = any>() => {
|
|
574
602
|
return {
|
|
575
603
|
[name]: (data: T, time = Date.now()) => (<IWaitEvent<T>>{
|
|
576
604
|
name, v, data, time, wait: { source }
|
|
577
605
|
})
|
|
578
|
-
} as ReturnType<T, N>
|
|
606
|
+
} as ReturnType<T, N, ReplyType>
|
|
579
607
|
}
|
|
580
608
|
}
|
|
581
609
|
}
|