@dumanarge/xssrv-shared-lib 1.0.6 → 1.0.7
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/context/observability-context.d.ts +3 -0
- package/dist/context/observability-context.js +8 -2
- package/dist/context/observability-context.js.map +1 -1
- package/dist/context/observability.interceptor.js +139 -2
- package/dist/context/observability.interceptor.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +28 -1
- package/dist/index.js.map +1 -1
- package/dist/log-events/access-log-payload.builder.d.ts +69 -0
- package/dist/log-events/access-log-payload.builder.js +237 -0
- package/dist/log-events/access-log-payload.builder.js.map +1 -0
- package/dist/log-events/access-log.interceptor.d.ts +29 -0
- package/dist/log-events/access-log.interceptor.js +456 -0
- package/dist/log-events/access-log.interceptor.js.map +1 -0
- package/dist/log-events/index.d.ts +8 -0
- package/dist/log-events/index.js +37 -0
- package/dist/log-events/index.js.map +1 -0
- package/dist/log-events/log-event.types.d.ts +138 -0
- package/dist/log-events/log-event.types.js +56 -0
- package/dist/log-events/log-event.types.js.map +1 -0
- package/dist/log-events/log-publisher.d.ts +8 -0
- package/dist/log-events/log-publisher.js +26 -0
- package/dist/log-events/log-publisher.js.map +1 -0
- package/dist/log-events/rabbitmq-log-publisher.d.ts +34 -0
- package/dist/log-events/rabbitmq-log-publisher.js +159 -0
- package/dist/log-events/rabbitmq-log-publisher.js.map +1 -0
- package/dist/log-events/redaction.d.ts +16 -0
- package/dist/log-events/redaction.js +140 -0
- package/dist/log-events/redaction.js.map +1 -0
- package/dist/log-events/ring-buffer.d.ts +18 -0
- package/dist/log-events/ring-buffer.js +54 -0
- package/dist/log-events/ring-buffer.js.map +1 -0
- package/dist/log-events/sampling-policy.d.ts +26 -0
- package/dist/log-events/sampling-policy.js +95 -0
- package/dist/log-events/sampling-policy.js.map +1 -0
- package/dist/observability/request-context.js +3 -0
- package/dist/observability/request-context.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { LogPublisher } from './log-publisher';
|
|
4
|
+
import { LogSamplingPolicy } from './sampling-policy';
|
|
5
|
+
export interface AccessLogInterceptorOptions {
|
|
6
|
+
readonly publisher: LogPublisher;
|
|
7
|
+
readonly samplingPolicy: LogSamplingPolicy;
|
|
8
|
+
readonly maxBodyBytes?: number;
|
|
9
|
+
readonly logRequestBody?: boolean;
|
|
10
|
+
readonly logResponseBody?: boolean;
|
|
11
|
+
readonly serviceName?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class AccessLogInterceptor implements NestInterceptor {
|
|
14
|
+
private readonly logger;
|
|
15
|
+
private readonly publisher;
|
|
16
|
+
private readonly samplingPolicy;
|
|
17
|
+
private readonly maxBodyBytes;
|
|
18
|
+
private readonly logRequestBody;
|
|
19
|
+
private readonly logResponseBody;
|
|
20
|
+
private readonly serviceName;
|
|
21
|
+
constructor(options: AccessLogInterceptorOptions);
|
|
22
|
+
static create(options: AccessLogInterceptorOptions): AccessLogInterceptor;
|
|
23
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
|
|
24
|
+
private hydrateFromContext;
|
|
25
|
+
private hydrateHttp;
|
|
26
|
+
private finalizeSuccess;
|
|
27
|
+
private finalizeFailure;
|
|
28
|
+
private emit;
|
|
29
|
+
}
|
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var AccessLogInterceptor_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.AccessLogInterceptor = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const operators_1 = require("rxjs/operators");
|
|
16
|
+
const log_event_types_1 = require("./log-event.types");
|
|
17
|
+
const access_log_payload_builder_1 = require("./access-log-payload.builder");
|
|
18
|
+
const request_context_1 = require("../observability/request-context");
|
|
19
|
+
const ACCESS_LOG_ALLOWED_HEADER_KEYS = new Set([
|
|
20
|
+
'host',
|
|
21
|
+
'lang',
|
|
22
|
+
]);
|
|
23
|
+
let AccessLogInterceptor = AccessLogInterceptor_1 = class AccessLogInterceptor {
|
|
24
|
+
logger = new common_1.Logger(AccessLogInterceptor_1.name);
|
|
25
|
+
publisher;
|
|
26
|
+
samplingPolicy;
|
|
27
|
+
maxBodyBytes;
|
|
28
|
+
logRequestBody;
|
|
29
|
+
logResponseBody;
|
|
30
|
+
serviceName;
|
|
31
|
+
constructor(options) {
|
|
32
|
+
this.publisher = options.publisher;
|
|
33
|
+
this.samplingPolicy = options.samplingPolicy;
|
|
34
|
+
this.maxBodyBytes = options.maxBodyBytes ?? 16 * 1024;
|
|
35
|
+
this.logRequestBody = options.logRequestBody ?? true;
|
|
36
|
+
this.logResponseBody = options.logResponseBody ?? false;
|
|
37
|
+
this.serviceName =
|
|
38
|
+
typeof options.serviceName === 'string' &&
|
|
39
|
+
options.serviceName.trim().length > 0
|
|
40
|
+
? options.serviceName.trim()
|
|
41
|
+
: undefined;
|
|
42
|
+
}
|
|
43
|
+
static create(options) {
|
|
44
|
+
return new AccessLogInterceptor_1(options);
|
|
45
|
+
}
|
|
46
|
+
intercept(context, next) {
|
|
47
|
+
const transport = resolveTransport(context);
|
|
48
|
+
if (!transport) {
|
|
49
|
+
return next.handle();
|
|
50
|
+
}
|
|
51
|
+
const observability = request_context_1.ObservabilityContextStorage.get();
|
|
52
|
+
if (shouldSkipAccessLog(context, transport, observability?.source)) {
|
|
53
|
+
return next.handle();
|
|
54
|
+
}
|
|
55
|
+
const builder = access_log_payload_builder_1.AccessLogPayloadBuilder.create({
|
|
56
|
+
maxBodyBytes: this.maxBodyBytes,
|
|
57
|
+
}).transport(transport);
|
|
58
|
+
this.hydrateFromContext(context, builder, transport);
|
|
59
|
+
return next.handle().pipe((0, operators_1.tap)({
|
|
60
|
+
next: (value) => {
|
|
61
|
+
this.finalizeSuccess(context, builder, transport, value);
|
|
62
|
+
},
|
|
63
|
+
}), (0, operators_1.catchError)((error) => {
|
|
64
|
+
this.finalizeFailure(builder, error);
|
|
65
|
+
throw error;
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
hydrateFromContext(context, builder, transport) {
|
|
69
|
+
const observability = request_context_1.ObservabilityContextStorage.get();
|
|
70
|
+
builder.correlation({
|
|
71
|
+
correlationId: observability?.correlationId ?? '',
|
|
72
|
+
requestId: observability?.requestId,
|
|
73
|
+
traceId: observability?.traceId,
|
|
74
|
+
spanId: observability?.spanId,
|
|
75
|
+
});
|
|
76
|
+
builder.identity({
|
|
77
|
+
tenantId: observability?.tenantId,
|
|
78
|
+
accountId: observability?.accountId,
|
|
79
|
+
email: observability?.email,
|
|
80
|
+
});
|
|
81
|
+
builder.tenantName(observability?.tenantName);
|
|
82
|
+
builder.application({
|
|
83
|
+
id: observability?.applicationId,
|
|
84
|
+
name: observability?.applicationName,
|
|
85
|
+
});
|
|
86
|
+
const handlerName = resolveHandlerName(context);
|
|
87
|
+
const className = resolveClassName(context);
|
|
88
|
+
const grpcPattern = readGrpcPatternMetadata(context);
|
|
89
|
+
const grpcOperationFromContext = readGrpcOperationFromRpcContext(context);
|
|
90
|
+
const grpcOperationFromMetadataPath = readGrpcOperationFromMetadataPath(context);
|
|
91
|
+
const observedOperation = observability?.operation && observability.operation.includes('/')
|
|
92
|
+
? observability.operation
|
|
93
|
+
: undefined;
|
|
94
|
+
const grpcOperationName = normalizeOperationCandidate(grpcPattern?.rpc, className) ??
|
|
95
|
+
normalizeOperationCandidate(grpcOperationFromMetadataPath, className) ??
|
|
96
|
+
normalizeOperationCandidate(grpcOperationFromContext, className) ??
|
|
97
|
+
normalizeOperationCandidate(observedOperation, className) ??
|
|
98
|
+
normalizeOperationCandidate(handlerName, className) ??
|
|
99
|
+
observedOperation ??
|
|
100
|
+
handlerName ??
|
|
101
|
+
grpcPattern?.rpc ??
|
|
102
|
+
observability?.operation;
|
|
103
|
+
const grpcServiceName = grpcPattern?.service ?? className ?? this.serviceName;
|
|
104
|
+
if (transport === log_event_types_1.LOG_TRANSPORT.HTTP) {
|
|
105
|
+
this.hydrateHttp(context, builder);
|
|
106
|
+
}
|
|
107
|
+
else if (transport === log_event_types_1.LOG_TRANSPORT.GRPC) {
|
|
108
|
+
builder.grpc({ service: grpcServiceName, method: grpcOperationName });
|
|
109
|
+
const operationKind = inferOperationKindFromGrpcOperation(grpcOperationName) ?? 'MUTATION';
|
|
110
|
+
builder.method(operationKind);
|
|
111
|
+
builder.path(grpcOperationName);
|
|
112
|
+
}
|
|
113
|
+
else if (transport === log_event_types_1.LOG_TRANSPORT.GRAPHQL) {
|
|
114
|
+
builder.graphql({ operationName: handlerName });
|
|
115
|
+
}
|
|
116
|
+
if (this.serviceName) {
|
|
117
|
+
const sourceOperation = transport === log_event_types_1.LOG_TRANSPORT.GRPC
|
|
118
|
+
? grpcOperationName
|
|
119
|
+
: handlerName;
|
|
120
|
+
builder.source({
|
|
121
|
+
service: this.serviceName,
|
|
122
|
+
transport,
|
|
123
|
+
operation: sourceOperation,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
hydrateHttp(context, builder) {
|
|
128
|
+
const http = context.switchToHttp();
|
|
129
|
+
const request = http.getRequest();
|
|
130
|
+
builder.http({
|
|
131
|
+
method: request.method,
|
|
132
|
+
path: request.url,
|
|
133
|
+
});
|
|
134
|
+
builder.method(inferHttpOperationKind(request.method));
|
|
135
|
+
if (request.headers) {
|
|
136
|
+
builder.requestHeaders(filterAllowedHeaders(request.headers));
|
|
137
|
+
}
|
|
138
|
+
if (this.logRequestBody && request.body !== undefined) {
|
|
139
|
+
builder.requestBody(request.body);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
finalizeSuccess(context, builder, transport, responseValue) {
|
|
143
|
+
let statusCode;
|
|
144
|
+
if (transport === log_event_types_1.LOG_TRANSPORT.HTTP) {
|
|
145
|
+
const response = context.switchToHttp().getResponse();
|
|
146
|
+
statusCode = response.statusCode;
|
|
147
|
+
}
|
|
148
|
+
builder.success(statusCode);
|
|
149
|
+
if (this.logResponseBody && responseValue !== undefined) {
|
|
150
|
+
builder.responseBody(responseValue);
|
|
151
|
+
}
|
|
152
|
+
void this.emit(builder, transport);
|
|
153
|
+
}
|
|
154
|
+
finalizeFailure(builder, error) {
|
|
155
|
+
const exception = error instanceof Error ? error : undefined;
|
|
156
|
+
const errorRecord = error ?? {};
|
|
157
|
+
const statusCode = typeof errorRecord.status === 'number'
|
|
158
|
+
? errorRecord.status
|
|
159
|
+
: typeof errorRecord.statusCode === 'number'
|
|
160
|
+
? errorRecord.statusCode
|
|
161
|
+
: typeof errorRecord.status?.http ===
|
|
162
|
+
'number'
|
|
163
|
+
? errorRecord.status.http
|
|
164
|
+
: undefined;
|
|
165
|
+
const errorKey = typeof errorRecord.code === 'string'
|
|
166
|
+
? errorRecord.code
|
|
167
|
+
: undefined;
|
|
168
|
+
const errorCategory = typeof errorRecord.category === 'string'
|
|
169
|
+
? errorRecord.category
|
|
170
|
+
: undefined;
|
|
171
|
+
builder.failure({
|
|
172
|
+
outcome: log_event_types_1.ACCESS_LOG_OUTCOME.ERROR,
|
|
173
|
+
source: log_event_types_1.ACCESS_LOG_FAILURE_SOURCE.APPLICATION,
|
|
174
|
+
reason: exception?.message,
|
|
175
|
+
statusCode,
|
|
176
|
+
});
|
|
177
|
+
builder.error({
|
|
178
|
+
key: errorKey,
|
|
179
|
+
category: errorCategory,
|
|
180
|
+
exceptionClass: exception?.name,
|
|
181
|
+
});
|
|
182
|
+
void this.emit(builder);
|
|
183
|
+
}
|
|
184
|
+
async emit(builder, transport) {
|
|
185
|
+
try {
|
|
186
|
+
const event = {
|
|
187
|
+
kind: log_event_types_1.LOG_KIND.ACCESS,
|
|
188
|
+
transport: transport ?? log_event_types_1.LOG_TRANSPORT.HTTP,
|
|
189
|
+
payload: builder.build(),
|
|
190
|
+
};
|
|
191
|
+
if (!this.samplingPolicy.shouldSample(event)) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
this.logger.log({
|
|
195
|
+
event: 'access_log',
|
|
196
|
+
kind: log_event_types_1.LOG_KIND.ACCESS,
|
|
197
|
+
transport: event.transport,
|
|
198
|
+
...event.payload,
|
|
199
|
+
});
|
|
200
|
+
await this.publisher.publish(event);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
204
|
+
this.logger.debug(`AccessLogInterceptor emit failed: ${message}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
exports.AccessLogInterceptor = AccessLogInterceptor;
|
|
209
|
+
exports.AccessLogInterceptor = AccessLogInterceptor = AccessLogInterceptor_1 = __decorate([
|
|
210
|
+
(0, common_1.Injectable)(),
|
|
211
|
+
__metadata("design:paramtypes", [Object])
|
|
212
|
+
], AccessLogInterceptor);
|
|
213
|
+
function resolveTransport(context) {
|
|
214
|
+
const type = context.getType();
|
|
215
|
+
if (type === 'http') {
|
|
216
|
+
return log_event_types_1.LOG_TRANSPORT.HTTP;
|
|
217
|
+
}
|
|
218
|
+
if (type === 'rpc') {
|
|
219
|
+
return log_event_types_1.LOG_TRANSPORT.GRPC;
|
|
220
|
+
}
|
|
221
|
+
if (type === 'graphql') {
|
|
222
|
+
return log_event_types_1.LOG_TRANSPORT.GRAPHQL;
|
|
223
|
+
}
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
226
|
+
function shouldSkipAccessLog(context, transport, source) {
|
|
227
|
+
if (source === 'system') {
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
if (transport !== log_event_types_1.LOG_TRANSPORT.GRPC) {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
return readGrpcSystemSourceFlag(context);
|
|
234
|
+
}
|
|
235
|
+
function readGrpcSystemSourceFlag(context) {
|
|
236
|
+
try {
|
|
237
|
+
const rpcContext = context.switchToRpc().getContext();
|
|
238
|
+
const metadataLike = rpcContext &&
|
|
239
|
+
typeof rpcContext === 'object' &&
|
|
240
|
+
'get' in rpcContext &&
|
|
241
|
+
typeof rpcContext.get === 'function'
|
|
242
|
+
? rpcContext
|
|
243
|
+
: rpcContext
|
|
244
|
+
?.metadata;
|
|
245
|
+
if (!metadataLike) {
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
const values = metadataLike.get('x-source-system');
|
|
249
|
+
if (!Array.isArray(values) || values.length === 0) {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
const firstValue = values[0];
|
|
253
|
+
const raw = typeof firstValue === 'string'
|
|
254
|
+
? firstValue
|
|
255
|
+
: firstValue instanceof Uint8Array
|
|
256
|
+
? Buffer.from(firstValue).toString('utf8')
|
|
257
|
+
: '';
|
|
258
|
+
const normalized = raw.trim().toLowerCase();
|
|
259
|
+
return normalized === 'true' || normalized === '1' || normalized === 'yes';
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
function resolveHandlerName(context) {
|
|
266
|
+
try {
|
|
267
|
+
const handler = context.getHandler?.();
|
|
268
|
+
const handlerName = typeof handler?.name === 'string' && handler.name.length > 0
|
|
269
|
+
? handler.name
|
|
270
|
+
: undefined;
|
|
271
|
+
return handlerName;
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
return undefined;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
function resolveClassName(context) {
|
|
278
|
+
try {
|
|
279
|
+
const controllerClass = context.getClass?.();
|
|
280
|
+
const controllerName = typeof controllerClass?.name === 'string' && controllerClass.name.length > 0
|
|
281
|
+
? controllerClass.name
|
|
282
|
+
: undefined;
|
|
283
|
+
return controllerName;
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
return undefined;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
function readPathCandidate(value) {
|
|
290
|
+
if (typeof value !== 'string') {
|
|
291
|
+
return undefined;
|
|
292
|
+
}
|
|
293
|
+
const trimmed = value.trim();
|
|
294
|
+
if (trimmed.length === 0) {
|
|
295
|
+
return undefined;
|
|
296
|
+
}
|
|
297
|
+
return trimmed;
|
|
298
|
+
}
|
|
299
|
+
function extractRpcOperationFromPath(path) {
|
|
300
|
+
if (!path) {
|
|
301
|
+
return undefined;
|
|
302
|
+
}
|
|
303
|
+
const sanitized = path.trim();
|
|
304
|
+
if (sanitized.length === 0) {
|
|
305
|
+
return undefined;
|
|
306
|
+
}
|
|
307
|
+
const segments = sanitized.split('/').filter(Boolean);
|
|
308
|
+
const lastSegment = segments.length > 0 ? segments[segments.length - 1] : undefined;
|
|
309
|
+
return lastSegment && lastSegment.length > 0 ? lastSegment : undefined;
|
|
310
|
+
}
|
|
311
|
+
function readGrpcOperationFromRpcContext(context) {
|
|
312
|
+
try {
|
|
313
|
+
const rpcContext = context.switchToRpc().getContext();
|
|
314
|
+
const rpcContextRecord = rpcContext && typeof rpcContext === 'object'
|
|
315
|
+
? rpcContext
|
|
316
|
+
: undefined;
|
|
317
|
+
const directPath = readPathCandidate(rpcContextRecord?.path);
|
|
318
|
+
const handlerPath = readPathCandidate(rpcContextRecord?.handler?.path);
|
|
319
|
+
const callPath = readPathCandidate(rpcContextRecord?.call?.path);
|
|
320
|
+
const callHandlerPath = readPathCandidate(rpcContextRecord?.call
|
|
321
|
+
?.handler?.path);
|
|
322
|
+
return (extractRpcOperationFromPath(directPath) ??
|
|
323
|
+
extractRpcOperationFromPath(handlerPath) ??
|
|
324
|
+
extractRpcOperationFromPath(callPath) ??
|
|
325
|
+
extractRpcOperationFromPath(callHandlerPath));
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
return undefined;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
function readGrpcMetadataValue(metadata, key) {
|
|
332
|
+
const values = metadata.get(key);
|
|
333
|
+
if (!values?.length) {
|
|
334
|
+
return undefined;
|
|
335
|
+
}
|
|
336
|
+
const value = values[0];
|
|
337
|
+
if (typeof value === 'string') {
|
|
338
|
+
return value;
|
|
339
|
+
}
|
|
340
|
+
if (value instanceof Uint8Array) {
|
|
341
|
+
return Buffer.from(value).toString('utf8');
|
|
342
|
+
}
|
|
343
|
+
return undefined;
|
|
344
|
+
}
|
|
345
|
+
function readGrpcOperationFromMetadataPath(context) {
|
|
346
|
+
try {
|
|
347
|
+
const rpcContext = context
|
|
348
|
+
.switchToRpc()
|
|
349
|
+
.getContext();
|
|
350
|
+
const metadata = rpcContext && typeof rpcContext.get === 'function'
|
|
351
|
+
? rpcContext
|
|
352
|
+
: rpcContext?.metadata;
|
|
353
|
+
if (!metadata) {
|
|
354
|
+
return undefined;
|
|
355
|
+
}
|
|
356
|
+
const pathCandidate = readGrpcMetadataValue(metadata, ':path') ??
|
|
357
|
+
readGrpcMetadataValue(metadata, 'path');
|
|
358
|
+
return extractRpcOperationFromPath(pathCandidate);
|
|
359
|
+
}
|
|
360
|
+
catch {
|
|
361
|
+
return undefined;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
function normalizeOperationCandidate(candidate, className) {
|
|
365
|
+
if (!candidate) {
|
|
366
|
+
return undefined;
|
|
367
|
+
}
|
|
368
|
+
const trimmed = candidate.trim();
|
|
369
|
+
if (trimmed.length === 0) {
|
|
370
|
+
return undefined;
|
|
371
|
+
}
|
|
372
|
+
if (className && trimmed === className) {
|
|
373
|
+
return undefined;
|
|
374
|
+
}
|
|
375
|
+
if (trimmed === 'wrapped') {
|
|
376
|
+
return undefined;
|
|
377
|
+
}
|
|
378
|
+
return trimmed;
|
|
379
|
+
}
|
|
380
|
+
function inferOperationKindFromGrpcOperation(operationName) {
|
|
381
|
+
if (!operationName) {
|
|
382
|
+
return undefined;
|
|
383
|
+
}
|
|
384
|
+
const normalizedOperationName = operationName.trim();
|
|
385
|
+
if (normalizedOperationName.length === 0) {
|
|
386
|
+
return undefined;
|
|
387
|
+
}
|
|
388
|
+
const queryPrefixes = [
|
|
389
|
+
'get',
|
|
390
|
+
'list',
|
|
391
|
+
'find',
|
|
392
|
+
'search',
|
|
393
|
+
'read',
|
|
394
|
+
'count',
|
|
395
|
+
'exists',
|
|
396
|
+
'check',
|
|
397
|
+
'verify',
|
|
398
|
+
'validate',
|
|
399
|
+
'is',
|
|
400
|
+
'can',
|
|
401
|
+
'has',
|
|
402
|
+
];
|
|
403
|
+
const lowerOperationName = normalizedOperationName.toLowerCase();
|
|
404
|
+
if (queryPrefixes.some((prefix) => lowerOperationName.startsWith(prefix))) {
|
|
405
|
+
return 'QUERY';
|
|
406
|
+
}
|
|
407
|
+
return 'MUTATION';
|
|
408
|
+
}
|
|
409
|
+
function inferHttpOperationKind(method) {
|
|
410
|
+
const normalizedMethod = (method ?? 'GET').toUpperCase();
|
|
411
|
+
if (normalizedMethod === 'GET' ||
|
|
412
|
+
normalizedMethod === 'HEAD' ||
|
|
413
|
+
normalizedMethod === 'OPTIONS') {
|
|
414
|
+
return 'QUERY';
|
|
415
|
+
}
|
|
416
|
+
return 'MUTATION';
|
|
417
|
+
}
|
|
418
|
+
const GRPC_PATTERN_METADATA_KEY = 'microservices:pattern';
|
|
419
|
+
function readGrpcPatternMetadata(context) {
|
|
420
|
+
try {
|
|
421
|
+
const handler = context.getHandler?.();
|
|
422
|
+
const metadataReader = Reflect;
|
|
423
|
+
const rawMetadata = metadataReader.getMetadata?.(GRPC_PATTERN_METADATA_KEY, handler);
|
|
424
|
+
const firstPattern = Array.isArray(rawMetadata)
|
|
425
|
+
? rawMetadata[0]
|
|
426
|
+
: rawMetadata;
|
|
427
|
+
if (!firstPattern || typeof firstPattern !== 'object') {
|
|
428
|
+
return undefined;
|
|
429
|
+
}
|
|
430
|
+
const pattern = firstPattern;
|
|
431
|
+
const serviceName = typeof pattern.service === 'string' && pattern.service.trim().length > 0
|
|
432
|
+
? pattern.service.trim()
|
|
433
|
+
: undefined;
|
|
434
|
+
const rpcName = typeof pattern.rpc === 'string' && pattern.rpc.trim().length > 0
|
|
435
|
+
? pattern.rpc.trim()
|
|
436
|
+
: undefined;
|
|
437
|
+
return {
|
|
438
|
+
service: serviceName,
|
|
439
|
+
rpc: rpcName,
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
catch {
|
|
443
|
+
return undefined;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
function filterAllowedHeaders(headers) {
|
|
447
|
+
const filtered = {};
|
|
448
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
449
|
+
if (!ACCESS_LOG_ALLOWED_HEADER_KEYS.has(key.toLowerCase())) {
|
|
450
|
+
continue;
|
|
451
|
+
}
|
|
452
|
+
filtered[key] = value;
|
|
453
|
+
}
|
|
454
|
+
return filtered;
|
|
455
|
+
}
|
|
456
|
+
//# sourceMappingURL=access-log.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-log.interceptor.js","sourceRoot":"","sources":["../../src/log-events/access-log.interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { LOG_KIND, LOG_TRANSPORT, ACCESS_LOG_RESULT_STATUS, ACCESS_LOG_OUTCOME, ACCESS_LOG_FAILURE_SOURCE, AUDIT_ACTOR_TYPE, AUDIT_SEVERITY, type LogKind, type LogTransport, type AccessLogResultStatus, type AccessLogOutcome, type AccessLogFailureSource, type AuditActorType, type AuditSeverity, type AccessLogPayload, type AuditLogPayload, type DomainEventLogPayload, type LogEvent, type AccessLogEvent, type AuditLogEvent, type DomainLogEvent, buildLogRoutingKey, } from './log-event.types';
|
|
2
|
+
export { LogPublisher, NoopLogPublisher } from './log-publisher';
|
|
3
|
+
export { RingBuffer, type RingBufferOptions } from './ring-buffer';
|
|
4
|
+
export { RabbitMqLogPublisher, type RabbitMqLogPublisherPort, type RabbitMqLogPublisherOptions, } from './rabbitmq-log-publisher';
|
|
5
|
+
export { REDACTED_VALUE, DEFAULT_REDACTED_HEADER_KEYS, DEFAULT_REDACTED_BODY_KEYS, redactHeaders, redactObject, truncateBody, hashEmail, type RedactionOptions, type TruncateBodyResult, } from './redaction';
|
|
6
|
+
export { LogSamplingPolicy, OutcomeAwareSamplingPolicy, AlwaysSampleLogPolicy, ACCESS_LOG_OPERATION_KIND, type AccessLogOperationKind, type OutcomeAwareSamplingOptions, } from './sampling-policy';
|
|
7
|
+
export { AccessLogPayloadBuilder, type AccessLogPayloadBuilderOptions, } from './access-log-payload.builder';
|
|
8
|
+
export { AccessLogInterceptor, type AccessLogInterceptorOptions, } from './access-log.interceptor';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccessLogInterceptor = exports.AccessLogPayloadBuilder = exports.ACCESS_LOG_OPERATION_KIND = exports.AlwaysSampleLogPolicy = exports.OutcomeAwareSamplingPolicy = exports.LogSamplingPolicy = exports.hashEmail = exports.truncateBody = exports.redactObject = exports.redactHeaders = exports.DEFAULT_REDACTED_BODY_KEYS = exports.DEFAULT_REDACTED_HEADER_KEYS = exports.REDACTED_VALUE = exports.RabbitMqLogPublisher = exports.RingBuffer = exports.NoopLogPublisher = exports.LogPublisher = exports.buildLogRoutingKey = exports.AUDIT_SEVERITY = exports.AUDIT_ACTOR_TYPE = exports.ACCESS_LOG_FAILURE_SOURCE = exports.ACCESS_LOG_OUTCOME = exports.ACCESS_LOG_RESULT_STATUS = exports.LOG_TRANSPORT = exports.LOG_KIND = void 0;
|
|
4
|
+
var log_event_types_1 = require("./log-event.types");
|
|
5
|
+
Object.defineProperty(exports, "LOG_KIND", { enumerable: true, get: function () { return log_event_types_1.LOG_KIND; } });
|
|
6
|
+
Object.defineProperty(exports, "LOG_TRANSPORT", { enumerable: true, get: function () { return log_event_types_1.LOG_TRANSPORT; } });
|
|
7
|
+
Object.defineProperty(exports, "ACCESS_LOG_RESULT_STATUS", { enumerable: true, get: function () { return log_event_types_1.ACCESS_LOG_RESULT_STATUS; } });
|
|
8
|
+
Object.defineProperty(exports, "ACCESS_LOG_OUTCOME", { enumerable: true, get: function () { return log_event_types_1.ACCESS_LOG_OUTCOME; } });
|
|
9
|
+
Object.defineProperty(exports, "ACCESS_LOG_FAILURE_SOURCE", { enumerable: true, get: function () { return log_event_types_1.ACCESS_LOG_FAILURE_SOURCE; } });
|
|
10
|
+
Object.defineProperty(exports, "AUDIT_ACTOR_TYPE", { enumerable: true, get: function () { return log_event_types_1.AUDIT_ACTOR_TYPE; } });
|
|
11
|
+
Object.defineProperty(exports, "AUDIT_SEVERITY", { enumerable: true, get: function () { return log_event_types_1.AUDIT_SEVERITY; } });
|
|
12
|
+
Object.defineProperty(exports, "buildLogRoutingKey", { enumerable: true, get: function () { return log_event_types_1.buildLogRoutingKey; } });
|
|
13
|
+
var log_publisher_1 = require("./log-publisher");
|
|
14
|
+
Object.defineProperty(exports, "LogPublisher", { enumerable: true, get: function () { return log_publisher_1.LogPublisher; } });
|
|
15
|
+
Object.defineProperty(exports, "NoopLogPublisher", { enumerable: true, get: function () { return log_publisher_1.NoopLogPublisher; } });
|
|
16
|
+
var ring_buffer_1 = require("./ring-buffer");
|
|
17
|
+
Object.defineProperty(exports, "RingBuffer", { enumerable: true, get: function () { return ring_buffer_1.RingBuffer; } });
|
|
18
|
+
var rabbitmq_log_publisher_1 = require("./rabbitmq-log-publisher");
|
|
19
|
+
Object.defineProperty(exports, "RabbitMqLogPublisher", { enumerable: true, get: function () { return rabbitmq_log_publisher_1.RabbitMqLogPublisher; } });
|
|
20
|
+
var redaction_1 = require("./redaction");
|
|
21
|
+
Object.defineProperty(exports, "REDACTED_VALUE", { enumerable: true, get: function () { return redaction_1.REDACTED_VALUE; } });
|
|
22
|
+
Object.defineProperty(exports, "DEFAULT_REDACTED_HEADER_KEYS", { enumerable: true, get: function () { return redaction_1.DEFAULT_REDACTED_HEADER_KEYS; } });
|
|
23
|
+
Object.defineProperty(exports, "DEFAULT_REDACTED_BODY_KEYS", { enumerable: true, get: function () { return redaction_1.DEFAULT_REDACTED_BODY_KEYS; } });
|
|
24
|
+
Object.defineProperty(exports, "redactHeaders", { enumerable: true, get: function () { return redaction_1.redactHeaders; } });
|
|
25
|
+
Object.defineProperty(exports, "redactObject", { enumerable: true, get: function () { return redaction_1.redactObject; } });
|
|
26
|
+
Object.defineProperty(exports, "truncateBody", { enumerable: true, get: function () { return redaction_1.truncateBody; } });
|
|
27
|
+
Object.defineProperty(exports, "hashEmail", { enumerable: true, get: function () { return redaction_1.hashEmail; } });
|
|
28
|
+
var sampling_policy_1 = require("./sampling-policy");
|
|
29
|
+
Object.defineProperty(exports, "LogSamplingPolicy", { enumerable: true, get: function () { return sampling_policy_1.LogSamplingPolicy; } });
|
|
30
|
+
Object.defineProperty(exports, "OutcomeAwareSamplingPolicy", { enumerable: true, get: function () { return sampling_policy_1.OutcomeAwareSamplingPolicy; } });
|
|
31
|
+
Object.defineProperty(exports, "AlwaysSampleLogPolicy", { enumerable: true, get: function () { return sampling_policy_1.AlwaysSampleLogPolicy; } });
|
|
32
|
+
Object.defineProperty(exports, "ACCESS_LOG_OPERATION_KIND", { enumerable: true, get: function () { return sampling_policy_1.ACCESS_LOG_OPERATION_KIND; } });
|
|
33
|
+
var access_log_payload_builder_1 = require("./access-log-payload.builder");
|
|
34
|
+
Object.defineProperty(exports, "AccessLogPayloadBuilder", { enumerable: true, get: function () { return access_log_payload_builder_1.AccessLogPayloadBuilder; } });
|
|
35
|
+
var access_log_interceptor_1 = require("./access-log.interceptor");
|
|
36
|
+
Object.defineProperty(exports, "AccessLogInterceptor", { enumerable: true, get: function () { return access_log_interceptor_1.AccessLogInterceptor; } });
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/log-events/index.ts"],"names":[],"mappings":";;;AAwBA,qDAuB2B;AAtBzB,2GAAA,QAAQ,OAAA;AACR,gHAAA,aAAa,OAAA;AACb,2HAAA,wBAAwB,OAAA;AACxB,qHAAA,kBAAkB,OAAA;AAClB,4HAAA,yBAAyB,OAAA;AACzB,mHAAA,gBAAgB,OAAA;AAChB,iHAAA,cAAc,OAAA;AAed,qHAAA,kBAAkB,OAAA;AAGpB,iDAAiE;AAAxD,6GAAA,YAAY,OAAA;AAAE,iHAAA,gBAAgB,OAAA;AAEvC,6CAAmE;AAA1D,yGAAA,UAAU,OAAA;AAEnB,mEAIkC;AAHhC,8HAAA,oBAAoB,OAAA;AAKtB,yCAUqB;AATnB,2GAAA,cAAc,OAAA;AACd,yHAAA,4BAA4B,OAAA;AAC5B,uHAAA,0BAA0B,OAAA;AAC1B,0GAAA,aAAa,OAAA;AACb,yGAAA,YAAY,OAAA;AACZ,yGAAA,YAAY,OAAA;AACZ,sGAAA,SAAS,OAAA;AAKX,qDAO2B;AANzB,oHAAA,iBAAiB,OAAA;AACjB,6HAAA,0BAA0B,OAAA;AAC1B,wHAAA,qBAAqB,OAAA;AACrB,4HAAA,yBAAyB,OAAA;AAK3B,2EAGsC;AAFpC,qIAAA,uBAAuB,OAAA;AAIzB,mEAGkC;AAFhC,8HAAA,oBAAoB,OAAA"}
|