bootifyjs 2.0.0 → 2.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 (50) hide show
  1. package/README.md +149 -24
  2. package/dist/BootifyApp.d.ts +21 -3
  3. package/dist/BootifyApp.d.ts.map +1 -1
  4. package/dist/BootifyApp.js +57 -14
  5. package/dist/BootifyApp.js.map +1 -1
  6. package/dist/examples/adapters/pino-logger.adapter.d.ts +18 -0
  7. package/dist/examples/adapters/pino-logger.adapter.d.ts.map +1 -0
  8. package/dist/{logging/core/adapters/pino.adapter.js → examples/adapters/pino-logger.adapter.js} +26 -27
  9. package/dist/examples/adapters/pino-logger.adapter.js.map +1 -0
  10. package/dist/examples/controllers/todo.controller.d.ts.map +1 -1
  11. package/dist/examples/controllers/todo.controller.js +1 -4
  12. package/dist/examples/controllers/todo.controller.js.map +1 -1
  13. package/dist/examples/index.d.ts.map +1 -1
  14. package/dist/examples/index.js +85 -47
  15. package/dist/examples/index.js.map +1 -1
  16. package/dist/examples/services/scheduled-tasks.service.d.ts.map +1 -1
  17. package/dist/examples/services/scheduled-tasks.service.js +15 -4
  18. package/dist/examples/services/scheduled-tasks.service.js.map +1 -1
  19. package/dist/logging/core/decorators.d.ts +12 -2
  20. package/dist/logging/core/decorators.d.ts.map +1 -1
  21. package/dist/logging/core/decorators.js +50 -15
  22. package/dist/logging/core/decorators.js.map +1 -1
  23. package/dist/logging/core/logger-builder.d.ts +50 -7
  24. package/dist/logging/core/logger-builder.d.ts.map +1 -1
  25. package/dist/logging/core/logger-builder.js +107 -23
  26. package/dist/logging/core/logger-builder.js.map +1 -1
  27. package/dist/logging/core/logger.d.ts +20 -0
  28. package/dist/logging/core/logger.d.ts.map +1 -1
  29. package/dist/logging/core/logger.js +21 -1
  30. package/dist/logging/core/logger.js.map +1 -1
  31. package/dist/logging/core/logger.provider.d.ts +3 -0
  32. package/dist/logging/core/logger.provider.d.ts.map +1 -1
  33. package/dist/logging/core/logger.provider.js +16 -1
  34. package/dist/logging/core/logger.provider.js.map +1 -1
  35. package/dist/logging/index.d.ts +20 -14
  36. package/dist/logging/index.d.ts.map +1 -1
  37. package/dist/logging/index.js +24 -16
  38. package/dist/logging/index.js.map +1 -1
  39. package/dist/scheduling/scheduler.service.d.ts +1 -0
  40. package/dist/scheduling/scheduler.service.d.ts.map +1 -1
  41. package/dist/scheduling/scheduler.service.js +35 -17
  42. package/dist/scheduling/scheduler.service.js.map +1 -1
  43. package/package.json +1 -1
  44. package/dist/logging/core/adapters/index.d.ts +0 -2
  45. package/dist/logging/core/adapters/index.d.ts.map +0 -1
  46. package/dist/logging/core/adapters/index.js +0 -18
  47. package/dist/logging/core/adapters/index.js.map +0 -1
  48. package/dist/logging/core/adapters/pino.adapter.d.ts +0 -32
  49. package/dist/logging/core/adapters/pino.adapter.d.ts.map +0 -1
  50. package/dist/logging/core/adapters/pino.adapter.js.map +0 -1
@@ -43,6 +43,7 @@ const basic_usage_1 = require("../auth/examples/basic-usage");
43
43
  const BootifyApp_1 = require("../BootifyApp");
44
44
  const cache_1 = require("../cache");
45
45
  const di_container_1 = require("../core/di-container");
46
+ const logging_1 = require("../logging");
46
47
  const health_controller_1 = require("./controllers/health.controller");
47
48
  const todo_controller_1 = require("./controllers/todo.controller");
48
49
  dotenv_1.default.config();
@@ -56,50 +57,83 @@ const envSchema = zod_1.default.object({
56
57
  NODE_ENV: zod_1.default.string().min(1),
57
58
  JWT_SECRET: zod_1.default.string().min(1),
58
59
  });
59
- // Global middleware implementations
60
- const corsMiddleware = async (request, reply) => {
61
- console.log("🌐 CORS middleware executed");
62
- reply.header("Access-Control-Allow-Origin", "*");
63
- reply.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
64
- reply.header("Access-Control-Allow-Headers", "Content-Type, Authorization");
65
- };
66
- const requestTimingMiddleware = async (request, reply) => {
67
- const startTime = Date.now();
68
- console.log(`⏱️ Request started: ${request.method} ${request.url}`);
69
- // Add timing info to request context
70
- request.startTime = startTime;
71
- request.logTiming = () => {
72
- const duration = Date.now() - startTime;
73
- console.log(`⏱️ Request completed in ${duration}ms: ${request.method} ${request.url}`);
60
+ // Middleware factory that uses the logger
61
+ function createLoggingMiddlewares(logger) {
62
+ const corsMiddleware = async (_request, reply) => {
63
+ logger.debug("CORS middleware executed");
64
+ reply.header("Access-Control-Allow-Origin", "*");
65
+ reply.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
66
+ reply.header("Access-Control-Allow-Headers", "Content-Type, Authorization");
74
67
  };
75
- };
76
- const securityHeadersMiddleware = async (request, reply) => {
77
- console.log("🔒 Security headers middleware executed");
78
- reply.header("X-Content-Type-Options", "nosniff");
79
- reply.header("X-Frame-Options", "DENY");
80
- reply.header("X-XSS-Protection", "1; mode=block");
81
- reply.header("Strict-Transport-Security", "max-age=31536000; includeSubDomains");
82
- };
83
- const requestLoggingMiddleware = async (request, reply) => {
84
- const clientIP = request.ip;
85
- const userAgent = request.headers["user-agent"] || "Unknown";
86
- console.log(`📝 Request: ${request.method} ${request.url} from ${clientIP} - ${userAgent}`);
87
- };
68
+ const requestTimingMiddleware = async (request, _reply) => {
69
+ const startTime = Date.now();
70
+ logger.debug("Request started", {
71
+ method: request.method,
72
+ url: request.url
73
+ });
74
+ // Add timing info to request context
75
+ request.startTime = startTime;
76
+ request.logTiming = () => {
77
+ const duration = Date.now() - startTime;
78
+ logger.info("Request completed", {
79
+ method: request.method,
80
+ url: request.url,
81
+ duration,
82
+ });
83
+ };
84
+ };
85
+ const securityHeadersMiddleware = async (_request, reply) => {
86
+ logger.debug("Security headers middleware executed");
87
+ reply.header("X-Content-Type-Options", "nosniff");
88
+ reply.header("X-Frame-Options", "DENY");
89
+ reply.header("X-XSS-Protection", "1; mode=block");
90
+ reply.header("Strict-Transport-Security", "max-age=31536000; includeSubDomains");
91
+ };
92
+ const requestLoggingMiddleware = async (request, _reply) => {
93
+ const clientIP = request.ip;
94
+ const userAgent = request.headers["user-agent"] || "Unknown";
95
+ logger.info("Incoming request", {
96
+ method: request.method,
97
+ url: request.url,
98
+ clientIP,
99
+ userAgent,
100
+ });
101
+ };
102
+ return {
103
+ corsMiddleware,
104
+ requestTimingMiddleware,
105
+ securityHeadersMiddleware,
106
+ requestLoggingMiddleware,
107
+ };
108
+ }
88
109
  async function main() {
89
110
  // Setup JWT authentication
90
111
  const { middleware: jwtAuthMiddleware, authManager } = await (0, basic_usage_1.setupJwtAuth)();
91
112
  // Register authManager in DI container for controller injection
92
113
  di_container_1.container.register("AuthManager", { useFactory: () => authManager });
93
- const { app, start } = await (0, BootifyApp_1.createBootify)()
114
+ const { app, start, logger } = await (0, BootifyApp_1.createBootify)()
94
115
  // Configuration
95
116
  .useConfig(envSchema)
96
117
  .setPort(8080)
118
+ .setServiceName("bootify-example")
119
+ // Configure logger - user creates their own adapter that implements ILogger
120
+ // See src/examples/adapters/pino-logger.adapter.ts for the implementation
121
+ .useLogger(builder => {
122
+ const { PinoLoggerAdapter } = require('./adapters/pino-logger.adapter');
123
+ return builder
124
+ .setLevel(process.env.LOG_LEVEL || 'info')
125
+ .use(new PinoLoggerAdapter({
126
+ level: process.env.LOG_LEVEL || 'info',
127
+ serviceName: 'bootify-example',
128
+ prettyPrint: process.env.NODE_ENV !== 'production',
129
+ }));
130
+ })
97
131
  // Initialize services before start
98
132
  .beforeStart(async () => {
99
- console.log("🔧 Initializing services...");
100
- // Bootstrap cache
101
- await (0, cache_1.bootstrapCache)();
102
- console.log("Services initialized");
133
+ const log = (0, logging_1.getLogger)();
134
+ log.info("Initializing services...");
135
+ (0, cache_1.bootstrapCache)();
136
+ log.info("Services initialized");
103
137
  })
104
138
  // Register Cookie plugin
105
139
  .usePlugin(async (app) => {
@@ -111,14 +145,14 @@ async function main() {
111
145
  })
112
146
  // Register Swagger
113
147
  .usePlugin(async (app) => {
114
- await app.addHook("onRequest", (0, middleware_1.createContextMiddleware)());
148
+ app.addHook("onRequest", (0, middleware_1.createContextMiddleware)());
115
149
  const fastifySwagger = await Promise.resolve().then(() => __importStar(require("@fastify/swagger")));
116
150
  const fastifySwaggerUI = await Promise.resolve().then(() => __importStar(require("@fastify/swagger-ui")));
117
151
  await app.register(fastifySwagger.default, {
118
152
  openapi: {
119
153
  info: {
120
- title: "Bootify (Fastify) API",
121
- description: "API documentation",
154
+ title: "BootifyJS Example API",
155
+ description: "API documentation for BootifyJS example application",
122
156
  version: "1.0.0",
123
157
  },
124
158
  servers: [{ url: `http://localhost:8080` }],
@@ -128,25 +162,27 @@ async function main() {
128
162
  routePrefix: "/api-docs",
129
163
  });
130
164
  })
131
- // Register global middlewares in order
132
- .useMiddlewares([
133
- corsMiddleware, // 1st: Handle CORS headers
134
- securityHeadersMiddleware, // 2nd: Add security headers
135
- requestTimingMiddleware, // 3rd: Start request timing
136
- requestLoggingMiddleware, // 4th: Log request details
137
- ])
138
165
  // Register controllers
139
166
  .useControllers([health_controller_1.HealthController, todo_controller_1.TodoController])
140
167
  // Register JWT auth routes after app is built
141
168
  .beforeStart(async (app) => {
142
- await (0, basic_usage_1.registerJWTAuthRoutes)(app, authManager, jwtAuthMiddleware);
169
+ (0, basic_usage_1.registerJWTAuthRoutes)(app, authManager, jwtAuthMiddleware);
143
170
  })
144
171
  // After start hook
145
- .afterStart(async (app) => {
146
- console.log("🚀 BootifyJS Example Server started!");
147
- console.log("📋 Scheduled jobs are running in the background");
172
+ .afterStart(async () => {
173
+ const log = (0, logging_1.getLogger)();
174
+ log.info("BootifyJS Example Server started!");
175
+ log.info("Scheduled jobs are running in the background");
176
+ log.info("API Documentation available", { url: "http://localhost:8080/api-docs" });
148
177
  })
149
178
  .build();
179
+ // Create middlewares with logger
180
+ const middlewares = createLoggingMiddlewares(logger);
181
+ // Register middlewares manually after build (since we need the logger)
182
+ app.addHook('onRequest', middlewares.corsMiddleware);
183
+ app.addHook('onRequest', middlewares.securityHeadersMiddleware);
184
+ app.addHook('onRequest', middlewares.requestTimingMiddleware);
185
+ app.addHook('onRequest', middlewares.requestLoggingMiddleware);
150
186
  // Add scheduler status endpoint
151
187
  app.get('/scheduler/status', async () => {
152
188
  const { SchedulerService } = await Promise.resolve().then(() => __importStar(require('../scheduling')));
@@ -160,9 +196,11 @@ async function main() {
160
196
  const { SchedulerService } = await Promise.resolve().then(() => __importStar(require('../scheduling')));
161
197
  const scheduler = di_container_1.container.resolve(SchedulerService);
162
198
  await scheduler.trigger(jobName);
199
+ logger.info("Job triggered manually", { jobName });
163
200
  return { success: true, message: `Job '${jobName}' triggered` };
164
201
  }
165
202
  catch (error) {
203
+ logger.error("Failed to trigger job", error, { jobName });
166
204
  reply.status(404);
167
205
  return { success: false, error: error.message };
168
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-tasks.service.d.ts","sourceRoot":"","sources":["../../../src/examples/services/scheduled-tasks.service.ts"],"names":[],"mappings":"AAQA,qBACa,qBAAqB;IAC9B,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,YAAY,CAAI;IAExB;;OAEG;IAEG,kBAAkB;IAOxB;;OAEG;IAMG,kBAAkB;IAQxB;;OAEG;IAEG,WAAW;CAGpB"}
1
+ {"version":3,"file":"scheduled-tasks.service.d.ts","sourceRoot":"","sources":["../../../src/examples/services/scheduled-tasks.service.ts"],"names":[],"mappings":"AASA,qBACa,qBAAqB;IAC9B,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,YAAY,CAAI;IAExB;;OAEG;IAEG,kBAAkB;IAaxB;;OAEG;IAMG,kBAAkB;IAYxB;;OAEG;IAEG,WAAW;CAOpB"}
@@ -16,6 +16,7 @@ exports.ScheduledTasksService = void 0;
16
16
  * Demonstrates @Scheduled decorator usage for background jobs.
17
17
  */
18
18
  const decorators_1 = require("../../core/decorators");
19
+ const logging_1 = require("../../logging");
19
20
  const scheduling_1 = require("../../scheduling");
20
21
  let ScheduledTasksService = class ScheduledTasksService {
21
22
  constructor() {
@@ -29,23 +30,33 @@ let ScheduledTasksService = class ScheduledTasksService {
29
30
  this.healthCheckCount++;
30
31
  const memUsage = process.memoryUsage();
31
32
  const heapMB = (memUsage.heapUsed / 1024 / 1024).toFixed(2);
32
- console.log(`[HealthCheck #${this.healthCheckCount}] Memory: ${heapMB}MB, Uptime: ${process.uptime().toFixed(0)}s`);
33
+ const logger = (0, logging_1.getLogger)();
34
+ logger.info('Health check completed', {
35
+ checkNumber: this.healthCheckCount,
36
+ memoryMB: heapMB,
37
+ uptimeSeconds: Math.floor(process.uptime()),
38
+ });
33
39
  }
34
40
  /**
35
41
  * Cleanup task - runs every 5 minutes with overlap prevention
36
42
  */
37
43
  async cleanupExpiredData() {
38
44
  this.cleanupCount++;
39
- console.log(`[Cleanup #${this.cleanupCount}] Running expired data cleanup...`);
45
+ const logger = (0, logging_1.getLogger)();
46
+ logger.info('Starting cleanup task', { cleanupNumber: this.cleanupCount });
40
47
  // Simulate cleanup work
41
48
  await new Promise(resolve => setTimeout(resolve, 1000));
42
- console.log(`[Cleanup #${this.cleanupCount}] Cleanup complete`);
49
+ logger.info('Cleanup task completed', { cleanupNumber: this.cleanupCount });
43
50
  }
44
51
  /**
45
52
  * Stats reporter - runs every minute
46
53
  */
47
54
  async reportStats() {
48
- console.log(`[Stats] Health checks: ${this.healthCheckCount}, Cleanups: ${this.cleanupCount}`);
55
+ const logger = (0, logging_1.getLogger)();
56
+ logger.info('Scheduled tasks stats', {
57
+ healthChecks: this.healthCheckCount,
58
+ cleanups: this.cleanupCount,
59
+ });
49
60
  }
50
61
  };
51
62
  exports.ScheduledTasksService = ScheduledTasksService;
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-tasks.service.js","sourceRoot":"","sources":["../../../src/examples/services/scheduled-tasks.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;GAIG;AACH,sDAA+C;AAC/C,iDAA4C;AAGrC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QACK,qBAAgB,GAAG,CAAC,CAAA;QACpB,iBAAY,GAAG,CAAC,CAAA;IAoC5B,CAAC;IAlCG;;OAEG;IAEG,AAAN,KAAK,CAAC,kBAAkB;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QACtC,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,gBAAgB,aAAa,MAAM,eAAe,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACvH,CAAC;IAED;;OAEG;IAMG,AAAN,KAAK,CAAC,kBAAkB;QACpB,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,YAAY,mCAAmC,CAAC,CAAA;QAC9E,wBAAwB;QACxB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,YAAY,oBAAoB,CAAC,CAAA;IACnE,CAAC;IAED;;OAEG;IAEG,AAAN,KAAK,CAAC,WAAW;QACb,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,gBAAgB,eAAe,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;IAClG,CAAC;CACJ,CAAA;AAtCY,sDAAqB;AAQxB;IADL,IAAA,sBAAS,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;;;;+DAMrE;AAUK;IALL,IAAA,sBAAS,EAAC;QACP,QAAQ,EAAE,MAAM,EAAE,YAAY;QAC9B,cAAc,EAAE,IAAI;QACpB,IAAI,EAAE,SAAS;KAClB,CAAC;;;;+DAOD;AAMK;IADL,IAAA,sBAAS,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;;;;wDAGtD;gCArCQ,qBAAqB;IADjC,IAAA,oBAAO,GAAE;GACG,qBAAqB,CAsCjC"}
1
+ {"version":3,"file":"scheduled-tasks.service.js","sourceRoot":"","sources":["../../../src/examples/services/scheduled-tasks.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;GAIG;AACH,sDAA+C;AAC/C,2CAAyC;AACzC,iDAA4C;AAGrC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QACK,qBAAgB,GAAG,CAAC,CAAA;QACpB,iBAAY,GAAG,CAAC,CAAA;IAkD5B,CAAC;IAhDG;;OAEG;IAEG,AAAN,KAAK,CAAC,kBAAkB;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QACtC,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAE3D,MAAM,MAAM,GAAG,IAAA,mBAAS,GAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,QAAQ,EAAE,MAAM;YAChB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;SAC9C,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IAMG,AAAN,KAAK,CAAC,kBAAkB;QACpB,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,MAAM,MAAM,GAAG,IAAA,mBAAS,GAAE,CAAA;QAE1B,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QAE1E,wBAAwB;QACxB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;QAEvD,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;IAC/E,CAAC;IAED;;OAEG;IAEG,AAAN,KAAK,CAAC,WAAW;QACb,MAAM,MAAM,GAAG,IAAA,mBAAS,GAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjC,YAAY,EAAE,IAAI,CAAC,gBAAgB;YACnC,QAAQ,EAAE,IAAI,CAAC,YAAY;SAC9B,CAAC,CAAA;IACN,CAAC;CACJ,CAAA;AApDY,sDAAqB;AAQxB;IADL,IAAA,sBAAS,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;;;;+DAYrE;AAUK;IALL,IAAA,sBAAS,EAAC;QACP,QAAQ,EAAE,MAAM,EAAE,YAAY;QAC9B,cAAc,EAAE,IAAI;QACpB,IAAI,EAAE,SAAS;KAClB,CAAC;;;;+DAWD;AAMK;IADL,IAAA,sBAAS,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;;;;wDAOtD;gCAnDQ,qBAAqB;IADjC,IAAA,oBAAO,GAAE;GACG,qBAAqB,CAoDjC"}
@@ -9,8 +9,18 @@ export interface AuditOptions {
9
9
  */
10
10
  export declare function Audit(options: AuditOptions): MethodDecorator;
11
11
  /**
12
- * A class decorator that injects a child 'logger' instance into the class prototype,
13
- * automatically namespaced with the class name.
12
+ * A class decorator that injects a 'logger' property into the class prototype.
13
+ * The logger is automatically namespaced with the class name.
14
+ *
15
+ * @example
16
+ * @Loggable()
17
+ * class MyService {
18
+ * private logger!: ILogger
19
+ *
20
+ * doSomething() {
21
+ * this.logger.info('Doing something')
22
+ * }
23
+ * }
14
24
  */
15
25
  export declare function Loggable(): ClassDecorator;
16
26
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +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,QAAQ,IAAI,cAAc,CAczC"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/logging/core/decorators.ts"],"names":[],"mappings":"AAYA,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,CAiC5D;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,IAAI,cAAc,CAoBzC"}
@@ -2,8 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Audit = Audit;
4
4
  exports.Loggable = Loggable;
5
+ /**
6
+ * Logging Decorators
7
+ *
8
+ * These decorators use the ILogger interface, so they work with
9
+ * any logger implementation the user provides.
10
+ */
5
11
  const core_1 = require("../../core");
6
- const logger_1 = require("./logger");
12
+ const logger_builder_1 = require("./logger-builder");
7
13
  /**
8
14
  * A method decorator that creates a structured audit log after a method
9
15
  * successfully executes.
@@ -13,39 +19,57 @@ function Audit(options) {
13
19
  const originalMethod = descriptor.value;
14
20
  descriptor.value = async function (...args) {
15
21
  const result = await originalMethod.apply(this, args);
16
- // Resolve services from the DI container
17
- const logger = core_1.container.resolve(logger_1.Logger);
18
- // const contextService = container.resolve(RequestContextService)
19
- // const requestContext = contextService.getStoreObject() // Get context as a plain object
22
+ // Get logger if initialized
23
+ if (!(0, logger_builder_1.isLoggerInitialized)()) {
24
+ console.warn('[Audit] Logger not initialized, skipping audit log');
25
+ return result;
26
+ }
27
+ const logger = (0, logger_builder_1.getLogger)();
20
28
  const store = core_1.requestContextStore.getStore() || new Map();
21
29
  const resourceId = options.resourceIdPath
22
30
  ? extractValueFromPath(options.resourceIdPath, { args, result })
23
31
  : undefined;
24
32
  const auditPayload = {
33
+ logType: 'audit',
25
34
  action: options.action,
26
35
  resource: options.resource,
27
36
  resourceId,
28
- actor: {
29
- ...Object.fromEntries(store.entries()),
30
- },
37
+ actor: Object.fromEntries(store.entries()),
31
38
  };
32
- logger.audit(auditPayload);
39
+ logger.info('Audit Log', auditPayload);
33
40
  return result;
34
41
  };
35
42
  };
36
43
  }
37
- // --- @Logger Class Decorator ---
44
+ // --- @Loggable Class Decorator ---
38
45
  /**
39
- * A class decorator that injects a child 'logger' instance into the class prototype,
40
- * automatically namespaced with the class name.
46
+ * A class decorator that injects a 'logger' property into the class prototype.
47
+ * The logger is automatically namespaced with the class name.
48
+ *
49
+ * @example
50
+ * @Loggable()
51
+ * class MyService {
52
+ * private logger!: ILogger
53
+ *
54
+ * doSomething() {
55
+ * this.logger.info('Doing something')
56
+ * }
57
+ * }
41
58
  */
42
59
  function Loggable() {
43
60
  return function (target) {
44
61
  Object.defineProperty(target.prototype, 'logger', {
45
62
  get: function () {
46
63
  if (!this._logger) {
47
- const loggerService = core_1.container.resolve(logger_1.Logger);
48
- this._logger = loggerService.child({ component: target.name });
64
+ if (!(0, logger_builder_1.isLoggerInitialized)()) {
65
+ // Return a no-op logger if not initialized
66
+ this._logger = createNoOpLogger();
67
+ }
68
+ else {
69
+ const logger = (0, logger_builder_1.getLogger)();
70
+ // Create a child logger with component name if supported
71
+ this._logger = logger.child({ component: target.name });
72
+ }
49
73
  }
50
74
  return this._logger;
51
75
  },
@@ -61,7 +85,6 @@ function extractValueFromPath(path, context) {
61
85
  for (const part of parts) {
62
86
  if (current === null || current === undefined)
63
87
  return undefined;
64
- // Special handling for array indices like 'args.0'
65
88
  if (Array.isArray(current) && !isNaN(parseInt(part, 10))) {
66
89
  current = current[parseInt(part, 10)];
67
90
  }
@@ -71,4 +94,16 @@ function extractValueFromPath(path, context) {
71
94
  }
72
95
  return current;
73
96
  }
97
+ function createNoOpLogger() {
98
+ const noop = () => { };
99
+ return {
100
+ trace: noop,
101
+ debug: noop,
102
+ info: noop,
103
+ warn: noop,
104
+ error: noop,
105
+ fatal: noop,
106
+ child: () => createNoOpLogger(),
107
+ };
108
+ }
74
109
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/logging/core/decorators.ts"],"names":[],"mappings":";;AAsEA,sBA8BC;AAQD,4BAcC;AA1HD,qCAA2D;AAC3D,qCAAiC;AAiEjC;;;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,CAAS,eAAM,CAAC,CAAA;YAChD,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,QAAQ;IACtB,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,CAAS,eAAM,CAAC,CAAA;oBACvD,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"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/logging/core/decorators.ts"],"names":[],"mappings":";;AAsBA,sBAiCC;AAkBD,4BAoBC;AA7FD;;;;;GAKG;AACH,qCAAgD;AAEhD,qDAAiE;AAUjE;;;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,4BAA4B;YAC5B,IAAI,CAAC,IAAA,oCAAmB,GAAE,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;gBAClE,OAAO,MAAM,CAAA;YACf,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAA;YAC1B,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,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU;gBACV,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;aAC3C,CAAA;YAED,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;YAEtC,OAAO,MAAM,CAAA;QACf,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED,oCAAoC;AAEpC;;;;;;;;;;;;;GAaG;AACH,SAAgB,QAAQ;IACtB,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,IAAI,CAAC,IAAA,oCAAmB,GAAE,EAAE,CAAC;wBAC3B,2CAA2C;wBAC3C,IAAI,CAAC,OAAO,GAAG,gBAAgB,EAAE,CAAA;oBACnC,CAAC;yBAAM,CAAC;wBACN,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAA;wBAC1B,yDAAyD;wBACzD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;oBACzD,CAAC;gBACH,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,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;AAED,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;IACtB,OAAO;QACL,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE;KAChC,CAAA;AACH,CAAC"}
@@ -9,6 +9,7 @@ export declare class LoggerBuilder {
9
9
  private baseContext;
10
10
  private useDefaultConsole;
11
11
  private consoleOptions;
12
+ private customLogger?;
12
13
  /**
13
14
  * Set the minimum log level
14
15
  */
@@ -22,25 +23,55 @@ export declare class LoggerBuilder {
22
23
  */
23
24
  setBaseContext(context: LogContext): this;
24
25
  /**
25
- * Add a custom transport
26
+ * Add a custom transport (for BaseLogger)
26
27
  */
27
28
  addTransport(transport: ILogTransport): this;
28
29
  /**
29
- * Add a context provider for dynamic context
30
+ * Add a context provider for dynamic context (for BaseLogger)
30
31
  */
31
32
  addContextProvider(provider: IContextProvider): this;
32
33
  /**
33
- * Configure the default console transport
34
+ * Configure the default console transport (for BaseLogger)
34
35
  */
35
36
  configureConsole(options: ConsoleTransportOptions): this;
36
37
  /**
37
- * Disable the default console transport
38
+ * Disable the default console transport (for BaseLogger)
38
39
  */
39
40
  disableConsole(): this;
40
41
  /**
41
- * Use a completely custom logger implementation
42
+ * Use a custom logger instance that implements ILogger.
43
+ * This allows using any logging library (Pino, Winston, Bunyan, etc.)
44
+ *
45
+ * @example
46
+ * // Using Pino (user provides the adapter)
47
+ * import { PinoAdapter } from './my-pino-adapter'
48
+ *
49
+ * createLogger()
50
+ * .use(new PinoAdapter({ level: 'debug', prettyPrint: true }))
51
+ * .build()
52
+ *
53
+ * @example
54
+ * // Using Winston
55
+ * import { WinstonAdapter } from './my-winston-adapter'
56
+ *
57
+ * createLogger()
58
+ * .use(new WinstonAdapter({ level: 'info' }))
59
+ * .build()
42
60
  */
43
- useCustomLogger<T extends ILogger>(loggerClass: new (...args: any[]) => T): T;
61
+ use(logger: ILogger): this;
62
+ /**
63
+ * Use a factory function to create the logger.
64
+ * Useful when the logger needs async initialization or complex setup.
65
+ *
66
+ * @example
67
+ * createLogger()
68
+ * .useFactory(() => {
69
+ * const pino = require('pino')
70
+ * return new MyPinoWrapper(pino({ level: 'debug' }))
71
+ * })
72
+ * .build()
73
+ */
74
+ useFactory(factory: () => ILogger): this;
44
75
  /**
45
76
  * Build and register the logger with DI container
46
77
  */
@@ -52,7 +83,19 @@ export declare class LoggerBuilder {
52
83
  */
53
84
  export declare function createLogger(): LoggerBuilder;
54
85
  /**
55
- * Get the registered logger from DI container
86
+ * Get the registered logger from DI container.
87
+ *
88
+ * @throws Error if logger has not been initialized yet.
89
+ * Call createLogger().build() or use createBootify().useLogger() first.
56
90
  */
57
91
  export declare function getLogger(): ILogger;
92
+ /**
93
+ * Check if logger has been initialized
94
+ */
95
+ export declare function isLoggerInitialized(): boolean;
96
+ /**
97
+ * Reset logger state (useful for testing)
98
+ * @internal
99
+ */
100
+ export declare function resetLogger(): void;
58
101
  //# sourceMappingURL=logger-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger-builder.d.ts","sourceRoot":"","sources":["../../../src/logging/core/logger-builder.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,UAAU,EACV,QAAQ,EACX,MAAM,cAAc,CAAA;AACrB,OAAO,EAAoB,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAE1F,eAAO,MAAM,YAAY,eAA8B,CAAA;AAEvD,qBAAa,aAAa;IACtB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,cAAc,CAA8B;IAEpD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAK/B;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAKzC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAK5C;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAKpD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAKxD;;OAEG;IACH,cAAc,IAAI,IAAI;IAKtB;;OAEG;IACH,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;IAM7E;;OAEG;IACH,KAAK,IAAI,OAAO;IAsBhB,OAAO,CAAC,cAAc;CAIzB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAE5C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}
1
+ {"version":3,"file":"logger-builder.d.ts","sourceRoot":"","sources":["../../../src/logging/core/logger-builder.ts"],"names":[],"mappings":"AASA,OAAO,EACH,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,UAAU,EACV,QAAQ,EACX,MAAM,cAAc,CAAA;AACrB,OAAO,EAAoB,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAE1F,eAAO,MAAM,YAAY,eAA8B,CAAA;AAEvD,qBAAa,aAAa;IACtB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,YAAY,CAAC,CAAS;IAE9B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAK/B;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAKzC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAK5C;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAKpD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAKxD;;OAEG;IACH,cAAc,IAAI,IAAI;IAKtB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAK1B;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,OAAO,GAAG,IAAI;IAKxC;;OAEG;IACH,KAAK,IAAI,OAAO;IA8BhB,OAAO,CAAC,cAAc;CAKzB;AAKD;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAenC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAS7C;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}