@cryptexlabs/codex-nodejs-common 0.9.5 → 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 +1 -1
- package/lib/src/config/default-config.d.ts +1 -0
- package/lib/src/config/default-config.js +2 -1
- package/lib/src/config/default-config.js.map +1 -1
- package/lib/src/config/logging-config.interface.d.ts +2 -2
- package/lib/src/config/logging-config.interface.js +4 -1
- package/lib/src/config/logging-config.interface.js.map +1 -1
- package/lib/src/exception/contextual.http.exception.d.ts +6 -0
- package/lib/src/exception/contextual.http.exception.js +12 -0
- package/lib/src/exception/contextual.http.exception.js.map +1 -0
- package/lib/src/exception/index.d.ts +1 -0
- package/lib/src/exception/index.js +1 -0
- package/lib/src/exception/index.js.map +1 -1
- package/lib/src/filter/app-http-exception-filter.js +44 -10
- package/lib/src/filter/app-http-exception-filter.js.map +1 -1
- package/package.json +1 -1
- package/src/config/default-config.ts +1 -0
- package/src/config/logging-config.interface.ts +2 -2
- package/src/exception/contextual.http.exception.ts +12 -0
- package/src/exception/index.ts +1 -0
- package/src/filter/app-http-exception-filter.ts +59 -11
package/lib/package.json
CHANGED
|
@@ -8,6 +8,7 @@ import { PingConfigInterface } from "./ping-config.interface";
|
|
|
8
8
|
import { ConsumerTypeEnum } from "./consumer-type.enum";
|
|
9
9
|
import { JsonSerializableInterface } from "../message";
|
|
10
10
|
import { TelemetryConfigInterface } from "./telemetry-config.interface";
|
|
11
|
+
import { LOG_LEVEL } from "./logging-config.interface";
|
|
11
12
|
export declare class DefaultConfig implements JsonSerializableInterface<any> {
|
|
12
13
|
private readonly _clientId;
|
|
13
14
|
private _appName;
|
|
@@ -18,6 +18,7 @@ const jwt_config_1 = require("./jwt-config");
|
|
|
18
18
|
const common_1 = require("@nestjs/common");
|
|
19
19
|
const elasticsearch_config_1 = require("./elasticsearch-config");
|
|
20
20
|
const consumer_type_enum_1 = require("./consumer-type.enum");
|
|
21
|
+
const logging_config_interface_1 = require("./logging-config.interface");
|
|
21
22
|
let DefaultConfig = class DefaultConfig {
|
|
22
23
|
constructor(basePath, appPath, _clientId, fallbackEnvironment) {
|
|
23
24
|
this._clientId = _clientId;
|
|
@@ -138,7 +139,7 @@ let DefaultConfig = class DefaultConfig {
|
|
|
138
139
|
}
|
|
139
140
|
get logLevel() {
|
|
140
141
|
return this.logLevels.reduce((prev, curr) => {
|
|
141
|
-
return DEFAULT_LOG_LEVELS[curr] < DEFAULT_LOG_LEVELS[prev]
|
|
142
|
+
return logging_config_interface_1.DEFAULT_LOG_LEVELS[curr] < logging_config_interface_1.DEFAULT_LOG_LEVELS[prev]
|
|
142
143
|
? curr
|
|
143
144
|
: prev;
|
|
144
145
|
}, "info");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-config.js","sourceRoot":"","sources":["../../../src/config/default-config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,+DAA0D;AAG1D,yBAAyB;AACzB,mCAAuC;AACvC,iDAA6C;AAE7C,6CAAyC;AAEzC,2CAA4C;AAE5C,iEAA6D;AAE7D,6DAAwD;
|
|
1
|
+
{"version":3,"file":"default-config.js","sourceRoot":"","sources":["../../../src/config/default-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare type LOG_LEVEL = "fatal" | "error" | "warn" | "info" | "debug" | "trace";
|
|
2
|
-
declare const DEFAULT_LOG_LEVELS: {
|
|
1
|
+
export declare type LOG_LEVEL = "fatal" | "error" | "warn" | "info" | "debug" | "trace";
|
|
2
|
+
export declare const DEFAULT_LOG_LEVELS: {
|
|
3
3
|
[key in LOG_LEVEL]: number;
|
|
4
4
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging-config.interface.js","sourceRoot":"","sources":["../../../src/config/logging-config.interface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logging-config.interface.js","sourceRoot":"","sources":["../../../src/config/logging-config.interface.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAmC;IAChE,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;CACV,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { HttpException, HttpStatus } from "@nestjs/common";
|
|
2
|
+
import { Context } from "../context";
|
|
3
|
+
export declare class ContextualHttpException extends HttpException {
|
|
4
|
+
readonly context: Context;
|
|
5
|
+
constructor(context: Context, response: string | Record<string, any>, status: HttpStatus);
|
|
6
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContextualHttpException = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
class ContextualHttpException extends common_1.HttpException {
|
|
6
|
+
constructor(context, response, status) {
|
|
7
|
+
super(response, status);
|
|
8
|
+
this.context = context;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.ContextualHttpException = ContextualHttpException;
|
|
12
|
+
//# sourceMappingURL=contextual.http.exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextual.http.exception.js","sourceRoot":"","sources":["../../../src/exception/contextual.http.exception.ts"],"names":[],"mappings":";;;AAAA,2CAA2D;AAG3D,MAAa,uBAAwB,SAAQ,sBAAa;IACxD,YACkB,OAAgB,EAChC,QAAsC,EACtC,MAAkB;QAElB,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAJR,YAAO,GAAP,OAAO,CAAS;IAKlC,CAAC;CACF;AARD,0DAQC"}
|
|
@@ -11,4 +11,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./friendly-http-exception"), exports);
|
|
14
|
+
__exportStar(require("./contextual.http.exception"), exports);
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exception/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4DAA0C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exception/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4DAA0C;AAC1C,8DAA4C"}
|
|
@@ -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");
|
|
@@ -18,6 +21,9 @@ const codex_data_model_1 = require("@cryptexlabs/codex-data-model");
|
|
|
18
21
|
const locales_1 = require("../locales/locales");
|
|
19
22
|
const enum_1 = require("../locales/enum");
|
|
20
23
|
const config_1 = require("../config");
|
|
24
|
+
const contextual_http_exception_1 = require("../exception/contextual.http.exception");
|
|
25
|
+
const logger_1 = require("../logger");
|
|
26
|
+
const util_1 = require("../util");
|
|
21
27
|
let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExceptionFilter {
|
|
22
28
|
constructor(fallbackLocale, fallbackLogger, config, applicationRef) {
|
|
23
29
|
super(applicationRef);
|
|
@@ -32,10 +38,29 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
32
38
|
const ctx = host.switchToHttp();
|
|
33
39
|
const request = ctx.getRequest();
|
|
34
40
|
const response = ctx.getResponse();
|
|
35
|
-
|
|
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
|
+
}
|
|
59
|
+
const logger = exception instanceof exception_1.FriendlyHttpException ||
|
|
60
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
36
61
|
? exception.context.logger
|
|
37
|
-
:
|
|
38
|
-
let developerText = this.getDeveloperText(exception,
|
|
62
|
+
: fallbackLogger;
|
|
63
|
+
let developerText = this.getDeveloperText(exception, fallbackLocale);
|
|
39
64
|
let stack = "No stack available. Very sad";
|
|
40
65
|
if (exception.stack) {
|
|
41
66
|
if (typeof exception.stack === "string") {
|
|
@@ -76,22 +101,30 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
76
101
|
stack,
|
|
77
102
|
});
|
|
78
103
|
}
|
|
79
|
-
if (!(exception instanceof common_1.HttpException
|
|
104
|
+
if (!(exception instanceof common_1.HttpException ||
|
|
105
|
+
exception instanceof exception_1.FriendlyHttpException ||
|
|
106
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException) &&
|
|
107
|
+
exception.stack) {
|
|
80
108
|
logger.error(exception.stack);
|
|
81
109
|
}
|
|
82
110
|
const status = exception.getStatus !== undefined &&
|
|
83
111
|
typeof exception.getStatus === "function"
|
|
84
112
|
? exception.getStatus()
|
|
85
113
|
: common_1.HttpStatus.INTERNAL_SERVER_ERROR;
|
|
86
|
-
const locale = exception instanceof exception_1.FriendlyHttpException
|
|
114
|
+
const locale = exception instanceof exception_1.FriendlyHttpException ||
|
|
115
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
87
116
|
? exception.context.locale
|
|
88
|
-
:
|
|
89
|
-
const correlationId = exception instanceof exception_1.FriendlyHttpException
|
|
117
|
+
: fallbackLocale;
|
|
118
|
+
const correlationId = exception instanceof exception_1.FriendlyHttpException ||
|
|
119
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
90
120
|
? exception.context.correlationId
|
|
91
|
-
:
|
|
92
|
-
const started = exception instanceof exception_1.FriendlyHttpException
|
|
121
|
+
: request.headers["x-correlation-id"];
|
|
122
|
+
const started = exception instanceof exception_1.FriendlyHttpException ||
|
|
123
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
93
124
|
? exception.context.started
|
|
94
|
-
:
|
|
125
|
+
: request.headers["x-started"]
|
|
126
|
+
? new Date(request.headers["x-started"])
|
|
127
|
+
: undefined;
|
|
95
128
|
developerText = this.getDeveloperText(exception, locale);
|
|
96
129
|
const userMessage = exception.userMessage ? exception.userMessage : "";
|
|
97
130
|
const errorHttpResponse = new response_1.ErrorHttpResponse(status, locale, new response_1.ErrorMessage(locale, locales_1.i18nData, null, null, this.isDebugLevel()
|
|
@@ -134,6 +167,7 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
134
167
|
AppHttpExceptionFilter = __decorate([
|
|
135
168
|
common_1.Catch(),
|
|
136
169
|
common_1.Injectable(),
|
|
170
|
+
__param(1, common_1.Inject("LOGGER")),
|
|
137
171
|
__metadata("design:paramtypes", [codex_data_model_1.Locale, Object, config_1.DefaultConfig, Object])
|
|
138
172
|
], AppHttpExceptionFilter);
|
|
139
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
|
@@ -19,6 +19,7 @@ import { PingConfigInterface } from "./ping-config.interface";
|
|
|
19
19
|
import { ConsumerTypeEnum } from "./consumer-type.enum";
|
|
20
20
|
import { JsonSerializableInterface } from "../message";
|
|
21
21
|
import { TelemetryConfigInterface } from "./telemetry-config.interface";
|
|
22
|
+
import { LOG_LEVEL, DEFAULT_LOG_LEVELS } from "./logging-config.interface";
|
|
22
23
|
|
|
23
24
|
@Injectable()
|
|
24
25
|
export class DefaultConfig implements JsonSerializableInterface<any> {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
type LOG_LEVEL = "fatal" | "error" | "warn" | "info" | "debug" | "trace";
|
|
1
|
+
export type LOG_LEVEL = "fatal" | "error" | "warn" | "info" | "debug" | "trace";
|
|
2
2
|
|
|
3
|
-
const DEFAULT_LOG_LEVELS: { [key in LOG_LEVEL]: number } = {
|
|
3
|
+
export const DEFAULT_LOG_LEVELS: { [key in LOG_LEVEL]: number } = {
|
|
4
4
|
trace: 10,
|
|
5
5
|
debug: 20,
|
|
6
6
|
info: 30,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { HttpException, HttpStatus } from "@nestjs/common";
|
|
2
|
+
import { Context } from "../context";
|
|
3
|
+
|
|
4
|
+
export class ContextualHttpException extends HttpException {
|
|
5
|
+
constructor(
|
|
6
|
+
public readonly context: Context,
|
|
7
|
+
response: string | Record<string, any>,
|
|
8
|
+
status: HttpStatus
|
|
9
|
+
) {
|
|
10
|
+
super(response, status);
|
|
11
|
+
}
|
|
12
|
+
}
|
package/src/exception/index.ts
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,17 +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";
|
|
19
|
+
import { ContextualHttpException } from "../exception/contextual.http.exception";
|
|
20
|
+
import { ContextLogger } from "../logger";
|
|
21
|
+
import { ContextBuilder } from "../context";
|
|
22
|
+
import { LocaleUtil } from "../util";
|
|
18
23
|
|
|
19
24
|
@Catch()
|
|
20
25
|
@Injectable()
|
|
21
26
|
export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
22
27
|
constructor(
|
|
23
28
|
private readonly fallbackLocale: Locale,
|
|
24
|
-
private readonly fallbackLogger: LoggerService,
|
|
29
|
+
@Inject("LOGGER") private readonly fallbackLogger: LoggerService,
|
|
25
30
|
private readonly config: DefaultConfig,
|
|
26
31
|
applicationRef?: HttpServer
|
|
27
32
|
) {
|
|
@@ -39,12 +44,43 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
39
44
|
const request = ctx.getRequest<Request>();
|
|
40
45
|
const response = ctx.getResponse();
|
|
41
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
|
+
|
|
42
77
|
const logger =
|
|
43
|
-
exception instanceof FriendlyHttpException
|
|
78
|
+
exception instanceof FriendlyHttpException ||
|
|
79
|
+
exception instanceof ContextualHttpException
|
|
44
80
|
? exception.context.logger
|
|
45
|
-
:
|
|
81
|
+
: fallbackLogger;
|
|
46
82
|
|
|
47
|
-
let developerText = this.getDeveloperText(exception,
|
|
83
|
+
let developerText = this.getDeveloperText(exception, fallbackLocale);
|
|
48
84
|
let stack = "No stack available. Very sad";
|
|
49
85
|
|
|
50
86
|
if (exception.stack) {
|
|
@@ -86,7 +122,14 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
86
122
|
}
|
|
87
123
|
|
|
88
124
|
// If this is a normal error it means something random occurred and we want the stacktrace
|
|
89
|
-
if (
|
|
125
|
+
if (
|
|
126
|
+
!(
|
|
127
|
+
exception instanceof HttpException ||
|
|
128
|
+
exception instanceof FriendlyHttpException ||
|
|
129
|
+
exception instanceof ContextualHttpException
|
|
130
|
+
) &&
|
|
131
|
+
exception.stack
|
|
132
|
+
) {
|
|
90
133
|
logger.error(exception.stack);
|
|
91
134
|
}
|
|
92
135
|
|
|
@@ -97,18 +140,23 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
97
140
|
: HttpStatus.INTERNAL_SERVER_ERROR;
|
|
98
141
|
|
|
99
142
|
const locale =
|
|
100
|
-
exception instanceof FriendlyHttpException
|
|
143
|
+
exception instanceof FriendlyHttpException ||
|
|
144
|
+
exception instanceof ContextualHttpException
|
|
101
145
|
? exception.context.locale
|
|
102
|
-
:
|
|
146
|
+
: fallbackLocale;
|
|
103
147
|
|
|
104
148
|
const correlationId =
|
|
105
|
-
exception instanceof FriendlyHttpException
|
|
149
|
+
exception instanceof FriendlyHttpException ||
|
|
150
|
+
exception instanceof ContextualHttpException
|
|
106
151
|
? exception.context.correlationId
|
|
107
|
-
: undefined;
|
|
152
|
+
: (request.headers["x-correlation-id"] as string | undefined);
|
|
108
153
|
|
|
109
154
|
const started =
|
|
110
|
-
exception instanceof FriendlyHttpException
|
|
155
|
+
exception instanceof FriendlyHttpException ||
|
|
156
|
+
exception instanceof ContextualHttpException
|
|
111
157
|
? exception.context.started
|
|
158
|
+
: request.headers["x-started"]
|
|
159
|
+
? new Date(request.headers["x-started"] as string)
|
|
112
160
|
: undefined;
|
|
113
161
|
|
|
114
162
|
developerText = this.getDeveloperText(exception, locale);
|