@storyous/errors 1.0.7 → 1.0.9

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/dist/appError.js CHANGED
@@ -82,4 +82,4 @@ class AppError extends Error {
82
82
  }
83
83
  }
84
84
  exports.default = AppError;
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvYXBwRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFxQixRQUFTLFNBQVEsS0FBSztJQVV2QyxZQUFhLE9BQWUsRUFBRSxJQUFVO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1FBRXhDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUVuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxTQUFTLENBQUM7UUFFOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sQ0FBRSxJQUF5QjtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBRSxLQUFlO1FBQy9CLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBRSxPQUFnQixFQUFFLElBQTBCO1FBRXpELElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBRTtZQUNULFVBQVUsSUFBSSxLQUFLLE9BQU8sRUFB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
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvYXBwRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFxQixRQUFTLFNBQVEsS0FBSztJQVV2QyxZQUFhLE9BQWUsRUFBRSxJQUFVO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1FBRXhDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUVuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxTQUFTLENBQUM7UUFFOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sQ0FBRSxJQUF5QjtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBRSxLQUFlO1FBQy9CLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBRSxPQUFnQixFQUFFLElBQTBCO1FBRXpELElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsVUFBVSxJQUFJLEtBQUssT0FB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
@@ -50,14 +50,45 @@ const initErrHandler = (log) => async function (ctx, next) {
50
50
  metaData.meta = err.meta;
51
51
  }
52
52
  err.setMeta(metaData);
53
+ const maskAuthorizationField = (obj) => {
54
+ try {
55
+ const jsonString = JSON.stringify(obj);
56
+ const maskedString = jsonString
57
+ .replace(/("Authorization":\s?")[^"]*(")/g, '$1***$2')
58
+ .replace(/(\\"Authorization\\":\s?\\"(?:Bearer\s?)?)[^"]*(\\")/ig, '$1***$2');
59
+ return JSON.parse(maskedString);
60
+ }
61
+ catch (error) {
62
+ log.error('Error stringifying or parsing object:', error);
63
+ return obj; // Fallback to original object in case of error
64
+ }
65
+ };
66
+ const maskBearerToken = (error) => {
67
+ try {
68
+ const loggable = {
69
+ ...error,
70
+ name: error.name,
71
+ message: error.message,
72
+ stack: error.stack,
73
+ };
74
+ if (loggable.meta) {
75
+ loggable.meta = maskAuthorizationField((0, lodash_1.cloneDeep)(loggable.meta));
76
+ }
77
+ return loggable;
78
+ }
79
+ catch (parseError) {
80
+ log.warn('Failed to sanitize authorization fields', parseError);
81
+ return error;
82
+ }
83
+ };
53
84
  if (err.httpStatus === 404 || err.httpStatus === 401 || err.httpStatus === 429) {
54
- log.warn(err);
85
+ log.warn(maskBearerToken(err));
55
86
  }
56
87
  else if (err.httpStatus === 500 || err.httpStatus === 408) {
57
- log.error(err);
88
+ log.error(maskBearerToken(err));
58
89
  }
59
90
  else {
60
- log.info(err);
91
+ log.info(maskBearerToken(err));
61
92
  }
62
93
  ctx.body = {
63
94
  code: err.code,
@@ -68,4 +99,4 @@ const initErrHandler = (log) => async function (ctx, next) {
68
99
  }
69
100
  };
70
101
  exports.default = initErrHandler;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2Vycm9ySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUF1QztBQUV2QywwREFBa0M7QUFFbEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssV0FBVyxHQUFRLEVBQUUsSUFBYztJQUM1RSxJQUFJO1FBQ0EsTUFBTSxJQUFJLEVBQUUsQ0FBQztLQUNoQjtJQUFDLE9BQU8sYUFBaUIsRUFBRTtRQUV4QixJQUFJLEdBQUcsR0FBUSxhQUFhLENBQUM7UUFFN0IsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLGtCQUFRLENBQUMsRUFBRTtZQUU1QixJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUU7Z0JBQ3RCLGFBQWE7Z0JBQ2IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7Z0JBQ3RDLEdBQUcsR0FBRyxJQUFJLGtCQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRCxHQUFHLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQzthQUUzQjtpQkFBTSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDaEMsR0FBRyxHQUFHLElBQUksa0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUUzQjtpQkFBTTtnQkFDSCxHQUFHLEdBQUcsSUFBSSxrQkFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3ZDO1lBRUQsR0FBRyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1NBQ25DO1FBRUQsTUFBTSxRQUFRLEdBQVE7WUFDbEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRztZQUNqQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQzVCLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDeEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTTtZQUN0QixhQUFhLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWE7U0FDaEYsQ0FBQztRQUVGLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtZQUNWLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDNUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDOUM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDZCxRQUFRLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDcEM7UUFFRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBRTlCLElBQUksQ0FBQyxJQUFBLGdCQUFPLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztTQUM1QjtRQUVELEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEIsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRTtZQUM1RSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBRWpCO2FBQU0sSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRTtZQUN6RCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBRWxCO2FBQU07WUFDSCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsR0FBRyxDQUFDLElBQUksR0FBRztZQUNQLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztZQUNwQixHQUFHLElBQUEsYUFBSSxFQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztTQUNoRCxDQUFDO1FBQ0YsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO0tBQy9CO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsY0FBYyxDQUFDIn0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2Vycm9ySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUVnQjtBQUVoQiwwREFBa0M7QUFFbEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssV0FBVyxHQUFRLEVBQUUsSUFBYztJQUM1RSxJQUFJLENBQUM7UUFDRCxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFBQyxPQUFPLGFBQWlCLEVBQUUsQ0FBQztRQUV6QixJQUFJLEdBQUcsR0FBUSxhQUFhLENBQUM7UUFFN0IsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLGtCQUFRLENBQUMsRUFBRSxDQUFDO1lBRTdCLElBQUksR0FBRyxZQUFZLEtBQUssRUFBRSxDQUFDO2dCQUN2QixhQUFhO2dCQUNiLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO2dCQUN0QyxHQUFHLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDbEQsR0FBRyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFFNUIsQ0FBQztpQkFBTSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxHQUFHLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTVCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixHQUFHLEdBQUcsSUFBSSxrQkFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFFRCxHQUFHLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDcEMsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFRO1lBQ2xCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUc7WUFD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
@@ -1,4 +1,6 @@
1
- import { isEmpty, pick } from 'lodash';
1
+ import {
2
+ cloneDeep, isEmpty, pick,
3
+ } from 'lodash';
2
4
  import { Logger } from 'winston';
3
5
  import AppError from './appError';
4
6
 
@@ -59,14 +61,49 @@ const initErrHandler = (log: Logger) => async function (ctx: any, next: Function
59
61
 
60
62
  err.setMeta(metaData);
61
63
 
64
+ const maskAuthorizationField = (obj: any) => {
65
+ try {
66
+ const jsonString = JSON.stringify(obj);
67
+
68
+ const maskedString = jsonString
69
+ .replace(/("Authorization":\s?")[^"]*(")/g, '$1***$2')
70
+ .replace(/(\\"Authorization\\":\s?\\"(?:Bearer\s?)?)[^"]*(\\")/ig, '$1***$2');
71
+
72
+ return JSON.parse(maskedString);
73
+ } catch (error) {
74
+ log.error('Error stringifying or parsing object:', error as any);
75
+ return obj; // Fallback to original object in case of error
76
+ }
77
+ };
78
+
79
+ const maskBearerToken = (error: AppError): Record<string, any> => {
80
+ try {
81
+ const loggable: Record<string, any> = {
82
+ ...error,
83
+ name: error.name,
84
+ message: error.message,
85
+ stack: error.stack,
86
+ };
87
+
88
+ if (loggable.meta) {
89
+ loggable.meta = maskAuthorizationField(cloneDeep(loggable.meta));
90
+ }
91
+
92
+ return loggable;
93
+ } catch (parseError) {
94
+ log.warn('Failed to sanitize authorization fields', parseError as any);
95
+ return error;
96
+ }
97
+ };
98
+
62
99
  if (err.httpStatus === 404 || err.httpStatus === 401 || err.httpStatus === 429) {
63
- log.warn(err);
100
+ log.warn(maskBearerToken(err));
64
101
 
65
102
  } else if (err.httpStatus === 500 || err.httpStatus === 408) {
66
- log.error(err);
103
+ log.error(maskBearerToken(err));
67
104
 
68
105
  } else {
69
- log.info(err);
106
+ log.info(maskBearerToken(err));
70
107
  }
71
108
 
72
109
  ctx.body = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storyous/errors",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/Storyous/mono-utils#readme",
6
6
  "license": "ISC",
@@ -39,7 +39,7 @@
39
39
  "winston": "^3.7.2"
40
40
  },
41
41
  "devDependencies": {
42
- "@storyous/test-utils": "^2.0.2"
42
+ "@storyous/test-utils": "^2.0.1"
43
43
  },
44
- "gitHead": "870b3e1341bbcd0eca4088cfed43cbcfe5cfe86f"
44
+ "gitHead": "220b77fcfaca6a768e0db7c628575237a513ae6d"
45
45
  }
package/lib/appError.d.ts DELETED
@@ -1,15 +0,0 @@
1
- export default class AppError extends Error {
2
- code?: number;
3
- httpStatus: number | string;
4
- meta?: Record<string, any>;
5
- redirect?: string;
6
- constructor(message: string, meta?: any);
7
- setMeta(meta: Record<string, any>): AppError;
8
- static purifyStack(error: AppError): AppError;
9
- static notFound(message?: string, meta?: Record<string, any>): AppError;
10
- static badRequest(message?: string, meta?: Record<string, any>): AppError;
11
- static concurrentRequest(message?: string, meta?: Record<string, any>): AppError;
12
- static internal(message?: string, meta?: Record<string, any>): AppError;
13
- static unauthorized(message?: string, meta?: Record<string, any>): AppError;
14
- static isConcurrentRequestError(err: Error): boolean;
15
- }
package/lib/appError.js DELETED
@@ -1,85 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class AppError extends Error {
4
- constructor(message, meta) {
5
- super();
6
- this.message = message;
7
- this.code = (meta && meta.code) || null;
8
- this.httpStatus = (meta && meta.httpStatus) || 500;
9
- this.meta = meta || undefined;
10
- this.redirect = undefined;
11
- }
12
- setMeta(meta) {
13
- this.meta = meta;
14
- return this;
15
- }
16
- static purifyStack(error) {
17
- error.stack = error?.stack?.split('\n').filter((line, index) => index !== 1).join('\n');
18
- return error;
19
- }
20
- static notFound(message, meta) {
21
- let allMessage = 'Not found';
22
- if (message) {
23
- allMessage += `: ${message}`;
24
- }
25
- const error = new AppError(allMessage, ({
26
- code: 404,
27
- httpStatus: 404,
28
- ...meta,
29
- }));
30
- return AppError.purifyStack(error);
31
- }
32
- static badRequest(message, meta) {
33
- let allMessage = 'Bad request';
34
- if (message) {
35
- allMessage += `: ${message}`;
36
- }
37
- const error = new AppError(allMessage, ({
38
- code: 400,
39
- httpStatus: 400,
40
- ...meta,
41
- }));
42
- return AppError.purifyStack(error);
43
- }
44
- static concurrentRequest(message, meta) {
45
- let allMessage = 'Concurrent request';
46
- if (message) {
47
- allMessage += `: ${message}`;
48
- }
49
- const error = new AppError(allMessage, ({
50
- code: 409,
51
- httpStatus: 409,
52
- ...meta,
53
- }));
54
- return AppError.purifyStack(error);
55
- }
56
- static internal(message, meta) {
57
- let allMessage = 'Internal';
58
- if (message) {
59
- allMessage += `: ${message}`;
60
- }
61
- const error = new AppError(allMessage, ({
62
- code: 500,
63
- httpStatus: 500,
64
- ...meta,
65
- }));
66
- return AppError.purifyStack(error);
67
- }
68
- static unauthorized(message, meta) {
69
- let allMessage = 'Unauthorized';
70
- if (message) {
71
- allMessage += `: ${message}`;
72
- }
73
- const error = new AppError(allMessage, ({
74
- code: 401,
75
- httpStatus: 401,
76
- ...meta,
77
- }));
78
- return AppError.purifyStack(error);
79
- }
80
- static isConcurrentRequestError(err) {
81
- return err instanceof AppError && err.code === 409 && /^Concurrent request/.test(err.message);
82
- }
83
- }
84
- exports.default = AppError;
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcHBFcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQXFCLFFBQVMsU0FBUSxLQUFLO0lBVXZDLFlBQWEsT0FBZSxFQUFFLElBQVU7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDO1FBRW5ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLFNBQVMsQ0FBQztRQUU5QixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyxDQUFFLElBQXlCO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWpCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFFLEtBQWU7UUFDL0IsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhGLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFFLE9BQWdCLEVBQUUsSUFBMEI7UUFFekQsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDO1FBQzdCLElBQUksT0FBTyxFQUFFO1lBQ1QsVUFBVSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7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
@@ -1,3 +0,0 @@
1
- import { Logger } from 'winston';
2
- declare const initErrHandler: (log: Logger) => (ctx: any, next: Function) => Promise<void>;
3
- export default initErrHandler;
@@ -1,71 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const lodash_1 = require("lodash");
7
- const appError_1 = __importDefault(require("./appError"));
8
- const initErrHandler = (log) => async function (ctx, next) {
9
- try {
10
- await next();
11
- }
12
- catch (originalError) {
13
- let err = originalError;
14
- if (!(err instanceof appError_1.default)) {
15
- if (err instanceof Error) {
16
- // @ts-ignore
17
- const redirect = err.redirect || null;
18
- err = new appError_1.default(`${err.name}: ${err.message}`);
19
- err.redirect = redirect;
20
- }
21
- else if (typeof err === 'string') {
22
- err = new appError_1.default(err);
23
- }
24
- else {
25
- err = new appError_1.default('Unknown error');
26
- }
27
- err.stack = originalError.stack;
28
- }
29
- const metaData = {
30
- httpStatus: err.httpStatus || 500,
31
- url: ctx.request.originalUrl,
32
- query: ctx.request.query,
33
- method: ctx.req.method,
34
- remoteAddress: ctx.get('x-forwarded-for') || ctx.req.connection.remoteAddress,
35
- };
36
- if (err.code) {
37
- metaData.code = err.code;
38
- }
39
- if (!ctx.request.is('multipart/*')) {
40
- metaData.body = ctx.request.body;
41
- }
42
- if (ctx.req.headers && ctx.req.headers.referer) {
43
- metaData.referer = ctx.req.headers.referer;
44
- }
45
- if (err.redirect) {
46
- metaData.redirect = err.redirect;
47
- }
48
- const originalMeta = err.meta;
49
- if (!(0, lodash_1.isEmpty)(err.meta)) {
50
- metaData.meta = err.meta;
51
- }
52
- err.setMeta(metaData);
53
- if (err.httpStatus === 404 || err.httpStatus === 401 || err.httpStatus === 429) {
54
- log.warn(err);
55
- }
56
- else if (err.httpStatus === 500 || err.httpStatus === 408) {
57
- log.error(err);
58
- }
59
- else {
60
- log.info(err);
61
- }
62
- ctx.body = {
63
- code: err.code,
64
- message: err.message,
65
- ...(0, lodash_1.pick)(originalMeta, err.publicFields || []),
66
- };
67
- ctx.status = err.httpStatus;
68
- }
69
- };
70
- exports.default = initErrHandler;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3JIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQXVDO0FBRXZDLDBEQUFrQztBQUVsQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsS0FBSyxXQUFXLEdBQVEsRUFBRSxJQUFjO0lBQzVFLElBQUk7UUFDQSxNQUFNLElBQUksRUFBRSxDQUFDO0tBQ2hCO0lBQUMsT0FBTyxhQUFpQixFQUFFO1FBRXhCLElBQUksR0FBRyxHQUFRLGFBQWEsQ0FBQztRQUU3QixJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksa0JBQVEsQ0FBQyxFQUFFO1lBRTVCLElBQUksR0FBRyxZQUFZLEtBQUssRUFBRTtnQkFDdEIsYUFBYTtnQkFDYixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztnQkFDdEMsR0FBRyxHQUFHLElBQUksa0JBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2xELEdBQUcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO2FBRTNCO2lCQUFNLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUNoQyxHQUFHLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBRTNCO2lCQUFNO2dCQUNILEdBQUcsR0FBRyxJQUFJLGtCQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDdkM7WUFFRCxHQUFHLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUM7U0FDbkM7UUFFRCxNQUFNLFFBQVEsR0FBUTtZQUNsQixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQ2pDLEdBQUcsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDNUIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSztZQUN4QixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNO1lBQ3RCLGFBQWEsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYTtTQUNoRixDQUFDO1FBRUYsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ1YsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ2hDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDcEM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUM1QyxRQUFRLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUM5QztRQUVELElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUNkLFFBQVEsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztTQUNwQztRQUVELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFFOUIsSUFBSSxDQUFDLElBQUEsZ0JBQU8sRUFBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEIsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1NBQzVCO1FBRUQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QixJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFO1lBQzVFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FFakI7YUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFO1lBQ3pELEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FFbEI7YUFBTTtZQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDakI7UUFFRCxHQUFHLENBQUMsSUFBSSxHQUFHO1lBQ1AsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1lBQ3BCLEdBQUcsSUFBQSxhQUFJLEVBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1NBQ2hELENBQUM7UUFDRixHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7S0FDL0I7QUFDTCxDQUFDLENBQUM7QUFFRixrQkFBZSxjQUFjLENBQUMifQ==
package/lib/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import AppError from './appError';
2
- import initErrHandler from './errorHandler';
3
- export { AppError, initErrHandler };
package/lib/index.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.initErrHandler = exports.AppError = void 0;
7
- const appError_1 = __importDefault(require("./appError"));
8
- exports.AppError = appError_1.default;
9
- const errorHandler_1 = __importDefault(require("./errorHandler"));
10
- exports.initErrHandler = errorHandler_1.default;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBa0M7QUFHekIsbUJBSEYsa0JBQVEsQ0FHRTtBQUZqQixrRUFBNEM7QUFFekIseUJBRlosc0JBQWMsQ0FFWSJ9