bootifyjs 0.0.3 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +321 -465
  3. package/dist/api.d.ts +32 -0
  4. package/dist/api.js +149 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/config/app.config.d.ts +29 -0
  7. package/dist/config/app.config.js +55 -0
  8. package/dist/config/app.config.js.map +1 -0
  9. package/dist/controllers/config.controller.d.ts +16 -0
  10. package/dist/controllers/config.controller.js +66 -0
  11. package/dist/controllers/config.controller.js.map +1 -0
  12. package/dist/controllers/events.controller.d.ts +66 -0
  13. package/dist/controllers/events.controller.js +145 -0
  14. package/dist/controllers/events.controller.js.map +1 -0
  15. package/dist/controllers/health.controller.d.ts +20 -0
  16. package/dist/controllers/health.controller.js +92 -0
  17. package/dist/controllers/health.controller.js.map +1 -0
  18. package/dist/controllers/user.controller.d.ts +13 -0
  19. package/dist/controllers/user.controller.js +209 -0
  20. package/dist/controllers/user.controller.js.map +1 -0
  21. package/dist/core/application.d.ts +21 -0
  22. package/dist/core/application.js +90 -0
  23. package/dist/core/application.js.map +1 -0
  24. package/dist/core/config.d.ts +3 -0
  25. package/dist/core/config.js +78 -0
  26. package/dist/core/config.js.map +1 -0
  27. package/dist/core/container.d.ts +17 -0
  28. package/dist/core/container.js +92 -0
  29. package/dist/core/container.js.map +1 -0
  30. package/dist/core/decorators.d.ts +28 -0
  31. package/dist/core/decorators.js +204 -0
  32. package/dist/core/decorators.js.map +1 -0
  33. package/dist/core/errors.d.ts +18 -0
  34. package/dist/core/errors.js +74 -0
  35. package/dist/core/errors.js.map +1 -0
  36. package/dist/core/middleware.d.ts +8 -0
  37. package/dist/core/middleware.js +23 -0
  38. package/dist/core/middleware.js.map +1 -0
  39. package/dist/core/openapi.d.ts +80 -0
  40. package/dist/core/openapi.js +189 -0
  41. package/dist/core/openapi.js.map +1 -0
  42. package/dist/core/router.d.ts +32 -0
  43. package/dist/core/router.js +266 -0
  44. package/dist/core/router.js.map +1 -0
  45. package/dist/core/utils.d.ts +7 -0
  46. package/dist/core/utils.js +75 -0
  47. package/dist/core/utils.js.map +1 -0
  48. package/dist/core/validation.d.ts +15 -0
  49. package/dist/core/validation.js +161 -0
  50. package/dist/core/validation.js.map +1 -0
  51. package/dist/events/core/event-bus.d.ts +26 -0
  52. package/dist/events/core/event-bus.js +253 -0
  53. package/dist/events/core/event-bus.js.map +1 -0
  54. package/dist/events/core/event-registry.d.ts +31 -0
  55. package/dist/events/core/event-registry.js +170 -0
  56. package/dist/events/core/event-registry.js.map +1 -0
  57. package/dist/events/decorators/event.decorators.d.ts +11 -0
  58. package/dist/events/decorators/event.decorators.js +123 -0
  59. package/dist/events/decorators/event.decorators.js.map +1 -0
  60. package/dist/events/examples/system.events.d.ts +15 -0
  61. package/dist/events/examples/system.events.js +28 -0
  62. package/dist/events/examples/system.events.js.map +1 -0
  63. package/dist/events/examples/user.events.d.ts +68 -0
  64. package/dist/events/examples/user.events.js +73 -0
  65. package/dist/events/examples/user.events.js.map +1 -0
  66. package/dist/events/examples/user.handlers.d.ts +20 -0
  67. package/dist/events/examples/user.handlers.js +157 -0
  68. package/dist/events/examples/user.handlers.js.map +1 -0
  69. package/dist/events/index.d.ts +13 -0
  70. package/dist/events/index.js +71 -0
  71. package/dist/events/index.js.map +1 -0
  72. package/dist/events/middleware/logging.middleware.d.ts +7 -0
  73. package/dist/events/middleware/logging.middleware.js +44 -0
  74. package/dist/events/middleware/logging.middleware.js.map +1 -0
  75. package/dist/events/middleware/metrics.middleware.d.ts +11 -0
  76. package/dist/events/middleware/metrics.middleware.js +87 -0
  77. package/dist/events/middleware/metrics.middleware.js.map +1 -0
  78. package/dist/events/middleware/validation.middleware.d.ts +8 -0
  79. package/dist/events/middleware/validation.middleware.js +63 -0
  80. package/dist/events/middleware/validation.middleware.js.map +1 -0
  81. package/dist/events/store/memory-event-store.d.ts +21 -0
  82. package/dist/events/store/memory-event-store.js +81 -0
  83. package/dist/events/store/memory-event-store.js.map +1 -0
  84. package/dist/events/types/event.types.d.ts +57 -0
  85. package/dist/{decorators/cache/ICacheClient.js → events/types/event.types.js} +1 -1
  86. package/dist/events/types/event.types.js.map +1 -0
  87. package/dist/examples/basic-api.d.ts +1 -0
  88. package/dist/examples/basic-api.js +120 -0
  89. package/dist/examples/basic-api.js.map +1 -0
  90. package/dist/index.d.ts +17 -11
  91. package/dist/index.js +95 -31
  92. package/dist/index.js.map +1 -1
  93. package/dist/logging/config/logging.config.d.ts +5 -0
  94. package/dist/logging/config/logging.config.js +101 -0
  95. package/dist/logging/config/logging.config.js.map +1 -0
  96. package/dist/logging/core/log-context.service.d.ts +11 -0
  97. package/dist/logging/core/log-context.service.js +40 -0
  98. package/dist/logging/core/log-context.service.js.map +1 -0
  99. package/dist/logging/core/logger.service.d.ts +29 -0
  100. package/dist/logging/core/logger.service.js +178 -0
  101. package/dist/logging/core/logger.service.js.map +1 -0
  102. package/dist/logging/core/startup-logger.service.d.ts +17 -0
  103. package/dist/logging/core/startup-logger.service.js +156 -0
  104. package/dist/logging/core/startup-logger.service.js.map +1 -0
  105. package/dist/logging/decorators/log.decorator.d.ts +11 -0
  106. package/dist/logging/decorators/log.decorator.js +80 -0
  107. package/dist/logging/decorators/log.decorator.js.map +1 -0
  108. package/dist/logging/index.d.ts +15 -0
  109. package/dist/logging/index.js +46 -0
  110. package/dist/logging/index.js.map +1 -0
  111. package/dist/logging/middleware/context.middleware.d.ts +2 -0
  112. package/dist/logging/middleware/context.middleware.js +29 -0
  113. package/dist/logging/middleware/context.middleware.js.map +1 -0
  114. package/dist/logging/middleware/request-logging.middleware.d.ts +3 -0
  115. package/dist/logging/middleware/request-logging.middleware.js +78 -0
  116. package/dist/logging/middleware/request-logging.middleware.js.map +1 -0
  117. package/dist/logging/types/logging.types.d.ts +79 -0
  118. package/dist/{decorators/transaction/IDatabaseClient.js → logging/types/logging.types.js} +1 -1
  119. package/dist/logging/types/logging.types.js.map +1 -0
  120. package/dist/middlewares/auth.middleware.d.ts +2 -0
  121. package/dist/middlewares/auth.middleware.js +20 -0
  122. package/dist/middlewares/auth.middleware.js.map +1 -0
  123. package/dist/middlewares/cors.middleware.d.ts +2 -0
  124. package/dist/middlewares/cors.middleware.js +16 -0
  125. package/dist/middlewares/cors.middleware.js.map +1 -0
  126. package/dist/middlewares/swagger.middleware.d.ts +6 -0
  127. package/dist/middlewares/swagger.middleware.js +84 -0
  128. package/dist/middlewares/swagger.middleware.js.map +1 -0
  129. package/dist/repositories/user.repository.d.ts +16 -0
  130. package/dist/repositories/user.repository.js +110 -0
  131. package/dist/repositories/user.repository.js.map +1 -0
  132. package/dist/schemas/user.schemas.d.ts +214 -0
  133. package/dist/schemas/user.schemas.js +71 -0
  134. package/dist/schemas/user.schemas.js.map +1 -0
  135. package/dist/services/config-demo.service.d.ts +10 -0
  136. package/dist/services/config-demo.service.js +88 -0
  137. package/dist/services/config-demo.service.js.map +1 -0
  138. package/dist/services/user.service.d.ts +21 -0
  139. package/dist/services/user.service.js +201 -0
  140. package/dist/services/user.service.js.map +1 -0
  141. package/package.json +49 -14
  142. package/dist/application/Application.d.ts +0 -43
  143. package/dist/application/Application.d.ts.map +0 -1
  144. package/dist/application/Application.js +0 -283
  145. package/dist/application/Application.js.map +0 -1
  146. package/dist/container/container.d.ts +0 -9
  147. package/dist/container/container.d.ts.map +0 -1
  148. package/dist/container/container.js +0 -23
  149. package/dist/container/container.js.map +0 -1
  150. package/dist/decorators/cache/ICacheClient.d.ts +0 -6
  151. package/dist/decorators/cache/ICacheClient.d.ts.map +0 -1
  152. package/dist/decorators/cache/ICacheClient.js.map +0 -1
  153. package/dist/decorators/cache/cache.decorator.d.ts +0 -2
  154. package/dist/decorators/cache/cache.decorator.d.ts.map +0 -1
  155. package/dist/decorators/cache/cache.decorator.js +0 -38
  156. package/dist/decorators/cache/cache.decorator.js.map +0 -1
  157. package/dist/decorators/controller.decorator.d.ts +0 -9
  158. package/dist/decorators/controller.decorator.d.ts.map +0 -1
  159. package/dist/decorators/controller.decorator.js +0 -99
  160. package/dist/decorators/controller.decorator.js.map +0 -1
  161. package/dist/decorators/http.decorator.d.ts +0 -7
  162. package/dist/decorators/http.decorator.d.ts.map +0 -1
  163. package/dist/decorators/http.decorator.js +0 -26
  164. package/dist/decorators/http.decorator.js.map +0 -1
  165. package/dist/decorators/timing.decorator.d.ts +0 -2
  166. package/dist/decorators/timing.decorator.d.ts.map +0 -1
  167. package/dist/decorators/timing.decorator.js +0 -26
  168. package/dist/decorators/timing.decorator.js.map +0 -1
  169. package/dist/decorators/transaction/IDatabaseClient.d.ts +0 -9
  170. package/dist/decorators/transaction/IDatabaseClient.d.ts.map +0 -1
  171. package/dist/decorators/transaction/IDatabaseClient.js.map +0 -1
  172. package/dist/decorators/transaction/transactional.decorator.d.ts +0 -2
  173. package/dist/decorators/transaction/transactional.decorator.d.ts.map +0 -1
  174. package/dist/decorators/transaction/transactional.decorator.js +0 -27
  175. package/dist/decorators/transaction/transactional.decorator.js.map +0 -1
  176. package/dist/index.d.ts.map +0 -1
  177. package/dist/logger/Logger.d.ts +0 -37
  178. package/dist/logger/Logger.d.ts.map +0 -1
  179. package/dist/logger/Logger.js +0 -142
  180. package/dist/logger/Logger.js.map +0 -1
  181. package/dist/middleware/http.d.ts +0 -2
  182. package/dist/middleware/http.d.ts.map +0 -1
  183. package/dist/middleware/http.js +0 -80
  184. package/dist/middleware/http.js.map +0 -1
  185. package/dist/middleware/requestcontext.d.ts +0 -12
  186. package/dist/middleware/requestcontext.d.ts.map +0 -1
  187. package/dist/middleware/requestcontext.js +0 -6
  188. package/dist/middleware/requestcontext.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationMiddleware = void 0;
4
+ const logging_1 = require("../../logging");
5
+ const errors_1 = require("../../core/errors");
6
+ class ValidationMiddleware {
7
+ constructor() {
8
+ this.name = 'ValidationMiddleware';
9
+ this.logger = logging_1.LoggerService.getInstance();
10
+ }
11
+ async execute(event, next) {
12
+ // Validate required event properties
13
+ this.validateEvent(event);
14
+ this.logger.debug('Event validation passed', {
15
+ component: 'EventMiddleware',
16
+ middleware: this.name,
17
+ eventType: event.type,
18
+ eventId: event.id
19
+ });
20
+ await next();
21
+ }
22
+ validateEvent(event) {
23
+ const errors = [];
24
+ // Required fields validation
25
+ if (!event.id)
26
+ errors.push('Event ID is required');
27
+ if (!event.type)
28
+ errors.push('Event type is required');
29
+ if (!event.timestamp)
30
+ errors.push('Event timestamp is required');
31
+ if (typeof event.version !== 'number')
32
+ errors.push('Event version must be a number');
33
+ // Type validation
34
+ if (typeof event.id !== 'string')
35
+ errors.push('Event ID must be a string');
36
+ if (typeof event.type !== 'string')
37
+ errors.push('Event type must be a string');
38
+ if (!(event.timestamp instanceof Date))
39
+ errors.push('Event timestamp must be a Date');
40
+ // Optional fields validation
41
+ if (event.correlationId && typeof event.correlationId !== 'string') {
42
+ errors.push('Correlation ID must be a string');
43
+ }
44
+ if (event.causationId && typeof event.causationId !== 'string') {
45
+ errors.push('Causation ID must be a string');
46
+ }
47
+ if (event.metadata && typeof event.metadata !== 'object') {
48
+ errors.push('Event metadata must be an object');
49
+ }
50
+ if (errors.length > 0) {
51
+ this.logger.error('Event validation failed', new errors_1.ValidationError(errors.join(', ')), {
52
+ component: 'EventMiddleware',
53
+ middleware: this.name,
54
+ eventType: event.type,
55
+ eventId: event.id,
56
+ errors
57
+ });
58
+ throw new errors_1.ValidationError(`Event validation failed: ${errors.join(', ')}`);
59
+ }
60
+ }
61
+ }
62
+ exports.ValidationMiddleware = ValidationMiddleware;
63
+ //# sourceMappingURL=validation.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.middleware.js","sourceRoot":"","sources":["../../../src/events/middleware/validation.middleware.ts"],"names":[],"mappings":";;;AACA,2CAA8C;AAC9C,8CAAoD;AAEpD,MAAa,oBAAoB;IAI/B;QAHA,SAAI,GAAG,sBAAsB,CAAC;QAI5B,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAgB,EAAE,IAAyB;QACvD,qCAAqC;QACrC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YAC3C,SAAS,EAAE,iBAAiB;YAC5B,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,KAAK,CAAC,EAAE;SAClB,CAAC,CAAC;QAEH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAEO,aAAa,CAAC,KAAgB;QACpC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,6BAA6B;QAC7B,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACjE,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAErF,kBAAkB;QAClB,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3E,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC/E,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,YAAY,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAEtF,6BAA6B;QAC7B,IAAI,KAAK,CAAC,aAAa,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,wBAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;gBACnF,SAAS,EAAE,iBAAiB;gBAC5B,UAAU,EAAE,IAAI,CAAC,IAAI;gBACrB,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,MAAM;aACP,CAAC,CAAC;YAEH,MAAM,IAAI,wBAAe,CAAC,4BAA4B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;CACF;AA3DD,oDA2DC"}
@@ -0,0 +1,21 @@
1
+ import { BaseEvent, EventStore } from '../types/event.types';
2
+ export declare class MemoryEventStore implements EventStore {
3
+ private events;
4
+ private eventsByAggregate;
5
+ private logger;
6
+ constructor();
7
+ save(event: BaseEvent): Promise<void>;
8
+ getEvents(aggregateId: string, fromVersion?: number): Promise<BaseEvent[]>;
9
+ getAllEvents(eventType?: string, fromTimestamp?: Date): Promise<BaseEvent[]>;
10
+ getEventCount(): Promise<number>;
11
+ getEventTypes(): Promise<string[]>;
12
+ getEventsByTimeRange(startTime: Date, endTime: Date): Promise<BaseEvent[]>;
13
+ clear(): Promise<void>;
14
+ getStatistics(): {
15
+ totalEvents: number;
16
+ eventsByType: Record<string, number>;
17
+ aggregateCount: number;
18
+ oldestEvent?: Date;
19
+ newestEvent?: Date;
20
+ };
21
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryEventStore = void 0;
4
+ const logging_1 = require("../../logging");
5
+ class MemoryEventStore {
6
+ constructor() {
7
+ this.events = [];
8
+ this.eventsByAggregate = new Map();
9
+ this.logger = logging_1.LoggerService.getInstance();
10
+ }
11
+ async save(event) {
12
+ // Store in main events array
13
+ this.events.push(event);
14
+ // Store by aggregate if it's a domain event
15
+ if ('aggregateId' in event) {
16
+ const aggregateId = event.aggregateId;
17
+ if (!this.eventsByAggregate.has(aggregateId)) {
18
+ this.eventsByAggregate.set(aggregateId, []);
19
+ }
20
+ this.eventsByAggregate.get(aggregateId).push(event);
21
+ }
22
+ this.logger.debug('Event saved to store', {
23
+ component: 'EventStore',
24
+ eventType: event.type,
25
+ eventId: event.id,
26
+ totalEvents: this.events.length
27
+ });
28
+ }
29
+ async getEvents(aggregateId, fromVersion) {
30
+ const aggregateEvents = this.eventsByAggregate.get(aggregateId) || [];
31
+ if (fromVersion !== undefined) {
32
+ return aggregateEvents.filter(event => 'aggregateVersion' in event && event.aggregateVersion >= fromVersion);
33
+ }
34
+ return [...aggregateEvents];
35
+ }
36
+ async getAllEvents(eventType, fromTimestamp) {
37
+ let filteredEvents = [...this.events];
38
+ if (eventType) {
39
+ filteredEvents = filteredEvents.filter(event => event.type === eventType);
40
+ }
41
+ if (fromTimestamp) {
42
+ filteredEvents = filteredEvents.filter(event => event.timestamp >= fromTimestamp);
43
+ }
44
+ return filteredEvents.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
45
+ }
46
+ // Additional utility methods
47
+ async getEventCount() {
48
+ return this.events.length;
49
+ }
50
+ async getEventTypes() {
51
+ const types = new Set(this.events.map(event => event.type));
52
+ return Array.from(types);
53
+ }
54
+ async getEventsByTimeRange(startTime, endTime) {
55
+ return this.events.filter(event => event.timestamp >= startTime && event.timestamp <= endTime);
56
+ }
57
+ async clear() {
58
+ this.events = [];
59
+ this.eventsByAggregate.clear();
60
+ this.logger.info('Event store cleared', {
61
+ component: 'EventStore'
62
+ });
63
+ }
64
+ // Get statistics
65
+ getStatistics() {
66
+ const eventsByType = {};
67
+ this.events.forEach(event => {
68
+ eventsByType[event.type] = (eventsByType[event.type] || 0) + 1;
69
+ });
70
+ const timestamps = this.events.map(e => e.timestamp).sort((a, b) => a.getTime() - b.getTime());
71
+ return {
72
+ totalEvents: this.events.length,
73
+ eventsByType,
74
+ aggregateCount: this.eventsByAggregate.size,
75
+ oldestEvent: timestamps[0],
76
+ newestEvent: timestamps[timestamps.length - 1]
77
+ };
78
+ }
79
+ }
80
+ exports.MemoryEventStore = MemoryEventStore;
81
+ //# sourceMappingURL=memory-event-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-event-store.js","sourceRoot":"","sources":["../../../src/events/store/memory-event-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ export interface BaseEvent {
2
+ id: string;
3
+ type: string;
4
+ timestamp: Date;
5
+ version: number;
6
+ correlationId?: string;
7
+ causationId?: string;
8
+ metadata?: Record<string, any>;
9
+ }
10
+ export interface DomainEvent extends BaseEvent {
11
+ aggregateId: string;
12
+ aggregateType: string;
13
+ aggregateVersion: number;
14
+ }
15
+ export interface SystemEvent extends BaseEvent {
16
+ source: string;
17
+ severity: 'low' | 'medium' | 'high' | 'critical';
18
+ }
19
+ export interface DeadLetterEvent extends BaseEvent {
20
+ failedEventData: string;
21
+ error: string;
22
+ subscriptionId: string;
23
+ }
24
+ export interface EventHandler<T extends BaseEvent = BaseEvent> {
25
+ handle(event: T): Promise<void> | void;
26
+ }
27
+ export interface EventSubscription {
28
+ id: string;
29
+ eventType: string;
30
+ handler: EventHandler;
31
+ priority: number;
32
+ active: boolean;
33
+ metadata?: Record<string, any>;
34
+ }
35
+ export interface EventBusOptions {
36
+ enableLogging?: boolean;
37
+ enableMetrics?: boolean;
38
+ maxRetries?: number;
39
+ retryDelay?: number;
40
+ enableDeadLetterQueue?: boolean;
41
+ }
42
+ export interface EventMiddleware {
43
+ name: string;
44
+ execute(event: BaseEvent, next: () => Promise<void>): Promise<void>;
45
+ }
46
+ export interface EventStore {
47
+ save(event: BaseEvent): Promise<void>;
48
+ getEvents(aggregateId: string, fromVersion?: number): Promise<BaseEvent[]>;
49
+ getAllEvents(eventType?: string, fromTimestamp?: Date): Promise<BaseEvent[]>;
50
+ }
51
+ export interface EventMetrics {
52
+ totalEvents: number;
53
+ eventsByType: Record<string, number>;
54
+ failedEvents: number;
55
+ averageProcessingTime: number;
56
+ lastEventTimestamp?: Date;
57
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ICacheClient.js.map
3
+ //# sourceMappingURL=event.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.types.js","sourceRoot":"","sources":["../../../src/events/types/event.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,120 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const api_1 = require("../api");
16
+ const decorators_1 = require("../core/decorators");
17
+ const logging_1 = require("../logging");
18
+ // Define a simple repository
19
+ let TodoRepository = class TodoRepository {
20
+ constructor() {
21
+ this.todos = [];
22
+ }
23
+ findAll() {
24
+ return this.todos;
25
+ }
26
+ findById(id) {
27
+ return this.todos.find(todo => todo.id === id);
28
+ }
29
+ create(text) {
30
+ const todo = {
31
+ id: Date.now().toString(),
32
+ text,
33
+ completed: false
34
+ };
35
+ this.todos.push(todo);
36
+ return todo;
37
+ }
38
+ update(id, updates) {
39
+ const todo = this.findById(id);
40
+ if (!todo)
41
+ return null;
42
+ Object.assign(todo, updates);
43
+ return todo;
44
+ }
45
+ delete(id) {
46
+ const index = this.todos.findIndex(todo => todo.id === id);
47
+ if (index === -1)
48
+ return false;
49
+ this.todos.splice(index, 1);
50
+ return true;
51
+ }
52
+ };
53
+ TodoRepository = __decorate([
54
+ (0, decorators_1.Repository)(),
55
+ (0, logging_1.Logger)('TodoRepository')
56
+ ], TodoRepository);
57
+ // Define a service
58
+ let TodoService = class TodoService {
59
+ constructor(repository) {
60
+ this.repository = repository;
61
+ }
62
+ getAllTodos() {
63
+ this.logger.info('Getting all todos');
64
+ return this.repository.findAll();
65
+ }
66
+ createTodo(text) {
67
+ this.logger.info('Creating new todo', { text });
68
+ return this.repository.create(text);
69
+ }
70
+ };
71
+ TodoService = __decorate([
72
+ (0, decorators_1.Service)(),
73
+ (0, logging_1.Logger)('TodoService'),
74
+ __metadata("design:paramtypes", [TodoRepository])
75
+ ], TodoService);
76
+ // Define a controller
77
+ let TodoController = class TodoController {
78
+ constructor(todoService) {
79
+ this.todoService = todoService;
80
+ }
81
+ getAllTodos() {
82
+ return this.todoService.getAllTodos();
83
+ }
84
+ createTodo(body) {
85
+ return this.todoService.createTodo(body.text);
86
+ }
87
+ };
88
+ __decorate([
89
+ (0, decorators_1.Get)('/'),
90
+ __metadata("design:type", Function),
91
+ __metadata("design:paramtypes", []),
92
+ __metadata("design:returntype", void 0)
93
+ ], TodoController.prototype, "getAllTodos", null);
94
+ __decorate([
95
+ (0, decorators_1.Post)('/'),
96
+ __param(0, (0, decorators_1.Body)()),
97
+ __metadata("design:type", Function),
98
+ __metadata("design:paramtypes", [Object]),
99
+ __metadata("design:returntype", void 0)
100
+ ], TodoController.prototype, "createTodo", null);
101
+ TodoController = __decorate([
102
+ (0, decorators_1.Controller)('/todos'),
103
+ __metadata("design:paramtypes", [TodoService])
104
+ ], TodoController);
105
+ // Start the application
106
+ async function main() {
107
+ const { start } = await (0, api_1.createBootifyApp)({
108
+ port: 3000,
109
+ controllers: [TodoController],
110
+ enableSwagger: true
111
+ });
112
+ await start();
113
+ console.log('Todo API is running on http://localhost:3000');
114
+ console.log('API docs available at http://localhost:3000/api-docs');
115
+ }
116
+ // Run if this file is executed directly
117
+ if (require.main === module) {
118
+ main().catch(console.error);
119
+ }
120
+ //# sourceMappingURL=basic-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic-api.js","sourceRoot":"","sources":["../../src/examples/basic-api.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,17 @@
1
- export * from './application/Application';
2
- export { default as container, Bean } from './container/container';
3
- export * from './decorators/controller.decorator';
4
- export * from './decorators/http.decorator';
5
- export * from './decorators/timing.decorator';
6
- export * from './decorators/cache/cache.decorator';
7
- export * from './decorators/cache/ICacheClient';
8
- export * from './decorators/transaction/transactional.decorator';
9
- export * from './decorators/transaction/IDatabaseClient';
10
- export { default as logger, } from './logger/Logger';
11
- //# sourceMappingURL=index.d.ts.map
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';
package/dist/index.js CHANGED
@@ -1,34 +1,98 @@
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
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
2
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.logger = exports.Bean = exports.container = void 0;
21
- __exportStar(require("./application/Application"), exports);
22
- var container_1 = require("./container/container");
23
- Object.defineProperty(exports, "container", { enumerable: true, get: function () { return __importDefault(container_1).default; } });
24
- Object.defineProperty(exports, "Bean", { enumerable: true, get: function () { return container_1.Bean; } });
25
- __exportStar(require("./decorators/controller.decorator"), exports);
26
- __exportStar(require("./decorators/http.decorator"), exports);
27
- __exportStar(require("./decorators/timing.decorator"), exports);
28
- __exportStar(require("./decorators/cache/cache.decorator"), exports);
29
- __exportStar(require("./decorators/cache/ICacheClient"), exports);
30
- __exportStar(require("./decorators/transaction/transactional.decorator"), exports);
31
- __exportStar(require("./decorators/transaction/IDatabaseClient"), exports);
32
- var Logger_1 = require("./logger/Logger");
33
- Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return __importDefault(Logger_1).default; } });
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; } });
34
98
  //# 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,4DAA0C;AAC1C,mDAAmE;AAA1D,uHAAA,OAAO,OAAa;AAAE,iGAAA,IAAI,OAAA;AACnC,oEAAkD;AAClD,8DAA4C;AAC5C,gEAA8C;AAC9C,qEAAmD;AACnD,kEAAgD;AAChD,mFAAiE;AACjE,2EAAyD;AACzD,0CAAqD;AAA5C,iHAAA,OAAO,OAAU"}
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"}
@@ -0,0 +1,5 @@
1
+ import { LoggingConfig } from '../types/logging.types';
2
+ export declare class LoggingConfigService {
3
+ static createConfig(): LoggingConfig;
4
+ private static createTransports;
5
+ }