logixia 1.1.4 → 1.2.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/README.md +8 -0
- package/dist/{build-DIEB3doa.js → build-DOx-YxF1.js} +1 -1
- package/dist/{build-DIEB3doa.js.map → build-DOx-YxF1.js.map} +1 -1
- package/dist/{build-MmD3T4bV.mjs → build-DWmxA6A2.mjs} +1 -1
- package/dist/{build-MmD3T4bV.mjs.map → build-DWmxA6A2.mjs.map} +1 -1
- package/dist/{esm-BRY8ugtK.mjs → esm-1Ra90uql.mjs} +1 -1
- package/dist/{esm-BRY8ugtK.mjs.map → esm-1Ra90uql.mjs.map} +1 -1
- package/dist/{esm-CzjF801-.js → esm-FNhqFIqG.js} +1 -1
- package/dist/{esm-CzjF801-.js.map → esm-FNhqFIqG.js.map} +1 -1
- package/dist/index-BDRSTjUt.d.ts +247 -0
- package/dist/index-BDRSTjUt.d.ts.map +1 -0
- package/dist/index-Drrzn-Yg.d.mts +247 -0
- package/dist/index-Drrzn-Yg.d.mts.map +1 -0
- package/dist/index.d.mts +4 -1311
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +4 -1311
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +177 -13898
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +135 -13841
- package/dist/index.mjs.map +1 -1
- package/dist/{lib-BNWFXK2z.mjs → lib-8XKCHDOH.mjs} +1 -1
- package/dist/{lib-BNWFXK2z.mjs.map → lib-8XKCHDOH.mjs.map} +1 -1
- package/dist/{lib-Bb_wxP5g.js → lib-BNEYXXTQ.js} +1 -1
- package/dist/{lib-Bb_wxP5g.js.map → lib-BNEYXXTQ.js.map} +1 -1
- package/dist/logitron-logger.module-CY3t8yK6.d.mts +279 -0
- package/dist/logitron-logger.module-CY3t8yK6.d.mts.map +1 -0
- package/dist/logitron-logger.module-DgEldK9V.d.ts +279 -0
- package/dist/logitron-logger.module-DgEldK9V.d.ts.map +1 -0
- package/dist/logitron-logger.module-X6nGDVGC.js +10484 -0
- package/dist/logitron-logger.module-X6nGDVGC.js.map +1 -0
- package/dist/logitron-logger.module-iO8DPE7_.mjs +10307 -0
- package/dist/logitron-logger.module-iO8DPE7_.mjs.map +1 -0
- package/dist/nest.d.mts +63 -0
- package/dist/nest.d.mts.map +1 -0
- package/dist/nest.d.ts +63 -0
- package/dist/nest.d.ts.map +1 -0
- package/dist/nest.js +127 -0
- package/dist/nest.js.map +1 -0
- package/dist/nest.mjs +95 -0
- package/dist/nest.mjs.map +1 -0
- package/dist/{promise-O6_ARWpI.mjs → promise-C4pQPcK4.mjs} +1 -1
- package/dist/{promise-O6_ARWpI.mjs.map → promise-C4pQPcK4.mjs.map} +1 -1
- package/dist/{promise-DWsrbKAX.js → promise-DaiZ2BaH.js} +1 -1
- package/dist/{promise-DWsrbKAX.js.map → promise-DaiZ2BaH.js.map} +1 -1
- package/dist/search-1txemGPh.mjs +1 -0
- package/dist/search-Cg_OasF-.d.ts +1 -0
- package/dist/search-DanSf_yc.d.mts +1 -0
- package/dist/search-DeZHhWxB.js +0 -0
- package/dist/search.d.mts +1 -0
- package/dist/search.d.ts +1 -0
- package/dist/search.js +1 -0
- package/dist/search.mjs +3 -0
- package/dist/{sqlite3-DWYzFy5X.js → sqlite3-CSkpjC90.js} +1 -1
- package/dist/{sqlite3-DWYzFy5X.js.map → sqlite3-CSkpjC90.js.map} +1 -1
- package/dist/{sqlite3-BUpkBlte.mjs → sqlite3-DD2_nRRH.mjs} +1 -1
- package/dist/{sqlite3-BUpkBlte.mjs.map → sqlite3-DD2_nRRH.mjs.map} +1 -1
- package/dist/transport.manager-C3Xr7Tvi.js +1925 -0
- package/dist/transport.manager-C3Xr7Tvi.js.map +1 -0
- package/dist/transport.manager-Vi__pagn.mjs +1849 -0
- package/dist/transport.manager-Vi__pagn.mjs.map +1 -0
- package/dist/transports.d.mts +409 -0
- package/dist/transports.d.mts.map +1 -0
- package/dist/transports.d.ts +409 -0
- package/dist/transports.d.ts.map +1 -0
- package/dist/transports.js +11 -0
- package/dist/transports.mjs +3 -0
- package/package.json +19 -3
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
//#region src/types/http.types.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* HTTP-related type definitions for Logitron
|
|
4
|
+
*/
|
|
5
|
+
interface HttpRequest {
|
|
6
|
+
method: string;
|
|
7
|
+
url: string;
|
|
8
|
+
headers: Record<string, string | string[]>;
|
|
9
|
+
query?: Record<string, unknown>;
|
|
10
|
+
params?: Record<string, unknown>;
|
|
11
|
+
body?: unknown;
|
|
12
|
+
ip?: string;
|
|
13
|
+
userAgent?: string;
|
|
14
|
+
timestamp: number;
|
|
15
|
+
}
|
|
16
|
+
interface HttpResponse {
|
|
17
|
+
statusCode: number;
|
|
18
|
+
headers: Record<string, string | string[]>;
|
|
19
|
+
body?: unknown;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
contentLength?: number;
|
|
22
|
+
}
|
|
23
|
+
interface HttpError extends Error {
|
|
24
|
+
statusCode?: number;
|
|
25
|
+
code?: string;
|
|
26
|
+
details?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
interface RequestTiming {
|
|
29
|
+
start: number;
|
|
30
|
+
end?: number;
|
|
31
|
+
duration?: number;
|
|
32
|
+
phases?: {
|
|
33
|
+
dns?: number;
|
|
34
|
+
tcp?: number;
|
|
35
|
+
tls?: number;
|
|
36
|
+
request?: number;
|
|
37
|
+
response?: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
interface RequestMetrics {
|
|
41
|
+
requestId: string;
|
|
42
|
+
method: string;
|
|
43
|
+
url: string;
|
|
44
|
+
statusCode?: number;
|
|
45
|
+
duration?: number;
|
|
46
|
+
contentLength?: number;
|
|
47
|
+
userAgent?: string;
|
|
48
|
+
ip?: string;
|
|
49
|
+
timestamp: number;
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region src/types/index.d.ts
|
|
53
|
+
declare const LogLevel: {
|
|
54
|
+
readonly ERROR: "error";
|
|
55
|
+
readonly WARN: "warn";
|
|
56
|
+
readonly INFO: "info";
|
|
57
|
+
readonly DEBUG: "debug";
|
|
58
|
+
readonly TRACE: "trace";
|
|
59
|
+
readonly VERBOSE: "verbose";
|
|
60
|
+
};
|
|
61
|
+
type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];
|
|
62
|
+
type LogLevelString = LogLevel | (string & {});
|
|
63
|
+
type LogColor = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray' | 'grey' | 'brightRed' | 'brightGreen' | 'brightYellow' | 'brightBlue' | 'brightMagenta' | 'brightCyan' | 'brightWhite';
|
|
64
|
+
type LogFieldKey = 'timestamp' | 'level' | 'appName' | 'service' | 'traceId' | 'message' | 'payload' | 'timeTaken' | 'context' | 'requestId' | 'userId' | 'sessionId' | 'environment';
|
|
65
|
+
type Environment = 'development' | 'production';
|
|
66
|
+
interface TraceIdExtractorConfig {
|
|
67
|
+
header?: string | string[];
|
|
68
|
+
query?: string | string[];
|
|
69
|
+
body?: string | string[];
|
|
70
|
+
params?: string | string[];
|
|
71
|
+
}
|
|
72
|
+
interface TraceIdConfig {
|
|
73
|
+
enabled: boolean;
|
|
74
|
+
generator?: () => string;
|
|
75
|
+
contextKey?: string;
|
|
76
|
+
extractor?: TraceIdExtractorConfig;
|
|
77
|
+
}
|
|
78
|
+
interface RedactConfig {
|
|
79
|
+
/**
|
|
80
|
+
* Dot-notation field paths to redact. Supports `*` (one segment) and `**` (any depth).
|
|
81
|
+
* @example `['req.headers.authorization', '*.password', 'user.creditCard']`
|
|
82
|
+
*/
|
|
83
|
+
paths?: string[];
|
|
84
|
+
/**
|
|
85
|
+
* Regex patterns applied to string values — replaces matches with the censor string.
|
|
86
|
+
* @example `[/Bearer\s+\S+/gi, /sk-[a-z0-9]{32,}/gi]`
|
|
87
|
+
*/
|
|
88
|
+
patterns?: RegExp[];
|
|
89
|
+
/** Replacement value for redacted content. Default: `"[REDACTED]"` */
|
|
90
|
+
censor?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Per-namespace log level overrides.
|
|
94
|
+
* Keys are namespace patterns (dot-separated, `*` wildcard); values are log levels.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* namespaceLevels: {
|
|
99
|
+
* 'db.*': 'debug', // all db.* namespaces → DEBUG
|
|
100
|
+
* 'http.*': 'warn', // all http.* → WARN only
|
|
101
|
+
* 'payment': 'trace', // payment namespace → TRACE
|
|
102
|
+
* }
|
|
103
|
+
* ```
|
|
104
|
+
* ENV overrides: `LOGIXIA_LEVEL_DB=debug` maps to namespace `db`.
|
|
105
|
+
*/
|
|
106
|
+
type NamespaceLevels = Record<string, LogLevelString>;
|
|
107
|
+
interface GracefulShutdownConfig {
|
|
108
|
+
/** Auto-register SIGTERM/SIGINT handlers to flush this logger on exit. Default: false */
|
|
109
|
+
enabled: boolean;
|
|
110
|
+
/** Max ms to wait for transports to flush. Default: 5000 */
|
|
111
|
+
timeout?: number;
|
|
112
|
+
/** Signals to listen on. Default: ['SIGTERM', 'SIGINT'] */
|
|
113
|
+
signals?: NodeJS.Signals[];
|
|
114
|
+
}
|
|
115
|
+
interface LoggerConfig<TLevels extends Record<string, number> = Record<string, number>> {
|
|
116
|
+
appName?: string;
|
|
117
|
+
environment?: Environment;
|
|
118
|
+
traceId?: boolean | TraceIdConfig;
|
|
119
|
+
format?: {
|
|
120
|
+
timestamp?: boolean;
|
|
121
|
+
colorize?: boolean;
|
|
122
|
+
json?: boolean;
|
|
123
|
+
};
|
|
124
|
+
silent?: boolean;
|
|
125
|
+
levelOptions?: {
|
|
126
|
+
level?: keyof TLevels | LogLevelString;
|
|
127
|
+
levels?: TLevels;
|
|
128
|
+
colors?: Record<string, LogColor>;
|
|
129
|
+
} | undefined;
|
|
130
|
+
fields?: Partial<Record<LogFieldKey, string | boolean>>;
|
|
131
|
+
/**
|
|
132
|
+
* Built-in log redaction — masks sensitive fields before they reach any transport.
|
|
133
|
+
* @see RedactConfig
|
|
134
|
+
*/
|
|
135
|
+
redact?: RedactConfig;
|
|
136
|
+
/**
|
|
137
|
+
* Per-namespace log level overrides.
|
|
138
|
+
* A child logger's context is used as its namespace for matching.
|
|
139
|
+
* ENV vars `LOGIXIA_LEVEL_<NS>=<level>` also apply.
|
|
140
|
+
*/
|
|
141
|
+
namespaceLevels?: NamespaceLevels;
|
|
142
|
+
/**
|
|
143
|
+
* Automatically register SIGTERM/SIGINT handlers that flush all transports
|
|
144
|
+
* before the process exits — prevents losing the last N seconds of logs on
|
|
145
|
+
* deployments / restarts.
|
|
146
|
+
*/
|
|
147
|
+
gracefulShutdown?: boolean | GracefulShutdownConfig;
|
|
148
|
+
[key: string]: unknown;
|
|
149
|
+
}
|
|
150
|
+
interface IBaseLogger {
|
|
151
|
+
error(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
152
|
+
error(error: Error, data?: Record<string, unknown>): Promise<void>;
|
|
153
|
+
warn(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
154
|
+
info(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
155
|
+
debug(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
156
|
+
trace(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
157
|
+
verbose(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
158
|
+
logLevel(level: string, message: string, data?: Record<string, unknown>): Promise<void>;
|
|
159
|
+
time(label: string): void;
|
|
160
|
+
timeEnd(label: string): Promise<number | undefined>;
|
|
161
|
+
timeAsync<T>(label: string, fn: () => Promise<T>): Promise<T>;
|
|
162
|
+
setLevel(level: LogLevel | string): void;
|
|
163
|
+
getLevel(): string;
|
|
164
|
+
setContext(context: string): void;
|
|
165
|
+
getContext(): string | undefined;
|
|
166
|
+
enableField(fieldName: string): void;
|
|
167
|
+
disableField(fieldName: string): void;
|
|
168
|
+
isFieldEnabled(fieldName: string): boolean;
|
|
169
|
+
getFieldState(): Record<string, boolean>;
|
|
170
|
+
resetFieldState(): void;
|
|
171
|
+
enableTransportLevelPrompting(): void;
|
|
172
|
+
disableTransportLevelPrompting(): void;
|
|
173
|
+
setTransportLevels(transportId: string, levels: string[]): void;
|
|
174
|
+
getTransportLevels(transportId: string): string[] | undefined;
|
|
175
|
+
clearTransportLevelPreferences(): void;
|
|
176
|
+
getAvailableTransports(): string[];
|
|
177
|
+
child(context: string, data?: Record<string, unknown>): ILogger;
|
|
178
|
+
close(): Promise<void>;
|
|
179
|
+
}
|
|
180
|
+
type CustomLevelMethods<T extends Record<string, number>> = { [K in keyof T]: (message: string, data?: Record<string, unknown>) => Promise<void> };
|
|
181
|
+
type ILogger<TLevels extends Record<string, number> = {}> = IBaseLogger & CustomLevelMethods<TLevels>;
|
|
182
|
+
interface ILoggerDefault extends IBaseLogger {}
|
|
183
|
+
type LoggerWithLevels<T extends LoggerConfig<any>> = T['levelOptions'] extends {
|
|
184
|
+
levels: infer L;
|
|
185
|
+
} ? L extends Record<string, number> ? ILogger<L> : ILoggerDefault : ILoggerDefault;
|
|
186
|
+
type ExtractLevels<T> = T extends LoggerConfig<infer L> ? L : Record<string, number>;
|
|
187
|
+
interface LogEntry {
|
|
188
|
+
timestamp: string;
|
|
189
|
+
level: string;
|
|
190
|
+
appName: string;
|
|
191
|
+
environment?: string;
|
|
192
|
+
traceId?: string;
|
|
193
|
+
message: string;
|
|
194
|
+
payload?: Record<string, unknown>;
|
|
195
|
+
context?: string;
|
|
196
|
+
error?: Error;
|
|
197
|
+
}
|
|
198
|
+
interface ErrorSerializationOptions {
|
|
199
|
+
includeStack?: boolean;
|
|
200
|
+
maxDepth?: number;
|
|
201
|
+
excludeFields?: string[];
|
|
202
|
+
}
|
|
203
|
+
interface TimingEntry {
|
|
204
|
+
label: string;
|
|
205
|
+
startTime: number;
|
|
206
|
+
endTime?: number;
|
|
207
|
+
duration?: number;
|
|
208
|
+
}
|
|
209
|
+
interface ContextData {
|
|
210
|
+
[key: string]: unknown;
|
|
211
|
+
}
|
|
212
|
+
interface ILogFormatter {
|
|
213
|
+
format(entry: LogEntry): string;
|
|
214
|
+
}
|
|
215
|
+
interface RequestContext {
|
|
216
|
+
requestId: string;
|
|
217
|
+
traceId?: string;
|
|
218
|
+
startTime: number;
|
|
219
|
+
endTime?: number;
|
|
220
|
+
duration?: number;
|
|
221
|
+
request: HttpRequest;
|
|
222
|
+
response?: HttpResponse;
|
|
223
|
+
error?: Error;
|
|
224
|
+
userId?: string;
|
|
225
|
+
sessionId?: string;
|
|
226
|
+
userAgent?: string;
|
|
227
|
+
ip?: string;
|
|
228
|
+
}
|
|
229
|
+
declare const DEFAULT_LOG_LEVELS: {
|
|
230
|
+
error: number;
|
|
231
|
+
warn: number;
|
|
232
|
+
info: number;
|
|
233
|
+
debug: number;
|
|
234
|
+
trace: number;
|
|
235
|
+
verbose: number;
|
|
236
|
+
};
|
|
237
|
+
declare const DEFAULT_LOG_COLORS: {
|
|
238
|
+
error: string;
|
|
239
|
+
warn: string;
|
|
240
|
+
info: string;
|
|
241
|
+
debug: string;
|
|
242
|
+
trace: string;
|
|
243
|
+
verbose: string;
|
|
244
|
+
};
|
|
245
|
+
//#endregion
|
|
246
|
+
export { RequestTiming as A, TimingEntry as C, HttpRequest as D, HttpError as E, HttpResponse as O, RequestContext as S, TraceIdExtractorConfig as T, LogLevelString as _, Environment as a, NamespaceLevels as b, GracefulShutdownConfig as c, ILogger as d, ILoggerDefault as f, LogLevel as g, LogFieldKey as h, DEFAULT_LOG_LEVELS as i, RequestMetrics as k, IBaseLogger as l, LogEntry as m, CustomLevelMethods as n, ErrorSerializationOptions as o, LogColor as p, DEFAULT_LOG_COLORS as r, ExtractLevels as s, ContextData as t, ILogFormatter as u, LoggerConfig as v, TraceIdConfig as w, RedactConfig as x, LoggerWithLevels as y };
|
|
247
|
+
//# sourceMappingURL=index-BDRSTjUt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BDRSTjUt.d.ts","names":[],"sources":["../src/types/http.types.ts","../src/types/index.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
//#region src/types/http.types.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* HTTP-related type definitions for Logitron
|
|
4
|
+
*/
|
|
5
|
+
interface HttpRequest {
|
|
6
|
+
method: string;
|
|
7
|
+
url: string;
|
|
8
|
+
headers: Record<string, string | string[]>;
|
|
9
|
+
query?: Record<string, unknown>;
|
|
10
|
+
params?: Record<string, unknown>;
|
|
11
|
+
body?: unknown;
|
|
12
|
+
ip?: string;
|
|
13
|
+
userAgent?: string;
|
|
14
|
+
timestamp: number;
|
|
15
|
+
}
|
|
16
|
+
interface HttpResponse {
|
|
17
|
+
statusCode: number;
|
|
18
|
+
headers: Record<string, string | string[]>;
|
|
19
|
+
body?: unknown;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
contentLength?: number;
|
|
22
|
+
}
|
|
23
|
+
interface HttpError extends Error {
|
|
24
|
+
statusCode?: number;
|
|
25
|
+
code?: string;
|
|
26
|
+
details?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
interface RequestTiming {
|
|
29
|
+
start: number;
|
|
30
|
+
end?: number;
|
|
31
|
+
duration?: number;
|
|
32
|
+
phases?: {
|
|
33
|
+
dns?: number;
|
|
34
|
+
tcp?: number;
|
|
35
|
+
tls?: number;
|
|
36
|
+
request?: number;
|
|
37
|
+
response?: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
interface RequestMetrics {
|
|
41
|
+
requestId: string;
|
|
42
|
+
method: string;
|
|
43
|
+
url: string;
|
|
44
|
+
statusCode?: number;
|
|
45
|
+
duration?: number;
|
|
46
|
+
contentLength?: number;
|
|
47
|
+
userAgent?: string;
|
|
48
|
+
ip?: string;
|
|
49
|
+
timestamp: number;
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region src/types/index.d.ts
|
|
53
|
+
declare const LogLevel: {
|
|
54
|
+
readonly ERROR: "error";
|
|
55
|
+
readonly WARN: "warn";
|
|
56
|
+
readonly INFO: "info";
|
|
57
|
+
readonly DEBUG: "debug";
|
|
58
|
+
readonly TRACE: "trace";
|
|
59
|
+
readonly VERBOSE: "verbose";
|
|
60
|
+
};
|
|
61
|
+
type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];
|
|
62
|
+
type LogLevelString = LogLevel | (string & {});
|
|
63
|
+
type LogColor = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray' | 'grey' | 'brightRed' | 'brightGreen' | 'brightYellow' | 'brightBlue' | 'brightMagenta' | 'brightCyan' | 'brightWhite';
|
|
64
|
+
type LogFieldKey = 'timestamp' | 'level' | 'appName' | 'service' | 'traceId' | 'message' | 'payload' | 'timeTaken' | 'context' | 'requestId' | 'userId' | 'sessionId' | 'environment';
|
|
65
|
+
type Environment = 'development' | 'production';
|
|
66
|
+
interface TraceIdExtractorConfig {
|
|
67
|
+
header?: string | string[];
|
|
68
|
+
query?: string | string[];
|
|
69
|
+
body?: string | string[];
|
|
70
|
+
params?: string | string[];
|
|
71
|
+
}
|
|
72
|
+
interface TraceIdConfig {
|
|
73
|
+
enabled: boolean;
|
|
74
|
+
generator?: () => string;
|
|
75
|
+
contextKey?: string;
|
|
76
|
+
extractor?: TraceIdExtractorConfig;
|
|
77
|
+
}
|
|
78
|
+
interface RedactConfig {
|
|
79
|
+
/**
|
|
80
|
+
* Dot-notation field paths to redact. Supports `*` (one segment) and `**` (any depth).
|
|
81
|
+
* @example `['req.headers.authorization', '*.password', 'user.creditCard']`
|
|
82
|
+
*/
|
|
83
|
+
paths?: string[];
|
|
84
|
+
/**
|
|
85
|
+
* Regex patterns applied to string values — replaces matches with the censor string.
|
|
86
|
+
* @example `[/Bearer\s+\S+/gi, /sk-[a-z0-9]{32,}/gi]`
|
|
87
|
+
*/
|
|
88
|
+
patterns?: RegExp[];
|
|
89
|
+
/** Replacement value for redacted content. Default: `"[REDACTED]"` */
|
|
90
|
+
censor?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Per-namespace log level overrides.
|
|
94
|
+
* Keys are namespace patterns (dot-separated, `*` wildcard); values are log levels.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* namespaceLevels: {
|
|
99
|
+
* 'db.*': 'debug', // all db.* namespaces → DEBUG
|
|
100
|
+
* 'http.*': 'warn', // all http.* → WARN only
|
|
101
|
+
* 'payment': 'trace', // payment namespace → TRACE
|
|
102
|
+
* }
|
|
103
|
+
* ```
|
|
104
|
+
* ENV overrides: `LOGIXIA_LEVEL_DB=debug` maps to namespace `db`.
|
|
105
|
+
*/
|
|
106
|
+
type NamespaceLevels = Record<string, LogLevelString>;
|
|
107
|
+
interface GracefulShutdownConfig {
|
|
108
|
+
/** Auto-register SIGTERM/SIGINT handlers to flush this logger on exit. Default: false */
|
|
109
|
+
enabled: boolean;
|
|
110
|
+
/** Max ms to wait for transports to flush. Default: 5000 */
|
|
111
|
+
timeout?: number;
|
|
112
|
+
/** Signals to listen on. Default: ['SIGTERM', 'SIGINT'] */
|
|
113
|
+
signals?: NodeJS.Signals[];
|
|
114
|
+
}
|
|
115
|
+
interface LoggerConfig<TLevels extends Record<string, number> = Record<string, number>> {
|
|
116
|
+
appName?: string;
|
|
117
|
+
environment?: Environment;
|
|
118
|
+
traceId?: boolean | TraceIdConfig;
|
|
119
|
+
format?: {
|
|
120
|
+
timestamp?: boolean;
|
|
121
|
+
colorize?: boolean;
|
|
122
|
+
json?: boolean;
|
|
123
|
+
};
|
|
124
|
+
silent?: boolean;
|
|
125
|
+
levelOptions?: {
|
|
126
|
+
level?: keyof TLevels | LogLevelString;
|
|
127
|
+
levels?: TLevels;
|
|
128
|
+
colors?: Record<string, LogColor>;
|
|
129
|
+
} | undefined;
|
|
130
|
+
fields?: Partial<Record<LogFieldKey, string | boolean>>;
|
|
131
|
+
/**
|
|
132
|
+
* Built-in log redaction — masks sensitive fields before they reach any transport.
|
|
133
|
+
* @see RedactConfig
|
|
134
|
+
*/
|
|
135
|
+
redact?: RedactConfig;
|
|
136
|
+
/**
|
|
137
|
+
* Per-namespace log level overrides.
|
|
138
|
+
* A child logger's context is used as its namespace for matching.
|
|
139
|
+
* ENV vars `LOGIXIA_LEVEL_<NS>=<level>` also apply.
|
|
140
|
+
*/
|
|
141
|
+
namespaceLevels?: NamespaceLevels;
|
|
142
|
+
/**
|
|
143
|
+
* Automatically register SIGTERM/SIGINT handlers that flush all transports
|
|
144
|
+
* before the process exits — prevents losing the last N seconds of logs on
|
|
145
|
+
* deployments / restarts.
|
|
146
|
+
*/
|
|
147
|
+
gracefulShutdown?: boolean | GracefulShutdownConfig;
|
|
148
|
+
[key: string]: unknown;
|
|
149
|
+
}
|
|
150
|
+
interface IBaseLogger {
|
|
151
|
+
error(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
152
|
+
error(error: Error, data?: Record<string, unknown>): Promise<void>;
|
|
153
|
+
warn(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
154
|
+
info(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
155
|
+
debug(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
156
|
+
trace(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
157
|
+
verbose(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
158
|
+
logLevel(level: string, message: string, data?: Record<string, unknown>): Promise<void>;
|
|
159
|
+
time(label: string): void;
|
|
160
|
+
timeEnd(label: string): Promise<number | undefined>;
|
|
161
|
+
timeAsync<T>(label: string, fn: () => Promise<T>): Promise<T>;
|
|
162
|
+
setLevel(level: LogLevel | string): void;
|
|
163
|
+
getLevel(): string;
|
|
164
|
+
setContext(context: string): void;
|
|
165
|
+
getContext(): string | undefined;
|
|
166
|
+
enableField(fieldName: string): void;
|
|
167
|
+
disableField(fieldName: string): void;
|
|
168
|
+
isFieldEnabled(fieldName: string): boolean;
|
|
169
|
+
getFieldState(): Record<string, boolean>;
|
|
170
|
+
resetFieldState(): void;
|
|
171
|
+
enableTransportLevelPrompting(): void;
|
|
172
|
+
disableTransportLevelPrompting(): void;
|
|
173
|
+
setTransportLevels(transportId: string, levels: string[]): void;
|
|
174
|
+
getTransportLevels(transportId: string): string[] | undefined;
|
|
175
|
+
clearTransportLevelPreferences(): void;
|
|
176
|
+
getAvailableTransports(): string[];
|
|
177
|
+
child(context: string, data?: Record<string, unknown>): ILogger;
|
|
178
|
+
close(): Promise<void>;
|
|
179
|
+
}
|
|
180
|
+
type CustomLevelMethods<T extends Record<string, number>> = { [K in keyof T]: (message: string, data?: Record<string, unknown>) => Promise<void> };
|
|
181
|
+
type ILogger<TLevels extends Record<string, number> = {}> = IBaseLogger & CustomLevelMethods<TLevels>;
|
|
182
|
+
interface ILoggerDefault extends IBaseLogger {}
|
|
183
|
+
type LoggerWithLevels<T extends LoggerConfig<any>> = T['levelOptions'] extends {
|
|
184
|
+
levels: infer L;
|
|
185
|
+
} ? L extends Record<string, number> ? ILogger<L> : ILoggerDefault : ILoggerDefault;
|
|
186
|
+
type ExtractLevels<T> = T extends LoggerConfig<infer L> ? L : Record<string, number>;
|
|
187
|
+
interface LogEntry {
|
|
188
|
+
timestamp: string;
|
|
189
|
+
level: string;
|
|
190
|
+
appName: string;
|
|
191
|
+
environment?: string;
|
|
192
|
+
traceId?: string;
|
|
193
|
+
message: string;
|
|
194
|
+
payload?: Record<string, unknown>;
|
|
195
|
+
context?: string;
|
|
196
|
+
error?: Error;
|
|
197
|
+
}
|
|
198
|
+
interface ErrorSerializationOptions {
|
|
199
|
+
includeStack?: boolean;
|
|
200
|
+
maxDepth?: number;
|
|
201
|
+
excludeFields?: string[];
|
|
202
|
+
}
|
|
203
|
+
interface TimingEntry {
|
|
204
|
+
label: string;
|
|
205
|
+
startTime: number;
|
|
206
|
+
endTime?: number;
|
|
207
|
+
duration?: number;
|
|
208
|
+
}
|
|
209
|
+
interface ContextData {
|
|
210
|
+
[key: string]: unknown;
|
|
211
|
+
}
|
|
212
|
+
interface ILogFormatter {
|
|
213
|
+
format(entry: LogEntry): string;
|
|
214
|
+
}
|
|
215
|
+
interface RequestContext {
|
|
216
|
+
requestId: string;
|
|
217
|
+
traceId?: string;
|
|
218
|
+
startTime: number;
|
|
219
|
+
endTime?: number;
|
|
220
|
+
duration?: number;
|
|
221
|
+
request: HttpRequest;
|
|
222
|
+
response?: HttpResponse;
|
|
223
|
+
error?: Error;
|
|
224
|
+
userId?: string;
|
|
225
|
+
sessionId?: string;
|
|
226
|
+
userAgent?: string;
|
|
227
|
+
ip?: string;
|
|
228
|
+
}
|
|
229
|
+
declare const DEFAULT_LOG_LEVELS: {
|
|
230
|
+
error: number;
|
|
231
|
+
warn: number;
|
|
232
|
+
info: number;
|
|
233
|
+
debug: number;
|
|
234
|
+
trace: number;
|
|
235
|
+
verbose: number;
|
|
236
|
+
};
|
|
237
|
+
declare const DEFAULT_LOG_COLORS: {
|
|
238
|
+
error: string;
|
|
239
|
+
warn: string;
|
|
240
|
+
info: string;
|
|
241
|
+
debug: string;
|
|
242
|
+
trace: string;
|
|
243
|
+
verbose: string;
|
|
244
|
+
};
|
|
245
|
+
//#endregion
|
|
246
|
+
export { RequestTiming as A, TimingEntry as C, HttpRequest as D, HttpError as E, HttpResponse as O, RequestContext as S, TraceIdExtractorConfig as T, LogLevelString as _, Environment as a, NamespaceLevels as b, GracefulShutdownConfig as c, ILogger as d, ILoggerDefault as f, LogLevel as g, LogFieldKey as h, DEFAULT_LOG_LEVELS as i, RequestMetrics as k, IBaseLogger as l, LogEntry as m, CustomLevelMethods as n, ErrorSerializationOptions as o, LogColor as p, DEFAULT_LOG_COLORS as r, ExtractLevels as s, ContextData as t, ILogFormatter as u, LoggerConfig as v, TraceIdConfig as w, RedactConfig as x, LoggerWithLevels as y };
|
|
247
|
+
//# sourceMappingURL=index-Drrzn-Yg.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Drrzn-Yg.d.mts","names":[],"sources":["../src/types/http.types.ts","../src/types/index.ts"],"sourcesContent":[],"mappings":"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"}
|