bootifyjs 1.3.0 → 1.4.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/api.d.ts.map +1 -1
- package/dist/api.js +15 -15
- package/dist/api.js.map +1 -1
- package/dist/examples/index.d.ts +2 -2
- package/dist/examples/index.d.ts.map +1 -1
- package/dist/examples/index.js +15 -15
- package/dist/examples/index.js.map +1 -1
- 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/package.json +2 -1
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;AAClD,OAAU,EAAY,SAAS,EAAE,MAAM,KAAK,CAAA;AAG5C,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,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;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;CACvB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;;;
|
|
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,EAAE,MAAM,KAAK,CAAA;AAG5C,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,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;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;CACvB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;;;GAgHhE"}
|
package/dist/api.js
CHANGED
|
@@ -57,6 +57,21 @@ async function createBootifyApp(options) {
|
|
|
57
57
|
startupLogger.logComponentStart('Request Context Middleware');
|
|
58
58
|
app.addHook('onRequest', (0, context_middleware_1.createContextMiddleware)(options.contextExtractor));
|
|
59
59
|
startupLogger.logComponentComplete('Request Context Middleware');
|
|
60
|
+
// Register cookie parsing if enabled
|
|
61
|
+
if (options.enableCookie) {
|
|
62
|
+
startupLogger.logComponentStart('Registering Cookie Parser');
|
|
63
|
+
try {
|
|
64
|
+
const fastifyCookie = await Promise.resolve(`${'@fastify/cookie'}`).then(s => __importStar(require(s)));
|
|
65
|
+
await app.register(fastifyCookie.default, {
|
|
66
|
+
hook: "onRequest", // set to false to disable cookie autoparsing or set
|
|
67
|
+
parseOptions: {}, // options for parsing cookies
|
|
68
|
+
});
|
|
69
|
+
startupLogger.logComponentComplete('Cookie Parser');
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
throw new Error('Cookie parsing is enabled but @fastify/cookie is not installed. Please install it with: npm install @fastify/cookie');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
60
75
|
// Register global middlewares after context is established
|
|
61
76
|
if (options.globalMiddlewares && options.globalMiddlewares.length > 0) {
|
|
62
77
|
startupLogger.logComponentStart('Global Middlewares');
|
|
@@ -92,21 +107,6 @@ async function createBootifyApp(options) {
|
|
|
92
107
|
}
|
|
93
108
|
});
|
|
94
109
|
startupLogger.logComponentComplete('Attaching Global ErrorHandler');
|
|
95
|
-
// Register cookie parsing if enabled
|
|
96
|
-
if (options.enableCookie) {
|
|
97
|
-
startupLogger.logComponentStart('Registering Cookie Parser');
|
|
98
|
-
try {
|
|
99
|
-
const fastifyCookie = await Promise.resolve(`${'@fastify/cookie'}`).then(s => __importStar(require(s)));
|
|
100
|
-
await app.register(fastifyCookie.default, {
|
|
101
|
-
hook: "onRequest", // set to false to disable cookie autoparsing or set
|
|
102
|
-
parseOptions: {}, // options for parsing cookies
|
|
103
|
-
});
|
|
104
|
-
startupLogger.logComponentComplete('Cookie Parser');
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
throw new Error('Cookie parsing is enabled but @fastify/cookie is not installed. Please install it with: npm install @fastify/cookie');
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
110
|
if (options.enableSwagger) {
|
|
111
111
|
startupLogger.logComponentStart('Initializing Swagger');
|
|
112
112
|
const swaggerHost = options.hostname ?? 'localhost';
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/examples/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import "../cache/stores/redis-cache.store";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAe1B,OAAO,mCAAmC,CAAC"}
|
package/dist/examples/index.js
CHANGED
|
@@ -7,7 +7,6 @@ const dotenv_1 = __importDefault(require("dotenv"));
|
|
|
7
7
|
require("reflect-metadata");
|
|
8
8
|
const api_1 = require("../api");
|
|
9
9
|
const di_container_1 = require("../core/di-container");
|
|
10
|
-
const bootstrap_1 = require("../events/bootstrap");
|
|
11
10
|
const health_controller_1 = require("./controllers/health.controller");
|
|
12
11
|
const todo_controller_1 = require("./controllers/todo.controller");
|
|
13
12
|
dotenv_1.default.config();
|
|
@@ -24,14 +23,15 @@ const envSchema = zod_1.default.object({
|
|
|
24
23
|
});
|
|
25
24
|
// Global middleware implementations
|
|
26
25
|
const corsMiddleware = async (request, reply) => {
|
|
27
|
-
console.log(
|
|
28
|
-
reply.header(
|
|
29
|
-
reply.header(
|
|
30
|
-
reply.header(
|
|
26
|
+
console.log("🌐 CORS middleware executed");
|
|
27
|
+
reply.header("Access-Control-Allow-Origin", "*");
|
|
28
|
+
reply.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
|
|
29
|
+
reply.header("Access-Control-Allow-Headers", "Content-Type, Authorization");
|
|
31
30
|
};
|
|
32
31
|
const requestTimingMiddleware = async (request, reply) => {
|
|
33
32
|
const startTime = Date.now();
|
|
34
33
|
console.log(`⏱️ Request started: ${request.method} ${request.url}`);
|
|
34
|
+
// Add timing info to request context
|
|
35
35
|
request.startTime = startTime;
|
|
36
36
|
request.logTiming = () => {
|
|
37
37
|
const duration = Date.now() - startTime;
|
|
@@ -39,24 +39,24 @@ const requestTimingMiddleware = async (request, reply) => {
|
|
|
39
39
|
};
|
|
40
40
|
};
|
|
41
41
|
const securityHeadersMiddleware = async (request, reply) => {
|
|
42
|
-
console.log(
|
|
43
|
-
reply.header(
|
|
44
|
-
reply.header(
|
|
45
|
-
reply.header(
|
|
46
|
-
reply.header(
|
|
42
|
+
console.log("🔒 Security headers middleware executed");
|
|
43
|
+
reply.header("X-Content-Type-Options", "nosniff");
|
|
44
|
+
reply.header("X-Frame-Options", "DENY");
|
|
45
|
+
reply.header("X-XSS-Protection", "1; mode=block");
|
|
46
|
+
reply.header("Strict-Transport-Security", "max-age=31536000; includeSubDomains");
|
|
47
47
|
};
|
|
48
48
|
const requestLoggingMiddleware = async (request, reply) => {
|
|
49
49
|
const clientIP = request.ip;
|
|
50
|
-
const userAgent = request.headers[
|
|
50
|
+
const userAgent = request.headers["user-agent"] || "Unknown";
|
|
51
51
|
console.log(`📝 Request: ${request.method} ${request.url} from ${clientIP} - ${userAgent}`);
|
|
52
52
|
};
|
|
53
53
|
async function main() {
|
|
54
54
|
// await intitializeLogging()
|
|
55
55
|
const { middleware: jwtAuthMiddleware, authManager } = await (0, basic_usage_1.setupJwtAuth)();
|
|
56
56
|
// Register authManager in DI container for controller injection
|
|
57
|
-
di_container_1.container.register(
|
|
57
|
+
di_container_1.container.register("AuthManager", { useFactory: () => authManager });
|
|
58
58
|
const allComponents = Array.from(di_container_1.container.getRegisteredComponents());
|
|
59
|
-
await
|
|
59
|
+
// await bootstrapEventSystem(allComponents, { useBufferedProcessing: true })
|
|
60
60
|
await (0, cache_1.bootstrapCache)();
|
|
61
61
|
const { app, start } = await (0, api_1.createBootifyApp)({
|
|
62
62
|
controllers: [health_controller_1.HealthController, todo_controller_1.TodoController],
|
|
@@ -71,9 +71,9 @@ async function main() {
|
|
|
71
71
|
corsMiddleware, // 1st: Handle CORS headers
|
|
72
72
|
securityHeadersMiddleware, // 2nd: Add security headers
|
|
73
73
|
requestTimingMiddleware, // 3rd: Start request timing
|
|
74
|
-
requestLoggingMiddleware // 4th: Log request details
|
|
74
|
+
requestLoggingMiddleware, // 4th: Log request details
|
|
75
75
|
],
|
|
76
|
-
enableCookie: true
|
|
76
|
+
enableCookie: true,
|
|
77
77
|
});
|
|
78
78
|
await (0, basic_usage_1.registerJWTAuthRoutes)(app, authManager, jwtAuthMiddleware);
|
|
79
79
|
// Setup context middleware with authentication
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.provider.d.ts","sourceRoot":"","sources":["../../../src/logging/core/logger.provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.provider.d.ts","sourceRoot":"","sources":["../../../src/logging/core/logger.provider.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,eAAO,MAAM,YAAY,eAAuB,CAAC;AAIjD,eAAO,MAAM,aAAa,QAAO,IAAI,CAAC,MAqFrC,CAAC"}
|
|
@@ -4,20 +4,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.loggerFactory = exports.LOGGER_TOKEN = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
7
8
|
const pino_1 = __importDefault(require("pino"));
|
|
8
9
|
const AppConfig_1 = require("../../config/AppConfig");
|
|
9
10
|
const core_1 = require("../../core");
|
|
10
11
|
// 1. Define a unique DI token for our logger instance
|
|
11
|
-
exports.LOGGER_TOKEN = Symbol.for(
|
|
12
|
+
exports.LOGGER_TOKEN = Symbol.for("Logger");
|
|
12
13
|
// 2. The factory function
|
|
13
14
|
const loggerFactory = () => {
|
|
14
15
|
const appConfig = AppConfig_1.AppConfig.getInstance();
|
|
15
|
-
console.log(appConfig.get(
|
|
16
|
+
console.log(appConfig.get("LOG_LEVEL"));
|
|
16
17
|
const pinoOptions = {
|
|
17
|
-
level: appConfig.get(
|
|
18
|
-
messageKey:
|
|
18
|
+
level: appConfig.get("LOG_LEVEL"),
|
|
19
|
+
messageKey: "message",
|
|
19
20
|
base: {
|
|
20
|
-
service: appConfig.get(
|
|
21
|
+
service: appConfig.get("SERVICE_NAME"),
|
|
21
22
|
pid: process.pid,
|
|
22
23
|
},
|
|
23
24
|
mixin() {
|
|
@@ -31,48 +32,62 @@ const loggerFactory = () => {
|
|
|
31
32
|
};
|
|
32
33
|
const transportTargets = [];
|
|
33
34
|
// Add console transport for development
|
|
34
|
-
if (appConfig.get(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
// if (appConfig.get("LOG_LEVEL") === "debug") {
|
|
36
|
+
// transportTargets.push({
|
|
37
|
+
// target: "pino-pretty",
|
|
38
|
+
// level: "debug",
|
|
39
|
+
// options: {
|
|
40
|
+
// colorize: true,
|
|
41
|
+
// translateTime: "SYS:standard",
|
|
42
|
+
// ignore: "pid,hostname,service",
|
|
43
|
+
// },
|
|
44
|
+
// });
|
|
45
|
+
// } else {
|
|
46
|
+
// // Structured JSON logs for production
|
|
47
|
+
// }
|
|
48
|
+
transportTargets.push({
|
|
49
|
+
target: "pino/file", // pino/file writes to stdout by default
|
|
50
|
+
level: "info",
|
|
51
|
+
options: {},
|
|
52
|
+
});
|
|
53
|
+
// Add ClickHouse transport if enabled
|
|
54
|
+
// if (appConfig.get("CLICKHOUSE_ENABLED")) {
|
|
55
|
+
// transportTargets.push({
|
|
56
|
+
// target: './clickhouse.transport.js', // Path relative to the running script
|
|
57
|
+
// level: 'info',
|
|
58
|
+
// options: {
|
|
59
|
+
// url: appConfig.get('CLICKHOUSE_URL'),
|
|
60
|
+
// username: appConfig.get('CLICKHOUSE_USER'),
|
|
61
|
+
// password: appConfig.get('CLICKHOUSE_PASSWORD'),
|
|
62
|
+
// database: appConfig.get('CLICKHOUSE_DB'),
|
|
63
|
+
// application: appConfig.get('SERVICE_NAME'),
|
|
64
|
+
// },
|
|
65
|
+
// })
|
|
66
|
+
// transportTargets.push({
|
|
67
|
+
// level: 'info',
|
|
68
|
+
// // target: './clickhouse-transport.js',
|
|
69
|
+
// target: path.join(__dirname, 'clickhouse-transport.js'),
|
|
70
|
+
// options: {
|
|
71
|
+
// url: process.env.CLICKHOUSE_URL || 'http://localhost:8123',
|
|
72
|
+
// username: process.env.CLICKHOUSE_USER || 'default',
|
|
73
|
+
// password: process.env.CLICKHOUSE_PASSWORD || '',
|
|
74
|
+
// database: process.env.CLICKHOUSE_DB || 'default',
|
|
75
|
+
// application: process.env.APP_NAME || 'my-application',
|
|
76
|
+
// },
|
|
77
|
+
// })
|
|
78
|
+
if (process.env.POSTHOG_LOGGING_ENABLED) {
|
|
43
79
|
transportTargets.push({
|
|
44
|
-
target:
|
|
45
|
-
level:
|
|
46
|
-
options: {
|
|
80
|
+
target: path_1.default.join(__dirname, "posthog-transport.js"),
|
|
81
|
+
level: "info",
|
|
82
|
+
options: {
|
|
83
|
+
apiKey: process.env.POSTHOG_API_KEY || "",
|
|
84
|
+
host: process.env.POSTHOG_HOST || "https://us.i.posthog.com",
|
|
85
|
+
serviceName: "bootifyjs",
|
|
86
|
+
instanceId: process.env.INSTANCE_ID || "default",
|
|
87
|
+
},
|
|
47
88
|
});
|
|
48
89
|
}
|
|
49
|
-
|
|
50
|
-
if (appConfig.get('CLICKHOUSE_ENABLED')) {
|
|
51
|
-
// transportTargets.push({
|
|
52
|
-
// target: './clickhouse.transport.js', // Path relative to the running script
|
|
53
|
-
// level: 'info',
|
|
54
|
-
// options: {
|
|
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'),
|
|
60
|
-
// },
|
|
61
|
-
// })
|
|
62
|
-
// transportTargets.push({
|
|
63
|
-
// level: 'info',
|
|
64
|
-
// // target: './clickhouse-transport.js',
|
|
65
|
-
// target: path.join(__dirname, 'clickhouse-transport.js'),
|
|
66
|
-
// options: {
|
|
67
|
-
// url: process.env.CLICKHOUSE_URL || 'http://localhost:8123',
|
|
68
|
-
// username: process.env.CLICKHOUSE_USER || 'default',
|
|
69
|
-
// password: process.env.CLICKHOUSE_PASSWORD || '',
|
|
70
|
-
// database: process.env.CLICKHOUSE_DB || 'default',
|
|
71
|
-
// application: process.env.APP_NAME || 'my-application',
|
|
72
|
-
// },
|
|
73
|
-
// })
|
|
74
|
-
}
|
|
75
|
-
console.log('targets', transportTargets);
|
|
90
|
+
console.log("targets", transportTargets);
|
|
76
91
|
return (0, pino_1.default)({ ...pinoOptions, transport: { targets: transportTargets } });
|
|
77
92
|
};
|
|
78
93
|
exports.loggerFactory = loggerFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.provider.js","sourceRoot":"","sources":["../../../src/logging/core/logger.provider.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"logger.provider.js","sourceRoot":"","sources":["../../../src/logging/core/logger.provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bootifyjs",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": "Piyush Priyadarshi",
|
|
6
6
|
"license": "ISC",
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"@types/jsonwebtoken": "^9.0.10",
|
|
55
55
|
"fastify": "^5.4.0",
|
|
56
56
|
"jsonwebtoken": "^9.0.2",
|
|
57
|
+
"posthog-node": "^5.9.3",
|
|
57
58
|
"reflect-metadata": "^0.2.2",
|
|
58
59
|
"zod": "^3.25.76",
|
|
59
60
|
"zod-to-json-schema": "^3.24.6"
|