@cryptexlabs/codex-nodejs-common 0.7.3 → 0.7.4

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "description": "Common code for Assistant applications",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -3,5 +3,6 @@ import { Context } from "../context";
3
3
  export declare class FriendlyHttpException extends HttpException {
4
4
  readonly context: Context;
5
5
  readonly userMessage: string;
6
- constructor(response: string | Record<string, any>, context: Context, userMessage: string, status: HttpStatus);
6
+ readonly stack: string;
7
+ constructor(response: string | Record<string, any>, context: Context, userMessage: string, status: HttpStatus, stack: string);
7
8
  }
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FriendlyHttpException = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
5
  class FriendlyHttpException extends common_1.HttpException {
6
- constructor(response, context, userMessage, status) {
6
+ constructor(response, context, userMessage, status, stack) {
7
7
  super(response, status);
8
8
  this.context = context;
9
9
  this.userMessage = userMessage;
10
+ this.stack = stack;
10
11
  }
11
12
  }
12
13
  exports.FriendlyHttpException = FriendlyHttpException;
@@ -1 +1 @@
1
- {"version":3,"file":"friendly-http-exception.js","sourceRoot":"","sources":["../../../src/exception/friendly-http-exception.ts"],"names":[],"mappings":";;;AAAA,2CAA2D;AAG3D,MAAa,qBAAsB,SAAQ,sBAAa;IACtD,YACE,QAAsC,EACtB,OAAgB,EAChB,WAAmB,EACnC,MAAkB;QAElB,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAJR,YAAO,GAAP,OAAO,CAAS;QAChB,gBAAW,GAAX,WAAW,CAAQ;IAIrC,CAAC;CACF;AATD,sDASC"}
1
+ {"version":3,"file":"friendly-http-exception.js","sourceRoot":"","sources":["../../../src/exception/friendly-http-exception.ts"],"names":[],"mappings":";;;AAAA,2CAA2D;AAG3D,MAAa,qBAAsB,SAAQ,sBAAa;IACtD,YACE,QAAsC,EACtB,OAAgB,EAChB,WAAmB,EACnC,MAAkB,EAEF,KAAa;QAE7B,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QANR,YAAO,GAAP,OAAO,CAAS;QAChB,gBAAW,GAAX,WAAW,CAAQ;QAGnB,UAAK,GAAL,KAAK,CAAQ;IAG/B,CAAC;CACF;AAXD,sDAWC"}
@@ -32,15 +32,30 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
32
32
  const logger = exception instanceof exception_1.FriendlyHttpException
33
33
  ? exception.context.logger
34
34
  : this.fallbackLogger;
35
- logger.error({
36
- request: {
37
- headers: request.headers,
38
- body: request.body,
39
- url: request.url,
40
- method: request.method,
41
- },
42
- exception,
43
- });
35
+ let developerText = this.getDeveloperText(exception, this.fallbackLocale);
36
+ const stack = exception.stack && typeof exception.stack === "string"
37
+ ? exception.stack.split("\n").map((line) => line.trim())
38
+ : "No stack available. Very sad";
39
+ if (developerText) {
40
+ logger.error(developerText, {
41
+ request: {
42
+ headers: request.headers,
43
+ body: request.body,
44
+ url: request.url,
45
+ method: request.method,
46
+ stack,
47
+ },
48
+ });
49
+ }
50
+ else {
51
+ logger.error([
52
+ "Error not explained",
53
+ "This probably means someone wrote code that throws an error without an error message",
54
+ "This should never happen!",
55
+ ].join(". "), {
56
+ stack,
57
+ });
58
+ }
44
59
  if (!(exception instanceof common_1.HttpException) && exception.stack) {
45
60
  logger.error(exception.stack);
46
61
  }
@@ -57,8 +72,8 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
57
72
  const started = exception instanceof exception_1.FriendlyHttpException
58
73
  ? exception.context.started
59
74
  : undefined;
60
- const developerText = this.getDeveloperText(exception, locale);
61
- const userMessage = exception instanceof exception_1.FriendlyHttpException ? exception.userMessage : "";
75
+ developerText = this.getDeveloperText(exception, locale);
76
+ const userMessage = exception.userMessage ? exception.userMessage : "";
62
77
  const errorHttpResponse = new response_1.ErrorHttpResponse(status, locale, new response_1.ErrorMessage(locale, locales_1.i18nData, null, null, developerText, userMessage), exception.stack || null, this.config, correlationId, started);
63
78
  response.status(status).json(errorHttpResponse);
64
79
  }
@@ -80,6 +95,9 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
80
95
  else if (exception.message.message) {
81
96
  developerText = exception.message.message;
82
97
  }
98
+ else if (exception.getResponse) {
99
+ developerText = exception.getResponse();
100
+ }
83
101
  else {
84
102
  developerText = exception.message;
85
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app-http-exception-filter.js","sourceRoot":"","sources":["../../../src/filter/app-http-exception-filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-http-exception-filter.js","sourceRoot":"","sources":["../../../src/filter/app-http-exception-filter.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ const locales_1 = require("../locales/locales");
8
8
  class LocaleUtil {
9
9
  static getLocaleFromAcceptLanguageHeader(context, langCode) {
10
10
  if (!langCode) {
11
- throw new exception_1.FriendlyHttpException(`Accept language header is not set`, context, locales_1.i18nData.__({ phrase: "an-error-occurred", locale: "en-US" }), common_1.HttpStatus.BAD_REQUEST);
11
+ throw new exception_1.FriendlyHttpException(`Accept language header is not set`, context, locales_1.i18nData.__({ phrase: "an-error-occurred", locale: "en-US" }), common_1.HttpStatus.BAD_REQUEST, "LocaleUtil\ngetLocaleFromAcceptLanguageHeader");
12
12
  }
13
13
  const parts = langCode.split("-");
14
14
  let language;
@@ -23,7 +23,7 @@ class LocaleUtil {
23
23
  }
24
24
  }
25
25
  if (!language || !country) {
26
- throw new exception_1.FriendlyHttpException(`Invalid Accept-Language header: ${langCode}`, context, locales_1.i18nData.__({ phrase: "language-not-supported", locale: "en-US" }), common_1.HttpStatus.BAD_REQUEST);
26
+ throw new exception_1.FriendlyHttpException(`Invalid Accept-Language header: ${langCode}`, context, locales_1.i18nData.__({ phrase: "language-not-supported", locale: "en-US" }), common_1.HttpStatus.BAD_REQUEST, "LocaleUtil\ngetLocaleFromAcceptLanguageHeader");
27
27
  }
28
28
  }
29
29
  else {
@@ -39,10 +39,10 @@ class LocaleUtil {
39
39
  }
40
40
  country = country.split(",")[0];
41
41
  if (!codex_data_model_1.ValidLanguageCodes.includes(language)) {
42
- throw new exception_1.FriendlyHttpException(`Invalid language code: ${country}`, context, locales_1.i18nData.__({ phrase: "language-not-supported", locale: "en-US" }), common_1.HttpStatus.NOT_ACCEPTABLE);
42
+ throw new exception_1.FriendlyHttpException(`Invalid language code: ${country}`, context, locales_1.i18nData.__({ phrase: "language-not-supported", locale: "en-US" }), common_1.HttpStatus.NOT_ACCEPTABLE, "LocaleUtil\ngetLocaleFromAcceptLanguageHeader");
43
43
  }
44
44
  if (!codex_data_model_1.ValidCountryCodes.includes(country)) {
45
- throw new exception_1.FriendlyHttpException(`Invalid country code: ${country}`, context, locales_1.i18nData.__({ phrase: "language-not-supported", locale: "en-US" }), common_1.HttpStatus.NOT_ACCEPTABLE);
45
+ throw new exception_1.FriendlyHttpException(`Invalid country code: ${country}`, context, locales_1.i18nData.__({ phrase: "language-not-supported", locale: "en-US" }), common_1.HttpStatus.NOT_ACCEPTABLE, "LocaleUtil\ngetLocaleFromAcceptLanguageHeader");
46
46
  }
47
47
  return new codex_data_model_1.Locale(language, country);
48
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"locale.util.js","sourceRoot":"","sources":["../../../src/util/locale.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locale.util.js","sourceRoot":"","sources":["../../../src/util/locale.util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "description": "Common code for Assistant applications",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -6,7 +6,9 @@ export class FriendlyHttpException extends HttpException {
6
6
  response: string | Record<string, any>,
7
7
  public readonly context: Context,
8
8
  public readonly userMessage: string,
9
- status: HttpStatus
9
+ status: HttpStatus,
10
+
11
+ public readonly stack: string
10
12
  ) {
11
13
  super(response, status);
12
14
  }
@@ -38,15 +38,34 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
38
38
  ? exception.context.logger
39
39
  : this.fallbackLogger;
40
40
 
41
- logger.error({
42
- request: {
43
- headers: request.headers,
44
- body: request.body,
45
- url: request.url,
46
- method: request.method,
47
- },
48
- exception,
49
- });
41
+ let developerText = this.getDeveloperText(exception, this.fallbackLocale);
42
+ const stack =
43
+ exception.stack && typeof exception.stack === "string"
44
+ ? exception.stack.split("\n").map((line) => line.trim())
45
+ : "No stack available. Very sad";
46
+
47
+ if (developerText) {
48
+ logger.error(developerText, {
49
+ request: {
50
+ headers: request.headers,
51
+ body: request.body,
52
+ url: request.url,
53
+ method: request.method,
54
+ stack,
55
+ },
56
+ });
57
+ } else {
58
+ logger.error(
59
+ [
60
+ "Error not explained",
61
+ "This probably means someone wrote code that throws an error without an error message",
62
+ "This should never happen!",
63
+ ].join(". "),
64
+ {
65
+ stack,
66
+ }
67
+ );
68
+ }
50
69
 
51
70
  // If this is a normal error it means something random occurred and we want the stacktrace
52
71
  if (!(exception instanceof HttpException) && exception.stack) {
@@ -74,10 +93,9 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
74
93
  ? exception.context.started
75
94
  : undefined;
76
95
 
77
- const developerText = this.getDeveloperText(exception, locale);
96
+ developerText = this.getDeveloperText(exception, locale);
78
97
 
79
- const userMessage =
80
- exception instanceof FriendlyHttpException ? exception.userMessage : "";
98
+ const userMessage = exception.userMessage ? exception.userMessage : "";
81
99
 
82
100
  const errorHttpResponse = new ErrorHttpResponse(
83
101
  status,
@@ -114,6 +132,8 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
114
132
  }
115
133
  } else if (exception.message.message) {
116
134
  developerText = exception.message.message;
135
+ } else if (exception.getResponse) {
136
+ developerText = exception.getResponse();
117
137
  } else {
118
138
  developerText = exception.message;
119
139
  }
@@ -21,7 +21,8 @@ export class LocaleUtil {
21
21
  `Accept language header is not set`,
22
22
  context,
23
23
  i18nData.__({ phrase: "an-error-occurred", locale: "en-US" }),
24
- HttpStatus.BAD_REQUEST
24
+ HttpStatus.BAD_REQUEST,
25
+ "LocaleUtil\ngetLocaleFromAcceptLanguageHeader"
25
26
  );
26
27
  }
27
28
  const parts = langCode.split("-");
@@ -43,7 +44,8 @@ export class LocaleUtil {
43
44
  `Invalid Accept-Language header: ${langCode}`,
44
45
  context,
45
46
  i18nData.__({ phrase: "language-not-supported", locale: "en-US" }),
46
- HttpStatus.BAD_REQUEST
47
+ HttpStatus.BAD_REQUEST,
48
+ "LocaleUtil\ngetLocaleFromAcceptLanguageHeader"
47
49
  );
48
50
  }
49
51
  } else {
@@ -65,7 +67,8 @@ export class LocaleUtil {
65
67
  `Invalid language code: ${country}`,
66
68
  context,
67
69
  i18nData.__({ phrase: "language-not-supported", locale: "en-US" }),
68
- HttpStatus.NOT_ACCEPTABLE
70
+ HttpStatus.NOT_ACCEPTABLE,
71
+ "LocaleUtil\ngetLocaleFromAcceptLanguageHeader"
69
72
  );
70
73
  }
71
74
  if (!ValidCountryCodes.includes(country)) {
@@ -73,7 +76,8 @@ export class LocaleUtil {
73
76
  `Invalid country code: ${country}`,
74
77
  context,
75
78
  i18nData.__({ phrase: "language-not-supported", locale: "en-US" }),
76
- HttpStatus.NOT_ACCEPTABLE
79
+ HttpStatus.NOT_ACCEPTABLE,
80
+ "LocaleUtil\ngetLocaleFromAcceptLanguageHeader"
77
81
  );
78
82
  }
79
83