azurajs 3.0.2 → 3.0.3

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.
@@ -1,6 +1,6 @@
1
1
  import { Server } from 'node:http';
2
2
  import { H as HttpMethod, R as RouteHandler, M as MiddlewareHandler, b as RouteMatch, E as ErrorHandler } from '../common.type-BhGCNyEm.mjs';
3
- import { L as Logger } from '../Logger-iEQNVVSc.mjs';
3
+ import { Logger } from '../logger/index.mjs';
4
4
  import { A as AzuraConfig } from '../config.type-4K-xcMSy.mjs';
5
5
  import { g as PluginHandler } from '../plugin.type-BNooWhKa.mjs';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { Server } from 'node:http';
2
2
  import { H as HttpMethod, R as RouteHandler, M as MiddlewareHandler, b as RouteMatch, E as ErrorHandler } from '../common.type-BhGCNyEm.js';
3
- import { L as Logger } from '../Logger-iEQNVVSc.js';
3
+ import { Logger } from '../logger/index.js';
4
4
  import { A as AzuraConfig } from '../config.type-s3ImgfM_.js';
5
5
  import { g as PluginHandler } from '../plugin.type-D4HHceYz.js';
6
6
 
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { AzuraServer, Router } from './core/index.mjs';
2
2
  export { Body, Controller, Cookies, Delete, Get, Head, Headers, Ip, Meta, NextFunc, Options, Param, Patch, Post, Put, Query, Req, Res, Session, UseMiddleware, applyDecorators } from './decorators/index.mjs';
3
3
  export { CORSPlugin, CircuitBreakerPlugin, CompressionPlugin, ETagPlugin, HealthCheckPlugin, HelmetPlugin, JWTPayload, JWTPlugin, MultipartPlugin, ProxyPlugin, RateLimitPlugin, RequestIdPlugin, SSEClient, SSEManager, SSEPlugin, SessionPlugin, StaticPlugin, TimeoutPlugin, UploadedFile, signJWT, verifyJWT } from './plugins/index.mjs';
4
- export { L as Logger } from './Logger-iEQNVVSc.mjs';
4
+ export { Logger } from './logger/index.mjs';
5
5
  export { DTOValidator, ExternalSchema, HttpError, Schema, SchemaValidationResult, SchemaValidator, ValidationError, ValidationResult, clearCookieHeader, parseBody, parseCookies, parseQueryString, parseUrl, resolveIp, serializeCookie } from './utils/index.mjs';
6
6
  export { ConfigModule } from './config/index.mjs';
7
7
  export { LoggingMiddleware } from './middleware/index.mjs';
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { AzuraServer, Router } from './core/index.js';
2
2
  export { Body, Controller, Cookies, Delete, Get, Head, Headers, Ip, Meta, NextFunc, Options, Param, Patch, Post, Put, Query, Req, Res, Session, UseMiddleware, applyDecorators } from './decorators/index.js';
3
3
  export { CORSPlugin, CircuitBreakerPlugin, CompressionPlugin, ETagPlugin, HealthCheckPlugin, HelmetPlugin, JWTPayload, JWTPlugin, MultipartPlugin, ProxyPlugin, RateLimitPlugin, RequestIdPlugin, SSEClient, SSEManager, SSEPlugin, SessionPlugin, StaticPlugin, TimeoutPlugin, UploadedFile, signJWT, verifyJWT } from './plugins/index.js';
4
- export { L as Logger } from './Logger-iEQNVVSc.js';
4
+ export { Logger } from './logger/index.js';
5
5
  export { DTOValidator, ExternalSchema, HttpError, Schema, SchemaValidationResult, SchemaValidator, ValidationError, ValidationResult, clearCookieHeader, parseBody, parseCookies, parseQueryString, parseUrl, resolveIp, serializeCookie } from './utils/index.js';
6
6
  export { ConfigModule } from './config/index.js';
7
7
  export { LoggingMiddleware } from './middleware/index.js';
@@ -21,5 +21,6 @@ declare class Logger {
21
21
  banner(port: number, host: string): void;
22
22
  setLevel(level: LogLevel): void;
23
23
  }
24
+ declare const logger: Logger;
24
25
 
25
- export { Logger as L };
26
+ export { Logger, logger };
@@ -21,5 +21,6 @@ declare class Logger {
21
21
  banner(port: number, host: string): void;
22
22
  setLevel(level: LogLevel): void;
23
23
  }
24
+ declare const logger: Logger;
24
25
 
25
- export { Logger as L };
26
+ export { Logger, logger };
@@ -0,0 +1,123 @@
1
+ 'use strict';
2
+
3
+ // src/utils/Logger.ts
4
+ var LEVEL_PRIORITY = {
5
+ debug: 0,
6
+ info: 1,
7
+ warn: 2,
8
+ error: 3,
9
+ silent: 4
10
+ };
11
+ var COLORS = {
12
+ reset: "\x1B[0m",
13
+ bold: "\x1B[1m",
14
+ dim: "\x1B[2m",
15
+ red: "\x1B[31m",
16
+ green: "\x1B[32m",
17
+ yellow: "\x1B[33m",
18
+ blue: "\x1B[34m",
19
+ magenta: "\x1B[35m",
20
+ cyan: "\x1B[36m",
21
+ white: "\x1B[37m",
22
+ gray: "\x1B[90m"};
23
+ var METHOD_COLORS = {
24
+ GET: COLORS.green,
25
+ POST: COLORS.blue,
26
+ PUT: COLORS.yellow,
27
+ DELETE: COLORS.red,
28
+ PATCH: COLORS.magenta,
29
+ HEAD: COLORS.cyan,
30
+ OPTIONS: COLORS.gray
31
+ };
32
+ function statusColor(code) {
33
+ if (code < 200) return COLORS.gray;
34
+ if (code < 300) return COLORS.green;
35
+ if (code < 400) return COLORS.cyan;
36
+ if (code < 500) return COLORS.yellow;
37
+ return COLORS.red;
38
+ }
39
+ function formatDuration(ns) {
40
+ const us = Number(ns) / 1e3;
41
+ if (us < 1e3) return `${us.toFixed(0)}\xB5s`;
42
+ const ms = us / 1e3;
43
+ if (ms < 1e3) return `${ms.toFixed(1)}ms`;
44
+ return `${(ms / 1e3).toFixed(2)}s`;
45
+ }
46
+ var Logger = class {
47
+ level;
48
+ useColors;
49
+ showTimestamp;
50
+ prefix;
51
+ constructor(options = {}) {
52
+ this.level = options.level ?? "info";
53
+ this.useColors = options.colors ?? process.stdout.isTTY !== false;
54
+ this.showTimestamp = options.timestamp ?? true;
55
+ this.prefix = options.prefix ?? "azura";
56
+ }
57
+ shouldLog(level) {
58
+ return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[this.level];
59
+ }
60
+ timestamp() {
61
+ if (!this.showTimestamp) return "";
62
+ const now = /* @__PURE__ */ new Date();
63
+ return `${COLORS.gray}${now.toISOString().slice(11, 23)}${COLORS.reset} `;
64
+ }
65
+ tag(level) {
66
+ if (!this.useColors) return `[${level.toUpperCase()}]`;
67
+ const colorMap = {
68
+ debug: COLORS.gray,
69
+ info: COLORS.blue,
70
+ warn: COLORS.yellow,
71
+ error: COLORS.red
72
+ };
73
+ return `${colorMap[level] ?? ""}[${level.toUpperCase()}]${COLORS.reset}`;
74
+ }
75
+ debug(message, ...args) {
76
+ if (!this.shouldLog("debug")) return;
77
+ console.debug(`${this.timestamp()}${this.tag("debug")} ${message}`, ...args);
78
+ }
79
+ info(message, ...args) {
80
+ if (!this.shouldLog("info")) return;
81
+ console.info(`${this.timestamp()}${this.tag("info")} ${message}`, ...args);
82
+ }
83
+ warn(message, ...args) {
84
+ if (!this.shouldLog("warn")) return;
85
+ console.warn(`${this.timestamp()}${this.tag("warn")} ${message}`, ...args);
86
+ }
87
+ error(message, ...args) {
88
+ if (!this.shouldLog("error")) return;
89
+ console.error(`${this.timestamp()}${this.tag("error")} ${message}`, ...args);
90
+ }
91
+ request(method, path, statusCode, duration) {
92
+ if (!this.shouldLog("info")) return;
93
+ const mc = this.useColors ? METHOD_COLORS[method] ?? COLORS.white : "";
94
+ const sc = this.useColors ? statusColor(statusCode) : "";
95
+ const r = this.useColors ? COLORS.reset : "";
96
+ const dur = formatDuration(duration);
97
+ console.info(
98
+ `${this.timestamp()}${mc}${method.padEnd(7)}${r} ${path} ${sc}${statusCode}${r} ${COLORS.dim}${dur}${r}`
99
+ );
100
+ }
101
+ banner(port, host) {
102
+ if (!this.shouldLog("info")) return;
103
+ const c = this.useColors;
104
+ const lines = [
105
+ "",
106
+ `${c ? COLORS.bold + COLORS.cyan : ""} \u26A1 AzuraJS v3.0.0${c ? COLORS.reset : ""}`,
107
+ "",
108
+ `${c ? COLORS.green : ""} \u279C Local: ${c ? COLORS.bold : ""}http://${host}:${port}/${c ? COLORS.reset : ""}`,
109
+ `${c ? COLORS.dim : ""} \u279C Press Ctrl+C to stop${c ? COLORS.reset : ""}`,
110
+ ""
111
+ ];
112
+ console.info(lines.join("\n"));
113
+ }
114
+ setLevel(level) {
115
+ this.level = level;
116
+ }
117
+ };
118
+ var logger = new Logger();
119
+
120
+ exports.Logger = Logger;
121
+ exports.logger = logger;
122
+ //# sourceMappingURL=index.js.map
123
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"silent\";\r\n\r\nconst LEVEL_PRIORITY: Record<LogLevel, number> = {\r\n debug: 0,\r\n info: 1,\r\n warn: 2,\r\n error: 3,\r\n silent: 4,\r\n};\r\n\r\nconst COLORS = {\r\n reset: \"\\x1b[0m\",\r\n bold: \"\\x1b[1m\",\r\n dim: \"\\x1b[2m\",\r\n red: \"\\x1b[31m\",\r\n green: \"\\x1b[32m\",\r\n yellow: \"\\x1b[33m\",\r\n blue: \"\\x1b[34m\",\r\n magenta: \"\\x1b[35m\",\r\n cyan: \"\\x1b[36m\",\r\n white: \"\\x1b[37m\",\r\n gray: \"\\x1b[90m\",\r\n bgRed: \"\\x1b[41m\",\r\n bgGreen: \"\\x1b[42m\",\r\n bgYellow: \"\\x1b[43m\",\r\n bgBlue: \"\\x1b[44m\",\r\n} as const;\r\n\r\nconst METHOD_COLORS: Record<string, string> = {\r\n GET: COLORS.green,\r\n POST: COLORS.blue,\r\n PUT: COLORS.yellow,\r\n DELETE: COLORS.red,\r\n PATCH: COLORS.magenta,\r\n HEAD: COLORS.cyan,\r\n OPTIONS: COLORS.gray,\r\n};\r\n\r\nfunction statusColor(code: number): string {\r\n if (code < 200) return COLORS.gray;\r\n if (code < 300) return COLORS.green;\r\n if (code < 400) return COLORS.cyan;\r\n if (code < 500) return COLORS.yellow;\r\n return COLORS.red;\r\n}\r\n\r\nfunction formatDuration(ns: bigint): string {\r\n const us = Number(ns) / 1_000;\r\n if (us < 1_000) return `${us.toFixed(0)}µs`;\r\n const ms = us / 1_000;\r\n if (ms < 1_000) return `${ms.toFixed(1)}ms`;\r\n return `${(ms / 1_000).toFixed(2)}s`;\r\n}\r\n\r\nexport class Logger {\r\n private level: LogLevel;\r\n private useColors: boolean;\r\n private showTimestamp: boolean;\r\n private prefix: string;\r\n\r\n constructor(options: {\r\n level?: LogLevel;\r\n colors?: boolean;\r\n timestamp?: boolean;\r\n prefix?: string;\r\n } = {}) {\r\n this.level = options.level ?? \"info\";\r\n this.useColors = options.colors ?? process.stdout.isTTY !== false;\r\n this.showTimestamp = options.timestamp ?? true;\r\n this.prefix = options.prefix ?? \"azura\";\r\n }\r\n\r\n private shouldLog(level: LogLevel): boolean {\r\n return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[this.level];\r\n }\r\n\r\n private timestamp(): string {\r\n if (!this.showTimestamp) return \"\";\r\n const now = new Date();\r\n return `${COLORS.gray}${now.toISOString().slice(11, 23)}${COLORS.reset} `;\r\n }\r\n\r\n private tag(level: LogLevel): string {\r\n if (!this.useColors) return `[${level.toUpperCase()}]`;\r\n const colorMap: Record<string, string> = {\r\n debug: COLORS.gray,\r\n info: COLORS.blue,\r\n warn: COLORS.yellow,\r\n error: COLORS.red,\r\n };\r\n return `${colorMap[level] ?? \"\"}[${level.toUpperCase()}]${COLORS.reset}`;\r\n }\r\n\r\n debug(message: string, ...args: any[]): void {\r\n if (!this.shouldLog(\"debug\")) return;\r\n console.debug(`${this.timestamp()}${this.tag(\"debug\")} ${message}`, ...args);\r\n }\r\n\r\n info(message: string, ...args: any[]): void {\r\n if (!this.shouldLog(\"info\")) return;\r\n console.info(`${this.timestamp()}${this.tag(\"info\")} ${message}`, ...args);\r\n }\r\n\r\n warn(message: string, ...args: any[]): void {\r\n if (!this.shouldLog(\"warn\")) return;\r\n console.warn(`${this.timestamp()}${this.tag(\"warn\")} ${message}`, ...args);\r\n }\r\n\r\n error(message: string, ...args: any[]): void {\r\n if (!this.shouldLog(\"error\")) return;\r\n console.error(`${this.timestamp()}${this.tag(\"error\")} ${message}`, ...args);\r\n }\r\n\r\n request(method: string, path: string, statusCode: number, duration: bigint): void {\r\n if (!this.shouldLog(\"info\")) return;\r\n const mc = this.useColors ? METHOD_COLORS[method] ?? COLORS.white : \"\";\r\n const sc = this.useColors ? statusColor(statusCode) : \"\";\r\n const r = this.useColors ? COLORS.reset : \"\";\r\n const dur = formatDuration(duration);\r\n console.info(\r\n `${this.timestamp()}${mc}${method.padEnd(7)}${r} ${path} ${sc}${statusCode}${r} ${COLORS.dim}${dur}${r}`,\r\n );\r\n }\r\n\r\n banner(port: number, host: string): void {\r\n if (!this.shouldLog(\"info\")) return;\r\n const c = this.useColors;\r\n const lines = [\r\n \"\",\r\n `${c ? COLORS.bold + COLORS.cyan : \"\"} ⚡ AzuraJS v3.0.0${c ? COLORS.reset : \"\"}`,\r\n \"\",\r\n `${c ? COLORS.green : \"\"} ➜ Local: ${c ? COLORS.bold : \"\"}http://${host}:${port}/${c ? COLORS.reset : \"\"}`,\r\n `${c ? COLORS.dim : \"\"} ➜ Press Ctrl+C to stop${c ? COLORS.reset : \"\"}`,\r\n \"\",\r\n ];\r\n console.info(lines.join(\"\\n\"));\r\n }\r\n\r\n setLevel(level: LogLevel): void {\r\n this.level = level;\r\n }\r\n}\r\n\r\nexport const logger = new Logger();\r\n"]}
@@ -0,0 +1,120 @@
1
+ // src/utils/Logger.ts
2
+ var LEVEL_PRIORITY = {
3
+ debug: 0,
4
+ info: 1,
5
+ warn: 2,
6
+ error: 3,
7
+ silent: 4
8
+ };
9
+ var COLORS = {
10
+ reset: "\x1B[0m",
11
+ bold: "\x1B[1m",
12
+ dim: "\x1B[2m",
13
+ red: "\x1B[31m",
14
+ green: "\x1B[32m",
15
+ yellow: "\x1B[33m",
16
+ blue: "\x1B[34m",
17
+ magenta: "\x1B[35m",
18
+ cyan: "\x1B[36m",
19
+ white: "\x1B[37m",
20
+ gray: "\x1B[90m"};
21
+ var METHOD_COLORS = {
22
+ GET: COLORS.green,
23
+ POST: COLORS.blue,
24
+ PUT: COLORS.yellow,
25
+ DELETE: COLORS.red,
26
+ PATCH: COLORS.magenta,
27
+ HEAD: COLORS.cyan,
28
+ OPTIONS: COLORS.gray
29
+ };
30
+ function statusColor(code) {
31
+ if (code < 200) return COLORS.gray;
32
+ if (code < 300) return COLORS.green;
33
+ if (code < 400) return COLORS.cyan;
34
+ if (code < 500) return COLORS.yellow;
35
+ return COLORS.red;
36
+ }
37
+ function formatDuration(ns) {
38
+ const us = Number(ns) / 1e3;
39
+ if (us < 1e3) return `${us.toFixed(0)}\xB5s`;
40
+ const ms = us / 1e3;
41
+ if (ms < 1e3) return `${ms.toFixed(1)}ms`;
42
+ return `${(ms / 1e3).toFixed(2)}s`;
43
+ }
44
+ var Logger = class {
45
+ level;
46
+ useColors;
47
+ showTimestamp;
48
+ prefix;
49
+ constructor(options = {}) {
50
+ this.level = options.level ?? "info";
51
+ this.useColors = options.colors ?? process.stdout.isTTY !== false;
52
+ this.showTimestamp = options.timestamp ?? true;
53
+ this.prefix = options.prefix ?? "azura";
54
+ }
55
+ shouldLog(level) {
56
+ return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[this.level];
57
+ }
58
+ timestamp() {
59
+ if (!this.showTimestamp) return "";
60
+ const now = /* @__PURE__ */ new Date();
61
+ return `${COLORS.gray}${now.toISOString().slice(11, 23)}${COLORS.reset} `;
62
+ }
63
+ tag(level) {
64
+ if (!this.useColors) return `[${level.toUpperCase()}]`;
65
+ const colorMap = {
66
+ debug: COLORS.gray,
67
+ info: COLORS.blue,
68
+ warn: COLORS.yellow,
69
+ error: COLORS.red
70
+ };
71
+ return `${colorMap[level] ?? ""}[${level.toUpperCase()}]${COLORS.reset}`;
72
+ }
73
+ debug(message, ...args) {
74
+ if (!this.shouldLog("debug")) return;
75
+ console.debug(`${this.timestamp()}${this.tag("debug")} ${message}`, ...args);
76
+ }
77
+ info(message, ...args) {
78
+ if (!this.shouldLog("info")) return;
79
+ console.info(`${this.timestamp()}${this.tag("info")} ${message}`, ...args);
80
+ }
81
+ warn(message, ...args) {
82
+ if (!this.shouldLog("warn")) return;
83
+ console.warn(`${this.timestamp()}${this.tag("warn")} ${message}`, ...args);
84
+ }
85
+ error(message, ...args) {
86
+ if (!this.shouldLog("error")) return;
87
+ console.error(`${this.timestamp()}${this.tag("error")} ${message}`, ...args);
88
+ }
89
+ request(method, path, statusCode, duration) {
90
+ if (!this.shouldLog("info")) return;
91
+ const mc = this.useColors ? METHOD_COLORS[method] ?? COLORS.white : "";
92
+ const sc = this.useColors ? statusColor(statusCode) : "";
93
+ const r = this.useColors ? COLORS.reset : "";
94
+ const dur = formatDuration(duration);
95
+ console.info(
96
+ `${this.timestamp()}${mc}${method.padEnd(7)}${r} ${path} ${sc}${statusCode}${r} ${COLORS.dim}${dur}${r}`
97
+ );
98
+ }
99
+ banner(port, host) {
100
+ if (!this.shouldLog("info")) return;
101
+ const c = this.useColors;
102
+ const lines = [
103
+ "",
104
+ `${c ? COLORS.bold + COLORS.cyan : ""} \u26A1 AzuraJS v3.0.0${c ? COLORS.reset : ""}`,
105
+ "",
106
+ `${c ? COLORS.green : ""} \u279C Local: ${c ? COLORS.bold : ""}http://${host}:${port}/${c ? COLORS.reset : ""}`,
107
+ `${c ? COLORS.dim : ""} \u279C Press Ctrl+C to stop${c ? COLORS.reset : ""}`,
108
+ ""
109
+ ];
110
+ console.info(lines.join("\n"));
111
+ }
112
+ setLevel(level) {
113
+ this.level = level;
114
+ }
115
+ };
116
+ var logger = new Logger();
117
+
118
+ export { Logger, logger };
119
+ //# sourceMappingURL=index.mjs.map
120
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"silent\";\r\n\r\nconst LEVEL_PRIORITY: Record<LogLevel, number> = {\r\n debug: 0,\r\n info: 1,\r\n warn: 2,\r\n error: 3,\r\n silent: 4,\r\n};\r\n\r\nconst COLORS = {\r\n reset: \"\\x1b[0m\",\r\n bold: \"\\x1b[1m\",\r\n dim: \"\\x1b[2m\",\r\n red: \"\\x1b[31m\",\r\n green: \"\\x1b[32m\",\r\n yellow: \"\\x1b[33m\",\r\n blue: \"\\x1b[34m\",\r\n magenta: \"\\x1b[35m\",\r\n cyan: \"\\x1b[36m\",\r\n white: \"\\x1b[37m\",\r\n gray: \"\\x1b[90m\",\r\n bgRed: \"\\x1b[41m\",\r\n bgGreen: \"\\x1b[42m\",\r\n bgYellow: \"\\x1b[43m\",\r\n bgBlue: \"\\x1b[44m\",\r\n} as const;\r\n\r\nconst METHOD_COLORS: Record<string, string> = {\r\n GET: COLORS.green,\r\n POST: COLORS.blue,\r\n PUT: COLORS.yellow,\r\n DELETE: COLORS.red,\r\n PATCH: COLORS.magenta,\r\n HEAD: COLORS.cyan,\r\n OPTIONS: COLORS.gray,\r\n};\r\n\r\nfunction statusColor(code: number): string {\r\n if (code < 200) return COLORS.gray;\r\n if (code < 300) return COLORS.green;\r\n if (code < 400) return COLORS.cyan;\r\n if (code < 500) return COLORS.yellow;\r\n return COLORS.red;\r\n}\r\n\r\nfunction formatDuration(ns: bigint): string {\r\n const us = Number(ns) / 1_000;\r\n if (us < 1_000) return `${us.toFixed(0)}µs`;\r\n const ms = us / 1_000;\r\n if (ms < 1_000) return `${ms.toFixed(1)}ms`;\r\n return `${(ms / 1_000).toFixed(2)}s`;\r\n}\r\n\r\nexport class Logger {\r\n private level: LogLevel;\r\n private useColors: boolean;\r\n private showTimestamp: boolean;\r\n private prefix: string;\r\n\r\n constructor(options: {\r\n level?: LogLevel;\r\n colors?: boolean;\r\n timestamp?: boolean;\r\n prefix?: string;\r\n } = {}) {\r\n this.level = options.level ?? \"info\";\r\n this.useColors = options.colors ?? process.stdout.isTTY !== false;\r\n this.showTimestamp = options.timestamp ?? true;\r\n this.prefix = options.prefix ?? \"azura\";\r\n }\r\n\r\n private shouldLog(level: LogLevel): boolean {\r\n return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[this.level];\r\n }\r\n\r\n private timestamp(): string {\r\n if (!this.showTimestamp) return \"\";\r\n const now = new Date();\r\n return `${COLORS.gray}${now.toISOString().slice(11, 23)}${COLORS.reset} `;\r\n }\r\n\r\n private tag(level: LogLevel): string {\r\n if (!this.useColors) return `[${level.toUpperCase()}]`;\r\n const colorMap: Record<string, string> = {\r\n debug: COLORS.gray,\r\n info: COLORS.blue,\r\n warn: COLORS.yellow,\r\n error: COLORS.red,\r\n };\r\n return `${colorMap[level] ?? \"\"}[${level.toUpperCase()}]${COLORS.reset}`;\r\n }\r\n\r\n debug(message: string, ...args: any[]): void {\r\n if (!this.shouldLog(\"debug\")) return;\r\n console.debug(`${this.timestamp()}${this.tag(\"debug\")} ${message}`, ...args);\r\n }\r\n\r\n info(message: string, ...args: any[]): void {\r\n if (!this.shouldLog(\"info\")) return;\r\n console.info(`${this.timestamp()}${this.tag(\"info\")} ${message}`, ...args);\r\n }\r\n\r\n warn(message: string, ...args: any[]): void {\r\n if (!this.shouldLog(\"warn\")) return;\r\n console.warn(`${this.timestamp()}${this.tag(\"warn\")} ${message}`, ...args);\r\n }\r\n\r\n error(message: string, ...args: any[]): void {\r\n if (!this.shouldLog(\"error\")) return;\r\n console.error(`${this.timestamp()}${this.tag(\"error\")} ${message}`, ...args);\r\n }\r\n\r\n request(method: string, path: string, statusCode: number, duration: bigint): void {\r\n if (!this.shouldLog(\"info\")) return;\r\n const mc = this.useColors ? METHOD_COLORS[method] ?? COLORS.white : \"\";\r\n const sc = this.useColors ? statusColor(statusCode) : \"\";\r\n const r = this.useColors ? COLORS.reset : \"\";\r\n const dur = formatDuration(duration);\r\n console.info(\r\n `${this.timestamp()}${mc}${method.padEnd(7)}${r} ${path} ${sc}${statusCode}${r} ${COLORS.dim}${dur}${r}`,\r\n );\r\n }\r\n\r\n banner(port: number, host: string): void {\r\n if (!this.shouldLog(\"info\")) return;\r\n const c = this.useColors;\r\n const lines = [\r\n \"\",\r\n `${c ? COLORS.bold + COLORS.cyan : \"\"} ⚡ AzuraJS v3.0.0${c ? COLORS.reset : \"\"}`,\r\n \"\",\r\n `${c ? COLORS.green : \"\"} ➜ Local: ${c ? COLORS.bold : \"\"}http://${host}:${port}/${c ? COLORS.reset : \"\"}`,\r\n `${c ? COLORS.dim : \"\"} ➜ Press Ctrl+C to stop${c ? COLORS.reset : \"\"}`,\r\n \"\",\r\n ];\r\n console.info(lines.join(\"\\n\"));\r\n }\r\n\r\n setLevel(level: LogLevel): void {\r\n this.level = level;\r\n }\r\n}\r\n\r\nexport const logger = new Logger();\r\n"]}
@@ -1,4 +1,4 @@
1
- export { L as Logger } from '../Logger-iEQNVVSc.mjs';
1
+ export { Logger } from '../logger/index.mjs';
2
2
  import { IncomingMessage } from 'node:http';
3
3
  import { C as CookieOptions } from '../common.type-BhGCNyEm.mjs';
4
4
 
@@ -1,4 +1,4 @@
1
- export { L as Logger } from '../Logger-iEQNVVSc.js';
1
+ export { Logger } from '../logger/index.js';
2
2
  import { IncomingMessage } from 'node:http';
3
3
  import { C as CookieOptions } from '../common.type-BhGCNyEm.js';
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "azurajs",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "Ultra-fast TypeScript-first web framework for Node.js and Bun with decorator-based routing, zero dependencies, and built-in plugin system",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -70,6 +70,14 @@
70
70
  "require": "./dist/middleware/index.js",
71
71
  "default": "./dist/middleware/index.mjs"
72
72
  },
73
+ "./logger": {
74
+ "types": "./dist/logger/index.d.ts",
75
+ "bun": "./dist/logger/index.mjs",
76
+ "import": "./dist/logger/index.mjs",
77
+ "module": "./dist/logger/index.mjs",
78
+ "require": "./dist/logger/index.js",
79
+ "default": "./dist/logger/index.mjs"
80
+ },
73
81
  "./package.json": "./package.json"
74
82
  },
75
83
  "typesVersions": {
@@ -80,7 +88,8 @@
80
88
  "types": ["./dist/types/index.d.ts"],
81
89
  "utils": ["./dist/utils/index.d.ts"],
82
90
  "config": ["./dist/config/index.d.ts"],
83
- "middleware": ["./dist/middleware/index.d.ts"]
91
+ "middleware": ["./dist/middleware/index.d.ts"],
92
+ "logger": ["./dist/logger/index.d.ts"]
84
93
  }
85
94
  },
86
95
  "files": [
@@ -0,0 +1 @@
1
+ export { Logger, logger } from "../utils/Logger.js";