bootifyjs 1.1.5 → 1.1.6
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/api.d.ts +2 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +36 -1
- package/dist/api.js.map +1 -1
- package/dist/config/AppConfig.d.ts +61 -0
- package/dist/config/AppConfig.d.ts.map +1 -0
- package/dist/config/AppConfig.js +123 -0
- package/dist/config/AppConfig.js.map +1 -0
- package/dist/examples/controllers/todo.controller.d.ts.map +1 -1
- package/dist/examples/controllers/todo.controller.js +8 -3
- package/dist/examples/controllers/todo.controller.js.map +1 -1
- package/dist/examples/index.js +8 -0
- package/dist/examples/index.js.map +1 -1
- package/dist/logging/core/logger.js +4 -4
- package/dist/logging/core/logger.js.map +1 -1
- package/dist/logging/core/logger.provider.d.ts.map +1 -1
- package/dist/logging/core/logger.provider.js +13 -13
- package/dist/logging/core/logger.provider.js.map +1 -1
- package/dist/logging/index.d.ts +0 -2
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +1 -2
- package/dist/logging/index.js.map +1 -1
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
import { FastifyInstance } from 'fastify';
|
2
|
+
import { ZodObject } from 'zod';
|
2
3
|
import { Constructor } from './core/di-container';
|
3
4
|
export interface BootifyAppOptions {
|
4
5
|
controllers: Constructor[];
|
5
6
|
port?: number;
|
6
7
|
hostname?: string;
|
7
8
|
enableSwagger?: boolean;
|
9
|
+
configSchema?: ZodObject<any>;
|
8
10
|
}
|
9
11
|
export declare function createBootifyApp(options: BootifyAppOptions): Promise<{
|
10
12
|
app: FastifyInstance<import("fastify").RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault>;
|
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,MAAM,SAAS,CAAA;AAClD,OAAU,EAAY,SAAS,EAAa,MAAM,KAAK,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAWjD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,WAAW,EAAE,CAAA;IAC1B,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;CAC9B;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;;;GA4EhE"}
|
package/dist/api.js
CHANGED
@@ -1,18 +1,53 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
19
|
+
var ownKeys = function(o) {
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
21
|
+
var ar = [];
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
23
|
+
return ar;
|
24
|
+
};
|
25
|
+
return ownKeys(o);
|
26
|
+
};
|
27
|
+
return function (mod) {
|
28
|
+
if (mod && mod.__esModule) return mod;
|
29
|
+
var result = {};
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
31
|
+
__setModuleDefault(result, mod);
|
32
|
+
return result;
|
33
|
+
};
|
34
|
+
})();
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
37
|
};
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
39
|
exports.createBootifyApp = createBootifyApp;
|
7
40
|
const fastify_1 = __importDefault(require("fastify"));
|
8
|
-
const zod_1 = require("zod");
|
41
|
+
const zod_1 = __importStar(require("zod"));
|
9
42
|
const router_1 = require("./core/router");
|
10
43
|
const swagger_1 = __importDefault(require("@fastify/swagger"));
|
11
44
|
const swagger_ui_1 = __importDefault(require("@fastify/swagger-ui"));
|
12
45
|
const request_logger_middleware_1 = require("./middleware/request-logger.middleware");
|
13
46
|
const context_middleware_1 = require("./middleware/context.middleware");
|
14
47
|
const logging_1 = require("./logging");
|
48
|
+
const AppConfig_1 = require("./config/AppConfig");
|
15
49
|
async function createBootifyApp(options) {
|
50
|
+
AppConfig_1.AppConfig.initialize(options.configSchema ?? zod_1.default.object({}));
|
16
51
|
const { logger, startupLogger } = await (0, logging_1.intitializeLogging)();
|
17
52
|
startupLogger.logStartupBanner();
|
18
53
|
const app = (0, fastify_1.default)({
|
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":"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"}
|
@@ -0,0 +1,61 @@
|
|
1
|
+
import { z, ZodObject, ZodRawShape, AnyZodObject } from 'zod';
|
2
|
+
declare const FrameworkConfigSchema: z.ZodObject<{
|
3
|
+
NODE_ENV: z.ZodDefault<z.ZodEnum<["development", "production", "test"]>>;
|
4
|
+
SERVER_PORT: z.ZodDefault<z.ZodNumber>;
|
5
|
+
SERVER_HOST: z.ZodDefault<z.ZodString>;
|
6
|
+
LOG_LEVEL: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
7
|
+
CONFIG_DEBUG: z.ZodDefault<z.ZodBoolean>;
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
9
|
+
NODE_ENV: "production" | "development" | "test";
|
10
|
+
LOG_LEVEL: "error" | "warn" | "info" | "debug";
|
11
|
+
SERVER_PORT: number;
|
12
|
+
SERVER_HOST: string;
|
13
|
+
CONFIG_DEBUG: boolean;
|
14
|
+
}, {
|
15
|
+
NODE_ENV?: "production" | "development" | "test" | undefined;
|
16
|
+
LOG_LEVEL?: "error" | "warn" | "info" | "debug" | undefined;
|
17
|
+
SERVER_PORT?: number | undefined;
|
18
|
+
SERVER_HOST?: string | undefined;
|
19
|
+
CONFIG_DEBUG?: boolean | undefined;
|
20
|
+
}>;
|
21
|
+
type FrameworkConfig = z.infer<typeof FrameworkConfigSchema>;
|
22
|
+
export declare class AppConfig<T extends ZodRawShape> {
|
23
|
+
private static instance;
|
24
|
+
private config;
|
25
|
+
private mergedSchema;
|
26
|
+
private constructor();
|
27
|
+
/**
|
28
|
+
* Get the singleton instance of AppConfig
|
29
|
+
* @param userSchema Optional user configuration schema (only used on first instantiation)
|
30
|
+
* @returns The AppConfig instance
|
31
|
+
*/
|
32
|
+
static getInstance<T extends ZodRawShape>(userSchema?: ZodObject<T>): AppConfig<T>;
|
33
|
+
/**
|
34
|
+
* Initialize the singleton instance (must be called once before getInstance)
|
35
|
+
* @param userSchema User configuration schema
|
36
|
+
*/
|
37
|
+
static initialize<T extends ZodRawShape>(userSchema: ZodObject<T>): void;
|
38
|
+
private validateConfig;
|
39
|
+
/**
|
40
|
+
* Get a configuration value by key
|
41
|
+
* @param key The configuration key to retrieve
|
42
|
+
* @returns The configuration value
|
43
|
+
*/
|
44
|
+
get<K extends keyof (FrameworkConfig & z.infer<ZodObject<T>>)>(key: K): (FrameworkConfig & z.infer<ZodObject<T>>)[K];
|
45
|
+
/**
|
46
|
+
* Get the entire configuration object
|
47
|
+
* @returns The complete configuration object
|
48
|
+
*/
|
49
|
+
getAll(): FrameworkConfig & z.infer<ZodObject<T>>;
|
50
|
+
/**
|
51
|
+
* Get the merged schema for introspection
|
52
|
+
* @returns The Zod schema object
|
53
|
+
*/
|
54
|
+
getSchema(): AnyZodObject;
|
55
|
+
/**
|
56
|
+
* Log the current configuration (redacts sensitive fields)
|
57
|
+
*/
|
58
|
+
private logConfig;
|
59
|
+
}
|
60
|
+
export {};
|
61
|
+
//# sourceMappingURL=AppConfig.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AppConfig.d.ts","sourceRoot":"","sources":["../../src/config/AppConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,KAAK,CAAA;AAG7D,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAMzB,CAAA;AAoBF,KAAK,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE5D,qBAAa,SAAS,CAAC,CAAC,SAAS,WAAW;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO;IAaP;;;;OAIG;WACW,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAYzF;;;OAGG;WACW,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAO/E,OAAO,CAAC,cAAc;IAoBtB;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3D,GAAG,EAAE,CAAC,GACL,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAU/C;;;OAGG;IACH,MAAM,IAAI,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAIjD;;;OAGG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,OAAO,CAAC,SAAS;CAalB"}
|
@@ -0,0 +1,123 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.AppConfig = void 0;
|
4
|
+
const zod_1 = require("zod");
|
5
|
+
// Framework-level configuration schema
|
6
|
+
const FrameworkConfigSchema = zod_1.z.object({
|
7
|
+
NODE_ENV: zod_1.z.enum(['development', 'production', 'test']).default('development'),
|
8
|
+
SERVER_PORT: zod_1.z.coerce.number().default(4000),
|
9
|
+
SERVER_HOST: zod_1.z.string().default('localhost'),
|
10
|
+
LOG_LEVEL: zod_1.z.enum(['debug', 'info', 'warn', 'error']).default('info'),
|
11
|
+
CONFIG_DEBUG: zod_1.z.coerce.boolean().default(false),
|
12
|
+
});
|
13
|
+
const LoggingConfigSchema = zod_1.z.object({
|
14
|
+
LOG_LEVEL: zod_1.z
|
15
|
+
.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal'])
|
16
|
+
.default(process.env.NODE_ENV === 'production' ? 'info' : 'debug'),
|
17
|
+
SERVICE_NAME: zod_1.z.string().default('bootifyjs-app'),
|
18
|
+
// ClickHouse Configuration
|
19
|
+
CLICKHOUSE_ENABLED: zod_1.z
|
20
|
+
.preprocess((val) => String(val).toLowerCase() === 'true', zod_1.z.boolean())
|
21
|
+
.default(false),
|
22
|
+
CLICKHOUSE_URL: zod_1.z.string().url().default('http://localhost:8123'),
|
23
|
+
CLICKHOUSE_USER: zod_1.z.string().default('default'),
|
24
|
+
CLICKHOUSE_PASSWORD: zod_1.z.string().default(''),
|
25
|
+
CLICKHOUSE_DB: zod_1.z.string().default('default'),
|
26
|
+
});
|
27
|
+
FrameworkConfigSchema.merge(LoggingConfigSchema);
|
28
|
+
class AppConfig {
|
29
|
+
constructor(userSchema) {
|
30
|
+
// Merge framework and user schemas
|
31
|
+
this.mergedSchema = FrameworkConfigSchema.merge(userSchema || zod_1.z.object({}));
|
32
|
+
// Validate and load configuration
|
33
|
+
this.config = this.validateConfig();
|
34
|
+
// Optional debug output
|
35
|
+
if (this.get('CONFIG_DEBUG')) {
|
36
|
+
this.logConfig();
|
37
|
+
}
|
38
|
+
}
|
39
|
+
/**
|
40
|
+
* Get the singleton instance of AppConfig
|
41
|
+
* @param userSchema Optional user configuration schema (only used on first instantiation)
|
42
|
+
* @returns The AppConfig instance
|
43
|
+
*/
|
44
|
+
static getInstance(userSchema) {
|
45
|
+
if (!AppConfig.instance) {
|
46
|
+
if (!userSchema) {
|
47
|
+
throw new Error('User schema must be provided when creating the AppConfig instance for the first time');
|
48
|
+
}
|
49
|
+
AppConfig.instance = new AppConfig(userSchema);
|
50
|
+
}
|
51
|
+
return AppConfig.instance;
|
52
|
+
}
|
53
|
+
/**
|
54
|
+
* Initialize the singleton instance (must be called once before getInstance)
|
55
|
+
* @param userSchema User configuration schema
|
56
|
+
*/
|
57
|
+
static initialize(userSchema) {
|
58
|
+
if (AppConfig.instance) {
|
59
|
+
console.warn('AppConfig is already initialized. Reinitializing with new schema.');
|
60
|
+
}
|
61
|
+
AppConfig.instance = new AppConfig(userSchema);
|
62
|
+
}
|
63
|
+
validateConfig() {
|
64
|
+
try {
|
65
|
+
const result = this.mergedSchema.safeParse(process.env);
|
66
|
+
if (!result.success) {
|
67
|
+
const formattedErrors = result.error.format();
|
68
|
+
const errorMessages = Object.entries(formattedErrors)
|
69
|
+
.filter(([key]) => key !== '_errors')
|
70
|
+
.map(([key, value]) => `- ${key}: ${value._errors.join(', ')}`)
|
71
|
+
.join('\n');
|
72
|
+
throw new Error(`Configuration validation failed:\n${errorMessages}`);
|
73
|
+
}
|
74
|
+
return result.data;
|
75
|
+
}
|
76
|
+
catch (error) {
|
77
|
+
console.error(error instanceof Error ? error.message : 'Unknown configuration error');
|
78
|
+
process.exit(1);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
/**
|
82
|
+
* Get a configuration value by key
|
83
|
+
* @param key The configuration key to retrieve
|
84
|
+
* @returns The configuration value
|
85
|
+
*/
|
86
|
+
get(key) {
|
87
|
+
const value = this.config[key];
|
88
|
+
if (this.config['CONFIG_DEBUG']) {
|
89
|
+
console.debug(`Config access: ${String(key)} =>`, value);
|
90
|
+
}
|
91
|
+
return value;
|
92
|
+
}
|
93
|
+
/**
|
94
|
+
* Get the entire configuration object
|
95
|
+
* @returns The complete configuration object
|
96
|
+
*/
|
97
|
+
getAll() {
|
98
|
+
return { ...this.config };
|
99
|
+
}
|
100
|
+
/**
|
101
|
+
* Get the merged schema for introspection
|
102
|
+
* @returns The Zod schema object
|
103
|
+
*/
|
104
|
+
getSchema() {
|
105
|
+
return this.mergedSchema;
|
106
|
+
}
|
107
|
+
/**
|
108
|
+
* Log the current configuration (redacts sensitive fields)
|
109
|
+
*/
|
110
|
+
logConfig() {
|
111
|
+
const configToLog = { ...this.config };
|
112
|
+
// Redact sensitive information
|
113
|
+
const sensitiveKeys = ['password', 'secret', 'key', 'token', 'database_url'];
|
114
|
+
Object.keys(configToLog).forEach((key) => {
|
115
|
+
if (sensitiveKeys.some((sensitive) => key.toLowerCase().includes(sensitive))) {
|
116
|
+
configToLog[key] = '*****';
|
117
|
+
}
|
118
|
+
});
|
119
|
+
console.log('Loaded configuration:', configToLog);
|
120
|
+
}
|
121
|
+
}
|
122
|
+
exports.AppConfig = AppConfig;
|
123
|
+
//# sourceMappingURL=AppConfig.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AppConfig.js","sourceRoot":"","sources":["../../src/config/AppConfig.ts"],"names":[],"mappings":"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"}
|
@@ -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;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAgBtD,QAAA,MAAM,UAAU;;;;;;EAIH,CAAA;AAQb,qBAEa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAErD,OAAO,CAAC,MAAM,CAAS;IAIvB,WAAW;;;;;
|
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;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAgBtD,QAAA,MAAM,UAAU;;;;;;EAIH,CAAA;AAQb,qBAEa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAErD,OAAO,CAAC,MAAM,CAAS;IAIvB,WAAW;;;;;IAcX,WAAW,CAAc,EAAE,EAAE,MAAM;;;;;IAoBnC,UAAU,CAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC;;;;;CAIpD"}
|
@@ -16,11 +16,11 @@ exports.TodoController = void 0;
|
|
16
16
|
const zod_1 = require("zod");
|
17
17
|
const decorators_1 = require("../../core/decorators");
|
18
18
|
const todo_service_1 = require("../services/todo.service");
|
19
|
-
const auth_middleware_1 = require("../../middleware/auth.middleware");
|
20
19
|
const di_container_1 = require("../../core/di-container");
|
21
20
|
const request_context_service_1 = require("../../core/request-context.service");
|
22
21
|
const decorators_2 = require("../../cache/decorators");
|
23
22
|
const decorators_3 = require("../../logging/core/decorators");
|
23
|
+
const logger_1 = require("../../logging/core/logger");
|
24
24
|
const createTodoSchema = {
|
25
25
|
body: zod_1.z
|
26
26
|
.object({
|
@@ -42,9 +42,13 @@ let TodoController = class TodoController {
|
|
42
42
|
constructor(todoService) {
|
43
43
|
this.todoService = todoService;
|
44
44
|
}
|
45
|
+
// @UseMiddleware(authMiddleware)
|
45
46
|
getAllTodos() {
|
46
47
|
const context = di_container_1.container.resolve(request_context_service_1.RequestContextService);
|
47
48
|
console.log(context.store());
|
49
|
+
const logger1 = di_container_1.container.resolve(logger_1.Logger);
|
50
|
+
logger1.info('Hello from logger 1 get all todo');
|
51
|
+
console.log(this.logger === logger1);
|
48
52
|
this.logger.info('Hello from get all todo');
|
49
53
|
return this.todoService.getAllTodos();
|
50
54
|
}
|
@@ -59,8 +63,9 @@ let TodoController = class TodoController {
|
|
59
63
|
};
|
60
64
|
exports.TodoController = TodoController;
|
61
65
|
__decorate([
|
62
|
-
(0, decorators_1.Get)('/')
|
63
|
-
|
66
|
+
(0, decorators_1.Get)('/')
|
67
|
+
// @UseMiddleware(authMiddleware)
|
68
|
+
,
|
64
69
|
__metadata("design:type", Function),
|
65
70
|
__metadata("design:paramtypes", []),
|
66
71
|
__metadata("design:returntype", void 0)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"todo.controller.js","sourceRoot":"","sources":["../../../src/examples/controllers/todo.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6BAAuB;AACvB,sDAAiG;AACjG,2DAAsD;
|
1
|
+
{"version":3,"file":"todo.controller.js","sourceRoot":"","sources":["../../../src/examples/controllers/todo.controller.ts"],"names":[],"mappings":"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"}
|
package/dist/examples/index.js
CHANGED
@@ -13,12 +13,17 @@ const component_registry_1 = require("../core/component-registry");
|
|
13
13
|
const bootstrap_1 = require("../events/bootstrap");
|
14
14
|
const di_container_1 = require("../core/di-container");
|
15
15
|
const todo_service_1 = require("./services/todo.service");
|
16
|
+
const zod_1 = __importDefault(require("zod"));
|
17
|
+
const AppConfig_1 = require("../config/AppConfig");
|
16
18
|
// import { createBootifyApp } from './api'
|
17
19
|
// import { HealthController } from './examples/controllers/health.controller'
|
18
20
|
// import { TodoController } from './examples/controllers/todo.controller'
|
19
21
|
// --- Application Startup ---
|
20
22
|
async function main() {
|
21
23
|
// await intitializeLogging()
|
24
|
+
AppConfig_1.AppConfig.initialize(zod_1.default.object({
|
25
|
+
NODE_ENV: zod_1.default.string().min(1),
|
26
|
+
}));
|
22
27
|
const allComponents = Array.from(component_registry_1.registeredComponents);
|
23
28
|
await (0, bootstrap_1.bootstrapEventSystem)(allComponents);
|
24
29
|
// await bootstrapCache()
|
@@ -26,6 +31,9 @@ async function main() {
|
|
26
31
|
controllers: [health_controller_1.HealthController, todo_controller_1.TodoController],
|
27
32
|
enableSwagger: true,
|
28
33
|
port: 3000,
|
34
|
+
configSchema: zod_1.default.object({
|
35
|
+
NODE_ENV: zod_1.default.string().min(1),
|
36
|
+
}),
|
29
37
|
});
|
30
38
|
console.log('All components:', di_container_1.container.getRegisteredComponents());
|
31
39
|
const animal = di_container_1.container.resolve('Animal');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":";;;;;AAAA,4BAAyB;AACzB,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AACf,gCAAyC;AACzC,uEAAkE;AAClE,mEAA8D;AAC9D,mEAAiE;AACjE,mDAA0D;AAC1D,uDAAgD;AAChD,0DAA+D;AAG/D,2CAA2C;AAC3C,8EAA8E;AAC9E,0EAA0E;AAE1E,8BAA8B;AAE9B,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,yCAAoB,CAAC,CAAA;IACtD,MAAM,IAAA,gCAAoB,EAAC,aAAa,CAAC,CAAA;IACzC,yBAAyB;IACzB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,sBAAgB,EAAC;QACvC,WAAW,EAAE,CAAC,oCAAgB,EAAE,gCAAc,CAAC;QAC/C,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,IAAI;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":";;;;;AAAA,4BAAyB;AACzB,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AACf,gCAAyC;AACzC,uEAAkE;AAClE,mEAA8D;AAC9D,mEAAiE;AACjE,mDAA0D;AAC1D,uDAAgD;AAChD,0DAA+D;AAG/D,8CAAmB;AACnB,mDAA+C;AAC/C,2CAA2C;AAC3C,8EAA8E;AAC9E,0EAA0E;AAE1E,8BAA8B;AAE9B,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,qBAAS,CAAC,UAAU,CAClB,aAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5B,CAAC,CACH,CAAA;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,yCAAoB,CAAC,CAAA;IACtD,MAAM,IAAA,gCAAoB,EAAC,aAAa,CAAC,CAAA;IACzC,yBAAyB;IACzB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,sBAAgB,EAAC;QACvC,WAAW,EAAE,CAAC,oCAAgB,EAAE,gCAAc,CAAC;QAC/C,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,aAAC,CAAC,MAAM,CAAC;YACrB,QAAQ,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5B,CAAC;KACH,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,wBAAS,CAAC,uBAAuB,EAAE,CAAC,CAAA;IACnE,MAAM,MAAM,GAAG,wBAAS,CAAC,OAAO,CAAS,QAAQ,CAAC,CAAA;IAElD,wBAAwB;IACxB,MAAM,aAAa,GAAkB,wBAAS,CAAC,OAAO,CAAgB,4BAAa,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3D,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAEtC,MAAM,KAAK,EAAE,CAAA;AACf,CAAC;AAED,IAAI,EAAE,CAAA"}
|
@@ -18,16 +18,16 @@ const logger_provider_1 = require("./logger.provider");
|
|
18
18
|
const core_1 = require("../../core");
|
19
19
|
let Logger = class Logger {
|
20
20
|
info(message, context) {
|
21
|
-
this.logger.info(context
|
21
|
+
this.logger.info({ ...context, logType: 'application' }, message);
|
22
22
|
}
|
23
23
|
error(message, error, context) {
|
24
|
-
this.logger.error({ ...context, err: error }, message);
|
24
|
+
this.logger.error({ ...context, err: error, logType: 'application' }, message);
|
25
25
|
}
|
26
26
|
warn(message, context) {
|
27
|
-
this.logger.warn(context
|
27
|
+
this.logger.warn({ ...context, logType: 'application' }, message);
|
28
28
|
}
|
29
29
|
debug(message, context) {
|
30
|
-
this.logger.debug(context
|
30
|
+
this.logger.debug({ ...context, logType: 'application' }, message);
|
31
31
|
}
|
32
32
|
// You can add your specialized methods like audit(), performance(), etc. here
|
33
33
|
audit(payload) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/logging/core/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAuB;AACvB,uDAAgD;AAChD,qCAA+C;AAGxC,IAAM,MAAM,GAAZ,MAAM,MAAM;IAIV,IAAI,CAAC,OAAe,EAAE,OAAgB;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/logging/core/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAuB;AACvB,uDAAgD;AAChD,qCAA+C;AAGxC,IAAM,MAAM,GAAZ,MAAM,MAAM;IAIV,IAAI,CAAC,OAAe,EAAE,OAAgB;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,CAAA;IACnE,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,KAAa,EAAE,OAAgB;QAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,CAAA;IAChF,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,OAAgB;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,CAAA;IACnE,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,OAAgB;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,CAAA;IACpE,CAAC;IAED,8EAA8E;IACvE,KAAK,CAAC,OAAe;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,CAAA;IACjE,CAAC;IAEM,KAAK,CAAC,QAAgB;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;CACF,CAAA;AA5BY,wBAAM;AAEA;IADhB,IAAA,gBAAS,EAAC,8BAAY,CAAC;;sCACa;iBAF1B,MAAM;IADlB,IAAA,cAAO,GAAE;GACG,MAAM,CA4BlB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"logger.provider.d.ts","sourceRoot":"","sources":["../../../src/logging/core/logger.provider.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;
|
1
|
+
{"version":3,"file":"logger.provider.d.ts","sourceRoot":"","sources":["../../../src/logging/core/logger.provider.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAMvB,eAAO,MAAM,YAAY,eAAuB,CAAA;AAIhD,eAAO,MAAM,aAAa,QAAO,IAAI,CAAC,MAyDrC,CAAA"}
|
@@ -5,20 +5,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.loggerFactory = exports.LOGGER_TOKEN = void 0;
|
7
7
|
const pino_1 = __importDefault(require("pino"));
|
8
|
-
const logging_config_1 = require("../config/logging.config");
|
9
8
|
const core_1 = require("../../core");
|
9
|
+
const AppConfig_1 = require("../../config/AppConfig");
|
10
10
|
// 1. Define a unique DI token for our logger instance
|
11
11
|
exports.LOGGER_TOKEN = Symbol.for('Logger');
|
12
12
|
// 2. The factory function
|
13
13
|
const loggerFactory = () => {
|
14
|
-
const
|
15
|
-
|
16
|
-
console.log(config.LOG_LEVEL);
|
14
|
+
const appConfig = AppConfig_1.AppConfig.getInstance();
|
15
|
+
console.log(appConfig.get('LOG_LEVEL'));
|
17
16
|
const pinoOptions = {
|
18
|
-
level:
|
17
|
+
level: appConfig.get('LOG_LEVEL'),
|
19
18
|
messageKey: 'message',
|
20
19
|
base: {
|
21
|
-
service:
|
20
|
+
service: appConfig.get('SERVICE_NAME'),
|
22
21
|
pid: process.pid,
|
23
22
|
},
|
24
23
|
mixin() {
|
@@ -32,7 +31,7 @@ const loggerFactory = () => {
|
|
32
31
|
};
|
33
32
|
const transportTargets = [];
|
34
33
|
// Add console transport for development
|
35
|
-
if (
|
34
|
+
if (appConfig.get('LOG_LEVEL') === 'debug') {
|
36
35
|
transportTargets.push({
|
37
36
|
target: 'pino-pretty',
|
38
37
|
level: 'debug',
|
@@ -48,19 +47,20 @@ const loggerFactory = () => {
|
|
48
47
|
});
|
49
48
|
}
|
50
49
|
// Add ClickHouse transport if enabled
|
51
|
-
if (
|
50
|
+
if (appConfig.get('CLICKHOUSE_ENABLED')) {
|
52
51
|
transportTargets.push({
|
53
52
|
target: './clickhouse.transport.js', // Path relative to the running script
|
54
53
|
level: 'info',
|
55
54
|
options: {
|
56
|
-
url:
|
57
|
-
username:
|
58
|
-
password:
|
59
|
-
database:
|
60
|
-
application:
|
55
|
+
url: appConfig.get('CLICKHOUSE_URL'),
|
56
|
+
username: appConfig.get('CLICKHOUSE_USER'),
|
57
|
+
password: appConfig.get('CLICKHOUSE_PASSWORD'),
|
58
|
+
database: appConfig.get('CLICKHOUSE_DB'),
|
59
|
+
application: appConfig.get('SERVICE_NAME'),
|
61
60
|
},
|
62
61
|
});
|
63
62
|
}
|
63
|
+
console.log('targets', transportTargets);
|
64
64
|
return (0, pino_1.default)({ ...pinoOptions, transport: { targets: transportTargets } });
|
65
65
|
};
|
66
66
|
exports.loggerFactory = loggerFactory;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"logger.provider.js","sourceRoot":"","sources":["../../../src/logging/core/logger.provider.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;
|
1
|
+
{"version":3,"file":"logger.provider.js","sourceRoot":"","sources":["../../../src/logging/core/logger.provider.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAEvB,qCAA2D;AAC3D,sDAAkD;AAElD,sDAAsD;AACzC,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAEhD,0BAA0B;AAEnB,MAAM,aAAa,GAAG,GAAgB,EAAE;IAC7C,MAAM,SAAS,GAAG,qBAAS,CAAC,WAAW,EAAE,CAAA;IAEzC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;IAEvC,MAAM,WAAW,GAAuB;QACtC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;QACjC,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE;YACJ,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;YACtC,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB;QACD,KAAK;YACH,MAAM,KAAK,GAAG,0BAAmB,CAAC,QAAQ,EAAE,CAAA;YAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,EAAE,CAAA;YACX,CAAC;YACD,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAC5C,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG;KAC9D,CAAA;IAED,MAAM,gBAAgB,GAAkC,EAAE,CAAA;IAE1D,wCAAwC;IACxC,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,OAAO,EAAE,CAAC;QAC3C,gBAAgB,CAAC,IAAI,CAAC;YACpB,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,sBAAsB,EAAE;SAC3F,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,sCAAsC;QACtC,gBAAgB,CAAC,IAAI,CAAC;YACpB,MAAM,EAAE,WAAW,EAAE,wCAAwC;YAC7D,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,EAAE;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,sCAAsC;IACtC,IAAI,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACxC,gBAAgB,CAAC,IAAI,CAAC;YACpB,MAAM,EAAE,2BAA2B,EAAE,sCAAsC;YAC3E,KAAK,EAAE,MAAM;YACb,OAAO,EAAE;gBACP,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBACpC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAC1C,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC;gBAC9C,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;gBACxC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;aAC3C;SACF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;IAExC,OAAO,IAAA,cAAI,EAAC,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAA;AAC3E,CAAC,CAAA;AAzDY,QAAA,aAAa,iBAyDzB;AAED,gDAAgD;AAChD,gBAAS,CAAC,QAAQ,CAAC,oBAAY,EAAE,EAAE,UAAU,EAAE,qBAAa,EAAE,CAAC,CAAA"}
|
package/dist/logging/index.d.ts
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
import { Logger } from './core/logger';
|
2
2
|
import { StartupLoggerService } from './core/startup.logger';
|
3
|
-
import pino from 'pino';
|
4
3
|
export declare function intitializeLogging(): Promise<{
|
5
4
|
logger: Logger;
|
6
5
|
startupLogger: StartupLoggerService;
|
7
6
|
}>;
|
8
|
-
export declare const logger: pino.Logger<never, boolean>;
|
9
7
|
export * from './core/logger';
|
10
8
|
export * from './core/decorators';
|
11
9
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAG5D,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,oBAAoB,CAAA;CACpC,CAAC,CAcD;AAGD,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA"}
|
package/dist/logging/index.js
CHANGED
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
exports.logger = void 0;
|
18
17
|
exports.intitializeLogging = intitializeLogging;
|
19
18
|
const core_1 = require("../core");
|
20
19
|
const logger_provider_1 = require("./core/logger.provider");
|
@@ -32,7 +31,7 @@ async function intitializeLogging() {
|
|
32
31
|
startupLogger: core_1.container.resolve(startup_logger_1.StartupLoggerService),
|
33
32
|
};
|
34
33
|
}
|
35
|
-
|
34
|
+
// export const logger = container.resolve<pino.Logger>(LOGGER_TOKEN)
|
36
35
|
__exportStar(require("./core/logger"), exports);
|
37
36
|
__exportStar(require("./core/decorators"), exports);
|
38
37
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAMA,gDAiBC;AAvBD,kCAAmC;AACnC,4DAAoE;AACpE,0CAAsC;AACtC,0DAA4D;AAGrD,KAAK,UAAU,kBAAkB;IAItC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;IAEjD,wEAAwE;IACxE,+CAA+C;IAE/C,gEAAgE;IAChE,gBAAS,CAAC,QAAQ,CAAC,8BAAY,EAAE,EAAE,UAAU,EAAE,+BAAa,EAAE,CAAC,CAAA;IAE/D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAA;IAC5D,OAAO;QACL,MAAM,EAAE,gBAAS,CAAC,OAAO,CAAS,eAAM,CAAC;QACzC,aAAa,EAAE,gBAAS,CAAC,OAAO,CAAuB,qCAAoB,CAAC;KAC7E,CAAA;AACH,CAAC;AAED,qEAAqE;AACrE,gDAA6B;AAC7B,oDAAiC"}
|