@eggjs/onerror 4.0.0-beta.19 → 4.0.0-beta.21
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/agent.d.ts +5 -9
- package/dist/agent.js +13 -15
- package/dist/app.d.ts +10 -14
- package/dist/app.js +140 -110
- package/dist/config/config.default.d.ts +24 -27
- package/dist/config/config.default.js +9 -11
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/lib/error_view.d.ts +149 -153
- package/dist/lib/error_view.js +239 -222
- package/dist/lib/utils.d.ts +6 -10
- package/dist/lib/utils.js +25 -17
- package/dist/types.d.ts +5 -7
- package/dist/types.js +2 -1
- package/package.json +4 -4
package/dist/agent.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
constructor(agent: Agent);
|
|
7
|
-
didLoad(): Promise<void>;
|
|
1
|
+
import type { ILifecycleBoot, Agent } from 'egg';
|
|
2
|
+
export default class Boot implements ILifecycleBoot {
|
|
3
|
+
private agent;
|
|
4
|
+
constructor(agent: Agent);
|
|
5
|
+
didLoad(): Promise<void>;
|
|
8
6
|
}
|
|
9
|
-
//#endregion
|
|
10
|
-
export { Boot as default };
|
package/dist/agent.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
//#endregion
|
|
15
|
-
export { Boot as default };
|
|
1
|
+
export default class Boot {
|
|
2
|
+
agent;
|
|
3
|
+
constructor(agent) {
|
|
4
|
+
this.agent = agent;
|
|
5
|
+
}
|
|
6
|
+
async didLoad() {
|
|
7
|
+
// should watch error event
|
|
8
|
+
this.agent.on('error', err => {
|
|
9
|
+
this.agent.coreLogger.error(err);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE9BQU8sT0FBTyxJQUFJO0lBQ2YsS0FBSyxDQUFRO0lBRXJCLFlBQVksS0FBWTtRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
|
package/dist/app.d.ts
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import { OnerrorError } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
type?: string;
|
|
8
|
-
errors?: any[];
|
|
1
|
+
import { type OnerrorError } from 'koa-onerror';
|
|
2
|
+
import type { ILifecycleBoot, Application } from 'egg';
|
|
3
|
+
export interface OnerrorErrorWithCode extends OnerrorError {
|
|
4
|
+
code?: string;
|
|
5
|
+
type?: string;
|
|
6
|
+
errors?: any[];
|
|
9
7
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
export default class Boot implements ILifecycleBoot {
|
|
9
|
+
private app;
|
|
10
|
+
constructor(app: Application);
|
|
11
|
+
didLoad(): Promise<void>;
|
|
14
12
|
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { OnerrorErrorWithCode, Boot as default };
|
package/dist/app.js
CHANGED
|
@@ -1,111 +1,141 @@
|
|
|
1
|
-
import
|
|
1
|
+
import http from 'node:http';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import { onerror } from 'koa-onerror';
|
|
2
4
|
import { ErrorView } from "./lib/error_view.js";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
5
|
+
import { isProd, detectStatus, detectErrorMessage, accepts } from "./lib/utils.js";
|
|
6
|
+
export default class Boot {
|
|
7
|
+
app;
|
|
8
|
+
constructor(app) {
|
|
9
|
+
this.app = app;
|
|
10
|
+
}
|
|
11
|
+
async didLoad() {
|
|
12
|
+
// logging error
|
|
13
|
+
const config = this.app.config.onerror;
|
|
14
|
+
const viewTemplate = fs.readFileSync(config.templatePath, 'utf8');
|
|
15
|
+
const app = this.app;
|
|
16
|
+
app.on('error', (err, ctx) => {
|
|
17
|
+
if (!ctx) {
|
|
18
|
+
ctx = app.currentContext || app.createAnonymousContext();
|
|
19
|
+
}
|
|
20
|
+
if (config.appErrorFilter && !config.appErrorFilter(err, ctx))
|
|
21
|
+
return;
|
|
22
|
+
const status = detectStatus(err);
|
|
23
|
+
// 5xx
|
|
24
|
+
if (status >= 500) {
|
|
25
|
+
try {
|
|
26
|
+
ctx.logger.error(err);
|
|
27
|
+
}
|
|
28
|
+
catch (ex) {
|
|
29
|
+
app.logger.error(err);
|
|
30
|
+
app.logger.error(ex);
|
|
31
|
+
}
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// 4xx
|
|
35
|
+
try {
|
|
36
|
+
ctx.logger.warn(err);
|
|
37
|
+
}
|
|
38
|
+
catch (ex) {
|
|
39
|
+
app.logger.warn(err);
|
|
40
|
+
app.logger.error(ex);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const errorOptions = {
|
|
44
|
+
// support customize accepts function
|
|
45
|
+
accepts() {
|
|
46
|
+
const fn = config.accepts || accepts;
|
|
47
|
+
return fn(this);
|
|
48
|
+
},
|
|
49
|
+
html(err, ctx) {
|
|
50
|
+
const status = detectStatus(err);
|
|
51
|
+
const errorPageUrl = typeof config.errorPageUrl === 'function' ? config.errorPageUrl(err, ctx) : config.errorPageUrl;
|
|
52
|
+
// keep the real response status
|
|
53
|
+
ctx.realStatus = status;
|
|
54
|
+
// don't respond any error message in production env
|
|
55
|
+
if (isProd(app)) {
|
|
56
|
+
// 5xx
|
|
57
|
+
if (status >= 500) {
|
|
58
|
+
if (errorPageUrl) {
|
|
59
|
+
const statusQuery = (errorPageUrl.indexOf('?') > 0 ? '&' : '?') + `real_status=${status}`;
|
|
60
|
+
return ctx.redirect(errorPageUrl + statusQuery);
|
|
61
|
+
}
|
|
62
|
+
ctx.status = 500;
|
|
63
|
+
ctx.body = `<h2>Internal Server Error, real status: ${status}</h2>`;
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// 4xx
|
|
67
|
+
ctx.status = status;
|
|
68
|
+
ctx.body = `<h2>${status} ${http.STATUS_CODES[status]}</h2>`;
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// show simple error format for unittest
|
|
72
|
+
if (app.config.env === 'unittest') {
|
|
73
|
+
ctx.status = status;
|
|
74
|
+
ctx.body = `${err.name}: ${err.message}\n${err.stack}`;
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const errorView = new ErrorView(ctx, err, viewTemplate);
|
|
78
|
+
ctx.body = errorView.toHTML();
|
|
79
|
+
},
|
|
80
|
+
json(err, ctx) {
|
|
81
|
+
const status = detectStatus(err);
|
|
82
|
+
let errorJson = {};
|
|
83
|
+
ctx.status = status;
|
|
84
|
+
const code = err.code ?? err.type;
|
|
85
|
+
const message = detectErrorMessage(ctx, err);
|
|
86
|
+
if (isProd(app)) {
|
|
87
|
+
// 5xx server side error
|
|
88
|
+
if (status >= 500) {
|
|
89
|
+
errorJson = {
|
|
90
|
+
code,
|
|
91
|
+
// don't respond any error message in production env
|
|
92
|
+
message: http.STATUS_CODES[status],
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// 4xx client side error
|
|
97
|
+
// addition `errors`
|
|
98
|
+
errorJson = {
|
|
99
|
+
code,
|
|
100
|
+
message,
|
|
101
|
+
errors: err.errors,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
errorJson = {
|
|
107
|
+
code,
|
|
108
|
+
message,
|
|
109
|
+
errors: err.errors,
|
|
110
|
+
};
|
|
111
|
+
if (status >= 500) {
|
|
112
|
+
// provide detail error stack in local env
|
|
113
|
+
errorJson.stack = err.stack;
|
|
114
|
+
errorJson.name = err.name;
|
|
115
|
+
for (const key in err) {
|
|
116
|
+
if (!errorJson[key]) {
|
|
117
|
+
errorJson[key] = err[key];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
ctx.body = errorJson;
|
|
123
|
+
},
|
|
124
|
+
js(err, ctx) {
|
|
125
|
+
errorOptions.json.call(ctx, err, ctx);
|
|
126
|
+
if (typeof ctx.createJsonpBody === 'function') {
|
|
127
|
+
ctx.createJsonpBody(ctx.body);
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
// support customize error response
|
|
132
|
+
const keys = ['all', 'html', 'json', 'text', 'js'];
|
|
133
|
+
for (const type of keys) {
|
|
134
|
+
if (config[type]) {
|
|
135
|
+
Reflect.set(errorOptions, type, config[type]);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
onerror(app, errorOptions);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXpCLE9BQU8sRUFBRSxPQUFPLEVBQTBDLE1BQU0sYUFBYSxDQUFDO0FBRzlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVNuRixNQUFNLENBQUMsT0FBTyxPQUFPLElBQUk7SUFDZixHQUFHLENBQWM7SUFDekIsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxnQkFBZ0I7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxHQUFHLEdBQUcsR0FBRyxDQUFDLGNBQWMsSUFBSSxHQUFHLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUMzRCxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsY0FBYyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUFFLE9BQU87WUFFdEUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLE1BQU07WUFDTixJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDO29CQUNILEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QixDQUFDO2dCQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ1osR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3RCLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QixDQUFDO2dCQUNELE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTTtZQUNOLElBQUksQ0FBQztnQkFDSCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixDQUFDO1lBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDWixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxZQUFZLEdBQW1CO1lBQ25DLHFDQUFxQztZQUNyQyxPQUFPO2dCQUNMLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO2dCQUNyQyxPQUFPLEVBQUUsQ0FBQyxJQUFXLENBQUMsQ0FBQztZQUN6QixDQUFDO1lBRUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFZO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pDLE1BQU0sWUFBWSxHQUNoQixPQUFPLE1BQU0sQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztnQkFFbEcsZ0NBQWdDO2dCQUNoQyxHQUFHLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztnQkFDeEIsb0RBQW9EO2dCQUNwRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNoQixNQUFNO29CQUNOLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO3dCQUNsQixJQUFJLFlBQVksRUFBRSxDQUFDOzRCQUNqQixNQUFNLFdBQVcsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGVBQWUsTUFBTSxFQUFFLENBQUM7NEJBQzFGLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLENBQUM7d0JBQ2xELENBQUM7d0JBQ0QsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7d0JBQ2pCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsMkNBQTJDLE1BQU0sT0FBTyxDQUFDO3dCQUNwRSxPQUFPO29CQUNULENBQUM7b0JBQ0QsTUFBTTtvQkFDTixHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztvQkFDcEIsR0FBRyxDQUFDLElBQUksR0FBRyxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0JBQzdELE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCx3Q0FBd0M7Z0JBQ3hDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ2xDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO29CQUNwQixHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdkQsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ3hELEdBQUcsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFFRCxJQUFJLENBQUMsR0FBeUIsRUFBRSxHQUFZO2dCQUMxQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksU0FBUyxHQUF3QixFQUFFLENBQUM7Z0JBRXhDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNwQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xDLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFFN0MsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDaEIsd0JBQXdCO29CQUN4QixJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDbEIsU0FBUyxHQUFHOzRCQUNWLElBQUk7NEJBQ0osb0RBQW9EOzRCQUNwRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7eUJBQ25DLENBQUM7b0JBQ0osQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQixTQUFTLEdBQUc7NEJBQ1YsSUFBSTs0QkFDSixPQUFPOzRCQUNQLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTt5QkFDbkIsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixTQUFTLEdBQUc7d0JBQ1YsSUFBSTt3QkFDSixPQUFPO3dCQUNQLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtxQkFDbkIsQ0FBQztvQkFFRixJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDbEIsMENBQTBDO3dCQUMxQyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7d0JBQzVCLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQzt3QkFDMUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQzs0QkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dDQUNwQixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUksR0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUNyQyxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUVELEdBQUcsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLENBQUM7WUFFRCxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQVk7Z0JBQ2xCLFlBQVksQ0FBQyxJQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBRXZDLElBQUksT0FBTyxHQUFHLENBQUMsZUFBZSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUM5QyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDO1FBRUYsbUNBQW1DO1FBQ25DLE1BQU0sSUFBSSxHQUE0QixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RSxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNoRCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0=
|
|
@@ -1,30 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*/
|
|
24
|
-
templatePath: string;
|
|
1
|
+
import type { Context } from 'egg';
|
|
2
|
+
import type { OnerrorError, OnerrorOptions } from 'koa-onerror';
|
|
3
|
+
export interface OnerrorConfig extends OnerrorOptions {
|
|
4
|
+
/**
|
|
5
|
+
* 5xx error will redirect to ${errorPageUrl}
|
|
6
|
+
* won't redirect in local env
|
|
7
|
+
*
|
|
8
|
+
* Default: `''`
|
|
9
|
+
*/
|
|
10
|
+
errorPageUrl: string | ((err: OnerrorError, ctx: Context) => string);
|
|
11
|
+
/**
|
|
12
|
+
* will execute `appErrorFilter` when emit an error in `app`
|
|
13
|
+
* If `appErrorFilter` return false, egg-onerror won't log this error.
|
|
14
|
+
* You can logging in `appErrorFilter` and return false to override the default error logging.
|
|
15
|
+
*
|
|
16
|
+
* Default: `undefined`
|
|
17
|
+
*/
|
|
18
|
+
appErrorFilter?: (err: OnerrorError, ctx: Context) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* default template path
|
|
21
|
+
*/
|
|
22
|
+
templatePath: string;
|
|
25
23
|
}
|
|
26
24
|
declare const _default: {
|
|
27
|
-
|
|
25
|
+
onerror: OnerrorConfig;
|
|
28
26
|
};
|
|
29
|
-
|
|
30
|
-
export { OnerrorConfig, _default as default };
|
|
27
|
+
export default _default;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
//#endregion
|
|
11
|
-
export { config_default_default as default };
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
export default {
|
|
3
|
+
onerror: {
|
|
4
|
+
errorPageUrl: '',
|
|
5
|
+
appErrorFilter: undefined,
|
|
6
|
+
templatePath: path.join(import.meta.dirname, '../lib/onerror_page.mustache.html'),
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQTJCN0IsZUFBZTtJQUNiLE9BQU8sRUFBRTtRQUNQLFlBQVksRUFBRSxFQUFFO1FBQ2hCLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1DQUFtQyxDQUFDO0tBQ2pFO0NBQ25CLENBQUMifQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import './types.ts';
|
package/dist/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import "./types.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUMifQ==
|