bootifyjs 0.0.2 → 0.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.
- package/LICENSE +21 -0
- package/README.md +116 -510
- package/dist/api.d.ts +32 -0
- package/dist/api.js +149 -0
- package/dist/api.js.map +1 -0
- package/dist/config/app.config.d.ts +29 -0
- package/dist/config/app.config.js +55 -0
- package/dist/config/app.config.js.map +1 -0
- package/dist/controllers/config.controller.d.ts +16 -0
- package/dist/controllers/config.controller.js +66 -0
- package/dist/controllers/config.controller.js.map +1 -0
- package/dist/controllers/events.controller.d.ts +66 -0
- package/dist/controllers/events.controller.js +145 -0
- package/dist/controllers/events.controller.js.map +1 -0
- package/dist/controllers/health.controller.d.ts +20 -0
- package/dist/controllers/health.controller.js +92 -0
- package/dist/controllers/health.controller.js.map +1 -0
- package/dist/controllers/user.controller.d.ts +13 -0
- package/dist/controllers/user.controller.js +209 -0
- package/dist/controllers/user.controller.js.map +1 -0
- package/dist/core/application.d.ts +21 -0
- package/dist/core/application.js +90 -0
- package/dist/core/application.js.map +1 -0
- package/dist/core/config.d.ts +3 -0
- package/dist/core/config.js +78 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/container.d.ts +17 -0
- package/dist/core/container.js +92 -0
- package/dist/core/container.js.map +1 -0
- package/dist/core/decorators.d.ts +28 -0
- package/dist/core/decorators.js +204 -0
- package/dist/core/decorators.js.map +1 -0
- package/dist/core/errors.d.ts +18 -0
- package/dist/core/errors.js +74 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/middleware.d.ts +8 -0
- package/dist/core/middleware.js +23 -0
- package/dist/core/middleware.js.map +1 -0
- package/dist/core/openapi.d.ts +80 -0
- package/dist/core/openapi.js +189 -0
- package/dist/core/openapi.js.map +1 -0
- package/dist/core/router.d.ts +32 -0
- package/dist/core/router.js +266 -0
- package/dist/core/router.js.map +1 -0
- package/dist/core/utils.d.ts +7 -0
- package/dist/core/utils.js +75 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/core/validation.d.ts +15 -0
- package/dist/core/validation.js +161 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/events/core/event-bus.d.ts +26 -0
- package/dist/events/core/event-bus.js +253 -0
- package/dist/events/core/event-bus.js.map +1 -0
- package/dist/events/core/event-registry.d.ts +31 -0
- package/dist/events/core/event-registry.js +170 -0
- package/dist/events/core/event-registry.js.map +1 -0
- package/dist/events/decorators/event.decorators.d.ts +11 -0
- package/dist/events/decorators/event.decorators.js +123 -0
- package/dist/events/decorators/event.decorators.js.map +1 -0
- package/dist/events/examples/system.events.d.ts +15 -0
- package/dist/events/examples/system.events.js +28 -0
- package/dist/events/examples/system.events.js.map +1 -0
- package/dist/events/examples/user.events.d.ts +68 -0
- package/dist/events/examples/user.events.js +73 -0
- package/dist/events/examples/user.events.js.map +1 -0
- package/dist/events/examples/user.handlers.d.ts +20 -0
- package/dist/events/examples/user.handlers.js +157 -0
- package/dist/events/examples/user.handlers.js.map +1 -0
- package/dist/events/index.d.ts +13 -0
- package/dist/events/index.js +71 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/middleware/logging.middleware.d.ts +7 -0
- package/dist/events/middleware/logging.middleware.js +44 -0
- package/dist/events/middleware/logging.middleware.js.map +1 -0
- package/dist/events/middleware/metrics.middleware.d.ts +11 -0
- package/dist/events/middleware/metrics.middleware.js +87 -0
- package/dist/events/middleware/metrics.middleware.js.map +1 -0
- package/dist/events/middleware/validation.middleware.d.ts +8 -0
- package/dist/events/middleware/validation.middleware.js +63 -0
- package/dist/events/middleware/validation.middleware.js.map +1 -0
- package/dist/events/store/memory-event-store.d.ts +21 -0
- package/dist/events/store/memory-event-store.js +81 -0
- package/dist/events/store/memory-event-store.js.map +1 -0
- package/dist/events/types/event.types.d.ts +57 -0
- package/dist/{decorators/cache/ICacheClient.js → events/types/event.types.js} +1 -1
- package/dist/events/types/event.types.js.map +1 -0
- package/dist/examples/basic-api.d.ts +1 -0
- package/dist/examples/basic-api.js +120 -0
- package/dist/examples/basic-api.js.map +1 -0
- package/dist/index.d.ts +17 -11
- package/dist/index.js +95 -31
- package/dist/index.js.map +1 -1
- package/dist/logging/config/logging.config.d.ts +5 -0
- package/dist/logging/config/logging.config.js +101 -0
- package/dist/logging/config/logging.config.js.map +1 -0
- package/dist/logging/core/log-context.service.d.ts +11 -0
- package/dist/logging/core/log-context.service.js +40 -0
- package/dist/logging/core/log-context.service.js.map +1 -0
- package/dist/logging/core/logger.service.d.ts +29 -0
- package/dist/logging/core/logger.service.js +178 -0
- package/dist/logging/core/logger.service.js.map +1 -0
- package/dist/logging/core/startup-logger.service.d.ts +17 -0
- package/dist/logging/core/startup-logger.service.js +156 -0
- package/dist/logging/core/startup-logger.service.js.map +1 -0
- package/dist/logging/decorators/log.decorator.d.ts +11 -0
- package/dist/logging/decorators/log.decorator.js +80 -0
- package/dist/logging/decorators/log.decorator.js.map +1 -0
- package/dist/logging/index.d.ts +15 -0
- package/dist/logging/index.js +46 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/middleware/context.middleware.d.ts +2 -0
- package/dist/logging/middleware/context.middleware.js +29 -0
- package/dist/logging/middleware/context.middleware.js.map +1 -0
- package/dist/logging/middleware/request-logging.middleware.d.ts +3 -0
- package/dist/logging/middleware/request-logging.middleware.js +78 -0
- package/dist/logging/middleware/request-logging.middleware.js.map +1 -0
- package/dist/logging/types/logging.types.d.ts +79 -0
- package/dist/{decorators/transaction/IDatabaseClient.js → logging/types/logging.types.js} +1 -1
- package/dist/logging/types/logging.types.js.map +1 -0
- package/dist/middlewares/auth.middleware.d.ts +2 -0
- package/dist/middlewares/auth.middleware.js +20 -0
- package/dist/middlewares/auth.middleware.js.map +1 -0
- package/dist/middlewares/cors.middleware.d.ts +2 -0
- package/dist/middlewares/cors.middleware.js +16 -0
- package/dist/middlewares/cors.middleware.js.map +1 -0
- package/dist/middlewares/swagger.middleware.d.ts +6 -0
- package/dist/middlewares/swagger.middleware.js +84 -0
- package/dist/middlewares/swagger.middleware.js.map +1 -0
- package/dist/repositories/user.repository.d.ts +16 -0
- package/dist/repositories/user.repository.js +110 -0
- package/dist/repositories/user.repository.js.map +1 -0
- package/dist/schemas/user.schemas.d.ts +214 -0
- package/dist/schemas/user.schemas.js +71 -0
- package/dist/schemas/user.schemas.js.map +1 -0
- package/dist/services/config-demo.service.d.ts +10 -0
- package/dist/services/config-demo.service.js +88 -0
- package/dist/services/config-demo.service.js.map +1 -0
- package/dist/services/user.service.d.ts +21 -0
- package/dist/services/user.service.js +201 -0
- package/dist/services/user.service.js.map +1 -0
- package/package.json +49 -14
- package/dist/application/Application.d.ts +0 -43
- package/dist/application/Application.d.ts.map +0 -1
- package/dist/application/Application.js +0 -283
- package/dist/application/Application.js.map +0 -1
- package/dist/container/container.d.ts +0 -9
- package/dist/container/container.d.ts.map +0 -1
- package/dist/container/container.js +0 -23
- package/dist/container/container.js.map +0 -1
- package/dist/decorators/cache/ICacheClient.d.ts +0 -6
- package/dist/decorators/cache/ICacheClient.d.ts.map +0 -1
- package/dist/decorators/cache/ICacheClient.js.map +0 -1
- package/dist/decorators/cache/cache.decorator.d.ts +0 -2
- package/dist/decorators/cache/cache.decorator.d.ts.map +0 -1
- package/dist/decorators/cache/cache.decorator.js +0 -38
- package/dist/decorators/cache/cache.decorator.js.map +0 -1
- package/dist/decorators/controller.decorator.d.ts +0 -9
- package/dist/decorators/controller.decorator.d.ts.map +0 -1
- package/dist/decorators/controller.decorator.js +0 -99
- package/dist/decorators/controller.decorator.js.map +0 -1
- package/dist/decorators/http.decorator.d.ts +0 -7
- package/dist/decorators/http.decorator.d.ts.map +0 -1
- package/dist/decorators/http.decorator.js +0 -26
- package/dist/decorators/http.decorator.js.map +0 -1
- package/dist/decorators/timing.decorator.d.ts +0 -2
- package/dist/decorators/timing.decorator.d.ts.map +0 -1
- package/dist/decorators/timing.decorator.js +0 -26
- package/dist/decorators/timing.decorator.js.map +0 -1
- package/dist/decorators/transaction/IDatabaseClient.d.ts +0 -9
- package/dist/decorators/transaction/IDatabaseClient.d.ts.map +0 -1
- package/dist/decorators/transaction/IDatabaseClient.js.map +0 -1
- package/dist/decorators/transaction/transactional.decorator.d.ts +0 -2
- package/dist/decorators/transaction/transactional.decorator.d.ts.map +0 -1
- package/dist/decorators/transaction/transactional.decorator.js +0 -27
- package/dist/decorators/transaction/transactional.decorator.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/logger/Logger.d.ts +0 -37
- package/dist/logger/Logger.d.ts.map +0 -1
- package/dist/logger/Logger.js +0 -142
- package/dist/logger/Logger.js.map +0 -1
- package/dist/middleware/http.d.ts +0 -2
- package/dist/middleware/http.d.ts.map +0 -1
- package/dist/middleware/http.js +0 -80
- package/dist/middleware/http.js.map +0 -1
- package/dist/middleware/requestcontext.d.ts +0 -12
- package/dist/middleware/requestcontext.d.ts.map +0 -1
- package/dist/middleware/requestcontext.js +0 -6
- package/dist/middleware/requestcontext.js.map +0 -1
- package/src/application/Application.ts +0 -355
- package/src/container/container.ts +0 -28
- package/src/decorators/cache/ICacheClient.ts +0 -5
- package/src/decorators/cache/cache.decorator.ts +0 -36
- package/src/decorators/controller.decorator.ts +0 -119
- package/src/decorators/http.decorator.ts +0 -25
- package/src/decorators/timing.decorator.ts +0 -23
- package/src/decorators/transaction/IDatabaseClient.ts +0 -9
- package/src/decorators/transaction/transactional.decorator.ts +0 -24
- package/src/index.ts +0 -10
- package/src/logger/Logger.ts +0 -179
- package/src/middleware/http.ts +0 -81
- package/src/middleware/requestcontext.ts +0 -12
package/dist/api.d.ts
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
import { Application } from './core/application';
|
2
|
+
import { AppConfig } from './config/app.config';
|
3
|
+
/**
|
4
|
+
* Creates and configures a BootifyJS application
|
5
|
+
* @param options Configuration options for the application
|
6
|
+
* @returns The configured application instance
|
7
|
+
*/
|
8
|
+
export declare function createBootifyApp(options: {
|
9
|
+
port?: number;
|
10
|
+
hostname?: string;
|
11
|
+
controllers?: any[];
|
12
|
+
enableSwagger?: boolean;
|
13
|
+
swaggerOptions?: {
|
14
|
+
path?: string;
|
15
|
+
title?: string;
|
16
|
+
};
|
17
|
+
enableCors?: boolean;
|
18
|
+
enableRequestLogging?: boolean;
|
19
|
+
requestLoggingOptions?: {
|
20
|
+
logHeaders?: boolean;
|
21
|
+
slowThreshold?: number;
|
22
|
+
skipPaths?: string[];
|
23
|
+
};
|
24
|
+
}): Promise<{
|
25
|
+
app: Application;
|
26
|
+
config: AppConfig;
|
27
|
+
logger: import("./logging").LoggerService;
|
28
|
+
eventBus: import("./events").EventBus;
|
29
|
+
openApiSpec: import("./core/openapi").OpenAPISpec | undefined;
|
30
|
+
start: () => Promise<void>;
|
31
|
+
stop: () => Promise<void>;
|
32
|
+
}>;
|
package/dist/api.js
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createBootifyApp = createBootifyApp;
|
4
|
+
const application_1 = require("./core/application");
|
5
|
+
const user_controller_1 = require("./controllers/user.controller");
|
6
|
+
const health_controller_1 = require("./controllers/health.controller");
|
7
|
+
const config_controller_1 = require("./controllers/config.controller");
|
8
|
+
const events_controller_1 = require("./controllers/events.controller");
|
9
|
+
const app_config_1 = require("./config/app.config");
|
10
|
+
const cors_middleware_1 = require("./middlewares/cors.middleware");
|
11
|
+
const swagger_middleware_1 = require("./middlewares/swagger.middleware");
|
12
|
+
const openapi_1 = require("./core/openapi");
|
13
|
+
const logging_1 = require("./logging");
|
14
|
+
const config_1 = require("./core/config");
|
15
|
+
const events_1 = require("./events");
|
16
|
+
/**
|
17
|
+
* Creates and configures a BootifyJS application
|
18
|
+
* @param options Configuration options for the application
|
19
|
+
* @returns The configured application instance
|
20
|
+
*/
|
21
|
+
async function createBootifyApp(options) {
|
22
|
+
// Initialize configuration
|
23
|
+
const appConfig = (0, config_1.getConfigInstance)(app_config_1.AppConfig);
|
24
|
+
// Override config with options
|
25
|
+
if (options.port) {
|
26
|
+
appConfig.server.port = options.port;
|
27
|
+
}
|
28
|
+
if (options.hostname) {
|
29
|
+
appConfig.server.host = options.hostname;
|
30
|
+
}
|
31
|
+
// Initialize logging
|
32
|
+
const { logger, startupLogger } = (0, logging_1.configureLogging)();
|
33
|
+
// Log startup banner
|
34
|
+
startupLogger.logStartupBanner();
|
35
|
+
// Log environment information
|
36
|
+
logger.startup('Bootstrap process started', {
|
37
|
+
nodeVersion: process.version,
|
38
|
+
environment: process.env.NODE_ENV || 'development',
|
39
|
+
serviceName: appConfig.SERVICE_NAME,
|
40
|
+
serverPort: appConfig.server.port,
|
41
|
+
serverHost: appConfig.server.host,
|
42
|
+
platform: process.platform,
|
43
|
+
arch: process.arch
|
44
|
+
});
|
45
|
+
// Initialize event system
|
46
|
+
startupLogger.logComponentStart('Event System');
|
47
|
+
const eventBus = (0, events_1.configureEventSystem)();
|
48
|
+
startupLogger.logComponentComplete('Event System', {
|
49
|
+
metrics: eventBus.getMetrics(),
|
50
|
+
registryStats: eventBus.getRegistry().getStatistics()
|
51
|
+
});
|
52
|
+
// Use provided controllers or default ones
|
53
|
+
const controllers = options.controllers || [
|
54
|
+
user_controller_1.UserController,
|
55
|
+
health_controller_1.HealthController,
|
56
|
+
config_controller_1.ConfigController,
|
57
|
+
events_controller_1.EventsController
|
58
|
+
];
|
59
|
+
// Setup middlewares
|
60
|
+
const middlewares = [];
|
61
|
+
// Always add context middleware first
|
62
|
+
middlewares.push(logging_1.contextMiddleware);
|
63
|
+
// Add CORS middleware if enabled
|
64
|
+
if (options.enableCors !== false) {
|
65
|
+
middlewares.push(cors_middleware_1.corsMiddleware);
|
66
|
+
}
|
67
|
+
// Add request logging middleware if enabled
|
68
|
+
if (options.enableRequestLogging !== false) {
|
69
|
+
middlewares.push((0, logging_1.createRequestLoggingMiddleware)({
|
70
|
+
logHeaders: process.env.NODE_ENV === 'development',
|
71
|
+
slowThreshold: 1000,
|
72
|
+
skipPaths: ['/health/ping', '/favicon.ico'],
|
73
|
+
...options.requestLoggingOptions
|
74
|
+
}));
|
75
|
+
}
|
76
|
+
// Generate OpenAPI documentation if enabled
|
77
|
+
let openApiSpec;
|
78
|
+
if (options.enableSwagger !== false) {
|
79
|
+
startupLogger.logComponentStart('OpenAPI Generator');
|
80
|
+
const openApiGenerator = new openapi_1.OpenAPIGenerator({
|
81
|
+
title: 'BootifyJS API',
|
82
|
+
version: '1.0.0',
|
83
|
+
description: 'Spring Boot inspired Node.js framework with TypeScript, Dependency Injection, and Validation',
|
84
|
+
contact: {
|
85
|
+
name: 'BootifyJS Team',
|
86
|
+
email: 'support@bootifyjs.com'
|
87
|
+
},
|
88
|
+
license: {
|
89
|
+
name: 'MIT',
|
90
|
+
url: 'https://opensource.org/licenses/MIT'
|
91
|
+
}
|
92
|
+
}, [
|
93
|
+
{ url: `http://${appConfig.server.host}:${appConfig.server.port}`, description: 'Development server' }
|
94
|
+
]);
|
95
|
+
openApiGenerator.addControllers(controllers);
|
96
|
+
openApiSpec = openApiGenerator.getSpec();
|
97
|
+
startupLogger.logComponentComplete('OpenAPI Generator', {
|
98
|
+
paths: Object.keys(openApiSpec.paths).length,
|
99
|
+
schemas: Object.keys(openApiSpec.components.schemas).length
|
100
|
+
});
|
101
|
+
// Add Swagger middleware
|
102
|
+
middlewares.push((0, swagger_middleware_1.swaggerMiddleware)(openApiSpec, {
|
103
|
+
path: options.swaggerOptions?.path || '/api-docs',
|
104
|
+
title: options.swaggerOptions?.title || 'BootifyJS API Documentation'
|
105
|
+
}));
|
106
|
+
}
|
107
|
+
startupLogger.logComponentStart('Application');
|
108
|
+
// Create and configure the application
|
109
|
+
const app = new application_1.Application({
|
110
|
+
controllers,
|
111
|
+
middlewares,
|
112
|
+
port: appConfig.server.port,
|
113
|
+
hostname: appConfig.server.host
|
114
|
+
});
|
115
|
+
// Return the configured application
|
116
|
+
return {
|
117
|
+
app,
|
118
|
+
config: appConfig,
|
119
|
+
logger,
|
120
|
+
eventBus,
|
121
|
+
openApiSpec,
|
122
|
+
start: async () => {
|
123
|
+
await app.start();
|
124
|
+
logger.info('API Documentation endpoints configured', {
|
125
|
+
docs: `http://${appConfig.server.host}:${appConfig.server.port}/api-docs`,
|
126
|
+
spec: `http://${appConfig.server.host}:${appConfig.server.port}/api-docs/swagger.json`
|
127
|
+
});
|
128
|
+
},
|
129
|
+
stop: async () => {
|
130
|
+
await app.stop();
|
131
|
+
}
|
132
|
+
};
|
133
|
+
}
|
134
|
+
// Example usage
|
135
|
+
if (require.main === module) {
|
136
|
+
createBootifyApp({
|
137
|
+
port: 3000,
|
138
|
+
hostname: 'localhost',
|
139
|
+
enableSwagger: true,
|
140
|
+
enableCors: true,
|
141
|
+
enableRequestLogging: true
|
142
|
+
}).then(({ start }) => {
|
143
|
+
start();
|
144
|
+
}).catch(error => {
|
145
|
+
console.error('Failed to start application:', error);
|
146
|
+
process.exit(1);
|
147
|
+
});
|
148
|
+
}
|
149
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
export declare class AppConfig {
|
2
|
+
SERVICE_NAME: string;
|
3
|
+
server: {
|
4
|
+
port: number;
|
5
|
+
host: string;
|
6
|
+
name?: string;
|
7
|
+
};
|
8
|
+
database: {
|
9
|
+
host: string;
|
10
|
+
port: number;
|
11
|
+
name: string;
|
12
|
+
username: string;
|
13
|
+
password: string;
|
14
|
+
};
|
15
|
+
logging: {
|
16
|
+
level: string;
|
17
|
+
enabled: boolean;
|
18
|
+
};
|
19
|
+
api: {
|
20
|
+
version: string;
|
21
|
+
};
|
22
|
+
cors: {
|
23
|
+
enabled: boolean;
|
24
|
+
};
|
25
|
+
jwt: {
|
26
|
+
secret: string;
|
27
|
+
expiresIn: number;
|
28
|
+
};
|
29
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.AppConfig = void 0;
|
10
|
+
const config_1 = require("../core/config");
|
11
|
+
let AppConfig = class AppConfig {
|
12
|
+
constructor() {
|
13
|
+
// Service configuration
|
14
|
+
this.SERVICE_NAME = 'bootifyjs-app';
|
15
|
+
// Server configuration - will be populated from BOOTIFY_SERVER_* env vars
|
16
|
+
this.server = {
|
17
|
+
port: 3000,
|
18
|
+
host: 'localhost'
|
19
|
+
};
|
20
|
+
// Database configuration - will be populated from BOOTIFY_DATABASE_* env vars
|
21
|
+
this.database = {
|
22
|
+
host: 'localhost',
|
23
|
+
port: 5432,
|
24
|
+
name: 'bootifyjs',
|
25
|
+
username: 'admin',
|
26
|
+
password: 'password'
|
27
|
+
};
|
28
|
+
// Logging configuration - will be populated from BOOTIFY_LOGGING_* env vars
|
29
|
+
this.logging = {
|
30
|
+
level: 'info',
|
31
|
+
enabled: true
|
32
|
+
};
|
33
|
+
// Any other configuration can be added here
|
34
|
+
// The @Config decorator will automatically map environment variables
|
35
|
+
// based on the property structure
|
36
|
+
// API Configuration - will be populated from BOOTIFY_API_* env vars
|
37
|
+
this.api = {
|
38
|
+
version: 'v1'
|
39
|
+
};
|
40
|
+
// CORS Configuration - will be populated from BOOTIFY_CORS_* env vars
|
41
|
+
this.cors = {
|
42
|
+
enabled: true
|
43
|
+
};
|
44
|
+
// JWT Configuration - will be populated from BOOTIFY_JWT_* env vars
|
45
|
+
this.jwt = {
|
46
|
+
secret: 'default-secret',
|
47
|
+
expiresIn: 3600
|
48
|
+
};
|
49
|
+
}
|
50
|
+
};
|
51
|
+
exports.AppConfig = AppConfig;
|
52
|
+
exports.AppConfig = AppConfig = __decorate([
|
53
|
+
(0, config_1.Config)('BOOTIFY')
|
54
|
+
], AppConfig);
|
55
|
+
//# sourceMappingURL=app.config.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"app.config.js","sourceRoot":"","sources":["../../src/config/app.config.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AAGjC,IAAM,SAAS,GAAf,MAAM,SAAS;IAAf;QACL,wBAAwB;QACxB,iBAAY,GAAW,eAAe,CAAC;QAEvC,0EAA0E;QAC1E,WAAM,GAIF;YACF,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,WAAW;SAClB,CAAC;QAEF,8EAA8E;QAC9E,aAAQ,GAMJ;YACF,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,UAAU;SACrB,CAAC;QAEF,4EAA4E;QAC5E,YAAO,GAGH;YACF,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,4CAA4C;QAC5C,qEAAqE;QACrE,kCAAkC;QAElC,oEAAoE;QACpE,QAAG,GAEC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,sEAAsE;QACtE,SAAI,GAEA;YACF,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,oEAAoE;QACpE,QAAG,GAGC;YACF,MAAM,EAAE,gBAAgB;YACxB,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;CAAA,CAAA;AAhEY,8BAAS;oBAAT,SAAS;IADrB,IAAA,eAAM,EAAC,SAAS,CAAC;GACL,SAAS,CAgErB"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { AppConfig } from '../config/app.config';
|
2
|
+
import { ConfigDemoService } from '../services/config-demo.service';
|
3
|
+
export declare class ConfigController {
|
4
|
+
private config;
|
5
|
+
private configDemoService;
|
6
|
+
constructor(config: AppConfig, configDemoService: ConfigDemoService);
|
7
|
+
getConfigInfo(): AppConfig;
|
8
|
+
getServerUrl(): {
|
9
|
+
url: string;
|
10
|
+
message: string;
|
11
|
+
};
|
12
|
+
runConfigDemo(): {
|
13
|
+
message: string;
|
14
|
+
timestamp: string;
|
15
|
+
};
|
16
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
+
};
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
exports.ConfigController = void 0;
|
16
|
+
const decorators_1 = require("../core/decorators");
|
17
|
+
const app_config_1 = require("../config/app.config");
|
18
|
+
const config_demo_service_1 = require("../services/config-demo.service");
|
19
|
+
let ConfigController = class ConfigController {
|
20
|
+
constructor(config, configDemoService) {
|
21
|
+
this.config = config;
|
22
|
+
this.configDemoService = configDemoService;
|
23
|
+
}
|
24
|
+
getConfigInfo() {
|
25
|
+
return this.config;
|
26
|
+
}
|
27
|
+
getServerUrl() {
|
28
|
+
return {
|
29
|
+
url: this.configDemoService.getServerUrl(),
|
30
|
+
message: 'Current server URL based on configuration'
|
31
|
+
};
|
32
|
+
}
|
33
|
+
runConfigDemo() {
|
34
|
+
this.configDemoService.demonstrateConfig();
|
35
|
+
return {
|
36
|
+
message: 'Configuration demo completed. Check the logs for details.',
|
37
|
+
timestamp: new Date().toISOString()
|
38
|
+
};
|
39
|
+
}
|
40
|
+
};
|
41
|
+
exports.ConfigController = ConfigController;
|
42
|
+
__decorate([
|
43
|
+
(0, decorators_1.Get)('/info'),
|
44
|
+
__metadata("design:type", Function),
|
45
|
+
__metadata("design:paramtypes", []),
|
46
|
+
__metadata("design:returntype", void 0)
|
47
|
+
], ConfigController.prototype, "getConfigInfo", null);
|
48
|
+
__decorate([
|
49
|
+
(0, decorators_1.Get)('/server-url'),
|
50
|
+
__metadata("design:type", Function),
|
51
|
+
__metadata("design:paramtypes", []),
|
52
|
+
__metadata("design:returntype", void 0)
|
53
|
+
], ConfigController.prototype, "getServerUrl", null);
|
54
|
+
__decorate([
|
55
|
+
(0, decorators_1.Get)('/demo'),
|
56
|
+
__metadata("design:type", Function),
|
57
|
+
__metadata("design:paramtypes", []),
|
58
|
+
__metadata("design:returntype", void 0)
|
59
|
+
], ConfigController.prototype, "runConfigDemo", null);
|
60
|
+
exports.ConfigController = ConfigController = __decorate([
|
61
|
+
(0, decorators_1.Controller)('/config'),
|
62
|
+
__param(0, (0, decorators_1.InjectConfig)(app_config_1.AppConfig)),
|
63
|
+
__metadata("design:paramtypes", [app_config_1.AppConfig,
|
64
|
+
config_demo_service_1.ConfigDemoService])
|
65
|
+
], ConfigController);
|
66
|
+
//# sourceMappingURL=config.controller.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"config.controller.js","sourceRoot":"","sources":["../../src/controllers/config.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAmE;AACnE,qDAAiD;AACjD,yEAAoE;AAG7D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YACmC,MAAiB,EAC1C,iBAAoC;QADX,WAAM,GAAN,MAAM,CAAW;QAC1C,sBAAiB,GAAjB,iBAAiB,CAAmB;IAC3C,CAAC;IAGJ,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAGD,YAAY;QACV,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;YAC1C,OAAO,EAAE,2CAA2C;SACrD,CAAC;IACJ,CAAC;IAGD,aAAa;QACX,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;QAC3C,OAAO;YACL,OAAO,EAAE,2DAA2D;YACpE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;CACF,CAAA;AA3BY,4CAAgB;AAO3B;IADC,IAAA,gBAAG,EAAC,OAAO,CAAC;;;;qDAGZ;AAGD;IADC,IAAA,gBAAG,EAAC,aAAa,CAAC;;;;oDAMlB;AAGD;IADC,IAAA,gBAAG,EAAC,OAAO,CAAC;;;;qDAOZ;2BA1BU,gBAAgB;IAD5B,IAAA,uBAAU,EAAC,SAAS,CAAC;IAGjB,WAAA,IAAA,yBAAY,EAAC,sBAAS,CAAC,CAAA;qCAAiB,sBAAS;QACvB,uCAAiB;GAHnC,gBAAgB,CA2B5B"}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import { BaseEvent } from '../events/types/event.types';
|
2
|
+
export declare class EventsController {
|
3
|
+
private eventBus;
|
4
|
+
private registry;
|
5
|
+
private eventStore;
|
6
|
+
constructor();
|
7
|
+
getEventMetrics(): {
|
8
|
+
busMetrics: import("../events").EventMetrics;
|
9
|
+
registryStats: {
|
10
|
+
totalEventTypes: number;
|
11
|
+
totalSubscriptions: number;
|
12
|
+
subscriptionsByType: Record<string, number>;
|
13
|
+
activeSubscriptions: number;
|
14
|
+
};
|
15
|
+
storeStats: {
|
16
|
+
totalEvents: number;
|
17
|
+
eventsByType: Record<string, number>;
|
18
|
+
aggregateCount: number;
|
19
|
+
oldestEvent?: Date;
|
20
|
+
newestEvent?: Date;
|
21
|
+
};
|
22
|
+
};
|
23
|
+
getEventTypes(): {
|
24
|
+
registeredTypes: string[];
|
25
|
+
totalTypes: number;
|
26
|
+
};
|
27
|
+
getSubscriptions(): Record<string, any[]>;
|
28
|
+
getEventSystemHealth(): {
|
29
|
+
healthy: boolean;
|
30
|
+
metrics: import("../events").EventMetrics;
|
31
|
+
timestamp: string;
|
32
|
+
};
|
33
|
+
emitEvent(eventData: {
|
34
|
+
type: string;
|
35
|
+
data: any;
|
36
|
+
}): Promise<{
|
37
|
+
success: boolean;
|
38
|
+
message: string;
|
39
|
+
timestamp: string;
|
40
|
+
}>;
|
41
|
+
getEventHistory(eventType?: string, limit?: string): Promise<{
|
42
|
+
events: BaseEvent[];
|
43
|
+
total: number;
|
44
|
+
filtered: boolean;
|
45
|
+
}>;
|
46
|
+
getEventStats(): {
|
47
|
+
system: {
|
48
|
+
healthy: boolean;
|
49
|
+
uptime: number;
|
50
|
+
};
|
51
|
+
registry: {
|
52
|
+
totalEventTypes: number;
|
53
|
+
totalSubscriptions: number;
|
54
|
+
subscriptionsByType: Record<string, number>;
|
55
|
+
activeSubscriptions: number;
|
56
|
+
};
|
57
|
+
bus: import("../events").EventMetrics;
|
58
|
+
store: {
|
59
|
+
totalEvents: number;
|
60
|
+
eventsByType: Record<string, number>;
|
61
|
+
aggregateCount: number;
|
62
|
+
oldestEvent?: Date;
|
63
|
+
newestEvent?: Date;
|
64
|
+
};
|
65
|
+
};
|
66
|
+
}
|
@@ -0,0 +1,145 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
+
};
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
exports.EventsController = void 0;
|
16
|
+
const decorators_1 = require("../core/decorators");
|
17
|
+
const events_1 = require("../events");
|
18
|
+
let EventsController = class EventsController {
|
19
|
+
constructor() {
|
20
|
+
this.eventBus = events_1.EventBus.getInstance();
|
21
|
+
this.registry = events_1.EventRegistry.getInstance();
|
22
|
+
this.eventStore = new events_1.MemoryEventStore();
|
23
|
+
}
|
24
|
+
getEventMetrics() {
|
25
|
+
return {
|
26
|
+
busMetrics: this.eventBus.getMetrics(),
|
27
|
+
registryStats: this.registry.getStatistics(),
|
28
|
+
storeStats: this.eventStore.getStatistics()
|
29
|
+
};
|
30
|
+
}
|
31
|
+
getEventTypes() {
|
32
|
+
return {
|
33
|
+
registeredTypes: this.registry.getRegisteredEventTypes(),
|
34
|
+
totalTypes: this.registry.getRegisteredEventTypes().length
|
35
|
+
};
|
36
|
+
}
|
37
|
+
getSubscriptions() {
|
38
|
+
const subscriptions = this.registry.getAllSubscriptions();
|
39
|
+
const result = {};
|
40
|
+
for (const [eventType, subs] of subscriptions.entries()) {
|
41
|
+
result[eventType] = subs.map(sub => ({
|
42
|
+
id: sub.id,
|
43
|
+
priority: sub.priority,
|
44
|
+
active: sub.active,
|
45
|
+
metadata: sub.metadata
|
46
|
+
}));
|
47
|
+
}
|
48
|
+
return result;
|
49
|
+
}
|
50
|
+
getEventSystemHealth() {
|
51
|
+
return {
|
52
|
+
healthy: this.eventBus.isHealthy(),
|
53
|
+
metrics: this.eventBus.getMetrics(),
|
54
|
+
timestamp: new Date().toISOString()
|
55
|
+
};
|
56
|
+
}
|
57
|
+
async emitEvent(eventData) {
|
58
|
+
try {
|
59
|
+
await this.eventBus.emit(eventData.type, eventData.data);
|
60
|
+
return {
|
61
|
+
success: true,
|
62
|
+
message: `Event ${eventData.type} emitted successfully`,
|
63
|
+
timestamp: new Date().toISOString()
|
64
|
+
};
|
65
|
+
}
|
66
|
+
catch (error) {
|
67
|
+
return {
|
68
|
+
success: false,
|
69
|
+
message: `Failed to emit event: ${error.message}`,
|
70
|
+
timestamp: new Date().toISOString()
|
71
|
+
};
|
72
|
+
}
|
73
|
+
}
|
74
|
+
async getEventHistory(eventType, limit) {
|
75
|
+
const events = await this.eventStore.getAllEvents(eventType);
|
76
|
+
const limitNum = limit ? parseInt(limit, 10) : 50;
|
77
|
+
return {
|
78
|
+
events: events.slice(-limitNum).reverse(), // Most recent first
|
79
|
+
total: events.length,
|
80
|
+
filtered: !!eventType
|
81
|
+
};
|
82
|
+
}
|
83
|
+
getEventStats() {
|
84
|
+
return {
|
85
|
+
system: {
|
86
|
+
healthy: this.eventBus.isHealthy(),
|
87
|
+
uptime: process.uptime()
|
88
|
+
},
|
89
|
+
registry: this.registry.getStatistics(),
|
90
|
+
bus: this.eventBus.getMetrics(),
|
91
|
+
store: this.eventStore.getStatistics()
|
92
|
+
};
|
93
|
+
}
|
94
|
+
};
|
95
|
+
exports.EventsController = EventsController;
|
96
|
+
__decorate([
|
97
|
+
(0, decorators_1.Get)('/metrics'),
|
98
|
+
__metadata("design:type", Function),
|
99
|
+
__metadata("design:paramtypes", []),
|
100
|
+
__metadata("design:returntype", void 0)
|
101
|
+
], EventsController.prototype, "getEventMetrics", null);
|
102
|
+
__decorate([
|
103
|
+
(0, decorators_1.Get)('/types'),
|
104
|
+
__metadata("design:type", Function),
|
105
|
+
__metadata("design:paramtypes", []),
|
106
|
+
__metadata("design:returntype", void 0)
|
107
|
+
], EventsController.prototype, "getEventTypes", null);
|
108
|
+
__decorate([
|
109
|
+
(0, decorators_1.Get)('/subscriptions'),
|
110
|
+
__metadata("design:type", Function),
|
111
|
+
__metadata("design:paramtypes", []),
|
112
|
+
__metadata("design:returntype", void 0)
|
113
|
+
], EventsController.prototype, "getSubscriptions", null);
|
114
|
+
__decorate([
|
115
|
+
(0, decorators_1.Get)('/health'),
|
116
|
+
__metadata("design:type", Function),
|
117
|
+
__metadata("design:paramtypes", []),
|
118
|
+
__metadata("design:returntype", void 0)
|
119
|
+
], EventsController.prototype, "getEventSystemHealth", null);
|
120
|
+
__decorate([
|
121
|
+
(0, decorators_1.Post)('/emit'),
|
122
|
+
__param(0, (0, decorators_1.Body)()),
|
123
|
+
__metadata("design:type", Function),
|
124
|
+
__metadata("design:paramtypes", [Object]),
|
125
|
+
__metadata("design:returntype", Promise)
|
126
|
+
], EventsController.prototype, "emitEvent", null);
|
127
|
+
__decorate([
|
128
|
+
(0, decorators_1.Get)('/history'),
|
129
|
+
__param(0, (0, decorators_1.Query)('type')),
|
130
|
+
__param(1, (0, decorators_1.Query)('limit')),
|
131
|
+
__metadata("design:type", Function),
|
132
|
+
__metadata("design:paramtypes", [String, String]),
|
133
|
+
__metadata("design:returntype", Promise)
|
134
|
+
], EventsController.prototype, "getEventHistory", null);
|
135
|
+
__decorate([
|
136
|
+
(0, decorators_1.Get)('/stats'),
|
137
|
+
__metadata("design:type", Function),
|
138
|
+
__metadata("design:paramtypes", []),
|
139
|
+
__metadata("design:returntype", void 0)
|
140
|
+
], EventsController.prototype, "getEventStats", null);
|
141
|
+
exports.EventsController = EventsController = __decorate([
|
142
|
+
(0, decorators_1.Controller)('/events'),
|
143
|
+
__metadata("design:paramtypes", [])
|
144
|
+
], EventsController);
|
145
|
+
//# sourceMappingURL=events.controller.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"events.controller.js","sourceRoot":"","sources":["../../src/controllers/events.controller.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
export declare class HealthController {
|
2
|
+
getRoutes(): {
|
3
|
+
totalRoutes: number;
|
4
|
+
routesByMethod: Record<string, number>;
|
5
|
+
routesByController: Record<string, number>;
|
6
|
+
} | {
|
7
|
+
message: string;
|
8
|
+
timestamp: string;
|
9
|
+
};
|
10
|
+
health(): {
|
11
|
+
status: string;
|
12
|
+
timestamp: string;
|
13
|
+
uptime: number;
|
14
|
+
memory: NodeJS.MemoryUsage;
|
15
|
+
version: string;
|
16
|
+
};
|
17
|
+
ping(): {
|
18
|
+
message: string;
|
19
|
+
};
|
20
|
+
}
|