@forestadmin/agent 1.0.0-beta.44 → 1.0.0-beta.45
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/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# @forestadmin/agent [1.0.0-beta.45](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.44...@forestadmin/agent@1.0.0-beta.45) (2022-08-23)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* allow error message customization ([#386](https://github.com/ForestAdmin/agent-nodejs/issues/386)) ([34b04f4](https://github.com/ForestAdmin/agent-nodejs/commit/34b04f475c84e3637f677207970bce1cab85d08a))
|
|
7
|
+
|
|
1
8
|
# @forestadmin/agent [1.0.0-beta.44](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.43...@forestadmin/agent@1.0.0-beta.44) (2022-08-23)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -6,6 +6,8 @@ export default class ErrorHandling extends BaseRoute {
|
|
|
6
6
|
type: RouteType;
|
|
7
7
|
setupRoutes(router: Router): void;
|
|
8
8
|
private errorHandler;
|
|
9
|
+
private getErrorStatus;
|
|
10
|
+
private getErrorMessage;
|
|
9
11
|
private debugLogError;
|
|
10
12
|
}
|
|
11
13
|
//# sourceMappingURL=error-handling.d.ts.map
|
|
@@ -20,33 +20,38 @@ class ErrorHandling extends base_route_1.default {
|
|
|
20
20
|
await next();
|
|
21
21
|
}
|
|
22
22
|
catch (e) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (e instanceof koa_1.HttpError ||
|
|
26
|
-
e instanceof datasource_toolkit_1.ValidationError ||
|
|
27
|
-
e instanceof datasource_toolkit_1.UnprocessableError ||
|
|
28
|
-
e instanceof datasource_toolkit_1.ForbiddenError) {
|
|
29
|
-
message = e.message;
|
|
30
|
-
switch (true) {
|
|
31
|
-
case e instanceof datasource_toolkit_1.ValidationError:
|
|
32
|
-
status = types_1.HttpCode.BadRequest;
|
|
33
|
-
break;
|
|
34
|
-
case e instanceof datasource_toolkit_1.ForbiddenError:
|
|
35
|
-
status = types_1.HttpCode.Forbidden;
|
|
36
|
-
break;
|
|
37
|
-
case e instanceof datasource_toolkit_1.UnprocessableError:
|
|
38
|
-
status = types_1.HttpCode.Unprocessable;
|
|
39
|
-
break;
|
|
40
|
-
default:
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
context.response.status = status;
|
|
44
|
-
context.response.body = { errors: [{ detail: message }] };
|
|
23
|
+
context.response.status = this.getErrorStatus(e);
|
|
24
|
+
context.response.body = { errors: [{ detail: this.getErrorMessage(e) }] };
|
|
45
25
|
if (!this.options.isProduction) {
|
|
46
26
|
process.nextTick(() => this.debugLogError(context, e));
|
|
47
27
|
}
|
|
48
28
|
}
|
|
49
29
|
}
|
|
30
|
+
getErrorStatus(error) {
|
|
31
|
+
if (error instanceof datasource_toolkit_1.ValidationError)
|
|
32
|
+
return types_1.HttpCode.BadRequest;
|
|
33
|
+
if (error instanceof datasource_toolkit_1.ForbiddenError)
|
|
34
|
+
return types_1.HttpCode.Forbidden;
|
|
35
|
+
if (error instanceof datasource_toolkit_1.UnprocessableError)
|
|
36
|
+
return types_1.HttpCode.Unprocessable;
|
|
37
|
+
if (error instanceof koa_1.HttpError)
|
|
38
|
+
return error.status;
|
|
39
|
+
return types_1.HttpCode.InternalServerError;
|
|
40
|
+
}
|
|
41
|
+
getErrorMessage(error) {
|
|
42
|
+
if (error instanceof koa_1.HttpError ||
|
|
43
|
+
error instanceof datasource_toolkit_1.ValidationError ||
|
|
44
|
+
error instanceof datasource_toolkit_1.UnprocessableError ||
|
|
45
|
+
error instanceof datasource_toolkit_1.ForbiddenError) {
|
|
46
|
+
return error.message;
|
|
47
|
+
}
|
|
48
|
+
if (this.options.customizeErrorMessage) {
|
|
49
|
+
const message = this.options.customizeErrorMessage(error);
|
|
50
|
+
if (message)
|
|
51
|
+
return message;
|
|
52
|
+
}
|
|
53
|
+
return 'Unexpected error';
|
|
54
|
+
}
|
|
50
55
|
debugLogError(context, error) {
|
|
51
56
|
const { request } = context;
|
|
52
57
|
const query = JSON.stringify(request.query, null, ' ')?.replace(/"/g, '');
|
|
@@ -67,4 +72,4 @@ class ErrorHandling extends base_route_1.default {
|
|
|
67
72
|
}
|
|
68
73
|
}
|
|
69
74
|
exports.default = ErrorHandling;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWdlbnQvcm91dGVzL3N5c3RlbS9lcnJvci1oYW5kbGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUErQztBQUMvQyx3RUFJeUM7QUFHekMsdUNBQWtEO0FBQ2xELCtEQUFzQztBQUV0QyxNQUFxQixhQUFjLFNBQVEsb0JBQVM7SUFBcEQ7O1FBQ0UsU0FBSSxHQUFHLGlCQUFTLENBQUMsWUFBWSxDQUFDO0lBbUVoQyxDQUFDO0lBakVDLFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFnQixFQUFFLElBQVU7UUFDckQsSUFBSTtZQUNGLE1BQU0sSUFBSSxFQUFFLENBQUM7U0FDZDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFFMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO2dCQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEQ7U0FDRjtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsS0FBWTtRQUNqQyxJQUFJLEtBQUssWUFBWSxvQ0FBZTtZQUFFLE9B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
|
package/dist/types.d.ts
CHANGED
|
@@ -3,15 +3,16 @@ import { Logger, LoggerLevel } from '@forestadmin/datasource-toolkit';
|
|
|
3
3
|
export declare type AgentOptions = {
|
|
4
4
|
agentUrl: string;
|
|
5
5
|
authSecret: string;
|
|
6
|
-
clientId?: string;
|
|
6
|
+
clientId?: string | null;
|
|
7
7
|
envSecret: string;
|
|
8
|
+
customizeErrorMessage?: ((error: Error) => string | null) | null;
|
|
8
9
|
forestServerUrl?: string;
|
|
9
10
|
logger?: Logger;
|
|
10
11
|
loggerLevel?: LoggerLevel;
|
|
11
12
|
prefix?: string;
|
|
12
13
|
isProduction: boolean;
|
|
13
14
|
schemaPath?: string;
|
|
14
|
-
typingsPath?: string;
|
|
15
|
+
typingsPath?: string | null;
|
|
15
16
|
typingsMaxDepth?: number;
|
|
16
17
|
permissionsCacheDurationInSeconds?: number;
|
|
17
18
|
};
|