bootifyjs 0.1.1 → 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 -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
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ // import 'reflect-metadata'
3
+ // import { METADATA_KEYS } from './decorators'
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.container = exports.Container = exports.eagerIdentifiers = exports.Scope = void 0;
6
+ // export type Constructor<T = any> = new (...args: any[]) => T
7
+ // export type DiToken = any
8
+ var Scope;
9
+ (function (Scope) {
10
+ Scope["SINGLETON"] = "singleton";
11
+ Scope["TRANSIENT"] = "transient";
12
+ })(Scope || (exports.Scope = Scope = {}));
13
+ // // The definition now clearly separates the token from the class to instantiate
14
+ // interface ServiceDefinition {
15
+ // useClass: Constructor
16
+ // scope: Scope
17
+ // instance?: any
18
+ // }
19
+ // export interface RegistrationOptions {
20
+ // useClass: Constructor
21
+ // scope?: Scope
22
+ // }
23
+ // export class Container {
24
+ // private services = new Map<DiToken, ServiceDefinition>()
25
+ // private resolving = new Set<DiToken>()
26
+ // // The register method is now more powerful
27
+ // register(token: DiToken, options: RegistrationOptions): void {
28
+ // if (!this.services.has(token)) {
29
+ // this.services.set(token, {
30
+ // useClass: options.useClass,
31
+ // scope: options.scope || Scope.SINGLETON,
32
+ // })
33
+ // }
34
+ // console.log(this.services)
35
+ // }
36
+ // // resolve<T>(token: DiToken): T {
37
+ // // const serviceDef = this.services.get(token)
38
+ // // console.log('serviceDef', serviceDef, token)
39
+ // // if (!serviceDef) {
40
+ // // throw new Error(`Service with token '${String(token)}' is not registered.`)
41
+ // // }
42
+ // // if (this.resolving.has(token)) {
43
+ // // throw new Error(`Circular dependency detected for token '${String(token)}'.`)
44
+ // // }
45
+ // // if (serviceDef.scope === Scope.SINGLETON && serviceDef.instance) {
46
+ // // return serviceDef.instance
47
+ // // }
48
+ // // this.resolving.add(token)
49
+ // // try {
50
+ // // // We always instantiate using serviceDef.useClass
51
+ // // const ConcreteClass = serviceDef.useClass
52
+ // // const constructorDeps = Reflect.getMetadata('design:paramtypes', ConcreteClass) || []
53
+ // // const constructorArgs = constructorDeps.map((dep: Constructor) => this.resolve(dep))
54
+ // // const instance = new ConcreteClass(...constructorArgs)
55
+ // // const autowiredProperties =
56
+ // // Reflect.getMetadata(METADATA_KEYS.autowiredProperties, ConcreteClass) || []
57
+ // // for (const prop of autowiredProperties) {
58
+ // // // Resolve the dependency using its registered token (which could be a class or a symbol)
59
+ // // const dependencyToken = prop.token || prop.type
60
+ // // const dependencyToInject = this.resolve(dependencyToken)
61
+ // // ;(instance as any)[prop.propertyKey] = dependencyToInject
62
+ // // }
63
+ // // if (serviceDef.scope === Scope.SINGLETON) {
64
+ // // serviceDef.instance = instance
65
+ // // }
66
+ // // return instance
67
+ // // } finally {
68
+ // // this.resolving.delete(token)
69
+ // // }
70
+ // // }
71
+ // public getRegisteredComponents(): Constructor[] {
72
+ // const definitions = Array.from(this.services.values())
73
+ // // Use a Set to automatically handle duplicates, as multiple tokens
74
+ // // can point to the same class constructor.
75
+ // console.log('definitions', definitions)
76
+ // const uniqueConstructors = new Set(definitions.map((def) => def.useClass))
77
+ // return Array.from(uniqueConstructors)
78
+ // }
79
+ // public resolve<T>(token: DiToken): T {
80
+ // const serviceDef = this.services.get(token)
81
+ // if (!serviceDef) {
82
+ // throw new Error(`[DI] Service with token '${String(token)}' is not registered.`)
83
+ // }
84
+ // if (this.resolving.has(token)) {
85
+ // throw new Error(`[DI] Circular dependency detected for token '${String(token)}'.`)
86
+ // }
87
+ // if (serviceDef.scope === Scope.SINGLETON && serviceDef.instance) {
88
+ // return serviceDef.instance
89
+ // }
90
+ // this.resolving.add(token)
91
+ // try {
92
+ // const ConcreteClass = serviceDef.useClass
93
+ // // --- This is the implementation you are looking for ---
94
+ // // 1. Get both sets of metadata for the constructor.
95
+ // const constructorParamTypes = Reflect.getMetadata('design:paramtypes', ConcreteClass) || []
96
+ // const autowiredParamTokens =
97
+ // Reflect.getMetadata(METADATA_KEYS.autowiredParams, ConcreteClass) || []
98
+ // // 2. Resolve constructor arguments by prioritizing the @Autowired token.
99
+ // const constructorArgs = constructorParamTypes.map((paramType: any, index: number) => {
100
+ // // If an @Autowired(TOKEN) was used on this parameter, use that token.
101
+ // // Otherwise, fall back to the type inferred by reflect-metadata.
102
+ // const tokenToResolve = autowiredParamTokens[index] || paramType
103
+ // // Prevent trying to resolve primitive types like String, Number, etc.
104
+ // if ([String, Number, Boolean, Object].includes(tokenToResolve)) {
105
+ // // This check prevents the "String is not registered" error.
106
+ // return undefined
107
+ // }
108
+ // // Recursively resolve the dependency.
109
+ // return this.resolve(tokenToResolve)
110
+ // })
111
+ // // 3. Instantiate the Class with the resolved dependencies.
112
+ // const instance = new ConcreteClass(...constructorArgs)
113
+ // // 4. Perform Property (Field) Injection.
114
+ // const autowiredProperties =
115
+ // Reflect.getMetadata(METADATA_KEYS.autowiredProperties, ConcreteClass) || []
116
+ // for (const prop of autowiredProperties) {
117
+ // ;(instance as any)[prop.propertyKey] = this.resolve(prop.token)
118
+ // }
119
+ // if (serviceDef.scope === Scope.SINGLETON) {
120
+ // serviceDef.instance = instance
121
+ // }
122
+ // return instance
123
+ // } finally {
124
+ // this.resolving.delete(token)
125
+ // }
126
+ // }
127
+ // public isRegistered(token: DiToken): boolean {
128
+ // return this.services.has(token)
129
+ // }
130
+ // }
131
+ // export const container = new Container()
132
+ require("reflect-metadata");
133
+ const decorators_1 = require("./decorators");
134
+ // --- Eager Loading Registry ---
135
+ exports.eagerIdentifiers = new Set();
136
+ // --- The Container Class ---
137
+ class Container {
138
+ constructor() {
139
+ this.services = new Map();
140
+ this.resolving = new Set();
141
+ }
142
+ register(token, options) {
143
+ if (!options.useClass && !options.useFactory) {
144
+ throw new Error(`[DI] Registration for token '${String(token)}' requires 'useClass' or 'useFactory'.`);
145
+ }
146
+ this.services.set(token, {
147
+ useClass: options.useClass,
148
+ useFactory: options.useFactory,
149
+ scope: options.scope || 'Singleton',
150
+ });
151
+ }
152
+ resolve(token) {
153
+ const serviceDef = this.services.get(token);
154
+ if (!serviceDef) {
155
+ throw new Error(`[DI] Service with token '${String(token)}' is not registered.`);
156
+ }
157
+ if (this.resolving.has(token)) {
158
+ throw new Error(`[DI] Circular dependency detected for token '${String(token)}'.`);
159
+ }
160
+ if (serviceDef.scope === 'Singleton' && serviceDef.instance) {
161
+ return serviceDef.instance;
162
+ }
163
+ this.resolving.add(token);
164
+ try {
165
+ let instance;
166
+ // --- ENHANCED: Handle factory providers first ---
167
+ if (serviceDef.useFactory) {
168
+ instance = serviceDef.useFactory();
169
+ }
170
+ else if (serviceDef.useClass) {
171
+ // Fallback to class-based instantiation
172
+ const ConcreteClass = serviceDef.useClass;
173
+ const constructorArgs = this.resolveConstructorArgs(ConcreteClass);
174
+ instance = new ConcreteClass(...constructorArgs);
175
+ this.performPropertyInjection(instance, ConcreteClass);
176
+ }
177
+ else {
178
+ // This case should be prevented by the check in .register()
179
+ throw new Error(`[DI] No valid provider for token '${String(token)}'.`);
180
+ }
181
+ if (serviceDef.scope === 'Singleton') {
182
+ serviceDef.instance = instance;
183
+ }
184
+ return instance;
185
+ }
186
+ finally {
187
+ this.resolving.delete(token);
188
+ }
189
+ }
190
+ resolveConstructorArgs(ConcreteClass) {
191
+ const constructorParamTypes = Reflect.getMetadata('design:paramtypes', ConcreteClass) || [];
192
+ const autowiredParamTokens = Reflect.getMetadata(decorators_1.METADATA_KEYS.autowiredParams, ConcreteClass) || [];
193
+ return constructorParamTypes.map((paramType, index) => {
194
+ const tokenToResolve = autowiredParamTokens[index] || paramType;
195
+ if (!tokenToResolve || [String, Number, Boolean, Object].includes(tokenToResolve)) {
196
+ return undefined;
197
+ }
198
+ return this.resolve(tokenToResolve);
199
+ });
200
+ }
201
+ performPropertyInjection(instance, ConcreteClass) {
202
+ const autowiredProperties = Reflect.getMetadata(decorators_1.METADATA_KEYS.autowiredProperties, ConcreteClass) || [];
203
+ for (const prop of autowiredProperties) {
204
+ ;
205
+ instance[prop.propertyKey] = this.resolve(prop.token);
206
+ }
207
+ }
208
+ getRegisteredComponents() {
209
+ const definitions = Array.from(this.services.values());
210
+ const classDefs = definitions.filter((def) => def.useClass).map((def) => def.useClass);
211
+ return Array.from(new Set(classDefs));
212
+ }
213
+ isRegistered(token) {
214
+ return this.services.has(token);
215
+ }
216
+ }
217
+ exports.Container = Container;
218
+ exports.container = new Container();
219
+ //# sourceMappingURL=di-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"di-container.js","sourceRoot":"","sources":["../../src/core/di-container.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './router';
2
+ export * from './di-container';
3
+ export * from './request-context.service';
4
+ export * from './decorators';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,2BAA2B,CAAA;AACzC,cAAc,cAAc,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./router"), exports);
18
+ __exportStar(require("./di-container"), exports);
19
+ __exportStar(require("./request-context.service"), exports);
20
+ __exportStar(require("./decorators"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,iDAA8B;AAC9B,4DAAyC;AACzC,+CAA4B"}
@@ -0,0 +1,24 @@
1
+ import { AsyncLocalStorage } from 'async_hooks';
2
+ export declare const requestContextStore: AsyncLocalStorage<Map<string, any>>;
3
+ export declare class RequestContextService {
4
+ /**
5
+ * Retrieves a value from the request context by key.
6
+ * @param key The key of the value to retrieve.
7
+ * @returns The value, or undefined if not found.
8
+ */
9
+ get<T = any>(key: string): T | undefined;
10
+ /**
11
+ * Sets a value in the request context.
12
+ * @param key The key of the value to set.
13
+ * @param value The value to set.
14
+ */
15
+ set(key: string, value: any): void;
16
+ store(): Map<string, any> | undefined;
17
+ /**
18
+ * A static method to run a function within a new request context.
19
+ * This is the entry point used by our framework middleware.
20
+ * @param callback The function to execute within the new context.
21
+ */
22
+ static run(callback: () => void): void;
23
+ }
24
+ //# sourceMappingURL=request-context.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.service.d.ts","sourceRoot":"","sources":["../../src/core/request-context.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAI/C,eAAO,MAAM,mBAAmB,qCAA4C,CAAA;AAE5E,qBACa,qBAAqB;IAChC;;;;OAIG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKxC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAMlC,KAAK;IAIL;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI;CAIhC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.RequestContextService = exports.requestContextStore = void 0;
10
+ const async_hooks_1 = require("async_hooks");
11
+ const decorators_1 = require("./decorators");
12
+ // The actual storage instance. It's created once and exported.
13
+ exports.requestContextStore = new async_hooks_1.AsyncLocalStorage();
14
+ let RequestContextService = class RequestContextService {
15
+ /**
16
+ * Retrieves a value from the request context by key.
17
+ * @param key The key of the value to retrieve.
18
+ * @returns The value, or undefined if not found.
19
+ */
20
+ get(key) {
21
+ const store = exports.requestContextStore.getStore();
22
+ return store?.get(key);
23
+ }
24
+ /**
25
+ * Sets a value in the request context.
26
+ * @param key The key of the value to set.
27
+ * @param value The value to set.
28
+ */
29
+ set(key, value) {
30
+ const store = exports.requestContextStore.getStore();
31
+ if (store) {
32
+ store.set(key, value);
33
+ }
34
+ }
35
+ store() {
36
+ return exports.requestContextStore.getStore();
37
+ }
38
+ /**
39
+ * A static method to run a function within a new request context.
40
+ * This is the entry point used by our framework middleware.
41
+ * @param callback The function to execute within the new context.
42
+ */
43
+ static run(callback) {
44
+ const store = new Map();
45
+ exports.requestContextStore.run(store, callback);
46
+ }
47
+ };
48
+ exports.RequestContextService = RequestContextService;
49
+ exports.RequestContextService = RequestContextService = __decorate([
50
+ (0, decorators_1.Service)()
51
+ ], RequestContextService);
52
+ //# sourceMappingURL=request-context.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.service.js","sourceRoot":"","sources":["../../src/core/request-context.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,6CAA+C;AAC/C,6CAAsC;AAEtC,+DAA+D;AAClD,QAAA,mBAAmB,GAAG,IAAI,+BAAiB,EAAoB,CAAA;AAGrE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC;;;;OAIG;IACH,GAAG,CAAU,GAAW;QACtB,MAAM,KAAK,GAAG,2BAAmB,CAAC,QAAQ,EAAE,CAAA;QAC5C,OAAO,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,GAAW,EAAE,KAAU;QACzB,MAAM,KAAK,GAAG,2BAAmB,CAAC,QAAQ,EAAE,CAAA;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IACD,KAAK;QACH,OAAO,2BAAmB,CAAC,QAAQ,EAAE,CAAA;IACvC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,QAAoB;QAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAe,CAAA;QACpC,2BAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;CACF,CAAA;AAnCY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,oBAAO,GAAE;GACG,qBAAqB,CAmCjC"}
@@ -1,32 +1,4 @@
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 {};
1
+ import { FastifyInstance } from 'fastify';
2
+ import { Constructor } from './di-container';
3
+ export declare function registerControllers(fastify: FastifyInstance, controllers: Constructor[]): void;
4
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA8C,MAAM,SAAS,CAAA;AAErF,OAAO,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAA;AA4BvD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,QAyEvF"}