bootifyjs 0.0.3 → 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 (188) 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
@@ -0,0 +1,32 @@
1
+ import { IncomingMessage, ServerResponse } from 'http';
2
+ import { Middleware } from './middleware';
3
+ interface RouteDefinition {
4
+ method: string;
5
+ path: string;
6
+ handler: Function;
7
+ controller: any;
8
+ middlewares: Middleware[];
9
+ originalMethod: string;
10
+ }
11
+ export declare class Router {
12
+ private routes;
13
+ private logger?;
14
+ constructor();
15
+ registerControllers(controllers: any[]): void;
16
+ private registerController;
17
+ private logRegisteredRoutes;
18
+ private logRoutesTable;
19
+ getRoutes(): RouteDefinition[];
20
+ getRoutesSummary(): {
21
+ totalRoutes: number;
22
+ routesByMethod: Record<string, number>;
23
+ routesByController: Record<string, number>;
24
+ };
25
+ getRouteCount(): number;
26
+ handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void>;
27
+ private findRoute;
28
+ private executeRoute;
29
+ private executeMiddlewares;
30
+ private prepareHandlerArgs;
31
+ }
32
+ export {};
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Router = void 0;
4
+ const container_1 = require("./container");
5
+ const errors_1 = require("./errors");
6
+ const utils_1 = require("./utils");
7
+ const validation_1 = require("./validation");
8
+ const logger_service_1 = require("../logging/core/logger.service");
9
+ class Router {
10
+ constructor() {
11
+ this.routes = [];
12
+ try {
13
+ this.logger = logger_service_1.LoggerService.getInstance();
14
+ }
15
+ catch (error) {
16
+ // Logger not initialized yet
17
+ }
18
+ }
19
+ registerControllers(controllers) {
20
+ if (this.logger) {
21
+ this.logger.component('Registering controllers', { count: controllers.length });
22
+ }
23
+ controllers.forEach(Controller => {
24
+ this.registerController(Controller);
25
+ });
26
+ if (this.logger) {
27
+ this.logger.component('Controllers registered successfully', {
28
+ totalRoutes: this.routes.length,
29
+ controllers: controllers.map(c => c.name)
30
+ });
31
+ }
32
+ // Log all registered routes
33
+ this.logRegisteredRoutes();
34
+ }
35
+ registerController(Controller) {
36
+ const prefix = Reflect.getMetadata('controller:prefix', Controller) || '';
37
+ const classMiddlewares = Reflect.getMetadata('middlewares', Controller) || [];
38
+ const instance = container_1.container.resolve(Controller);
39
+ if (this.logger) {
40
+ this.logger.trace(`Registering controller: ${Controller.name}`, { prefix });
41
+ }
42
+ const methodNames = Object.getOwnPropertyNames(Controller.prototype);
43
+ methodNames.forEach(methodName => {
44
+ if (methodName === 'constructor')
45
+ return;
46
+ const method = Reflect.getMetadata('route:method', Controller.prototype, methodName);
47
+ const path = Reflect.getMetadata('route:path', Controller.prototype, methodName);
48
+ const methodMiddlewares = Reflect.getMetadata('middlewares', Controller.prototype, methodName) || [];
49
+ if (method && path !== undefined) {
50
+ const fullPath = `${prefix}${path}`.replace(/\/+/g, '/');
51
+ const allMiddlewares = [...classMiddlewares, ...methodMiddlewares];
52
+ this.routes.push({
53
+ method: method.toUpperCase(),
54
+ path: fullPath,
55
+ handler: Controller.prototype[methodName],
56
+ controller: instance,
57
+ middlewares: allMiddlewares,
58
+ originalMethod: methodName
59
+ });
60
+ if (this.logger) {
61
+ this.logger.trace(`Route registered: ${method.toUpperCase()} ${fullPath}`, {
62
+ controller: Controller.name,
63
+ method: methodName,
64
+ middlewares: allMiddlewares.length
65
+ });
66
+ }
67
+ }
68
+ });
69
+ }
70
+ logRegisteredRoutes() {
71
+ if (!this.logger)
72
+ return;
73
+ // Group routes by controller for better organization
74
+ const routesByController = this.routes.reduce((acc, route) => {
75
+ const controllerName = route.controller.constructor.name;
76
+ if (!acc[controllerName]) {
77
+ acc[controllerName] = [];
78
+ }
79
+ acc[controllerName].push({
80
+ method: route.method,
81
+ path: route.path,
82
+ handler: route.originalMethod,
83
+ middlewares: route.middlewares.length
84
+ });
85
+ return acc;
86
+ }, {});
87
+ // Log summary
88
+ this.logger.info('📋 Registered Routes Summary', {
89
+ totalRoutes: this.routes.length,
90
+ controllers: Object.keys(routesByController).length
91
+ });
92
+ // Log routes by controller
93
+ Object.entries(routesByController).forEach(([controllerName, routes]) => {
94
+ this.logger.info(`🎯 ${controllerName} Routes:`, {
95
+ controller: controllerName,
96
+ routes: routes.map(r => `${r.method} ${r.path} -> ${r.handler}()`),
97
+ count: routes.length
98
+ });
99
+ });
100
+ // Create a formatted table for console output
101
+ this.logRoutesTable();
102
+ }
103
+ logRoutesTable() {
104
+ console.log('\n📋 Available Routes:');
105
+ console.log('─'.repeat(80));
106
+ console.log('Method'.padEnd(8) + 'Path'.padEnd(30) + 'Controller'.padEnd(20) + 'Handler'.padEnd(15) + 'Middlewares');
107
+ console.log('─'.repeat(80));
108
+ // Sort routes by path for better readability
109
+ const sortedRoutes = [...this.routes].sort((a, b) => a.path.localeCompare(b.path));
110
+ sortedRoutes.forEach(route => {
111
+ const method = route.method.padEnd(8);
112
+ const path = route.path.padEnd(30);
113
+ const controller = route.controller.constructor.name.padEnd(20);
114
+ const handler = route.originalMethod.padEnd(15);
115
+ const middlewares = route.middlewares.length.toString();
116
+ console.log(`${method}${path}${controller}${handler}${middlewares}`);
117
+ });
118
+ console.log('─'.repeat(80));
119
+ console.log(`Total: ${this.routes.length} routes registered\n`);
120
+ }
121
+ getRoutes() {
122
+ return [...this.routes];
123
+ }
124
+ getRoutesSummary() {
125
+ const routesByMethod = this.routes.reduce((acc, route) => {
126
+ acc[route.method] = (acc[route.method] || 0) + 1;
127
+ return acc;
128
+ }, {});
129
+ const routesByController = this.routes.reduce((acc, route) => {
130
+ const controllerName = route.controller.constructor.name;
131
+ acc[controllerName] = (acc[controllerName] || 0) + 1;
132
+ return acc;
133
+ }, {});
134
+ return {
135
+ totalRoutes: this.routes.length,
136
+ routesByMethod,
137
+ routesByController
138
+ };
139
+ }
140
+ getRouteCount() {
141
+ return this.routes.length;
142
+ }
143
+ async handleRequest(req, res) {
144
+ const method = req.method?.toUpperCase() || 'GET';
145
+ const url = req.url || '/';
146
+ const pathname = url.split('?')[0];
147
+ const route = this.findRoute(method, pathname);
148
+ if (!route) {
149
+ // Check if response has already been sent (e.g., by middleware)
150
+ if (res.headersSent) {
151
+ return;
152
+ }
153
+ res.writeHead(404, { 'Content-Type': 'application/json' });
154
+ res.end(JSON.stringify({ error: 'Not Found', status: 404 }));
155
+ return;
156
+ }
157
+ try {
158
+ await this.executeRoute(route, req, res);
159
+ }
160
+ catch (error) {
161
+ (0, errors_1.errorHandler)(error, res);
162
+ }
163
+ }
164
+ findRoute(method, pathname) {
165
+ // First try exact match for better performance
166
+ const exactMatches = this.routes.filter(route => route.method === method && route.path === pathname);
167
+ if (exactMatches.length > 0) {
168
+ return { ...exactMatches[0], params: {} };
169
+ }
170
+ // Then try pattern matching
171
+ for (const route of this.routes) {
172
+ if (route.method === method) {
173
+ const { isMatch, params } = (0, utils_1.matchRoute)(route.path, pathname);
174
+ if (isMatch) {
175
+ return { ...route, params };
176
+ }
177
+ }
178
+ }
179
+ return null;
180
+ }
181
+ async executeRoute(route, req, res) {
182
+ // Execute middlewares
183
+ await this.executeMiddlewares(route.middlewares, req, res);
184
+ // Prepare handler arguments
185
+ const args = await this.prepareHandlerArgs(route, req, res);
186
+ // Execute handler
187
+ const result = await route.handler.call(route.controller, ...args);
188
+ // Validate response if schema exists
189
+ const validationMeta = Reflect.getMetadata('validation', route.controller, route.originalMethod) || {};
190
+ let finalResult = result;
191
+ if (validationMeta.response && result !== undefined) {
192
+ finalResult = validation_1.ValidationService.validateResponse(result, validationMeta.response);
193
+ }
194
+ // Send response if not already sent
195
+ if (!res.headersSent) {
196
+ res.writeHead(200, { 'Content-Type': 'application/json' });
197
+ res.end(JSON.stringify(finalResult));
198
+ }
199
+ }
200
+ async executeMiddlewares(middlewares, req, res) {
201
+ let index = 0;
202
+ const next = async () => {
203
+ if (index < middlewares.length) {
204
+ const middleware = middlewares[index++];
205
+ await middleware(req, res, next);
206
+ }
207
+ };
208
+ await next();
209
+ }
210
+ async prepareHandlerArgs(route, req, res) {
211
+ const paramTypes = Reflect.getMetadata('design:paramtypes', route.controller, route.originalMethod) || [];
212
+ const validationMeta = Reflect.getMetadata('validation', route.controller, route.originalMethod) || {};
213
+ const args = [];
214
+ // Parse and validate request data
215
+ let body = null;
216
+ let query = null;
217
+ let params = route.params;
218
+ // Validate params if schema exists
219
+ if (validationMeta.params) {
220
+ params = validation_1.ValidationService.validateParams(route.params, validationMeta.params);
221
+ }
222
+ // Parse and validate query if needed
223
+ if (validationMeta.query) {
224
+ const rawQuery = (0, utils_1.parseQuery)(req);
225
+ query = validation_1.ValidationService.validateQuery(rawQuery, validationMeta.query);
226
+ }
227
+ else {
228
+ query = (0, utils_1.parseQuery)(req);
229
+ }
230
+ // Parse and validate body if needed
231
+ if (validationMeta.body) {
232
+ const rawBody = await (0, utils_1.parseBody)(req);
233
+ body = validation_1.ValidationService.validateBody(rawBody, validationMeta.body);
234
+ }
235
+ for (let i = 0; i < paramTypes.length; i++) {
236
+ const paramMeta = Reflect.getMetadata(`param:${i}`, route.controller.constructor.prototype, route.originalMethod);
237
+ if (paramMeta) {
238
+ switch (paramMeta.type) {
239
+ case 'request':
240
+ args[i] = req;
241
+ break;
242
+ case 'response':
243
+ args[i] = res;
244
+ break;
245
+ case 'body':
246
+ args[i] = body || await (0, utils_1.parseBody)(req);
247
+ break;
248
+ case 'param':
249
+ args[i] = params[paramMeta.name];
250
+ break;
251
+ case 'query':
252
+ args[i] = paramMeta.name ? query[paramMeta.name] : query;
253
+ break;
254
+ default:
255
+ args[i] = undefined;
256
+ }
257
+ }
258
+ else {
259
+ args[i] = undefined;
260
+ }
261
+ }
262
+ return args;
263
+ }
264
+ }
265
+ exports.Router = Router;
266
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { IncomingMessage } from 'http';
2
+ export declare function parseQuery(req: IncomingMessage): Record<string, string>;
3
+ export declare function parseBody(req: IncomingMessage): Promise<any>;
4
+ export declare function matchRoute(routePath: string, requestPath: string): {
5
+ isMatch: boolean;
6
+ params: Record<string, string>;
7
+ };
@@ -0,0 +1,75 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
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;
@@ -0,0 +1,161 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
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
+ }