bootifyjs 2.0.0 → 2.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 (52) 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/config/AppConfig.js +1 -1
  7. package/dist/config/AppConfig.js.map +1 -1
  8. package/dist/examples/adapters/pino-logger.adapter.d.ts +18 -0
  9. package/dist/examples/adapters/pino-logger.adapter.d.ts.map +1 -0
  10. package/dist/{logging/core/adapters/pino.adapter.js → examples/adapters/pino-logger.adapter.js} +26 -27
  11. package/dist/examples/adapters/pino-logger.adapter.js.map +1 -0
  12. package/dist/examples/controllers/todo.controller.d.ts.map +1 -1
  13. package/dist/examples/controllers/todo.controller.js +1 -4
  14. package/dist/examples/controllers/todo.controller.js.map +1 -1
  15. package/dist/examples/index.d.ts.map +1 -1
  16. package/dist/examples/index.js +85 -47
  17. package/dist/examples/index.js.map +1 -1
  18. package/dist/examples/services/scheduled-tasks.service.d.ts.map +1 -1
  19. package/dist/examples/services/scheduled-tasks.service.js +15 -4
  20. package/dist/examples/services/scheduled-tasks.service.js.map +1 -1
  21. package/dist/logging/core/decorators.d.ts +12 -2
  22. package/dist/logging/core/decorators.d.ts.map +1 -1
  23. package/dist/logging/core/decorators.js +50 -15
  24. package/dist/logging/core/decorators.js.map +1 -1
  25. package/dist/logging/core/logger-builder.d.ts +50 -7
  26. package/dist/logging/core/logger-builder.d.ts.map +1 -1
  27. package/dist/logging/core/logger-builder.js +107 -23
  28. package/dist/logging/core/logger-builder.js.map +1 -1
  29. package/dist/logging/core/logger.d.ts +20 -0
  30. package/dist/logging/core/logger.d.ts.map +1 -1
  31. package/dist/logging/core/logger.js +21 -1
  32. package/dist/logging/core/logger.js.map +1 -1
  33. package/dist/logging/core/logger.provider.d.ts +3 -0
  34. package/dist/logging/core/logger.provider.d.ts.map +1 -1
  35. package/dist/logging/core/logger.provider.js +16 -1
  36. package/dist/logging/core/logger.provider.js.map +1 -1
  37. package/dist/logging/index.d.ts +20 -14
  38. package/dist/logging/index.d.ts.map +1 -1
  39. package/dist/logging/index.js +24 -16
  40. package/dist/logging/index.js.map +1 -1
  41. package/dist/scheduling/scheduler.service.d.ts +1 -0
  42. package/dist/scheduling/scheduler.service.d.ts.map +1 -1
  43. package/dist/scheduling/scheduler.service.js +35 -17
  44. package/dist/scheduling/scheduler.service.js.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/logging/core/adapters/index.d.ts +0 -2
  47. package/dist/logging/core/adapters/index.d.ts.map +0 -1
  48. package/dist/logging/core/adapters/index.js +0 -18
  49. package/dist/logging/core/adapters/index.js.map +0 -1
  50. package/dist/logging/core/adapters/pino.adapter.d.ts +0 -32
  51. package/dist/logging/core/adapters/pino.adapter.d.ts.map +0 -1
  52. package/dist/logging/core/adapters/pino.adapter.js.map +0 -1
package/README.md CHANGED
@@ -11,6 +11,7 @@ Our goal is to make building complex, scalable, and maintainable backend applica
11
11
  - **Event-Driven Architecture:** A built-in, asynchronous event bus with automatic retries and a dead-letter queue, plus high-performance buffered event processing with worker threads, priority queues, and advanced monitoring.
12
12
  - **Pluggable Caching:** A decorator-driven caching system that works out-of-the-box with an in-memory store and can be seamlessly extended to use Redis or other backends.
13
13
  - **Type-Safe Configuration:** A schema-driven configuration system that validates your environment at startup, catching errors early and providing fully typed config objects.
14
+ - **Flexible Logging:** A builder-pattern logging system with no external dependencies - bring your own logger (Pino, Winston, etc.) or use the built-in BaseLogger.
14
15
  - **Built on Fastify:** Leverage the incredible performance and rich plugin ecosystem of one of the fastest web frameworks for Node.js.
15
16
 
16
17
  ## Getting Started
@@ -19,7 +20,7 @@ Our goal is to make building complex, scalable, and maintainable backend applica
19
20
 
20
21
  To create a new BootifyJS project, you can use our upcoming CLI or set it up manually.
21
22
 
22
- ```
23
+ ```bash
23
24
  # (Coming Soon)
24
25
  # npx bootifyjs-cli new my-project
25
26
 
@@ -29,33 +30,29 @@ npm install bootifyjs fastify reflect-metadata
29
30
 
30
31
  ### Your First Application
31
32
 
32
- Heres a simple "Hello World" application to show you how easy it is to get started.
33
+ Here's a simple "Hello World" application to show you how easy it is to get started.
33
34
 
34
35
  **1. Create your main server file:**
35
36
 
36
- ```
37
+ ```typescript
37
38
  // src/server.ts
38
- import 'reflect-metadata';
39
- import { createBootifyApp, Controller, Get } from 'bootifyjs';
39
+ import "reflect-metadata";
40
+ import { createBootify, Controller, Get } from "bootifyjs";
40
41
 
41
- @Controller('/hello')
42
+ @Controller("/hello")
42
43
  export class HelloController {
43
- @Get('/')
44
+ @Get("/")
44
45
  sayHello() {
45
- return { message: 'Hello from BootifyJS!' };
46
+ return { message: "Hello from BootifyJS!" };
46
47
  }
47
48
  }
48
49
 
49
50
  async function main() {
50
- // Import your controller file to ensure its decorators run
51
- await import('./controllers/hello.controller');
52
-
53
- const { start } = await createBootifyApp({
54
- controllers: [HelloController],
55
- port: 3000,
56
- });
57
-
58
- await start();
51
+ await createBootify()
52
+ .setServiceName("my-app")
53
+ .setPort(3000)
54
+ .useControllers([HelloController])
55
+ .start();
59
56
  }
60
57
 
61
58
  main();
@@ -63,12 +60,139 @@ main();
63
60
 
64
61
  **2. Run your application:**
65
62
 
66
- ```
63
+ ```bash
67
64
  npx ts-node src/server.ts
68
65
  ```
69
66
 
70
67
  You can now visit `http://localhost:3000/hello` in your browser or with `curl` to see your application running!
71
68
 
69
+ ### Builder Pattern API
70
+
71
+ BootifyJS uses a fluent builder pattern for configuration:
72
+
73
+ ```typescript
74
+ import { createBootify } from "bootifyjs";
75
+ import { z } from "zod";
76
+
77
+ const configSchema = z.object({
78
+ DATABASE_URL: z.string(),
79
+ REDIS_HOST: z.string().default("localhost"),
80
+ });
81
+
82
+ async function main() {
83
+ const { app, start, logger } = await createBootify()
84
+ .setServiceName("my-api")
85
+ .setPort(3000)
86
+ .setHostname("0.0.0.0")
87
+ .useConfig(configSchema)
88
+ .useControllers([UserController, ProductController])
89
+ .useMiddleware(authMiddleware)
90
+ .useErrorHandler((error, request, reply) => {
91
+ logger.error("Request failed", error);
92
+ reply.status(500).send({ error: "Internal Server Error" });
93
+ })
94
+ .useLogger((builder) =>
95
+ builder
96
+ .setLevel("debug")
97
+ .configureConsole({ colorize: true, prettyPrint: true })
98
+ )
99
+ .beforeStart(async (app) => {
100
+ // Run migrations, connect to databases, etc.
101
+ })
102
+ .afterStart(async (app) => {
103
+ // Post-startup tasks
104
+ })
105
+ .build();
106
+
107
+ await start();
108
+ }
109
+ ```
110
+
111
+ ### Available Builder Methods
112
+
113
+ | Method | Description |
114
+ | ------------------------- | ---------------------------------------------------- |
115
+ | `setServiceName(name)` | Set the application name (used in logs) |
116
+ | `setPort(port)` | Set the server port |
117
+ | `setHostname(host)` | Set the server hostname |
118
+ | `setFastifyOptions(opts)` | Pass custom Fastify options |
119
+ | `useConfig(schema)` | Initialize type-safe config with Zod schema |
120
+ | `useControllers([...])` | Register controller classes |
121
+ | `usePlugin(fn)` | Register a Fastify plugin |
122
+ | `useMiddleware(fn)` | Add request middleware |
123
+ | `useMiddlewares([...])` | Add multiple middlewares |
124
+ | `useErrorHandler(fn)` | Set custom error handler |
125
+ | `useLogger(fn)` | Configure the logging system |
126
+ | `useScheduler(enabled)` | Enable/disable the job scheduler |
127
+ | `beforeStart(fn)` | Hook to run before server starts |
128
+ | `afterStart(fn)` | Hook to run after server starts |
129
+ | `build()` | Build and return `{ app, start, logger, scheduler }` |
130
+ | `start()` | Build and start the server immediately |
131
+
132
+ ## Logging
133
+
134
+ BootifyJS provides a flexible logging system with no external dependencies:
135
+
136
+ ```typescript
137
+ import { createLogger, getLogger } from "bootifyjs/logging";
138
+
139
+ // Option 1: Use built-in BaseLogger
140
+ const logger = createLogger()
141
+ .setLevel("debug")
142
+ .setServiceName("my-api")
143
+ .configureConsole({ colorize: true, prettyPrint: true })
144
+ .build();
145
+
146
+ logger.info("Server started", { port: 3000 });
147
+ logger.error("Something went wrong", new Error("Oops"), { userId: 123 });
148
+ ```
149
+
150
+ ### Bring Your Own Logger
151
+
152
+ Create an adapter that implements `ILogger`:
153
+
154
+ ```typescript
155
+ // adapters/pino-adapter.ts
156
+ import pino from "pino";
157
+ import { ILogger, LogContext } from "bootifyjs/logging";
158
+
159
+ export class PinoAdapter implements ILogger {
160
+ private logger: pino.Logger;
161
+
162
+ constructor(options: { level?: string; prettyPrint?: boolean } = {}) {
163
+ this.logger = pino({
164
+ level: options.level ?? "info",
165
+ transport: options.prettyPrint
166
+ ? { target: "pino-pretty", options: { colorize: true } }
167
+ : undefined,
168
+ });
169
+ }
170
+
171
+ info(message: string, context?: LogContext): void {
172
+ this.logger.info(context ?? {}, message);
173
+ }
174
+
175
+ error(message: string, error?: Error, context?: LogContext): void {
176
+ this.logger.error({ ...context, err: error }, message);
177
+ }
178
+
179
+ // ... implement other methods: trace, debug, warn, fatal, child
180
+ }
181
+ ```
182
+
183
+ Then use it with BootifyApp:
184
+
185
+ ```typescript
186
+ import { createBootify } from "bootifyjs";
187
+ import { PinoAdapter } from "./adapters/pino-adapter";
188
+
189
+ createBootify()
190
+ .useLogger((builder) =>
191
+ builder.use(new PinoAdapter({ level: "info", prettyPrint: true }))
192
+ )
193
+ .start();
194
+ ```
195
+
72
196
  ## Philosophy
73
197
 
74
198
  BootifyJS is built on a few core principles:
@@ -76,14 +200,15 @@ BootifyJS is built on a few core principles:
76
200
  - **Developer Experience First:** Frameworks should reduce boilerplate and complexity, not add to it. Our primary goal is to make development fast, intuitive, and enjoyable.
77
201
  - **Convention Over Configuration:** We provide sensible defaults and automatic wiring so you can focus on writing business logic.
78
202
  - **Robustness by Default:** Features like startup validation, graceful shutdown, and resilient event handling are built-in, helping you write production-ready code from day one.
79
- - **Extensibility:** While the framework works out-of-the-box, it's designed to be pluggable and extensible. You can easily bring your own implementations for caching, authentication, and more.
203
+ - **Extensibility:** While the framework works out-of-the-box, it's designed to be pluggable and extensible. You can easily bring your own implementations for caching, authentication, logging, and more.
80
204
 
81
205
  ## Documentation
82
206
 
83
207
  Dive deeper into the features of BootifyJS:
84
208
 
85
- - [**Core Module**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/core 'null')**:** Learn about the Dependency Injection system, decorators, and component lifecycle.
86
- - [**Configuration**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/config 'null')**:** Master the type-safe, schema-driven configuration system.
87
- - [**Events Module**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/events 'null')**:** Master the event bus for building decoupled, event-driven services.
88
- - [**Cache Module**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/cache 'null')**:** Speed up your application with our decorator-driven caching system.
89
- - [**Logging**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/logging 'null')**:** Understand the structured, context-aware logging system.# bootifyjs
209
+ - [**Core Module**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/core): Learn about the Dependency Injection system, decorators, and component lifecycle.
210
+ - [**Configuration**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/config): Master the type-safe, schema-driven configuration system.
211
+ - [**Events Module**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/events): Master the event bus for building decoupled, event-driven services.
212
+ - [**Cache Module**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/cache): Speed up your application with our decorator-driven caching system.
213
+ - [**Logging**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/logging): Understand the structured, context-aware logging system.
214
+ - [**Scheduling**](https://github.com/piyushpriyadarshi/bootifyjs/tree/main/src/scheduling): Set up cron jobs and scheduled tasks.
@@ -2,12 +2,12 @@ import { FastifyInstance, FastifyReply, FastifyRequest, FastifyServerOptions } f
2
2
  import { ZodObject } from 'zod';
3
3
  import { FastifyMiddleware } from './core/decorators';
4
4
  import { Constructor } from './core/di-container';
5
- import { Logger } from './logging/core/logger';
6
- import { StreamingStartupLogger } from './logging/core/streaming-startup-logger';
5
+ import { ILogger, LoggerBuilder, StreamingStartupLogger } from './logging';
7
6
  import { SchedulerService } from './scheduling/scheduler.service';
8
7
  export type PluginRegistrationFn = (app: FastifyInstance) => Promise<void> | void;
9
8
  export type ErrorHandlerFn = (error: Error, request: FastifyRequest, reply: FastifyReply) => Promise<void> | void;
10
9
  export type LifecycleHookFn = (app: FastifyInstance) => Promise<void> | void;
10
+ export type LoggerConfigFn = (builder: LoggerBuilder) => LoggerBuilder;
11
11
  export declare class BootifyApp {
12
12
  private app;
13
13
  private logger;
@@ -21,10 +21,16 @@ export declare class BootifyApp {
21
21
  private afterStartHooks;
22
22
  private customErrorHandler?;
23
23
  private enableScheduler;
24
+ private loggerConfigFn?;
25
+ private serviceName;
24
26
  private fastifyOptions;
25
27
  setFastifyOptions(options: FastifyServerOptions): this;
26
28
  setPort(port: number): this;
27
29
  setHostname(hostname: string): this;
30
+ /**
31
+ * Set the service/application name (used in logs)
32
+ */
33
+ setServiceName(name: string): this;
28
34
  useConfig(schema: ZodObject<any>): this;
29
35
  useControllers(controllers: Constructor[]): this;
30
36
  usePlugin(plugin: PluginRegistrationFn): this;
@@ -34,10 +40,22 @@ export declare class BootifyApp {
34
40
  beforeStart(hook: LifecycleHookFn): this;
35
41
  afterStart(hook: LifecycleHookFn): this;
36
42
  useScheduler(enabled?: boolean): this;
43
+ /**
44
+ * Configure the logger using the builder pattern
45
+ *
46
+ * @example
47
+ * createBootify()
48
+ * .useLogger(builder => builder
49
+ * .setLevel('debug')
50
+ * .addTransport(new MyCustomTransport())
51
+ * )
52
+ */
53
+ useLogger(configFn: LoggerConfigFn): this;
54
+ private initializeLogger;
37
55
  build(): Promise<{
38
56
  app: FastifyInstance;
39
57
  start: () => Promise<void>;
40
- logger: Logger;
58
+ logger: ILogger;
41
59
  startupLogger: StreamingStartupLogger;
42
60
  scheduler?: SchedulerService;
43
61
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"BootifyApp.d.ts","sourceRoot":"","sources":["../src/BootifyApp.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AACtG,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAG/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAa,MAAM,qBAAqB,CAAA;AAG5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AACjF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AACjH,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAE5E,qBAAa,UAAU;IACnB,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,SAAS,CAAC,CAAkB;IACpC,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,kBAAkB,CAAC,CAAgB;IAC3C,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,cAAc,CAGrB;IAED,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAKtD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKnC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IAKvC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI;IAKhD,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAK7C,aAAa,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAOlD,cAAc,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAKtD,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAK9C,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAKxC,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAKvC,YAAY,CAAC,OAAO,GAAE,OAAc,GAAG,IAAI;IAMrC,KAAK,IAAI,OAAO,CAAC;QACnB,GAAG,EAAE,eAAe,CAAA;QACpB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;QAC1B,MAAM,EAAE,MAAM,CAAA;QACd,aAAa,EAAE,sBAAsB,CAAA;QACrC,SAAS,CAAC,EAAE,gBAAgB,CAAA;KAC/B,CAAC;IAiEI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,qBAAqB;CAgBhC;AAED,wBAAgB,aAAa,IAAI,UAAU,CAE1C"}
1
+ {"version":3,"file":"BootifyApp.d.ts","sourceRoot":"","sources":["../src/BootifyApp.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ class BootifyApp {
21
21
  this.beforeStartHooks = [];
22
22
  this.afterStartHooks = [];
23
23
  this.enableScheduler = true;
24
+ this.serviceName = 'bootify-app';
24
25
  this.fastifyOptions = {
25
26
  logger: false,
26
27
  ignoreTrailingSlash: true,
@@ -38,6 +39,13 @@ class BootifyApp {
38
39
  this.hostname = hostname;
39
40
  return this;
40
41
  }
42
+ /**
43
+ * Set the service/application name (used in logs)
44
+ */
45
+ setServiceName(name) {
46
+ this.serviceName = name;
47
+ return this;
48
+ }
41
49
  useConfig(schema) {
42
50
  AppConfig_1.AppConfig.initialize(schema);
43
51
  return this;
@@ -76,25 +84,54 @@ class BootifyApp {
76
84
  this.enableScheduler = enabled;
77
85
  return this;
78
86
  }
87
+ /**
88
+ * Configure the logger using the builder pattern
89
+ *
90
+ * @example
91
+ * createBootify()
92
+ * .useLogger(builder => builder
93
+ * .setLevel('debug')
94
+ * .addTransport(new MyCustomTransport())
95
+ * )
96
+ */
97
+ useLogger(configFn) {
98
+ this.loggerConfigFn = configFn;
99
+ return this;
100
+ }
101
+ initializeLogger() {
102
+ let builder = (0, logging_1.createLogger)()
103
+ .setServiceName(this.serviceName)
104
+ .setLevel(process.env.LOG_LEVEL || 'info')
105
+ .addContextProvider(new logging_1.RequestContextProvider())
106
+ .setBaseContext({
107
+ environment: process.env.NODE_ENV || 'development',
108
+ });
109
+ // Apply user customizations
110
+ if (this.loggerConfigFn) {
111
+ builder = this.loggerConfigFn(builder);
112
+ }
113
+ return builder.build();
114
+ }
79
115
  async build() {
80
- const { logger, startupLogger } = await (0, logging_1.initializeStreamingLogging)();
81
- this.logger = logger;
82
- this.startupLogger = startupLogger;
83
- startupLogger.logStartupBanner();
116
+ // Initialize the new logging system
117
+ this.logger = this.initializeLogger();
118
+ // Initialize startup logger (still uses the streaming one for nice output)
119
+ this.startupLogger = di_container_1.container.resolve(logging_1.StreamingStartupLogger);
120
+ this.startupLogger.logStartupBanner();
84
121
  this.app = (0, fastify_1.default)(this.fastifyOptions);
85
122
  for (const plugin of this.plugins) {
86
123
  await plugin(this.app);
87
124
  }
88
125
  if (this.controllers.length > 0) {
89
- startupLogger.logPhaseStart('Registering Controllers');
90
- startupLogger.logComponentStart('Controllers', `${this.controllers.length} found`);
126
+ this.startupLogger.logPhaseStart('Registering Controllers');
127
+ this.startupLogger.logComponentStart('Controllers', `${this.controllers.length} found`);
91
128
  (0, router_1.registerControllers)(this.app, this.controllers);
92
- startupLogger.logComponentComplete();
129
+ this.startupLogger.logComponentComplete();
93
130
  }
94
131
  if (this.customErrorHandler) {
95
132
  this.app.setErrorHandler(this.customErrorHandler);
96
133
  }
97
- startupLogger.logStartupComplete();
134
+ this.startupLogger.logStartupComplete();
98
135
  if (this.enableScheduler) {
99
136
  this.scheduler = di_container_1.container.resolve(scheduler_service_1.SchedulerService);
100
137
  }
@@ -104,19 +141,25 @@ class BootifyApp {
104
141
  await hook(this.app);
105
142
  }
106
143
  if (this.enableScheduler && this.scheduler) {
107
- startupLogger.logComponentStart('Scheduler', 'Starting scheduled jobs');
144
+ this.startupLogger.logComponentStart('Scheduler', 'Starting scheduled jobs');
108
145
  await this.scheduler.start();
109
- startupLogger.logComponentComplete();
146
+ this.startupLogger.logComponentComplete();
110
147
  }
111
148
  await this.app.listen({ port: this.port, host: this.hostname });
112
- startupLogger.logStartupSummary(this.port, this.hostname);
149
+ this.startupLogger.logStartupSummary(this.port, this.hostname);
150
+ // Log with the new logger
151
+ this.logger.info('Application started successfully', {
152
+ port: this.port,
153
+ host: this.hostname,
154
+ environment: process.env.NODE_ENV,
155
+ });
113
156
  for (const hook of this.afterStartHooks) {
114
157
  await hook(this.app);
115
158
  }
116
159
  this.setupGracefulShutdown();
117
160
  }
118
161
  catch (err) {
119
- this.app.log.error(err);
162
+ this.logger.error('Failed to start application', err);
120
163
  process.exit(1);
121
164
  }
122
165
  };
@@ -134,12 +177,12 @@ class BootifyApp {
134
177
  }
135
178
  setupGracefulShutdown() {
136
179
  const shutdown = async (signal) => {
137
- console.log(`\n[BootifyApp] Received ${signal}, shutting down gracefully...`);
180
+ this.logger.info(`Received ${signal}, shutting down gracefully...`);
138
181
  if (this.scheduler) {
139
182
  await this.scheduler.stop();
140
183
  }
141
184
  await this.app.close();
142
- console.log('[BootifyApp] Shutdown complete');
185
+ this.logger.info('Shutdown complete');
143
186
  process.exit(0);
144
187
  };
145
188
  process.on('SIGTERM', () => shutdown('SIGTERM'));
@@ -1 +1 @@
1
- {"version":3,"file":"BootifyApp.js","sourceRoot":"","sources":["../src/BootifyApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BootifyApp.js","sourceRoot":"","sources":["../src/BootifyApp.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ FrameworkConfigSchema = FrameworkConfigSchema.merge(LoggingConfigSchema);
35
35
  class AppConfig {
36
36
  constructor(userSchema) {
37
37
  // Merge framework and user schemas
38
- this.mergedSchema = FrameworkConfigSchema.merge(userSchema || zod_1.z.object({}));
38
+ this.mergedSchema = FrameworkConfigSchema.merge(userSchema || zod_1.z.object({})).passthrough();
39
39
  // Validate and load configuration
40
40
  this.config = this.validateConfig();
41
41
  // Optional debug output
@@ -1 +1 @@
1
- {"version":3,"file":"AppConfig.js","sourceRoot":"","sources":["../../src/config/AppConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppConfig.js","sourceRoot":"","sources":["../../src/config/AppConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { ILogger, LogContext } from '../../logging';
2
+ export interface PinoLoggerOptions {
3
+ level?: string;
4
+ serviceName?: string;
5
+ prettyPrint?: boolean;
6
+ }
7
+ export declare class PinoLoggerAdapter implements ILogger {
8
+ private logger;
9
+ constructor(options?: PinoLoggerOptions);
10
+ trace(message: string, context?: LogContext): void;
11
+ debug(message: string, context?: LogContext): void;
12
+ info(message: string, context?: LogContext): void;
13
+ warn(message: string, context?: LogContext): void;
14
+ error(message: string, error?: Error, context?: LogContext): void;
15
+ fatal(message: string, error?: Error, context?: LogContext): void;
16
+ child(bindings: LogContext): ILogger;
17
+ }
18
+ //# sourceMappingURL=pino-logger.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pino-logger.adapter.d.ts","sourceRoot":"","sources":["../../../src/examples/adapters/pino-logger.adapter.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAEnD,MAAM,WAAW,iBAAiB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,qBAAa,iBAAkB,YAAW,OAAO;IAC7C,OAAO,CAAC,MAAM,CAAa;gBAEf,OAAO,GAAE,iBAAsB;IAoC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjE,KAAK,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO;CAKvC"}
@@ -3,34 +3,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PinoAdapter = void 0;
6
+ exports.PinoLoggerAdapter = void 0;
7
7
  /**
8
- * Pino Adapter - Use Pino as the logging backend
8
+ * Example: Pino Logger Adapter with Request Context
9
9
  *
10
- * This adapter wraps Pino to implement the ILogger interface,
11
- * allowing users to leverage Pino's performance while using
12
- * the BootifyJS logging API.
10
+ * This shows how users can create their own logger adapter
11
+ * that implements the ILogger interface from BootifyJS.
12
+ *
13
+ * This adapter automatically includes request context (requestId, userId, etc.)
14
+ * in all log entries using Pino's mixin feature.
15
+ *
16
+ * Users must install pino themselves: npm install pino pino-pretty
13
17
  */
14
18
  const pino_1 = __importDefault(require("pino"));
15
- class PinoAdapter {
19
+ const request_context_service_1 = require("../../core/request-context.service");
20
+ class PinoLoggerAdapter {
16
21
  constructor(options = {}) {
17
22
  const pinoOptions = {
18
23
  level: options.level ?? 'info',
19
24
  messageKey: 'message',
20
25
  base: {
21
- service: options.serviceName ?? 'bootify-app',
26
+ service: options.serviceName ?? 'app',
22
27
  pid: process.pid,
23
28
  },
24
29
  timestamp: () => `,"timestamp":"${new Date().toISOString()}"`,
25
- ...options.pinoOptions,
30
+ // Mixin automatically adds request context to every log entry
31
+ mixin() {
32
+ const store = request_context_service_1.requestContextStore.getStore();
33
+ if (!store) {
34
+ return {};
35
+ }
36
+ return Object.fromEntries(store.entries());
37
+ },
26
38
  };
27
- if (options.transports && options.transports.length > 0) {
28
- this.logger = (0, pino_1.default)({
29
- ...pinoOptions,
30
- transport: { targets: options.transports },
31
- });
32
- }
33
- else if (options.prettyPrint) {
39
+ if (options.prettyPrint) {
34
40
  this.logger = (0, pino_1.default)({
35
41
  ...pinoOptions,
36
42
  transport: {
@@ -66,17 +72,10 @@ class PinoAdapter {
66
72
  this.logger.fatal({ ...context, err: error }, message);
67
73
  }
68
74
  child(bindings) {
69
- const childPino = this.logger.child(bindings);
70
- const adapter = new PinoAdapter();
71
- adapter.logger = childPino;
72
- return adapter;
73
- }
74
- /**
75
- * Get the underlying Pino logger for advanced usage
76
- */
77
- getPinoInstance() {
78
- return this.logger;
75
+ const childLogger = new PinoLoggerAdapter();
76
+ childLogger.logger = this.logger.child(bindings);
77
+ return childLogger;
79
78
  }
80
79
  }
81
- exports.PinoAdapter = PinoAdapter;
82
- //# sourceMappingURL=pino.adapter.js.map
80
+ exports.PinoLoggerAdapter = PinoLoggerAdapter;
81
+ //# sourceMappingURL=pino-logger.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pino-logger.adapter.js","sourceRoot":"","sources":["../../../src/examples/adapters/pino-logger.adapter.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;GAUG;AACH,gDAAuB;AACvB,gFAAwE;AASxE,MAAa,iBAAiB;IAG1B,YAAY,UAA6B,EAAE;QACvC,MAAM,WAAW,GAAuB;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM;YAC9B,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE;gBACF,OAAO,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;gBACrC,GAAG,EAAE,OAAO,CAAC,GAAG;aACnB;YACD,SAAS,EAAE,GAAG,EAAE,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG;YAC7D,8DAA8D;YAC9D,KAAK;gBACD,MAAM,KAAK,GAAG,6CAAmB,CAAC,QAAQ,EAAE,CAAA;gBAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,OAAO,EAAE,CAAA;gBACb,CAAC;gBACD,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YAC9C,CAAC;SACJ,CAAA;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAA,cAAI,EAAC;gBACf,GAAG,WAAW;gBACd,SAAS,EAAE;oBACP,MAAM,EAAE,aAAa;oBACrB,OAAO,EAAE;wBACL,QAAQ,EAAE,IAAI;wBACd,aAAa,EAAE,cAAc;wBAC7B,MAAM,EAAE,cAAc;qBACzB;iBACJ;aACJ,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,GAAG,IAAA,cAAI,EAAC,WAAW,CAAC,CAAA;QACnC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAoB;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAoB;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,OAAoB;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,OAAoB;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAAa,EAAE,OAAoB;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAAa,EAAE,OAAoB;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,QAAoB;QACtB,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAE,CACtC;QAAE,WAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC/D,OAAO,WAAW,CAAA;IACtB,CAAC;CACJ;AApED,8CAoEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"todo.controller.d.ts","sourceRoot":"","sources":["../../../src/examples/controllers/todo.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAkBvB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAUtD,QAAA,MAAM,UAAU;;;;;;EAIH,CAAA;AAUb,qBAGa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAGrD,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,MAAM,CAAS;IAQvB,WAAW;;;;;IAuBX,WAAW,CAAc,EAAE,EAAE,MAAM;;;;;IA2B7B,UAAU,CAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC;;;;;CAc1D"}
1
+ {"version":3,"file":"todo.controller.d.ts","sourceRoot":"","sources":["../../../src/examples/controllers/todo.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAkBvB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAUtD,QAAA,MAAM,UAAU;;;;;;EAIH,CAAA;AAUb,qBAGa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAGrD,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,MAAM,CAAU;IAQxB,WAAW;;;;;IAqBX,WAAW,CAAc,EAAE,EAAE,MAAM;;;;;IA2B7B,UAAU,CAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC;;;;;CAc1D"}
@@ -20,7 +20,6 @@ const decorators_2 = require("../../core/decorators");
20
20
  const di_container_1 = require("../../core/di-container");
21
21
  const request_context_service_1 = require("../../core/request-context.service");
22
22
  const decorators_3 = require("../../logging/core/decorators");
23
- const logger_1 = require("../../logging/core/logger");
24
23
  const tracing_service_1 = require("../../logging/core/tracing.service");
25
24
  const todo_service_1 = require("../services/todo.service");
26
25
  const createTodoSchema = {
@@ -50,9 +49,7 @@ let TodoController = class TodoController {
50
49
  // name: 'get all todos',
51
50
  // })
52
51
  console.log(context.store());
53
- const logger1 = di_container_1.container.resolve(logger_1.Logger);
54
- logger1.info('Hello from logger 1 get all todo');
55
- console.log(this.logger === logger1);
52
+ // Using the injected logger from @Loggable decorator
56
53
  this.logger.info('Hello from get all todo');
57
54
  // this.tracingService.spanEnd(span, 'ok')
58
55
  return this.todoService.getAllTodos();
@@ -1 +1 @@
1
- {"version":3,"file":"todo.controller.js","sourceRoot":"","sources":["../../../src/examples/controllers/todo.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"todo.controller.js","sourceRoot":"","sources":["../../../src/examples/controllers/todo.controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAC;AAc1B,OAAO,mCAAmC,CAAC;AAG3C,OAAO,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAC;AAe1B,OAAO,mCAAmC,CAAC;AAG3C,OAAO,oCAAoC,CAAC"}