ioredis-streams 0.0.3 → 0.0.6

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,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ const events = {
5
+ someEvent3: (hi) => ({
6
+ name: 'someEvent3',
7
+ data: {
8
+ time: hi
9
+ },
10
+ time: Date.now(),
11
+ v: 'v1',
12
+ }),
13
+ };
14
+ const stream = new _1.RedisStreams('')
15
+ .group('group')
16
+ .stream('stream')
17
+ .with({
18
+ ...(0, _1.event)('s').of(),
19
+ someEvent: (hi) => ({
20
+ name: 'someEvent',
21
+ data: {
22
+ time: 1
23
+ },
24
+ time: Date.now(),
25
+ v: 'v1',
26
+ }),
27
+ someEvent2: (hellow) => ({
28
+ name: 'someE3vent2',
29
+ data: {
30
+ w: 1
31
+ },
32
+ time: Date.now(),
33
+ v: 'v1',
34
+ }),
35
+ ...events
36
+ });
37
+ stream.someEvent(1);
38
+ stream.someEvent2(1);
39
+ stream.someEvent3(1);
40
+ stream
41
+ .handle('*', async (id, event) => {
42
+ event.data.wow;
43
+ })
44
+ .handle('someEvent', async (id, event) => {
45
+ event.data.time;
46
+ })
47
+ .handle('someEvent3', async (id, event) => {
48
+ event.data.time;
49
+ })
50
+ .handle('s', async (id, event) => {
51
+ event.data;
52
+ })
53
+ .consume().then(x => x.stop());
54
+ //# sourceMappingURL=example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":";;AAAA,wBAAwC;AAExC,MAAM,MAAM,GAAG;IACb,UAAU,EAAE,CAAC,EAAK,EAAE,EAAE,CAAC,CAAC;QACtB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,IAAI,EAAE,EAAE;SACT;QACD,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAChB,CAAC,EAAE,IAAI;KACR,CAAC;CACH,CAAA;AACD,MAAM,MAAM,GAAG,IAAI,eAAY,CAAC,EAAE,CAAC;KAChC,KAAK,CAAC,OAAO,CAAC;KACd,MAAM,CAAC,QAAQ,CAAC;KAChB,IAAI,CAAC;IACJ,GAAG,IAAA,QAAK,EAAC,GAAG,CAAC,CAAC,EAAE,EAAoB;IACpC,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,aAAa;QACnB,IAAI,EAAE;YACJ,CAAC,EAAE,CAAC;SACL;QACD,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;QAChB,CAAC,EAAE,IAAI;KACR,CAAC;IACF,GAAG,MAAM;CACV,CAAC,CAAC;AACL,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrB,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,IAAI,CAAA;AACjB,CAAC,CAAC;KACD,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAC/B,KAAK,CAAC,IAAI,CAAC;AACb,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,62 +49,52 @@ 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
59
  export declare type ProduceFunc = (...events: IEvent<any>[]) => {
79
60
  produceMany: ProduceFunc;
80
61
  flush: () => Promise<void>;
81
62
  };
82
- export declare type StreamGroupConsumer = {
83
- consume: () => Promise<{
84
- stop: () => void;
85
- continue: () => void;
86
- }>;
87
- handle: HandleFunc;
63
+ export declare type StreamGroupConsumer = ConsumeFunctions & {
64
+ handle: HandleFunction<any>;
88
65
  produce: (...events: IEvent<any>[]) => Promise<void>;
89
66
  produceMany: ProduceFunc;
90
- with: <O extends FunctionsMap<R>, R>(events: O) => WithTypedHandlers<O, R> & StreamGroupConsumer;
67
+ with: <O extends AllowedFactories<O>>(events: O) => WithTypedHandlers<O>;
91
68
  };
92
69
  export declare type ConsumerGroup = {
93
- stream: (streamName: string, config?: Partial<RegisterConsumerConfigs>) => StreamGroupConsumer;
70
+ stream: (streamName: string, config?: Partial<StreamConfigs>) => StreamGroupConsumer;
71
+ };
72
+ declare type NamedEvent<T, N extends string> = IEvent<T> & {
73
+ name: N;
74
+ };
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[]) => IEvent<DataOfHandler<T[name]>>;
94
80
  };
95
- export declare type HandleFunction<O extends FunctionsMap<R>, R> = <N extends (keyof O & string)>(event: N, handler: NamedEventHandler<ReturnType<O[N], N>>) => {
96
- handle: HandleFunction<O, R>;
81
+ export declare type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<void>;
82
+ export declare type ConsumeFunctions = {
97
83
  consume: () => Promise<{
98
84
  stop: () => void;
99
85
  continue: () => void;
100
86
  }>;
101
87
  };
102
- declare type WithTypedHandlers<T extends FunctionsMap<R>, R> = T & {
103
- handle: HandleFunction<T, R>;
88
+ export 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>;
104
96
  };
105
- declare type UnrwapPromiseEvent<T, N extends string> = T extends Promise<IEvent<infer D>> ? IEvent<D, N> : unknown;
106
- declare type ReturnType<T, N extends string> = T extends (...args: any[]) => infer R ? UnrwapPromiseEvent<R, N> : unknown;
107
- declare type FunctionsMap<T> = {
108
- [func in keyof T]: T[func];
97
+ export declare const event: <N extends string>(name: N, v?: string) => {
98
+ of: <T>() => { [K in N]: (data: T, time?: number | undefined) => NamedEvent<T, N>; };
109
99
  };
110
- declare type NamedEventHandler<E> = (id: string, event: E) => Promise<void>;
111
100
  export {};
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.RedisStreams = exports.getNewRedisClient = exports.getExistingRedisClient = void 0;
6
+ exports.event = exports.RedisStreams = exports.getNewRedisClient = exports.getExistingRedisClient = void 0;
7
7
  const log4js_api_1 = __importDefault(require("@log4js-node/log4js-api"));
8
8
  const ioredis_1 = __importDefault(require("ioredis"));
9
9
  const redisHost = process.env.REDIS_HOST;
@@ -346,12 +346,19 @@ class ConsumerBuffer {
346
346
  }
347
347
  }
348
348
  const augmentEvents = (events, stream) => {
349
- const initial = { ...events, ...stream };
350
349
  return Object.keys(events).reduce((p, c) => {
351
- p[c] = (...args) => events[c](...args).then((event) => {
352
- return stream.produce(event);
353
- });
350
+ p[c] = async (...args) => stream.produce(events[c](...args));
354
351
  return p;
355
- }, initial);
352
+ }, { ...events, ...stream });
353
+ };
354
+ const event = (name, v = '1.0.0') => {
355
+ return {
356
+ of: () => {
357
+ return {
358
+ [name]: (data, time = Date.now()) => ({ name, v, data, time })
359
+ };
360
+ }
361
+ };
356
362
  };
363
+ exports.event = event;
357
364
  //# 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.3",
3
+ "version": "0.0.6",
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,52 @@
1
+ import { RedisStreams, event } from '.';
2
+
3
+ const events = {
4
+ someEvent3: (hi: 1) => ({
5
+ name: 'someEvent3',
6
+ data: {
7
+ time: hi
8
+ },
9
+ time: Date.now(),
10
+ v: 'v1',
11
+ }),
12
+ }
13
+ const stream = new RedisStreams('')
14
+ .group('group')
15
+ .stream('stream')
16
+ .with({
17
+ ...event('s').of<{ data: number }>(),
18
+ someEvent: (hi: 1) => ({
19
+ name: 'someEvent',
20
+ data: {
21
+ time: 1
22
+ },
23
+ time: Date.now(),
24
+ v: 'v1',
25
+ }),
26
+ someEvent2: (hellow: 1) => ({
27
+ name: 'someE3vent2',
28
+ data: {
29
+ w: 1
30
+ },
31
+ time: Date.now(),
32
+ v: 'v1',
33
+ }),
34
+ ...events
35
+ });
36
+ stream.someEvent(1);
37
+ stream.someEvent2(1);
38
+ stream.someEvent3(1);
39
+ stream
40
+ .handle('*', async (id, event) => {
41
+ event.data.wow
42
+ })
43
+ .handle('someEvent', async (id, event) => {
44
+ event.data.time
45
+ })
46
+ .handle('someEvent3', async (id, event) => {
47
+ event.data.time
48
+ })
49
+ .handle('s', async (id, event) => {
50
+ event.data;
51
+ })
52
+ .consume().then(x => x.stop());
package/src/index.ts CHANGED
@@ -34,6 +34,13 @@ export const getNewRedisClient = (config: {
34
34
  return new Redis(config);
35
35
  };
36
36
 
37
+ export interface IEvent<T> {
38
+ time: number;
39
+ name: string;
40
+ v: string;
41
+ data: T;
42
+ }
43
+
37
44
  export class RedisStreams {
38
45
 
39
46
  protected groups: Map<string, Map<string, StreamGroupConsumer>> = new Map();
@@ -58,7 +65,7 @@ export class RedisStreams {
58
65
  }, config || {});
59
66
  }
60
67
 
61
- private buildConsumerConfigs(streamName: string, groupName: string, config?: Partial<RegisterConsumerConfigs>) {
68
+ private buildConsumerConfigs(streamName: string, groupName: string, config?: Partial<StreamConfigs>) {
62
69
  return <ConsumerConfigs>Object.assign(<ConsumerConfigs>{
63
70
  claimIdleTime: 15000,
64
71
  groupName,
@@ -80,7 +87,7 @@ export class RedisStreams {
80
87
  }, config || {});
81
88
  }
82
89
 
83
- 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) {
84
91
  const handler = async <T>(id: string, event: string | '*', eventObj: IEvent<T>) => {
85
92
  let handle = handlers.get(event);
86
93
  if (!handle) handle = handlers.get('*');
@@ -106,7 +113,7 @@ export class RedisStreams {
106
113
  group(groupName: string) {
107
114
  const streams = this.getStreamsMap(groupName);
108
115
  return <ConsumerGroup>{
109
- stream: (streamName: string, config?: Partial<RegisterConsumerConfigs>) => {
116
+ stream: (streamName: string, config?: Partial<StreamConfigs>) => {
110
117
  const stream = streams.get(streamName);
111
118
  if (stream) return stream;
112
119
  const newStream = this.stream(streamName, groupName, config);
@@ -116,8 +123,8 @@ export class RedisStreams {
116
123
  }
117
124
  }
118
125
 
119
- private stream(streamName: string, groupName: string, config?: Partial<RegisterConsumerConfigs>) {
120
- const handlers = new Map<string, EventHandler<{}>>();
126
+ private stream(streamName: string, groupName: string, config?: Partial<StreamConfigs>) {
127
+ const handlers = new Map<string, NamedEventHandler>();
121
128
  const readyConfigs = this.buildConsumerConfigs(streamName, groupName, config);
122
129
  const stream = this.register(streamName, groupName, handlers, readyConfigs);
123
130
  const consume = async () => {
@@ -128,8 +135,8 @@ export class RedisStreams {
128
135
  continue: () => { stream.start(); return; }
129
136
  }
130
137
  };
131
- const handle = <T>(event: string | '*', handler: EventHandler<T>) => {
132
- handlers.set(event, <EventHandler<{}>>handler);
138
+ const handle = <T extends IEvent<D>, D>(event: string | '*', handler: NamedEventHandler<T>) => {
139
+ handlers.set(event, <NamedEventHandler>handler);
133
140
  return { handle, consume };
134
141
  };
135
142
  const produceMany = <T>(...events: IEvent<T>[]) => {
@@ -176,6 +183,7 @@ export class RedisStreams {
176
183
  }
177
184
  }
178
185
 
186
+ type EventProccessor = <T>(id: string, event: string, eventObj: IEvent<T>) => Promise<void>;
179
187
  class StreamConsumer {
180
188
 
181
189
  protected logger!: loggerFactory.Logger;
@@ -391,25 +399,13 @@ class ConsumerBuffer {
391
399
  }
392
400
  }
393
401
 
394
- const augmentEvents = <T extends FunctionsMap<R>, R>(events: T, stream: StreamGroupConsumer) => {
395
- const initial = <WithTypedHandlers<T, R> & StreamGroupConsumer>{ ...events, ...stream };
402
+ const augmentEvents = <T>(events: T, stream: StreamGroupConsumer) => {
396
403
  return Object.keys(events).reduce((p, c) => {
397
- p[c] = (...args: any[]) => events[c](...args).then((event: any) => {
398
- return stream.produce(event)
399
- });
404
+ p[c] = async (...args: any[]) => stream.produce(events[c](...args))
400
405
  return p;
401
- }, initial)
402
- }
403
-
404
- export interface IEvent<T, EventName extends string = string> {
405
- time: number;
406
- name: EventName;
407
- v: string;
408
- data: T;
406
+ }, { ...events, ...stream })
409
407
  }
410
408
 
411
- export type EventProccessor = <T>(id: string, event: string, eventObj: IEvent<T>) => Promise<void>;
412
-
413
409
  export type DeadLetterEvent = IEvent<{
414
410
  id: string,
415
411
  message: string[],
@@ -430,7 +426,7 @@ export type RedisStreamsConfig = {
430
426
  };
431
427
  }
432
428
 
433
- export type RegisterConsumerConfigs = {
429
+ export type StreamConfigs = {
434
430
  readBlockTime: number;
435
431
  claimIdleTime: number;
436
432
  batchSize: number;
@@ -438,7 +434,7 @@ export type RegisterConsumerConfigs = {
438
434
  maxLen: number;
439
435
  };
440
436
 
441
- export type ConsumerConfigs = RegisterConsumerConfigs & {
437
+ type ConsumerConfigs = StreamConfigs & {
442
438
  peerName: string;
443
439
  streamName: string;
444
440
  groupName: string;
@@ -448,52 +444,60 @@ export type ConsumerConfigs = RegisterConsumerConfigs & {
448
444
  maxRetries: number
449
445
  }
450
446
  }
451
- export type EventHandler<T> = (id: string, event: IEvent<T>) => Promise<void>;
452
-
453
- export type HandleFunc = <T = any, E = string>(event: E | '*', handler: EventHandler<T>) => {
454
- handle: HandleFunc;
455
- consume: () => Promise<{
456
- stop: () => void;
457
- continue: () => void;
458
- }>;
459
- };
460
447
 
461
448
  export type ProduceFunc = (...events: IEvent<any>[]) => {
462
449
  produceMany: ProduceFunc;
463
450
  flush: () => Promise<void>;
464
451
  }
465
452
 
466
- export type StreamGroupConsumer = {
467
- consume: () => Promise<{
468
- stop: () => void;
469
- continue: () => void;
470
- }>;
471
- handle: HandleFunc;
453
+ export type StreamGroupConsumer = ConsumeFunctions & {
454
+ handle: HandleFunction<any>;
472
455
  produce: (...events: IEvent<any>[]) => Promise<void>;
473
456
  produceMany: ProduceFunc;
474
- with: <O extends FunctionsMap<R>, R>(events: O) => WithTypedHandlers<O, R> & StreamGroupConsumer;
457
+ with: <O extends AllowedFactories<O>>(events: O) => WithTypedHandlers<O>;
475
458
  }
476
459
 
477
460
  export type ConsumerGroup = {
478
- stream: (streamName: string, config?: Partial<RegisterConsumerConfigs>) => StreamGroupConsumer;
461
+ stream: (streamName: string, config?: Partial<StreamConfigs>) => StreamGroupConsumer;
479
462
  }
480
463
 
481
- export type HandleFunction<O extends FunctionsMap<R>, R> = <N extends (keyof O & string) >(event: N, handler: NamedEventHandler<ReturnType<O[N], N>>) => {
482
- 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[]) => IEvent<DataOfHandler<T[name]>> };
470
+ export type NamedEventHandler<E = IEvent<any>> = (id: string, event: E) => Promise<void>;
471
+
472
+ export type ConsumeFunctions = {
483
473
  consume: () => Promise<{
484
474
  stop: () => void;
485
475
  continue: () => void;
486
476
  }>;
487
- };
488
-
489
- type WithTypedHandlers<T extends FunctionsMap<R>, R> = T & {
490
- handle: HandleFunction<T, R>
491
477
  }
492
- type UnrwapPromiseEvent<T, N extends string> = T extends Promise<IEvent<infer D>> ? IEvent<D, N> : unknown;
493
- type ReturnType<T, N extends string> = T extends (...args: any[]) => infer R ? UnrwapPromiseEvent<R, N> : unknown;
478
+ export 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
+
494
482
 
495
- type FunctionsMap<T> = {
496
- [func in keyof T]: T[func];
483
+ type WithTypedHandlers<T> = PromisifiedFunctionsMap<T> & {
484
+ handle: HandleFunction<T>
485
+ } & Omit<StreamGroupConsumer, 'handle'>;
486
+
487
+
488
+ type PromisifiedFunctionsMap<T> = {
489
+ [func in keyof T]: (...args: ArgsOf<T[func]>) => Promise<void>
497
490
  };
498
491
 
499
- type NamedEventHandler<E> = (id: string, event: E) => Promise<void>;
492
+ export const event = <N extends string>(name: N, v = '1.0.0') => {
493
+ type ReturnType<T, N extends string> = {
494
+ [K in N]: (data: T, time?: number) => NamedEvent<T, N>;
495
+ };
496
+ return {
497
+ of: <T>() => {
498
+ return {
499
+ [name]: (data: T, time = Date.now()) => ({ name, v, data, time })
500
+ } as ReturnType<T, N>
501
+ }
502
+ }
503
+ }