@storyous/errors 1.0.5 → 1.0.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/dist/appError.d.ts +15 -0
- package/dist/appError.js +85 -0
- package/dist/errorHandler.d.ts +3 -0
- package/dist/errorHandler.js +71 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +11 -0
- package/lib/appError.d.ts +15 -0
- package/lib/errorHandler.d.ts +3 -0
- package/lib/index.d.ts +3 -0
- package/package.json +9 -4
- package/__tests__/appError.test.js +0 -70
- package/__tests__/appError.test.ts +0 -77
- package/__tests__/errorHandler.test.js +0 -63
- package/__tests__/errorHandler.test.ts +0 -44
- package/tsconfig.json +0 -8
|
@@ -0,0 +1,15 @@
|
|
|
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/dist/appError.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvYXBwRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFxQixRQUFTLFNBQVEsS0FBSztJQVV2QyxZQUFhLE9BQWUsRUFBRSxJQUFVO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1FBRXhDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUVuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxTQUFTLENBQUM7UUFFOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sQ0FBRSxJQUF5QjtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBRSxLQUFlO1FBQy9CLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBRSxPQUFnQixFQUFFLElBQTBCO1FBRXpELElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBRTtZQUNULFVBQVUsSUFBSSxLQUFLLE9BQU8sRUFB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
|
|
@@ -0,0 +1,71 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2Vycm9ySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUF1QztBQUV2QywwREFBa0M7QUFFbEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssV0FBVyxHQUFRLEVBQUUsSUFBYztJQUM1RSxJQUFJO1FBQ0EsTUFBTSxJQUFJLEVBQUUsQ0FBQztLQUNoQjtJQUFDLE9BQU8sYUFBaUIsRUFBRTtRQUV4QixJQUFJLEdBQUcsR0FBUSxhQUFhLENBQUM7UUFFN0IsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLGtCQUFRLENBQUMsRUFBRTtZQUU1QixJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUU7Z0JBQ3RCLGFBQWE7Z0JBQ2IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7Z0JBQ3RDLEdBQUcsR0FBRyxJQUFJLGtCQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRCxHQUFHLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQzthQUUzQjtpQkFBTSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDaEMsR0FBRyxHQUFHLElBQUksa0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUUzQjtpQkFBTTtnQkFDSCxHQUFHLEdBQUcsSUFBSSxrQkFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3ZDO1lBRUQsR0FBRyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1NBQ25DO1FBRUQsTUFBTSxRQUFRLEdBQVE7WUFDbEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRztZQUNqQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQzVCLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDeEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTTtZQUN0QixhQUFhLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWE7U0FDaEYsQ0FBQztRQUVGLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtZQUNWLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDNUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDOUM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDZCxRQUFRLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDcEM7UUFFRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBRTlCLElBQUksQ0FBQyxJQUFBLGdCQUFPLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztTQUM1QjtRQUVELEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEIsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRTtZQUM1RSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBRWpCO2FBQU0sSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRTtZQUN6RCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBRWxCO2FBQU07WUFDSCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsR0FBRyxDQUFDLElBQUksR0FBRztZQUNQLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztZQUNwQixHQUFHLElBQUEsYUFBSSxFQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztTQUNoRCxDQUFDO1FBQ0YsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO0tBQy9CO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsY0FBYyxDQUFDIn0=
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMERBQWtDO0FBR3pCLG1CQUhGLGtCQUFRLENBR0U7QUFGakIsa0VBQTRDO0FBRXpCLHlCQUZaLHNCQUFjLENBRVkifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
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/index.d.ts
ADDED
package/package.json
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storyous/errors",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://github.com/Storyous/mono-utils#readme",
|
|
6
6
|
"license": "ISC",
|
|
7
|
-
"main": "
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"lib"
|
|
12
|
+
],
|
|
8
13
|
"scripts": {
|
|
9
14
|
"start": "tsc"
|
|
10
15
|
},
|
|
@@ -34,7 +39,7 @@
|
|
|
34
39
|
"winston": "^3.7.2"
|
|
35
40
|
},
|
|
36
41
|
"devDependencies": {
|
|
37
|
-
"@storyous/test-utils": "^2.0.
|
|
42
|
+
"@storyous/test-utils": "^2.0.1"
|
|
38
43
|
},
|
|
39
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "3884746d0e2c36dd11a390e18f2eb05f5c9db510"
|
|
40
45
|
}
|
|
@@ -1,70 +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 assert_1 = __importDefault(require("assert"));
|
|
7
|
-
const mocha_1 = require("mocha");
|
|
8
|
-
const lib_1 = require("../lib");
|
|
9
|
-
(0, mocha_1.describe)('packages/errors/AppError', () => {
|
|
10
|
-
(0, mocha_1.it)('should receive Error with additional Meta', () => {
|
|
11
|
-
const err = new lib_1.AppError('');
|
|
12
|
-
err.setMeta({ foo: 'bar' });
|
|
13
|
-
assert_1.default.deepStrictEqual(err.meta, { foo: 'bar' });
|
|
14
|
-
});
|
|
15
|
-
(0, mocha_1.it)('should receive NotFound Error', () => {
|
|
16
|
-
const err = lib_1.AppError.notFound('Ups ...', { foo: 'bar' });
|
|
17
|
-
assert_1.default.deepStrictEqual(err.message, 'Not found: Ups ...');
|
|
18
|
-
assert_1.default.deepStrictEqual(err.meta, { foo: 'bar', code: 404, httpStatus: 404 });
|
|
19
|
-
});
|
|
20
|
-
(0, mocha_1.it)('should receive NotFound Error without custom message', () => {
|
|
21
|
-
const err = lib_1.AppError.notFound();
|
|
22
|
-
assert_1.default.deepStrictEqual(err.message, 'Not found');
|
|
23
|
-
assert_1.default.deepStrictEqual(err.meta, { code: 404, httpStatus: 404 });
|
|
24
|
-
});
|
|
25
|
-
(0, mocha_1.it)('should receive BadRequest Error', () => {
|
|
26
|
-
const err = lib_1.AppError.badRequest('Ups ...', { foo: 'bar' });
|
|
27
|
-
assert_1.default.deepStrictEqual(err.message, 'Bad request: Ups ...');
|
|
28
|
-
assert_1.default.deepStrictEqual(err.meta, { foo: 'bar', code: 400, httpStatus: 400 });
|
|
29
|
-
});
|
|
30
|
-
(0, mocha_1.it)('should receive BadRequest Error without custom message', () => {
|
|
31
|
-
const err = lib_1.AppError.badRequest();
|
|
32
|
-
assert_1.default.deepStrictEqual(err.message, 'Bad request');
|
|
33
|
-
assert_1.default.deepStrictEqual(err.meta, { code: 400, httpStatus: 400 });
|
|
34
|
-
});
|
|
35
|
-
(0, mocha_1.it)('should receive ConcurrentRequest Error', () => {
|
|
36
|
-
const err = lib_1.AppError.concurrentRequest('Ups ...', { foo: 'bar' });
|
|
37
|
-
assert_1.default.deepStrictEqual(err.message, 'Concurrent request: Ups ...');
|
|
38
|
-
assert_1.default.deepStrictEqual(err.meta, { foo: 'bar', code: 409, httpStatus: 409 });
|
|
39
|
-
});
|
|
40
|
-
(0, mocha_1.it)('should receive ConcurrentRequest Error without custom message', () => {
|
|
41
|
-
const err = lib_1.AppError.concurrentRequest();
|
|
42
|
-
assert_1.default.deepStrictEqual(err.message, 'Concurrent request');
|
|
43
|
-
assert_1.default.deepStrictEqual(err.meta, { code: 409, httpStatus: 409 });
|
|
44
|
-
});
|
|
45
|
-
(0, mocha_1.it)('should receive is ConcurrentRequest Error', () => {
|
|
46
|
-
const err = lib_1.AppError.concurrentRequest();
|
|
47
|
-
assert_1.default.deepStrictEqual(lib_1.AppError.isConcurrentRequestError(err), true);
|
|
48
|
-
});
|
|
49
|
-
(0, mocha_1.it)('should receive Internal Error', () => {
|
|
50
|
-
const err = lib_1.AppError.internal('Ups ...', { foo: 'bar' });
|
|
51
|
-
assert_1.default.deepStrictEqual(err.message, 'Internal: Ups ...');
|
|
52
|
-
assert_1.default.deepStrictEqual(err.meta, { foo: 'bar', code: 500, httpStatus: 500 });
|
|
53
|
-
});
|
|
54
|
-
(0, mocha_1.it)('should receive Internal Error without custom message', () => {
|
|
55
|
-
const err = lib_1.AppError.internal();
|
|
56
|
-
assert_1.default.deepStrictEqual(err.message, 'Internal');
|
|
57
|
-
assert_1.default.deepStrictEqual(err.meta, { code: 500, httpStatus: 500 });
|
|
58
|
-
});
|
|
59
|
-
(0, mocha_1.it)('should receive Unauthorized Error', () => {
|
|
60
|
-
const err = lib_1.AppError.unauthorized('Ups ...', { foo: 'bar' });
|
|
61
|
-
assert_1.default.deepStrictEqual(err.message, 'Unauthorized: Ups ...');
|
|
62
|
-
assert_1.default.deepStrictEqual(err.meta, { foo: 'bar', code: 401, httpStatus: 401 });
|
|
63
|
-
});
|
|
64
|
-
(0, mocha_1.it)('should receive Unauthorized Error without custom message', () => {
|
|
65
|
-
const err = lib_1.AppError.unauthorized();
|
|
66
|
-
assert_1.default.deepStrictEqual(err.message, 'Unauthorized');
|
|
67
|
-
assert_1.default.deepStrictEqual(err.meta, { code: 401, httpStatus: 401 });
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwRXJyb3IudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwcEVycm9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsaUNBQXFDO0FBQ3JDLGdDQUFrQztBQUVsQyxJQUFBLGdCQUFRLEVBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO0lBRXRDLElBQUEsVUFBRSxFQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtRQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUIsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxVQUFFLEVBQUMsK0JBQStCLEVBQUUsR0FBRyxFQUFFO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGNBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekQsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFELGdCQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLFVBQUUsRUFBQyxzREFBc0QsRUFBRSxHQUFHLEVBQUU7UUFDNUQsTUFBTSxHQUFHLEdBQUcsY0FBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLGdCQUFNLENBQUMsZUFBZSxD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
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import assert from 'assert';
|
|
2
|
-
import { describe, it } from 'mocha';
|
|
3
|
-
import { AppError } from '../lib';
|
|
4
|
-
|
|
5
|
-
describe('packages/errors/AppError', () => {
|
|
6
|
-
|
|
7
|
-
it('should receive Error with additional Meta', () => {
|
|
8
|
-
const err = new AppError('');
|
|
9
|
-
err.setMeta({ foo: 'bar' });
|
|
10
|
-
assert.deepStrictEqual(err.meta, { foo: 'bar' });
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('should receive NotFound Error', () => {
|
|
14
|
-
const err = AppError.notFound('Ups ...', { foo: 'bar' });
|
|
15
|
-
assert.deepStrictEqual(err.message, 'Not found: Ups ...');
|
|
16
|
-
assert.deepStrictEqual(err.meta, { foo: 'bar', code: 404, httpStatus: 404 });
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('should receive NotFound Error without custom message', () => {
|
|
20
|
-
const err = AppError.notFound();
|
|
21
|
-
assert.deepStrictEqual(err.message, 'Not found');
|
|
22
|
-
assert.deepStrictEqual(err.meta, { code: 404, httpStatus: 404 });
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('should receive BadRequest Error', () => {
|
|
26
|
-
const err = AppError.badRequest('Ups ...', { foo: 'bar' });
|
|
27
|
-
assert.deepStrictEqual(err.message, 'Bad request: Ups ...');
|
|
28
|
-
assert.deepStrictEqual(err.meta, { foo: 'bar', code: 400, httpStatus: 400 });
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it('should receive BadRequest Error without custom message', () => {
|
|
32
|
-
const err = AppError.badRequest();
|
|
33
|
-
assert.deepStrictEqual(err.message, 'Bad request');
|
|
34
|
-
assert.deepStrictEqual(err.meta, { code: 400, httpStatus: 400 });
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('should receive ConcurrentRequest Error', () => {
|
|
38
|
-
const err = AppError.concurrentRequest('Ups ...', { foo: 'bar' });
|
|
39
|
-
assert.deepStrictEqual(err.message, 'Concurrent request: Ups ...');
|
|
40
|
-
assert.deepStrictEqual(err.meta, { foo: 'bar', code: 409, httpStatus: 409 });
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('should receive ConcurrentRequest Error without custom message', () => {
|
|
44
|
-
const err = AppError.concurrentRequest();
|
|
45
|
-
assert.deepStrictEqual(err.message, 'Concurrent request');
|
|
46
|
-
assert.deepStrictEqual(err.meta, { code: 409, httpStatus: 409 });
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('should receive is ConcurrentRequest Error', () => {
|
|
50
|
-
const err = AppError.concurrentRequest();
|
|
51
|
-
assert.deepStrictEqual(AppError.isConcurrentRequestError(err), true);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('should receive Internal Error', () => {
|
|
55
|
-
const err = AppError.internal('Ups ...', { foo: 'bar' });
|
|
56
|
-
assert.deepStrictEqual(err.message, 'Internal: Ups ...');
|
|
57
|
-
assert.deepStrictEqual(err.meta, { foo: 'bar', code: 500, httpStatus: 500 });
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it('should receive Internal Error without custom message', () => {
|
|
61
|
-
const err = AppError.internal();
|
|
62
|
-
assert.deepStrictEqual(err.message, 'Internal');
|
|
63
|
-
assert.deepStrictEqual(err.meta, { code: 500, httpStatus: 500 });
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it('should receive Unauthorized Error', () => {
|
|
67
|
-
const err = AppError.unauthorized('Ups ...', { foo: 'bar' });
|
|
68
|
-
assert.deepStrictEqual(err.message, 'Unauthorized: Ups ...');
|
|
69
|
-
assert.deepStrictEqual(err.meta, { foo: 'bar', code: 401, httpStatus: 401 });
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it('should receive Unauthorized Error without custom message', () => {
|
|
73
|
-
const err = AppError.unauthorized();
|
|
74
|
-
assert.deepStrictEqual(err.message, 'Unauthorized');
|
|
75
|
-
assert.deepStrictEqual(err.meta, { code: 401, httpStatus: 401 });
|
|
76
|
-
});
|
|
77
|
-
});
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const test_utils_1 = __importDefault(require("@storyous/test-utils"));
|
|
30
|
-
const koa_1 = __importDefault(require("koa"));
|
|
31
|
-
const koa_router_1 = __importDefault(require("koa-router"));
|
|
32
|
-
const mocha_1 = __importStar(require("mocha"));
|
|
33
|
-
const winston_1 = require("winston");
|
|
34
|
-
const lib_1 = require("../lib");
|
|
35
|
-
const app = new koa_1.default();
|
|
36
|
-
app.use((0, lib_1.initErrHandler)((0, winston_1.createLogger)()));
|
|
37
|
-
const router = new koa_router_1.default();
|
|
38
|
-
router.get('/internal', () => {
|
|
39
|
-
throw lib_1.AppError.internal();
|
|
40
|
-
});
|
|
41
|
-
router.get('/notFound', () => {
|
|
42
|
-
throw lib_1.AppError.notFound();
|
|
43
|
-
});
|
|
44
|
-
router.get('/err', () => {
|
|
45
|
-
throw new Error();
|
|
46
|
-
});
|
|
47
|
-
app.use(router.routes());
|
|
48
|
-
(0, mocha_1.describe)('packages/errors/ErrorHandler', () => {
|
|
49
|
-
test_utils_1.default.init({ mocha: mocha_1.default, app: () => app });
|
|
50
|
-
(0, mocha_1.it)('should badRequest', async () => {
|
|
51
|
-
await test_utils_1.default.request().get('/').expect(404);
|
|
52
|
-
});
|
|
53
|
-
(0, mocha_1.it)('should internal error thrown', async () => {
|
|
54
|
-
await test_utils_1.default.request().get('/internal').expect(500);
|
|
55
|
-
});
|
|
56
|
-
(0, mocha_1.it)('should notFound error thrown', async () => {
|
|
57
|
-
await test_utils_1.default.request().get('/notFound').expect(404);
|
|
58
|
-
});
|
|
59
|
-
(0, mocha_1.it)('should error thrown', async () => {
|
|
60
|
-
await test_utils_1.default.request().get('/err').expect(500);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JIYW5kbGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlcnJvckhhbmRsZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0VBQTZDO0FBQzdDLDhDQUFzQjtBQUN0Qiw0REFBbUM7QUFDbkMsK0NBQTRDO0FBQzVDLHFDQUF1QztBQUN2QyxnQ0FBa0Q7QUFFbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxhQUFHLEVBQUUsQ0FBQztBQUN0QixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUEsb0JBQWMsRUFBQyxJQUFBLHNCQUFZLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxvQkFBUyxFQUFFLENBQUM7QUFFL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLE1BQU0sY0FBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLE1BQU0sY0FBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0lBQ3BCLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUN0QixDQUFDLENBQUMsQ0FBQztBQUVILEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFFekIsSUFBQSxnQkFBUSxFQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtJQUMxQyxvQkFBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBTCxlQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFMUMsSUFBQSxVQUFFLEVBQUMsbUJBQW1CLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0IsTUFBTSxvQkFBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLFVBQUUsRUFBQyw4QkFBOEIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMxQyxNQUFNLG9CQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsVUFBRSxFQUFDLDhCQUE4QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzFDLE1BQU0sb0JBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxVQUFFLEVBQUMscUJBQXFCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakMsTUFBTSxvQkFBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import testUtils from '@storyous/test-utils';
|
|
2
|
-
import Koa from 'koa';
|
|
3
|
-
import KoaRouter from 'koa-router';
|
|
4
|
-
import mocha, { describe, it } from 'mocha';
|
|
5
|
-
import { createLogger } from 'winston';
|
|
6
|
-
import { AppError, initErrHandler } from '../lib';
|
|
7
|
-
|
|
8
|
-
const app = new Koa();
|
|
9
|
-
app.use(initErrHandler(createLogger()));
|
|
10
|
-
const router = new KoaRouter();
|
|
11
|
-
|
|
12
|
-
router.get('/internal', () => {
|
|
13
|
-
throw AppError.internal();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
router.get('/notFound', () => {
|
|
17
|
-
throw AppError.notFound();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
router.get('/err', () => {
|
|
21
|
-
throw new Error();
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
app.use(router.routes());
|
|
25
|
-
|
|
26
|
-
describe('packages/errors/ErrorHandler', () => {
|
|
27
|
-
testUtils.init({ mocha, app: () => app });
|
|
28
|
-
|
|
29
|
-
it('should badRequest', async () => {
|
|
30
|
-
await testUtils.request().get('/').expect(404);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('should internal error thrown', async () => {
|
|
34
|
-
await testUtils.request().get('/internal').expect(500);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('should notFound error thrown', async () => {
|
|
38
|
-
await testUtils.request().get('/notFound').expect(404);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('should error thrown', async () => {
|
|
42
|
-
await testUtils.request().get('/err').expect(500);
|
|
43
|
-
});
|
|
44
|
-
});
|