bootifyjs 0.1.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/dist/api.d.ts +8 -27
  2. package/dist/api.d.ts.map +1 -0
  3. package/dist/api.js +68 -134
  4. package/dist/api.js.map +1 -1
  5. package/dist/cache/bootstrap.d.ts +6 -0
  6. package/dist/cache/bootstrap.d.ts.map +1 -0
  7. package/dist/cache/bootstrap.js +23 -0
  8. package/dist/cache/bootstrap.js.map +1 -0
  9. package/dist/cache/cache.service.d.ts +9 -0
  10. package/dist/cache/cache.service.d.ts.map +1 -0
  11. package/dist/cache/cache.service.js +40 -0
  12. package/dist/cache/cache.service.js.map +1 -0
  13. package/dist/cache/cache.types.d.ts +14 -0
  14. package/dist/cache/cache.types.d.ts.map +1 -0
  15. package/dist/cache/cache.types.js +8 -0
  16. package/dist/cache/cache.types.js.map +1 -0
  17. package/dist/cache/decorators.d.ts +12 -0
  18. package/dist/cache/decorators.d.ts.map +1 -0
  19. package/dist/cache/decorators.js +53 -0
  20. package/dist/cache/decorators.js.map +1 -0
  21. package/dist/cache/in-memory-cache.store.d.ts +8 -0
  22. package/dist/cache/in-memory-cache.store.d.ts.map +1 -0
  23. package/dist/cache/in-memory-cache.store.js +39 -0
  24. package/dist/cache/in-memory-cache.store.js.map +1 -0
  25. package/dist/cache/index.d.ts +5 -0
  26. package/dist/cache/index.d.ts.map +1 -0
  27. package/dist/cache/index.js +21 -0
  28. package/dist/cache/index.js.map +1 -0
  29. package/dist/core/component-registry.d.ts +7 -0
  30. package/dist/core/component-registry.d.ts.map +1 -0
  31. package/dist/core/component-registry.js +9 -0
  32. package/dist/core/component-registry.js.map +1 -0
  33. package/dist/core/decorators.d.ts +38 -22
  34. package/dist/core/decorators.d.ts.map +1 -0
  35. package/dist/core/decorators.js +155 -174
  36. package/dist/core/decorators.js.map +1 -1
  37. package/dist/core/di-container.d.ts +31 -0
  38. package/dist/core/di-container.d.ts.map +1 -0
  39. package/dist/core/di-container.js +219 -0
  40. package/dist/core/di-container.js.map +1 -0
  41. package/dist/core/index.d.ts +5 -0
  42. package/dist/core/index.d.ts.map +1 -0
  43. package/dist/core/index.js +21 -0
  44. package/dist/core/index.js.map +1 -0
  45. package/dist/core/request-context.service.d.ts +24 -0
  46. package/dist/core/request-context.service.d.ts.map +1 -0
  47. package/dist/core/request-context.service.js +52 -0
  48. package/dist/core/request-context.service.js.map +1 -0
  49. package/dist/core/router.d.ts +4 -32
  50. package/dist/core/router.d.ts.map +1 -0
  51. package/dist/core/router.js +81 -258
  52. package/dist/core/router.js.map +1 -1
  53. package/dist/events/bootstrap.d.ts +8 -0
  54. package/dist/events/bootstrap.d.ts.map +1 -0
  55. package/dist/events/bootstrap.js +37 -0
  56. package/dist/events/bootstrap.js.map +1 -0
  57. package/dist/events/decorators.d.ts +16 -0
  58. package/dist/events/decorators.d.ts.map +1 -0
  59. package/dist/events/decorators.js +37 -0
  60. package/dist/events/decorators.js.map +1 -0
  61. package/dist/events/event-bus.service.d.ts +21 -0
  62. package/dist/events/event-bus.service.d.ts.map +1 -0
  63. package/dist/events/event-bus.service.js +78 -0
  64. package/dist/events/event-bus.service.js.map +1 -0
  65. package/dist/events/event.types.d.ts +17 -0
  66. package/dist/events/event.types.d.ts.map +1 -0
  67. package/dist/events/event.types.js.map +1 -0
  68. package/dist/events/index.d.ts +5 -13
  69. package/dist/events/index.d.ts.map +1 -0
  70. package/dist/events/index.js +4 -54
  71. package/dist/events/index.js.map +1 -1
  72. package/dist/examples/controllers/health.controller.d.ts +7 -0
  73. package/dist/examples/controllers/health.controller.d.ts.map +1 -0
  74. package/dist/{events/examples/system.events.js → examples/controllers/health.controller.js} +16 -15
  75. package/dist/examples/controllers/health.controller.js.map +1 -0
  76. package/dist/examples/controllers/todo.controller.d.ts +31 -0
  77. package/dist/examples/controllers/todo.controller.d.ts.map +1 -0
  78. package/dist/examples/controllers/todo.controller.js +102 -0
  79. package/dist/examples/controllers/todo.controller.js.map +1 -0
  80. package/dist/examples/events/TodoEventHandler.d.ts +2 -0
  81. package/dist/examples/events/TodoEventHandler.d.ts.map +1 -0
  82. package/dist/examples/events/TodoEventHandler.js +31 -0
  83. package/dist/examples/events/TodoEventHandler.js.map +1 -0
  84. package/dist/examples/events/todo.events.d.ts +16 -0
  85. package/dist/examples/events/todo.events.d.ts.map +1 -0
  86. package/dist/examples/events/todo.events.js +13 -0
  87. package/dist/examples/events/todo.events.js.map +1 -0
  88. package/dist/examples/index.d.ts +2 -0
  89. package/dist/examples/index.d.ts.map +1 -0
  90. package/dist/examples/index.js +35 -0
  91. package/dist/examples/index.js.map +1 -0
  92. package/dist/examples/repositories/todo.repository.d.ts +20 -0
  93. package/dist/examples/repositories/todo.repository.d.ts.map +1 -0
  94. package/dist/examples/repositories/todo.repository.js +33 -0
  95. package/dist/examples/repositories/todo.repository.js.map +1 -0
  96. package/dist/examples/services/todo.service.d.ts +33 -0
  97. package/dist/examples/services/todo.service.d.ts.map +1 -0
  98. package/dist/examples/services/todo.service.js +80 -0
  99. package/dist/examples/services/todo.service.js.map +1 -0
  100. package/dist/examples/todos/schema.d.ts +54 -0
  101. package/dist/examples/todos/schema.d.ts.map +1 -0
  102. package/dist/examples/todos/schema.js +20 -0
  103. package/dist/examples/todos/schema.js.map +1 -0
  104. package/dist/index.d.ts +7 -17
  105. package/dist/index.d.ts.map +1 -0
  106. package/dist/index.js +20 -95
  107. package/dist/index.js.map +1 -1
  108. package/dist/logging/config/logging.config.d.ts +31 -3
  109. package/dist/logging/config/logging.config.d.ts.map +1 -0
  110. package/dist/logging/config/logging.config.js +43 -93
  111. package/dist/logging/config/logging.config.js.map +1 -1
  112. package/dist/logging/core/decorators.d.ts +16 -0
  113. package/dist/logging/core/decorators.d.ts.map +1 -0
  114. package/dist/logging/core/decorators.js +74 -0
  115. package/dist/logging/core/decorators.js.map +1 -0
  116. package/dist/logging/core/logger.provider.d.ts +4 -0
  117. package/dist/logging/core/logger.provider.d.ts.map +1 -0
  118. package/dist/logging/core/logger.provider.js +68 -0
  119. package/dist/logging/core/logger.provider.js.map +1 -0
  120. package/dist/logging/core/logger.service.d.ts +9 -27
  121. package/dist/logging/core/logger.service.d.ts.map +1 -0
  122. package/dist/logging/core/logger.service.js +34 -164
  123. package/dist/logging/core/logger.service.js.map +1 -1
  124. package/dist/logging/core/{startup-logger.service.d.ts → startup.logger.d.ts} +4 -6
  125. package/dist/logging/core/startup.logger.d.ts.map +1 -0
  126. package/dist/logging/core/{startup-logger.service.js → startup.logger.js} +36 -42
  127. package/dist/logging/core/startup.logger.js.map +1 -0
  128. package/dist/logging/index.d.ts +7 -14
  129. package/dist/logging/index.d.ts.map +1 -0
  130. package/dist/logging/index.js +17 -28
  131. package/dist/logging/index.js.map +1 -1
  132. package/dist/middleware/auth.middleware.d.ts +3 -0
  133. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  134. package/dist/middleware/auth.middleware.js +18 -0
  135. package/dist/middleware/auth.middleware.js.map +1 -0
  136. package/dist/middleware/context.middleware.d.ts +7 -0
  137. package/dist/middleware/context.middleware.d.ts.map +1 -0
  138. package/dist/middleware/context.middleware.js +25 -0
  139. package/dist/middleware/context.middleware.js.map +1 -0
  140. package/dist/middleware/index.d.ts +4 -0
  141. package/dist/middleware/index.d.ts.map +1 -0
  142. package/dist/middleware/index.js +20 -0
  143. package/dist/middleware/index.js.map +1 -0
  144. package/dist/middleware/request-logger.middleware.d.ts +4 -0
  145. package/dist/middleware/request-logger.middleware.d.ts.map +1 -0
  146. package/dist/middleware/request-logger.middleware.js +18 -0
  147. package/dist/middleware/request-logger.middleware.js.map +1 -0
  148. package/package.json +52 -47
  149. package/LICENSE +0 -21
  150. package/README.md +0 -423
  151. package/dist/config/app.config.d.ts +0 -29
  152. package/dist/config/app.config.js +0 -55
  153. package/dist/config/app.config.js.map +0 -1
  154. package/dist/controllers/config.controller.d.ts +0 -16
  155. package/dist/controllers/config.controller.js +0 -66
  156. package/dist/controllers/config.controller.js.map +0 -1
  157. package/dist/controllers/events.controller.d.ts +0 -66
  158. package/dist/controllers/events.controller.js +0 -145
  159. package/dist/controllers/events.controller.js.map +0 -1
  160. package/dist/controllers/health.controller.d.ts +0 -20
  161. package/dist/controllers/health.controller.js +0 -92
  162. package/dist/controllers/health.controller.js.map +0 -1
  163. package/dist/controllers/user.controller.d.ts +0 -13
  164. package/dist/controllers/user.controller.js +0 -209
  165. package/dist/controllers/user.controller.js.map +0 -1
  166. package/dist/core/application.d.ts +0 -21
  167. package/dist/core/application.js +0 -90
  168. package/dist/core/application.js.map +0 -1
  169. package/dist/core/config.d.ts +0 -3
  170. package/dist/core/config.js +0 -78
  171. package/dist/core/config.js.map +0 -1
  172. package/dist/core/container.d.ts +0 -17
  173. package/dist/core/container.js +0 -92
  174. package/dist/core/container.js.map +0 -1
  175. package/dist/core/errors.d.ts +0 -18
  176. package/dist/core/errors.js +0 -74
  177. package/dist/core/errors.js.map +0 -1
  178. package/dist/core/middleware.d.ts +0 -8
  179. package/dist/core/middleware.js +0 -23
  180. package/dist/core/middleware.js.map +0 -1
  181. package/dist/core/openapi.d.ts +0 -80
  182. package/dist/core/openapi.js +0 -189
  183. package/dist/core/openapi.js.map +0 -1
  184. package/dist/core/utils.d.ts +0 -7
  185. package/dist/core/utils.js +0 -75
  186. package/dist/core/utils.js.map +0 -1
  187. package/dist/core/validation.d.ts +0 -15
  188. package/dist/core/validation.js +0 -161
  189. package/dist/core/validation.js.map +0 -1
  190. package/dist/events/core/event-bus.d.ts +0 -26
  191. package/dist/events/core/event-bus.js +0 -253
  192. package/dist/events/core/event-bus.js.map +0 -1
  193. package/dist/events/core/event-registry.d.ts +0 -31
  194. package/dist/events/core/event-registry.js +0 -170
  195. package/dist/events/core/event-registry.js.map +0 -1
  196. package/dist/events/decorators/event.decorators.d.ts +0 -11
  197. package/dist/events/decorators/event.decorators.js +0 -123
  198. package/dist/events/decorators/event.decorators.js.map +0 -1
  199. package/dist/events/examples/system.events.d.ts +0 -15
  200. package/dist/events/examples/system.events.js.map +0 -1
  201. package/dist/events/examples/user.events.d.ts +0 -68
  202. package/dist/events/examples/user.events.js +0 -73
  203. package/dist/events/examples/user.events.js.map +0 -1
  204. package/dist/events/examples/user.handlers.d.ts +0 -20
  205. package/dist/events/examples/user.handlers.js +0 -157
  206. package/dist/events/examples/user.handlers.js.map +0 -1
  207. package/dist/events/middleware/logging.middleware.d.ts +0 -7
  208. package/dist/events/middleware/logging.middleware.js +0 -44
  209. package/dist/events/middleware/logging.middleware.js.map +0 -1
  210. package/dist/events/middleware/metrics.middleware.d.ts +0 -11
  211. package/dist/events/middleware/metrics.middleware.js +0 -87
  212. package/dist/events/middleware/metrics.middleware.js.map +0 -1
  213. package/dist/events/middleware/validation.middleware.d.ts +0 -8
  214. package/dist/events/middleware/validation.middleware.js +0 -63
  215. package/dist/events/middleware/validation.middleware.js.map +0 -1
  216. package/dist/events/store/memory-event-store.d.ts +0 -21
  217. package/dist/events/store/memory-event-store.js +0 -81
  218. package/dist/events/store/memory-event-store.js.map +0 -1
  219. package/dist/events/types/event.types.d.ts +0 -57
  220. package/dist/events/types/event.types.js.map +0 -1
  221. package/dist/examples/basic-api.d.ts +0 -1
  222. package/dist/examples/basic-api.js +0 -120
  223. package/dist/examples/basic-api.js.map +0 -1
  224. package/dist/logging/core/log-context.service.d.ts +0 -11
  225. package/dist/logging/core/log-context.service.js +0 -40
  226. package/dist/logging/core/log-context.service.js.map +0 -1
  227. package/dist/logging/core/startup-logger.service.js.map +0 -1
  228. package/dist/logging/decorators/log.decorator.d.ts +0 -11
  229. package/dist/logging/decorators/log.decorator.js +0 -80
  230. package/dist/logging/decorators/log.decorator.js.map +0 -1
  231. package/dist/logging/middleware/context.middleware.d.ts +0 -2
  232. package/dist/logging/middleware/context.middleware.js +0 -29
  233. package/dist/logging/middleware/context.middleware.js.map +0 -1
  234. package/dist/logging/middleware/request-logging.middleware.d.ts +0 -3
  235. package/dist/logging/middleware/request-logging.middleware.js +0 -78
  236. package/dist/logging/middleware/request-logging.middleware.js.map +0 -1
  237. package/dist/logging/types/logging.types.d.ts +0 -79
  238. package/dist/logging/types/logging.types.js +0 -3
  239. package/dist/logging/types/logging.types.js.map +0 -1
  240. package/dist/middlewares/auth.middleware.d.ts +0 -2
  241. package/dist/middlewares/auth.middleware.js +0 -20
  242. package/dist/middlewares/auth.middleware.js.map +0 -1
  243. package/dist/middlewares/cors.middleware.d.ts +0 -2
  244. package/dist/middlewares/cors.middleware.js +0 -16
  245. package/dist/middlewares/cors.middleware.js.map +0 -1
  246. package/dist/middlewares/swagger.middleware.d.ts +0 -6
  247. package/dist/middlewares/swagger.middleware.js +0 -84
  248. package/dist/middlewares/swagger.middleware.js.map +0 -1
  249. package/dist/repositories/user.repository.d.ts +0 -16
  250. package/dist/repositories/user.repository.js +0 -110
  251. package/dist/repositories/user.repository.js.map +0 -1
  252. package/dist/schemas/user.schemas.d.ts +0 -214
  253. package/dist/schemas/user.schemas.js +0 -71
  254. package/dist/schemas/user.schemas.js.map +0 -1
  255. package/dist/services/config-demo.service.d.ts +0 -10
  256. package/dist/services/config-demo.service.js +0 -88
  257. package/dist/services/config-demo.service.js.map +0 -1
  258. package/dist/services/user.service.d.ts +0 -21
  259. package/dist/services/user.service.js +0 -201
  260. package/dist/services/user.service.js.map +0 -1
  261. /package/dist/events/{types/event.types.js → event.types.js} +0 -0
@@ -0,0 +1,54 @@
1
+ import { z } from 'zod';
2
+ export declare const TodoBaseSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ text: z.ZodString;
5
+ completed: z.ZodBoolean;
6
+ createdAt: z.ZodDate;
7
+ }, "strip", z.ZodTypeAny, {
8
+ completed: boolean;
9
+ text: string;
10
+ id: string;
11
+ createdAt: Date;
12
+ }, {
13
+ completed: boolean;
14
+ text: string;
15
+ id: string;
16
+ createdAt: Date;
17
+ }>;
18
+ export declare const TodoCreateBodySchema: z.ZodObject<Pick<{
19
+ id: z.ZodString;
20
+ text: z.ZodString;
21
+ completed: z.ZodBoolean;
22
+ createdAt: z.ZodDate;
23
+ }, "text">, "strip", z.ZodTypeAny, {
24
+ text: string;
25
+ }, {
26
+ text: string;
27
+ }>;
28
+ export declare const TodoUpdateBodySchema: z.ZodObject<{
29
+ completed: z.ZodOptional<z.ZodBoolean>;
30
+ text: z.ZodOptional<z.ZodString>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ completed?: boolean | undefined;
33
+ text?: string | undefined;
34
+ }, {
35
+ completed?: boolean | undefined;
36
+ text?: string | undefined;
37
+ }>;
38
+ export declare const TodoResponseSchema: z.ZodObject<{
39
+ id: z.ZodString;
40
+ text: z.ZodString;
41
+ completed: z.ZodBoolean;
42
+ createdAt: z.ZodDate;
43
+ }, "strip", z.ZodTypeAny, {
44
+ completed: boolean;
45
+ text: string;
46
+ id: string;
47
+ createdAt: Date;
48
+ }, {
49
+ completed: boolean;
50
+ text: string;
51
+ id: string;
52
+ createdAt: Date;
53
+ }>;
54
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/examples/todos/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;EAKzB,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;EAE/B,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;EAGrB,CAAA;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAAiB,CAAA"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TodoResponseSchema = exports.TodoUpdateBodySchema = exports.TodoCreateBodySchema = exports.TodoBaseSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ // This represents the full Todo object, like the one in your database.
6
+ exports.TodoBaseSchema = zod_1.z.object({
7
+ id: zod_1.z.string().uuid(),
8
+ text: zod_1.z.string().min(1, 'Text cannot be empty'),
9
+ completed: zod_1.z.boolean(),
10
+ createdAt: zod_1.z.date(),
11
+ });
12
+ exports.TodoCreateBodySchema = exports.TodoBaseSchema.pick({
13
+ text: true,
14
+ });
15
+ exports.TodoUpdateBodySchema = exports.TodoBaseSchema.pick({
16
+ text: true,
17
+ completed: true,
18
+ }).partial();
19
+ exports.TodoResponseSchema = exports.TodoBaseSchema;
20
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/examples/todos/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAEvB,uEAAuE;AAC1D,QAAA,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE;IACtB,SAAS,EAAE,OAAC,CAAC,IAAI,EAAE;CACpB,CAAC,CAAA;AAEW,QAAA,oBAAoB,GAAG,sBAAc,CAAC,IAAI,CAAC;IACtD,IAAI,EAAE,IAAI;CACX,CAAC,CAAA;AAEW,QAAA,oBAAoB,GAAG,sBAAc,CAAC,IAAI,CAAC;IACtD,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC,OAAO,EAAE,CAAA;AAEC,QAAA,kBAAkB,GAAG,sBAAc,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,17 +1,7 @@
1
- export { Application } from './core/application';
2
- export { Router } from './core/router';
3
- export { container, Container, Scope } from './core/container';
4
- export { getConfigInstance, Config } from './core/config';
5
- export { OpenAPIGenerator } from './core/openapi';
6
- export { ValidationService, zodToOpenAPI } from './core/validation';
7
- export { HttpError, ValidationError, NotFoundError, UnauthorizedError, ForbiddenError, errorHandler } from './core/errors';
8
- export { Middleware, MiddlewareStack, NextFunction } from './core/middleware';
9
- export { parseQuery, parseBody, matchRoute } from './core/utils';
10
- export { Injectable, Service, Repository, Controller, Get, Post, Put, Delete, Req, Res, Body, Param, Query, UseMiddleware, ValidateBody, ValidateQuery, ValidateParams, ValidateResponse, InjectConfig, ApiTags, ApiSecurity, ApiResponse, ApiOperation } from './core/decorators';
11
- export { EventBus, EventRegistry, Event, EventEmitter, EventListener, EmitEvent, registerEventHandlers, LoggingMiddleware, ValidationMiddleware, MetricsMiddleware, MemoryEventStore, configureEventSystem } from './events';
12
- export { LoggerService, LogContextService, StartupLoggerService, LoggingConfigService, contextMiddleware, createRequestLoggingMiddleware, Log, Logger, configureLogging } from './logging';
13
- export { corsMiddleware } from './middlewares/cors.middleware';
14
- export { authMiddleware } from './middlewares/auth.middleware';
15
- export { swaggerMiddleware } from './middlewares/swagger.middleware';
16
- export { AppConfig } from './config/app.config';
17
- export { createBootifyApp } from './api';
1
+ export * from './api';
2
+ export * from './middleware';
3
+ export * from './cache';
4
+ export * from './core';
5
+ export * from './events';
6
+ export * from './logging';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AAExB,cAAc,WAAW,CAAA"}
package/dist/index.js CHANGED
@@ -1,98 +1,23 @@
1
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
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerEventHandlers = exports.EmitEvent = exports.EventListener = exports.EventEmitter = exports.Event = exports.EventRegistry = exports.EventBus = exports.ApiOperation = exports.ApiResponse = exports.ApiSecurity = exports.ApiTags = exports.InjectConfig = exports.ValidateResponse = exports.ValidateParams = exports.ValidateQuery = exports.ValidateBody = exports.UseMiddleware = exports.Query = exports.Param = exports.Body = exports.Res = exports.Req = exports.Delete = exports.Put = exports.Post = exports.Get = exports.Controller = exports.Repository = exports.Service = exports.Injectable = exports.matchRoute = exports.parseBody = exports.parseQuery = exports.MiddlewareStack = exports.errorHandler = exports.ForbiddenError = exports.UnauthorizedError = exports.NotFoundError = exports.ValidationError = exports.HttpError = exports.zodToOpenAPI = exports.ValidationService = exports.OpenAPIGenerator = exports.Config = exports.getConfigInstance = exports.Scope = exports.Container = exports.container = exports.Router = exports.Application = void 0;
4
- exports.createBootifyApp = exports.AppConfig = exports.swaggerMiddleware = exports.authMiddleware = exports.corsMiddleware = exports.configureLogging = exports.Logger = exports.Log = exports.createRequestLoggingMiddleware = exports.contextMiddleware = exports.LoggingConfigService = exports.StartupLoggerService = exports.LogContextService = exports.LoggerService = exports.configureEventSystem = exports.MemoryEventStore = exports.MetricsMiddleware = exports.ValidationMiddleware = exports.LoggingMiddleware = void 0;
5
- // Core exports
6
- var application_1 = require("./core/application");
7
- Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return application_1.Application; } });
8
- var router_1 = require("./core/router");
9
- Object.defineProperty(exports, "Router", { enumerable: true, get: function () { return router_1.Router; } });
10
- var container_1 = require("./core/container");
11
- Object.defineProperty(exports, "container", { enumerable: true, get: function () { return container_1.container; } });
12
- Object.defineProperty(exports, "Container", { enumerable: true, get: function () { return container_1.Container; } });
13
- Object.defineProperty(exports, "Scope", { enumerable: true, get: function () { return container_1.Scope; } });
14
- var config_1 = require("./core/config");
15
- Object.defineProperty(exports, "getConfigInstance", { enumerable: true, get: function () { return config_1.getConfigInstance; } });
16
- Object.defineProperty(exports, "Config", { enumerable: true, get: function () { return config_1.Config; } });
17
- var openapi_1 = require("./core/openapi");
18
- Object.defineProperty(exports, "OpenAPIGenerator", { enumerable: true, get: function () { return openapi_1.OpenAPIGenerator; } });
19
- var validation_1 = require("./core/validation");
20
- Object.defineProperty(exports, "ValidationService", { enumerable: true, get: function () { return validation_1.ValidationService; } });
21
- Object.defineProperty(exports, "zodToOpenAPI", { enumerable: true, get: function () { return validation_1.zodToOpenAPI; } });
22
- var errors_1 = require("./core/errors");
23
- Object.defineProperty(exports, "HttpError", { enumerable: true, get: function () { return errors_1.HttpError; } });
24
- Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_1.ValidationError; } });
25
- Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return errors_1.NotFoundError; } });
26
- Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: function () { return errors_1.UnauthorizedError; } });
27
- Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return errors_1.ForbiddenError; } });
28
- Object.defineProperty(exports, "errorHandler", { enumerable: true, get: function () { return errors_1.errorHandler; } });
29
- var middleware_1 = require("./core/middleware");
30
- Object.defineProperty(exports, "MiddlewareStack", { enumerable: true, get: function () { return middleware_1.MiddlewareStack; } });
31
- var utils_1 = require("./core/utils");
32
- Object.defineProperty(exports, "parseQuery", { enumerable: true, get: function () { return utils_1.parseQuery; } });
33
- Object.defineProperty(exports, "parseBody", { enumerable: true, get: function () { return utils_1.parseBody; } });
34
- Object.defineProperty(exports, "matchRoute", { enumerable: true, get: function () { return utils_1.matchRoute; } });
35
- // Decorator exports
36
- var decorators_1 = require("./core/decorators");
37
- Object.defineProperty(exports, "Injectable", { enumerable: true, get: function () { return decorators_1.Injectable; } });
38
- Object.defineProperty(exports, "Service", { enumerable: true, get: function () { return decorators_1.Service; } });
39
- Object.defineProperty(exports, "Repository", { enumerable: true, get: function () { return decorators_1.Repository; } });
40
- Object.defineProperty(exports, "Controller", { enumerable: true, get: function () { return decorators_1.Controller; } });
41
- Object.defineProperty(exports, "Get", { enumerable: true, get: function () { return decorators_1.Get; } });
42
- Object.defineProperty(exports, "Post", { enumerable: true, get: function () { return decorators_1.Post; } });
43
- Object.defineProperty(exports, "Put", { enumerable: true, get: function () { return decorators_1.Put; } });
44
- Object.defineProperty(exports, "Delete", { enumerable: true, get: function () { return decorators_1.Delete; } });
45
- Object.defineProperty(exports, "Req", { enumerable: true, get: function () { return decorators_1.Req; } });
46
- Object.defineProperty(exports, "Res", { enumerable: true, get: function () { return decorators_1.Res; } });
47
- Object.defineProperty(exports, "Body", { enumerable: true, get: function () { return decorators_1.Body; } });
48
- Object.defineProperty(exports, "Param", { enumerable: true, get: function () { return decorators_1.Param; } });
49
- Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return decorators_1.Query; } });
50
- Object.defineProperty(exports, "UseMiddleware", { enumerable: true, get: function () { return decorators_1.UseMiddleware; } });
51
- Object.defineProperty(exports, "ValidateBody", { enumerable: true, get: function () { return decorators_1.ValidateBody; } });
52
- Object.defineProperty(exports, "ValidateQuery", { enumerable: true, get: function () { return decorators_1.ValidateQuery; } });
53
- Object.defineProperty(exports, "ValidateParams", { enumerable: true, get: function () { return decorators_1.ValidateParams; } });
54
- Object.defineProperty(exports, "ValidateResponse", { enumerable: true, get: function () { return decorators_1.ValidateResponse; } });
55
- Object.defineProperty(exports, "InjectConfig", { enumerable: true, get: function () { return decorators_1.InjectConfig; } });
56
- Object.defineProperty(exports, "ApiTags", { enumerable: true, get: function () { return decorators_1.ApiTags; } });
57
- Object.defineProperty(exports, "ApiSecurity", { enumerable: true, get: function () { return decorators_1.ApiSecurity; } });
58
- Object.defineProperty(exports, "ApiResponse", { enumerable: true, get: function () { return decorators_1.ApiResponse; } });
59
- Object.defineProperty(exports, "ApiOperation", { enumerable: true, get: function () { return decorators_1.ApiOperation; } });
60
- // Event system exports
61
- var events_1 = require("./events");
62
- Object.defineProperty(exports, "EventBus", { enumerable: true, get: function () { return events_1.EventBus; } });
63
- Object.defineProperty(exports, "EventRegistry", { enumerable: true, get: function () { return events_1.EventRegistry; } });
64
- Object.defineProperty(exports, "Event", { enumerable: true, get: function () { return events_1.Event; } });
65
- Object.defineProperty(exports, "EventEmitter", { enumerable: true, get: function () { return events_1.EventEmitter; } });
66
- Object.defineProperty(exports, "EventListener", { enumerable: true, get: function () { return events_1.EventListener; } });
67
- Object.defineProperty(exports, "EmitEvent", { enumerable: true, get: function () { return events_1.EmitEvent; } });
68
- Object.defineProperty(exports, "registerEventHandlers", { enumerable: true, get: function () { return events_1.registerEventHandlers; } });
69
- Object.defineProperty(exports, "LoggingMiddleware", { enumerable: true, get: function () { return events_1.LoggingMiddleware; } });
70
- Object.defineProperty(exports, "ValidationMiddleware", { enumerable: true, get: function () { return events_1.ValidationMiddleware; } });
71
- Object.defineProperty(exports, "MetricsMiddleware", { enumerable: true, get: function () { return events_1.MetricsMiddleware; } });
72
- Object.defineProperty(exports, "MemoryEventStore", { enumerable: true, get: function () { return events_1.MemoryEventStore; } });
73
- Object.defineProperty(exports, "configureEventSystem", { enumerable: true, get: function () { return events_1.configureEventSystem; } });
74
- // Logging system exports
75
- var logging_1 = require("./logging");
76
- Object.defineProperty(exports, "LoggerService", { enumerable: true, get: function () { return logging_1.LoggerService; } });
77
- Object.defineProperty(exports, "LogContextService", { enumerable: true, get: function () { return logging_1.LogContextService; } });
78
- Object.defineProperty(exports, "StartupLoggerService", { enumerable: true, get: function () { return logging_1.StartupLoggerService; } });
79
- Object.defineProperty(exports, "LoggingConfigService", { enumerable: true, get: function () { return logging_1.LoggingConfigService; } });
80
- Object.defineProperty(exports, "contextMiddleware", { enumerable: true, get: function () { return logging_1.contextMiddleware; } });
81
- Object.defineProperty(exports, "createRequestLoggingMiddleware", { enumerable: true, get: function () { return logging_1.createRequestLoggingMiddleware; } });
82
- Object.defineProperty(exports, "Log", { enumerable: true, get: function () { return logging_1.Log; } });
83
- Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logging_1.Logger; } });
84
- Object.defineProperty(exports, "configureLogging", { enumerable: true, get: function () { return logging_1.configureLogging; } });
85
- // Middleware exports
86
- var cors_middleware_1 = require("./middlewares/cors.middleware");
87
- Object.defineProperty(exports, "corsMiddleware", { enumerable: true, get: function () { return cors_middleware_1.corsMiddleware; } });
88
- var auth_middleware_1 = require("./middlewares/auth.middleware");
89
- Object.defineProperty(exports, "authMiddleware", { enumerable: true, get: function () { return auth_middleware_1.authMiddleware; } });
90
- var swagger_middleware_1 = require("./middlewares/swagger.middleware");
91
- Object.defineProperty(exports, "swaggerMiddleware", { enumerable: true, get: function () { return swagger_middleware_1.swaggerMiddleware; } });
92
- // Configuration exports
93
- var app_config_1 = require("./config/app.config");
94
- Object.defineProperty(exports, "AppConfig", { enumerable: true, get: function () { return app_config_1.AppConfig; } });
95
- // Public API
96
- var api_1 = require("./api");
97
- Object.defineProperty(exports, "createBootifyApp", { enumerable: true, get: function () { return api_1.createBootifyApp; } });
17
+ __exportStar(require("./api"), exports);
18
+ __exportStar(require("./middleware"), exports);
19
+ __exportStar(require("./cache"), exports);
20
+ __exportStar(require("./core"), exports);
21
+ __exportStar(require("./events"), exports);
22
+ __exportStar(require("./logging"), exports);
98
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,eAAe;AACf,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,wCAAuC;AAA9B,gGAAA,MAAM,OAAA;AACf,8CAA+D;AAAtD,sGAAA,SAAS,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,kGAAA,KAAK,OAAA;AACpC,wCAA0D;AAAjD,2GAAA,iBAAiB,OAAA;AAAE,gGAAA,MAAM,OAAA;AAClC,0CAAkD;AAAzC,2GAAA,gBAAgB,OAAA;AACzB,gDAAoE;AAA3D,+GAAA,iBAAiB,OAAA;AAAE,0GAAA,YAAY,OAAA;AACxC,wCAOuB;AANrB,mGAAA,SAAS,OAAA;AACT,yGAAA,eAAe,OAAA;AACf,uGAAA,aAAa,OAAA;AACb,2GAAA,iBAAiB,OAAA;AACjB,wGAAA,cAAc,OAAA;AACd,sGAAA,YAAY,OAAA;AAEd,gDAI2B;AAFzB,6GAAA,eAAe,OAAA;AAGjB,sCAIsB;AAHpB,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,mGAAA,UAAU,OAAA;AAGZ,oBAAoB;AACpB,gDAwB2B;AAvBzB,wGAAA,UAAU,OAAA;AACV,qGAAA,OAAO,OAAA;AACP,wGAAA,UAAU,OAAA;AACV,wGAAA,UAAU,OAAA;AACV,iGAAA,GAAG,OAAA;AACH,kGAAA,IAAI,OAAA;AACJ,iGAAA,GAAG,OAAA;AACH,oGAAA,MAAM,OAAA;AACN,iGAAA,GAAG,OAAA;AACH,iGAAA,GAAG,OAAA;AACH,kGAAA,IAAI,OAAA;AACJ,mGAAA,KAAK,OAAA;AACL,mGAAA,KAAK,OAAA;AACL,2GAAA,aAAa,OAAA;AACb,0GAAA,YAAY,OAAA;AACZ,2GAAA,aAAa,OAAA;AACb,4GAAA,cAAc,OAAA;AACd,8GAAA,gBAAgB,OAAA;AAChB,0GAAA,YAAY,OAAA;AACZ,qGAAA,OAAO,OAAA;AACP,yGAAA,WAAW,OAAA;AACX,yGAAA,WAAW,OAAA;AACX,0GAAA,YAAY,OAAA;AAGd,uBAAuB;AACvB,mCAakB;AAZhB,kGAAA,QAAQ,OAAA;AACR,uGAAA,aAAa,OAAA;AACb,+FAAA,KAAK,OAAA;AACL,sGAAA,YAAY,OAAA;AACZ,uGAAA,aAAa,OAAA;AACb,mGAAA,SAAS,OAAA;AACT,+GAAA,qBAAqB,OAAA;AACrB,2GAAA,iBAAiB,OAAA;AACjB,8GAAA,oBAAoB,OAAA;AACpB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAChB,8GAAA,oBAAoB,OAAA;AAGtB,yBAAyB;AACzB,qCAUmB;AATjB,wGAAA,aAAa,OAAA;AACb,4GAAA,iBAAiB,OAAA;AACjB,+GAAA,oBAAoB,OAAA;AACpB,+GAAA,oBAAoB,OAAA;AACpB,4GAAA,iBAAiB,OAAA;AACjB,yHAAA,8BAA8B,OAAA;AAC9B,8FAAA,GAAG,OAAA;AACH,iGAAA,MAAM,OAAA;AACN,2GAAA,gBAAgB,OAAA;AAGlB,qBAAqB;AACrB,iEAA+D;AAAtD,iHAAA,cAAc,OAAA;AACvB,iEAA+D;AAAtD,iHAAA,cAAc,OAAA;AACvB,uEAAqE;AAA5D,uHAAA,iBAAiB,OAAA;AAE1B,wBAAwB;AACxB,kDAAgD;AAAvC,uGAAA,SAAS,OAAA;AAElB,aAAa;AACb,6BAAyC;AAAhC,uGAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,+CAA4B;AAC5B,0CAAuB;AACvB,yCAAsB;AACtB,2CAAwB;AAExB,4CAAyB"}
@@ -1,5 +1,33 @@
1
- import { LoggingConfig } from '../types/logging.types';
1
+ import { z } from 'zod';
2
+ declare const LoggingConfigSchema: z.ZodObject<{
3
+ LOG_LEVEL: z.ZodDefault<z.ZodEnum<["trace", "debug", "info", "warn", "error", "fatal"]>>;
4
+ SERVICE_NAME: z.ZodDefault<z.ZodString>;
5
+ CLICKHOUSE_ENABLED: z.ZodDefault<z.ZodEffects<z.ZodBoolean, boolean, unknown>>;
6
+ CLICKHOUSE_URL: z.ZodDefault<z.ZodString>;
7
+ CLICKHOUSE_USER: z.ZodDefault<z.ZodString>;
8
+ CLICKHOUSE_PASSWORD: z.ZodDefault<z.ZodString>;
9
+ CLICKHOUSE_DB: z.ZodDefault<z.ZodString>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ LOG_LEVEL: "trace" | "error" | "fatal" | "warn" | "info" | "debug";
12
+ SERVICE_NAME: string;
13
+ CLICKHOUSE_ENABLED: boolean;
14
+ CLICKHOUSE_URL: string;
15
+ CLICKHOUSE_USER: string;
16
+ CLICKHOUSE_PASSWORD: string;
17
+ CLICKHOUSE_DB: string;
18
+ }, {
19
+ LOG_LEVEL?: "trace" | "error" | "fatal" | "warn" | "info" | "debug" | undefined;
20
+ SERVICE_NAME?: string | undefined;
21
+ CLICKHOUSE_ENABLED?: unknown;
22
+ CLICKHOUSE_URL?: string | undefined;
23
+ CLICKHOUSE_USER?: string | undefined;
24
+ CLICKHOUSE_PASSWORD?: string | undefined;
25
+ CLICKHOUSE_DB?: string | undefined;
26
+ }>;
27
+ export type LoggingConfigType = z.infer<typeof LoggingConfigSchema>;
2
28
  export declare class LoggingConfigService {
3
- static createConfig(): LoggingConfig;
4
- private static createTransports;
29
+ readonly config: LoggingConfigType;
30
+ constructor();
5
31
  }
32
+ export {};
33
+ //# sourceMappingURL=logging.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.config.d.ts","sourceRoot":"","sources":["../../../src/logging/config/logging.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;EAcvB,CAAA;AAGF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAGnE,qBACa,oBAAoB;IAC/B,SAAgB,MAAM,EAAE,iBAAiB,CAAA;;CAgB1C"}
@@ -1,101 +1,51 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
4
10
  };
5
11
  Object.defineProperty(exports, "__esModule", { value: true });
6
12
  exports.LoggingConfigService = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- class LoggingConfigService {
9
- static createConfig() {
10
- const environment = process.env.NODE_ENV || 'development';
11
- const isDevelopment = environment === 'development';
12
- const config = {
13
- level: process.env.LOG_LEVEL || (isDevelopment ? 'trace' : 'info'),
14
- serviceName: process.env.SERVICE_NAME || 'bootifyjs-app',
15
- serviceVersion: process.env.SERVICE_VERSION || '1.0.0',
16
- environment,
17
- logHeaders: process.env.LOG_HEADERS === 'true' || isDevelopment,
18
- logStackTrace: process.env.LOG_STACK_TRACE !== 'false',
19
- enableStartupLogs: process.env.ENABLE_STARTUP_LOGS !== 'false' || isDevelopment,
20
- enableComponentLogs: process.env.ENABLE_COMPONENT_LOGS !== 'false' || isDevelopment,
21
- enablePerformanceLogs: process.env.ENABLE_PERFORMANCE_LOGS === 'true' || isDevelopment,
22
- rotation: {
23
- enabled: process.env.LOG_ROTATION_ENABLED === 'true',
24
- maxFiles: parseInt(process.env.LOG_MAX_FILES || '10'),
25
- maxSize: process.env.LOG_MAX_SIZE || '100MB',
26
- datePattern: process.env.LOG_DATE_PATTERN || 'YYYY-MM-DD'
27
- },
28
- correlation: {
29
- enabled: process.env.LOG_CORRELATION_ENABLED !== 'false',
30
- headerName: process.env.LOG_CORRELATION_HEADER || 'x-correlation-id'
31
- },
32
- performance: {
33
- enabled: process.env.LOG_PERFORMANCE_ENABLED === 'true' || isDevelopment,
34
- slowThreshold: parseInt(process.env.LOG_SLOW_THRESHOLD || '1000')
35
- }
36
- };
37
- // Configure transports based on environment
38
- config.transports = LoggingConfigService.createTransports(config);
39
- return config;
40
- }
41
- static createTransports(config) {
42
- const transports = [];
43
- if (config.environment === 'development') {
44
- // Pretty console output for development with detailed formatting
45
- transports.push({
46
- level: 'trace',
47
- target: 'pino-pretty',
48
- options: {
49
- colorize: true,
50
- translateTime: 'SYS:standard',
51
- ignore: 'pid,hostname',
52
- messageKey: 'message',
53
- levelFirst: true,
54
- messageFormat: '{component} {message}'
55
- }
56
- });
57
- }
58
- else {
59
- // JSON output for production
60
- transports.push({
61
- level: config.level,
62
- target: 'pino/file',
63
- options: {
64
- destination: 1 // stdout
65
- }
66
- });
13
+ const zod_1 = require("zod");
14
+ // import * as dotenv from 'dotenv'
15
+ const core_1 = require("../../core");
16
+ // 1. Define the validation schema for logging configuration
17
+ const LoggingConfigSchema = zod_1.z.object({
18
+ LOG_LEVEL: zod_1.z
19
+ .enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal'])
20
+ .default(process.env.NODE_ENV === 'production' ? 'info' : 'debug'),
21
+ SERVICE_NAME: zod_1.z.string().default('bootifyjs-app'),
22
+ // ClickHouse Configuration
23
+ CLICKHOUSE_ENABLED: zod_1.z
24
+ .preprocess((val) => String(val).toLowerCase() === 'true', zod_1.z.boolean())
25
+ .default(false),
26
+ CLICKHOUSE_URL: zod_1.z.string().url().default('http://localhost:8123'),
27
+ CLICKHOUSE_USER: zod_1.z.string().default('default'),
28
+ CLICKHOUSE_PASSWORD: zod_1.z.string().default(''),
29
+ CLICKHOUSE_DB: zod_1.z.string().default('default'),
30
+ });
31
+ // 3. The service that provides the validated configuration
32
+ let LoggingConfigService = class LoggingConfigService {
33
+ constructor() {
34
+ // dotenv.config()
35
+ const result = LoggingConfigSchema.safeParse(process.env);
36
+ // console.log(process.env.NODE_ENV)
37
+ if (!result.success) {
38
+ console.error('❌ Invalid Logging Configuration:', result.error.flatten().fieldErrors);
39
+ throw new Error('Logging configuration failed validation. Exiting.');
67
40
  }
68
- // File transport with rotation for production
69
- if (config.rotation?.enabled && config.environment !== 'development') {
70
- const logDir = process.env.LOG_DIR || './logs';
71
- transports.push({
72
- level: 'info',
73
- target: 'pino-roll',
74
- options: {
75
- file: path_1.default.join(logDir, 'app.log'),
76
- frequency: 'daily',
77
- size: config.rotation.maxSize,
78
- limit: {
79
- count: config.rotation.maxFiles
80
- }
81
- }
82
- });
83
- // Separate error log file
84
- transports.push({
85
- level: 'error',
86
- target: 'pino-roll',
87
- options: {
88
- file: path_1.default.join(logDir, 'error.log'),
89
- frequency: 'daily',
90
- size: config.rotation.maxSize,
91
- limit: {
92
- count: config.rotation.maxFiles
93
- }
94
- }
95
- });
96
- }
97
- return transports;
41
+ this.config = result.data;
42
+ console.log('[Logging] Configuration loaded and validated successfully.');
98
43
  }
99
- }
44
+ };
100
45
  exports.LoggingConfigService = LoggingConfigService;
46
+ exports.LoggingConfigService = LoggingConfigService = __decorate([
47
+ (0, core_1.Service)() // Eagerly load to validate config at startup
48
+ ,
49
+ __metadata("design:paramtypes", [])
50
+ ], LoggingConfigService);
101
51
  //# sourceMappingURL=logging.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging.config.js","sourceRoot":"","sources":["../../../src/logging/config/logging.config.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AAGxB,MAAa,oBAAoB;IAC/B,MAAM,CAAC,YAAY;QACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;QAC1D,MAAM,aAAa,GAAG,WAAW,KAAK,aAAa,CAAC;QAEpD,MAAM,MAAM,GAAkB;YAC5B,KAAK,EAAG,OAAO,CAAC,GAAG,CAAC,SAAiB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3E,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,eAAe;YACxD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO;YACtD,WAAW;YACX,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,aAAa;YAC/D,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,OAAO;YACtD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO,IAAI,aAAa;YAC/E,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,OAAO,IAAI,aAAa;YACnF,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,IAAI,aAAa;YACtF,QAAQ,EAAE;gBACR,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM;gBACpD,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC;gBACrD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO;gBAC5C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,YAAY;aAC1D;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,OAAO;gBACxD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,kBAAkB;aACrE;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,IAAI,aAAa;gBACxE,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC;aAClE;SACF,CAAC;QAEF,4CAA4C;QAC5C,MAAM,CAAC,UAAU,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAElE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,MAAqB;QACnD,MAAM,UAAU,GAAU,EAAE,CAAC;QAE7B,IAAI,MAAM,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;YACzC,iEAAiE;YACjE,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE;oBACP,QAAQ,EAAE,IAAI;oBACd,aAAa,EAAE,cAAc;oBAC7B,MAAM,EAAE,cAAc;oBACtB,UAAU,EAAE,SAAS;oBACrB,UAAU,EAAE,IAAI;oBAChB,aAAa,EAAE,uBAAuB;iBACvC;aACF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,6BAA6B;YAC7B,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE;oBACP,WAAW,EAAE,CAAC,CAAC,SAAS;iBACzB;aACF,CAAC,CAAC;QACL,CAAC;QAED,8CAA8C;QAC9C,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC;YAE/C,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE;oBACP,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;oBAClC,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;oBAC7B,KAAK,EAAE;wBACL,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;qBAChC;iBACF;aACF,CAAC,CAAC;YAEH,0BAA0B;YAC1B,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE;oBACP,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;oBACpC,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;oBAC7B,KAAK,EAAE;wBACL,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;qBAChC;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAnGD,oDAmGC"}
1
+ {"version":3,"file":"logging.config.js","sourceRoot":"","sources":["../../../src/logging/config/logging.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAuB;AACvB,mCAAmC;AACnC,qCAAoC;AAEpC,4DAA4D;AAC5D,MAAM,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,OAAC;SACT,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC1D,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACpE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;IAEjD,2BAA2B;IAC3B,kBAAkB,EAAE,OAAC;SAClB,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC;SACtE,OAAO,CAAC,KAAK,CAAC;IACjB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC;IACjE,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IAC9C,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;CAC7C,CAAC,CAAA;AAKF,2DAA2D;AAEpD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAG/B;QACE,kBAAkB;QAClB,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAEzD,oCAAoC;QAEpC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;YACrF,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACtE,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAA;QACzB,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;IAC3E,CAAC;CACF,CAAA;AAjBY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,cAAO,GAAE,CAAC,6CAA6C;;;GAC3C,oBAAoB,CAiBhC"}
@@ -0,0 +1,16 @@
1
+ export interface AuditOptions {
2
+ action: string;
3
+ resource: string;
4
+ resourceIdPath?: string;
5
+ }
6
+ /**
7
+ * A method decorator that creates a structured audit log after a method
8
+ * successfully executes.
9
+ */
10
+ export declare function Audit(options: AuditOptions): MethodDecorator;
11
+ /**
12
+ * A class decorator that injects a child 'logger' instance into the class prototype,
13
+ * automatically namespaced with the class name.
14
+ */
15
+ export declare function Logger(): ClassDecorator;
16
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/logging/core/decorators.ts"],"names":[],"mappings":"AA4DA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,eAAe,CA8B5D;AAID;;;GAGG;AACH,wBAAgB,MAAM,IAAI,cAAc,CAcvC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Audit = Audit;
4
+ exports.Logger = Logger;
5
+ const core_1 = require("../../core");
6
+ const logger_service_1 = require("./logger.service");
7
+ /**
8
+ * A method decorator that creates a structured audit log after a method
9
+ * successfully executes.
10
+ */
11
+ function Audit(options) {
12
+ return (target, propertyKey, descriptor) => {
13
+ const originalMethod = descriptor.value;
14
+ descriptor.value = async function (...args) {
15
+ const result = await originalMethod.apply(this, args);
16
+ // Resolve services from the DI container
17
+ const logger = core_1.container.resolve(logger_service_1.Logger);
18
+ // const contextService = container.resolve(RequestContextService)
19
+ // const requestContext = contextService.getStoreObject() // Get context as a plain object
20
+ const store = core_1.requestContextStore.getStore() || new Map();
21
+ const resourceId = options.resourceIdPath
22
+ ? extractValueFromPath(options.resourceIdPath, { args, result })
23
+ : undefined;
24
+ const auditPayload = {
25
+ action: options.action,
26
+ resource: options.resource,
27
+ resourceId,
28
+ actor: {
29
+ ...Object.fromEntries(store.entries()),
30
+ },
31
+ };
32
+ logger.audit(auditPayload);
33
+ return result;
34
+ };
35
+ };
36
+ }
37
+ // --- @Logger Class Decorator ---
38
+ /**
39
+ * A class decorator that injects a child 'logger' instance into the class prototype,
40
+ * automatically namespaced with the class name.
41
+ */
42
+ function Logger() {
43
+ return function (target) {
44
+ Object.defineProperty(target.prototype, 'logger', {
45
+ get: function () {
46
+ if (!this._logger) {
47
+ const loggerService = core_1.container.resolve(logger_service_1.Logger);
48
+ this._logger = loggerService.child({ component: target.name });
49
+ }
50
+ return this._logger;
51
+ },
52
+ enumerable: false,
53
+ configurable: true,
54
+ });
55
+ };
56
+ }
57
+ // --- Helper Functions ---
58
+ function extractValueFromPath(path, context) {
59
+ const parts = path.split('.');
60
+ let current = context;
61
+ for (const part of parts) {
62
+ if (current === null || current === undefined)
63
+ return undefined;
64
+ // Special handling for array indices like 'args.0'
65
+ if (Array.isArray(current) && !isNaN(parseInt(part, 10))) {
66
+ current = current[parseInt(part, 10)];
67
+ }
68
+ else {
69
+ current = current[part];
70
+ }
71
+ }
72
+ return current;
73
+ }
74
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/logging/core/decorators.ts"],"names":[],"mappings":";;AAsEA,sBA8BC;AAQD,wBAcC;AA1HD,qCAA2D;AAC3D,qDAA0D;AAiE1D;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAqB;IACzC,OAAO,CAAC,MAAW,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACnF,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAA;QAEvC,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAW;YAC/C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAErD,yCAAyC;YACzC,MAAM,MAAM,GAAG,gBAAS,CAAC,OAAO,CAAgB,uBAAa,CAAC,CAAA;YAC9D,oEAAoE;YACpE,4FAA4F;YAC5F,MAAM,KAAK,GAAG,0BAAmB,CAAC,QAAQ,EAAE,IAAI,IAAI,GAAG,EAAE,CAAA;YAEzD,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc;gBACvC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAChE,CAAC,CAAC,SAAS,CAAA;YAEb,MAAM,YAAY,GAAG;gBACnB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU;gBACV,KAAK,EAAE;oBACL,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;iBACvC;aACF,CAAA;YACD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YAE1B,OAAO,MAAM,CAAA;QACf,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED,kCAAkC;AAElC;;;GAGG;AACH,SAAgB,MAAM;IACpB,OAAO,UAAU,MAAW;QAC1B,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE;YAChD,GAAG,EAAE;gBACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,aAAa,GAAG,gBAAS,CAAC,OAAO,CAAgB,uBAAa,CAAC,CAAA;oBACrE,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;gBAChE,CAAC;gBACD,OAAO,IAAI,CAAC,OAAO,CAAA;YACrB,CAAC;YACD,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC;AAED,2BAA2B;AAE3B,SAAS,oBAAoB,CAAC,IAAY,EAAE,OAAqC;IAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,OAAO,GAAQ,OAAO,CAAA;IAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAC/D,mDAAmD;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import pino from 'pino';
2
+ export declare const LOGGER_TOKEN: unique symbol;
3
+ export declare const loggerFactory: () => pino.Logger;
4
+ //# sourceMappingURL=logger.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.provider.d.ts","sourceRoot":"","sources":["../../../src/logging/core/logger.provider.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAKvB,eAAO,MAAM,YAAY,eAAuB,CAAA;AAIhD,eAAO,MAAM,aAAa,QAAO,IAAI,CAAC,MAuDrC,CAAA"}