@eggjs/tegg-eventbus-runtime 3.52.0 → 4.0.0-beta.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/tegg-eventbus-runtime",
3
- "version": "3.52.0",
3
+ "version": "4.0.0-beta.2",
4
4
  "description": "tegg eventbus runtime",
5
5
  "keywords": [
6
6
  "egg",
@@ -12,18 +12,22 @@
12
12
  "eggModule": {
13
13
  "name": "eventbusRuntime"
14
14
  },
15
- "main": "dist/index.js",
15
+ "type": "module",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./src/index.d.ts",
19
+ "default": "./src/index.js"
20
+ }
21
+ },
16
22
  "files": [
17
- "dist/**/*.js",
18
- "dist/**/*.d.ts"
23
+ "src/**/*.js",
24
+ "src/**/*.d.ts"
19
25
  ],
20
- "typings": "dist/index.d.ts",
21
26
  "scripts": {
22
- "test": "cross-env NODE_ENV=test NODE_OPTIONS='--no-deprecation' mocha",
23
- "clean": "tsc -b --clean && rm -rf dist",
27
+ "clean": "tsc -b --clean",
24
28
  "tsc": "npm run clean && tsc -p ./tsconfig.json",
25
- "tsc:pub": "npm run clean && tsc -p ./tsconfig.pub.json",
26
- "prepublishOnly": "npm run tsc:pub"
29
+ "tsc:pub": "npm run tsc",
30
+ "prepublishOnly": "npm run tsc"
27
31
  },
28
32
  "author": "killagu <killa123@126.com>",
29
33
  "license": "MIT",
@@ -37,32 +41,28 @@
37
41
  "directory": "core/eventbus-runtime"
38
42
  },
39
43
  "dependencies": {
40
- "@eggjs/core-decorator": "^3.52.0",
41
- "@eggjs/eventbus-decorator": "^3.52.0",
42
- "@eggjs/tegg-common-util": "^3.52.0",
43
- "@eggjs/tegg-runtime": "^3.52.0",
44
- "@eggjs/tegg-types": "^3.52.0",
44
+ "@eggjs/core-decorator": "^4.0.0-beta.2",
45
+ "@eggjs/eventbus-decorator": "^4.0.0-beta.2",
46
+ "@eggjs/tegg-common-util": "^4.0.0-beta.2",
47
+ "@eggjs/tegg-runtime": "^4.0.0-beta.2",
48
+ "@eggjs/tegg-types": "^4.0.0-beta.2",
45
49
  "await-event": "^2.1.0",
46
50
  "await-first": "^1.0.0"
47
51
  },
48
52
  "engines": {
49
- "node": ">=14.0.0"
53
+ "node": ">=20.0.0"
50
54
  },
51
55
  "devDependencies": {
52
- "@eggjs/tegg-loader": "^3.52.0",
53
- "@eggjs/tegg-metadata": "^3.52.0",
54
- "@types/mocha": "^10.0.1",
55
- "@types/node": "^20.2.4",
56
- "coffee": "^5.4.0",
57
- "cross-env": "^7.0.3",
58
- "egg": "^3.9.1",
59
- "mm": "^3.2.0",
60
- "mocha": "^10.2.0",
61
- "ts-node": "^10.9.1",
62
- "typescript": "^5.0.4"
56
+ "@eggjs/tegg-loader": "^4.0.0-beta.2",
57
+ "@eggjs/tegg-metadata": "^4.0.0-beta.2",
58
+ "@types/node": "22",
59
+ "coffee": "5",
60
+ "egg": "4",
61
+ "ts-node": "10",
62
+ "typescript": "5"
63
63
  },
64
64
  "publishConfig": {
65
65
  "access": "public"
66
66
  },
67
- "gitHead": "35ed34855041dd8898046c9f3834d09a39da8ada"
67
+ "gitHead": "7e29d49dcc2eb26909697d5543b3c4f596c9e927"
68
68
  }
@@ -0,0 +1,24 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { SingletonProto } from '@eggjs/core-decorator';
8
+ import { AccessLevel } from '@eggjs/tegg-types';
9
+ let EventContextFactory = class EventContextFactory {
10
+ creator;
11
+ createContext(parentContext) {
12
+ return this.creator(parentContext);
13
+ }
14
+ registerContextCreator(creator) {
15
+ this.creator = creator;
16
+ }
17
+ };
18
+ EventContextFactory = __decorate([
19
+ SingletonProto({
20
+ accessLevel: AccessLevel.PUBLIC,
21
+ })
22
+ ], EventContextFactory);
23
+ export { EventContextFactory };
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRDb250ZXh0RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkV2ZW50Q29udGV4dEZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVF6QyxJQUFNLG1CQUFtQixHQUF6QixNQUFNLG1CQUFtQjtJQUN0QixPQUFPLENBQWlCO0lBRWhDLGFBQWEsQ0FBQyxhQUFpQztRQUM3QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQXVCO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7Q0FDRixDQUFBO0FBVlksbUJBQW1CO0lBSC9CLGNBQWMsQ0FBQztRQUNkLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTTtLQUNoQyxDQUFDO0dBQ1csbUJBQW1CLENBVS9CIn0=
@@ -0,0 +1,55 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { EVENT_CONTEXT_INJECT } from '@eggjs/eventbus-decorator';
8
+ import { EggContainerFactory } from '@eggjs/tegg-runtime';
9
+ import { AccessLevel } from '@eggjs/tegg-types';
10
+ import { MapUtil } from '@eggjs/tegg-common-util';
11
+ import { SingletonProto } from '@eggjs/core-decorator';
12
+ let EventHandlerFactory = class EventHandlerFactory {
13
+ handlerProtoMap = new Map();
14
+ registerHandler(event, proto) {
15
+ const protos = MapUtil.getOrStore(this.handlerProtoMap, event, []);
16
+ protos.push(proto);
17
+ }
18
+ hasListeners(event) {
19
+ return this.handlerProtoMap.has(event);
20
+ }
21
+ getHandlerProtos(event) {
22
+ const handlerProtos = this.handlerProtoMap.get(event) || [];
23
+ return handlerProtos;
24
+ }
25
+ async getHandler(proto) {
26
+ const eggObj = await EggContainerFactory.getOrCreateEggObject(proto, proto.name);
27
+ return eggObj.obj;
28
+ }
29
+ async getHandlers(event) {
30
+ const handlerProtos = this.getHandlerProtos(event);
31
+ return await Promise.all(handlerProtos.map(proto => {
32
+ return this.getHandler(proto);
33
+ }));
34
+ }
35
+ async handle(eventName, proto, args) {
36
+ const handler = await this.getHandler(proto);
37
+ const enableInjectCtx = proto.getMetaData(EVENT_CONTEXT_INJECT) ?? false;
38
+ if (enableInjectCtx) {
39
+ const ctx = {
40
+ eventName,
41
+ };
42
+ await Reflect.apply(handler.handle, handler, [ctx, ...args]);
43
+ }
44
+ else {
45
+ await Reflect.apply(handler.handle, handler, args);
46
+ }
47
+ }
48
+ };
49
+ EventHandlerFactory = __decorate([
50
+ SingletonProto({
51
+ accessLevel: AccessLevel.PUBLIC,
52
+ })
53
+ ], EventHandlerFactory);
54
+ export { EventHandlerFactory };
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRIYW5kbGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkV2ZW50SGFuZGxlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUE4QyxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS2hELElBQU0sbUJBQW1CLEdBQXpCLE1BQU0sbUJBQW1CO0lBQ3RCLGVBQWUsR0FBd0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV6RSxlQUFlLENBQUMsS0FBZ0IsRUFBRSxLQUFtQjtRQUNuRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFnQjtRQUMzQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFnQjtRQUMvQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBbUI7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pGLE9BQU8sTUFBTSxDQUFDLEdBQWlDLENBQUM7SUFDbEQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBZ0I7UUFDaEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFvQixFQUFFLEtBQW1CLEVBQUUsSUFBb0I7UUFDMUUsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQVUsb0JBQW9CLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDbEYsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixNQUFNLEdBQUcsR0FBRztnQkFDVixTQUFTO2FBQ1YsQ0FBQztZQUNGLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBRSxDQUFDLENBQUM7UUFDakUsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFBO0FBekNZLG1CQUFtQjtJQUgvQixjQUFjLENBQUM7UUFDZCxXQUFXLEVBQUUsV0FBVyxDQUFDLE1BQU07S0FDaEMsQ0FBQztHQUNXLG1CQUFtQixDQXlDL0IifQ==
@@ -0,0 +1,166 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Inject, SingletonProto } from '@eggjs/core-decorator';
11
+ import { CORK_ID } from '@eggjs/eventbus-decorator';
12
+ import { ContextHandler } from '@eggjs/tegg-runtime';
13
+ import { AccessLevel } from '@eggjs/tegg-types';
14
+ import { EventContextFactory } from './EventContextFactory.js';
15
+ import { EventHandlerFactory } from './EventHandlerFactory.js';
16
+ import EventEmitter from 'node:events';
17
+ // @ts-expect-error await-event is not typed
18
+ import awaitEvent from 'await-event';
19
+ // @ts-expect-error await-first is not typed
20
+ import awaitFirst from 'await-first';
21
+ let SingletonEventBus = class SingletonEventBus {
22
+ emitter = new EventEmitter();
23
+ eventContextFactory;
24
+ eventHandlerFactory;
25
+ logger;
26
+ corkIdSequence = 0;
27
+ corkedEvents = new Map();
28
+ /**
29
+ * only use for ensure event will happen
30
+ */
31
+ once(event, listener) {
32
+ this.emitter.once(event, listener);
33
+ return this;
34
+ }
35
+ async await(event) {
36
+ return awaitEvent(this.emitter, event);
37
+ }
38
+ awaitFirst(...e) {
39
+ return awaitFirst(this.emitter, e);
40
+ }
41
+ emit(event, ...args) {
42
+ const ctx = this.eventContextFactory.createContext();
43
+ const hasListener = this.eventHandlerFactory.hasListeners(event);
44
+ this.doEmit(ctx, event, args);
45
+ return hasListener;
46
+ }
47
+ generateCorkId() {
48
+ return String(++this.corkIdSequence);
49
+ }
50
+ cork(corkId) {
51
+ let corkEvents = this.corkedEvents.get(corkId);
52
+ if (!corkEvents) {
53
+ corkEvents = {
54
+ times: 0,
55
+ events: [],
56
+ };
57
+ this.corkedEvents.set(corkId, corkEvents);
58
+ }
59
+ corkEvents.times++;
60
+ }
61
+ uncork(corkId) {
62
+ const corkEvents = this.corkedEvents.get(corkId);
63
+ if (!corkEvents) {
64
+ throw new Error(`eventbus corkId ${corkId} not found`);
65
+ }
66
+ if (--corkEvents.times !== 0) {
67
+ return false;
68
+ }
69
+ this.corkedEvents.delete(corkId);
70
+ for (const event of corkEvents.events) {
71
+ if (event.context) {
72
+ this.doEmitWithContext(event.context, event.name, event.args);
73
+ }
74
+ }
75
+ return true;
76
+ }
77
+ queueEvent(corkId, event) {
78
+ const corkdEvents = this.corkedEvents.get(corkId);
79
+ if (!corkdEvents) {
80
+ throw new Error(`eventbus corkId ${corkId} not found`);
81
+ }
82
+ corkdEvents.events.push(event);
83
+ }
84
+ emitWithContext(parentContext, event, args) {
85
+ const corkId = parentContext.get(CORK_ID);
86
+ const hasListener = this.eventHandlerFactory.hasListeners(event);
87
+ if (corkId) {
88
+ this.queueEvent(corkId, { name: event, args, context: parentContext });
89
+ return hasListener;
90
+ }
91
+ return this.doEmitWithContext(parentContext, event, args);
92
+ }
93
+ doEmitWithContext(parentContext, event, args) {
94
+ const hasListener = this.eventHandlerFactory.hasListeners(event);
95
+ const ctx = this.eventContextFactory.createContext(parentContext);
96
+ this.doEmit(ctx, event, args);
97
+ return hasListener;
98
+ }
99
+ doOnceEmit(event, args) {
100
+ try {
101
+ this.emitter.emit(event, ...args);
102
+ }
103
+ catch (e) {
104
+ e.message = `[EventBus] process once event ${String(event)} failed: ${e.message}`;
105
+ this.logger.error(e);
106
+ }
107
+ }
108
+ async doEmit(ctx, event, args) {
109
+ await ContextHandler.run(ctx, async () => {
110
+ const lifecycle = {};
111
+ if (ctx.init) {
112
+ await ctx.init(lifecycle);
113
+ }
114
+ try {
115
+ const handlerProtos = this.eventHandlerFactory.getHandlerProtos(event);
116
+ await Promise.all(handlerProtos.map(async (proto) => {
117
+ try {
118
+ await this.eventHandlerFactory.handle(event, proto, args);
119
+ }
120
+ catch (e) {
121
+ // should wait all handlers done then destroy ctx
122
+ e.message = `[EventBus] process event ${String(event)} for handler ${String(proto.name)} failed: ${e.message}`;
123
+ this.logger.error(e);
124
+ }
125
+ }));
126
+ }
127
+ catch (e) {
128
+ e.message = `[EventBus] process event ${String(event)} failed: ${e.message}`;
129
+ this.logger.error(e);
130
+ }
131
+ finally {
132
+ if (ctx.destroy) {
133
+ ctx.destroy(lifecycle).catch(e => {
134
+ e.message = '[tegg/SingletonEventBus] destroy tegg ctx failed:' + e.message;
135
+ this.logger.error(e);
136
+ });
137
+ }
138
+ }
139
+ this.doOnceEmit(event, args);
140
+ });
141
+ }
142
+ };
143
+ __decorate([
144
+ Inject(),
145
+ __metadata("design:type", EventContextFactory)
146
+ ], SingletonEventBus.prototype, "eventContextFactory", void 0);
147
+ __decorate([
148
+ Inject(),
149
+ __metadata("design:type", EventHandlerFactory)
150
+ ], SingletonEventBus.prototype, "eventHandlerFactory", void 0);
151
+ __decorate([
152
+ Inject({
153
+ name: 'logger',
154
+ }),
155
+ __metadata("design:type", Function)
156
+ ], SingletonEventBus.prototype, "logger", void 0);
157
+ SingletonEventBus = __decorate([
158
+ SingletonProto({
159
+ // TODO 需要考虑支持别名
160
+ // SingletonEventBus 同时实现了两个接口
161
+ name: 'eventBus',
162
+ accessLevel: AccessLevel.PUBLIC,
163
+ })
164
+ ], SingletonEventBus);
165
+ export { SingletonEventBus };
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uRXZlbnRCdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJTaW5nbGV0b25FdmVudEJ1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBNEMsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLFlBQVksTUFBTSxhQUFhLENBQUM7QUFDdkMsNENBQTRDO0FBQzVDLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyw0Q0FBNEM7QUFDNUMsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBbUI5QixJQUFNLGlCQUFpQixHQUF2QixNQUFNLGlCQUFpQjtJQUNYLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRzdCLG1CQUFtQixDQUFzQjtJQUd6QyxtQkFBbUIsQ0FBc0I7SUFLekMsTUFBTSxDQUFZO0lBRTNCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFFVixZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7SUFFM0U7O09BRUc7SUFDSCxJQUFJLENBQXlCLEtBQVEsRUFBRSxRQUFtQjtRQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBeUIsS0FBUTtRQUMxQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENB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
package/src/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './SingletonEventBus.js';
2
+ export * from './EventHandlerFactory.js';
3
+ export * from './EventContextFactory.js';
package/src/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './SingletonEventBus.js';
2
+ export * from './EventHandlerFactory.js';
3
+ export * from './EventContextFactory.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQyJ9
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './src/SingletonEventBus';
2
- export * from './src/EventHandlerFactory';
3
- export * from './src/EventContextFactory';
package/dist/index.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./src/SingletonEventBus"), exports);
18
- __exportStar(require("./src/EventHandlerFactory"), exports);
19
- __exportStar(require("./src/EventContextFactory"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMERBQXdDO0FBQ3hDLDREQUEwQztBQUMxQyw0REFBMEMifQ==
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.EventContextFactory = void 0;
10
- const core_decorator_1 = require("@eggjs/core-decorator");
11
- const tegg_types_1 = require("@eggjs/tegg-types");
12
- let EventContextFactory = class EventContextFactory {
13
- createContext(parentContext) {
14
- return this.creator(parentContext);
15
- }
16
- registerContextCreator(creator) {
17
- this.creator = creator;
18
- }
19
- };
20
- exports.EventContextFactory = EventContextFactory;
21
- exports.EventContextFactory = EventContextFactory = __decorate([
22
- (0, core_decorator_1.SingletonProto)({
23
- accessLevel: tegg_types_1.AccessLevel.PUBLIC,
24
- })
25
- ], EventContextFactory);
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRDb250ZXh0RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FdmVudENvbnRleHRGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDBEQUF1RDtBQUN2RCxrREFBZ0Q7QUFRekMsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBbUI7SUFHOUIsYUFBYSxDQUFDLGFBQWlDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsT0FBdUI7UUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztDQUNGLENBQUE7QUFWWSxrREFBbUI7OEJBQW5CLG1CQUFtQjtJQUgvQixJQUFBLCtCQUFjLEVBQUM7UUFDZCxXQUFXLEVBQUUsd0JBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxtQkFBbUIsQ0FVL0IifQ==
@@ -1,61 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.EventHandlerFactory = void 0;
10
- const eventbus_decorator_1 = require("@eggjs/eventbus-decorator");
11
- const tegg_runtime_1 = require("@eggjs/tegg-runtime");
12
- const tegg_types_1 = require("@eggjs/tegg-types");
13
- const tegg_common_util_1 = require("@eggjs/tegg-common-util");
14
- const core_decorator_1 = require("@eggjs/core-decorator");
15
- let EventHandlerFactory = class EventHandlerFactory {
16
- constructor() {
17
- this.handlerProtoMap = new Map();
18
- }
19
- registerHandler(event, proto) {
20
- const protos = tegg_common_util_1.MapUtil.getOrStore(this.handlerProtoMap, event, []);
21
- protos.push(proto);
22
- }
23
- hasListeners(event) {
24
- return this.handlerProtoMap.has(event);
25
- }
26
- getHandlerProtos(event) {
27
- const handlerProtos = this.handlerProtoMap.get(event) || [];
28
- return handlerProtos;
29
- }
30
- async getHandler(proto) {
31
- const eggObj = await tegg_runtime_1.EggContainerFactory.getOrCreateEggObject(proto, proto.name);
32
- return eggObj.obj;
33
- }
34
- async getHandlers(event) {
35
- const handlerProtos = this.getHandlerProtos(event);
36
- return await Promise.all(handlerProtos.map(proto => {
37
- return this.getHandler(proto);
38
- }));
39
- }
40
- async handle(eventName, proto, args) {
41
- var _a;
42
- const handler = await this.getHandler(proto);
43
- const enableInjectCtx = (_a = proto.getMetaData(eventbus_decorator_1.EVENT_CONTEXT_INJECT)) !== null && _a !== void 0 ? _a : false;
44
- if (enableInjectCtx) {
45
- const ctx = {
46
- eventName,
47
- };
48
- await Reflect.apply(handler.handle, handler, [ctx, ...args]);
49
- }
50
- else {
51
- await Reflect.apply(handler.handle, handler, args);
52
- }
53
- }
54
- };
55
- exports.EventHandlerFactory = EventHandlerFactory;
56
- exports.EventHandlerFactory = EventHandlerFactory = __decorate([
57
- (0, core_decorator_1.SingletonProto)({
58
- accessLevel: tegg_types_1.AccessLevel.PUBLIC,
59
- })
60
- ], EventHandlerFactory);
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRIYW5kbGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FdmVudEhhbmRsZXJGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLGtFQUE2RztBQUM3RyxzREFBMEQ7QUFDMUQsa0RBQWdEO0FBRWhELDhEQUFrRDtBQUNsRCwwREFBdUQ7QUFLaEQsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBbUI7SUFBekI7UUFDRyxvQkFBZSxHQUF3QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBd0MzRSxDQUFDO0lBdENDLGVBQWUsQ0FBQyxLQUFnQixFQUFFLEtBQW1CO1FBQ25ELE1BQU0sTUFBTSxHQUFHLDBCQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFnQjtRQUMzQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFnQjtRQUMvQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBbUI7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQ0FBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pGLE9BQU8sTUFBTSxDQUFDLEdBQWlDLENBQUM7SUFDbEQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBZ0I7UUFDaEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFvQixFQUFFLEtBQW1CLEVBQUUsSUFBb0I7O1FBQzFFLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxNQUFNLGVBQWUsR0FBRyxNQUFBLEtBQUssQ0FBQyxXQUFXLENBQVUseUNBQW9CLENBQUMsbUNBQUksS0FBSyxDQUFDO1FBQ2xGLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsTUFBTSxHQUFHLEdBQUc7Z0JBQ1YsU0FBUzthQUNWLENBQUM7WUFDRixNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQXpDWSxrREFBbUI7OEJBQW5CLG1CQUFtQjtJQUgvQixJQUFBLCtCQUFjLEVBQUM7UUFDZCxXQUFXLEVBQUUsd0JBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxtQkFBbUIsQ0F5Qy9CIn0=
@@ -1,169 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.SingletonEventBus = void 0;
16
- const core_decorator_1 = require("@eggjs/core-decorator");
17
- const eventbus_decorator_1 = require("@eggjs/eventbus-decorator");
18
- const tegg_runtime_1 = require("@eggjs/tegg-runtime");
19
- const tegg_types_1 = require("@eggjs/tegg-types");
20
- const EventContextFactory_1 = require("./EventContextFactory");
21
- const EventHandlerFactory_1 = require("./EventHandlerFactory");
22
- const events_1 = require("events");
23
- const await_event_1 = __importDefault(require("await-event"));
24
- const await_first_1 = __importDefault(require("await-first"));
25
- let SingletonEventBus = class SingletonEventBus {
26
- constructor() {
27
- this.emitter = new events_1.EventEmitter();
28
- this.corkIdSequence = 0;
29
- this.corkedEvents = new Map();
30
- }
31
- /**
32
- * only use for ensure event will happen
33
- */
34
- once(event, listener) {
35
- this.emitter.once(event, listener);
36
- return this;
37
- }
38
- async await(event) {
39
- return (0, await_event_1.default)(this.emitter, event);
40
- }
41
- awaitFirst(...e) {
42
- return (0, await_first_1.default)(this.emitter, e);
43
- }
44
- emit(event, ...args) {
45
- const ctx = this.eventContextFactory.createContext();
46
- const hasListener = this.eventHandlerFactory.hasListeners(event);
47
- this.doEmit(ctx, event, args);
48
- return hasListener;
49
- }
50
- generateCorkId() {
51
- return String(++this.corkIdSequence);
52
- }
53
- cork(corkId) {
54
- let corkEvents = this.corkedEvents.get(corkId);
55
- if (!corkEvents) {
56
- corkEvents = {
57
- times: 0,
58
- events: [],
59
- };
60
- this.corkedEvents.set(corkId, corkEvents);
61
- }
62
- corkEvents.times++;
63
- }
64
- uncork(corkId) {
65
- const corkEvents = this.corkedEvents.get(corkId);
66
- if (!corkEvents) {
67
- throw new Error(`eventbus corkId ${corkId} not found`);
68
- }
69
- if (--corkEvents.times !== 0) {
70
- return false;
71
- }
72
- this.corkedEvents.delete(corkId);
73
- for (const event of corkEvents.events) {
74
- if (event.context) {
75
- this.doEmitWithContext(event.context, event.name, event.args);
76
- }
77
- }
78
- return true;
79
- }
80
- queueEvent(corkId, event) {
81
- const corkdEvents = this.corkedEvents.get(corkId);
82
- if (!corkdEvents) {
83
- throw new Error(`eventbus corkId ${corkId} not found`);
84
- }
85
- corkdEvents.events.push(event);
86
- }
87
- emitWithContext(parentContext, event, args) {
88
- const corkId = parentContext.get(eventbus_decorator_1.CORK_ID);
89
- const hasListener = this.eventHandlerFactory.hasListeners(event);
90
- if (corkId) {
91
- this.queueEvent(corkId, { name: event, args, context: parentContext });
92
- return hasListener;
93
- }
94
- return this.doEmitWithContext(parentContext, event, args);
95
- }
96
- doEmitWithContext(parentContext, event, args) {
97
- const hasListener = this.eventHandlerFactory.hasListeners(event);
98
- const ctx = this.eventContextFactory.createContext(parentContext);
99
- this.doEmit(ctx, event, args);
100
- return hasListener;
101
- }
102
- doOnceEmit(event, args) {
103
- try {
104
- this.emitter.emit(event, ...args);
105
- }
106
- catch (e) {
107
- e.message = `[EventBus] process once event ${String(event)} failed: ${e.message}`;
108
- this.logger.error(e);
109
- }
110
- }
111
- async doEmit(ctx, event, args) {
112
- await tegg_runtime_1.ContextHandler.run(ctx, async () => {
113
- const lifecycle = {};
114
- if (ctx.init) {
115
- await ctx.init(lifecycle);
116
- }
117
- try {
118
- const handlerProtos = this.eventHandlerFactory.getHandlerProtos(event);
119
- await Promise.all(handlerProtos.map(async (proto) => {
120
- try {
121
- await this.eventHandlerFactory.handle(event, proto, args);
122
- }
123
- catch (e) {
124
- // should wait all handlers done then destroy ctx
125
- e.message = `[EventBus] process event ${String(event)} for handler ${String(proto.name)} failed: ${e.message}`;
126
- this.logger.error(e);
127
- }
128
- }));
129
- }
130
- catch (e) {
131
- e.message = `[EventBus] process event ${String(event)} failed: ${e.message}`;
132
- this.logger.error(e);
133
- }
134
- finally {
135
- if (ctx.destroy) {
136
- ctx.destroy(lifecycle).catch(e => {
137
- e.message = '[tegg/SingletonEventBus] destroy tegg ctx failed:' + e.message;
138
- this.logger.error(e);
139
- });
140
- }
141
- }
142
- this.doOnceEmit(event, args);
143
- });
144
- }
145
- };
146
- exports.SingletonEventBus = SingletonEventBus;
147
- __decorate([
148
- (0, core_decorator_1.Inject)(),
149
- __metadata("design:type", EventContextFactory_1.EventContextFactory)
150
- ], SingletonEventBus.prototype, "eventContextFactory", void 0);
151
- __decorate([
152
- (0, core_decorator_1.Inject)(),
153
- __metadata("design:type", EventHandlerFactory_1.EventHandlerFactory)
154
- ], SingletonEventBus.prototype, "eventHandlerFactory", void 0);
155
- __decorate([
156
- (0, core_decorator_1.Inject)({
157
- name: 'logger',
158
- }),
159
- __metadata("design:type", Object)
160
- ], SingletonEventBus.prototype, "logger", void 0);
161
- exports.SingletonEventBus = SingletonEventBus = __decorate([
162
- (0, core_decorator_1.SingletonProto)({
163
- // TODO 需要考虑支持别名
164
- // SingletonEventBus 同时实现了两个接口
165
- name: 'eventBus',
166
- accessLevel: tegg_types_1.AccessLevel.PUBLIC,
167
- })
168
- ], SingletonEventBus);
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uRXZlbnRCdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2luZ2xldG9uRXZlbnRCdXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMERBQStEO0FBQy9ELGtFQUE4RjtBQUU5RixzREFBcUQ7QUFFckQsa0RBQWdEO0FBRWhELCtEQUE0RDtBQUM1RCwrREFBNEQ7QUFDNUQsbUNBQXNDO0FBQ3RDLDhEQUFxQztBQUNyQyw4REFBcUM7QUFtQjlCLElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBQXZCO1FBQ1ksWUFBTyxHQUFHLElBQUkscUJBQVksRUFBRSxDQUFDO1FBYXRDLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRVYsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztJQTJIN0UsQ0FBQztJQXpIQzs7T0FFRztJQUNILElBQUksQ0FBeUIsS0FBUSxFQUFFLFFBQW1CO1FBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxDQUF5QixLQUFRO1FBQzFDLE9BQU8sSUFBQSxxQkFBVSxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBeUIsR0FBRyxDQUFXO1FBQy9DLE9BQU8sSUFBQSxxQkFBVSxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksQ0FBeUIsS0FBUSxFQUFFLEdBQUcsSUFBMEI7UUFDbEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMs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
File without changes
File without changes
File without changes