ioredis-streams 0.0.1 → 0.0.4

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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ const stream = new _1.RedisStreams('')
5
+ .group('group')
6
+ .stream('stream')
7
+ .with({
8
+ someEvent: (hi) => ({
9
+ name: 'someEvent',
10
+ data: {
11
+ time: 1
12
+ },
13
+ time: Date.now(),
14
+ v: 'v1',
15
+ }),
16
+ someEvent2: (hellow) => ({
17
+ name: 'someEvent2',
18
+ data: {
19
+ w: 1
20
+ },
21
+ time: Date.now(),
22
+ v: 'v1',
23
+ })
24
+ });
25
+ stream.someEvent(1);
26
+ stream.someEvent2(1);
27
+ stream
28
+ .handle('*', async (id, event) => {
29
+ event.data.wow;
30
+ })
31
+ .handle('someEvent', async (id, event) => {
32
+ event.data.time;
33
+ })
34
+ .handle('someEvent2', async (id, event) => {
35
+ event.data.w;
36
+ })
37
+ .consume().then(x => x.stop());
38
+ //# sourceMappingURL=example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":";;AAAA,wBAAiC;AAEjC,MAAM,MAAM,GAAG,IAAI,eAAY,CAAC,EAAE,CAAC;KAChC,KAAK,CAAC,OAAO,CAAC;KACd,MAAM,CAAC,QAAQ,CAAC;KAChB,IAAI,CAAC;IACJ,SAAS,EAAE,CAAC,EAAK,EAAE,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE;YACJ,IAAI,EAAE,CAAC;SACR;QACD,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAChB,CAAC,EAAE,IAAI;KACR,CAAC;IACF,UAAU,EAAE,CAAC,MAAS,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,CAAC,EAAE,CAAC;SACL;QACD,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAChB,CAAC,EAAE,IAAI;KACR,CAAC;CACH,CAAC,CAAC;AACL,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACpB,MAAM;KACH,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA;AAChB,CAAC,CAAC;KACD,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;AACjB,CAAC,CAAC;KACD,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACxC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AACd,CAAC,CAAC;KACD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,12 @@ export declare const getNewRedisClient: (config?: {
8
8
  host: string;
9
9
  port: number;
10
10
  }) => Redis.Redis;
11
+ export interface IEvent<T> {
12
+ time: number;
13
+ name: string;
14
+ v: string;
15
+ data: T;
16
+ }
11
17
  export declare class RedisStreams {
12
18
  protected peerName: string;
13
19
  protected groups: Map<string, Map<string, StreamGroupConsumer>>;
@@ -25,13 +31,6 @@ export declare class RedisStreams {
25
31
  private getRedisPipeline;
26
32
  private doProduce;
27
33
  }
28
- export interface IEvent<T, EventName extends string = string> {
29
- time: number;
30
- name: EventName;
31
- v: string;
32
- data: T;
33
- }
34
- export declare type EventProccessor = <T>(id: string, event: string, eventObj: IEvent<T>) => Promise<void>;
35
34
  export declare type DeadLetterEvent = IEvent<{
36
35
  id: string;
37
36
  message: string[];
@@ -50,58 +49,49 @@ export declare type RedisStreamsConfig = {
50
49
  maxSize: number;
51
50
  };
52
51
  };
53
- export declare type RegisterConsumerConfigs = {
52
+ export declare type StreamConfigs = {
54
53
  readBlockTime: number;
55
54
  claimIdleTime: number;
56
55
  batchSize: number;
57
56
  mode: 'parallel' | 'serial';
58
57
  maxLen: number;
59
58
  };
60
- export declare type ConsumerConfigs = RegisterConsumerConfigs & {
61
- peerName: string;
62
- streamName: string;
63
- groupName: string;
64
- logger?: loggerFactory.Logger;
65
- deadLetters?: {
66
- handler: (...event: DeadLetterEvent[]) => Promise<void>;
67
- maxRetries: number;
68
- };
69
- };
70
- export declare type EventHandler<T> = (id: string, event: IEvent<T>) => Promise<void>;
71
- export declare type HandleFunc = <T = any, E = string>(event: E | '*', handler: EventHandler<T>) => {
72
- handle: HandleFunc;
73
- consume: () => Promise<{
74
- stop: () => void;
75
- continue: () => void;
76
- }>;
77
- };
78
- export declare type ProduceFunc = <T>(...events: IEvent<T>[]) => {
59
+ declare type ProduceFunc = (...events: IEvent<any>[]) => {
79
60
  produceMany: ProduceFunc;
80
61
  flush: () => Promise<void>;
81
62
  };
82
- export declare type StreamGroupConsumer = {
83
- handle: HandleFunc;
84
- produce: <T>(...events: IEvent<T>[]) => Promise<void>;
63
+ declare type StreamGroupConsumer = ConsumeFunctions & {
64
+ handle: HandleFunction<any>;
65
+ produce: (...events: IEvent<any>[]) => Promise<void>;
85
66
  produceMany: ProduceFunc;
86
- with: <O extends FunctionsMap<R>, R>(events: O) => WithTypedHandlers<O, R>;
67
+ with: <O extends AllowedFactories<O>>(events: O) => WithTypedHandlers<O>;
68
+ };
69
+ declare type ConsumerGroup = {
70
+ stream: (streamName: string, config?: Partial<StreamConfigs>) => StreamGroupConsumer;
87
71
  };
88
- export declare type ConsumerGroup = {
89
- stream: (streamName: string, config?: Partial<RegisterConsumerConfigs>) => StreamGroupConsumer;
72
+ declare type NamedEvent<T, N extends string> = IEvent<T> & {
73
+ name: N;
90
74
  };
91
- export declare type HandleFunction<O extends FunctionsMap<R>, R> = <N extends (keyof O & string)>(event: N, handler: NamedEventHandler<ReturnType<O[N], N>>) => {
92
- handle: HandleFunction<O, R>;
75
+ declare type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
76
+ declare type DataOfHandler<T> = T extends (...args: any[]) => IEvent<infer R> ? R : any;
77
+ declare type ArgsOf<T> = T extends (...args: infer Args) => any ? Args : never;
78
+ declare type AllowedFactories<T> = {
79
+ [name in (keyof T & string)]: (...args: any[]) => NamedEvent<DataOfHandler<T[name]>, name>;
80
+ };
81
+ declare type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<void>;
82
+ declare type ConsumeFunctions = {
93
83
  consume: () => Promise<{
94
84
  stop: () => void;
95
85
  continue: () => void;
96
86
  }>;
97
87
  };
98
- declare type WithTypedHandlers<T extends FunctionsMap<R>, R> = T & {
99
- handle: HandleFunction<T, R>;
100
- };
101
- declare type UnrwapPromiseEvent<T, N extends string> = T extends Promise<IEvent<infer D>> ? IEvent<D, N> : unknown;
102
- declare type ReturnType<T, N extends string> = T extends (...args: any[]) => infer R ? UnrwapPromiseEvent<R, N> : unknown;
103
- declare type FunctionsMap<T> = {
104
- [func in keyof T]: T[func];
88
+ declare type HandleFunction<T> = <N extends (keyof T | '*')>(event: N, handler: NamedEventHandler<N extends keyof T ? ReturnType<T[N]> : IEvent<any>>) => {
89
+ handle: HandleFunction<T>;
90
+ } & ConsumeFunctions;
91
+ declare type WithTypedHandlers<T> = PromisifiedFunctionsMap<T> & {
92
+ handle: HandleFunction<T>;
93
+ } & Omit<StreamGroupConsumer, 'handle'>;
94
+ declare type PromisifiedFunctionsMap<T> = {
95
+ [func in keyof T]: (...args: ArgsOf<T[func]>) => Promise<void>;
105
96
  };
106
- declare type NamedEventHandler<E> = (id: string, event: E) => Promise<void>;
107
97
  export {};
package/dist/index.js CHANGED
@@ -140,6 +140,7 @@ class RedisStreams {
140
140
  await this.doProduce(this.getProducerRedis().pipeline(), streamName, readyConfigs.maxLen, ...events).exec();
141
141
  };
142
142
  const newStream = {
143
+ consume,
143
144
  handle,
144
145
  produceMany,
145
146
  produce,
@@ -345,12 +346,9 @@ class ConsumerBuffer {
345
346
  }
346
347
  }
347
348
  const augmentEvents = (events, stream) => {
348
- const initial = { ...events, ...stream };
349
349
  return Object.keys(events).reduce((p, c) => {
350
- p[c] = (...args) => events[c](...args).then((event) => {
351
- return stream.produce(event);
352
- });
350
+ p[c] = async (...args) => stream.produce(events[c](...args));
353
351
  return p;
354
- }, initial);
352
+ }, { ...events, ...stream });
355
353
  };
356
354
  //# sourceMappingURL=index.js.map
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": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "author": "Zaid Al-Omari",
package/src/example.ts ADDED
@@ -0,0 +1,36 @@
1
+ import { RedisStreams } from '.';
2
+
3
+ const stream = new RedisStreams('')
4
+ .group('group')
5
+ .stream('stream')
6
+ .with({
7
+ someEvent: (hi: 1) => ({
8
+ name: 'someEvent',
9
+ data: {
10
+ time: 1
11
+ },
12
+ time: Date.now(),
13
+ v: 'v1',
14
+ }),
15
+ someEvent2: (hellow: 1) => ({
16
+ name: 'someEvent2',
17
+ data: {
18
+ w: 1
19
+ },
20
+ time: Date.now(),
21
+ v: 'v1',
22
+ })
23
+ });
24
+ stream.someEvent(1);
25
+ stream.someEvent2(1)
26
+ stream
27
+ .handle('*', async (id, event) => {
28
+ event.data.wow
29
+ })
30
+ .handle('someEvent', async (id, event) => {
31
+ event.data.time
32
+ })
33
+ .handle('someEvent2', async (id, event) => {
34
+ event.data.w
35
+ })
36
+ .consume().then(x => x.stop());
package/src/index.ts CHANGED
@@ -17,17 +17,30 @@ const getDefaultRedisConfigs = () => {
17
17
  }
18
18
 
19
19
  let _redisClient: Redis.Redis;
20
- export const getExistingRedisClient = (config = getDefaultRedisConfigs()) => {
20
+ export const getExistingRedisClient = (config: {
21
+ host: string,
22
+ port: number
23
+ } = getDefaultRedisConfigs()) => {
21
24
  if (!_redisClient) {
22
25
  _redisClient = new Redis(config);
23
26
  }
24
27
  return _redisClient;
25
28
  };
26
29
 
27
- export const getNewRedisClient = (config = getDefaultRedisConfigs()) => {
30
+ export const getNewRedisClient = (config: {
31
+ host: string,
32
+ port: number
33
+ } = getDefaultRedisConfigs()) => {
28
34
  return new Redis(config);
29
35
  };
30
36
 
37
+ export interface IEvent<T> {
38
+ time: number;
39
+ name: string;
40
+ v: string;
41
+ data: T;
42
+ }
43
+
31
44
  export class RedisStreams {
32
45
 
33
46
  protected groups: Map<string, Map<string, StreamGroupConsumer>> = new Map();
@@ -52,7 +65,7 @@ export class RedisStreams {
52
65
  }, config || {});
53
66
  }
54
67
 
55
- private buildConsumerConfigs(streamName: string, groupName: string, config?: Partial<RegisterConsumerConfigs>) {
68
+ private buildConsumerConfigs(streamName: string, groupName: string, config?: Partial<StreamConfigs>) {
56
69
  return <ConsumerConfigs>Object.assign(<ConsumerConfigs>{
57
70
  claimIdleTime: 15000,
58
71
  groupName,
@@ -74,7 +87,7 @@ export class RedisStreams {
74
87
  }, config || {});
75
88
  }
76
89
 
77
- private register(streamName: string, groupName: string, handlers: Map<string, EventHandler<{}>>, config: ConsumerConfigs) {
90
+ private register(streamName: string, groupName: string, handlers: Map<string, NamedEventHandler>, config: ConsumerConfigs) {
78
91
  const handler = async <T>(id: string, event: string | '*', eventObj: IEvent<T>) => {
79
92
  let handle = handlers.get(event);
80
93
  if (!handle) handle = handlers.get('*');
@@ -100,7 +113,7 @@ export class RedisStreams {
100
113
  group(groupName: string) {
101
114
  const streams = this.getStreamsMap(groupName);
102
115
  return <ConsumerGroup>{
103
- stream: (streamName: string, config?: Partial<RegisterConsumerConfigs>) => {
116
+ stream: (streamName: string, config?: Partial<StreamConfigs>) => {
104
117
  const stream = streams.get(streamName);
105
118
  if (stream) return stream;
106
119
  const newStream = this.stream(streamName, groupName, config);
@@ -110,8 +123,8 @@ export class RedisStreams {
110
123
  }
111
124
  }
112
125
 
113
- private stream(streamName: string, groupName: string, config?: Partial<RegisterConsumerConfigs>) {
114
- const handlers = new Map<string, EventHandler<{}>>();
126
+ private stream(streamName: string, groupName: string, config?: Partial<StreamConfigs>) {
127
+ const handlers = new Map<string, NamedEventHandler>();
115
128
  const readyConfigs = this.buildConsumerConfigs(streamName, groupName, config);
116
129
  const stream = this.register(streamName, groupName, handlers, readyConfigs);
117
130
  const consume = async () => {
@@ -122,8 +135,8 @@ export class RedisStreams {
122
135
  continue: () => { stream.start(); return; }
123
136
  }
124
137
  };
125
- const handle = <T>(event: string | '*', handler: EventHandler<T>) => {
126
- handlers.set(event, <EventHandler<{}>>handler);
138
+ const handle = <T extends IEvent<D>, D>(event: string | '*', handler: NamedEventHandler<T>) => {
139
+ handlers.set(event, <NamedEventHandler>handler);
127
140
  return { handle, consume };
128
141
  };
129
142
  const produceMany = <T>(...events: IEvent<T>[]) => {
@@ -141,6 +154,7 @@ export class RedisStreams {
141
154
  }
142
155
 
143
156
  const newStream = <StreamGroupConsumer>{
157
+ consume,
144
158
  handle,
145
159
  produceMany,
146
160
  produce,
@@ -169,6 +183,7 @@ export class RedisStreams {
169
183
  }
170
184
  }
171
185
 
186
+ type EventProccessor = <T>(id: string, event: string, eventObj: IEvent<T>) => Promise<void>;
172
187
  class StreamConsumer {
173
188
 
174
189
  protected logger!: loggerFactory.Logger;
@@ -384,25 +399,13 @@ class ConsumerBuffer {
384
399
  }
385
400
  }
386
401
 
387
- const augmentEvents = <T extends FunctionsMap<R>, R>(events: T, stream: StreamGroupConsumer) => {
388
- const initial = <WithTypedHandlers<T, R> & StreamGroupConsumer>{ ...events, ...stream };
402
+ const augmentEvents = <T>(events: T, stream: StreamGroupConsumer) => {
389
403
  return Object.keys(events).reduce((p, c) => {
390
- p[c] = (...args: any[]) => events[c](...args).then((event: any) => {
391
- return stream.produce(event)
392
- });
404
+ p[c] = async (...args: any[]) => stream.produce(events[c](...args))
393
405
  return p;
394
- }, initial)
406
+ }, { ...events, ...stream })
395
407
  }
396
408
 
397
- export interface IEvent<T, EventName extends string = string> {
398
- time: number;
399
- name: EventName;
400
- v: string;
401
- data: T;
402
- }
403
-
404
- export type EventProccessor = <T>(id: string, event: string, eventObj: IEvent<T>) => Promise<void>;
405
-
406
409
  export type DeadLetterEvent = IEvent<{
407
410
  id: string,
408
411
  message: string[],
@@ -423,7 +426,7 @@ export type RedisStreamsConfig = {
423
426
  };
424
427
  }
425
428
 
426
- export type RegisterConsumerConfigs = {
429
+ export type StreamConfigs = {
427
430
  readBlockTime: number;
428
431
  claimIdleTime: number;
429
432
  batchSize: number;
@@ -431,7 +434,7 @@ export type RegisterConsumerConfigs = {
431
434
  maxLen: number;
432
435
  };
433
436
 
434
- export type ConsumerConfigs = RegisterConsumerConfigs & {
437
+ type ConsumerConfigs = StreamConfigs & {
435
438
  peerName: string;
436
439
  streamName: string;
437
440
  groupName: string;
@@ -441,48 +444,48 @@ export type ConsumerConfigs = RegisterConsumerConfigs & {
441
444
  maxRetries: number
442
445
  }
443
446
  }
444
- export type EventHandler<T> = (id: string, event: IEvent<T>) => Promise<void>;
445
447
 
446
- export type HandleFunc = <T = any, E = string>(event: E | '*', handler: EventHandler<T>) => {
447
- handle: HandleFunc;
448
- consume: () => Promise<{
449
- stop: () => void;
450
- continue: () => void;
451
- }>;
452
- };
453
-
454
- export type ProduceFunc = <T>(...events: IEvent<T>[]) => {
448
+ type ProduceFunc = (...events: IEvent<any>[]) => {
455
449
  produceMany: ProduceFunc;
456
450
  flush: () => Promise<void>;
457
451
  }
458
452
 
459
- export type StreamGroupConsumer = {
460
- handle: HandleFunc;
461
- produce: <T>(...events: IEvent<T>[]) => Promise<void>;
453
+ type StreamGroupConsumer = ConsumeFunctions & {
454
+ handle: HandleFunction<any>;
455
+ produce: (...events: IEvent<any>[]) => Promise<void>;
462
456
  produceMany: ProduceFunc;
463
- with: <O extends FunctionsMap<R>, R>(events: O) => WithTypedHandlers<O, R>;
457
+ with: <O extends AllowedFactories<O>>(events: O) => WithTypedHandlers<O>;
464
458
  }
465
459
 
466
- export type ConsumerGroup = {
467
- stream: (streamName: string, config?: Partial<RegisterConsumerConfigs>) => StreamGroupConsumer;
460
+ type ConsumerGroup = {
461
+ stream: (streamName: string, config?: Partial<StreamConfigs>) => StreamGroupConsumer;
468
462
  }
469
463
 
470
- export type HandleFunction<O extends FunctionsMap<R>, R> = <N extends (keyof O & string) >(event: N, handler: NamedEventHandler<ReturnType<O[N], N>>) => {
471
- handle: HandleFunction<O, R>;
464
+ type NamedEvent<T, N extends string> = IEvent<T> & { name: N };
465
+ type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
466
+ type DataOfHandler<T> = T extends (...args: any[]) => IEvent<infer R> ? R : any;
467
+ type ArgsOf<T> = T extends (...args: infer Args) => any ? Args : never;
468
+
469
+ type AllowedFactories<T> = { [name in (keyof T & string)]: (...args: any[]) => NamedEvent<DataOfHandler<T[name]>, name> };
470
+ type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<void>;
471
+
472
+ type ConsumeFunctions = {
472
473
  consume: () => Promise<{
473
474
  stop: () => void;
474
475
  continue: () => void;
475
476
  }>;
476
- };
477
-
478
- type WithTypedHandlers<T extends FunctionsMap<R>, R> = T & {
479
- handle: HandleFunction<T, R>
480
477
  }
481
- type UnrwapPromiseEvent<T, N extends string> = T extends Promise<IEvent<infer D>> ? IEvent<D, N> : unknown;
482
- type ReturnType<T, N extends string> = T extends (...args: any[]) => infer R ? UnrwapPromiseEvent<R, N> : unknown;
478
+ type HandleFunction<T> = <N extends (keyof T | '*') >(event: N, handler: NamedEventHandler<N extends keyof T ? ReturnType<T[N]> : IEvent<any>>) => {
479
+ handle: HandleFunction<T>;
480
+ } & ConsumeFunctions;
481
+
482
+
483
+ type WithTypedHandlers<T> = PromisifiedFunctionsMap<T> & {
484
+ handle: HandleFunction<T>
485
+ } & Omit<StreamGroupConsumer, 'handle'>;
486
+
483
487
 
484
- type FunctionsMap<T> = {
485
- [func in keyof T]: T[func];
488
+ type PromisifiedFunctionsMap<T> = {
489
+ [func in keyof T]: (...args: ArgsOf<T[func]>) => Promise<void>
486
490
  };
487
491
 
488
- type NamedEventHandler<E> = (id: string, event: E) => Promise<void>;