bootifyjs 0.1.1 → 1.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 (261) hide show
  1. package/dist/api.d.ts +8 -27
  2. package/dist/api.d.ts.map +1 -0
  3. package/dist/api.js +68 -134
  4. package/dist/api.js.map +1 -1
  5. package/dist/cache/bootstrap.d.ts +6 -0
  6. package/dist/cache/bootstrap.d.ts.map +1 -0
  7. package/dist/cache/bootstrap.js +23 -0
  8. package/dist/cache/bootstrap.js.map +1 -0
  9. package/dist/cache/cache.service.d.ts +9 -0
  10. package/dist/cache/cache.service.d.ts.map +1 -0
  11. package/dist/cache/cache.service.js +40 -0
  12. package/dist/cache/cache.service.js.map +1 -0
  13. package/dist/cache/cache.types.d.ts +14 -0
  14. package/dist/cache/cache.types.d.ts.map +1 -0
  15. package/dist/cache/cache.types.js +8 -0
  16. package/dist/cache/cache.types.js.map +1 -0
  17. package/dist/cache/decorators.d.ts +12 -0
  18. package/dist/cache/decorators.d.ts.map +1 -0
  19. package/dist/cache/decorators.js +53 -0
  20. package/dist/cache/decorators.js.map +1 -0
  21. package/dist/cache/in-memory-cache.store.d.ts +8 -0
  22. package/dist/cache/in-memory-cache.store.d.ts.map +1 -0
  23. package/dist/cache/in-memory-cache.store.js +39 -0
  24. package/dist/cache/in-memory-cache.store.js.map +1 -0
  25. package/dist/cache/index.d.ts +5 -0
  26. package/dist/cache/index.d.ts.map +1 -0
  27. package/dist/cache/index.js +21 -0
  28. package/dist/cache/index.js.map +1 -0
  29. package/dist/core/component-registry.d.ts +7 -0
  30. package/dist/core/component-registry.d.ts.map +1 -0
  31. package/dist/core/component-registry.js +9 -0
  32. package/dist/core/component-registry.js.map +1 -0
  33. package/dist/core/decorators.d.ts +38 -22
  34. package/dist/core/decorators.d.ts.map +1 -0
  35. package/dist/core/decorators.js +155 -174
  36. package/dist/core/decorators.js.map +1 -1
  37. package/dist/core/di-container.d.ts +31 -0
  38. package/dist/core/di-container.d.ts.map +1 -0
  39. package/dist/core/di-container.js +219 -0
  40. package/dist/core/di-container.js.map +1 -0
  41. package/dist/core/index.d.ts +5 -0
  42. package/dist/core/index.d.ts.map +1 -0
  43. package/dist/core/index.js +21 -0
  44. package/dist/core/index.js.map +1 -0
  45. package/dist/core/request-context.service.d.ts +24 -0
  46. package/dist/core/request-context.service.d.ts.map +1 -0
  47. package/dist/core/request-context.service.js +52 -0
  48. package/dist/core/request-context.service.js.map +1 -0
  49. package/dist/core/router.d.ts +4 -32
  50. package/dist/core/router.d.ts.map +1 -0
  51. package/dist/core/router.js +81 -258
  52. package/dist/core/router.js.map +1 -1
  53. package/dist/events/bootstrap.d.ts +8 -0
  54. package/dist/events/bootstrap.d.ts.map +1 -0
  55. package/dist/events/bootstrap.js +37 -0
  56. package/dist/events/bootstrap.js.map +1 -0
  57. package/dist/events/decorators.d.ts +16 -0
  58. package/dist/events/decorators.d.ts.map +1 -0
  59. package/dist/events/decorators.js +37 -0
  60. package/dist/events/decorators.js.map +1 -0
  61. package/dist/events/event-bus.service.d.ts +21 -0
  62. package/dist/events/event-bus.service.d.ts.map +1 -0
  63. package/dist/events/event-bus.service.js +78 -0
  64. package/dist/events/event-bus.service.js.map +1 -0
  65. package/dist/events/event.types.d.ts +17 -0
  66. package/dist/events/event.types.d.ts.map +1 -0
  67. package/dist/events/event.types.js.map +1 -0
  68. package/dist/events/index.d.ts +5 -13
  69. package/dist/events/index.d.ts.map +1 -0
  70. package/dist/events/index.js +4 -54
  71. package/dist/events/index.js.map +1 -1
  72. package/dist/examples/controllers/health.controller.d.ts +7 -0
  73. package/dist/examples/controllers/health.controller.d.ts.map +1 -0
  74. package/dist/{events/examples/system.events.js → examples/controllers/health.controller.js} +16 -15
  75. package/dist/examples/controllers/health.controller.js.map +1 -0
  76. package/dist/examples/controllers/todo.controller.d.ts +31 -0
  77. package/dist/examples/controllers/todo.controller.d.ts.map +1 -0
  78. package/dist/examples/controllers/todo.controller.js +102 -0
  79. package/dist/examples/controllers/todo.controller.js.map +1 -0
  80. package/dist/examples/events/TodoEventHandler.d.ts +2 -0
  81. package/dist/examples/events/TodoEventHandler.d.ts.map +1 -0
  82. package/dist/examples/events/TodoEventHandler.js +31 -0
  83. package/dist/examples/events/TodoEventHandler.js.map +1 -0
  84. package/dist/examples/events/todo.events.d.ts +16 -0
  85. package/dist/examples/events/todo.events.d.ts.map +1 -0
  86. package/dist/examples/events/todo.events.js +13 -0
  87. package/dist/examples/events/todo.events.js.map +1 -0
  88. package/dist/examples/index.d.ts +2 -0
  89. package/dist/examples/index.d.ts.map +1 -0
  90. package/dist/examples/index.js +35 -0
  91. package/dist/examples/index.js.map +1 -0
  92. package/dist/examples/repositories/todo.repository.d.ts +20 -0
  93. package/dist/examples/repositories/todo.repository.d.ts.map +1 -0
  94. package/dist/examples/repositories/todo.repository.js +33 -0
  95. package/dist/examples/repositories/todo.repository.js.map +1 -0
  96. package/dist/examples/services/todo.service.d.ts +33 -0
  97. package/dist/examples/services/todo.service.d.ts.map +1 -0
  98. package/dist/examples/services/todo.service.js +80 -0
  99. package/dist/examples/services/todo.service.js.map +1 -0
  100. package/dist/examples/todos/schema.d.ts +54 -0
  101. package/dist/examples/todos/schema.d.ts.map +1 -0
  102. package/dist/examples/todos/schema.js +20 -0
  103. package/dist/examples/todos/schema.js.map +1 -0
  104. package/dist/index.d.ts +7 -17
  105. package/dist/index.d.ts.map +1 -0
  106. package/dist/index.js +20 -95
  107. package/dist/index.js.map +1 -1
  108. package/dist/logging/config/logging.config.d.ts +31 -3
  109. package/dist/logging/config/logging.config.d.ts.map +1 -0
  110. package/dist/logging/config/logging.config.js +43 -93
  111. package/dist/logging/config/logging.config.js.map +1 -1
  112. package/dist/logging/core/decorators.d.ts +16 -0
  113. package/dist/logging/core/decorators.d.ts.map +1 -0
  114. package/dist/logging/core/decorators.js +74 -0
  115. package/dist/logging/core/decorators.js.map +1 -0
  116. package/dist/logging/core/logger.provider.d.ts +4 -0
  117. package/dist/logging/core/logger.provider.d.ts.map +1 -0
  118. package/dist/logging/core/logger.provider.js +68 -0
  119. package/dist/logging/core/logger.provider.js.map +1 -0
  120. package/dist/logging/core/logger.service.d.ts +9 -27
  121. package/dist/logging/core/logger.service.d.ts.map +1 -0
  122. package/dist/logging/core/logger.service.js +34 -164
  123. package/dist/logging/core/logger.service.js.map +1 -1
  124. package/dist/logging/core/{startup-logger.service.d.ts → startup.logger.d.ts} +4 -6
  125. package/dist/logging/core/startup.logger.d.ts.map +1 -0
  126. package/dist/logging/core/{startup-logger.service.js → startup.logger.js} +36 -42
  127. package/dist/logging/core/startup.logger.js.map +1 -0
  128. package/dist/logging/index.d.ts +7 -14
  129. package/dist/logging/index.d.ts.map +1 -0
  130. package/dist/logging/index.js +17 -28
  131. package/dist/logging/index.js.map +1 -1
  132. package/dist/middleware/auth.middleware.d.ts +3 -0
  133. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  134. package/dist/middleware/auth.middleware.js +18 -0
  135. package/dist/middleware/auth.middleware.js.map +1 -0
  136. package/dist/middleware/context.middleware.d.ts +7 -0
  137. package/dist/middleware/context.middleware.d.ts.map +1 -0
  138. package/dist/middleware/context.middleware.js +25 -0
  139. package/dist/middleware/context.middleware.js.map +1 -0
  140. package/dist/middleware/index.d.ts +4 -0
  141. package/dist/middleware/index.d.ts.map +1 -0
  142. package/dist/middleware/index.js +20 -0
  143. package/dist/middleware/index.js.map +1 -0
  144. package/dist/middleware/request-logger.middleware.d.ts +4 -0
  145. package/dist/middleware/request-logger.middleware.d.ts.map +1 -0
  146. package/dist/middleware/request-logger.middleware.js +18 -0
  147. package/dist/middleware/request-logger.middleware.js.map +1 -0
  148. package/package.json +52 -47
  149. package/LICENSE +0 -21
  150. package/README.md +0 -423
  151. package/dist/config/app.config.d.ts +0 -29
  152. package/dist/config/app.config.js +0 -55
  153. package/dist/config/app.config.js.map +0 -1
  154. package/dist/controllers/config.controller.d.ts +0 -16
  155. package/dist/controllers/config.controller.js +0 -66
  156. package/dist/controllers/config.controller.js.map +0 -1
  157. package/dist/controllers/events.controller.d.ts +0 -66
  158. package/dist/controllers/events.controller.js +0 -145
  159. package/dist/controllers/events.controller.js.map +0 -1
  160. package/dist/controllers/health.controller.d.ts +0 -20
  161. package/dist/controllers/health.controller.js +0 -92
  162. package/dist/controllers/health.controller.js.map +0 -1
  163. package/dist/controllers/user.controller.d.ts +0 -13
  164. package/dist/controllers/user.controller.js +0 -209
  165. package/dist/controllers/user.controller.js.map +0 -1
  166. package/dist/core/application.d.ts +0 -21
  167. package/dist/core/application.js +0 -90
  168. package/dist/core/application.js.map +0 -1
  169. package/dist/core/config.d.ts +0 -3
  170. package/dist/core/config.js +0 -78
  171. package/dist/core/config.js.map +0 -1
  172. package/dist/core/container.d.ts +0 -17
  173. package/dist/core/container.js +0 -92
  174. package/dist/core/container.js.map +0 -1
  175. package/dist/core/errors.d.ts +0 -18
  176. package/dist/core/errors.js +0 -74
  177. package/dist/core/errors.js.map +0 -1
  178. package/dist/core/middleware.d.ts +0 -8
  179. package/dist/core/middleware.js +0 -23
  180. package/dist/core/middleware.js.map +0 -1
  181. package/dist/core/openapi.d.ts +0 -80
  182. package/dist/core/openapi.js +0 -189
  183. package/dist/core/openapi.js.map +0 -1
  184. package/dist/core/utils.d.ts +0 -7
  185. package/dist/core/utils.js +0 -75
  186. package/dist/core/utils.js.map +0 -1
  187. package/dist/core/validation.d.ts +0 -15
  188. package/dist/core/validation.js +0 -161
  189. package/dist/core/validation.js.map +0 -1
  190. package/dist/events/core/event-bus.d.ts +0 -26
  191. package/dist/events/core/event-bus.js +0 -253
  192. package/dist/events/core/event-bus.js.map +0 -1
  193. package/dist/events/core/event-registry.d.ts +0 -31
  194. package/dist/events/core/event-registry.js +0 -170
  195. package/dist/events/core/event-registry.js.map +0 -1
  196. package/dist/events/decorators/event.decorators.d.ts +0 -11
  197. package/dist/events/decorators/event.decorators.js +0 -123
  198. package/dist/events/decorators/event.decorators.js.map +0 -1
  199. package/dist/events/examples/system.events.d.ts +0 -15
  200. package/dist/events/examples/system.events.js.map +0 -1
  201. package/dist/events/examples/user.events.d.ts +0 -68
  202. package/dist/events/examples/user.events.js +0 -73
  203. package/dist/events/examples/user.events.js.map +0 -1
  204. package/dist/events/examples/user.handlers.d.ts +0 -20
  205. package/dist/events/examples/user.handlers.js +0 -157
  206. package/dist/events/examples/user.handlers.js.map +0 -1
  207. package/dist/events/middleware/logging.middleware.d.ts +0 -7
  208. package/dist/events/middleware/logging.middleware.js +0 -44
  209. package/dist/events/middleware/logging.middleware.js.map +0 -1
  210. package/dist/events/middleware/metrics.middleware.d.ts +0 -11
  211. package/dist/events/middleware/metrics.middleware.js +0 -87
  212. package/dist/events/middleware/metrics.middleware.js.map +0 -1
  213. package/dist/events/middleware/validation.middleware.d.ts +0 -8
  214. package/dist/events/middleware/validation.middleware.js +0 -63
  215. package/dist/events/middleware/validation.middleware.js.map +0 -1
  216. package/dist/events/store/memory-event-store.d.ts +0 -21
  217. package/dist/events/store/memory-event-store.js +0 -81
  218. package/dist/events/store/memory-event-store.js.map +0 -1
  219. package/dist/events/types/event.types.d.ts +0 -57
  220. package/dist/events/types/event.types.js.map +0 -1
  221. package/dist/examples/basic-api.d.ts +0 -1
  222. package/dist/examples/basic-api.js +0 -120
  223. package/dist/examples/basic-api.js.map +0 -1
  224. package/dist/logging/core/log-context.service.d.ts +0 -11
  225. package/dist/logging/core/log-context.service.js +0 -40
  226. package/dist/logging/core/log-context.service.js.map +0 -1
  227. package/dist/logging/core/startup-logger.service.js.map +0 -1
  228. package/dist/logging/decorators/log.decorator.d.ts +0 -11
  229. package/dist/logging/decorators/log.decorator.js +0 -80
  230. package/dist/logging/decorators/log.decorator.js.map +0 -1
  231. package/dist/logging/middleware/context.middleware.d.ts +0 -2
  232. package/dist/logging/middleware/context.middleware.js +0 -29
  233. package/dist/logging/middleware/context.middleware.js.map +0 -1
  234. package/dist/logging/middleware/request-logging.middleware.d.ts +0 -3
  235. package/dist/logging/middleware/request-logging.middleware.js +0 -78
  236. package/dist/logging/middleware/request-logging.middleware.js.map +0 -1
  237. package/dist/logging/types/logging.types.d.ts +0 -79
  238. package/dist/logging/types/logging.types.js +0 -3
  239. package/dist/logging/types/logging.types.js.map +0 -1
  240. package/dist/middlewares/auth.middleware.d.ts +0 -2
  241. package/dist/middlewares/auth.middleware.js +0 -20
  242. package/dist/middlewares/auth.middleware.js.map +0 -1
  243. package/dist/middlewares/cors.middleware.d.ts +0 -2
  244. package/dist/middlewares/cors.middleware.js +0 -16
  245. package/dist/middlewares/cors.middleware.js.map +0 -1
  246. package/dist/middlewares/swagger.middleware.d.ts +0 -6
  247. package/dist/middlewares/swagger.middleware.js +0 -84
  248. package/dist/middlewares/swagger.middleware.js.map +0 -1
  249. package/dist/repositories/user.repository.d.ts +0 -16
  250. package/dist/repositories/user.repository.js +0 -110
  251. package/dist/repositories/user.repository.js.map +0 -1
  252. package/dist/schemas/user.schemas.d.ts +0 -214
  253. package/dist/schemas/user.schemas.js +0 -71
  254. package/dist/schemas/user.schemas.js.map +0 -1
  255. package/dist/services/config-demo.service.d.ts +0 -10
  256. package/dist/services/config-demo.service.js +0 -88
  257. package/dist/services/config-demo.service.js.map +0 -1
  258. package/dist/services/user.service.d.ts +0 -21
  259. package/dist/services/user.service.js +0 -201
  260. package/dist/services/user.service.js.map +0 -1
  261. /package/dist/events/{types/event.types.js → event.types.js} +0 -0
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseQuery = parseQuery;
4
- exports.parseBody = parseBody;
5
- exports.matchRoute = matchRoute;
6
- const url_1 = require("url");
7
- function parseQuery(req) {
8
- try {
9
- const url = new url_1.URL(req.url || '', `http://${req.headers.host}`);
10
- const params = {};
11
- url.searchParams.forEach((value, key) => {
12
- params[key] = value;
13
- });
14
- return params;
15
- }
16
- catch {
17
- return {};
18
- }
19
- }
20
- function parseBody(req) {
21
- return new Promise((resolve, reject) => {
22
- let body = '';
23
- req.on('data', (chunk) => {
24
- body += chunk.toString();
25
- });
26
- req.on('end', () => {
27
- try {
28
- if (body.trim() === '') {
29
- resolve(null);
30
- return;
31
- }
32
- const contentType = req.headers['content-type'] || '';
33
- if (contentType.includes('application/json')) {
34
- resolve(JSON.parse(body));
35
- }
36
- else if (contentType.includes('application/x-www-form-urlencoded')) {
37
- const params = new URLSearchParams(body);
38
- const result = {};
39
- params.forEach((value, key) => {
40
- result[key] = value;
41
- });
42
- resolve(result);
43
- }
44
- else {
45
- resolve(body);
46
- }
47
- }
48
- catch (error) {
49
- reject(error);
50
- }
51
- });
52
- req.on('error', reject);
53
- });
54
- }
55
- function matchRoute(routePath, requestPath) {
56
- const routeParts = routePath.split('/').filter(Boolean);
57
- const requestParts = requestPath.split('/').filter(Boolean);
58
- if (routeParts.length !== requestParts.length) {
59
- return { isMatch: false, params: {} };
60
- }
61
- const params = {};
62
- for (let i = 0; i < routeParts.length; i++) {
63
- const routePart = routeParts[i];
64
- const requestPart = requestParts[i];
65
- if (routePart.startsWith(':')) {
66
- const paramName = routePart.substring(1);
67
- params[paramName] = requestPart;
68
- }
69
- else if (routePart !== requestPart) {
70
- return { isMatch: false, params: {} };
71
- }
72
- }
73
- return { isMatch: true, params };
74
- }
75
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { z } from 'zod';
2
- export type ZodSchema = z.ZodSchema<any>;
3
- export interface ValidationMetadata {
4
- body?: ZodSchema;
5
- query?: ZodSchema;
6
- params?: ZodSchema;
7
- response?: ZodSchema;
8
- }
9
- export declare class ValidationService {
10
- static validateBody(data: any, schema: ZodSchema): any;
11
- static validateQuery(data: any, schema: ZodSchema): any;
12
- static validateParams(data: any, schema: ZodSchema): any;
13
- static validateResponse(data: any, schema: ZodSchema): any;
14
- }
15
- export declare function zodToOpenAPI(schema: ZodSchema): any;
@@ -1,161 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ValidationService = void 0;
4
- exports.zodToOpenAPI = zodToOpenAPI;
5
- const zod_1 = require("zod");
6
- const errors_1 = require("./errors");
7
- class ValidationService {
8
- static validateBody(data, schema) {
9
- try {
10
- return schema.parse(data);
11
- }
12
- catch (error) {
13
- if (error instanceof zod_1.z.ZodError) {
14
- const messages = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
15
- throw new errors_1.ValidationError(`Body validation failed: ${messages.join(', ')}`);
16
- }
17
- throw error;
18
- }
19
- }
20
- static validateQuery(data, schema) {
21
- try {
22
- return schema.parse(data);
23
- }
24
- catch (error) {
25
- if (error instanceof zod_1.z.ZodError) {
26
- const messages = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
27
- throw new errors_1.ValidationError(`Query validation failed: ${messages.join(', ')}`);
28
- }
29
- throw error;
30
- }
31
- }
32
- static validateParams(data, schema) {
33
- try {
34
- return schema.parse(data);
35
- }
36
- catch (error) {
37
- if (error instanceof zod_1.z.ZodError) {
38
- const messages = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
39
- throw new errors_1.ValidationError(`Params validation failed: ${messages.join(', ')}`);
40
- }
41
- throw error;
42
- }
43
- }
44
- static validateResponse(data, schema) {
45
- try {
46
- return schema.parse(data);
47
- }
48
- catch (error) {
49
- if (error instanceof zod_1.z.ZodError) {
50
- console.warn('Response validation failed:', error.errors);
51
- // Don't throw for response validation, just log warning
52
- return data;
53
- }
54
- return data;
55
- }
56
- }
57
- }
58
- exports.ValidationService = ValidationService;
59
- // Convert Zod schema to OpenAPI schema
60
- function zodToOpenAPI(schema) {
61
- const zodDef = schema._def;
62
- // Handle ZodEffects (transformations) first
63
- if (schema instanceof zod_1.z.ZodEffects) {
64
- return zodToOpenAPI(schema._def.schema);
65
- }
66
- // Handle optional and nullable early to catch nested transformations
67
- if (schema instanceof zod_1.z.ZodOptional) {
68
- return zodToOpenAPI(schema._def.innerType);
69
- }
70
- if (schema instanceof zod_1.z.ZodNullable) {
71
- const baseSchema = zodToOpenAPI(schema._def.innerType);
72
- return {
73
- ...baseSchema,
74
- nullable: true
75
- };
76
- }
77
- // Use type casting to access Zod internal properties
78
- if (schema instanceof zod_1.z.ZodString) {
79
- const stringSchema = { type: 'string' };
80
- // Handle string validations
81
- if (zodDef.checks) {
82
- zodDef.checks.forEach((check) => {
83
- switch (check.kind) {
84
- case 'min':
85
- stringSchema.minLength = check.value;
86
- break;
87
- case 'max':
88
- stringSchema.maxLength = check.value;
89
- break;
90
- case 'email':
91
- stringSchema.format = 'email';
92
- break;
93
- case 'url':
94
- stringSchema.format = 'uri';
95
- break;
96
- case 'uuid':
97
- stringSchema.format = 'uuid';
98
- break;
99
- }
100
- });
101
- }
102
- return stringSchema;
103
- }
104
- if (schema instanceof zod_1.z.ZodNumber) {
105
- return { type: 'number' };
106
- }
107
- if (schema instanceof zod_1.z.ZodBoolean) {
108
- return { type: 'boolean' };
109
- }
110
- if (schema instanceof zod_1.z.ZodDate) {
111
- return { type: 'string', format: 'date-time' };
112
- }
113
- if (schema instanceof zod_1.z.ZodArray) {
114
- return {
115
- type: 'array',
116
- items: zodToOpenAPI(schema._def.type)
117
- };
118
- }
119
- if (schema instanceof zod_1.z.ZodObject) {
120
- const shape = schema._def.shape();
121
- const properties = {};
122
- const required = [];
123
- Object.entries(shape).forEach(([key, value]) => {
124
- properties[key] = zodToOpenAPI(value);
125
- if (!(value instanceof zod_1.z.ZodOptional)) {
126
- required.push(key);
127
- }
128
- });
129
- return {
130
- type: 'object',
131
- properties,
132
- required: required.length > 0 ? required : undefined
133
- };
134
- }
135
- if (schema instanceof zod_1.z.ZodEnum) {
136
- return {
137
- type: 'string',
138
- enum: schema._def.values
139
- };
140
- }
141
- if (schema instanceof zod_1.z.ZodLiteral) {
142
- const value = schema._def.value;
143
- return {
144
- type: typeof value,
145
- enum: [value]
146
- };
147
- }
148
- if (schema instanceof zod_1.z.ZodUnion) {
149
- return {
150
- oneOf: schema._def.options.map((option) => zodToOpenAPI(option))
151
- };
152
- }
153
- // Handle transformed schemas (like string to number conversion)
154
- if (schema._def?.innerType) {
155
- return zodToOpenAPI(schema._def.innerType);
156
- }
157
- // Fallback for unsupported types
158
- console.warn(`Unsupported Zod type: ${schema.constructor.name}`);
159
- return { type: 'object' };
160
- }
161
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import { BaseEvent, EventBusOptions, EventMiddleware, EventMetrics } from '../types/event.types';
2
- import { EventRegistry } from './event-registry';
3
- export declare class EventBus {
4
- private static instance;
5
- private registry;
6
- private middlewares;
7
- private metrics;
8
- private options;
9
- private logger?;
10
- private processingTimes;
11
- private constructor();
12
- static getInstance(options?: EventBusOptions): EventBus;
13
- use(middleware: EventMiddleware): void;
14
- emit<T extends BaseEvent>(eventType: string, eventData: Partial<T>): Promise<void>;
15
- private processEvent;
16
- private executeHandler;
17
- private executeMiddlewares;
18
- private sendToDeadLetterQueue;
19
- private updateMetrics;
20
- getMetrics(): EventMetrics;
21
- getRegistry(): EventRegistry;
22
- private generateEventId;
23
- private delay;
24
- isHealthy(): boolean;
25
- shutdown(): Promise<void>;
26
- }
@@ -1,253 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EventBus = void 0;
4
- const event_registry_1 = require("./event-registry");
5
- const logging_1 = require("../../logging");
6
- const crypto_1 = require("crypto");
7
- class EventBus {
8
- constructor(options = {}) {
9
- this.middlewares = [];
10
- this.processingTimes = [];
11
- this.registry = event_registry_1.EventRegistry.getInstance();
12
- this.options = {
13
- enableLogging: true,
14
- enableMetrics: true,
15
- maxRetries: 3,
16
- retryDelay: 1000,
17
- enableDeadLetterQueue: true,
18
- ...options
19
- };
20
- this.metrics = {
21
- totalEvents: 0,
22
- eventsByType: {},
23
- failedEvents: 0,
24
- averageProcessingTime: 0
25
- };
26
- try {
27
- this.logger = logging_1.LoggerService.getInstance();
28
- }
29
- catch (error) {
30
- // Logger not initialized yet
31
- }
32
- }
33
- static getInstance(options) {
34
- if (!EventBus.instance) {
35
- EventBus.instance = new EventBus(options);
36
- }
37
- return EventBus.instance;
38
- }
39
- // Add middleware
40
- use(middleware) {
41
- this.middlewares.push(middleware);
42
- if (this.logger && this.options.enableLogging) {
43
- this.logger.debug('Event middleware added', {
44
- component: 'EventBus',
45
- middleware: middleware.name,
46
- totalMiddlewares: this.middlewares.length
47
- });
48
- }
49
- }
50
- // Emit event
51
- async emit(eventType, eventData) {
52
- const startTime = Date.now();
53
- // Create complete event
54
- const event = {
55
- id: this.generateEventId(),
56
- type: eventType,
57
- timestamp: new Date(),
58
- version: 1,
59
- correlationId: eventData.correlationId,
60
- causationId: eventData.causationId,
61
- metadata: eventData.metadata,
62
- ...eventData
63
- };
64
- if (this.logger && this.options.enableLogging) {
65
- this.logger.info('Event emitted', {
66
- component: 'EventBus',
67
- eventType,
68
- eventId: event.id,
69
- correlationId: event.correlationId
70
- });
71
- }
72
- try {
73
- // Execute middlewares and handlers
74
- await this.executeMiddlewares(event, async () => {
75
- await this.processEvent(event);
76
- });
77
- // Update metrics
78
- if (this.options.enableMetrics) {
79
- this.updateMetrics(event, Date.now() - startTime, false);
80
- }
81
- }
82
- catch (error) {
83
- if (this.logger) {
84
- this.logger.error('Event processing failed', error, {
85
- component: 'EventBus',
86
- eventType,
87
- eventId: event.id
88
- });
89
- }
90
- // Update failure metrics
91
- if (this.options.enableMetrics) {
92
- this.updateMetrics(event, Date.now() - startTime, true);
93
- }
94
- throw error;
95
- }
96
- }
97
- // Process event with handlers
98
- async processEvent(event) {
99
- const handlers = this.registry.getHandlers(event.type);
100
- if (handlers.length === 0) {
101
- if (this.logger && this.options.enableLogging) {
102
- this.logger.warn('No handlers found for event', {
103
- component: 'EventBus',
104
- eventType: event.type,
105
- eventId: event.id
106
- });
107
- }
108
- return;
109
- }
110
- // Execute handlers in parallel (can be changed to sequential if needed)
111
- const handlerPromises = handlers.map(subscription => this.executeHandler(subscription.handler, event, subscription.id));
112
- await Promise.all(handlerPromises);
113
- }
114
- // Execute single handler with retry logic
115
- async executeHandler(handler, event, subscriptionId, attempt = 1) {
116
- try {
117
- await handler.handle(event);
118
- if (this.logger && this.options.enableLogging) {
119
- this.logger.debug('Event handler executed successfully', {
120
- component: 'EventBus',
121
- eventType: event.type,
122
- eventId: event.id,
123
- subscriptionId,
124
- attempt
125
- });
126
- }
127
- }
128
- catch (error) {
129
- if (this.logger) {
130
- this.logger.error('Event handler failed', error, {
131
- component: 'EventBus',
132
- eventType: event.type,
133
- eventId: event.id,
134
- subscriptionId,
135
- attempt
136
- });
137
- }
138
- // Retry logic
139
- if (attempt < this.options.maxRetries) {
140
- if (this.logger) {
141
- this.logger.info('Retrying event handler', {
142
- component: 'EventBus',
143
- eventType: event.type,
144
- eventId: event.id,
145
- subscriptionId,
146
- attempt: attempt + 1,
147
- maxRetries: this.options.maxRetries
148
- });
149
- }
150
- // Wait before retry
151
- await this.delay(this.options.retryDelay * attempt);
152
- return this.executeHandler(handler, event, subscriptionId, attempt + 1);
153
- }
154
- // Send to dead letter queue if enabled
155
- if (this.options.enableDeadLetterQueue) {
156
- await this.sendToDeadLetterQueue(event, error, subscriptionId);
157
- }
158
- throw error;
159
- }
160
- }
161
- // Execute middlewares
162
- async executeMiddlewares(event, next) {
163
- let index = 0;
164
- const executeNext = async () => {
165
- if (index < this.middlewares.length) {
166
- const middleware = this.middlewares[index++];
167
- await middleware.execute(event, executeNext);
168
- }
169
- else {
170
- await next();
171
- }
172
- };
173
- await executeNext();
174
- }
175
- // Send to dead letter queue
176
- async sendToDeadLetterQueue(event, error, subscriptionId) {
177
- if (this.logger) {
178
- this.logger.error('Event sent to dead letter queue', error, {
179
- component: 'EventBus',
180
- eventType: event.type,
181
- eventId: event.id,
182
- subscriptionId,
183
- deadLetterQueue: true
184
- });
185
- }
186
- // Emit dead letter event
187
- try {
188
- await this.emit('system.event.dead_letter', {
189
- id: event.id,
190
- type: event.type,
191
- failedEventData: JSON.stringify(event),
192
- error: error.message,
193
- subscriptionId,
194
- timestamp: new Date()
195
- });
196
- }
197
- catch (dlqError) {
198
- if (this.logger) {
199
- this.logger.error('Failed to send event to dead letter queue', dlqError, {
200
- component: 'EventBus',
201
- originalEventId: event.id
202
- });
203
- }
204
- }
205
- }
206
- // Update metrics
207
- updateMetrics(event, processingTime, failed) {
208
- this.metrics.totalEvents++;
209
- this.metrics.eventsByType[event.type] = (this.metrics.eventsByType[event.type] || 0) + 1;
210
- this.metrics.lastEventTimestamp = event.timestamp;
211
- if (failed) {
212
- this.metrics.failedEvents++;
213
- }
214
- // Update processing time
215
- this.processingTimes.push(processingTime);
216
- if (this.processingTimes.length > 100) {
217
- this.processingTimes.shift(); // Keep only last 100 measurements
218
- }
219
- this.metrics.averageProcessingTime =
220
- this.processingTimes.reduce((sum, time) => sum + time, 0) / this.processingTimes.length;
221
- }
222
- // Get metrics
223
- getMetrics() {
224
- return { ...this.metrics };
225
- }
226
- // Get registry
227
- getRegistry() {
228
- return this.registry;
229
- }
230
- // Utility methods
231
- generateEventId() {
232
- return `evt_${Date.now()}_${(0, crypto_1.randomBytes)(8).toString('hex')}`;
233
- }
234
- delay(ms) {
235
- return new Promise(resolve => setTimeout(resolve, ms));
236
- }
237
- // Health check
238
- isHealthy() {
239
- const stats = this.registry.getStatistics();
240
- return stats.activeSubscriptions > 0;
241
- }
242
- // Shutdown gracefully
243
- async shutdown() {
244
- if (this.logger) {
245
- this.logger.info('Event bus shutting down', {
246
- component: 'EventBus',
247
- metrics: this.metrics
248
- });
249
- }
250
- }
251
- }
252
- exports.EventBus = EventBus;
253
- //# sourceMappingURL=event-bus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/events/core/event-bus.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import 'reflect-metadata';
2
- import { BaseEvent, EventHandler, EventSubscription } from '../types/event.types';
3
- export declare class EventRegistry {
4
- private static instance;
5
- private subscriptions;
6
- private eventTypes;
7
- private logger?;
8
- private constructor();
9
- static getInstance(): EventRegistry;
10
- registerEventType<T extends BaseEvent>(eventType: string, eventClass: new () => T): void;
11
- registerHandler<T extends BaseEvent>(eventType: string, handler: EventHandler<T>, options?: {
12
- priority?: number;
13
- metadata?: Record<string, any>;
14
- }): string;
15
- getHandlers(eventType: string): EventSubscription[];
16
- getRegisteredEventTypes(): string[];
17
- getAllSubscriptions(): Map<string, EventSubscription[]>;
18
- unregisterHandler(subscriptionId: string): boolean;
19
- deactivateHandler(subscriptionId: string): boolean;
20
- activateHandler(subscriptionId: string): boolean;
21
- isValidEventType(eventType: string): boolean;
22
- createEventInstance<T extends BaseEvent>(eventType: string): T | null;
23
- getStatistics(): {
24
- totalEventTypes: number;
25
- totalSubscriptions: number;
26
- subscriptionsByType: Record<string, number>;
27
- activeSubscriptions: number;
28
- };
29
- private generateSubscriptionId;
30
- clear(): void;
31
- }