@cryptexlabs/codex-nodejs-common 0.9.4 → 0.9.6
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 +2 -2
- package/lib/src/config/default-config.d.ts +10 -0
- package/lib/src/config/default-config.js +31 -0
- package/lib/src/config/default-config.js.map +1 -1
- package/lib/src/config/logging-config.interface.d.ts +4 -0
- package/lib/src/config/logging-config.interface.js +12 -0
- package/lib/src/config/logging-config.interface.js.map +1 -0
- package/lib/src/config/telemetry-config.interface.d.ts +13 -0
- package/lib/src/config/telemetry-config.interface.js +3 -0
- package/lib/src/config/telemetry-config.interface.js.map +1 -0
- 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 +13 -5
- package/lib/src/filter/app-http-exception-filter.js.map +1 -1
- package/package.json +2 -2
- package/src/config/default-config.ts +39 -0
- package/src/config/logging-config.interface.ts +10 -0
- package/src/config/telemetry-config.interface.ts +15 -0
- package/src/exception/contextual.http.exception.ts +12 -0
- package/src/exception/index.ts +1 -0
- package/src/filter/app-http-exception-filter.ts +17 -5
package/lib/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptexlabs/codex-nodejs-common",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "Common code for
|
|
3
|
+
"version": "0.9.6",
|
|
4
|
+
"description": "Common code for Codex framework",
|
|
5
5
|
"main": "lib/src/index.js",
|
|
6
6
|
"repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
|
|
7
7
|
"author": "Cryptex Labs",
|
|
@@ -7,6 +7,8 @@ import { UrlInterface } from "./url.interface";
|
|
|
7
7
|
import { PingConfigInterface } from "./ping-config.interface";
|
|
8
8
|
import { ConsumerTypeEnum } from "./consumer-type.enum";
|
|
9
9
|
import { JsonSerializableInterface } from "../message";
|
|
10
|
+
import { TelemetryConfigInterface } from "./telemetry-config.interface";
|
|
11
|
+
import { LOG_LEVEL } from "./logging-config.interface";
|
|
10
12
|
export declare class DefaultConfig implements JsonSerializableInterface<any> {
|
|
11
13
|
private readonly _clientId;
|
|
12
14
|
private _appName;
|
|
@@ -37,6 +39,10 @@ export declare class DefaultConfig implements JsonSerializableInterface<any> {
|
|
|
37
39
|
consumerType: ConsumerTypeEnum;
|
|
38
40
|
gpuEnabled: boolean;
|
|
39
41
|
dataDirectory: string;
|
|
42
|
+
serviceName: string;
|
|
43
|
+
logLevel: LOG_LEVEL;
|
|
44
|
+
loggerType: string;
|
|
45
|
+
telemetry: TelemetryConfigInterface;
|
|
40
46
|
};
|
|
41
47
|
protected setup(basePath: string, appPath: string, environment: string): void;
|
|
42
48
|
addEnvFile(fileName: string): this;
|
|
@@ -51,11 +57,15 @@ export declare class DefaultConfig implements JsonSerializableInterface<any> {
|
|
|
51
57
|
get docsEnabled(): boolean;
|
|
52
58
|
get docsPath(): string;
|
|
53
59
|
get kafka(): KafkaConfigInterface;
|
|
60
|
+
get serviceName(): string;
|
|
54
61
|
get environmentName(): string;
|
|
55
62
|
get logLevels(): string[];
|
|
63
|
+
get loggerType(): string;
|
|
64
|
+
get logLevel(): LOG_LEVEL;
|
|
56
65
|
get httpPort(): number;
|
|
57
66
|
get externalHttpPort(): number;
|
|
58
67
|
get metrics(): SwitchConfigInterface & HostConfigInterface;
|
|
68
|
+
get telemetry(): TelemetryConfigInterface;
|
|
59
69
|
get jwt(): JwtConfigInterface;
|
|
60
70
|
get healthzFilePath(): string;
|
|
61
71
|
get elasticsearch(): UrlInterface & PingConfigInterface;
|
|
@@ -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;
|
|
@@ -49,6 +50,10 @@ let DefaultConfig = class DefaultConfig {
|
|
|
49
50
|
consumerType: this.consumerType,
|
|
50
51
|
gpuEnabled: this.gpuEnabled,
|
|
51
52
|
dataDirectory: this.dataDirectory,
|
|
53
|
+
serviceName: this.serviceName,
|
|
54
|
+
logLevel: this.logLevel,
|
|
55
|
+
loggerType: this.loggerType,
|
|
56
|
+
telemetry: this.telemetry,
|
|
52
57
|
};
|
|
53
58
|
}
|
|
54
59
|
setup(basePath, appPath, environment) {
|
|
@@ -120,12 +125,25 @@ let DefaultConfig = class DefaultConfig {
|
|
|
120
125
|
return new kafka_config_1.KafkaConfig(process.env.KAFKA_ENABLED, process.env.KAFKA_HOST, process.env.KAFKA_PORT, process.env.KAFKA_USERNAME, process.env.KAFKA_PASSWORD, process.env.SASL_MECHANISM, process.env.KAFKA_TOPICS_CONFIG_PATH ||
|
|
121
126
|
`${this._appPath}/config/topics.yaml`, process.env.KAFKA_CLIENT_ID || process.env.POD_NAME || this.appName, process.env.KAFKA_DEFAULT_PARTITIONS, process.env.KAFKA_DEFAULT_ERROR_TOPIC);
|
|
122
127
|
}
|
|
128
|
+
get serviceName() {
|
|
129
|
+
return process.env.SERVICE_NAME;
|
|
130
|
+
}
|
|
123
131
|
get environmentName() {
|
|
124
132
|
return process.env.ENV_NAME;
|
|
125
133
|
}
|
|
126
134
|
get logLevels() {
|
|
127
135
|
return (process.env.LOG_LEVELS || "debug,info,error").trim().split(",");
|
|
128
136
|
}
|
|
137
|
+
get loggerType() {
|
|
138
|
+
return process.env.LOGGER_TYPE || "default";
|
|
139
|
+
}
|
|
140
|
+
get logLevel() {
|
|
141
|
+
return this.logLevels.reduce((prev, curr) => {
|
|
142
|
+
return logging_config_interface_1.DEFAULT_LOG_LEVELS[curr] < logging_config_interface_1.DEFAULT_LOG_LEVELS[prev]
|
|
143
|
+
? curr
|
|
144
|
+
: prev;
|
|
145
|
+
}, "info");
|
|
146
|
+
}
|
|
129
147
|
get httpPort() {
|
|
130
148
|
return parseInt(process.env.HTTP_PORT || "3000", 10);
|
|
131
149
|
}
|
|
@@ -137,6 +155,19 @@ let DefaultConfig = class DefaultConfig {
|
|
|
137
155
|
get metrics() {
|
|
138
156
|
return new metrics_host_config_1.MetricsHostConfig(process.env.GRAPHITE_HOST, process.env.GRAPHITE_PORT, process.env.METRICS_ENABLED);
|
|
139
157
|
}
|
|
158
|
+
get telemetry() {
|
|
159
|
+
return {
|
|
160
|
+
metrics: {
|
|
161
|
+
enabled: process.env.TELEMETRY_METRICS_ENABLED === "true",
|
|
162
|
+
path: process.env.TELEMETRY_METRICS_PATH,
|
|
163
|
+
port: parseInt(process.env.TELEMETRY_METRICS_PORT || "8081", 10),
|
|
164
|
+
},
|
|
165
|
+
traces: {
|
|
166
|
+
enabled: process.env.TELEMETRY_TRACE_ENABLED === "true",
|
|
167
|
+
traceUrl: process.env.TELEMETRY_TRACE_URL || "http://localhost:4317",
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
140
171
|
get jwt() {
|
|
141
172
|
return new jwt_config_1.JwtConfig(process.env.JWT_VERIFY, process.env.JWT_AUD);
|
|
142
173
|
}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_LOG_LEVELS = void 0;
|
|
4
|
+
exports.DEFAULT_LOG_LEVELS = {
|
|
5
|
+
trace: 10,
|
|
6
|
+
debug: 20,
|
|
7
|
+
info: 30,
|
|
8
|
+
warn: 40,
|
|
9
|
+
error: 50,
|
|
10
|
+
fatal: 60,
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=logging-config.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,13 @@
|
|
|
1
|
+
export interface TelemetryConfigInterface {
|
|
2
|
+
metrics: MetricsConfig;
|
|
3
|
+
traces: TracesConfig;
|
|
4
|
+
}
|
|
5
|
+
export interface MetricsConfig {
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
port: number;
|
|
8
|
+
path: string;
|
|
9
|
+
}
|
|
10
|
+
export interface TracesConfig {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
traceUrl: string;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-config.interface.js","sourceRoot":"","sources":["../../../src/config/telemetry-config.interface.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|
|
@@ -18,6 +18,7 @@ const codex_data_model_1 = require("@cryptexlabs/codex-data-model");
|
|
|
18
18
|
const locales_1 = require("../locales/locales");
|
|
19
19
|
const enum_1 = require("../locales/enum");
|
|
20
20
|
const config_1 = require("../config");
|
|
21
|
+
const contextual_http_exception_1 = require("../exception/contextual.http.exception");
|
|
21
22
|
let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExceptionFilter {
|
|
22
23
|
constructor(fallbackLocale, fallbackLogger, config, applicationRef) {
|
|
23
24
|
super(applicationRef);
|
|
@@ -32,7 +33,8 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
32
33
|
const ctx = host.switchToHttp();
|
|
33
34
|
const request = ctx.getRequest();
|
|
34
35
|
const response = ctx.getResponse();
|
|
35
|
-
const logger = exception instanceof exception_1.FriendlyHttpException
|
|
36
|
+
const logger = exception instanceof exception_1.FriendlyHttpException ||
|
|
37
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
36
38
|
? exception.context.logger
|
|
37
39
|
: this.fallbackLogger;
|
|
38
40
|
let developerText = this.getDeveloperText(exception, this.fallbackLocale);
|
|
@@ -76,20 +78,26 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
76
78
|
stack,
|
|
77
79
|
});
|
|
78
80
|
}
|
|
79
|
-
if (!(exception instanceof common_1.HttpException
|
|
81
|
+
if (!(exception instanceof common_1.HttpException ||
|
|
82
|
+
exception instanceof exception_1.FriendlyHttpException ||
|
|
83
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException) &&
|
|
84
|
+
exception.stack) {
|
|
80
85
|
logger.error(exception.stack);
|
|
81
86
|
}
|
|
82
87
|
const status = exception.getStatus !== undefined &&
|
|
83
88
|
typeof exception.getStatus === "function"
|
|
84
89
|
? exception.getStatus()
|
|
85
90
|
: common_1.HttpStatus.INTERNAL_SERVER_ERROR;
|
|
86
|
-
const locale = exception instanceof exception_1.FriendlyHttpException
|
|
91
|
+
const locale = exception instanceof exception_1.FriendlyHttpException ||
|
|
92
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
87
93
|
? exception.context.locale
|
|
88
94
|
: this.fallbackLocale;
|
|
89
|
-
const correlationId = exception instanceof exception_1.FriendlyHttpException
|
|
95
|
+
const correlationId = exception instanceof exception_1.FriendlyHttpException ||
|
|
96
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
90
97
|
? exception.context.correlationId
|
|
91
98
|
: undefined;
|
|
92
|
-
const started = exception instanceof exception_1.FriendlyHttpException
|
|
99
|
+
const started = exception instanceof exception_1.FriendlyHttpException ||
|
|
100
|
+
exception instanceof contextual_http_exception_1.ContextualHttpException
|
|
93
101
|
? exception.context.started
|
|
94
102
|
: undefined;
|
|
95
103
|
developerText = this.getDeveloperText(exception, locale);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-http-exception-filter.js","sourceRoot":"","sources":["../../../src/filter/app-http-exception-filter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAQwB;AACxB,uCAAmD;AAEnD,0CAA8D;AAC9D,4CAAqD;AACrD,oEAAuD;AACvD,gDAA8C;AAC9C,0CAA8C;AAC9C,sCAA0C;
|
|
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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptexlabs/codex-nodejs-common",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "Common code for
|
|
3
|
+
"version": "0.9.6",
|
|
4
|
+
"description": "Common code for Codex framework",
|
|
5
5
|
"main": "lib/src/index.js",
|
|
6
6
|
"repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
|
|
7
7
|
"author": "Cryptex Labs",
|
|
@@ -18,6 +18,8 @@ import { ElasticsearchConfig } from "./elasticsearch-config";
|
|
|
18
18
|
import { PingConfigInterface } from "./ping-config.interface";
|
|
19
19
|
import { ConsumerTypeEnum } from "./consumer-type.enum";
|
|
20
20
|
import { JsonSerializableInterface } from "../message";
|
|
21
|
+
import { TelemetryConfigInterface } from "./telemetry-config.interface";
|
|
22
|
+
import { LOG_LEVEL, DEFAULT_LOG_LEVELS } from "./logging-config.interface";
|
|
21
23
|
|
|
22
24
|
@Injectable()
|
|
23
25
|
export class DefaultConfig implements JsonSerializableInterface<any> {
|
|
@@ -63,6 +65,10 @@ export class DefaultConfig implements JsonSerializableInterface<any> {
|
|
|
63
65
|
consumerType: this.consumerType,
|
|
64
66
|
gpuEnabled: this.gpuEnabled,
|
|
65
67
|
dataDirectory: this.dataDirectory,
|
|
68
|
+
serviceName: this.serviceName,
|
|
69
|
+
logLevel: this.logLevel,
|
|
70
|
+
loggerType: this.loggerType,
|
|
71
|
+
telemetry: this.telemetry,
|
|
66
72
|
};
|
|
67
73
|
}
|
|
68
74
|
|
|
@@ -167,6 +173,10 @@ export class DefaultConfig implements JsonSerializableInterface<any> {
|
|
|
167
173
|
);
|
|
168
174
|
}
|
|
169
175
|
|
|
176
|
+
get serviceName(): string {
|
|
177
|
+
return process.env.SERVICE_NAME;
|
|
178
|
+
}
|
|
179
|
+
|
|
170
180
|
public get environmentName(): string {
|
|
171
181
|
return process.env.ENV_NAME;
|
|
172
182
|
}
|
|
@@ -175,6 +185,21 @@ export class DefaultConfig implements JsonSerializableInterface<any> {
|
|
|
175
185
|
return (process.env.LOG_LEVELS || "debug,info,error").trim().split(",");
|
|
176
186
|
}
|
|
177
187
|
|
|
188
|
+
get loggerType(): string {
|
|
189
|
+
return process.env.LOGGER_TYPE || "default";
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
get logLevel(): LOG_LEVEL {
|
|
193
|
+
return this.logLevels.reduce<LOG_LEVEL>(
|
|
194
|
+
(prev: LOG_LEVEL, curr: LOG_LEVEL) => {
|
|
195
|
+
return DEFAULT_LOG_LEVELS[curr] < DEFAULT_LOG_LEVELS[prev]
|
|
196
|
+
? curr
|
|
197
|
+
: prev;
|
|
198
|
+
},
|
|
199
|
+
"info"
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
|
|
178
203
|
public get httpPort(): number {
|
|
179
204
|
return parseInt(process.env.HTTP_PORT || "3000", 10);
|
|
180
205
|
}
|
|
@@ -193,6 +218,20 @@ export class DefaultConfig implements JsonSerializableInterface<any> {
|
|
|
193
218
|
);
|
|
194
219
|
}
|
|
195
220
|
|
|
221
|
+
get telemetry(): TelemetryConfigInterface {
|
|
222
|
+
return {
|
|
223
|
+
metrics: {
|
|
224
|
+
enabled: process.env.TELEMETRY_METRICS_ENABLED === "true",
|
|
225
|
+
path: process.env.TELEMETRY_METRICS_PATH,
|
|
226
|
+
port: parseInt(process.env.TELEMETRY_METRICS_PORT || "8081", 10),
|
|
227
|
+
},
|
|
228
|
+
traces: {
|
|
229
|
+
enabled: process.env.TELEMETRY_TRACE_ENABLED === "true",
|
|
230
|
+
traceUrl: process.env.TELEMETRY_TRACE_URL || "http://localhost:4317",
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
|
|
196
235
|
public get jwt(): JwtConfigInterface {
|
|
197
236
|
return new JwtConfig(process.env.JWT_VERIFY, process.env.JWT_AUD);
|
|
198
237
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface TelemetryConfigInterface {
|
|
2
|
+
metrics: MetricsConfig;
|
|
3
|
+
traces: TracesConfig;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface MetricsConfig {
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
port: number;
|
|
9
|
+
path: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface TracesConfig {
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
traceUrl: string;
|
|
15
|
+
}
|
|
@@ -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
|
@@ -15,6 +15,7 @@ import { Locale } from "@cryptexlabs/codex-data-model";
|
|
|
15
15
|
import { i18nData } from "../locales/locales";
|
|
16
16
|
import { LocalesEnum } from "../locales/enum";
|
|
17
17
|
import { DefaultConfig } from "../config";
|
|
18
|
+
import { ContextualHttpException } from "../exception/contextual.http.exception";
|
|
18
19
|
|
|
19
20
|
@Catch()
|
|
20
21
|
@Injectable()
|
|
@@ -40,7 +41,8 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
40
41
|
const response = ctx.getResponse();
|
|
41
42
|
|
|
42
43
|
const logger =
|
|
43
|
-
exception instanceof FriendlyHttpException
|
|
44
|
+
exception instanceof FriendlyHttpException ||
|
|
45
|
+
exception instanceof ContextualHttpException
|
|
44
46
|
? exception.context.logger
|
|
45
47
|
: this.fallbackLogger;
|
|
46
48
|
|
|
@@ -86,7 +88,14 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
86
88
|
}
|
|
87
89
|
|
|
88
90
|
// If this is a normal error it means something random occurred and we want the stacktrace
|
|
89
|
-
if (
|
|
91
|
+
if (
|
|
92
|
+
!(
|
|
93
|
+
exception instanceof HttpException ||
|
|
94
|
+
exception instanceof FriendlyHttpException ||
|
|
95
|
+
exception instanceof ContextualHttpException
|
|
96
|
+
) &&
|
|
97
|
+
exception.stack
|
|
98
|
+
) {
|
|
90
99
|
logger.error(exception.stack);
|
|
91
100
|
}
|
|
92
101
|
|
|
@@ -97,17 +106,20 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
97
106
|
: HttpStatus.INTERNAL_SERVER_ERROR;
|
|
98
107
|
|
|
99
108
|
const locale =
|
|
100
|
-
exception instanceof FriendlyHttpException
|
|
109
|
+
exception instanceof FriendlyHttpException ||
|
|
110
|
+
exception instanceof ContextualHttpException
|
|
101
111
|
? exception.context.locale
|
|
102
112
|
: this.fallbackLocale;
|
|
103
113
|
|
|
104
114
|
const correlationId =
|
|
105
|
-
exception instanceof FriendlyHttpException
|
|
115
|
+
exception instanceof FriendlyHttpException ||
|
|
116
|
+
exception instanceof ContextualHttpException
|
|
106
117
|
? exception.context.correlationId
|
|
107
118
|
: undefined;
|
|
108
119
|
|
|
109
120
|
const started =
|
|
110
|
-
exception instanceof FriendlyHttpException
|
|
121
|
+
exception instanceof FriendlyHttpException ||
|
|
122
|
+
exception instanceof ContextualHttpException
|
|
111
123
|
? exception.context.started
|
|
112
124
|
: undefined;
|
|
113
125
|
|