@storyous/errors 1.0.8 → 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 +1 -1
- package/dist/errorHandler.js +25 -28
- package/lib/errorHandler.ts +27 -40
- package/package.json +2 -2
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,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvYXBwRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFxQixRQUFTLFNBQVEsS0FBSztJQVV2QyxZQUFhLE9BQWUsRUFBRSxJQUFVO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1FBRXhDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUVuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxTQUFTLENBQUM7UUFFOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sQ0FBRSxJQUF5QjtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBRSxLQUFlO1FBQy9CLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBRSxPQUFnQixFQUFFLElBQTBCO1FBRXpELElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsVUFBVSxJQUFJLEtBQUssT0FB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
|
package/dist/errorHandler.js
CHANGED
|
@@ -5,25 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const lodash_1 = require("lodash");
|
|
7
7
|
const appError_1 = __importDefault(require("./appError"));
|
|
8
|
-
/**
|
|
9
|
-
* recursively mask the 'Authorization' field in the meta object
|
|
10
|
-
*/
|
|
11
|
-
const maskAuthorizationField = (obj) => {
|
|
12
|
-
try {
|
|
13
|
-
// Stringify the object
|
|
14
|
-
const jsonString = JSON.stringify(obj);
|
|
15
|
-
const maskedString = jsonString
|
|
16
|
-
.replaceAll(/("Authorization":\s?")[^"]*(")/g, '$1***$2')
|
|
17
|
-
.replaceAll(/(\\"Authorization\\":\s?\\"(?:Bearer\s?)?)[^"]*(\\")/ig, '$1***$2');
|
|
18
|
-
// Parse back into the object
|
|
19
|
-
return JSON.parse(maskedString);
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
// eslint-disable-next-line no-console
|
|
23
|
-
console.error('Error stringifying or parsing object:', error);
|
|
24
|
-
return obj; // Fallback to original object in case of error
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
8
|
const initErrHandler = (log) => async function (ctx, next) {
|
|
28
9
|
try {
|
|
29
10
|
await next();
|
|
@@ -69,25 +50,41 @@ const initErrHandler = (log) => async function (ctx, next) {
|
|
|
69
50
|
metaData.meta = err.meta;
|
|
70
51
|
}
|
|
71
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
|
+
};
|
|
72
66
|
const maskBearerToken = (error) => {
|
|
73
67
|
try {
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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));
|
|
78
76
|
}
|
|
79
|
-
return
|
|
77
|
+
return loggable;
|
|
80
78
|
}
|
|
81
79
|
catch (parseError) {
|
|
82
|
-
// eslint-disable-next-line no-console
|
|
83
80
|
log.warn('Failed to sanitize authorization fields', parseError);
|
|
84
81
|
return error;
|
|
85
82
|
}
|
|
86
83
|
};
|
|
87
|
-
if (
|
|
84
|
+
if (err.httpStatus === 404 || err.httpStatus === 401 || err.httpStatus === 429) {
|
|
88
85
|
log.warn(maskBearerToken(err));
|
|
89
86
|
}
|
|
90
|
-
else if (
|
|
87
|
+
else if (err.httpStatus === 500 || err.httpStatus === 408) {
|
|
91
88
|
log.error(maskBearerToken(err));
|
|
92
89
|
}
|
|
93
90
|
else {
|
|
@@ -102,4 +99,4 @@ const initErrHandler = (log) => async function (ctx, next) {
|
|
|
102
99
|
}
|
|
103
100
|
};
|
|
104
101
|
exports.default = initErrHandler;
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2Vycm9ySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUVnQjtBQUVoQiwwREFBa0M7QUFFbEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssV0FBVyxHQUFRLEVBQUUsSUFBYztJQUM1RSxJQUFJLENBQUM7UUFDRCxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFBQyxPQUFPLGFBQWlCLEVBQUUsQ0FBQztRQUV6QixJQUFJLEdBQUcsR0FBUSxhQUFhLENBQUM7UUFFN0IsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLGtCQUFRLENBQUMsRUFBRSxDQUFDO1lBRTdCLElBQUksR0FBRyxZQUFZLEtBQUssRUFBRSxDQUFDO2dCQUN2QixhQUFhO2dCQUNiLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO2dCQUN0QyxHQUFHLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDbEQsR0FBRyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFFNUIsQ0FBQztpQkFBTSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxHQUFHLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTVCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixHQUFHLEdBQUcsSUFBSSxrQkFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFFRCxHQUFHLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDcEMsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFRO1lBQ2xCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUc7WUFD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
|
package/lib/errorHandler.ts
CHANGED
|
@@ -4,27 +4,6 @@ import {
|
|
|
4
4
|
import { Logger } from 'winston';
|
|
5
5
|
import AppError from './appError';
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
* recursively mask the 'Authorization' field in the meta object
|
|
9
|
-
*/
|
|
10
|
-
const maskAuthorizationField = (obj: any) => {
|
|
11
|
-
try {
|
|
12
|
-
// Stringify the object
|
|
13
|
-
const jsonString = JSON.stringify(obj);
|
|
14
|
-
|
|
15
|
-
const maskedString = jsonString
|
|
16
|
-
.replaceAll(/("Authorization":\s?")[^"]*(")/g, '$1***$2')
|
|
17
|
-
.replaceAll(/(\\"Authorization\\":\s?\\"(?:Bearer\s?)?)[^"]*(\\")/ig, '$1***$2');
|
|
18
|
-
|
|
19
|
-
// Parse back into the object
|
|
20
|
-
return JSON.parse(maskedString);
|
|
21
|
-
} catch (error) {
|
|
22
|
-
// eslint-disable-next-line no-console
|
|
23
|
-
console.error('Error stringifying or parsing object:', error);
|
|
24
|
-
return obj; // Fallback to original object in case of error
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
|
|
28
7
|
const initErrHandler = (log: Logger) => async function (ctx: any, next: Function) {
|
|
29
8
|
try {
|
|
30
9
|
await next();
|
|
@@ -82,37 +61,45 @@ const initErrHandler = (log: Logger) => async function (ctx: any, next: Function
|
|
|
82
61
|
|
|
83
62
|
err.setMeta(metaData);
|
|
84
63
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
};
|
|
89
|
-
}
|
|
64
|
+
const maskAuthorizationField = (obj: any) => {
|
|
65
|
+
try {
|
|
66
|
+
const jsonString = JSON.stringify(obj);
|
|
90
67
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
68
|
+
const maskedString = jsonString
|
|
69
|
+
.replace(/("Authorization":\s?")[^"]*(")/g, '$1***$2')
|
|
70
|
+
.replace(/(\\"Authorization\\":\s?\\"(?:Bearer\s?)?)[^"]*(\\")/ig, '$1***$2');
|
|
94
71
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
+
};
|
|
98
78
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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));
|
|
102
90
|
}
|
|
103
91
|
|
|
104
|
-
return
|
|
92
|
+
return loggable;
|
|
105
93
|
} catch (parseError) {
|
|
106
|
-
|
|
107
|
-
log.warn('Failed to sanitize authorization fields', parseError);
|
|
94
|
+
log.warn('Failed to sanitize authorization fields', parseError as any);
|
|
108
95
|
return error;
|
|
109
96
|
}
|
|
110
97
|
};
|
|
111
98
|
|
|
112
|
-
if (
|
|
99
|
+
if (err.httpStatus === 404 || err.httpStatus === 401 || err.httpStatus === 429) {
|
|
113
100
|
log.warn(maskBearerToken(err));
|
|
114
101
|
|
|
115
|
-
} else if (
|
|
102
|
+
} else if (err.httpStatus === 500 || err.httpStatus === 408) {
|
|
116
103
|
log.error(maskBearerToken(err));
|
|
117
104
|
|
|
118
105
|
} else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storyous/errors",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://github.com/Storyous/mono-utils#readme",
|
|
6
6
|
"license": "ISC",
|
|
@@ -41,5 +41,5 @@
|
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@storyous/test-utils": "^2.0.1"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "220b77fcfaca6a768e0db7c628575237a513ae6d"
|
|
45
45
|
}
|