@cryptexlabs/codex-nodejs-common 0.9.6 → 0.9.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/lib/package.json
CHANGED
|
@@ -8,6 +8,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.AppHttpExceptionFilter = void 0;
|
|
13
16
|
const common_1 = require("@nestjs/common");
|
|
@@ -19,6 +22,8 @@ const locales_1 = require("../locales/locales");
|
|
|
19
22
|
const enum_1 = require("../locales/enum");
|
|
20
23
|
const config_1 = require("../config");
|
|
21
24
|
const contextual_http_exception_1 = require("../exception/contextual.http.exception");
|
|
25
|
+
const logger_1 = require("../logger");
|
|
26
|
+
const util_1 = require("../util");
|
|
22
27
|
let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExceptionFilter {
|
|
23
28
|
constructor(fallbackLocale, fallbackLogger, config, applicationRef) {
|
|
24
29
|
super(applicationRef);
|
|
@@ -33,11 +38,29 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
33
38
|
const ctx = host.switchToHttp();
|
|
34
39
|
const request = ctx.getRequest();
|
|
35
40
|
const response = ctx.getResponse();
|
|
41
|
+
let fallbackLogger = this.fallbackLogger;
|
|
42
|
+
let fallbackLocale = this.fallbackLocale;
|
|
43
|
+
if (request.headers["Accept-Language"]) {
|
|
44
|
+
try {
|
|
45
|
+
fallbackLocale = util_1.LocaleUtil.getLocaleFromAcceptLanguageHeader(null, request.headers["Accept-Language"]);
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
this.fallbackLogger.error(`Could not parse 'Accept-Language' header: '${request.headers["Accept-Language"]}'`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (request.headers["x-correlation-id"]) {
|
|
52
|
+
fallbackLogger = new logger_1.ContextLogger(request.headers["x-correlation-id"], this.config, {
|
|
53
|
+
id: request.headers["x-client-id"],
|
|
54
|
+
version: request.headers["x-client-version"],
|
|
55
|
+
name: request.headers["x-client-name"],
|
|
56
|
+
variant: request.headers["x-client-variant"],
|
|
57
|
+
}, this.fallbackLogger);
|
|
58
|
+
}
|
|
36
59
|
const logger = exception instanceof exception_1.FriendlyHttpException ||
|
|
37
60
|
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
38
61
|
? exception.context.logger
|
|
39
|
-
:
|
|
40
|
-
let developerText = this.getDeveloperText(exception,
|
|
62
|
+
: fallbackLogger;
|
|
63
|
+
let developerText = this.getDeveloperText(exception, fallbackLocale);
|
|
41
64
|
let stack = "No stack available. Very sad";
|
|
42
65
|
if (exception.stack) {
|
|
43
66
|
if (typeof exception.stack === "string") {
|
|
@@ -91,15 +114,17 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
91
114
|
const locale = exception instanceof exception_1.FriendlyHttpException ||
|
|
92
115
|
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
93
116
|
? exception.context.locale
|
|
94
|
-
:
|
|
117
|
+
: fallbackLocale;
|
|
95
118
|
const correlationId = exception instanceof exception_1.FriendlyHttpException ||
|
|
96
119
|
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
97
120
|
? exception.context.correlationId
|
|
98
|
-
:
|
|
121
|
+
: request.headers["x-correlation-id"];
|
|
99
122
|
const started = exception instanceof exception_1.FriendlyHttpException ||
|
|
100
123
|
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
101
124
|
? exception.context.started
|
|
102
|
-
:
|
|
125
|
+
: request.headers["x-started"]
|
|
126
|
+
? new Date(request.headers["x-started"])
|
|
127
|
+
: undefined;
|
|
103
128
|
developerText = this.getDeveloperText(exception, locale);
|
|
104
129
|
const userMessage = exception.userMessage ? exception.userMessage : "";
|
|
105
130
|
const errorHttpResponse = new response_1.ErrorHttpResponse(status, locale, new response_1.ErrorMessage(locale, locales_1.i18nData, null, null, this.isDebugLevel()
|
|
@@ -142,6 +167,7 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
142
167
|
AppHttpExceptionFilter = __decorate([
|
|
143
168
|
common_1.Catch(),
|
|
144
169
|
common_1.Injectable(),
|
|
170
|
+
__param(1, common_1.Inject("LOGGER")),
|
|
145
171
|
__metadata("design:paramtypes", [codex_data_model_1.Locale, Object, config_1.DefaultConfig, Object])
|
|
146
172
|
], AppHttpExceptionFilter);
|
|
147
173
|
exports.AppHttpExceptionFilter = AppHttpExceptionFilter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-http-exception-filter.js","sourceRoot":"","sources":["../../../src/filter/app-http-exception-filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-http-exception-filter.js","sourceRoot":"","sources":["../../../src/filter/app-http-exception-filter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
HttpException,
|
|
5
5
|
HttpServer,
|
|
6
6
|
HttpStatus,
|
|
7
|
+
Inject,
|
|
7
8
|
Injectable,
|
|
8
9
|
LoggerService,
|
|
9
10
|
} from "@nestjs/common";
|
|
@@ -11,18 +12,21 @@ import { BaseExceptionFilter } from "@nestjs/core";
|
|
|
11
12
|
import { Request } from "express";
|
|
12
13
|
import { ErrorHttpResponse, ErrorMessage } from "../response";
|
|
13
14
|
import { FriendlyHttpException } from "../exception";
|
|
14
|
-
import { Locale } from "@cryptexlabs/codex-data-model";
|
|
15
|
+
import { ApiMetaHeadersInterface, Locale } from "@cryptexlabs/codex-data-model";
|
|
15
16
|
import { i18nData } from "../locales/locales";
|
|
16
17
|
import { LocalesEnum } from "../locales/enum";
|
|
17
18
|
import { DefaultConfig } from "../config";
|
|
18
19
|
import { ContextualHttpException } from "../exception/contextual.http.exception";
|
|
20
|
+
import { ContextLogger } from "../logger";
|
|
21
|
+
import { ContextBuilder } from "../context";
|
|
22
|
+
import { LocaleUtil } from "../util";
|
|
19
23
|
|
|
20
24
|
@Catch()
|
|
21
25
|
@Injectable()
|
|
22
26
|
export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
23
27
|
constructor(
|
|
24
28
|
private readonly fallbackLocale: Locale,
|
|
25
|
-
private readonly fallbackLogger: LoggerService,
|
|
29
|
+
@Inject("LOGGER") private readonly fallbackLogger: LoggerService,
|
|
26
30
|
private readonly config: DefaultConfig,
|
|
27
31
|
applicationRef?: HttpServer
|
|
28
32
|
) {
|
|
@@ -40,13 +44,43 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
40
44
|
const request = ctx.getRequest<Request>();
|
|
41
45
|
const response = ctx.getResponse();
|
|
42
46
|
|
|
47
|
+
let fallbackLogger = this.fallbackLogger;
|
|
48
|
+
let fallbackLocale = this.fallbackLocale;
|
|
49
|
+
|
|
50
|
+
if (request.headers["Accept-Language"]) {
|
|
51
|
+
try {
|
|
52
|
+
fallbackLocale = LocaleUtil.getLocaleFromAcceptLanguageHeader(
|
|
53
|
+
null,
|
|
54
|
+
request.headers["Accept-Language"] as string | undefined
|
|
55
|
+
);
|
|
56
|
+
} catch (e) {
|
|
57
|
+
this.fallbackLogger.error(
|
|
58
|
+
`Could not parse 'Accept-Language' header: '${request.headers["Accept-Language"]}'`
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (request.headers["x-correlation-id"]) {
|
|
64
|
+
fallbackLogger = new ContextLogger(
|
|
65
|
+
request.headers["x-correlation-id"],
|
|
66
|
+
this.config,
|
|
67
|
+
{
|
|
68
|
+
id: request.headers["x-client-id"] as string | undefined,
|
|
69
|
+
version: request.headers["x-client-version"] as string | undefined,
|
|
70
|
+
name: request.headers["x-client-name"] as string | undefined,
|
|
71
|
+
variant: request.headers["x-client-variant"] as string | undefined,
|
|
72
|
+
},
|
|
73
|
+
this.fallbackLogger
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
43
77
|
const logger =
|
|
44
78
|
exception instanceof FriendlyHttpException ||
|
|
45
79
|
exception instanceof ContextualHttpException
|
|
46
80
|
? exception.context.logger
|
|
47
|
-
:
|
|
81
|
+
: fallbackLogger;
|
|
48
82
|
|
|
49
|
-
let developerText = this.getDeveloperText(exception,
|
|
83
|
+
let developerText = this.getDeveloperText(exception, fallbackLocale);
|
|
50
84
|
let stack = "No stack available. Very sad";
|
|
51
85
|
|
|
52
86
|
if (exception.stack) {
|
|
@@ -109,18 +143,20 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
109
143
|
exception instanceof FriendlyHttpException ||
|
|
110
144
|
exception instanceof ContextualHttpException
|
|
111
145
|
? exception.context.locale
|
|
112
|
-
:
|
|
146
|
+
: fallbackLocale;
|
|
113
147
|
|
|
114
148
|
const correlationId =
|
|
115
149
|
exception instanceof FriendlyHttpException ||
|
|
116
150
|
exception instanceof ContextualHttpException
|
|
117
151
|
? exception.context.correlationId
|
|
118
|
-
: undefined;
|
|
152
|
+
: (request.headers["x-correlation-id"] as string | undefined);
|
|
119
153
|
|
|
120
154
|
const started =
|
|
121
155
|
exception instanceof FriendlyHttpException ||
|
|
122
156
|
exception instanceof ContextualHttpException
|
|
123
157
|
? exception.context.started
|
|
158
|
+
: request.headers["x-started"]
|
|
159
|
+
? new Date(request.headers["x-started"] as string)
|
|
124
160
|
: undefined;
|
|
125
161
|
|
|
126
162
|
developerText = this.getDeveloperText(exception, locale);
|