ioredis-streams 1.0.3 → 1.1.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 CHANGED
@@ -73,7 +73,9 @@ export declare type ProduceFunc = (...events: IEvent<any>[]) => {
73
73
  };
74
74
  export declare type StreamGroupConsumer = ConsumeFunctions & {
75
75
  handle: HandleFunction<any>;
76
- produce: (...events: IEvent<any>[]) => Promise<void>;
76
+ produce: (...events: (IEvent<any> | IWaitEvent<any>)[]) => Promise<void> | {
77
+ wait: (timeout: number) => Promise<any>;
78
+ };
77
79
  produceMany: ProduceFunc;
78
80
  with: <O extends AllowedFactories<O>>(events: O) => WithTypedHandlers<O>;
79
81
  };
@@ -83,16 +85,17 @@ export declare type ConsumerGroup = {
83
85
  declare type NamedEvent<T, N extends string> = IEvent<T> & {
84
86
  name: N;
85
87
  };
86
- declare type NamedWaitEvent<T, N extends string> = IWaitEvent<T> & {
88
+ declare type NamedWaitEvent<T, N extends string, ReplyType = any> = IWaitEvent<T> & {
87
89
  name: N;
88
90
  };
89
91
  declare type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
92
+ declare type ReplyTypeOf<T> = T extends NamedWaitEvent<any, string, infer Reply> ? Reply : any;
90
93
  declare type DataOfHandler<T> = T extends (...args: any[]) => IEvent<infer R> ? R : any;
91
94
  declare type ArgsOf<T> = T extends (...args: infer Args) => any ? Args : never;
92
95
  declare type AllowedFactories<T> = {
93
- [name in (keyof T)]: (...args: any[]) => IEvent<DataOfHandler<T[name]>>;
96
+ [name in (keyof T)]: (...args: any[]) => IEvent<DataOfHandler<T[name]>> | IWaitEvent<DataOfHandler<T[name]>>;
94
97
  };
95
- export declare type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<void>;
98
+ export declare type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<any>;
96
99
  export declare type ConsumeFunctions = {
97
100
  consume: () => Promise<{
98
101
  stop: () => void;
@@ -111,13 +114,13 @@ declare type PromisifiedFunctionsMap<T> = {
111
114
  source: string;
112
115
  };
113
116
  } ? {
114
- wait: (timeout: number) => Promise<void>;
117
+ wait: (timeout: number) => Promise<ReplyTypeOf<ReturnType<T[func]>>>;
115
118
  } : Promise<void>;
116
119
  };
117
120
  export declare const event: <N extends string>(name: N, v?: string) => {
118
121
  of: <T>() => { [K in N]: (data: T, time?: number | undefined) => NamedEvent<T, N>; };
119
122
  };
120
123
  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>; };
124
+ of: <T, ReplyType = any>() => { [K in N]: (data: T, time?: number | undefined) => NamedWaitEvent<T, N, ReplyType>; };
122
125
  };
123
126
  export {};
package/dist/index.js CHANGED
@@ -152,34 +152,32 @@ class RedisStreams {
152
152
  }
153
153
  };
154
154
  };
155
- const produce = async (...events) => {
155
+ const produce = (...events) => {
156
156
  if (events.length === 1 && events[0]['wait']) {
157
157
  const pipeline = this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events);
158
158
  return {
159
159
  wait: async (timeout) => {
160
160
  const redis = this.getConsumerRedis();
161
- const channel = events[0].name + '_' + events[0].time;
161
+ const channel = events[0].name + '_' + events[0].time + '_' + events[0]['wait']?.['source'];
162
162
  let id;
163
+ let handler;
163
164
  const cleanup = () => {
165
+ if (handler)
166
+ redis.off('message', handler);
164
167
  redis.unsubscribe(channel);
165
168
  redis.disconnect();
166
169
  if (id)
167
170
  clearTimeout(id);
168
171
  };
169
172
  try {
170
- await new Promise(async (resolve, reject) => {
173
+ const reply = await new Promise(async (resolve, reject) => {
171
174
  id = setTimeout(() => reject(new Error('Timeout')), timeout);
172
175
  await redis.subscribe(channel);
173
- redis.on('message', (data) => {
174
- try {
175
- const eventObj = JSON.parse(data);
176
- if (eventObj && eventObj.source === events?.[0]?.['wait']?.['source'])
177
- resolve(eventObj);
178
- }
179
- catch (err) { }
180
- });
176
+ handler = (commingChannel, data) => resolve(JSON.parse(data)['reply']);
177
+ redis.on('message', handler);
181
178
  await pipeline.exec();
182
179
  });
180
+ return reply;
183
181
  }
184
182
  finally {
185
183
  cleanup();
@@ -188,9 +186,9 @@ class RedisStreams {
188
186
  };
189
187
  }
190
188
  else {
191
- await this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events).exec();
189
+ const r1 = this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events);
190
+ return r1.exec().then(r => { return; });
192
191
  }
193
- return;
194
192
  };
195
193
  const newStream = {
196
194
  consume,
@@ -325,6 +323,7 @@ class StreamConsumer {
325
323
  this.checkBacklog = false;
326
324
  return false;
327
325
  }
326
+ this.lastReadId = streamEntries[streamEntries.length - 1][0];
328
327
  await this.buffer.add(...streamEntries);
329
328
  }
330
329
  return true;
@@ -341,7 +340,15 @@ class StreamConsumer {
341
340
  //log corrupted messages
342
341
  return this.logger.error('Error while parsing message. Corrupted or wrong-formatted stream message.', id, message, err);
343
342
  }
344
- return this.processEvent(id, event, eventObj);
343
+ const result = await this.processEvent(id, event, eventObj);
344
+ if (eventObj['wait']) {
345
+ const channel = eventObj.name + '_' + eventObj.time + '_' + eventObj['wait']?.['source'];
346
+ await this.redis.publish(channel, JSON.stringify({
347
+ reply: result,
348
+ wait: eventObj['wait']
349
+ }));
350
+ }
351
+ return result;
345
352
  }
346
353
  async dispose() {
347
354
  this.disposing = true;
@@ -415,7 +422,7 @@ class ConsumerBuffer {
415
422
  const augmentEvents = (events, stream) => {
416
423
  return Object.keys(events).reduce((p, c) => {
417
424
  const factory = events[c];
418
- p[c] = async (...args) => stream.produce(factory(...args));
425
+ p[c] = (...args) => stream.produce(factory(...args));
419
426
  return p;
420
427
  }, { ...events, ...stream });
421
428
  };
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",
3
+ "version": "1.1.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "author": "Zaid Al-Omari",
package/src/index.ts CHANGED
@@ -162,40 +162,39 @@ export class RedisStreams {
162
162
  }
163
163
  }
164
164
  }
165
- const produce = async <T>(...events: (IEvent<T> | IWaitEvent<T>)[]) => {
165
+ const produce = <T, R = any>(...events: (IEvent<T> | IWaitEvent<T>)[]) => {
166
166
  if (events.length === 1 && events[0]['wait']) {
167
167
  const pipeline = this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events);
168
168
  return {
169
169
  wait: async (timeout: number) => {
170
170
  const redis = this.getConsumerRedis();
171
- const channel = events[0].name + '_' + events[0].time;
171
+ const channel = events[0].name + '_' + events[0].time + '_' + events[0]['wait']?.['source'];
172
172
  let id: NodeJS.Timeout | undefined;
173
+ let handler: ((...args: any[]) => void) | undefined;
173
174
  const cleanup = () => {
175
+ if (handler) redis.off('message', handler);
174
176
  redis.unsubscribe(channel);
175
177
  redis.disconnect();
176
178
  if (id) clearTimeout(id);
177
179
  }
178
180
  try {
179
- await new Promise<any>(async (resolve, reject) => {
181
+ const reply = await new Promise<R>(async (resolve, reject) => {
180
182
  id = setTimeout(() => reject(new Error('Timeout')), timeout);
181
183
  await redis.subscribe(channel);
182
- redis.on('message', (data) => {
183
- try {
184
- const eventObj = JSON.parse(data);
185
- if (eventObj && eventObj.source === events?.[0]?.['wait']?.['source']) resolve(eventObj);
186
- } catch (err) { }
187
- });
184
+ handler = (commingChannel, data) => resolve(JSON.parse(data)['reply']);
185
+ redis.on('message', handler);
188
186
  await pipeline.exec();
189
187
  });
188
+ return reply;
190
189
  } finally {
191
190
  cleanup();
192
191
  }
193
192
  }
194
193
  }
195
194
  } else {
196
- await this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events).exec();
195
+ const r1 = this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events);
196
+ return r1.exec().then(r => { return; });
197
197
  }
198
- return;
199
198
  }
200
199
 
201
200
  const newStream = <StreamGroupConsumer>{
@@ -228,7 +227,7 @@ export class RedisStreams {
228
227
  }
229
228
  }
230
229
 
231
- type EventProccessor = <T>(id: string, event: string, eventObj: IEvent<T>) => Promise<void>;
230
+ type EventProccessor = <T>(id: string, event: string, eventObj: IEvent<T> | IWaitEvent<T>) => Promise<any>;
232
231
  class StreamConsumer {
233
232
 
234
233
  protected logger!: loggerFactory.Logger;
@@ -361,6 +360,7 @@ class StreamConsumer {
361
360
  this.checkBacklog = false;
362
361
  return false;
363
362
  }
363
+ this.lastReadId = streamEntries[streamEntries.length - 1][0]
364
364
  await this.buffer.add(...streamEntries);
365
365
  }
366
366
  return true;
@@ -368,7 +368,7 @@ class StreamConsumer {
368
368
 
369
369
  protected async processMessage<T>(id: string, message: string[]) {
370
370
  let event: string;
371
- let eventObj: IEvent<T>
371
+ let eventObj: IEvent<T> | IWaitEvent<T>
372
372
  try {
373
373
  let value: string;
374
374
  [event, value] = message;
@@ -378,7 +378,15 @@ class StreamConsumer {
378
378
  //log corrupted messages
379
379
  return this.logger.error('Error while parsing message. Corrupted or wrong-formatted stream message.', id, message, err);
380
380
  }
381
- return this.processEvent(id, event, eventObj)
381
+ const result = await this.processEvent(id, event, eventObj);
382
+ if (eventObj['wait']) {
383
+ const channel = eventObj.name + '_' + eventObj.time + '_' + eventObj['wait']?.['source'];
384
+ await this.redis.publish(channel, JSON.stringify({
385
+ reply: result,
386
+ wait: eventObj['wait']
387
+ }));
388
+ }
389
+ return result;
382
390
  }
383
391
 
384
392
  async dispose() {
@@ -412,7 +420,7 @@ class ConsumerBuffer {
412
420
  buffer: [string, string[]][] = [];
413
421
  constructor(protected configs: {
414
422
  ack: (...id: string[]) => Promise<void>,
415
- process: (id: string, message: string[]) => Promise<void>,
423
+ process: (id: string, message: string[]) => Promise<any>,
416
424
  error: (id: string, message: string[], error: Error) => Promise<void>,
417
425
  mode: 'parallel' | 'serial',
418
426
  size: number
@@ -462,7 +470,7 @@ class ConsumerBuffer {
462
470
  const augmentEvents = <T extends AllowedFactories<R>, R>(events: T, stream: StreamGroupConsumer) => {
463
471
  return Object.keys(events).reduce((p, c) => {
464
472
  const factory = events[c as keyof T];
465
- p[c] = async (...args: any[]) => stream.produce(factory(...args))
473
+ p[c] = (...args: any[]) => stream.produce(factory(...args))
466
474
  return p;
467
475
  }, { ...events, ...stream })
468
476
  }
@@ -513,7 +521,9 @@ export type ProduceFunc = (...events: IEvent<any>[]) => {
513
521
 
514
522
  export type StreamGroupConsumer = ConsumeFunctions & {
515
523
  handle: HandleFunction<any>;
516
- produce: (...events: IEvent<any>[]) => Promise<void>;
524
+ produce: (...events: (IEvent<any> | IWaitEvent<any>)[]) => Promise<void> | {
525
+ wait: (timeout: number) => Promise<any>;
526
+ }
517
527
  produceMany: ProduceFunc;
518
528
  with: <O extends AllowedFactories<O>>(events: O) => WithTypedHandlers<O>;
519
529
  }
@@ -523,13 +533,14 @@ export type ConsumerGroup = {
523
533
  }
524
534
 
525
535
  type NamedEvent<T, N extends string> = IEvent<T> & { name: N };
526
- type NamedWaitEvent<T, N extends string> = IWaitEvent<T> & { name: N };
536
+ type NamedWaitEvent<T, N extends string, ReplyType = any> = IWaitEvent<T> & { name: N };
527
537
  type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
538
+ type ReplyTypeOf<T> = T extends NamedWaitEvent<any, string, infer Reply> ? Reply : any
528
539
  type DataOfHandler<T> = T extends (...args: any[]) => IEvent<infer R> ? R : any;
529
540
  type ArgsOf<T> = T extends (...args: infer Args) => any ? Args : never;
530
541
 
531
- type AllowedFactories<T> = { [name in (keyof T)]: (...args: any[]) => IEvent<DataOfHandler<T[name]>> };
532
- export type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<void>;
542
+ type AllowedFactories<T> = { [name in (keyof T)]: (...args: any[]) => IEvent<DataOfHandler<T[name]>> | IWaitEvent<DataOfHandler<T[name]>> };
543
+ export type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<any>;
533
544
 
534
545
  export type ConsumeFunctions = {
535
546
  consume: () => Promise<{
@@ -548,7 +559,7 @@ type WithTypedHandlers<T> = PromisifiedFunctionsMap<T> & {
548
559
 
549
560
 
550
561
  type PromisifiedFunctionsMap<T> = {
551
- [func in keyof T]: (...args: ArgsOf<T[func]>) => ReturnType<T[func]> extends { wait: { source: string } } ? { wait: (timeout: number) => Promise<void> } : Promise<void>
562
+ [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>
552
563
  };
553
564
 
554
565
  export const event = <N extends string>(name: N, v = '1.0.0') => {
@@ -565,16 +576,16 @@ export const event = <N extends string>(name: N, v = '1.0.0') => {
565
576
  }
566
577
 
567
578
  export const eventWithReply = <N extends string>(name: N, source: string, v = '1.0.0') => {
568
- type ReturnType<T, N extends string> = {
569
- [K in N]: (data: T, time?: number) => NamedWaitEvent<T, N>;
579
+ type ReturnType<T, N extends string, ReplyType> = {
580
+ [K in N]: (data: T, time?: number) => NamedWaitEvent<T, N, ReplyType>;
570
581
  };
571
582
  return {
572
- of: <T>() => {
583
+ of: <T, ReplyType = any>() => {
573
584
  return {
574
585
  [name]: (data: T, time = Date.now()) => (<IWaitEvent<T>>{
575
586
  name, v, data, time, wait: { source }
576
587
  })
577
- } as ReturnType<T, N>
588
+ } as ReturnType<T, N, ReplyType>
578
589
  }
579
590
  }
580
591
  }