@webpieces/http-server 0.3.382 → 0.3.384
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webpieces/http-server",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.384",
|
|
4
4
|
"description": "WebPieces server with filter chain and dependency injection",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./src/index.js",
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
"access": "public"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@webpieces/core-context": "0.3.
|
|
26
|
-
"@webpieces/core-util": "0.3.
|
|
27
|
-
"@webpieces/gcp-identity": "0.3.
|
|
28
|
-
"@webpieces/http-routing": "0.3.
|
|
25
|
+
"@webpieces/core-context": "0.3.384",
|
|
26
|
+
"@webpieces/core-util": "0.3.384",
|
|
27
|
+
"@webpieces/gcp-identity": "0.3.384",
|
|
28
|
+
"@webpieces/http-routing": "0.3.384",
|
|
29
29
|
"cors": "2.8.5",
|
|
30
30
|
"express": "5.1.0",
|
|
31
31
|
"inversify": "7.10.4"
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { MethodMeta } from '@webpieces/http-routing';
|
|
2
2
|
import { Filter, WpResponse, Service } from '@webpieces/http-routing';
|
|
3
3
|
export declare class LogApiFilter extends Filter<MethodMeta, WpResponse<unknown>> {
|
|
4
|
-
private logApiCall;
|
|
5
|
-
constructor();
|
|
6
4
|
filter(meta: MethodMeta, nextFilter: Service<MethodMeta, WpResponse<unknown>>): Promise<WpResponse<unknown>>;
|
|
7
5
|
}
|
|
@@ -12,10 +12,10 @@ const core_util_2 = require("@webpieces/core-util");
|
|
|
12
12
|
* Priority: 1800 (after ContextFilter at 2000, before custom filters)
|
|
13
13
|
*
|
|
14
14
|
* Logging patterns (via LogApiCall):
|
|
15
|
-
* - [API-
|
|
16
|
-
* - [API-
|
|
17
|
-
* - [API-
|
|
18
|
-
* - [API-
|
|
15
|
+
* - [API-server-req] Class.method /url request={...}
|
|
16
|
+
* - [API-server-resp-SUCCESS] Class.method response={...}
|
|
17
|
+
* - [API-server-resp-FAIL] Class.method error=... (server errors: 500, 502, 504)
|
|
18
|
+
* - [API-server-resp-OTHER] Class.method errorType=... (user errors: 400, 401, 403, 404, 266)
|
|
19
19
|
*
|
|
20
20
|
* Headers are read from RequestContext (NOT from meta.requestHeaders which is undefined
|
|
21
21
|
* after ContextFilter runs at priority 2000).
|
|
@@ -25,27 +25,22 @@ const core_util_2 = require("@webpieces/core-util");
|
|
|
25
25
|
*/
|
|
26
26
|
const log = core_util_1.LogManager.getLogger('LogApiFilter');
|
|
27
27
|
let LogApiFilter = class LogApiFilter extends http_routing_2.Filter {
|
|
28
|
-
logApiCall;
|
|
29
|
-
constructor() {
|
|
30
|
-
super();
|
|
31
|
-
// Context fields are stamped onto each record by the logging BACKEND (bunyan/winston read
|
|
32
|
-
// RequestContext.buildLogFields()); this filter no longer collects them.
|
|
33
|
-
this.logApiCall = new core_util_2.LogApiCall();
|
|
34
|
-
}
|
|
35
28
|
async filter(meta, nextFilter) {
|
|
36
29
|
// Wrap nextFilter.invoke in a method that returns the response
|
|
37
30
|
const method = async () => {
|
|
38
31
|
const wpResponse = await nextFilter.invoke(meta);
|
|
39
32
|
return wpResponse.response;
|
|
40
33
|
};
|
|
41
|
-
|
|
34
|
+
// LogApiCall is a singleton (use it directly, no `new`). It logs the text lines AND stamps the
|
|
35
|
+
// structured `api={side:'server',...}` tag into RequestContext, so every log line during the
|
|
36
|
+
// request carries jsonPayload.api. Correlation fields (requestId, ...) are added by the backend.
|
|
37
|
+
const response = await core_util_2.LogApiCall.execute('server', meta.routeMeta, meta.requestDto, method);
|
|
42
38
|
return new http_routing_2.WpResponse(response);
|
|
43
39
|
}
|
|
44
40
|
};
|
|
45
41
|
exports.LogApiFilter = LogApiFilter;
|
|
46
42
|
exports.LogApiFilter = LogApiFilter = tslib_1.__decorate([
|
|
47
43
|
(0, http_routing_1.provideFrameworkSingleton)(),
|
|
48
|
-
(0, inversify_1.injectable)()
|
|
49
|
-
tslib_1.__metadata("design:paramtypes", [])
|
|
44
|
+
(0, inversify_1.injectable)()
|
|
50
45
|
], LogApiFilter);
|
|
51
46
|
//# sourceMappingURL=LogApiFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogApiFilter.js","sourceRoot":"","sources":["../../../../../../packages/http/http-server/src/filters/LogApiFilter.ts"],"names":[],"mappings":";;;;AAAA,yCAAuC;AACvC,0DAA8E;AAC9E,0DAAsE;AACtE,oDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"LogApiFilter.js","sourceRoot":"","sources":["../../../../../../packages/http/http-server/src/filters/LogApiFilter.ts"],"names":[],"mappings":";;;;AAAA,yCAAuC;AACvC,0DAA8E;AAC9E,0DAAsE;AACtE,oDAAkD;AAClD,oDAAkD;AAElD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,GAAG,GAAG,sBAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAI1C,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,qBAAuC;IAErE,KAAK,CAAC,MAAM,CACR,IAAgB,EAChB,UAAoD;QAEpD,+DAA+D;QAC/D,MAAM,MAAM,GAAG,KAAK,IAAsB,EAAE;YACxC,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,UAAU,CAAC,QAAQ,CAAC;QAC/B,CAAC,CAAC;QAEF,+FAA+F;QAC/F,6FAA6F;QAC7F,iGAAiG;QACjG,MAAM,QAAQ,GAAG,MAAM,sBAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7F,OAAO,IAAI,yBAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;CACJ,CAAA;AAlBY,oCAAY;uBAAZ,YAAY;IAFxB,IAAA,wCAAyB,GAAE;IAC3B,IAAA,sBAAU,GAAE;GACA,YAAY,CAkBxB","sourcesContent":["import { injectable } from 'inversify';\nimport {provideFrameworkSingleton, MethodMeta} from '@webpieces/http-routing';\nimport { Filter, WpResponse, Service } from '@webpieces/http-routing';\nimport { LogManager } from '@webpieces/core-util';\nimport { LogApiCall } from '@webpieces/core-util';\n\n/**\n * LogApiFilter - Structured API logging for all requests/responses.\n * Priority: 1800 (after ContextFilter at 2000, before custom filters)\n *\n * Logging patterns (via LogApiCall):\n * - [API-server-req] Class.method /url request={...}\n * - [API-server-resp-SUCCESS] Class.method response={...}\n * - [API-server-resp-FAIL] Class.method error=... (server errors: 500, 502, 504)\n * - [API-server-resp-OTHER] Class.method errorType=... (user errors: 400, 401, 403, 404, 266)\n *\n * Headers are read from RequestContext (NOT from meta.requestHeaders which is undefined\n * after ContextFilter runs at priority 2000).\n *\n * User errors (HttpBadRequestError, etc.) are logged as OTHER, not FAIL,\n * because they are expected behavior from the server's perspective.\n */\nconst log = LogManager.getLogger('LogApiFilter');\n\n@provideFrameworkSingleton()\n@injectable()\nexport class LogApiFilter extends Filter<MethodMeta, WpResponse<unknown>> {\n\n async filter(\n meta: MethodMeta,\n nextFilter: Service<MethodMeta, WpResponse<unknown>>,\n ): Promise<WpResponse<unknown>> {\n // Wrap nextFilter.invoke in a method that returns the response\n const method = async (): Promise<unknown> => {\n const wpResponse = await nextFilter.invoke(meta);\n return wpResponse.response;\n };\n\n // LogApiCall is a singleton (use it directly, no `new`). It logs the text lines AND stamps the\n // structured `api={side:'server',...}` tag into RequestContext, so every log line during the\n // request carries jsonPayload.api. Correlation fields (requestId, ...) are added by the backend.\n const response = await LogApiCall.execute('server', meta.routeMeta, meta.requestDto, method);\n return new WpResponse(response);\n }\n}\n"]}
|