bootifyjs 1.3.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BootifyApp.d.ts +48 -0
- package/dist/BootifyApp.d.ts.map +1 -0
- package/dist/BootifyApp.js +153 -0
- package/dist/BootifyApp.js.map +1 -0
- package/dist/api.d.ts +10 -3
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +54 -37
- package/dist/api.js.map +1 -1
- package/dist/core/decorators.d.ts +27 -1
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js +26 -3
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/router.js +17 -2
- package/dist/core/router.js.map +1 -1
- package/dist/examples/controllers/todo.controller.d.ts.map +1 -1
- package/dist/examples/controllers/todo.controller.js +16 -0
- package/dist/examples/controllers/todo.controller.js.map +1 -1
- package/dist/examples/enhanced-logger-example.d.ts +2 -0
- package/dist/examples/enhanced-logger-example.d.ts.map +1 -0
- package/dist/examples/enhanced-logger-example.js +143 -0
- package/dist/examples/enhanced-logger-example.js.map +1 -0
- package/dist/examples/index.d.ts +3 -2
- package/dist/examples/index.d.ts.map +1 -1
- package/dist/examples/index.js +129 -63
- package/dist/examples/index.js.map +1 -1
- package/dist/examples/scheduled-jobs-example.d.ts +10 -0
- package/dist/examples/scheduled-jobs-example.d.ts.map +1 -0
- package/dist/examples/scheduled-jobs-example.js +134 -0
- package/dist/examples/scheduled-jobs-example.js.map +1 -0
- package/dist/examples/services/scheduled-tasks.service.d.ts +17 -0
- package/dist/examples/services/scheduled-tasks.service.d.ts.map +1 -0
- package/dist/examples/services/scheduled-tasks.service.js +77 -0
- package/dist/examples/services/scheduled-tasks.service.js.map +1 -0
- package/dist/examples/services/todo.service.d.ts.map +1 -1
- package/dist/examples/services/todo.service.js.map +1 -1
- package/dist/examples/simple-scheduler-test.d.ts +6 -0
- package/dist/examples/simple-scheduler-test.d.ts.map +1 -0
- package/dist/examples/simple-scheduler-test.js +57 -0
- package/dist/examples/simple-scheduler-test.js.map +1 -0
- package/dist/examples/streaming-logger-example.d.ts +2 -0
- package/dist/examples/streaming-logger-example.d.ts.map +1 -0
- package/dist/examples/streaming-logger-example.js +124 -0
- package/dist/examples/streaming-logger-example.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/logging/core/adapters/index.d.ts +2 -0
- package/dist/logging/core/adapters/index.d.ts.map +1 -0
- package/dist/logging/core/adapters/index.js +18 -0
- package/dist/logging/core/adapters/index.js.map +1 -0
- package/dist/logging/core/adapters/pino.adapter.d.ts +32 -0
- package/dist/logging/core/adapters/pino.adapter.d.ts.map +1 -0
- package/dist/logging/core/adapters/pino.adapter.js +82 -0
- package/dist/logging/core/adapters/pino.adapter.js.map +1 -0
- package/dist/logging/core/base-logger.d.ts +44 -0
- package/dist/logging/core/base-logger.d.ts.map +1 -0
- package/dist/logging/core/base-logger.js +147 -0
- package/dist/logging/core/base-logger.js.map +1 -0
- package/dist/logging/core/context-providers/index.d.ts +2 -0
- package/dist/logging/core/context-providers/index.d.ts.map +1 -0
- package/dist/logging/core/context-providers/index.js +18 -0
- package/dist/logging/core/context-providers/index.js.map +1 -0
- package/dist/logging/core/context-providers/request-context.provider.d.ts +5 -0
- package/dist/logging/core/context-providers/request-context.provider.d.ts.map +1 -0
- package/dist/logging/core/context-providers/request-context.provider.js +19 -0
- package/dist/logging/core/context-providers/request-context.provider.js.map +1 -0
- package/dist/logging/core/enhanced-startup-logger.d.ts +48 -0
- package/dist/logging/core/enhanced-startup-logger.d.ts.map +1 -0
- package/dist/logging/core/enhanced-startup-logger.js +537 -0
- package/dist/logging/core/enhanced-startup-logger.js.map +1 -0
- package/dist/logging/core/interfaces.d.ts +75 -0
- package/dist/logging/core/interfaces.d.ts.map +1 -0
- package/dist/logging/core/interfaces.js +9 -0
- package/dist/logging/core/interfaces.js.map +1 -0
- package/dist/logging/core/logger-builder.d.ts +58 -0
- package/dist/logging/core/logger-builder.d.ts.map +1 -0
- package/dist/logging/core/logger-builder.js +121 -0
- package/dist/logging/core/logger-builder.js.map +1 -0
- package/dist/logging/core/logger.provider.d.ts +1 -1
- package/dist/logging/core/logger.provider.d.ts.map +1 -1
- package/dist/logging/core/logger.provider.js +59 -44
- package/dist/logging/core/logger.provider.js.map +1 -1
- package/dist/logging/core/startup.logger.d.ts +1 -0
- package/dist/logging/core/startup.logger.d.ts.map +1 -1
- package/dist/logging/core/startup.logger.js +28 -3
- package/dist/logging/core/startup.logger.js.map +1 -1
- package/dist/logging/core/streaming-startup-logger.d.ts +21 -0
- package/dist/logging/core/streaming-startup-logger.d.ts.map +1 -0
- package/dist/logging/core/streaming-startup-logger.js +209 -0
- package/dist/logging/core/streaming-startup-logger.js.map +1 -0
- package/dist/logging/core/transports/console.transport.d.ts +19 -0
- package/dist/logging/core/transports/console.transport.d.ts.map +1 -0
- package/dist/logging/core/transports/console.transport.js +67 -0
- package/dist/logging/core/transports/console.transport.js.map +1 -0
- package/dist/logging/core/transports/index.d.ts +2 -0
- package/dist/logging/core/transports/index.d.ts.map +1 -0
- package/dist/logging/core/transports/index.js +18 -0
- package/dist/logging/core/transports/index.js.map +1 -0
- package/dist/logging/index.d.ts +73 -2
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +115 -16
- package/dist/logging/index.js.map +1 -1
- package/dist/middleware/auth.middleware.d.ts +2 -2
- package/dist/middleware/auth.middleware.d.ts.map +1 -1
- package/dist/middleware/auth.middleware.js +12 -23
- package/dist/middleware/auth.middleware.js.map +1 -1
- package/dist/middleware/index.d.ts +1 -2
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +0 -1
- package/dist/middleware/index.js.map +1 -1
- package/dist/scheduling/index.d.ts +25 -0
- package/dist/scheduling/index.d.ts.map +1 -0
- package/dist/scheduling/index.js +41 -0
- package/dist/scheduling/index.js.map +1 -0
- package/dist/scheduling/scheduled.decorator.d.ts +25 -0
- package/dist/scheduling/scheduled.decorator.d.ts.map +1 -0
- package/dist/scheduling/scheduled.decorator.js +52 -0
- package/dist/scheduling/scheduled.decorator.js.map +1 -0
- package/dist/scheduling/scheduler.service.d.ts +39 -0
- package/dist/scheduling/scheduler.service.d.ts.map +1 -0
- package/dist/scheduling/scheduler.service.js +341 -0
- package/dist/scheduling/scheduler.service.js.map +1 -0
- package/dist/scheduling/scheduler.types.d.ts +47 -0
- package/dist/scheduling/scheduler.types.d.ts.map +1 -0
- package/dist/scheduling/scheduler.types.js +6 -0
- package/dist/scheduling/scheduler.types.js.map +1 -0
- package/package.json +17 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { FastifyInstance, FastifyReply, FastifyRequest, FastifyServerOptions } from 'fastify';
|
|
2
|
+
import { ZodObject } from 'zod';
|
|
3
|
+
import { FastifyMiddleware } from './core/decorators';
|
|
4
|
+
import { Constructor } from './core/di-container';
|
|
5
|
+
import { Logger } from './logging/core/logger';
|
|
6
|
+
import { StreamingStartupLogger } from './logging/core/streaming-startup-logger';
|
|
7
|
+
import { SchedulerService } from './scheduling/scheduler.service';
|
|
8
|
+
export type PluginRegistrationFn = (app: FastifyInstance) => Promise<void> | void;
|
|
9
|
+
export type ErrorHandlerFn = (error: Error, request: FastifyRequest, reply: FastifyReply) => Promise<void> | void;
|
|
10
|
+
export type LifecycleHookFn = (app: FastifyInstance) => Promise<void> | void;
|
|
11
|
+
export declare class BootifyApp {
|
|
12
|
+
private app;
|
|
13
|
+
private logger;
|
|
14
|
+
private startupLogger;
|
|
15
|
+
private scheduler?;
|
|
16
|
+
private port;
|
|
17
|
+
private hostname;
|
|
18
|
+
private controllers;
|
|
19
|
+
private plugins;
|
|
20
|
+
private beforeStartHooks;
|
|
21
|
+
private afterStartHooks;
|
|
22
|
+
private customErrorHandler?;
|
|
23
|
+
private enableScheduler;
|
|
24
|
+
private fastifyOptions;
|
|
25
|
+
setFastifyOptions(options: FastifyServerOptions): this;
|
|
26
|
+
setPort(port: number): this;
|
|
27
|
+
setHostname(hostname: string): this;
|
|
28
|
+
useConfig(schema: ZodObject<any>): this;
|
|
29
|
+
useControllers(controllers: Constructor[]): this;
|
|
30
|
+
usePlugin(plugin: PluginRegistrationFn): this;
|
|
31
|
+
useMiddleware(middleware: FastifyMiddleware): this;
|
|
32
|
+
useMiddlewares(middlewares: FastifyMiddleware[]): this;
|
|
33
|
+
useErrorHandler(handler: ErrorHandlerFn): this;
|
|
34
|
+
beforeStart(hook: LifecycleHookFn): this;
|
|
35
|
+
afterStart(hook: LifecycleHookFn): this;
|
|
36
|
+
useScheduler(enabled?: boolean): this;
|
|
37
|
+
build(): Promise<{
|
|
38
|
+
app: FastifyInstance;
|
|
39
|
+
start: () => Promise<void>;
|
|
40
|
+
logger: Logger;
|
|
41
|
+
startupLogger: StreamingStartupLogger;
|
|
42
|
+
scheduler?: SchedulerService;
|
|
43
|
+
}>;
|
|
44
|
+
start(): Promise<void>;
|
|
45
|
+
private setupGracefulShutdown;
|
|
46
|
+
}
|
|
47
|
+
export declare function createBootify(): BootifyApp;
|
|
48
|
+
//# sourceMappingURL=BootifyApp.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BootifyApp = void 0;
|
|
7
|
+
exports.createBootify = createBootify;
|
|
8
|
+
const fastify_1 = __importDefault(require("fastify"));
|
|
9
|
+
const AppConfig_1 = require("./config/AppConfig");
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
const di_container_1 = require("./core/di-container");
|
|
12
|
+
const router_1 = require("./core/router");
|
|
13
|
+
const logging_1 = require("./logging");
|
|
14
|
+
const scheduler_service_1 = require("./scheduling/scheduler.service");
|
|
15
|
+
class BootifyApp {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.port = constants_1.DEFAULT_SERVER_PORT;
|
|
18
|
+
this.hostname = constants_1.DEFAULT_SERVER_HOST;
|
|
19
|
+
this.controllers = [];
|
|
20
|
+
this.plugins = [];
|
|
21
|
+
this.beforeStartHooks = [];
|
|
22
|
+
this.afterStartHooks = [];
|
|
23
|
+
this.enableScheduler = true;
|
|
24
|
+
this.fastifyOptions = {
|
|
25
|
+
logger: false,
|
|
26
|
+
ignoreTrailingSlash: true,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
setFastifyOptions(options) {
|
|
30
|
+
this.fastifyOptions = { ...this.fastifyOptions, ...options };
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
setPort(port) {
|
|
34
|
+
this.port = port;
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
setHostname(hostname) {
|
|
38
|
+
this.hostname = hostname;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
useConfig(schema) {
|
|
42
|
+
AppConfig_1.AppConfig.initialize(schema);
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
useControllers(controllers) {
|
|
46
|
+
this.controllers.push(...controllers);
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
usePlugin(plugin) {
|
|
50
|
+
this.plugins.push(plugin);
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
useMiddleware(middleware) {
|
|
54
|
+
this.plugins.push(async (app) => {
|
|
55
|
+
app.addHook('onRequest', middleware);
|
|
56
|
+
});
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
useMiddlewares(middlewares) {
|
|
60
|
+
middlewares.forEach((middleware) => this.useMiddleware(middleware));
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
useErrorHandler(handler) {
|
|
64
|
+
this.customErrorHandler = handler;
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
beforeStart(hook) {
|
|
68
|
+
this.beforeStartHooks.push(hook);
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
afterStart(hook) {
|
|
72
|
+
this.afterStartHooks.push(hook);
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
useScheduler(enabled = true) {
|
|
76
|
+
this.enableScheduler = enabled;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
async build() {
|
|
80
|
+
const { logger, startupLogger } = await (0, logging_1.initializeStreamingLogging)();
|
|
81
|
+
this.logger = logger;
|
|
82
|
+
this.startupLogger = startupLogger;
|
|
83
|
+
startupLogger.logStartupBanner();
|
|
84
|
+
this.app = (0, fastify_1.default)(this.fastifyOptions);
|
|
85
|
+
for (const plugin of this.plugins) {
|
|
86
|
+
await plugin(this.app);
|
|
87
|
+
}
|
|
88
|
+
if (this.controllers.length > 0) {
|
|
89
|
+
startupLogger.logPhaseStart('Registering Controllers');
|
|
90
|
+
startupLogger.logComponentStart('Controllers', `${this.controllers.length} found`);
|
|
91
|
+
(0, router_1.registerControllers)(this.app, this.controllers);
|
|
92
|
+
startupLogger.logComponentComplete();
|
|
93
|
+
}
|
|
94
|
+
if (this.customErrorHandler) {
|
|
95
|
+
this.app.setErrorHandler(this.customErrorHandler);
|
|
96
|
+
}
|
|
97
|
+
startupLogger.logStartupComplete();
|
|
98
|
+
if (this.enableScheduler) {
|
|
99
|
+
this.scheduler = di_container_1.container.resolve(scheduler_service_1.SchedulerService);
|
|
100
|
+
}
|
|
101
|
+
const start = async () => {
|
|
102
|
+
try {
|
|
103
|
+
for (const hook of this.beforeStartHooks) {
|
|
104
|
+
await hook(this.app);
|
|
105
|
+
}
|
|
106
|
+
if (this.enableScheduler && this.scheduler) {
|
|
107
|
+
startupLogger.logComponentStart('Scheduler', 'Starting scheduled jobs');
|
|
108
|
+
await this.scheduler.start();
|
|
109
|
+
startupLogger.logComponentComplete();
|
|
110
|
+
}
|
|
111
|
+
await this.app.listen({ port: this.port, host: this.hostname });
|
|
112
|
+
startupLogger.logStartupSummary(this.port, this.hostname);
|
|
113
|
+
for (const hook of this.afterStartHooks) {
|
|
114
|
+
await hook(this.app);
|
|
115
|
+
}
|
|
116
|
+
this.setupGracefulShutdown();
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
this.app.log.error(err);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
return {
|
|
124
|
+
app: this.app,
|
|
125
|
+
start,
|
|
126
|
+
logger: this.logger,
|
|
127
|
+
startupLogger: this.startupLogger,
|
|
128
|
+
scheduler: this.scheduler,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
async start() {
|
|
132
|
+
const { start } = await this.build();
|
|
133
|
+
await start();
|
|
134
|
+
}
|
|
135
|
+
setupGracefulShutdown() {
|
|
136
|
+
const shutdown = async (signal) => {
|
|
137
|
+
console.log(`\n[BootifyApp] Received ${signal}, shutting down gracefully...`);
|
|
138
|
+
if (this.scheduler) {
|
|
139
|
+
await this.scheduler.stop();
|
|
140
|
+
}
|
|
141
|
+
await this.app.close();
|
|
142
|
+
console.log('[BootifyApp] Shutdown complete');
|
|
143
|
+
process.exit(0);
|
|
144
|
+
};
|
|
145
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
146
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.BootifyApp = BootifyApp;
|
|
150
|
+
function createBootify() {
|
|
151
|
+
return new BootifyApp();
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=BootifyApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BootifyApp.js","sourceRoot":"","sources":["../src/BootifyApp.ts"],"names":[],"mappings":"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"}
|
package/dist/api.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { FastifyInstance } from 'fastify';
|
|
1
|
+
import { FastifyInstance, FastifyServerOptions } from 'fastify';
|
|
2
2
|
import { ZodObject } from 'zod';
|
|
3
3
|
import { FastifyMiddleware } from './core/decorators';
|
|
4
4
|
import { Constructor } from './core/di-container';
|
|
5
5
|
import { ContextExtractor } from './middleware/context.middleware';
|
|
6
6
|
export interface BootifyAppOptions {
|
|
7
|
-
controllers
|
|
7
|
+
controllers?: Constructor[];
|
|
8
8
|
port?: number;
|
|
9
9
|
hostname?: string;
|
|
10
10
|
enableSwagger?: boolean;
|
|
@@ -13,9 +13,16 @@ export interface BootifyAppOptions {
|
|
|
13
13
|
globalMiddlewares?: FastifyMiddleware[];
|
|
14
14
|
ignoreTrailingSlash?: boolean;
|
|
15
15
|
enableCookie?: boolean;
|
|
16
|
+
enableRequestLogger?: boolean;
|
|
17
|
+
enableContextMiddleware?: boolean;
|
|
18
|
+
enableErrorHandler?: boolean;
|
|
19
|
+
fastifyOptions?: FastifyServerOptions;
|
|
20
|
+
autoStart?: boolean;
|
|
16
21
|
}
|
|
17
|
-
export declare function createBootifyApp(options
|
|
22
|
+
export declare function createBootifyApp(options?: BootifyAppOptions): Promise<{
|
|
18
23
|
app: FastifyInstance<import("fastify").RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault>;
|
|
19
24
|
start: () => Promise<void>;
|
|
25
|
+
logger: import("./logging").Logger;
|
|
26
|
+
startupLogger: import("./logging").StartupLoggerService;
|
|
20
27
|
}>;
|
|
21
28
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,EAAY,SAAS,EAAE,MAAM,KAAK,CAAA;AAGzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGjD,OAAO,EAAE,gBAAgB,EAA2B,MAAM,iCAAiC,CAAA;AAM3F,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IAC7B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACvC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,oBAAoB,CAAA;IACrC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB;;;;;GAqIrE"}
|
package/dist/api.js
CHANGED
|
@@ -38,25 +38,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.createBootifyApp = createBootifyApp;
|
|
40
40
|
const fastify_1 = __importDefault(require("fastify"));
|
|
41
|
-
const zod_1 =
|
|
41
|
+
const zod_1 = require("zod");
|
|
42
42
|
const AppConfig_1 = require("./config/AppConfig");
|
|
43
43
|
const constants_1 = require("./constants");
|
|
44
44
|
const router_1 = require("./core/router");
|
|
45
45
|
const logging_1 = require("./logging");
|
|
46
46
|
const context_middleware_1 = require("./middleware/context.middleware");
|
|
47
47
|
const request_logger_middleware_1 = require("./middleware/request-logger.middleware");
|
|
48
|
-
async function createBootifyApp(options) {
|
|
49
|
-
|
|
48
|
+
async function createBootifyApp(options = {}) {
|
|
49
|
+
// Initialize config if provided
|
|
50
|
+
if (options.configSchema) {
|
|
51
|
+
AppConfig_1.AppConfig.initialize(options.configSchema);
|
|
52
|
+
}
|
|
50
53
|
const { logger, startupLogger } = await (0, logging_1.intitializeLogging)();
|
|
51
54
|
startupLogger.logStartupBanner();
|
|
55
|
+
// Create Fastify instance with custom options
|
|
52
56
|
const app = (0, fastify_1.default)({
|
|
53
57
|
logger: false,
|
|
54
58
|
ignoreTrailingSlash: options.ignoreTrailingSlash ?? true,
|
|
59
|
+
...options.fastifyOptions,
|
|
55
60
|
});
|
|
56
|
-
// Register context middleware FIRST
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
// Register context middleware FIRST (if enabled)
|
|
62
|
+
if (options.enableContextMiddleware !== false) {
|
|
63
|
+
startupLogger.logComponentStart('Request Context Middleware');
|
|
64
|
+
app.addHook('onRequest', (0, context_middleware_1.createContextMiddleware)(options.contextExtractor));
|
|
65
|
+
startupLogger.logComponentComplete('Request Context Middleware');
|
|
66
|
+
}
|
|
60
67
|
// Register cookie parsing if enabled
|
|
61
68
|
if (options.enableCookie) {
|
|
62
69
|
startupLogger.logComponentStart('Registering Cookie Parser');
|
|
@@ -81,32 +88,35 @@ async function createBootifyApp(options) {
|
|
|
81
88
|
});
|
|
82
89
|
startupLogger.logComponentComplete('Global Middlewares');
|
|
83
90
|
}
|
|
84
|
-
// 2. Request Logger Hooks
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
91
|
+
// 2. Request Logger Hooks (if enabled)
|
|
92
|
+
if (options.enableRequestLogger !== false) {
|
|
93
|
+
startupLogger.logComponentStart('Attaching Request Logger');
|
|
94
|
+
app.addHook('onRequest', request_logger_middleware_1.requestLoggerOnRequest);
|
|
95
|
+
app.addHook('onResponse', (0, request_logger_middleware_1.createRequestLoggerOnResponse)(logger));
|
|
96
|
+
startupLogger.logComponentComplete('Attaching Request Logger');
|
|
97
|
+
}
|
|
98
|
+
// 3. Global Error Handler (if enabled)
|
|
99
|
+
if (options.enableErrorHandler !== false) {
|
|
100
|
+
startupLogger.logComponentStart('Attaching Global ErrorHandler');
|
|
101
|
+
app.setErrorHandler((error, request, reply) => {
|
|
102
|
+
if (error instanceof zod_1.ZodError) {
|
|
103
|
+
reply.status(400).send({
|
|
104
|
+
statusCode: 400,
|
|
105
|
+
error: 'Bad Request',
|
|
106
|
+
message: 'Validation failed',
|
|
107
|
+
details: error.issues,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
else if (error.statusCode) {
|
|
111
|
+
reply.send(error);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
logger.error('Internal Server Error', error);
|
|
115
|
+
reply.status(500).send({ message: 'Internal Server Error' });
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
startupLogger.logComponentComplete('Attaching Global ErrorHandler');
|
|
119
|
+
}
|
|
110
120
|
if (options.enableSwagger) {
|
|
111
121
|
startupLogger.logComponentStart('Initializing Swagger');
|
|
112
122
|
const swaggerHost = options.hostname ?? 'localhost';
|
|
@@ -128,9 +138,12 @@ async function createBootifyApp(options) {
|
|
|
128
138
|
});
|
|
129
139
|
startupLogger.logComponentComplete(' Swagger COnfiguiration Done');
|
|
130
140
|
}
|
|
131
|
-
|
|
132
|
-
(
|
|
133
|
-
|
|
141
|
+
// Register controllers (if provided)
|
|
142
|
+
if (options.controllers && options.controllers.length > 0) {
|
|
143
|
+
startupLogger.logComponentStart('Registering Controllers');
|
|
144
|
+
(0, router_1.registerControllers)(app, options.controllers);
|
|
145
|
+
startupLogger.logComponentComplete('Registering Controllers');
|
|
146
|
+
}
|
|
134
147
|
startupLogger.logStartupComplete();
|
|
135
148
|
const start = async () => {
|
|
136
149
|
try {
|
|
@@ -144,6 +157,10 @@ async function createBootifyApp(options) {
|
|
|
144
157
|
process.exit(1);
|
|
145
158
|
}
|
|
146
159
|
};
|
|
147
|
-
|
|
160
|
+
// Auto-start if requested
|
|
161
|
+
if (options.autoStart) {
|
|
162
|
+
await start();
|
|
163
|
+
}
|
|
164
|
+
return { app, start, logger, startupLogger };
|
|
148
165
|
}
|
|
149
166
|
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,4CAqIC;AApKD,sDAAwE;AACxE,6BAAyC;AACzC,kDAA8C;AAC9C,2CAAsE;AAGtE,0CAAmD;AACnD,uCAA8C;AAC9C,wEAA2F;AAC3F,sFAG+C;AAmBxC,KAAK,UAAU,gBAAgB,CAAC,UAA6B,EAAE;IACpE,gCAAgC;IAChC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,qBAAS,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,4BAAkB,GAAE,CAAA;IAE5D,aAAa,CAAC,gBAAgB,EAAE,CAAA;IAEhC,8CAA8C;IAC9C,MAAM,GAAG,GAAoB,IAAA,iBAAO,EAAC;QACnC,MAAM,EAAE,KAAK;QACb,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI,IAAI;QACxD,GAAG,OAAO,CAAC,cAAc;KAC1B,CAAC,CAAA;IAEF,iDAAiD;IACjD,IAAI,OAAO,CAAC,uBAAuB,KAAK,KAAK,EAAE,CAAC;QAC9C,aAAa,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAA;QAC7D,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,IAAA,4CAAuB,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAC3E,aAAa,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAA;IAClE,CAAC;IAED,qCAAqC;IAErC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,aAAa,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAA;QAC5D,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,yBAAa,iBAA2B,uCAAC,CAAA;YAC/D,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE;gBACxC,IAAI,EAAE,WAAW,EAAE,oDAAoD;gBACvE,YAAY,EAAE,EAAE,EAAE,8BAA8B;aACjD,CAAC,CAAA;YACF,aAAa,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAA;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qHAAqH,CAAC,CAAA;QACxI,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,aAAa,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;QACrD,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;YACtD,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;YACpC,OAAO,CAAC,GAAG,CAAC,oCAAoC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QACF,aAAa,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAA;IAC1D,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,CAAC,mBAAmB,KAAK,KAAK,EAAE,CAAC;QAC1C,aAAa,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAA;QAC3D,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,kDAAsB,CAAC,CAAA;QAChD,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,IAAA,yDAA6B,EAAC,MAAM,CAAC,CAAC,CAAA;QAChE,aAAa,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAA;IAChE,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,EAAE,CAAC;QACzC,aAAa,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAA;QAEhE,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC5C,IAAI,KAAK,YAAY,cAAQ,EAAE,CAAC;gBAC9B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACrB,UAAU,EAAE,GAAG;oBACf,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,mBAAmB;oBAC5B,OAAO,EAAE,KAAK,CAAC,MAAM;iBACtB,CAAC,CAAA;YACJ,CAAC;iBAAM,IAAK,KAAa,CAAC,UAAU,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;gBAC5C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAA;YAC9D,CAAC;QACH,CAAC,CAAC,CAAA;QACF,aAAa,CAAC,oBAAoB,CAAC,+BAA+B,CAAC,CAAA;IACrE,CAAC;IAKD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,aAAa,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;QACvD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAA;QACnD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,+BAAmB,CAAA;QACvD,MAAM,cAAc,GAAG,wDAAa,kBAAkB,GAAC,CAAA;QACvD,MAAM,gBAAgB,GAAG,wDAAa,qBAAqB,GAAC,CAAA;QAC5D,MAAM,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;YACzC,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,KAAK,EAAE,uBAAuB;oBAC9B,WAAW,EAAE,mBAAmB;oBAChC,OAAO,EAAE,OAAO;iBACjB;gBACD,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,WAAW,IAAI,WAAW,EAAE,EAAE,CAAC;aAC3D;SACF,CAAC,CAAA;QAEF,MAAM,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC3C,WAAW,EAAE,WAAW;SACzB,CAAC,CAAA;QACF,aAAa,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAA;IACpE,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,aAAa,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAA;QAC1D,IAAA,4BAAmB,EAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;QAC7C,aAAa,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAA;IAC/D,CAAC;IAED,aAAa,CAAC,kBAAkB,EAAE,CAAA;IAElC,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,+BAAmB,CAAA;YACtD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,IAAI,+BAAmB,CAAA;YAC1D,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;YACxD,aAAa,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAA;IAED,0BAA0B;IAC1B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,KAAK,EAAE,CAAA;IACf,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;AAC9C,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { FastifyReply, FastifyRequest } from 'fastify';
|
|
1
2
|
import 'reflect-metadata';
|
|
2
3
|
import { ZodSchema } from 'zod';
|
|
3
|
-
import { FastifyRequest, FastifyReply } from 'fastify';
|
|
4
4
|
import { ComponentOptions } from './di-container';
|
|
5
5
|
export declare const METADATA_KEYS: {
|
|
6
6
|
controllerPrefix: "bootify:controller-prefix";
|
|
@@ -10,6 +10,7 @@ export declare const METADATA_KEYS: {
|
|
|
10
10
|
middleware: "bootify:middleware";
|
|
11
11
|
autowiredProperties: "bootify:autowired-properties";
|
|
12
12
|
autowiredParams: "bootify:autowired-params";
|
|
13
|
+
swaggerMetadata: string;
|
|
13
14
|
};
|
|
14
15
|
export type FastifyMiddleware = (request: FastifyRequest, reply: FastifyReply) => Promise<void> | void;
|
|
15
16
|
export declare const Component: (options?: ComponentOptions) => ClassDecorator;
|
|
@@ -39,6 +40,31 @@ export interface ValidationDecoratorOptions {
|
|
|
39
40
|
};
|
|
40
41
|
}
|
|
41
42
|
export declare const Schema: (schema: ValidationDecoratorOptions) => MethodDecorator;
|
|
43
|
+
export interface SwaggerOptions {
|
|
44
|
+
summary?: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
tags?: string[];
|
|
47
|
+
deprecated?: boolean;
|
|
48
|
+
operationId?: string;
|
|
49
|
+
security?: Array<Record<string, string[]>>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Decorator to add Swagger/OpenAPI documentation metadata to a route.
|
|
53
|
+
* This metadata will be merged with the schema generated from @Schema decorator.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* @Get('/users/:id')
|
|
57
|
+
* @Swagger({
|
|
58
|
+
* summary: 'Get user by ID',
|
|
59
|
+
* description: 'Retrieves a single user by their unique identifier',
|
|
60
|
+
* tags: ['Users'],
|
|
61
|
+
* deprecated: false
|
|
62
|
+
* })
|
|
63
|
+
* getUserById(@Param('id') id: string) {
|
|
64
|
+
* // ...
|
|
65
|
+
* }
|
|
66
|
+
*/
|
|
67
|
+
export declare const Swagger: (options: SwaggerOptions) => MethodDecorator;
|
|
42
68
|
export declare const UseMiddleware: (...middlewares: FastifyMiddleware[]) => MethodDecorator & ClassDecorator;
|
|
43
69
|
export declare const Autowired: (token?: any) => any;
|
|
44
70
|
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,kBAAkB,CAAA;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAG/B,OAAO,EAAE,gBAAgB,EAAoB,MAAM,gBAAgB,CAAA;AAGnE,eAAO,MAAM,aAAa;;;;;;;;;CASzB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAUzB,eAAO,MAAM,SAAS,GAAI,UAAS,gBAAqB,KAAG,cAuB1D,CAAA;AACD,eAAO,MAAM,OAAO,GAAI,UAAS,gBAAqB,KAAG,cAAoC,CAAA;AAG7F,eAAO,MAAM,UAAU,GAAI,UAAS,gBAAqB,KAAG,cAAoC,CAAA;AAEhG,eAAO,MAAM,UAAU,GACpB,SAAQ,MAAW,KAAG,cAIpB,CAAA;AAmBL,eAAO,MAAM,GAAG,UAZL,MAAM,KAAS,eAYoB,CAAA;AAC9C,eAAO,MAAM,IAAI,UAbN,MAAM,KAAS,eAasB,CAAA;AAChD,eAAO,MAAM,GAAG,UAdL,MAAM,KAAS,eAcoB,CAAA;AAC9C,eAAO,MAAM,MAAM,UAfR,MAAM,KAAS,eAe0B,CAAA;AACpD,eAAO,MAAM,KAAK,UAhBP,MAAM,KAAS,eAgBwB,CAAA;AAWlD,eAAO,MAAM,IAAI,iBANJ,GAAG,eAAe,MAAM,GAAG,MAAM,kBAAkB,MAAM,SAMhB,CAAA;AACtD,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,cAPtB,GAAG,eAAe,MAAM,GAAG,MAAM,kBAAkB,MAAM,SAOK,CAAA;AAC3E,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,cARrB,GAAG,eAAe,MAAM,GAAG,MAAM,kBAAkB,MAAM,SAQI,CAAA;AAC1E,eAAO,MAAM,GAAG,iBATH,GAAG,eAAe,MAAM,GAAG,MAAM,kBAAkB,MAAM,SASd,CAAA;AACxD,eAAO,MAAM,GAAG,iBAVH,GAAG,eAAe,MAAM,GAAG,MAAM,kBAAkB,MAAM,SAUhB,CAAA;AAEtD,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE;QACV,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;KACrC,CAAA;CACF;AASD,eAAO,MAAM,MAAM,WANO,0BAA0B,KAAG,eAMzB,CAAA;AAI9B,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;CAC3C;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,OAAO,GAAI,SAAS,cAAc,KAAG,eAIjD,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,GAAG,aAAa,iBAAiB,EAAE,KAClC,eAAe,GAAG,cAWpB,CAAA;AA0DD,eAAO,MAAM,SAAS,GAAI,QAAQ,GAAG,KAAG,GAoCvC,CAAA"}
|
package/dist/core/decorators.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Autowired = exports.UseMiddleware = exports.Schema = exports.Res = exports.Req = exports.Param = exports.Query = exports.Body = exports.Patch = exports.Delete = exports.Put = exports.Post = exports.Get = exports.Controller = exports.Repository = exports.Service = exports.Component = exports.METADATA_KEYS = void 0;
|
|
3
|
+
exports.Autowired = exports.UseMiddleware = exports.Swagger = exports.Schema = exports.Res = exports.Req = exports.Param = exports.Query = exports.Body = exports.Patch = exports.Delete = exports.Put = exports.Post = exports.Get = exports.Controller = exports.Repository = exports.Service = exports.Component = exports.METADATA_KEYS = void 0;
|
|
4
4
|
require("reflect-metadata");
|
|
5
|
-
const di_container_1 = require("./di-container");
|
|
6
|
-
const component_registry_1 = require("./component-registry");
|
|
7
5
|
const constants_1 = require("../constants");
|
|
6
|
+
const component_registry_1 = require("./component-registry");
|
|
7
|
+
const di_container_1 = require("./di-container");
|
|
8
8
|
// --- Metadata Keys ---
|
|
9
9
|
exports.METADATA_KEYS = {
|
|
10
10
|
controllerPrefix: constants_1.FRAMEWORK_METADATA_KEYS.CONTROLLER_PREFIX,
|
|
@@ -14,6 +14,7 @@ exports.METADATA_KEYS = {
|
|
|
14
14
|
middleware: constants_1.FRAMEWORK_METADATA_KEYS.MIDDLEWARE,
|
|
15
15
|
autowiredProperties: constants_1.FRAMEWORK_METADATA_KEYS.AUTOWIRED_PROPERTIES,
|
|
16
16
|
autowiredParams: constants_1.FRAMEWORK_METADATA_KEYS.AUTOWIRED_PARAMS,
|
|
17
|
+
swaggerMetadata: 'swagger:metadata',
|
|
17
18
|
};
|
|
18
19
|
// export interface ComponentOptions {
|
|
19
20
|
// scope?: Scope
|
|
@@ -92,6 +93,28 @@ const Validate = (schema) => {
|
|
|
92
93
|
};
|
|
93
94
|
};
|
|
94
95
|
exports.Schema = Validate;
|
|
96
|
+
/**
|
|
97
|
+
* Decorator to add Swagger/OpenAPI documentation metadata to a route.
|
|
98
|
+
* This metadata will be merged with the schema generated from @Schema decorator.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* @Get('/users/:id')
|
|
102
|
+
* @Swagger({
|
|
103
|
+
* summary: 'Get user by ID',
|
|
104
|
+
* description: 'Retrieves a single user by their unique identifier',
|
|
105
|
+
* tags: ['Users'],
|
|
106
|
+
* deprecated: false
|
|
107
|
+
* })
|
|
108
|
+
* getUserById(@Param('id') id: string) {
|
|
109
|
+
* // ...
|
|
110
|
+
* }
|
|
111
|
+
*/
|
|
112
|
+
const Swagger = (options) => {
|
|
113
|
+
return (target, propertyKey) => {
|
|
114
|
+
Reflect.defineMetadata(exports.METADATA_KEYS.swaggerMetadata, options, target, propertyKey);
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
exports.Swagger = Swagger;
|
|
95
118
|
const UseMiddleware = (...middlewares) => {
|
|
96
119
|
return (target, propertyKey) => {
|
|
97
120
|
const key = exports.METADATA_KEYS.middleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA8C,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA8C,MAAM,SAAS,CAAA;AAGrF,OAAO,EAAE,WAAW,EAAa,MAAM,gBAAgB,CAAA;AA2BvD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,QA+FvF"}
|
package/dist/core/router.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerControllers = registerControllers;
|
|
4
4
|
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
5
|
-
const di_container_1 = require("./di-container");
|
|
6
5
|
const decorators_1 = require("./decorators");
|
|
6
|
+
const di_container_1 = require("./di-container");
|
|
7
7
|
// const buildJsonSchema = (schemas: any) => {
|
|
8
8
|
// const schema: any = {}
|
|
9
9
|
// if (schemas.body) schema.body = zodToJsonSchema(schemas.body)
|
|
@@ -44,10 +44,25 @@ function registerControllers(fastify, controllers) {
|
|
|
44
44
|
const validationSchemas = Reflect.getMetadata(decorators_1.METADATA_KEYS.validationSchema, controllerInstance, route.handlerName);
|
|
45
45
|
// console.log(validationSchemas)
|
|
46
46
|
const url = `${prefix}${route.path}`.replace(/\/+/g, '/');
|
|
47
|
+
// Get Swagger metadata if it exists
|
|
48
|
+
const swaggerMetadata = Reflect.getMetadata(decorators_1.METADATA_KEYS.swaggerMetadata, controllerInstance, route.handlerName);
|
|
49
|
+
// Build the schema, merging validation schemas with swagger metadata
|
|
50
|
+
let schema = validationSchemas ? buildFastifySchema(validationSchemas) : {};
|
|
51
|
+
if (swaggerMetadata) {
|
|
52
|
+
schema = {
|
|
53
|
+
...schema,
|
|
54
|
+
summary: swaggerMetadata.summary,
|
|
55
|
+
description: swaggerMetadata.description,
|
|
56
|
+
tags: swaggerMetadata.tags,
|
|
57
|
+
deprecated: swaggerMetadata.deprecated,
|
|
58
|
+
operationId: swaggerMetadata.operationId,
|
|
59
|
+
security: swaggerMetadata.security,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
47
62
|
const routeOptions = {
|
|
48
63
|
method: route.method,
|
|
49
64
|
url,
|
|
50
|
-
schema
|
|
65
|
+
schema,
|
|
51
66
|
// 👇 Attach all middleware functions to the preHandler hook
|
|
52
67
|
preHandler: allMiddlewares,
|
|
53
68
|
handler: async (request, reply) => {
|
package/dist/core/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":";;AA8BA,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":";;AA8BA,kDA+FC;AA5HD,2DAAoD;AACpD,6CAAwE;AACxE,iDAAuD;AAEvD,8CAA8C;AAC9C,2BAA2B;AAC3B,kEAAkE;AAClE,2EAA2E;AAC3E,wEAAwE;AAExE,kBAAkB;AAClB,IAAI;AAEJ,SAAS,kBAAkB,CAAC,OAAmC;IAC7D,MAAM,MAAM,GAAQ,EAAE,CAAA;IAEtB,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,IAAA,oCAAe,EAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,WAAW,GAAG,IAAA,oCAAe,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACtE,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,IAAA,oCAAe,EAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEnE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAA;QACpB,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3C,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAA,oCAAe,EAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,mBAAmB,CAAC,OAAwB,EAAE,WAA0B;IACtF,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;IAE5C,WAAW,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;QACtC,sCAAsC;QACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,0BAAa,CAAC,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,CAAA;QAC7F,MAAM,kBAAkB,GAAG,wBAAS,CAAC,OAAO,CAAC,eAAe,CAAQ,CAAA;QACpE,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,0BAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,IAAI,EAAE,CAAA;QACzF,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,0BAAa,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,EAAE,CAAA;QAE/E,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YAC5B,kCAAkC;YAClC,MAAM,iBAAiB,GACrB,OAAO,CAAC,WAAW,CAAC,0BAAa,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;YAC5F,MAAM,cAAc,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,iBAAiB,CAAC,CAAA,CAAC,eAAe;YAElF,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YAC9E,MAAM,eAAe,GACnB,OAAO,CAAC,WAAW,CAAC,0BAAa,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;YAC5F,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAC3C,0BAAa,CAAC,gBAAgB,EAC9B,kBAAkB,EAClB,KAAK,CAAC,WAAW,CAClB,CAAA;YAED,iCAAiC;YACjC,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAEzD,oCAAoC;YACpC,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CACzC,0BAAa,CAAC,eAAe,EAC7B,kBAAkB,EAClB,KAAK,CAAC,WAAW,CAClB,CAAA;YAED,qEAAqE;YACrE,IAAI,MAAM,GAAQ,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAEhF,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,GAAG;oBACP,GAAG,MAAM;oBACT,OAAO,EAAE,eAAe,CAAC,OAAO;oBAChC,WAAW,EAAE,eAAe,CAAC,WAAW;oBACxC,IAAI,EAAE,eAAe,CAAC,IAAI;oBAC1B,UAAU,EAAE,eAAe,CAAC,UAAU;oBACtC,WAAW,EAAE,eAAe,CAAC,WAAW;oBACxC,QAAQ,EAAE,eAAe,CAAC,QAAQ;iBACnC,CAAA;YACH,CAAC;YAED,MAAM,YAAY,GAAiB;gBACjC,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG;gBACH,MAAM;gBACN,4DAA4D;gBAC5D,UAAU,EAAE,cAAc;gBAC1B,OAAO,EAAE,KAAK,EAAE,OAAuB,EAAE,KAAmB,EAAE,EAAE;oBAC9D,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;4BAC9C,IAAI,CAAC,KAAK;gCAAE,OAAO,SAAS,CAAA;4BAC5B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gCACnB,KAAK,MAAM;oCACT,OAAO,OAAO,CAAC,IAAI,CAAA;gCACrB,KAAK,OAAO;oCACV,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAE,OAAO,CAAC,KAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAA;gCACxE,KAAK,OAAO;oCACV,OAAQ,OAAO,CAAC,MAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gCAC5C,KAAK,SAAS;oCACZ,OAAO,OAAO,CAAA;gCAChB,KAAK,OAAO;oCACV,OAAO,KAAK,CAAA;gCACd;oCACE,OAAO,SAAS,CAAA;4BACpB,CAAC;wBACH,CAAC,CAAC,CAAA;wBAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;wBAErC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;4BAChB,OAAO,MAAM,CAAA;wBACf,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,KAAK,CAAA;oBACb,CAAC;gBACH,CAAC;aACF,CAAA;YAED,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YAC3B,OAAO,CAAC,GAAG,CACT,oBAAoB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,kBAAkB,cAAc,CAAC,MAClF,GAAG,CACJ,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;AAC7D,CAAC"}
|
|
@@ -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;
|
|
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"}
|