@eggjs/eventbus-decorator 3.28.2 → 3.29.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/README.md CHANGED
@@ -56,3 +56,29 @@ export class Foo {
56
56
  }
57
57
  }
58
58
  ```
59
+
60
+ ### handle multiple event
61
+ ```ts
62
+ @Event('hello')
63
+ @Event('hi')
64
+ export class Foo {
65
+ async handle(msg: string): Promise<void> {
66
+ console.log('msg: ', msg);
67
+ }
68
+ }
69
+ ```
70
+
71
+ ### inject event context
72
+ inject event context if you want to know which event is being handled.
73
+ The context param must be the first param
74
+
75
+ ```ts
76
+ @Event('hello')
77
+ @Event('hi')
78
+ export class Foo {
79
+ async handle(@EventContext() ctx: IEventContext, msg: string):Promise<void> {
80
+ console.log('eventName: ', ctx.eventName);
81
+ console.log('msg: ', msg);
82
+ }
83
+ }
84
+ ```
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './src/EventBus';
2
2
  export * from './src/Event';
3
3
  export * from './src/EventInfoUtil';
4
+ export * from './src/EventContext';
4
5
  export interface Events {
5
6
  }
package/dist/index.js CHANGED
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./src/EventBus"), exports);
18
18
  __exportStar(require("./src/Event"), exports);
19
19
  __exportStar(require("./src/EventInfoUtil"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLDhDQUE0QjtBQUM1QixzREFBb0MifQ==
20
+ __exportStar(require("./src/EventContext"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLDhDQUE0QjtBQUM1QixzREFBb0M7QUFDcEMscURBQW1DIn0=
@@ -1,4 +1,4 @@
1
1
  /// <reference types="src/type" />
2
2
  import { EventHandler } from '../index';
3
- import { Events } from '@eggjs/tegg';
3
+ import type { Events } from '@eggjs/tegg';
4
4
  export declare function Event<E extends keyof Events>(eventName: E): (clazz: new () => EventHandler<E>) => void;
package/dist/src/Event.js CHANGED
@@ -6,7 +6,7 @@ const tegg_common_util_1 = require("@eggjs/tegg-common-util");
6
6
  const EventInfoUtil_1 = require("./EventInfoUtil");
7
7
  function Event(eventName) {
8
8
  return function (clazz) {
9
- EventInfoUtil_1.EventInfoUtil.setEventName(eventName, clazz);
9
+ EventInfoUtil_1.EventInfoUtil.addEventName(eventName, clazz);
10
10
  const func = (0, core_decorator_1.SingletonProto)({
11
11
  accessLevel: core_decorator_1.AccessLevel.PUBLIC,
12
12
  });
@@ -1,7 +1,10 @@
1
1
  /// <reference types="src/type" />
2
- import TypedEventEmitter, { Arguments } from 'typed-emitter';
3
- import { Events } from '@eggjs/tegg';
2
+ import TypedEventEmitter from 'typed-emitter';
3
+ import type { Arguments } from 'typed-emitter';
4
+ import type { Events } from '@eggjs/tegg';
5
+ import { IEventContext } from './EventContext';
4
6
  export type EventName = string | symbol;
7
+ export type { Arguments } from 'typed-emitter';
5
8
  /**
6
9
  * use `emit` to emit a event
7
10
  */
@@ -37,6 +40,9 @@ export interface EventWaiter {
37
40
  args: Arguments<Events[E1] | Events[E2] | Events[E3] | Events[E4]>;
38
41
  }>;
39
42
  }
40
- export interface EventHandler<E extends keyof Events> {
43
+ type EventHandlerWithContext<E extends keyof Events> = {
44
+ handle: (ctx: IEventContext, ...args: Arguments<Events[E]>) => ReturnType<Events[E]>;
45
+ };
46
+ export type EventHandler<E extends keyof Events> = {
41
47
  handle: Events[E];
42
- }
48
+ } | EventHandlerWithContext<E>;
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CORK_ID = void 0;
4
4
  exports.CORK_ID = Symbol.for('eventBus#corkId');
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRCdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRXZlbnRCdXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJhLFFBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyJ9
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRCdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRXZlbnRCdXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0JhLFFBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyJ9
@@ -0,0 +1,6 @@
1
+ /// <reference types="src/type" />
2
+ import type { Events } from '@eggjs/tegg';
3
+ export interface IEventContext {
4
+ eventName: keyof Events;
5
+ }
6
+ export declare function EventContext(): (target: any, propertyKey: PropertyKey, parameterIndex: number) => void;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EventContext = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const EventInfoUtil_1 = require("./EventInfoUtil");
9
+ function EventContext() {
10
+ return function (target, propertyKey, parameterIndex) {
11
+ (0, assert_1.default)(propertyKey === 'handle', `[eventHandler ${target.name}] expect method name be handle, but now is ${String(propertyKey)}`);
12
+ (0, assert_1.default)(parameterIndex === 0, `[eventHandler ${target.name}] expect param EventContext be the first param`);
13
+ const clazz = target.constructor;
14
+ EventInfoUtil_1.EventInfoUtil.setEventHandlerContextInject(true, clazz);
15
+ };
16
+ }
17
+ exports.EventContext = EventContext;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRDb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0V2ZW50Q29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSxvREFBNEI7QUFDNUIsbURBQWdEO0FBTWhELFNBQWdCLFlBQVk7SUFDMUIsT0FBTyxVQUFTLE1BQVcsRUFBRSxXQUF3QixFQUFFLGNBQXNCO1FBQzNFLElBQUEsZ0JBQU0sRUFBQyxXQUFXLEtBQUssUUFBUSxFQUM3QixpQkFBaUIsTUFBTSxDQUFDLElBQUksOENBQThDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkcsSUFBQSxnQkFBTSxFQUFDLGNBQWMsS0FBSyxDQUFDLEVBQ3pCLGlCQUFpQixNQUFNLENBQUMsSUFBSSxnREFBZ0QsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFnQyxDQUFDO1FBQ3RELDZCQUFhLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQztBQUNKLENBQUM7QUFURCxvQ0FTQyJ9
@@ -1,7 +1,19 @@
1
1
  import { EggProtoImplClass } from '@eggjs/core-decorator';
2
2
  import { EventName } from './EventBus';
3
3
  export declare const EVENT_NAME: unique symbol;
4
+ export declare const EVENT_CONTEXT_INJECT: unique symbol;
4
5
  export declare class EventInfoUtil {
6
+ /**
7
+ * @deprecated
8
+ */
5
9
  static setEventName(eventName: EventName, clazz: EggProtoImplClass): void;
10
+ static addEventName(eventName: EventName, clazz: EggProtoImplClass): void;
11
+ static getEventNameList(clazz: EggProtoImplClass): EventName[];
12
+ /**
13
+ * @deprecated
14
+ * return the last eventName which is subscribed firstly by Event decorator
15
+ */
6
16
  static getEventName(clazz: EggProtoImplClass): EventName | undefined;
17
+ static setEventHandlerContextInject(enable: boolean, clazz: EggProtoImplClass): void;
18
+ static getEventHandlerContextInject(clazz: EggProtoImplClass): boolean;
7
19
  }
@@ -1,15 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EventInfoUtil = exports.EVENT_NAME = void 0;
3
+ exports.EventInfoUtil = exports.EVENT_CONTEXT_INJECT = exports.EVENT_NAME = void 0;
4
4
  const core_decorator_1 = require("@eggjs/core-decorator");
5
5
  exports.EVENT_NAME = Symbol.for('EggPrototype#eventName');
6
+ exports.EVENT_CONTEXT_INJECT = Symbol.for('EggPrototype#event#handler#context#inject');
6
7
  class EventInfoUtil {
8
+ /**
9
+ * @deprecated
10
+ */
7
11
  static setEventName(eventName, clazz) {
8
- core_decorator_1.MetadataUtil.defineMetaData(exports.EVENT_NAME, eventName, clazz);
12
+ EventInfoUtil.addEventName(eventName, clazz);
9
13
  }
14
+ static addEventName(eventName, clazz) {
15
+ const eventNameList = core_decorator_1.MetadataUtil.initOwnArrayMetaData(exports.EVENT_NAME, clazz, []);
16
+ eventNameList.push(eventName);
17
+ }
18
+ static getEventNameList(clazz) {
19
+ return core_decorator_1.MetadataUtil.getArrayMetaData(exports.EVENT_NAME, clazz);
20
+ }
21
+ /**
22
+ * @deprecated
23
+ * return the last eventName which is subscribed firstly by Event decorator
24
+ */
10
25
  static getEventName(clazz) {
11
- return core_decorator_1.MetadataUtil.getMetaData(exports.EVENT_NAME, clazz);
26
+ const eventNameList = core_decorator_1.MetadataUtil.initOwnArrayMetaData(exports.EVENT_NAME, clazz, []);
27
+ if (eventNameList.length !== 0) {
28
+ return eventNameList[eventNameList.length - 1];
29
+ }
30
+ return undefined;
31
+ }
32
+ static setEventHandlerContextInject(enable, clazz) {
33
+ core_decorator_1.MetadataUtil.defineMetaData(exports.EVENT_CONTEXT_INJECT, enable, clazz);
34
+ }
35
+ static getEventHandlerContextInject(clazz) {
36
+ var _a;
37
+ return (_a = core_decorator_1.MetadataUtil.getMetaData(exports.EVENT_CONTEXT_INJECT, clazz)) !== null && _a !== void 0 ? _a : false;
12
38
  }
13
39
  }
14
40
  exports.EventInfoUtil = EventInfoUtil;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRJbmZvVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FdmVudEluZm9VdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBEQUF3RTtBQUczRCxRQUFBLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFL0QsTUFBYSxhQUFhO0lBQ3hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBb0IsRUFBRSxLQUF3QjtRQUNoRSw2QkFBWSxDQUFDLGNBQWMsQ0FBQyxrQkFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUF3QjtRQUMxQyxPQUFPLDZCQUFZLENBQUMsV0FBVyxDQUFDLGtCQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBUkQsc0NBUUMifQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRJbmZvVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FdmVudEluZm9VdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBEQUF3RTtBQUczRCxRQUFBLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDbEQsUUFBQSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7QUFFNUYsTUFBYSxhQUFhO0lBQ3hCOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFvQixFQUFFLEtBQXdCO1FBQ2hFLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQW9CLEVBQUUsS0FBd0I7UUFDaEUsTUFBTSxhQUFhLEdBQUcsNkJBQVksQ0FBQyxvQkFBb0IsQ0FBWSxrQkFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRixhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBd0I7UUFDOUMsT0FBTyw2QkFBWSxDQUFDLGdCQUFnQixDQUFDLGtCQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBd0I7UUFDMUMsTUFBTSxhQUFhLEdBQUcsNkJBQVksQ0FBQyxvQkFBb0IsQ0FBWSxrQkFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRixJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxNQUFlLEVBQUUsS0FBd0I7UUFDM0UsNkJBQVksQ0FBQyxjQUFjLENBQUMsNEJBQW9CLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxNQUFNLENBQUMsNEJBQTRCLENBQUMsS0FBd0I7O1FBQzFELE9BQU8sTUFBQSw2QkFBWSxDQUFDLFdBQVcsQ0FBQyw0QkFBb0IsRUFBRSxLQUFLLENBQUMsbUNBQUksS0FBSyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQXBDRCxzQ0FvQ0MifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/eventbus-decorator",
3
- "version": "3.28.2",
3
+ "version": "3.29.0",
4
4
  "description": "tegg eventbus decorator",
5
5
  "keywords": [
6
6
  "egg",
@@ -34,8 +34,8 @@
34
34
  "directory": "core/eventbus-decorator"
35
35
  },
36
36
  "dependencies": {
37
- "@eggjs/core-decorator": "^3.28.2",
38
- "@eggjs/tegg-common-util": "^3.28.2",
37
+ "@eggjs/core-decorator": "^3.29.0",
38
+ "@eggjs/tegg-common-util": "^3.29.0",
39
39
  "typed-emitter": "^1.3.1"
40
40
  },
41
41
  "engines": {
@@ -53,5 +53,5 @@
53
53
  "publishConfig": {
54
54
  "access": "public"
55
55
  },
56
- "gitHead": "04fabefd4ad4d4ff799b9d8d1603d684f84de868"
56
+ "gitHead": "bc9d4257fa2d8c0596841593419ab59b304e87f1"
57
57
  }