@creator.co/wapi 1.9.0 → 1.9.2
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/package-lock.json +2 -2
- package/dist/package.json +1 -1
- package/dist/src/API/Request.d.ts +33 -0
- package/dist/src/API/Request.js +95 -15
- package/dist/src/API/Request.js.map +1 -1
- package/dist/src/BaseEvent/Transaction.js +3 -1
- package/dist/src/BaseEvent/Transaction.js.map +1 -1
- package/dist/src/Logger/Logger.d.ts +2 -0
- package/dist/src/Logger/Logger.js +14 -3
- package/dist/src/Logger/Logger.js.map +1 -1
- package/dist/src/Server/lib/container/GenericHandler.js +8 -3
- package/dist/src/Server/lib/container/GenericHandler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/API/Request.ts +144 -25
- package/src/BaseEvent/Transaction.ts +5 -1
- package/src/Logger/Logger.ts +15 -3
- package/src/Server/lib/container/GenericHandler.ts +9 -3
- package/tests/API/Request.test.ts +59 -0
- package/tests/Logger/Logger.test.ts +48 -0
package/dist/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@creator.co/wapi",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@creator.co/wapi",
|
|
9
|
-
"version": "1.9.
|
|
9
|
+
"version": "1.9.2",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@aws-sdk/client-dynamodb": "^3.730.0",
|
package/dist/package.json
CHANGED
|
@@ -12,6 +12,10 @@ export default class Request<InputType, PathParamsType, QueryParamsType> {
|
|
|
12
12
|
* Default paths to exclude from verbose logging (health checks, monitoring, etc.)
|
|
13
13
|
*/
|
|
14
14
|
private static readonly DEFAULT_NO_LOG_PATHS;
|
|
15
|
+
/**
|
|
16
|
+
* Combined list of ignored paths, computed once at class-load time.
|
|
17
|
+
*/
|
|
18
|
+
private static readonly IGNORED_PATHS;
|
|
15
19
|
/**
|
|
16
20
|
* Represents an API Gateway event for a request.
|
|
17
21
|
* @type {APIGatewayEvent}
|
|
@@ -21,6 +25,10 @@ export default class Request<InputType, PathParamsType, QueryParamsType> {
|
|
|
21
25
|
* The context object for the current instance.
|
|
22
26
|
*/
|
|
23
27
|
private context;
|
|
28
|
+
/**
|
|
29
|
+
* Cached result of whether this request is a health/monitoring endpoint.
|
|
30
|
+
*/
|
|
31
|
+
private readonly _isHealthCheckPath;
|
|
24
32
|
/**
|
|
25
33
|
* Constructs a new instance of the class.
|
|
26
34
|
* @param {APIGatewayEvent} requestEvent - The API Gateway event object.
|
|
@@ -29,6 +37,29 @@ export default class Request<InputType, PathParamsType, QueryParamsType> {
|
|
|
29
37
|
* @returns None
|
|
30
38
|
*/
|
|
31
39
|
constructor(requestEvent: APIGatewayEvent, context: Context, logger: Logger);
|
|
40
|
+
/**
|
|
41
|
+
* Builds a concise, sanitized request summary for logging.
|
|
42
|
+
* Avoid logging the full event object, raw body, or sensitive header values.
|
|
43
|
+
*/
|
|
44
|
+
private getRelevantLogData;
|
|
45
|
+
/**
|
|
46
|
+
* Detects queue-style event payloads such as SQS events.
|
|
47
|
+
*/
|
|
48
|
+
private isQueueEvent;
|
|
49
|
+
/**
|
|
50
|
+
* Builds a concise log payload for SQS-style record batches.
|
|
51
|
+
*/
|
|
52
|
+
private getQueueEventLogData;
|
|
53
|
+
private getUniqueRecordValues;
|
|
54
|
+
/**
|
|
55
|
+
* Parses record bodies when they are JSON strings; otherwise returns the raw value.
|
|
56
|
+
*/
|
|
57
|
+
private parseRecordBody;
|
|
58
|
+
/**
|
|
59
|
+
* Logs body shape instead of full request payload to keep logs useful and safe.
|
|
60
|
+
*/
|
|
61
|
+
private getBodyLogData;
|
|
62
|
+
private getBodySummary;
|
|
32
63
|
/**
|
|
33
64
|
* Checks if the path is a health check or monitoring endpoint that should not be logged verbosely.
|
|
34
65
|
* @param {string} path - The request path
|
|
@@ -81,6 +112,8 @@ export default class Request<InputType, PathParamsType, QueryParamsType> {
|
|
|
81
112
|
* @returns {string} The path of the request event.
|
|
82
113
|
*/
|
|
83
114
|
getPath(): string;
|
|
115
|
+
isHealthCheckPath(): boolean;
|
|
116
|
+
static isHealthCheckPath(path: string): boolean;
|
|
84
117
|
/**
|
|
85
118
|
* Retrieves the HTTP method of the current request.
|
|
86
119
|
* @returns {string} The HTTP method of the request.
|
package/dist/src/API/Request.js
CHANGED
|
@@ -15,19 +15,91 @@ class Request {
|
|
|
15
15
|
* @returns None
|
|
16
16
|
*/
|
|
17
17
|
constructor(requestEvent, context, logger) {
|
|
18
|
-
var _a, _b, _c, _d;
|
|
19
18
|
this.requestEvent = requestEvent;
|
|
20
19
|
this.context = context;
|
|
21
20
|
// Skip verbose logging for health check and monitoring endpoints
|
|
22
21
|
const path = requestEvent.path || '';
|
|
23
|
-
|
|
24
|
-
if (!
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
this._isHealthCheckPath = this.isHealthOrMonitoringPath(path);
|
|
23
|
+
if (!this._isHealthCheckPath) {
|
|
24
|
+
logger.info('Request:', this.getRelevantLogData(requestEvent, context));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Builds a concise, sanitized request summary for logging.
|
|
29
|
+
* Avoid logging the full event object, raw body, or sensitive header values.
|
|
30
|
+
*/
|
|
31
|
+
getRelevantLogData(requestEvent, context) {
|
|
32
|
+
var _a, _b, _c, _d;
|
|
33
|
+
if (this.isQueueEvent(requestEvent)) {
|
|
34
|
+
return this.getQueueEventLogData(requestEvent, context);
|
|
30
35
|
}
|
|
36
|
+
const headers = requestEvent.headers || {};
|
|
37
|
+
const queryParams = requestEvent.queryStringParameters || {};
|
|
38
|
+
const pathParams = requestEvent.pathParameters || {};
|
|
39
|
+
const body = this.getBody();
|
|
40
|
+
return Object.assign(Object.assign(Object.assign({ method: requestEvent.httpMethod, path: requestEvent.path, stage: (_a = requestEvent.requestContext) === null || _a === void 0 ? void 0 : _a.stage, requestId: context.awsRequestId || ((_b = requestEvent.requestContext) === null || _b === void 0 ? void 0 : _b.requestId), sourceIp: ((_d = (_c = requestEvent.requestContext) === null || _c === void 0 ? void 0 : _c.identity) === null || _d === void 0 ? void 0 : _d.sourceIp) || headers['x-forwarded-for'], userAgent: headers['User-Agent'] || headers['user-agent'], contentType: headers['Content-Type'] || headers['content-type'], contentLength: headers['Content-Length'] || headers['content-length'] }, (Object.keys(pathParams).length > 0 ? { pathParams } : {})), (Object.keys(queryParams).length > 0 ? { queryParams } : {})), this.getBodyLogData(body));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Detects queue-style event payloads such as SQS events.
|
|
44
|
+
*/
|
|
45
|
+
isQueueEvent(requestEvent) {
|
|
46
|
+
return Array.isArray(requestEvent === null || requestEvent === void 0 ? void 0 : requestEvent.Records);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Builds a concise log payload for SQS-style record batches.
|
|
50
|
+
*/
|
|
51
|
+
getQueueEventLogData(requestEvent, context) {
|
|
52
|
+
const records = requestEvent.Records || [];
|
|
53
|
+
const eventSources = this.getUniqueRecordValues(records, 'eventSource');
|
|
54
|
+
const queueArns = this.getUniqueRecordValues(records, 'eventSourceARN');
|
|
55
|
+
const regions = this.getUniqueRecordValues(records, 'awsRegion');
|
|
56
|
+
const messageIds = records.map(record => record.messageId).filter(Boolean);
|
|
57
|
+
const messageGroupIds = records.map(record => { var _a; return (_a = record.attributes) === null || _a === void 0 ? void 0 : _a.MessageGroupId; }).filter(Boolean);
|
|
58
|
+
const bodySummary = records.map(record => this.getBodySummary(this.parseRecordBody(record.body)));
|
|
59
|
+
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ eventType: eventSources.length === 1 ? eventSources[0] : eventSources, recordCount: records.length, requestId: context.awsRequestId }, (queueArns.length > 0
|
|
60
|
+
? { queueArn: queueArns.length === 1 ? queueArns[0] : queueArns }
|
|
61
|
+
: {})), (regions.length > 0 ? { region: regions.length === 1 ? regions[0] : regions } : {})), (messageIds.length > 0 ? { messageIds } : {})), (messageGroupIds.length > 0 ? { messageGroupIds: [...new Set(messageGroupIds)] } : {})), { body: records.length === 1 ? bodySummary[0] : bodySummary });
|
|
62
|
+
}
|
|
63
|
+
getUniqueRecordValues(records, key) {
|
|
64
|
+
return [...new Set(records.map(record => record[key]).filter(Boolean))];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parses record bodies when they are JSON strings; otherwise returns the raw value.
|
|
68
|
+
*/
|
|
69
|
+
parseRecordBody(body) {
|
|
70
|
+
if (typeof body !== 'string')
|
|
71
|
+
return body;
|
|
72
|
+
try {
|
|
73
|
+
return JSON.parse(body);
|
|
74
|
+
}
|
|
75
|
+
catch (_a) {
|
|
76
|
+
return body;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Logs body shape instead of full request payload to keep logs useful and safe.
|
|
81
|
+
*/
|
|
82
|
+
getBodyLogData(body) {
|
|
83
|
+
if (body == null)
|
|
84
|
+
return {};
|
|
85
|
+
return { body: this.getBodySummary(body) };
|
|
86
|
+
}
|
|
87
|
+
getBodySummary(body) {
|
|
88
|
+
if (body == null)
|
|
89
|
+
return { type: 'null' };
|
|
90
|
+
if (Array.isArray(body)) {
|
|
91
|
+
return { type: 'array', size: body.length };
|
|
92
|
+
}
|
|
93
|
+
if (Buffer.isBuffer(body)) {
|
|
94
|
+
return { type: 'buffer', size: body.length };
|
|
95
|
+
}
|
|
96
|
+
if (typeof body === 'object') {
|
|
97
|
+
return body;
|
|
98
|
+
}
|
|
99
|
+
if (typeof body === 'string') {
|
|
100
|
+
return { type: 'string', size: body.length };
|
|
101
|
+
}
|
|
102
|
+
return { type: typeof body };
|
|
31
103
|
}
|
|
32
104
|
/**
|
|
33
105
|
* Checks if the path is a health check or monitoring endpoint that should not be logged verbosely.
|
|
@@ -35,13 +107,8 @@ class Request {
|
|
|
35
107
|
* @returns {boolean} - True if it's a health/monitoring endpoint
|
|
36
108
|
*/
|
|
37
109
|
isHealthOrMonitoringPath(path) {
|
|
38
|
-
// Check environment variable for custom no-log paths
|
|
39
|
-
const envNoLogPaths = process.env.NO_LOG_PATHS;
|
|
40
|
-
const customPaths = envNoLogPaths ? envNoLogPaths.split(',').map(p => p.trim()) : [];
|
|
41
|
-
// Combine default and custom paths
|
|
42
|
-
const ignoredPaths = [...Request.DEFAULT_NO_LOG_PATHS, ...customPaths];
|
|
43
110
|
const lowerPath = path.toLowerCase();
|
|
44
|
-
return
|
|
111
|
+
return Request.IGNORED_PATHS.some(ignored => lowerPath === ignored || lowerPath.startsWith(ignored + '/'));
|
|
45
112
|
}
|
|
46
113
|
/**
|
|
47
114
|
* Checks if the specified query parameter exists and has a valid value.
|
|
@@ -118,6 +185,13 @@ class Request {
|
|
|
118
185
|
getPath() {
|
|
119
186
|
return this.requestEvent.path;
|
|
120
187
|
}
|
|
188
|
+
isHealthCheckPath() {
|
|
189
|
+
return this._isHealthCheckPath;
|
|
190
|
+
}
|
|
191
|
+
static isHealthCheckPath(path) {
|
|
192
|
+
const lowerPath = (path || '').toLowerCase();
|
|
193
|
+
return Request.IGNORED_PATHS.some(ignored => lowerPath === ignored || lowerPath.startsWith(ignored + '/'));
|
|
194
|
+
}
|
|
121
195
|
/**
|
|
122
196
|
* Retrieves the HTTP method of the current request.
|
|
123
197
|
* @returns {string} The HTTP method of the request.
|
|
@@ -204,7 +278,13 @@ Request.DEFAULT_NO_LOG_PATHS = [
|
|
|
204
278
|
'/liveness',
|
|
205
279
|
'/metrics',
|
|
206
280
|
'/_health',
|
|
207
|
-
|
|
281
|
+
];
|
|
282
|
+
/**
|
|
283
|
+
* Combined list of ignored paths, computed once at class-load time.
|
|
284
|
+
*/
|
|
285
|
+
Request.IGNORED_PATHS = [
|
|
286
|
+
...Request.DEFAULT_NO_LOG_PATHS,
|
|
287
|
+
...(process.env.NO_LOG_PATHS ? process.env.NO_LOG_PATHS.split(',').map(p => p.trim()) : []),
|
|
208
288
|
];
|
|
209
289
|
export default Request;
|
|
210
290
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Request.js","sourceRoot":"","sources":["../../../src/API/Request.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,kBAAkB,CAAA;AAEpC;;;;;;GAMG;AACH,MAAqB,OAAO;
|
|
1
|
+
{"version":3,"file":"Request.js","sourceRoot":"","sources":["../../../src/API/Request.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ export default class Transaction {
|
|
|
28
28
|
* @returns None
|
|
29
29
|
*/
|
|
30
30
|
constructor(event, context, config) {
|
|
31
|
+
var _a;
|
|
31
32
|
/**
|
|
32
33
|
* The instance of the DatabaseManager class used for managing the database.
|
|
33
34
|
*/
|
|
@@ -51,7 +52,8 @@ export default class Transaction {
|
|
|
51
52
|
this.syncReturn = !!(config === null || config === void 0 ? void 0 : config.syncReturn);
|
|
52
53
|
this.retrowErrors = !!(config === null || config === void 0 ? void 0 : config.throwOnErrors); /* retrow internal errors */
|
|
53
54
|
// components
|
|
54
|
-
|
|
55
|
+
const isHealthCheck = Request.isHealthCheckPath(event.path || '');
|
|
56
|
+
this.logger = new Logger(Object.assign(Object.assign({}, config === null || config === void 0 ? void 0 : config.logger), { silent: isHealthCheck || !!((_a = config === null || config === void 0 ? void 0 : config.logger) === null || _a === void 0 ? void 0 : _a.silent) }), transactionId);
|
|
55
57
|
this.request = new Request(this.event, this.context, this.logger);
|
|
56
58
|
this.publisher = new Publisher(config === null || config === void 0 ? void 0 : config.publisher);
|
|
57
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/BaseEvent/Transaction.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,OAAO,MAAM,mBAAmB,CAAA;AACvC,OAAO,QAA+B,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAQhE,OAAO,OAAO,MAAM,eAAe,CAAA;AACnC,OAAO,MAAwB,MAAM,qBAAqB,CAAA;AAC1D,OAAO,SAA8B,MAAM,2BAA2B,CAAA;AAkCtE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IA8D9B;;;;;;OAMG;IACH,YACE,KAAuD,EACvD,OAAgB,EAChB,MAA0B
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../../src/BaseEvent/Transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,8 @@ export declare enum LOG_LEVELS {
|
|
|
21
21
|
export type LoggerConfig = {
|
|
22
22
|
sensitiveFilteringKeywords?: boolean | Array<string>;
|
|
23
23
|
logLevel?: LOG_LEVELS | string;
|
|
24
|
+
/** When true, all log output is suppressed (e.g. health check routes). */
|
|
25
|
+
silent?: boolean;
|
|
24
26
|
};
|
|
25
27
|
/**
|
|
26
28
|
* Logger class for logging messages with different log levels.
|
|
@@ -17,6 +17,12 @@ export var LOG_LEVELS;
|
|
|
17
17
|
LOG_LEVELS["WARN"] = "WARN";
|
|
18
18
|
LOG_LEVELS["ERROR"] = "ERROR";
|
|
19
19
|
})(LOG_LEVELS || (LOG_LEVELS = {}));
|
|
20
|
+
const LOG_LEVEL_RANK = {
|
|
21
|
+
[LOG_LEVELS.DEBUG]: 0,
|
|
22
|
+
[LOG_LEVELS.INFO]: 1,
|
|
23
|
+
[LOG_LEVELS.WARN]: 2,
|
|
24
|
+
[LOG_LEVELS.ERROR]: 3,
|
|
25
|
+
};
|
|
20
26
|
/**
|
|
21
27
|
* A constant that represents the console object to be used for logging.
|
|
22
28
|
* If the console object has a property named 'notGlobalLogger', it is assumed
|
|
@@ -64,8 +70,10 @@ export default class Logger {
|
|
|
64
70
|
//
|
|
65
71
|
this.setupBindings();
|
|
66
72
|
//
|
|
67
|
-
|
|
68
|
-
|
|
73
|
+
if (!this.config.silent) {
|
|
74
|
+
this.log('Using logger with level: ' + this._LOG_LEVEL.toString());
|
|
75
|
+
this.debug('logger config: ', this.config);
|
|
76
|
+
}
|
|
69
77
|
}
|
|
70
78
|
/**
|
|
71
79
|
* Returns a boolean value indicating whether the notGlobalLogger function is executed successfully.
|
|
@@ -186,7 +194,10 @@ export default class Logger {
|
|
|
186
194
|
* @returns None
|
|
187
195
|
*/
|
|
188
196
|
processLog(level, args) {
|
|
189
|
-
|
|
197
|
+
var _a;
|
|
198
|
+
if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.silent)
|
|
199
|
+
return;
|
|
200
|
+
if (LOG_LEVEL_RANK[level] < LOG_LEVEL_RANK[this._LOG_LEVEL])
|
|
190
201
|
return;
|
|
191
202
|
//get args
|
|
192
203
|
const msg = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/Logger/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAC3C,OAAO,UAAU,MAAM,aAAa,CAAA;AAEpC,OAAO,KAAK,MAAM,kBAAkB,CAAA;AAEpC;;;;;;;GAOG;AACH,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,6BAAe,CAAA;IACf,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,6BAAe,CAAA;AACjB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AACD;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;AAC7E;;;GAGG;AACH,MAAM,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AAEhE;;;;;GAKG;AACH,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAClF,CAAC,CAAC,WAAW,EAAE,CAChB,CAAA;
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/Logger/Logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import GenericHandlerEvent from './GenericHandlerEvent.js';
|
|
11
|
+
import WapiRequest from '../../../API/Request.js';
|
|
11
12
|
import Globals from '../../../Globals.js';
|
|
13
|
+
import Logger from '../../../Logger/Logger.js';
|
|
12
14
|
import Utils from '../../../Util/Utils.js';
|
|
15
|
+
const logger = new Logger({ logLevel: 'INFO' }, 'proxy-container');
|
|
13
16
|
/**
|
|
14
17
|
* Creates an async function that handles serverless events and sends a response.
|
|
15
18
|
* @param {Server['handleServerlessEvent']} serverlessHandler - The serverless handler function.
|
|
@@ -33,11 +36,13 @@ export default (serverlessHandler) => {
|
|
|
33
36
|
processServerlessResponse(invokationResp, res);
|
|
34
37
|
}
|
|
35
38
|
catch (e) {
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
logger.error('[Proxy] - Exception during execution!', e);
|
|
40
|
+
logger.error(e.stack);
|
|
38
41
|
res.status(Globals.Resp_STATUSCODE_EXCEPTION).json(Object.assign(Object.assign({}, e), { err: Globals.Resp_MSG_EXCEPTION, errCode: Globals.Resp_CODE_EXCEPTION }));
|
|
39
42
|
}
|
|
40
|
-
|
|
43
|
+
if (!WapiRequest.isHealthCheckPath(request.path)) {
|
|
44
|
+
logger.info(`[Proxy] - Request took ${Date.now() - startTime}ms`);
|
|
45
|
+
}
|
|
41
46
|
});
|
|
42
47
|
};
|
|
43
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericHandler.js","sourceRoot":"","sources":["../../../../../src/Server/lib/container/GenericHandler.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,mBAAoD,MAAM,0BAA0B,CAAA;AAC3F,OAAO,OAAO,MAAM,qBAAqB,CAAA;AACzC,OAAO,KAAK,MAAM,wBAAwB,CAAA;AAG1C;;;;GAIG;AACH,eAAe,CAAC,iBAAkD,EAAE,EAAE;IACpE;;;;;OAKG;IACH,OAAO,CAAO,OAAgB,EAAE,GAAa,EAAE,EAAE;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC;YACH,qEAAqE;YACrE,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;YACjE,SAAS;YACT,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAA;YAC3C,UAAU;YACV,yBAAyB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,
|
|
1
|
+
{"version":3,"file":"GenericHandler.js","sourceRoot":"","sources":["../../../../../src/Server/lib/container/GenericHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../index.ts","../src/
|
|
1
|
+
{"root":["../index.ts","../src/Globals.ts","../src/API/Request.ts","../src/API/Response.ts","../src/BaseEvent/DynamoTransaction.ts","../src/BaseEvent/EventProcessor.ts","../src/BaseEvent/Process.ts","../src/BaseEvent/Transaction.ts","../src/Cache/Redis.ts","../src/Cache/types.ts","../src/Config/Configuration.ts","../src/Config/EnvironmentVar.ts","../src/Crypto/Crypto.ts","../src/Crypto/JWT.ts","../src/Database/Database.ts","../src/Database/DatabaseManager.ts","../src/Database/DatabaseTransaction.ts","../src/Database/index.ts","../src/Database/types.ts","../src/Database/integrations/dynamo/DynamoDatabase.ts","../src/Database/integrations/knex/KnexDatabase.ts","../src/Database/integrations/knex/KnexTransaction.ts","../src/Database/integrations/kysely/KyselyDatabase.ts","../src/Database/integrations/kysely/KyselyTransaction.ts","../src/Database/integrations/pgsql/PostgresDatabase.ts","../src/Database/integrations/pgsql/PostgresTransaction.ts","../src/Logger/Logger.ts","../src/Mailer/Mailer.ts","../src/Publisher/Publisher.ts","../src/Server/RouteResolver.ts","../src/Server/Router.ts","../src/Server/lib/ContainerServer.ts","../src/Server/lib/Server.ts","../src/Server/lib/container/GenericHandler.ts","../src/Server/lib/container/GenericHandlerEvent.ts","../src/Server/lib/container/HealthHandler.ts","../src/Server/lib/container/Proxy.ts","../src/Server/lib/container/Utils.ts","../src/Util/AsyncSingleton.ts","../src/Util/Utils.ts","../src/Validation/Validator.ts","../package-lock.json","../package.json"],"version":"5.6.2"}
|
package/package.json
CHANGED
package/src/API/Request.ts
CHANGED
|
@@ -25,7 +25,14 @@ export default class Request<InputType, PathParamsType, QueryParamsType> {
|
|
|
25
25
|
'/liveness',
|
|
26
26
|
'/metrics',
|
|
27
27
|
'/_health',
|
|
28
|
-
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Combined list of ignored paths, computed once at class-load time.
|
|
32
|
+
*/
|
|
33
|
+
private static readonly IGNORED_PATHS: string[] = [
|
|
34
|
+
...Request.DEFAULT_NO_LOG_PATHS,
|
|
35
|
+
...(process.env.NO_LOG_PATHS ? process.env.NO_LOG_PATHS.split(',').map(p => p.trim()) : []),
|
|
29
36
|
]
|
|
30
37
|
|
|
31
38
|
/**
|
|
@@ -37,6 +44,10 @@ export default class Request<InputType, PathParamsType, QueryParamsType> {
|
|
|
37
44
|
* The context object for the current instance.
|
|
38
45
|
*/
|
|
39
46
|
private context: Context
|
|
47
|
+
/**
|
|
48
|
+
* Cached result of whether this request is a health/monitoring endpoint.
|
|
49
|
+
*/
|
|
50
|
+
private readonly _isHealthCheckPath: boolean
|
|
40
51
|
|
|
41
52
|
/**
|
|
42
53
|
* Constructs a new instance of the class.
|
|
@@ -51,40 +62,137 @@ export default class Request<InputType, PathParamsType, QueryParamsType> {
|
|
|
51
62
|
|
|
52
63
|
// Skip verbose logging for health check and monitoring endpoints
|
|
53
64
|
const path = requestEvent.path || ''
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// Only log essential info for actual business requests (not full event object)
|
|
58
|
-
logger.debug('Request:', {
|
|
59
|
-
method: requestEvent.httpMethod,
|
|
60
|
-
path,
|
|
61
|
-
requestId: context.awsRequestId,
|
|
62
|
-
sourceIp: requestEvent.requestContext?.identity?.sourceIp,
|
|
63
|
-
userAgent: requestEvent.headers?.['User-Agent'] || requestEvent.headers?.['user-agent'],
|
|
64
|
-
// Only log if query params exist
|
|
65
|
-
...(requestEvent.queryStringParameters &&
|
|
66
|
-
Object.keys(requestEvent.queryStringParameters).length > 0
|
|
67
|
-
? { queryParams: Object.keys(requestEvent.queryStringParameters) }
|
|
68
|
-
: {}),
|
|
69
|
-
})
|
|
65
|
+
this._isHealthCheckPath = this.isHealthOrMonitoringPath(path)
|
|
66
|
+
if (!this._isHealthCheckPath) {
|
|
67
|
+
logger.info('Request:', this.getRelevantLogData(requestEvent, context))
|
|
70
68
|
}
|
|
71
69
|
}
|
|
72
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Builds a concise, sanitized request summary for logging.
|
|
73
|
+
* Avoid logging the full event object, raw body, or sensitive header values.
|
|
74
|
+
*/
|
|
75
|
+
private getRelevantLogData(requestEvent: APIGatewayEvent, context: Context): Record<string, any> {
|
|
76
|
+
if (this.isQueueEvent(requestEvent)) {
|
|
77
|
+
return this.getQueueEventLogData(requestEvent, context)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const headers = requestEvent.headers || {}
|
|
81
|
+
const queryParams = requestEvent.queryStringParameters || {}
|
|
82
|
+
const pathParams = requestEvent.pathParameters || {}
|
|
83
|
+
const body = this.getBody()
|
|
84
|
+
|
|
85
|
+
return {
|
|
86
|
+
method: requestEvent.httpMethod,
|
|
87
|
+
path: requestEvent.path,
|
|
88
|
+
stage: requestEvent.requestContext?.stage,
|
|
89
|
+
requestId: context.awsRequestId || requestEvent.requestContext?.requestId,
|
|
90
|
+
sourceIp: requestEvent.requestContext?.identity?.sourceIp || headers['x-forwarded-for'],
|
|
91
|
+
userAgent: headers['User-Agent'] || headers['user-agent'],
|
|
92
|
+
contentType: headers['Content-Type'] || headers['content-type'],
|
|
93
|
+
contentLength: headers['Content-Length'] || headers['content-length'],
|
|
94
|
+
...(Object.keys(pathParams).length > 0 ? { pathParams } : {}),
|
|
95
|
+
...(Object.keys(queryParams).length > 0 ? { queryParams } : {}),
|
|
96
|
+
...this.getBodyLogData(body),
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Detects queue-style event payloads such as SQS events.
|
|
102
|
+
*/
|
|
103
|
+
private isQueueEvent(requestEvent: any): requestEvent is {
|
|
104
|
+
Records: Array<Record<string, any>>
|
|
105
|
+
} {
|
|
106
|
+
return Array.isArray(requestEvent?.Records)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Builds a concise log payload for SQS-style record batches.
|
|
111
|
+
*/
|
|
112
|
+
private getQueueEventLogData(
|
|
113
|
+
requestEvent: { Records: Array<Record<string, any>> },
|
|
114
|
+
context: Context
|
|
115
|
+
): Record<string, any> {
|
|
116
|
+
const records = requestEvent.Records || []
|
|
117
|
+
const eventSources = this.getUniqueRecordValues(records, 'eventSource')
|
|
118
|
+
const queueArns = this.getUniqueRecordValues(records, 'eventSourceARN')
|
|
119
|
+
const regions = this.getUniqueRecordValues(records, 'awsRegion')
|
|
120
|
+
const messageIds = records.map(record => record.messageId).filter(Boolean)
|
|
121
|
+
const messageGroupIds = records.map(record => record.attributes?.MessageGroupId).filter(Boolean)
|
|
122
|
+
const bodySummary = records.map(record =>
|
|
123
|
+
this.getBodySummary(this.parseRecordBody(record.body))
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
return {
|
|
127
|
+
eventType: eventSources.length === 1 ? eventSources[0] : eventSources,
|
|
128
|
+
recordCount: records.length,
|
|
129
|
+
requestId: context.awsRequestId,
|
|
130
|
+
...(queueArns.length > 0
|
|
131
|
+
? { queueArn: queueArns.length === 1 ? queueArns[0] : queueArns }
|
|
132
|
+
: {}),
|
|
133
|
+
...(regions.length > 0 ? { region: regions.length === 1 ? regions[0] : regions } : {}),
|
|
134
|
+
...(messageIds.length > 0 ? { messageIds } : {}),
|
|
135
|
+
...(messageGroupIds.length > 0 ? { messageGroupIds: [...new Set(messageGroupIds)] } : {}),
|
|
136
|
+
body: records.length === 1 ? bodySummary[0] : bodySummary,
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
private getUniqueRecordValues(records: Array<Record<string, any>>, key: string): string[] {
|
|
141
|
+
return [...new Set(records.map(record => record[key]).filter(Boolean))]
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Parses record bodies when they are JSON strings; otherwise returns the raw value.
|
|
146
|
+
*/
|
|
147
|
+
private parseRecordBody(body: unknown): unknown {
|
|
148
|
+
if (typeof body !== 'string') return body
|
|
149
|
+
|
|
150
|
+
try {
|
|
151
|
+
return JSON.parse(body)
|
|
152
|
+
} catch {
|
|
153
|
+
return body
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Logs body shape instead of full request payload to keep logs useful and safe.
|
|
159
|
+
*/
|
|
160
|
+
private getBodyLogData(body: unknown): Record<string, any> {
|
|
161
|
+
if (body == null) return {}
|
|
162
|
+
|
|
163
|
+
return { body: this.getBodySummary(body) }
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
private getBodySummary(body: unknown): Record<string, any> {
|
|
167
|
+
if (body == null) return { type: 'null' }
|
|
168
|
+
|
|
169
|
+
if (Array.isArray(body)) {
|
|
170
|
+
return { type: 'array', size: body.length }
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (Buffer.isBuffer(body)) {
|
|
174
|
+
return { type: 'buffer', size: body.length }
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (typeof body === 'object') {
|
|
178
|
+
return body as Record<string, unknown>
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (typeof body === 'string') {
|
|
182
|
+
return { type: 'string', size: body.length }
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return { type: typeof body }
|
|
186
|
+
}
|
|
187
|
+
|
|
73
188
|
/**
|
|
74
189
|
* Checks if the path is a health check or monitoring endpoint that should not be logged verbosely.
|
|
75
190
|
* @param {string} path - The request path
|
|
76
191
|
* @returns {boolean} - True if it's a health/monitoring endpoint
|
|
77
192
|
*/
|
|
78
193
|
private isHealthOrMonitoringPath(path: string): boolean {
|
|
79
|
-
// Check environment variable for custom no-log paths
|
|
80
|
-
const envNoLogPaths = process.env.NO_LOG_PATHS
|
|
81
|
-
const customPaths = envNoLogPaths ? envNoLogPaths.split(',').map(p => p.trim()) : []
|
|
82
|
-
|
|
83
|
-
// Combine default and custom paths
|
|
84
|
-
const ignoredPaths = [...Request.DEFAULT_NO_LOG_PATHS, ...customPaths]
|
|
85
|
-
|
|
86
194
|
const lowerPath = path.toLowerCase()
|
|
87
|
-
return
|
|
195
|
+
return Request.IGNORED_PATHS.some(
|
|
88
196
|
ignored => lowerPath === ignored || lowerPath.startsWith(ignored + '/')
|
|
89
197
|
)
|
|
90
198
|
}
|
|
@@ -176,6 +284,17 @@ export default class Request<InputType, PathParamsType, QueryParamsType> {
|
|
|
176
284
|
return this.requestEvent.path
|
|
177
285
|
}
|
|
178
286
|
|
|
287
|
+
public isHealthCheckPath(): boolean {
|
|
288
|
+
return this._isHealthCheckPath
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
public static isHealthCheckPath(path: string): boolean {
|
|
292
|
+
const lowerPath = (path || '').toLowerCase()
|
|
293
|
+
return Request.IGNORED_PATHS.some(
|
|
294
|
+
ignored => lowerPath === ignored || lowerPath.startsWith(ignored + '/')
|
|
295
|
+
)
|
|
296
|
+
}
|
|
297
|
+
|
|
179
298
|
/**
|
|
180
299
|
* Retrieves the HTTP method of the current request.
|
|
181
300
|
* @returns {string} The HTTP method of the request.
|
|
@@ -140,7 +140,11 @@ export default class Transaction<
|
|
|
140
140
|
this.syncReturn = !!config?.syncReturn
|
|
141
141
|
this.retrowErrors = !!config?.throwOnErrors /* retrow internal errors */
|
|
142
142
|
// components
|
|
143
|
-
|
|
143
|
+
const isHealthCheck = Request.isHealthCheckPath((<APIGatewayEvent>event).path || '')
|
|
144
|
+
this.logger = new Logger(
|
|
145
|
+
{ ...config?.logger, silent: isHealthCheck || !!config?.logger?.silent },
|
|
146
|
+
transactionId
|
|
147
|
+
)
|
|
144
148
|
this.request = new Request<InputType, PathParamsType, QueryParamsType>(
|
|
145
149
|
this.event,
|
|
146
150
|
this.context,
|
package/src/Logger/Logger.ts
CHANGED
|
@@ -18,6 +18,13 @@ export enum LOG_LEVELS {
|
|
|
18
18
|
WARN = 'WARN',
|
|
19
19
|
ERROR = 'ERROR',
|
|
20
20
|
}
|
|
21
|
+
|
|
22
|
+
const LOG_LEVEL_RANK: Record<LOG_LEVELS, number> = {
|
|
23
|
+
[LOG_LEVELS.DEBUG]: 0,
|
|
24
|
+
[LOG_LEVELS.INFO]: 1,
|
|
25
|
+
[LOG_LEVELS.WARN]: 2,
|
|
26
|
+
[LOG_LEVELS.ERROR]: 3,
|
|
27
|
+
}
|
|
21
28
|
/**
|
|
22
29
|
* A constant that represents the console object to be used for logging.
|
|
23
30
|
* If the console object has a property named 'notGlobalLogger', it is assumed
|
|
@@ -51,6 +58,8 @@ const blacklist = ['password', 'token', 'accounts', 'authorization', 'key'].map(
|
|
|
51
58
|
export type LoggerConfig = {
|
|
52
59
|
sensitiveFilteringKeywords?: boolean | Array<string>
|
|
53
60
|
logLevel?: LOG_LEVELS | string
|
|
61
|
+
/** When true, all log output is suppressed (e.g. health check routes). */
|
|
62
|
+
silent?: boolean
|
|
54
63
|
}
|
|
55
64
|
|
|
56
65
|
type SupressableItem = {
|
|
@@ -113,8 +122,10 @@ export default class Logger {
|
|
|
113
122
|
//
|
|
114
123
|
this.setupBindings()
|
|
115
124
|
//
|
|
116
|
-
|
|
117
|
-
|
|
125
|
+
if (!this.config.silent) {
|
|
126
|
+
this.log('Using logger with level: ' + this._LOG_LEVEL.toString())
|
|
127
|
+
this.debug('logger config: ', this.config)
|
|
128
|
+
}
|
|
118
129
|
}
|
|
119
130
|
|
|
120
131
|
/**
|
|
@@ -245,7 +256,8 @@ export default class Logger {
|
|
|
245
256
|
* @returns None
|
|
246
257
|
*/
|
|
247
258
|
private processLog(level: LOG_LEVELS, args: any): void {
|
|
248
|
-
if (
|
|
259
|
+
if (this.config?.silent) return
|
|
260
|
+
if (LOG_LEVEL_RANK[level] < LOG_LEVEL_RANK[this._LOG_LEVEL]) return
|
|
249
261
|
//get args
|
|
250
262
|
const msg: string[] = []
|
|
251
263
|
for (const arg of args) {
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Request, Response } from 'express'
|
|
2
2
|
|
|
3
3
|
import GenericHandlerEvent, { GenericHandlerEventResponse } from './GenericHandlerEvent.js'
|
|
4
|
+
import WapiRequest from '../../../API/Request.js'
|
|
4
5
|
import Globals from '../../../Globals.js'
|
|
6
|
+
import Logger from '../../../Logger/Logger.js'
|
|
5
7
|
import Utils from '../../../Util/Utils.js'
|
|
6
8
|
import Server from '../Server.js'
|
|
7
9
|
|
|
10
|
+
const logger = new Logger({ logLevel: 'INFO' }, 'proxy-container')
|
|
11
|
+
|
|
8
12
|
/**
|
|
9
13
|
* Creates an async function that handles serverless events and sends a response.
|
|
10
14
|
* @param {Server['handleServerlessEvent']} serverlessHandler - The serverless handler function.
|
|
@@ -27,15 +31,17 @@ export default (serverlessHandler: Server['handleServerlessEvent']) => {
|
|
|
27
31
|
// Respond
|
|
28
32
|
processServerlessResponse(invokationResp, res)
|
|
29
33
|
} catch (e) {
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
logger.error('[Proxy] - Exception during execution!', e)
|
|
35
|
+
logger.error(e.stack)
|
|
32
36
|
res.status(Globals.Resp_STATUSCODE_EXCEPTION).json({
|
|
33
37
|
...e,
|
|
34
38
|
err: Globals.Resp_MSG_EXCEPTION,
|
|
35
39
|
errCode: Globals.Resp_CODE_EXCEPTION,
|
|
36
40
|
})
|
|
37
41
|
}
|
|
38
|
-
|
|
42
|
+
if (!WapiRequest.isHealthCheckPath(request.path)) {
|
|
43
|
+
logger.info(`[Proxy] - Request took ${Date.now() - startTime}ms`)
|
|
44
|
+
}
|
|
39
45
|
}
|
|
40
46
|
}
|
|
41
47
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { jest, expect as jestExpect } from '@jest/globals'
|
|
1
2
|
import { APIGatewayEvent, Context } from 'aws-lambda'
|
|
2
3
|
import { expect } from 'chai'
|
|
3
4
|
|
|
@@ -179,6 +180,64 @@ describe('Request body', () => {
|
|
|
179
180
|
})
|
|
180
181
|
})
|
|
181
182
|
|
|
183
|
+
describe('Request health check path detection', () => {
|
|
184
|
+
test('/ is NOT treated as a health check path', () => {
|
|
185
|
+
const r = newReq({ path: '/' })
|
|
186
|
+
expect(r.isHealthCheckPath()).to.be.false
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
test('/health is a health check path', () => {
|
|
190
|
+
const r = newReq({ path: '/health' })
|
|
191
|
+
expect(r.isHealthCheckPath()).to.be.true
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
test('/ping is a health check path', () => {
|
|
195
|
+
const r = newReq({ path: '/ping' })
|
|
196
|
+
expect(r.isHealthCheckPath()).to.be.true
|
|
197
|
+
})
|
|
198
|
+
|
|
199
|
+
test('/api/users is NOT a health check path', () => {
|
|
200
|
+
const r = newReq({ path: '/api/users' })
|
|
201
|
+
expect(r.isHealthCheckPath()).to.be.false
|
|
202
|
+
})
|
|
203
|
+
})
|
|
204
|
+
|
|
205
|
+
describe('Request body logging', () => {
|
|
206
|
+
test('Object body logs full object, not just keys summary', () => {
|
|
207
|
+
const logger = new Logger({ logLevel: 'DEBUG' }, '123-456')
|
|
208
|
+
const infoSpy = jest.spyOn(logger, 'info')
|
|
209
|
+
new Request<any, any, any>(
|
|
210
|
+
<any>{ path: '/api/users', body: { name: 'Joe', role: 'admin' } },
|
|
211
|
+
<any>{},
|
|
212
|
+
logger
|
|
213
|
+
)
|
|
214
|
+
jestExpect(infoSpy).toHaveBeenCalledWith(
|
|
215
|
+
'Request:',
|
|
216
|
+
jestExpect.objectContaining({
|
|
217
|
+
body: jestExpect.objectContaining({ name: 'Joe', role: 'admin' }),
|
|
218
|
+
})
|
|
219
|
+
)
|
|
220
|
+
infoSpy.mockRestore()
|
|
221
|
+
})
|
|
222
|
+
|
|
223
|
+
test('Object body with sensitive keys are redacted by logger', () => {
|
|
224
|
+
const logger = new Logger({ logLevel: 'DEBUG', sensitiveFilteringKeywords: true }, '123-456')
|
|
225
|
+
const infoSpy = jest.spyOn(logger, 'info')
|
|
226
|
+
new Request<any, any, any>(
|
|
227
|
+
<any>{ path: '/api/users', body: { name: 'Joe', password: 'secret' } },
|
|
228
|
+
<any>{},
|
|
229
|
+
logger
|
|
230
|
+
)
|
|
231
|
+
jestExpect(infoSpy).toHaveBeenCalledWith(
|
|
232
|
+
'Request:',
|
|
233
|
+
jestExpect.objectContaining({
|
|
234
|
+
body: jestExpect.objectContaining({ name: 'Joe', password: 'secret' }),
|
|
235
|
+
})
|
|
236
|
+
)
|
|
237
|
+
infoSpy.mockRestore()
|
|
238
|
+
})
|
|
239
|
+
})
|
|
240
|
+
|
|
182
241
|
describe('Request path/method', () => {
|
|
183
242
|
test('Null path/method', () => {
|
|
184
243
|
const r = newReq({
|
|
@@ -259,4 +259,52 @@ describe('Logger', () => {
|
|
|
259
259
|
// testLogs(true)
|
|
260
260
|
})
|
|
261
261
|
|
|
262
|
+
describe('Logger - Log level filtering', () => {
|
|
263
|
+
function capturedLogger(logLevel: string) {
|
|
264
|
+
const logger = new Logger({ logLevel, silent: false }, transactionID)
|
|
265
|
+
const captured: Array<{ level: string; msg: string }> = []
|
|
266
|
+
;(logger as any).pushLog = (level: string, msg: string) => captured.push({ level, msg })
|
|
267
|
+
return { logger, captured }
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
test('logLevel ERROR suppresses info and warn but not error', () => {
|
|
271
|
+
const { logger, captured } = capturedLogger('ERROR')
|
|
272
|
+
logger.info('should be suppressed')
|
|
273
|
+
logger.warn('should be suppressed')
|
|
274
|
+
expect(captured).toHaveLength(0)
|
|
275
|
+
logger.error('should appear')
|
|
276
|
+
expect(captured).toHaveLength(1)
|
|
277
|
+
expect(captured[0].msg).toContain('[ERROR]')
|
|
278
|
+
})
|
|
279
|
+
|
|
280
|
+
test('logLevel WARN suppresses debug and info but not warn or error', () => {
|
|
281
|
+
const { logger, captured } = capturedLogger('WARN')
|
|
282
|
+
logger.debug('should be suppressed')
|
|
283
|
+
logger.info('should be suppressed')
|
|
284
|
+
expect(captured).toHaveLength(0)
|
|
285
|
+
logger.warn('should appear')
|
|
286
|
+
logger.error('should appear')
|
|
287
|
+
expect(captured).toHaveLength(2)
|
|
288
|
+
})
|
|
289
|
+
|
|
290
|
+
test('logLevel INFO suppresses debug but not info, warn, or error', () => {
|
|
291
|
+
const { logger, captured } = capturedLogger('INFO')
|
|
292
|
+
logger.debug('should be suppressed')
|
|
293
|
+
expect(captured).toHaveLength(0)
|
|
294
|
+
logger.info('should appear')
|
|
295
|
+
logger.warn('should appear')
|
|
296
|
+
logger.error('should appear')
|
|
297
|
+
expect(captured).toHaveLength(3)
|
|
298
|
+
})
|
|
299
|
+
|
|
300
|
+
test('logLevel DEBUG passes all levels', () => {
|
|
301
|
+
const { logger, captured } = capturedLogger('DEBUG')
|
|
302
|
+
logger.debug('d')
|
|
303
|
+
logger.info('i')
|
|
304
|
+
logger.warn('w')
|
|
305
|
+
logger.error('e')
|
|
306
|
+
expect(captured).toHaveLength(4)
|
|
307
|
+
})
|
|
308
|
+
})
|
|
309
|
+
|
|
262
310
|
export {}
|