bootifyjs 0.0.2 → 0.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.
Files changed (201) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +116 -510
  3. package/dist/api.d.ts +32 -0
  4. package/dist/api.js +149 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/config/app.config.d.ts +29 -0
  7. package/dist/config/app.config.js +55 -0
  8. package/dist/config/app.config.js.map +1 -0
  9. package/dist/controllers/config.controller.d.ts +16 -0
  10. package/dist/controllers/config.controller.js +66 -0
  11. package/dist/controllers/config.controller.js.map +1 -0
  12. package/dist/controllers/events.controller.d.ts +66 -0
  13. package/dist/controllers/events.controller.js +145 -0
  14. package/dist/controllers/events.controller.js.map +1 -0
  15. package/dist/controllers/health.controller.d.ts +20 -0
  16. package/dist/controllers/health.controller.js +92 -0
  17. package/dist/controllers/health.controller.js.map +1 -0
  18. package/dist/controllers/user.controller.d.ts +13 -0
  19. package/dist/controllers/user.controller.js +209 -0
  20. package/dist/controllers/user.controller.js.map +1 -0
  21. package/dist/core/application.d.ts +21 -0
  22. package/dist/core/application.js +90 -0
  23. package/dist/core/application.js.map +1 -0
  24. package/dist/core/config.d.ts +3 -0
  25. package/dist/core/config.js +78 -0
  26. package/dist/core/config.js.map +1 -0
  27. package/dist/core/container.d.ts +17 -0
  28. package/dist/core/container.js +92 -0
  29. package/dist/core/container.js.map +1 -0
  30. package/dist/core/decorators.d.ts +28 -0
  31. package/dist/core/decorators.js +204 -0
  32. package/dist/core/decorators.js.map +1 -0
  33. package/dist/core/errors.d.ts +18 -0
  34. package/dist/core/errors.js +74 -0
  35. package/dist/core/errors.js.map +1 -0
  36. package/dist/core/middleware.d.ts +8 -0
  37. package/dist/core/middleware.js +23 -0
  38. package/dist/core/middleware.js.map +1 -0
  39. package/dist/core/openapi.d.ts +80 -0
  40. package/dist/core/openapi.js +189 -0
  41. package/dist/core/openapi.js.map +1 -0
  42. package/dist/core/router.d.ts +32 -0
  43. package/dist/core/router.js +266 -0
  44. package/dist/core/router.js.map +1 -0
  45. package/dist/core/utils.d.ts +7 -0
  46. package/dist/core/utils.js +75 -0
  47. package/dist/core/utils.js.map +1 -0
  48. package/dist/core/validation.d.ts +15 -0
  49. package/dist/core/validation.js +161 -0
  50. package/dist/core/validation.js.map +1 -0
  51. package/dist/events/core/event-bus.d.ts +26 -0
  52. package/dist/events/core/event-bus.js +253 -0
  53. package/dist/events/core/event-bus.js.map +1 -0
  54. package/dist/events/core/event-registry.d.ts +31 -0
  55. package/dist/events/core/event-registry.js +170 -0
  56. package/dist/events/core/event-registry.js.map +1 -0
  57. package/dist/events/decorators/event.decorators.d.ts +11 -0
  58. package/dist/events/decorators/event.decorators.js +123 -0
  59. package/dist/events/decorators/event.decorators.js.map +1 -0
  60. package/dist/events/examples/system.events.d.ts +15 -0
  61. package/dist/events/examples/system.events.js +28 -0
  62. package/dist/events/examples/system.events.js.map +1 -0
  63. package/dist/events/examples/user.events.d.ts +68 -0
  64. package/dist/events/examples/user.events.js +73 -0
  65. package/dist/events/examples/user.events.js.map +1 -0
  66. package/dist/events/examples/user.handlers.d.ts +20 -0
  67. package/dist/events/examples/user.handlers.js +157 -0
  68. package/dist/events/examples/user.handlers.js.map +1 -0
  69. package/dist/events/index.d.ts +13 -0
  70. package/dist/events/index.js +71 -0
  71. package/dist/events/index.js.map +1 -0
  72. package/dist/events/middleware/logging.middleware.d.ts +7 -0
  73. package/dist/events/middleware/logging.middleware.js +44 -0
  74. package/dist/events/middleware/logging.middleware.js.map +1 -0
  75. package/dist/events/middleware/metrics.middleware.d.ts +11 -0
  76. package/dist/events/middleware/metrics.middleware.js +87 -0
  77. package/dist/events/middleware/metrics.middleware.js.map +1 -0
  78. package/dist/events/middleware/validation.middleware.d.ts +8 -0
  79. package/dist/events/middleware/validation.middleware.js +63 -0
  80. package/dist/events/middleware/validation.middleware.js.map +1 -0
  81. package/dist/events/store/memory-event-store.d.ts +21 -0
  82. package/dist/events/store/memory-event-store.js +81 -0
  83. package/dist/events/store/memory-event-store.js.map +1 -0
  84. package/dist/events/types/event.types.d.ts +57 -0
  85. package/dist/{decorators/cache/ICacheClient.js → events/types/event.types.js} +1 -1
  86. package/dist/events/types/event.types.js.map +1 -0
  87. package/dist/examples/basic-api.d.ts +1 -0
  88. package/dist/examples/basic-api.js +120 -0
  89. package/dist/examples/basic-api.js.map +1 -0
  90. package/dist/index.d.ts +17 -11
  91. package/dist/index.js +95 -31
  92. package/dist/index.js.map +1 -1
  93. package/dist/logging/config/logging.config.d.ts +5 -0
  94. package/dist/logging/config/logging.config.js +101 -0
  95. package/dist/logging/config/logging.config.js.map +1 -0
  96. package/dist/logging/core/log-context.service.d.ts +11 -0
  97. package/dist/logging/core/log-context.service.js +40 -0
  98. package/dist/logging/core/log-context.service.js.map +1 -0
  99. package/dist/logging/core/logger.service.d.ts +29 -0
  100. package/dist/logging/core/logger.service.js +178 -0
  101. package/dist/logging/core/logger.service.js.map +1 -0
  102. package/dist/logging/core/startup-logger.service.d.ts +17 -0
  103. package/dist/logging/core/startup-logger.service.js +156 -0
  104. package/dist/logging/core/startup-logger.service.js.map +1 -0
  105. package/dist/logging/decorators/log.decorator.d.ts +11 -0
  106. package/dist/logging/decorators/log.decorator.js +80 -0
  107. package/dist/logging/decorators/log.decorator.js.map +1 -0
  108. package/dist/logging/index.d.ts +15 -0
  109. package/dist/logging/index.js +46 -0
  110. package/dist/logging/index.js.map +1 -0
  111. package/dist/logging/middleware/context.middleware.d.ts +2 -0
  112. package/dist/logging/middleware/context.middleware.js +29 -0
  113. package/dist/logging/middleware/context.middleware.js.map +1 -0
  114. package/dist/logging/middleware/request-logging.middleware.d.ts +3 -0
  115. package/dist/logging/middleware/request-logging.middleware.js +78 -0
  116. package/dist/logging/middleware/request-logging.middleware.js.map +1 -0
  117. package/dist/logging/types/logging.types.d.ts +79 -0
  118. package/dist/{decorators/transaction/IDatabaseClient.js → logging/types/logging.types.js} +1 -1
  119. package/dist/logging/types/logging.types.js.map +1 -0
  120. package/dist/middlewares/auth.middleware.d.ts +2 -0
  121. package/dist/middlewares/auth.middleware.js +20 -0
  122. package/dist/middlewares/auth.middleware.js.map +1 -0
  123. package/dist/middlewares/cors.middleware.d.ts +2 -0
  124. package/dist/middlewares/cors.middleware.js +16 -0
  125. package/dist/middlewares/cors.middleware.js.map +1 -0
  126. package/dist/middlewares/swagger.middleware.d.ts +6 -0
  127. package/dist/middlewares/swagger.middleware.js +84 -0
  128. package/dist/middlewares/swagger.middleware.js.map +1 -0
  129. package/dist/repositories/user.repository.d.ts +16 -0
  130. package/dist/repositories/user.repository.js +110 -0
  131. package/dist/repositories/user.repository.js.map +1 -0
  132. package/dist/schemas/user.schemas.d.ts +214 -0
  133. package/dist/schemas/user.schemas.js +71 -0
  134. package/dist/schemas/user.schemas.js.map +1 -0
  135. package/dist/services/config-demo.service.d.ts +10 -0
  136. package/dist/services/config-demo.service.js +88 -0
  137. package/dist/services/config-demo.service.js.map +1 -0
  138. package/dist/services/user.service.d.ts +21 -0
  139. package/dist/services/user.service.js +201 -0
  140. package/dist/services/user.service.js.map +1 -0
  141. package/package.json +49 -14
  142. package/dist/application/Application.d.ts +0 -43
  143. package/dist/application/Application.d.ts.map +0 -1
  144. package/dist/application/Application.js +0 -283
  145. package/dist/application/Application.js.map +0 -1
  146. package/dist/container/container.d.ts +0 -9
  147. package/dist/container/container.d.ts.map +0 -1
  148. package/dist/container/container.js +0 -23
  149. package/dist/container/container.js.map +0 -1
  150. package/dist/decorators/cache/ICacheClient.d.ts +0 -6
  151. package/dist/decorators/cache/ICacheClient.d.ts.map +0 -1
  152. package/dist/decorators/cache/ICacheClient.js.map +0 -1
  153. package/dist/decorators/cache/cache.decorator.d.ts +0 -2
  154. package/dist/decorators/cache/cache.decorator.d.ts.map +0 -1
  155. package/dist/decorators/cache/cache.decorator.js +0 -38
  156. package/dist/decorators/cache/cache.decorator.js.map +0 -1
  157. package/dist/decorators/controller.decorator.d.ts +0 -9
  158. package/dist/decorators/controller.decorator.d.ts.map +0 -1
  159. package/dist/decorators/controller.decorator.js +0 -99
  160. package/dist/decorators/controller.decorator.js.map +0 -1
  161. package/dist/decorators/http.decorator.d.ts +0 -7
  162. package/dist/decorators/http.decorator.d.ts.map +0 -1
  163. package/dist/decorators/http.decorator.js +0 -26
  164. package/dist/decorators/http.decorator.js.map +0 -1
  165. package/dist/decorators/timing.decorator.d.ts +0 -2
  166. package/dist/decorators/timing.decorator.d.ts.map +0 -1
  167. package/dist/decorators/timing.decorator.js +0 -26
  168. package/dist/decorators/timing.decorator.js.map +0 -1
  169. package/dist/decorators/transaction/IDatabaseClient.d.ts +0 -9
  170. package/dist/decorators/transaction/IDatabaseClient.d.ts.map +0 -1
  171. package/dist/decorators/transaction/IDatabaseClient.js.map +0 -1
  172. package/dist/decorators/transaction/transactional.decorator.d.ts +0 -2
  173. package/dist/decorators/transaction/transactional.decorator.d.ts.map +0 -1
  174. package/dist/decorators/transaction/transactional.decorator.js +0 -27
  175. package/dist/decorators/transaction/transactional.decorator.js.map +0 -1
  176. package/dist/index.d.ts.map +0 -1
  177. package/dist/logger/Logger.d.ts +0 -37
  178. package/dist/logger/Logger.d.ts.map +0 -1
  179. package/dist/logger/Logger.js +0 -142
  180. package/dist/logger/Logger.js.map +0 -1
  181. package/dist/middleware/http.d.ts +0 -2
  182. package/dist/middleware/http.d.ts.map +0 -1
  183. package/dist/middleware/http.js +0 -80
  184. package/dist/middleware/http.js.map +0 -1
  185. package/dist/middleware/requestcontext.d.ts +0 -12
  186. package/dist/middleware/requestcontext.d.ts.map +0 -1
  187. package/dist/middleware/requestcontext.js +0 -6
  188. package/dist/middleware/requestcontext.js.map +0 -1
  189. package/src/application/Application.ts +0 -355
  190. package/src/container/container.ts +0 -28
  191. package/src/decorators/cache/ICacheClient.ts +0 -5
  192. package/src/decorators/cache/cache.decorator.ts +0 -36
  193. package/src/decorators/controller.decorator.ts +0 -119
  194. package/src/decorators/http.decorator.ts +0 -25
  195. package/src/decorators/timing.decorator.ts +0 -23
  196. package/src/decorators/transaction/IDatabaseClient.ts +0 -9
  197. package/src/decorators/transaction/transactional.decorator.ts +0 -24
  198. package/src/index.ts +0 -10
  199. package/src/logger/Logger.ts +0 -179
  200. package/src/middleware/http.ts +0 -81
  201. package/src/middleware/requestcontext.ts +0 -12
@@ -0,0 +1,68 @@
1
+ import { BaseEvent, DomainEvent } from '../types/event.types';
2
+ export declare class UserCreatedEvent implements DomainEvent {
3
+ id: string;
4
+ type: string;
5
+ timestamp: Date;
6
+ version: number;
7
+ aggregateId: string;
8
+ aggregateType: string;
9
+ aggregateVersion: number;
10
+ correlationId?: string;
11
+ causationId?: string;
12
+ metadata?: Record<string, any>;
13
+ userId: string;
14
+ email: string;
15
+ name: string;
16
+ createdBy?: string;
17
+ constructor(data?: Partial<UserCreatedEvent>);
18
+ }
19
+ export declare class UserUpdatedEvent implements DomainEvent {
20
+ id: string;
21
+ type: string;
22
+ timestamp: Date;
23
+ version: number;
24
+ aggregateId: string;
25
+ aggregateType: string;
26
+ aggregateVersion: number;
27
+ correlationId?: string;
28
+ causationId?: string;
29
+ metadata?: Record<string, any>;
30
+ userId: string;
31
+ oldValues: Record<string, any>;
32
+ newValues: Record<string, any>;
33
+ updatedBy?: string;
34
+ constructor(data?: Partial<UserUpdatedEvent>);
35
+ }
36
+ export declare class UserDeletedEvent implements DomainEvent {
37
+ id: string;
38
+ type: string;
39
+ timestamp: Date;
40
+ version: number;
41
+ aggregateId: string;
42
+ aggregateType: string;
43
+ aggregateVersion: number;
44
+ correlationId?: string;
45
+ causationId?: string;
46
+ metadata?: Record<string, any>;
47
+ userId: string;
48
+ email: string;
49
+ name: string;
50
+ deletedBy?: string;
51
+ constructor(data?: Partial<UserDeletedEvent>);
52
+ }
53
+ export declare class UserLoginEvent implements BaseEvent {
54
+ id: string;
55
+ type: string;
56
+ timestamp: Date;
57
+ version: number;
58
+ correlationId?: string;
59
+ causationId?: string;
60
+ metadata?: Record<string, any>;
61
+ userId: string;
62
+ email: string;
63
+ ipAddress?: string;
64
+ userAgent?: string;
65
+ success: boolean;
66
+ failureReason?: string;
67
+ constructor(data?: Partial<UserLoginEvent>);
68
+ }
@@ -0,0 +1,73 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserLoginEvent = exports.UserDeletedEvent = exports.UserUpdatedEvent = exports.UserCreatedEvent = void 0;
13
+ const event_decorators_1 = require("../decorators/event.decorators");
14
+ let UserCreatedEvent = class UserCreatedEvent {
15
+ constructor(data) {
16
+ this.type = 'user.created';
17
+ this.version = 1;
18
+ this.aggregateType = 'User';
19
+ if (data) {
20
+ Object.assign(this, data);
21
+ }
22
+ }
23
+ };
24
+ exports.UserCreatedEvent = UserCreatedEvent;
25
+ exports.UserCreatedEvent = UserCreatedEvent = __decorate([
26
+ (0, event_decorators_1.Event)('user.created'),
27
+ __metadata("design:paramtypes", [Object])
28
+ ], UserCreatedEvent);
29
+ let UserUpdatedEvent = class UserUpdatedEvent {
30
+ constructor(data) {
31
+ this.type = 'user.updated';
32
+ this.version = 1;
33
+ this.aggregateType = 'User';
34
+ if (data) {
35
+ Object.assign(this, data);
36
+ }
37
+ }
38
+ };
39
+ exports.UserUpdatedEvent = UserUpdatedEvent;
40
+ exports.UserUpdatedEvent = UserUpdatedEvent = __decorate([
41
+ (0, event_decorators_1.Event)('user.updated'),
42
+ __metadata("design:paramtypes", [Object])
43
+ ], UserUpdatedEvent);
44
+ let UserDeletedEvent = class UserDeletedEvent {
45
+ constructor(data) {
46
+ this.type = 'user.deleted';
47
+ this.version = 1;
48
+ this.aggregateType = 'User';
49
+ if (data) {
50
+ Object.assign(this, data);
51
+ }
52
+ }
53
+ };
54
+ exports.UserDeletedEvent = UserDeletedEvent;
55
+ exports.UserDeletedEvent = UserDeletedEvent = __decorate([
56
+ (0, event_decorators_1.Event)('user.deleted'),
57
+ __metadata("design:paramtypes", [Object])
58
+ ], UserDeletedEvent);
59
+ let UserLoginEvent = class UserLoginEvent {
60
+ constructor(data) {
61
+ this.type = 'user.login';
62
+ this.version = 1;
63
+ if (data) {
64
+ Object.assign(this, data);
65
+ }
66
+ }
67
+ };
68
+ exports.UserLoginEvent = UserLoginEvent;
69
+ exports.UserLoginEvent = UserLoginEvent = __decorate([
70
+ (0, event_decorators_1.Event)('user.login'),
71
+ __metadata("design:paramtypes", [Object])
72
+ ], UserLoginEvent);
73
+ //# sourceMappingURL=user.events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.events.js","sourceRoot":"","sources":["../../../src/events/examples/user.events.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qEAAuD;AAGhD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAkB3B,YAAY,IAAgC;QAhB5C,SAAI,GAAG,cAAc,CAAC;QAEtB,YAAO,GAAG,CAAC,CAAC;QAEZ,kBAAa,GAAG,MAAM,CAAC;QAarB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAA;AAvBY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,wBAAK,EAAC,cAAc,CAAC;;GACT,gBAAgB,CAuB5B;AAGM,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAkB3B,YAAY,IAAgC;QAhB5C,SAAI,GAAG,cAAc,CAAC;QAEtB,YAAO,GAAG,CAAC,CAAC;QAEZ,kBAAa,GAAG,MAAM,CAAC;QAarB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAA;AAvBY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,wBAAK,EAAC,cAAc,CAAC;;GACT,gBAAgB,CAuB5B;AAGM,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAkB3B,YAAY,IAAgC;QAhB5C,SAAI,GAAG,cAAc,CAAC;QAEtB,YAAO,GAAG,CAAC,CAAC;QAEZ,kBAAa,GAAG,MAAM,CAAC;QAarB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAA;AAvBY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,wBAAK,EAAC,cAAc,CAAC;;GACT,gBAAgB,CAuB5B;AAGM,IAAM,cAAc,GAApB,MAAM,cAAc;IAiBzB,YAAY,IAA8B;QAf1C,SAAI,GAAG,YAAY,CAAC;QAEpB,YAAO,GAAG,CAAC,CAAC;QAcV,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAA;AAtBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,wBAAK,EAAC,YAAY,CAAC;;GACP,cAAc,CAsB1B"}
@@ -0,0 +1,20 @@
1
+ import { UserCreatedEvent, UserUpdatedEvent, UserDeletedEvent, UserLoginEvent } from './user.events';
2
+ export declare class UserEventHandlers {
3
+ private logger;
4
+ onUserCreated(event: UserCreatedEvent): Promise<void>;
5
+ onUserUpdated(event: UserUpdatedEvent): Promise<void>;
6
+ onUserDeleted(event: UserDeletedEvent): Promise<void>;
7
+ onUserLogin(event: UserLoginEvent): Promise<void>;
8
+ private sendWelcomeEmail;
9
+ private updateUserAnalytics;
10
+ private initializeUserPreferences;
11
+ private invalidateUserCache;
12
+ private updateSearchIndex;
13
+ private notifyUserUpdate;
14
+ private cleanupUserData;
15
+ private removeFromSearchIndex;
16
+ private updateLastLoginTime;
17
+ private trackLoginAnalytics;
18
+ private trackFailedLogin;
19
+ private checkSuspiciousActivity;
20
+ }
@@ -0,0 +1,157 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserEventHandlers = void 0;
13
+ const event_decorators_1 = require("../decorators/event.decorators");
14
+ const user_events_1 = require("./user.events");
15
+ const logging_1 = require("../../logging");
16
+ let UserEventHandlers = class UserEventHandlers {
17
+ async onUserCreated(event) {
18
+ this.logger.info('User created event received', {
19
+ userId: event.userId,
20
+ email: event.email,
21
+ name: event.name,
22
+ eventId: event.id
23
+ });
24
+ // Example: Send welcome email
25
+ await this.sendWelcomeEmail(event.email, event.name);
26
+ // Example: Update analytics
27
+ await this.updateUserAnalytics('user_created', event.userId);
28
+ // Example: Initialize user preferences
29
+ await this.initializeUserPreferences(event.userId);
30
+ }
31
+ async onUserUpdated(event) {
32
+ this.logger.info('User updated event received', {
33
+ userId: event.userId,
34
+ oldValues: event.oldValues,
35
+ newValues: event.newValues,
36
+ eventId: event.id
37
+ });
38
+ // Example: Invalidate cache
39
+ await this.invalidateUserCache(event.userId);
40
+ // Example: Update search index
41
+ await this.updateSearchIndex(event.userId, event.newValues);
42
+ // Example: Notify connected clients
43
+ await this.notifyUserUpdate(event.userId, event.newValues);
44
+ }
45
+ async onUserDeleted(event) {
46
+ this.logger.info('User deleted event received', {
47
+ userId: event.userId,
48
+ email: event.email,
49
+ eventId: event.id
50
+ });
51
+ // Example: Clean up user data
52
+ await this.cleanupUserData(event.userId);
53
+ // Example: Remove from search index
54
+ await this.removeFromSearchIndex(event.userId);
55
+ // Example: Update analytics
56
+ await this.updateUserAnalytics('user_deleted', event.userId);
57
+ }
58
+ async onUserLogin(event) {
59
+ this.logger.info('User login event received', {
60
+ userId: event.userId,
61
+ success: event.success,
62
+ ipAddress: event.ipAddress,
63
+ eventId: event.id
64
+ });
65
+ if (event.success) {
66
+ // Example: Update last login time
67
+ await this.updateLastLoginTime(event.userId);
68
+ // Example: Track login analytics
69
+ await this.trackLoginAnalytics(event.userId, event.ipAddress);
70
+ }
71
+ else {
72
+ // Example: Track failed login attempts
73
+ await this.trackFailedLogin(event.userId, event.failureReason, event.ipAddress);
74
+ // Example: Check for suspicious activity
75
+ await this.checkSuspiciousActivity(event.userId, event.ipAddress);
76
+ }
77
+ }
78
+ // Example implementation methods
79
+ async sendWelcomeEmail(email, name) {
80
+ this.logger.debug('Sending welcome email', { email, name });
81
+ // Implementation would integrate with email service
82
+ }
83
+ async updateUserAnalytics(action, userId) {
84
+ this.logger.debug('Updating user analytics', { action, userId });
85
+ // Implementation would integrate with analytics service
86
+ }
87
+ async initializeUserPreferences(userId) {
88
+ this.logger.debug('Initializing user preferences', { userId });
89
+ // Implementation would set default preferences
90
+ }
91
+ async invalidateUserCache(userId) {
92
+ this.logger.debug('Invalidating user cache', { userId });
93
+ // Implementation would clear cache entries
94
+ }
95
+ async updateSearchIndex(userId, userData) {
96
+ this.logger.debug('Updating search index', { userId, userData });
97
+ // Implementation would update search index
98
+ }
99
+ async notifyUserUpdate(userId, updates) {
100
+ this.logger.debug('Notifying user update', { userId, updates });
101
+ // Implementation would notify connected clients via WebSocket
102
+ }
103
+ async cleanupUserData(userId) {
104
+ this.logger.debug('Cleaning up user data', { userId });
105
+ // Implementation would remove user-related data
106
+ }
107
+ async removeFromSearchIndex(userId) {
108
+ this.logger.debug('Removing from search index', { userId });
109
+ // Implementation would remove from search index
110
+ }
111
+ async updateLastLoginTime(userId) {
112
+ this.logger.debug('Updating last login time', { userId });
113
+ // Implementation would update user's last login timestamp
114
+ }
115
+ async trackLoginAnalytics(userId, ipAddress) {
116
+ this.logger.debug('Tracking login analytics', { userId, ipAddress });
117
+ // Implementation would track login metrics
118
+ }
119
+ async trackFailedLogin(userId, reason, ipAddress) {
120
+ this.logger.debug('Tracking failed login', { userId, reason, ipAddress });
121
+ // Implementation would track failed login attempts
122
+ }
123
+ async checkSuspiciousActivity(userId, ipAddress) {
124
+ this.logger.debug('Checking suspicious activity', { userId, ipAddress });
125
+ // Implementation would check for suspicious login patterns
126
+ }
127
+ };
128
+ exports.UserEventHandlers = UserEventHandlers;
129
+ __decorate([
130
+ (0, event_decorators_1.EventHandler)('user.created', { priority: 10 }),
131
+ __metadata("design:type", Function),
132
+ __metadata("design:paramtypes", [user_events_1.UserCreatedEvent]),
133
+ __metadata("design:returntype", Promise)
134
+ ], UserEventHandlers.prototype, "onUserCreated", null);
135
+ __decorate([
136
+ (0, event_decorators_1.EventHandler)('user.updated', { priority: 5 }),
137
+ __metadata("design:type", Function),
138
+ __metadata("design:paramtypes", [user_events_1.UserUpdatedEvent]),
139
+ __metadata("design:returntype", Promise)
140
+ ], UserEventHandlers.prototype, "onUserUpdated", null);
141
+ __decorate([
142
+ (0, event_decorators_1.EventHandler)('user.deleted', { priority: 10 }),
143
+ __metadata("design:type", Function),
144
+ __metadata("design:paramtypes", [user_events_1.UserDeletedEvent]),
145
+ __metadata("design:returntype", Promise)
146
+ ], UserEventHandlers.prototype, "onUserDeleted", null);
147
+ __decorate([
148
+ (0, event_decorators_1.EventHandler)('user.login', { priority: 1 }),
149
+ __metadata("design:type", Function),
150
+ __metadata("design:paramtypes", [user_events_1.UserLoginEvent]),
151
+ __metadata("design:returntype", Promise)
152
+ ], UserEventHandlers.prototype, "onUserLogin", null);
153
+ exports.UserEventHandlers = UserEventHandlers = __decorate([
154
+ (0, event_decorators_1.EventListener)(),
155
+ (0, logging_1.Logger)('UserEventHandlers')
156
+ ], UserEventHandlers);
157
+ //# sourceMappingURL=user.handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.handlers.js","sourceRoot":"","sources":["../../../src/events/examples/user.handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export { EventBus } from './core/event-bus';
2
+ export { EventRegistry } from './core/event-registry';
3
+ export * from './types/event.types';
4
+ export { Event, EventEmitter, EventListener, EmitEvent, registerEventHandlers } from './decorators/event.decorators';
5
+ export { LoggingMiddleware } from './middleware/logging.middleware';
6
+ export { ValidationMiddleware } from './middleware/validation.middleware';
7
+ export { MetricsMiddleware } from './middleware/metrics.middleware';
8
+ export { MemoryEventStore } from './store/memory-event-store';
9
+ export * from './examples/user.events';
10
+ export * from './examples/user.handlers';
11
+ export * from './examples/system.events';
12
+ import { EventBus } from './core/event-bus';
13
+ export declare function configureEventSystem(): EventBus;
@@ -0,0 +1,71 @@
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
+ exports.MemoryEventStore = exports.MetricsMiddleware = exports.ValidationMiddleware = exports.LoggingMiddleware = exports.registerEventHandlers = exports.EmitEvent = exports.EventListener = exports.EventEmitter = exports.Event = exports.EventRegistry = exports.EventBus = void 0;
18
+ exports.configureEventSystem = configureEventSystem;
19
+ // Core exports
20
+ var event_bus_1 = require("./core/event-bus");
21
+ Object.defineProperty(exports, "EventBus", { enumerable: true, get: function () { return event_bus_1.EventBus; } });
22
+ var event_registry_1 = require("./core/event-registry");
23
+ Object.defineProperty(exports, "EventRegistry", { enumerable: true, get: function () { return event_registry_1.EventRegistry; } });
24
+ // Type exports
25
+ __exportStar(require("./types/event.types"), exports);
26
+ // Decorator exports
27
+ var event_decorators_1 = require("./decorators/event.decorators");
28
+ Object.defineProperty(exports, "Event", { enumerable: true, get: function () { return event_decorators_1.Event; } });
29
+ Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return event_decorators_1.EventEmitter; } });
30
+ Object.defineProperty(exports, "EventListener", { enumerable: true, get: function () { return event_decorators_1.EventListener; } });
31
+ Object.defineProperty(exports, "EmitEvent", { enumerable: true, get: function () { return event_decorators_1.EmitEvent; } });
32
+ Object.defineProperty(exports, "registerEventHandlers", { enumerable: true, get: function () { return event_decorators_1.registerEventHandlers; } });
33
+ // Middleware exports
34
+ var logging_middleware_1 = require("./middleware/logging.middleware");
35
+ Object.defineProperty(exports, "LoggingMiddleware", { enumerable: true, get: function () { return logging_middleware_1.LoggingMiddleware; } });
36
+ var validation_middleware_1 = require("./middleware/validation.middleware");
37
+ Object.defineProperty(exports, "ValidationMiddleware", { enumerable: true, get: function () { return validation_middleware_1.ValidationMiddleware; } });
38
+ var metrics_middleware_1 = require("./middleware/metrics.middleware");
39
+ Object.defineProperty(exports, "MetricsMiddleware", { enumerable: true, get: function () { return metrics_middleware_1.MetricsMiddleware; } });
40
+ // Store exports
41
+ var memory_event_store_1 = require("./store/memory-event-store");
42
+ Object.defineProperty(exports, "MemoryEventStore", { enumerable: true, get: function () { return memory_event_store_1.MemoryEventStore; } });
43
+ // Example exports
44
+ __exportStar(require("./examples/user.events"), exports);
45
+ __exportStar(require("./examples/user.handlers"), exports);
46
+ __exportStar(require("./examples/system.events"), exports);
47
+ // Configuration and setup
48
+ const event_bus_2 = require("./core/event-bus");
49
+ const logging_middleware_2 = require("./middleware/logging.middleware");
50
+ const validation_middleware_2 = require("./middleware/validation.middleware");
51
+ const metrics_middleware_2 = require("./middleware/metrics.middleware");
52
+ const event_decorators_2 = require("./decorators/event.decorators");
53
+ const user_handlers_1 = require("./examples/user.handlers");
54
+ // Auto-configure event system
55
+ function configureEventSystem() {
56
+ const eventBus = event_bus_2.EventBus.getInstance({
57
+ enableLogging: true,
58
+ enableMetrics: true,
59
+ maxRetries: 3,
60
+ retryDelay: 1000,
61
+ enableDeadLetterQueue: true
62
+ });
63
+ // Add middleware
64
+ eventBus.use(new validation_middleware_2.ValidationMiddleware());
65
+ eventBus.use(new logging_middleware_2.LoggingMiddleware());
66
+ eventBus.use(new metrics_middleware_2.MetricsMiddleware());
67
+ // Register event handlers
68
+ (0, event_decorators_2.registerEventHandlers)([user_handlers_1.UserEventHandlers]);
69
+ return eventBus;
70
+ }
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAsCA,oDAkBC;AAxDD,eAAe;AACf,8CAA4C;AAAnC,qGAAA,QAAQ,OAAA;AACjB,wDAAsD;AAA7C,+GAAA,aAAa,OAAA;AAEtB,eAAe;AACf,sDAAoC;AAEpC,oBAAoB;AACpB,kEAMuC;AALrC,yGAAA,KAAK,OAAA;AACL,gHAAA,YAAY,OAAA;AACZ,iHAAA,aAAa,OAAA;AACb,6GAAA,SAAS,OAAA;AACT,yHAAA,qBAAqB,OAAA;AAGvB,qBAAqB;AACrB,sEAAoE;AAA3D,uHAAA,iBAAiB,OAAA;AAC1B,4EAA0E;AAAjE,6HAAA,oBAAoB,OAAA;AAC7B,sEAAoE;AAA3D,uHAAA,iBAAiB,OAAA;AAE1B,gBAAgB;AAChB,iEAA8D;AAArD,sHAAA,gBAAgB,OAAA;AAEzB,kBAAkB;AAClB,yDAAuC;AACvC,2DAAyC;AACzC,2DAAyC;AAEzC,0BAA0B;AAC1B,gDAA4C;AAC5C,wEAAoE;AACpE,8EAA0E;AAC1E,wEAAoE;AACpE,oEAAsE;AACtE,4DAA6D;AAE7D,8BAA8B;AAC9B,SAAgB,oBAAoB;IAClC,MAAM,QAAQ,GAAG,oBAAQ,CAAC,WAAW,CAAC;QACpC,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,IAAI;QAChB,qBAAqB,EAAE,IAAI;KAC5B,CAAC,CAAC;IAEH,iBAAiB;IACjB,QAAQ,CAAC,GAAG,CAAC,IAAI,4CAAoB,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,IAAI,sCAAiB,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,IAAI,sCAAiB,EAAE,CAAC,CAAC;IAEtC,0BAA0B;IAC1B,IAAA,wCAAqB,EAAC,CAAC,iCAAiB,CAAC,CAAC,CAAC;IAE3C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { BaseEvent, EventMiddleware } from '../types/event.types';
2
+ export declare class LoggingMiddleware implements EventMiddleware {
3
+ name: string;
4
+ private logger;
5
+ constructor();
6
+ execute(event: BaseEvent, next: () => Promise<void>): Promise<void>;
7
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoggingMiddleware = void 0;
4
+ const logging_1 = require("../../logging");
5
+ class LoggingMiddleware {
6
+ constructor() {
7
+ this.name = 'LoggingMiddleware';
8
+ this.logger = logging_1.LoggerService.getInstance();
9
+ }
10
+ async execute(event, next) {
11
+ const startTime = Date.now();
12
+ this.logger.info('Event processing started', {
13
+ component: 'EventMiddleware',
14
+ middleware: this.name,
15
+ eventType: event.type,
16
+ eventId: event.id,
17
+ correlationId: event.correlationId
18
+ });
19
+ try {
20
+ await next();
21
+ const duration = Date.now() - startTime;
22
+ this.logger.info('Event processing completed', {
23
+ component: 'EventMiddleware',
24
+ middleware: this.name,
25
+ eventType: event.type,
26
+ eventId: event.id,
27
+ duration
28
+ });
29
+ }
30
+ catch (error) {
31
+ const duration = Date.now() - startTime;
32
+ this.logger.error('Event processing failed', error, {
33
+ component: 'EventMiddleware',
34
+ middleware: this.name,
35
+ eventType: event.type,
36
+ eventId: event.id,
37
+ duration
38
+ });
39
+ throw error;
40
+ }
41
+ }
42
+ }
43
+ exports.LoggingMiddleware = LoggingMiddleware;
44
+ //# sourceMappingURL=logging.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.middleware.js","sourceRoot":"","sources":["../../../src/events/middleware/logging.middleware.ts"],"names":[],"mappings":";;;AACA,2CAA8C;AAE9C,MAAa,iBAAiB;IAI5B;QAHA,SAAI,GAAG,mBAAmB,CAAC;QAIzB,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAgB,EAAE,IAAyB;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;YAC3C,SAAS,EAAE,iBAAiB;YAC5B,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAC;YAEb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBAC7C,SAAS,EAAE,iBAAiB;gBAC5B,UAAU,EAAE,IAAI,CAAC,IAAI;gBACrB,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAc,EAAE;gBAC3D,SAAS,EAAE,iBAAiB;gBAC5B,UAAU,EAAE,IAAI,CAAC,IAAI;gBACrB,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,QAAQ;aACT,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA1CD,8CA0CC"}
@@ -0,0 +1,11 @@
1
+ import { BaseEvent, EventMiddleware } from '../types/event.types';
2
+ export declare class MetricsMiddleware implements EventMiddleware {
3
+ name: string;
4
+ private logger;
5
+ private metrics;
6
+ constructor();
7
+ execute(event: BaseEvent, next: () => Promise<void>): Promise<void>;
8
+ private updateMetrics;
9
+ getMetrics(): Record<string, any>;
10
+ resetMetrics(): void;
11
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetricsMiddleware = void 0;
4
+ const logging_1 = require("../../logging");
5
+ class MetricsMiddleware {
6
+ constructor() {
7
+ this.name = 'MetricsMiddleware';
8
+ this.metrics = new Map();
9
+ this.logger = logging_1.LoggerService.getInstance();
10
+ }
11
+ async execute(event, next) {
12
+ const startTime = Date.now();
13
+ let hasError = false;
14
+ try {
15
+ await next();
16
+ }
17
+ catch (error) {
18
+ hasError = true;
19
+ throw error;
20
+ }
21
+ finally {
22
+ const duration = Date.now() - startTime;
23
+ this.updateMetrics(event.type, duration, hasError);
24
+ // Log performance metrics for slow events
25
+ if (duration > 1000) {
26
+ this.logger.warn('Slow event processing detected', {
27
+ component: 'EventMiddleware',
28
+ middleware: this.name,
29
+ eventType: event.type,
30
+ eventId: event.id,
31
+ duration,
32
+ slow: true
33
+ });
34
+ }
35
+ }
36
+ }
37
+ updateMetrics(eventType, duration, hasError) {
38
+ const current = this.metrics.get(eventType) || {
39
+ count: 0,
40
+ totalTime: 0,
41
+ errors: 0,
42
+ lastProcessed: new Date()
43
+ };
44
+ current.count++;
45
+ current.totalTime += duration;
46
+ current.lastProcessed = new Date();
47
+ if (hasError) {
48
+ current.errors++;
49
+ }
50
+ this.metrics.set(eventType, current);
51
+ // Log metrics periodically
52
+ if (current.count % 10 === 0) {
53
+ this.logger.performance({
54
+ operation: `event.${eventType}`,
55
+ duration: current.totalTime / current.count,
56
+ metadata: {
57
+ totalEvents: current.count,
58
+ totalErrors: current.errors,
59
+ errorRate: (current.errors / current.count) * 100,
60
+ averageTime: current.totalTime / current.count
61
+ }
62
+ });
63
+ }
64
+ }
65
+ getMetrics() {
66
+ const result = {};
67
+ for (const [eventType, metrics] of this.metrics.entries()) {
68
+ result[eventType] = {
69
+ count: metrics.count,
70
+ averageTime: metrics.totalTime / metrics.count,
71
+ errors: metrics.errors,
72
+ errorRate: (metrics.errors / metrics.count) * 100,
73
+ lastProcessed: metrics.lastProcessed
74
+ };
75
+ }
76
+ return result;
77
+ }
78
+ resetMetrics() {
79
+ this.metrics.clear();
80
+ this.logger.info('Event metrics reset', {
81
+ component: 'EventMiddleware',
82
+ middleware: this.name
83
+ });
84
+ }
85
+ }
86
+ exports.MetricsMiddleware = MetricsMiddleware;
87
+ //# sourceMappingURL=metrics.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.middleware.js","sourceRoot":"","sources":["../../../src/events/middleware/metrics.middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { BaseEvent, EventMiddleware } from '../types/event.types';
2
+ export declare class ValidationMiddleware implements EventMiddleware {
3
+ name: string;
4
+ private logger;
5
+ constructor();
6
+ execute(event: BaseEvent, next: () => Promise<void>): Promise<void>;
7
+ private validateEvent;
8
+ }