rdapify 0.1.3 → 0.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/application/client/RDAPClient.d.ts +13 -0
- package/dist/application/client/RDAPClient.d.ts.map +1 -1
- package/dist/application/client/RDAPClient.js +40 -1
- package/dist/application/client/RDAPClient.js.map +1 -1
- package/dist/application/deduplication/QueryDeduplicator.d.ts +20 -0
- package/dist/application/deduplication/QueryDeduplicator.d.ts.map +1 -0
- package/dist/application/deduplication/QueryDeduplicator.js +46 -0
- package/dist/application/deduplication/QueryDeduplicator.js.map +1 -0
- package/dist/application/hooks/MiddlewareHooks.d.ts +48 -0
- package/dist/application/hooks/MiddlewareHooks.d.ts.map +1 -0
- package/dist/application/hooks/MiddlewareHooks.js +46 -0
- package/dist/application/hooks/MiddlewareHooks.js.map +1 -0
- package/dist/application/services/QueryOrchestrator.d.ts +11 -0
- package/dist/application/services/QueryOrchestrator.d.ts.map +1 -1
- package/dist/application/services/QueryOrchestrator.js +254 -38
- package/dist/application/services/QueryOrchestrator.js.map +1 -1
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +227 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/cache/CacheManager.d.ts.map +1 -1
- package/dist/infrastructure/cache/CacheManager.js +8 -1
- package/dist/infrastructure/cache/CacheManager.js.map +1 -1
- package/dist/infrastructure/cache/RedisCache.d.ts +35 -0
- package/dist/infrastructure/cache/RedisCache.d.ts.map +1 -0
- package/dist/infrastructure/cache/RedisCache.js +75 -0
- package/dist/infrastructure/cache/RedisCache.js.map +1 -0
- package/dist/infrastructure/cache/index.d.ts +1 -0
- package/dist/infrastructure/cache/index.d.ts.map +1 -1
- package/dist/infrastructure/cache/index.js +3 -1
- package/dist/infrastructure/cache/index.js.map +1 -1
- package/dist/infrastructure/http/Fetcher.d.ts +2 -0
- package/dist/infrastructure/http/Fetcher.d.ts.map +1 -1
- package/dist/infrastructure/http/Fetcher.js +5 -3
- package/dist/infrastructure/http/Fetcher.js.map +1 -1
- package/dist/infrastructure/logging/AuditLogger.d.ts +114 -0
- package/dist/infrastructure/logging/AuditLogger.d.ts.map +1 -0
- package/dist/infrastructure/logging/AuditLogger.js +195 -0
- package/dist/infrastructure/logging/AuditLogger.js.map +1 -0
- package/dist/infrastructure/logging/Logger.d.ts.map +1 -1
- package/dist/infrastructure/logging/Logger.js +29 -5
- package/dist/infrastructure/logging/Logger.js.map +1 -1
- package/dist/infrastructure/monitoring/MetricsCollector.d.ts +37 -0
- package/dist/infrastructure/monitoring/MetricsCollector.d.ts.map +1 -1
- package/dist/infrastructure/monitoring/MetricsCollector.js +179 -0
- package/dist/infrastructure/monitoring/MetricsCollector.js.map +1 -1
- package/dist/infrastructure/security/PIIRedactor.js +1 -1
- package/dist/infrastructure/security/PIIRedactor.js.map +1 -1
- package/dist/infrastructure/validation/ResponseValidator.d.ts +38 -0
- package/dist/infrastructure/validation/ResponseValidator.d.ts.map +1 -0
- package/dist/infrastructure/validation/ResponseValidator.js +200 -0
- package/dist/infrastructure/validation/ResponseValidator.js.map +1 -0
- package/dist/shared/errors/base.error.d.ts +8 -0
- package/dist/shared/errors/base.error.d.ts.map +1 -1
- package/dist/shared/errors/base.error.js +30 -1
- package/dist/shared/errors/base.error.js.map +1 -1
- package/dist/shared/types/options.d.ts +21 -2
- package/dist/shared/types/options.d.ts.map +1 -1
- package/dist/shared/types/options.js +6 -1
- package/dist/shared/types/options.js.map +1 -1
- package/dist/shared/utils/helpers/index.d.ts +1 -1
- package/dist/shared/utils/helpers/index.d.ts.map +1 -1
- package/dist/shared/utils/helpers/index.js +2 -1
- package/dist/shared/utils/helpers/index.js.map +1 -1
- package/dist/shared/utils/helpers/runtime.d.ts +1 -0
- package/dist/shared/utils/helpers/runtime.d.ts.map +1 -1
- package/dist/shared/utils/helpers/runtime.js +11 -1
- package/dist/shared/utils/helpers/runtime.js.map +1 -1
- package/dist/shared/utils/validators/config-validation.d.ts +3 -0
- package/dist/shared/utils/validators/config-validation.d.ts.map +1 -0
- package/dist/shared/utils/validators/config-validation.js +97 -0
- package/dist/shared/utils/validators/config-validation.js.map +1 -0
- package/dist/shared/utils/validators/index.d.ts +1 -0
- package/dist/shared/utils/validators/index.d.ts.map +1 -1
- package/dist/shared/utils/validators/index.js +3 -1
- package/dist/shared/utils/validators/index.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export type AuditEventType = 'QUERY_START' | 'QUERY_SUCCESS' | 'QUERY_FAILURE' | 'CACHE_HIT' | 'CACHE_MISS' | 'RATE_LIMIT_EXCEEDED' | 'SSRF_BLOCKED' | 'PII_REDACTED';
|
|
2
|
+
export interface AuditEvent {
|
|
3
|
+
id: string;
|
|
4
|
+
timestamp: string;
|
|
5
|
+
eventType: AuditEventType;
|
|
6
|
+
queryType: 'domain' | 'ip' | 'asn';
|
|
7
|
+
query: string;
|
|
8
|
+
normalizedQuery?: string;
|
|
9
|
+
success: boolean;
|
|
10
|
+
durationMs: number;
|
|
11
|
+
cached: boolean;
|
|
12
|
+
serverUrl?: string;
|
|
13
|
+
errorCode?: string;
|
|
14
|
+
errorMessage?: string;
|
|
15
|
+
requestHeaders?: Record<string, string>;
|
|
16
|
+
responseSize?: number;
|
|
17
|
+
sessionId?: string;
|
|
18
|
+
clientId?: string;
|
|
19
|
+
tags?: Record<string, string>;
|
|
20
|
+
}
|
|
21
|
+
export interface AuditLogAdapter {
|
|
22
|
+
write(event: AuditEvent): Promise<void> | void;
|
|
23
|
+
flush?(): Promise<void> | void;
|
|
24
|
+
}
|
|
25
|
+
export interface AuditLoggerOptions {
|
|
26
|
+
enabled?: boolean;
|
|
27
|
+
adapter?: AuditLogAdapter;
|
|
28
|
+
includeRequestHeaders?: boolean;
|
|
29
|
+
includeResponseSize?: boolean;
|
|
30
|
+
sensitiveFields?: string[];
|
|
31
|
+
sessionId?: string;
|
|
32
|
+
clientId?: string;
|
|
33
|
+
tags?: Record<string, string>;
|
|
34
|
+
retentionHours?: number;
|
|
35
|
+
}
|
|
36
|
+
export declare class InMemoryAuditAdapter implements AuditLogAdapter {
|
|
37
|
+
private events;
|
|
38
|
+
private readonly maxEvents;
|
|
39
|
+
private readonly retentionMs;
|
|
40
|
+
constructor(options?: {
|
|
41
|
+
maxEvents?: number;
|
|
42
|
+
retentionHours?: number;
|
|
43
|
+
});
|
|
44
|
+
write(event: AuditEvent): void;
|
|
45
|
+
getEvents(since?: string): AuditEvent[];
|
|
46
|
+
getEventsByType(type: AuditEventType): AuditEvent[];
|
|
47
|
+
clear(): void;
|
|
48
|
+
size(): number;
|
|
49
|
+
private evict;
|
|
50
|
+
}
|
|
51
|
+
export declare class FileAuditAdapter implements AuditLogAdapter {
|
|
52
|
+
private readonly filePath;
|
|
53
|
+
constructor(filePath: string);
|
|
54
|
+
write(event: AuditEvent): Promise<void>;
|
|
55
|
+
flush(): Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
export declare class AuditLogger {
|
|
58
|
+
private readonly enabled;
|
|
59
|
+
private readonly adapter;
|
|
60
|
+
private readonly includeRequestHeaders;
|
|
61
|
+
private readonly includeResponseSize;
|
|
62
|
+
private readonly sessionId?;
|
|
63
|
+
private readonly clientId?;
|
|
64
|
+
private readonly tags?;
|
|
65
|
+
private eventsLogged;
|
|
66
|
+
constructor(options?: AuditLoggerOptions);
|
|
67
|
+
log(event: Omit<AuditEvent, 'id' | 'timestamp'>): void;
|
|
68
|
+
logQueryStart(params: {
|
|
69
|
+
queryType: 'domain' | 'ip' | 'asn';
|
|
70
|
+
query: string;
|
|
71
|
+
sessionId?: string;
|
|
72
|
+
clientId?: string;
|
|
73
|
+
}): void;
|
|
74
|
+
logQuerySuccess(params: {
|
|
75
|
+
queryType: 'domain' | 'ip' | 'asn';
|
|
76
|
+
query: string;
|
|
77
|
+
normalizedQuery: string;
|
|
78
|
+
durationMs: number;
|
|
79
|
+
cached: boolean;
|
|
80
|
+
serverUrl?: string;
|
|
81
|
+
responseSize?: number;
|
|
82
|
+
}): void;
|
|
83
|
+
logQueryFailure(params: {
|
|
84
|
+
queryType: 'domain' | 'ip' | 'asn';
|
|
85
|
+
query: string;
|
|
86
|
+
durationMs: number;
|
|
87
|
+
errorCode: string;
|
|
88
|
+
errorMessage: string;
|
|
89
|
+
}): void;
|
|
90
|
+
logCacheHit(params: {
|
|
91
|
+
queryType: 'domain' | 'ip' | 'asn';
|
|
92
|
+
query: string;
|
|
93
|
+
}): void;
|
|
94
|
+
logRateLimitExceeded(params: {
|
|
95
|
+
queryType: 'domain' | 'ip' | 'asn';
|
|
96
|
+
query: string;
|
|
97
|
+
}): void;
|
|
98
|
+
logSSRFBlocked(params: {
|
|
99
|
+
url: string;
|
|
100
|
+
}): void;
|
|
101
|
+
logPIIRedacted(params: {
|
|
102
|
+
queryType: 'domain' | 'ip' | 'asn';
|
|
103
|
+
query: string;
|
|
104
|
+
fieldsRedacted: number;
|
|
105
|
+
}): void;
|
|
106
|
+
flush(): Promise<void>;
|
|
107
|
+
isEnabled(): boolean;
|
|
108
|
+
getStats(): {
|
|
109
|
+
enabled: boolean;
|
|
110
|
+
eventsLogged: number;
|
|
111
|
+
};
|
|
112
|
+
private generateId;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=AuditLogger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuditLogger.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/logging/AuditLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuditLogger = exports.FileAuditAdapter = exports.InMemoryAuditAdapter = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const fs = tslib_1.__importStar(require("fs/promises"));
|
|
6
|
+
class InMemoryAuditAdapter {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.events = [];
|
|
9
|
+
this.maxEvents = options?.maxEvents ?? 10000;
|
|
10
|
+
this.retentionMs = (options?.retentionHours ?? 24) * 60 * 60 * 1000;
|
|
11
|
+
}
|
|
12
|
+
write(event) {
|
|
13
|
+
this.evict();
|
|
14
|
+
this.events.push(event);
|
|
15
|
+
if (this.events.length > this.maxEvents) {
|
|
16
|
+
this.events = this.events.slice(-this.maxEvents);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
getEvents(since) {
|
|
20
|
+
if (!since) {
|
|
21
|
+
return [...this.events];
|
|
22
|
+
}
|
|
23
|
+
const sinceMs = new Date(since).getTime();
|
|
24
|
+
return this.events.filter((e) => new Date(e.timestamp).getTime() >= sinceMs);
|
|
25
|
+
}
|
|
26
|
+
getEventsByType(type) {
|
|
27
|
+
return this.events.filter((e) => e.eventType === type);
|
|
28
|
+
}
|
|
29
|
+
clear() {
|
|
30
|
+
this.events = [];
|
|
31
|
+
}
|
|
32
|
+
size() {
|
|
33
|
+
return this.events.length;
|
|
34
|
+
}
|
|
35
|
+
evict() {
|
|
36
|
+
const cutoff = Date.now() - this.retentionMs;
|
|
37
|
+
this.events = this.events.filter((e) => new Date(e.timestamp).getTime() >= cutoff);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.InMemoryAuditAdapter = InMemoryAuditAdapter;
|
|
41
|
+
class FileAuditAdapter {
|
|
42
|
+
constructor(filePath) {
|
|
43
|
+
this.filePath = filePath;
|
|
44
|
+
}
|
|
45
|
+
async write(event) {
|
|
46
|
+
const line = JSON.stringify(event) + '\n';
|
|
47
|
+
await fs.appendFile(this.filePath, line, 'utf8');
|
|
48
|
+
}
|
|
49
|
+
async flush() {
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.FileAuditAdapter = FileAuditAdapter;
|
|
53
|
+
class AuditLogger {
|
|
54
|
+
constructor(options) {
|
|
55
|
+
this.eventsLogged = 0;
|
|
56
|
+
this.enabled = options?.enabled ?? true;
|
|
57
|
+
this.adapter = options?.adapter ?? new InMemoryAuditAdapter({
|
|
58
|
+
retentionHours: options?.retentionHours ?? 24,
|
|
59
|
+
});
|
|
60
|
+
this.includeRequestHeaders = options?.includeRequestHeaders ?? false;
|
|
61
|
+
this.includeResponseSize = options?.includeResponseSize ?? false;
|
|
62
|
+
this.sessionId = options?.sessionId;
|
|
63
|
+
this.clientId = options?.clientId;
|
|
64
|
+
this.tags = options?.tags;
|
|
65
|
+
}
|
|
66
|
+
log(event) {
|
|
67
|
+
if (!this.enabled)
|
|
68
|
+
return;
|
|
69
|
+
const fullEvent = {
|
|
70
|
+
...event,
|
|
71
|
+
id: this.generateId(),
|
|
72
|
+
timestamp: new Date().toISOString(),
|
|
73
|
+
};
|
|
74
|
+
if (!this.includeRequestHeaders) {
|
|
75
|
+
delete fullEvent.requestHeaders;
|
|
76
|
+
}
|
|
77
|
+
if (!this.includeResponseSize) {
|
|
78
|
+
delete fullEvent.responseSize;
|
|
79
|
+
}
|
|
80
|
+
if (this.tags) {
|
|
81
|
+
fullEvent.tags = { ...this.tags, ...fullEvent.tags };
|
|
82
|
+
}
|
|
83
|
+
this.adapter.write(fullEvent);
|
|
84
|
+
this.eventsLogged++;
|
|
85
|
+
}
|
|
86
|
+
logQueryStart(params) {
|
|
87
|
+
this.log({
|
|
88
|
+
eventType: 'QUERY_START',
|
|
89
|
+
queryType: params.queryType,
|
|
90
|
+
query: params.query,
|
|
91
|
+
success: false,
|
|
92
|
+
durationMs: 0,
|
|
93
|
+
cached: false,
|
|
94
|
+
sessionId: params.sessionId ?? this.sessionId,
|
|
95
|
+
clientId: params.clientId ?? this.clientId,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
logQuerySuccess(params) {
|
|
99
|
+
this.log({
|
|
100
|
+
eventType: 'QUERY_SUCCESS',
|
|
101
|
+
queryType: params.queryType,
|
|
102
|
+
query: params.query,
|
|
103
|
+
normalizedQuery: params.normalizedQuery,
|
|
104
|
+
success: true,
|
|
105
|
+
durationMs: params.durationMs,
|
|
106
|
+
cached: params.cached,
|
|
107
|
+
serverUrl: params.serverUrl,
|
|
108
|
+
responseSize: this.includeResponseSize ? params.responseSize : undefined,
|
|
109
|
+
sessionId: this.sessionId,
|
|
110
|
+
clientId: this.clientId,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
logQueryFailure(params) {
|
|
114
|
+
this.log({
|
|
115
|
+
eventType: 'QUERY_FAILURE',
|
|
116
|
+
queryType: params.queryType,
|
|
117
|
+
query: params.query,
|
|
118
|
+
success: false,
|
|
119
|
+
durationMs: params.durationMs,
|
|
120
|
+
cached: false,
|
|
121
|
+
errorCode: params.errorCode,
|
|
122
|
+
errorMessage: params.errorMessage,
|
|
123
|
+
sessionId: this.sessionId,
|
|
124
|
+
clientId: this.clientId,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
logCacheHit(params) {
|
|
128
|
+
this.log({
|
|
129
|
+
eventType: 'CACHE_HIT',
|
|
130
|
+
queryType: params.queryType,
|
|
131
|
+
query: params.query,
|
|
132
|
+
success: true,
|
|
133
|
+
durationMs: 0,
|
|
134
|
+
cached: true,
|
|
135
|
+
sessionId: this.sessionId,
|
|
136
|
+
clientId: this.clientId,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
logRateLimitExceeded(params) {
|
|
140
|
+
this.log({
|
|
141
|
+
eventType: 'RATE_LIMIT_EXCEEDED',
|
|
142
|
+
queryType: params.queryType,
|
|
143
|
+
query: params.query,
|
|
144
|
+
success: false,
|
|
145
|
+
durationMs: 0,
|
|
146
|
+
cached: false,
|
|
147
|
+
sessionId: this.sessionId,
|
|
148
|
+
clientId: this.clientId,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
logSSRFBlocked(params) {
|
|
152
|
+
this.log({
|
|
153
|
+
eventType: 'SSRF_BLOCKED',
|
|
154
|
+
queryType: 'domain',
|
|
155
|
+
query: params.url,
|
|
156
|
+
success: false,
|
|
157
|
+
durationMs: 0,
|
|
158
|
+
cached: false,
|
|
159
|
+
sessionId: this.sessionId,
|
|
160
|
+
clientId: this.clientId,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
logPIIRedacted(params) {
|
|
164
|
+
this.log({
|
|
165
|
+
eventType: 'PII_REDACTED',
|
|
166
|
+
queryType: params.queryType,
|
|
167
|
+
query: params.query,
|
|
168
|
+
success: true,
|
|
169
|
+
durationMs: 0,
|
|
170
|
+
cached: false,
|
|
171
|
+
tags: { fieldsRedacted: String(params.fieldsRedacted) },
|
|
172
|
+
sessionId: this.sessionId,
|
|
173
|
+
clientId: this.clientId,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
async flush() {
|
|
177
|
+
if (this.adapter.flush) {
|
|
178
|
+
await this.adapter.flush();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
isEnabled() {
|
|
182
|
+
return this.enabled;
|
|
183
|
+
}
|
|
184
|
+
getStats() {
|
|
185
|
+
return {
|
|
186
|
+
enabled: this.enabled,
|
|
187
|
+
eventsLogged: this.eventsLogged,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
generateId() {
|
|
191
|
+
return Date.now().toString(36) + Math.random().toString(36).slice(2, 9);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
exports.AuditLogger = AuditLogger;
|
|
195
|
+
//# sourceMappingURL=AuditLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuditLogger.js","sourceRoot":"","sources":["../../../src/infrastructure/logging/AuditLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/logging/Logger.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACpC;AAKD,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAExC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAK5B;gBAEU,OAAO,GAAE,aAAkB;IAYvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAO3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAO1D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAO1D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAO3D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/logging/Logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,11 @@ class Logger {
|
|
|
33
33
|
logRequest(type, query, context) {
|
|
34
34
|
if (!this.logRequests)
|
|
35
35
|
return;
|
|
36
|
-
this.info(`REQUEST → ${type}: ${query}`,
|
|
36
|
+
this.info(`REQUEST → ${type}: ${query}`, {
|
|
37
|
+
queryType: type,
|
|
38
|
+
queryValue: query,
|
|
39
|
+
...context,
|
|
40
|
+
});
|
|
37
41
|
}
|
|
38
42
|
logResponse(type, query, success, duration, context) {
|
|
39
43
|
if (!this.logResponses)
|
|
@@ -41,18 +45,38 @@ class Logger {
|
|
|
41
45
|
const status = success ? '✓' : '✗';
|
|
42
46
|
const message = `RESPONSE ${status} ${type}: ${query} (${duration}ms)`;
|
|
43
47
|
if (success) {
|
|
44
|
-
this.info(message,
|
|
48
|
+
this.info(message, {
|
|
49
|
+
queryType: type,
|
|
50
|
+
queryValue: query,
|
|
51
|
+
success,
|
|
52
|
+
durationMs: duration,
|
|
53
|
+
...context,
|
|
54
|
+
});
|
|
45
55
|
}
|
|
46
56
|
else {
|
|
47
|
-
this.warn(message,
|
|
57
|
+
this.warn(message, {
|
|
58
|
+
queryType: type,
|
|
59
|
+
queryValue: query,
|
|
60
|
+
success,
|
|
61
|
+
durationMs: duration,
|
|
62
|
+
...context,
|
|
63
|
+
});
|
|
48
64
|
}
|
|
49
65
|
}
|
|
50
66
|
logPerformance(operation, duration, context) {
|
|
51
|
-
this.debug(`PERFORMANCE: ${operation} took ${duration}ms`,
|
|
67
|
+
this.debug(`PERFORMANCE: ${operation} took ${duration}ms`, {
|
|
68
|
+
operation,
|
|
69
|
+
durationMs: duration,
|
|
70
|
+
...context,
|
|
71
|
+
});
|
|
52
72
|
}
|
|
53
73
|
logCache(operation, key, context) {
|
|
54
74
|
const emoji = operation === 'hit' ? '✓' : operation === 'miss' ? '✗' : '→';
|
|
55
|
-
this.debug(`CACHE ${emoji} ${operation}: ${key}`,
|
|
75
|
+
this.debug(`CACHE ${emoji} ${operation}: ${key}`, {
|
|
76
|
+
operation,
|
|
77
|
+
cacheKey: key,
|
|
78
|
+
...context,
|
|
79
|
+
});
|
|
56
80
|
}
|
|
57
81
|
log(level, message, context) {
|
|
58
82
|
if (!this.enabled)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/infrastructure/logging/Logger.ts"],"names":[],"mappings":";;;AA0BA,MAAa,MAAM;IAiBjB,YAAY,UAAyB,EAAE;QAV/B,SAAI,GAAe,EAAE,CAAC;QACb,YAAO,GAAW,IAAI,CAAC;QAEvB,kBAAa,GAA6B;YACzD,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;SACT,CAAC;QAGA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAKD,KAAK,CAAC,OAAe,EAAE,OAA6B;QAClD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAKD,IAAI,CAAC,OAAe,EAAE,OAA6B;QACjD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAKD,IAAI,CAAC,OAAe,EAAE,OAA6B;QACjD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAKD,KAAK,CAAC,OAAe,EAAE,OAA6B;QAClD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAKD,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,OAA6B;QACnE,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/infrastructure/logging/Logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ export interface QueryMetric {
|
|
|
6
6
|
cached: boolean;
|
|
7
7
|
timestamp: number;
|
|
8
8
|
error?: string;
|
|
9
|
+
serverUrl?: string;
|
|
9
10
|
}
|
|
10
11
|
export interface MetricsSummary {
|
|
11
12
|
total: number;
|
|
@@ -15,6 +16,9 @@ export interface MetricsSummary {
|
|
|
15
16
|
avgResponseTime: number;
|
|
16
17
|
minResponseTime: number;
|
|
17
18
|
maxResponseTime: number;
|
|
19
|
+
p50ResponseTime: number;
|
|
20
|
+
p90ResponseTime: number;
|
|
21
|
+
p99ResponseTime: number;
|
|
18
22
|
cacheHitRate: number;
|
|
19
23
|
totalDuration: number;
|
|
20
24
|
queriesByType: {
|
|
@@ -33,7 +37,40 @@ export declare class MetricsCollector {
|
|
|
33
37
|
maxMetrics?: number;
|
|
34
38
|
});
|
|
35
39
|
record(metric: QueryMetric): void;
|
|
40
|
+
private calculatePercentile;
|
|
36
41
|
getSummary(since?: number): MetricsSummary;
|
|
42
|
+
getPercentiles(since?: number): {
|
|
43
|
+
p50: number;
|
|
44
|
+
p75: number;
|
|
45
|
+
p90: number;
|
|
46
|
+
p95: number;
|
|
47
|
+
p99: number;
|
|
48
|
+
p999: number;
|
|
49
|
+
};
|
|
50
|
+
getRegistryStats(): Record<string, {
|
|
51
|
+
server: string;
|
|
52
|
+
total: number;
|
|
53
|
+
successful: number;
|
|
54
|
+
failed: number;
|
|
55
|
+
avgDuration: number;
|
|
56
|
+
p90Duration: number;
|
|
57
|
+
cacheHitRate: number;
|
|
58
|
+
}>;
|
|
59
|
+
getTopQueries(limit?: number, since?: number): Array<{
|
|
60
|
+
query: string;
|
|
61
|
+
type: 'domain' | 'ip' | 'asn';
|
|
62
|
+
count: number;
|
|
63
|
+
avgDuration: number;
|
|
64
|
+
errorRate: number;
|
|
65
|
+
}>;
|
|
66
|
+
getErrorHistogram(since?: number): Array<{
|
|
67
|
+
errorType: string;
|
|
68
|
+
count: number;
|
|
69
|
+
percentage: number;
|
|
70
|
+
affectedQueries: string[];
|
|
71
|
+
}>;
|
|
72
|
+
exportPrometheus(prefix?: string): string;
|
|
73
|
+
exportCSV(): string;
|
|
37
74
|
getRecent(count?: number): QueryMetric[];
|
|
38
75
|
getWindow(startTime: number, endTime: number): QueryMetric[];
|
|
39
76
|
getByType(type: 'domain' | 'ip' | 'asn'): QueryMetric[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsCollector.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/monitoring/MetricsCollector.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"MetricsCollector.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/monitoring/MetricsCollector.ts"],"names":[],"mappings":"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"}
|