bootifyjs 0.1.0 → 1.0.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 -173
  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,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Application = void 0;
4
- const http_1 = require("http");
5
- const router_1 = require("./router");
6
- const middleware_1 = require("./middleware");
7
- const errors_1 = require("./errors");
8
- const logging_1 = require("../logging");
9
- class Application {
10
- constructor(config) {
11
- this.config = {
12
- port: 3000,
13
- hostname: 'localhost',
14
- ...config
15
- };
16
- // Initialize logging if available
17
- try {
18
- this.logger = logging_1.LoggerService.getInstance();
19
- this.startupLogger = logging_1.StartupLoggerService.getInstance(this.logger);
20
- this.startupLogger.logComponentStart('Application', {
21
- port: this.config.port,
22
- hostname: this.config.hostname,
23
- controllers: config.controllers.length,
24
- middlewares: config.middlewares?.length || 0
25
- });
26
- }
27
- catch (error) {
28
- // Logging not configured yet, continue without it
29
- }
30
- this.router = new router_1.Router();
31
- this.globalMiddleware = new middleware_1.MiddlewareStack();
32
- // Register global middlewares
33
- if (config.middlewares) {
34
- config.middlewares.forEach(middleware => {
35
- this.globalMiddleware.use(middleware);
36
- });
37
- }
38
- // Register controllers
39
- this.router.registerControllers(config.controllers);
40
- if (this.startupLogger) {
41
- this.startupLogger.logComponentComplete('Router', {
42
- routesRegistered: this.router.getRouteCount()
43
- });
44
- }
45
- // Create server
46
- this.server = (0, http_1.createServer)(this.handleRequest.bind(this));
47
- if (this.startupLogger) {
48
- this.startupLogger.logComponentComplete('HTTP Server');
49
- }
50
- }
51
- async handleRequest(req, res) {
52
- try {
53
- // Execute global middlewares
54
- await this.globalMiddleware.execute(req, res);
55
- // Handle route
56
- await this.router.handleRequest(req, res);
57
- }
58
- catch (error) {
59
- (0, errors_1.errorHandler)(error, res);
60
- }
61
- }
62
- start() {
63
- return new Promise((resolve) => {
64
- this.server.listen(this.config.port, this.config.hostname, () => {
65
- if (this.logger && this.startupLogger) {
66
- this.startupLogger.logComponentComplete('Application');
67
- this.startupLogger.logStartupComplete();
68
- }
69
- console.log(`🚀 Server running at http://${this.config.hostname}:${this.config.port}`);
70
- resolve();
71
- });
72
- });
73
- }
74
- stop() {
75
- return new Promise((resolve) => {
76
- this.server.close(() => {
77
- if (this.logger) {
78
- this.logger.info('Server stopped gracefully');
79
- }
80
- console.log('🛑 Server stopped');
81
- resolve();
82
- });
83
- });
84
- }
85
- getServer() {
86
- return this.server;
87
- }
88
- }
89
- exports.Application = Application;
90
- //# sourceMappingURL=application.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":";;;AAAA,+BAA6E;AAC7E,qCAAkC;AAClC,6CAA2D;AAC3D,qCAAwC;AACxC,wCAAiE;AASjE,MAAa,WAAW;IAQtB,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,WAAW;YACrB,GAAG,MAAM;SACV,CAAC;QAEF,kCAAkC;QAClC,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,8BAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE;gBAClD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC9B,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;gBACtC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kDAAkD;QACpD,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAAe,EAAE,CAAC;QAE9C,8BAA8B;QAC9B,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBACtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,QAAQ,EAAE;gBAChD,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;aAC9C,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,MAAM,GAAG,IAAA,mBAAY,EAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1D,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,GAAoB,EAAE,GAAmB;QACnE,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAE9C,eAAe;YACf,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,qBAAY,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAC9D,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACtC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;oBACvD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;gBAC1C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvF,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBACjC,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAhGD,kCAgGC"}
@@ -1,3 +0,0 @@
1
- import 'reflect-metadata';
2
- export declare function Config(prefix?: string): ClassDecorator;
3
- export declare function getConfigInstance<T>(configClass: new () => T): T;
@@ -1,78 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Config = Config;
4
- exports.getConfigInstance = getConfigInstance;
5
- require("reflect-metadata");
6
- // Class decorator to enable automatic configuration
7
- function Config(prefix = 'BOOTIFY') {
8
- return function (target) {
9
- // Store the prefix for later use
10
- Reflect.defineMetadata('config:prefix', prefix, target);
11
- // Create a singleton instance
12
- const instance = new target();
13
- // Load configuration values automatically
14
- loadConfigurationFromEnv(instance, prefix);
15
- // Store the singleton instance
16
- Reflect.defineMetadata('config:instance', instance, target);
17
- return target;
18
- };
19
- }
20
- function loadConfigurationFromEnv(instance, prefix) {
21
- // Get all environment variables with the prefix
22
- const envVars = Object.keys(process.env)
23
- .filter(key => key.startsWith(`${prefix}_`))
24
- .reduce((acc, key) => {
25
- acc[key] = process.env[key];
26
- return acc;
27
- }, {});
28
- // Process each environment variable
29
- Object.entries(envVars).forEach(([envKey, envValue]) => {
30
- if (envValue === undefined)
31
- return;
32
- // Convert environment key to property path
33
- // BOOTIFY_SERVER_PORT -> server.port
34
- // BOOTIFY_SERVICE_NAME -> SERVICE_NAME
35
- const propertyPath = envKey
36
- .replace(`${prefix}_`, '')
37
- .toLowerCase()
38
- .split('_')
39
- .join('.');
40
- // Convert value based on content
41
- let value = envValue;
42
- // Try to convert to number
43
- const numValue = Number(envValue);
44
- if (!isNaN(numValue) && envValue.trim() !== '') {
45
- value = numValue;
46
- }
47
- // Try to convert to boolean
48
- else if (envValue.toLowerCase() === 'true' || envValue.toLowerCase() === 'false') {
49
- value = envValue.toLowerCase() === 'true';
50
- }
51
- // Set nested property
52
- setNestedProperty(instance, propertyPath, value);
53
- });
54
- }
55
- function setNestedProperty(obj, path, value) {
56
- const keys = path.split('.');
57
- let current = obj;
58
- // Navigate/create nested structure
59
- for (let i = 0; i < keys.length - 1; i++) {
60
- const key = keys[i];
61
- if (!(key in current) || typeof current[key] !== 'object' || current[key] === null) {
62
- current[key] = {};
63
- }
64
- current = current[key];
65
- }
66
- // Set the final value
67
- const finalKey = keys[keys.length - 1];
68
- current[finalKey] = value;
69
- }
70
- // Helper function to get configuration instance
71
- function getConfigInstance(configClass) {
72
- const instance = Reflect.getMetadata('config:instance', configClass);
73
- if (!instance) {
74
- throw new Error(`Configuration class ${configClass.name} is not decorated with @Config`);
75
- }
76
- return instance;
77
- }
78
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import 'reflect-metadata';
2
- export type Constructor<T = any> = new (...args: any[]) => T;
3
- export declare enum Scope {
4
- SINGLETON = "singleton",
5
- TRANSIENT = "transient"
6
- }
7
- export declare class Container {
8
- private services;
9
- private resolving;
10
- private logger?;
11
- constructor();
12
- register<T>(token: Constructor<T>, scope?: Scope): void;
13
- resolve<T>(token: Constructor<T>): T;
14
- isRegistered<T>(token: Constructor<T>): boolean;
15
- clear(): void;
16
- }
17
- export declare const container: Container;
@@ -1,92 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.container = exports.Container = exports.Scope = void 0;
4
- require("reflect-metadata");
5
- const logging_1 = require("../logging");
6
- const config_1 = require("./config");
7
- var Scope;
8
- (function (Scope) {
9
- Scope["SINGLETON"] = "singleton";
10
- Scope["TRANSIENT"] = "transient";
11
- })(Scope || (exports.Scope = Scope = {}));
12
- class Container {
13
- constructor() {
14
- this.services = new Map();
15
- this.resolving = new Set();
16
- try {
17
- this.logger = logging_1.LoggerService.getInstance();
18
- }
19
- catch (error) {
20
- // Logger not initialized yet
21
- }
22
- }
23
- register(token, scope = Scope.SINGLETON) {
24
- this.services.set(token, { token, scope });
25
- if (this.logger) {
26
- this.logger.trace(`Service registered: ${token.name}`, { scope });
27
- }
28
- }
29
- resolve(token) {
30
- const serviceDefinition = this.services.get(token);
31
- if (!serviceDefinition) {
32
- if (this.logger) {
33
- this.logger.error(`Service not registered: ${token.name}`);
34
- }
35
- throw new Error(`Service ${token.name} is not registered`);
36
- }
37
- // Check for circular dependencies
38
- if (this.resolving.has(token)) {
39
- if (this.logger) {
40
- this.logger.error(`Circular dependency detected: ${token.name}`);
41
- }
42
- throw new Error(`Circular dependency detected for ${token.name}`);
43
- }
44
- // Return existing singleton instance
45
- if (serviceDefinition.scope === Scope.SINGLETON && serviceDefinition.instance) {
46
- if (this.logger) {
47
- this.logger.trace(`Returning existing singleton: ${token.name}`);
48
- }
49
- return serviceDefinition.instance;
50
- }
51
- this.resolving.add(token);
52
- try {
53
- const dependencies = Reflect.getMetadata('design:paramtypes', token) || [];
54
- const configDependencies = Reflect.getMetadata('inject:configs', token) || [];
55
- if (this.logger && dependencies.length > 0) {
56
- this.logger.trace(`Resolving dependencies for ${token.name}`, {
57
- dependencies: dependencies.map((dep) => dep.name)
58
- });
59
- }
60
- const args = dependencies.map((dep, index) => {
61
- // Check if this parameter should be injected with configuration
62
- const configClass = configDependencies[index];
63
- if (configClass) {
64
- return (0, config_1.getConfigInstance)(configClass);
65
- }
66
- return this.resolve(dep);
67
- });
68
- const instance = new token(...args);
69
- // Store singleton instance
70
- if (serviceDefinition.scope === Scope.SINGLETON) {
71
- serviceDefinition.instance = instance;
72
- }
73
- if (this.logger) {
74
- this.logger.trace(`Service resolved successfully: ${token.name}`);
75
- }
76
- return instance;
77
- }
78
- finally {
79
- this.resolving.delete(token);
80
- }
81
- }
82
- isRegistered(token) {
83
- return this.services.has(token);
84
- }
85
- clear() {
86
- this.services.clear();
87
- this.resolving.clear();
88
- }
89
- }
90
- exports.Container = Container;
91
- exports.container = new Container();
92
- //# sourceMappingURL=container.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/core/container.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,wCAA2C;AAC3C,qCAA6C;AAI7C,IAAY,KAGX;AAHD,WAAY,KAAK;IACf,gCAAuB,CAAA;IACvB,gCAAuB,CAAA;AACzB,CAAC,EAHW,KAAK,qBAAL,KAAK,QAGhB;AAQD,MAAa,SAAS;IAKpB;QAJQ,aAAQ,GAAG,IAAI,GAAG,EAAkC,CAAC;QACrD,cAAS,GAAG,IAAI,GAAG,EAAe,CAAC;QAIzC,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,WAAW,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED,QAAQ,CAAI,KAAqB,EAAE,QAAe,KAAK,CAAC,SAAS;QAC/D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,CAAI,KAAqB;QAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAC7D,CAAC;QAED,kCAAkC;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,qCAAqC;QACrC,IAAI,iBAAiB,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAC9E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,iBAAiB,CAAC,QAAQ,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC3E,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAE9E,IAAI,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,KAAK,CAAC,IAAI,EAAE,EAAE;oBAC5D,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;iBAC/D,CAAC,CAAC;YACL,CAAC;YAED,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAgB,EAAE,KAAa,EAAE,EAAE;gBAChE,gEAAgE;gBAChE,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,IAAA,0BAAiB,EAAC,WAAW,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAEpC,2BAA2B;YAC3B,IAAI,iBAAiB,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;gBAChD,iBAAiB,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACxC,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,YAAY,CAAI,KAAqB;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF;AA3FD,8BA2FC;AAEY,QAAA,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
@@ -1,18 +0,0 @@
1
- import { ServerResponse } from 'http';
2
- export declare class HttpError extends Error {
3
- status: number;
4
- constructor(status: number, message: string);
5
- }
6
- export declare class ValidationError extends HttpError {
7
- constructor(message: string);
8
- }
9
- export declare class NotFoundError extends HttpError {
10
- constructor(message?: string);
11
- }
12
- export declare class UnauthorizedError extends HttpError {
13
- constructor(message?: string);
14
- }
15
- export declare class ForbiddenError extends HttpError {
16
- constructor(message?: string);
17
- }
18
- export declare function errorHandler(error: unknown, res: ServerResponse): void;
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ForbiddenError = exports.UnauthorizedError = exports.NotFoundError = exports.ValidationError = exports.HttpError = void 0;
4
- exports.errorHandler = errorHandler;
5
- class HttpError extends Error {
6
- constructor(status, message) {
7
- super(message);
8
- this.status = status;
9
- this.name = 'HttpError';
10
- }
11
- }
12
- exports.HttpError = HttpError;
13
- class ValidationError extends HttpError {
14
- constructor(message) {
15
- super(400, message);
16
- this.name = 'ValidationError';
17
- }
18
- }
19
- exports.ValidationError = ValidationError;
20
- class NotFoundError extends HttpError {
21
- constructor(message = 'Resource not found') {
22
- super(404, message);
23
- this.name = 'NotFoundError';
24
- }
25
- }
26
- exports.NotFoundError = NotFoundError;
27
- class UnauthorizedError extends HttpError {
28
- constructor(message = 'Unauthorized') {
29
- super(401, message);
30
- this.name = 'UnauthorizedError';
31
- }
32
- }
33
- exports.UnauthorizedError = UnauthorizedError;
34
- class ForbiddenError extends HttpError {
35
- constructor(message = 'Forbidden') {
36
- super(403, message);
37
- this.name = 'ForbiddenError';
38
- }
39
- }
40
- exports.ForbiddenError = ForbiddenError;
41
- function errorHandler(error, res) {
42
- // Check if headers have already been sent to prevent ERR_HTTP_HEADERS_SENT
43
- if (res.headersSent) {
44
- console.error('Cannot send error response - headers already sent:', error);
45
- return;
46
- }
47
- if (error instanceof HttpError) {
48
- res.writeHead(error.status, { 'Content-Type': 'application/json' });
49
- res.end(JSON.stringify({
50
- error: error.message,
51
- status: error.status,
52
- timestamp: new Date().toISOString()
53
- }));
54
- }
55
- else if (error instanceof Error) {
56
- console.error('Unhandled error:', error);
57
- res.writeHead(500, { 'Content-Type': 'application/json' });
58
- res.end(JSON.stringify({
59
- error: 'Internal Server Error',
60
- status: 500,
61
- timestamp: new Date().toISOString()
62
- }));
63
- }
64
- else {
65
- console.error('Unknown error:', error);
66
- res.writeHead(500, { 'Content-Type': 'application/json' });
67
- res.end(JSON.stringify({
68
- error: 'Internal Server Error',
69
- status: 500,
70
- timestamp: new Date().toISOString()
71
- }));
72
- }
73
- }
74
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":";;;AAqCA,oCA+BC;AAlED,MAAa,SAAU,SAAQ,KAAK;IAClC,YAAmB,MAAc,EAAE,OAAe;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,WAAM,GAAN,MAAM,CAAQ;QAE/B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AALD,8BAKC;AAED,MAAa,eAAgB,SAAQ,SAAS;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED,MAAa,aAAc,SAAQ,SAAS;IAC1C,YAAY,UAAkB,oBAAoB;QAChD,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED,MAAa,iBAAkB,SAAQ,SAAS;IAC9C,YAAY,UAAkB,cAAc;QAC1C,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC;AAED,MAAa,cAAe,SAAQ,SAAS;IAC3C,YAAY,UAAkB,WAAW;QACvC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC;AAED,SAAgB,YAAY,CAAC,KAAc,EAAE,GAAmB;IAC9D,2EAA2E;IAC3E,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACpE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC,CAAC;IACN,CAAC;SAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACzC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,KAAK,EAAE,uBAAuB;YAC9B,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC,CAAC;IACN,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,KAAK,EAAE,uBAAuB;YAC9B,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC,CAAC;IACN,CAAC;AACH,CAAC"}
@@ -1,8 +0,0 @@
1
- import { IncomingMessage, ServerResponse } from 'http';
2
- export type NextFunction = () => Promise<void> | void;
3
- export type Middleware = (req: IncomingMessage, res: ServerResponse, next: NextFunction) => Promise<void> | void;
4
- export declare class MiddlewareStack {
5
- private middlewares;
6
- use(middleware: Middleware): void;
7
- execute(req: IncomingMessage, res: ServerResponse): Promise<void>;
8
- }
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MiddlewareStack = void 0;
4
- class MiddlewareStack {
5
- constructor() {
6
- this.middlewares = [];
7
- }
8
- use(middleware) {
9
- this.middlewares.push(middleware);
10
- }
11
- async execute(req, res) {
12
- let index = 0;
13
- const next = async () => {
14
- if (index < this.middlewares.length) {
15
- const middleware = this.middlewares[index++];
16
- await middleware(req, res, next);
17
- }
18
- };
19
- await next();
20
- }
21
- }
22
- exports.MiddlewareStack = MiddlewareStack;
23
- //# sourceMappingURL=middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/core/middleware.ts"],"names":[],"mappings":";;;AAUA,MAAa,eAAe;IAA5B;QACU,gBAAW,GAAiB,EAAE,CAAC;IAkBzC,CAAC;IAhBC,GAAG,CAAC,UAAsB;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAoB,EAAE,GAAmB;QACrD,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;YACrC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7C,MAAM,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;CACF;AAnBD,0CAmBC"}
@@ -1,80 +0,0 @@
1
- import { ZodSchema } from './validation';
2
- export interface OpenAPIInfo {
3
- title: string;
4
- version: string;
5
- description?: string;
6
- contact?: {
7
- name?: string;
8
- email?: string;
9
- url?: string;
10
- };
11
- license?: {
12
- name: string;
13
- url?: string;
14
- };
15
- }
16
- export interface OpenAPIServer {
17
- url: string;
18
- description?: string;
19
- }
20
- export interface OpenAPITag {
21
- name: string;
22
- description?: string;
23
- externalDocs?: {
24
- description?: string;
25
- url: string;
26
- };
27
- }
28
- export interface OpenAPIOperation {
29
- summary?: string;
30
- description?: string;
31
- operationId?: string;
32
- tags?: string[];
33
- deprecated?: boolean;
34
- security?: any[];
35
- externalDocs?: {
36
- description?: string;
37
- url: string;
38
- };
39
- }
40
- export interface OpenAPIResponse {
41
- description: string;
42
- schema?: ZodSchema;
43
- examples?: Record<string, any>;
44
- headers?: Record<string, any>;
45
- }
46
- export interface OpenAPISpec {
47
- openapi: string;
48
- info: OpenAPIInfo;
49
- servers?: OpenAPIServer[];
50
- paths: Record<string, any>;
51
- components: {
52
- schemas: Record<string, any>;
53
- securitySchemes?: Record<string, any>;
54
- };
55
- tags?: OpenAPITag[];
56
- security?: any[];
57
- }
58
- export interface ControllerOpenAPIMetadata {
59
- tags?: string[];
60
- security?: any[];
61
- responses?: Record<string, OpenAPIResponse>;
62
- }
63
- export interface MethodOpenAPIMetadata {
64
- operation?: OpenAPIOperation;
65
- responses?: Record<string, OpenAPIResponse>;
66
- security?: any[];
67
- }
68
- export declare class OpenAPIGenerator {
69
- private spec;
70
- private schemaCounter;
71
- private schemaCache;
72
- constructor(info: OpenAPIInfo, servers?: OpenAPIServer[]);
73
- addControllers(controllers: any[]): void;
74
- private processController;
75
- private addPathOperation;
76
- private formatResponse;
77
- private addSchema;
78
- private normalizePath;
79
- getSpec(): OpenAPISpec;
80
- }