@nocobase/plugin-error-handler 0.7.0-alpha.8 → 0.7.0-alpha.80
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/lib/error-handler.js +76 -51
- package/lib/index.js +12 -5
- package/lib/locale/en_US.js +9 -5
- package/lib/locale/zh_CN.js +9 -5
- package/lib/server.js +124 -67
- package/package.json +4 -8
- package/src/server.ts +2 -2
- package/esm/error-handler.d.ts +0 -6
- package/esm/error-handler.js +0 -51
- package/esm/error-handler.js.map +0 -1
- package/esm/index.d.ts +0 -1
- package/esm/index.js +0 -2
- package/esm/index.js.map +0 -1
- package/esm/locale/en_US.d.ts +0 -5
- package/esm/locale/en_US.js +0 -5
- package/esm/locale/en_US.js.map +0 -1
- package/esm/locale/zh_CN.d.ts +0 -5
- package/esm/locale/zh_CN.js +0 -5
- package/esm/locale/zh_CN.js.map +0 -1
- package/esm/server.d.ts +0 -10
- package/esm/server.js +0 -63
- package/esm/server.js.map +0 -1
- package/lib/error-handler.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/locale/en_US.js.map +0 -1
- package/lib/locale/zh_CN.js.map +0 -1
- package/lib/server.js.map +0 -1
- package/tsconfig.build.json +0 -9
- package/tsconfig.json +0 -5
package/lib/error-handler.js
CHANGED
|
@@ -1,55 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
12
6
|
exports.ErrorHandler = void 0;
|
|
7
|
+
|
|
8
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
9
|
+
|
|
10
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
+
|
|
12
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
13
|
+
|
|
14
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
15
|
+
|
|
16
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
17
|
+
|
|
13
18
|
class ErrorHandler {
|
|
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
|
-
|
|
19
|
+
constructor() {
|
|
20
|
+
this.handlers = [];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
register(guard, render) {
|
|
24
|
+
this.handlers.push({
|
|
25
|
+
guard,
|
|
26
|
+
render
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
defaultHandler(err, ctx) {
|
|
31
|
+
ctx.status = err.statusCode || err.status || 500;
|
|
32
|
+
ctx.body = {
|
|
33
|
+
errors: [{
|
|
34
|
+
message: err.message,
|
|
35
|
+
code: err.code
|
|
36
|
+
}]
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
middleware() {
|
|
41
|
+
const self = this;
|
|
42
|
+
return /*#__PURE__*/function () {
|
|
43
|
+
var _errorHandler = _asyncToGenerator(function* (ctx, next) {
|
|
44
|
+
try {
|
|
45
|
+
yield next();
|
|
46
|
+
} catch (err) {
|
|
47
|
+
console.error(err);
|
|
48
|
+
|
|
49
|
+
var _iterator = _createForOfIteratorHelper(self.handlers),
|
|
50
|
+
_step;
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
54
|
+
const handler = _step.value;
|
|
55
|
+
|
|
56
|
+
if (handler.guard(err)) {
|
|
57
|
+
return handler.render(err, ctx);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
} catch (err) {
|
|
61
|
+
_iterator.e(err);
|
|
62
|
+
} finally {
|
|
63
|
+
_iterator.f();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
self.defaultHandler(err, ctx);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
function errorHandler(_x, _x2) {
|
|
71
|
+
return _errorHandler.apply(this, arguments);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return errorHandler;
|
|
75
|
+
}();
|
|
76
|
+
}
|
|
77
|
+
|
|
53
78
|
}
|
|
54
|
-
|
|
55
|
-
|
|
79
|
+
|
|
80
|
+
exports.ErrorHandler = ErrorHandler;
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
exports
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _server.PluginErrorHandler;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
var _server = require("./server");
|
package/lib/locale/en_US.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
exports
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = {
|
|
8
|
+
'unique violation': '{{field}} must be unique',
|
|
9
|
+
'notNull Violation': '{{field}} cannot be null'
|
|
6
10
|
};
|
|
7
|
-
|
|
11
|
+
exports.default = _default;
|
package/lib/locale/zh_CN.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
exports
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = {
|
|
8
|
+
'unique violation': '{{field}} 字段值是唯一的',
|
|
9
|
+
'notNull Violation': '{{field}} 字段不能为空'
|
|
6
10
|
};
|
|
7
|
-
|
|
11
|
+
exports.default = _default;
|
package/lib/server.js
CHANGED
|
@@ -1,70 +1,127 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
15
6
|
exports.PluginErrorHandler = void 0;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
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
|
-
|
|
7
|
+
|
|
8
|
+
function _jsonSchema() {
|
|
9
|
+
const data = require("@formily/json-schema");
|
|
10
|
+
|
|
11
|
+
_jsonSchema = function _jsonSchema() {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function _server() {
|
|
19
|
+
const data = require("@nocobase/server");
|
|
20
|
+
|
|
21
|
+
_server = function _server() {
|
|
22
|
+
return data;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function _lodash() {
|
|
29
|
+
const data = _interopRequireDefault(require("lodash"));
|
|
30
|
+
|
|
31
|
+
_lodash = function _lodash() {
|
|
32
|
+
return data;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function _sequelize() {
|
|
39
|
+
const data = require("sequelize");
|
|
40
|
+
|
|
41
|
+
_sequelize = function _sequelize() {
|
|
42
|
+
return data;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
var _errorHandler = require("./error-handler");
|
|
49
|
+
|
|
50
|
+
var _en_US = _interopRequireDefault(require("./locale/en_US"));
|
|
51
|
+
|
|
52
|
+
var _zh_CN = _interopRequireDefault(require("./locale/zh_CN"));
|
|
53
|
+
|
|
54
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
55
|
+
|
|
56
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
57
|
+
|
|
58
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
59
|
+
|
|
60
|
+
class PluginErrorHandler extends _server().Plugin {
|
|
61
|
+
constructor(...args) {
|
|
62
|
+
super(...args);
|
|
63
|
+
this.errorHandler = new _errorHandler.ErrorHandler();
|
|
64
|
+
this.i18nNs = 'error-handler';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getName() {
|
|
68
|
+
return this.getPackageName(__dirname);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
beforeLoad() {
|
|
72
|
+
this.registerSequelizeValidationErrorHandler();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
registerSequelizeValidationErrorHandler() {
|
|
76
|
+
const findFieldTitle = (instance, path, tFunc) => {
|
|
77
|
+
if (!instance) {
|
|
78
|
+
return path;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const model = instance.constructor;
|
|
82
|
+
const collection = this.db.modelCollection.get(model);
|
|
83
|
+
const field = collection.getField(path);
|
|
84
|
+
|
|
85
|
+
const fieldOptions = _jsonSchema().Schema.compile(field.options, {
|
|
86
|
+
t: tFunc
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
const title = _lodash().default.get(fieldOptions, 'uiSchema.title', path);
|
|
90
|
+
|
|
91
|
+
return title;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
this.errorHandler.register(err => {
|
|
95
|
+
var _err$errors;
|
|
96
|
+
|
|
97
|
+
return (err === null || err === void 0 ? void 0 : (_err$errors = err.errors) === null || _err$errors === void 0 ? void 0 : _err$errors.length) && err instanceof _sequelize().BaseError;
|
|
98
|
+
}, (err, ctx) => {
|
|
99
|
+
ctx.body = {
|
|
100
|
+
errors: err.errors.map(err => {
|
|
101
|
+
return {
|
|
102
|
+
message: ctx.i18n.t(err.type, {
|
|
103
|
+
ns: this.i18nNs,
|
|
104
|
+
field: findFieldTitle(err.instance, err.path, ctx.i18n.t)
|
|
105
|
+
})
|
|
106
|
+
};
|
|
107
|
+
})
|
|
108
|
+
};
|
|
109
|
+
ctx.status = 400;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
load() {
|
|
114
|
+
var _this = this;
|
|
115
|
+
|
|
116
|
+
return _asyncToGenerator(function* () {
|
|
117
|
+
_this.app.i18n.addResources('zh-CN', _this.i18nNs, _zh_CN.default);
|
|
118
|
+
|
|
119
|
+
_this.app.i18n.addResources('en-US', _this.i18nNs, _en_US.default);
|
|
120
|
+
|
|
121
|
+
_this.app.middleware.unshift(_this.errorHandler.middleware());
|
|
122
|
+
})();
|
|
123
|
+
}
|
|
124
|
+
|
|
68
125
|
}
|
|
69
|
-
|
|
70
|
-
|
|
126
|
+
|
|
127
|
+
exports.PluginErrorHandler = PluginErrorHandler;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/plugin-error-handler",
|
|
3
|
-
"version": "0.7.0-alpha.
|
|
3
|
+
"version": "0.7.0-alpha.80",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"licenses": [
|
|
@@ -11,18 +11,14 @@
|
|
|
11
11
|
],
|
|
12
12
|
"main": "./lib/index.js",
|
|
13
13
|
"types": "./lib/index.d.ts",
|
|
14
|
-
"scripts": {
|
|
15
|
-
"build": "rimraf -rf lib esm dist && npm run build:cjs && npm run build:esm",
|
|
16
|
-
"build:cjs": "tsc --project tsconfig.build.json",
|
|
17
|
-
"build:esm": "tsc --project tsconfig.build.json --module es2015 --outDir esm"
|
|
18
|
-
},
|
|
19
14
|
"dependencies": {
|
|
20
|
-
"@
|
|
15
|
+
"@formily/json-schema": "^2.0.15",
|
|
16
|
+
"@nocobase/server": "0.7.0-alpha.80"
|
|
21
17
|
},
|
|
22
18
|
"repository": {
|
|
23
19
|
"type": "git",
|
|
24
20
|
"url": "git+https://github.com/nocobase/nocobase.git",
|
|
25
21
|
"directory": "packages/plugin-error-handler"
|
|
26
22
|
},
|
|
27
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "9ec196c514d958d2c32c0879def6b98f24bf92fc"
|
|
28
24
|
}
|
package/src/server.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Schema } from '@formily/json-schema';
|
|
2
2
|
import { Plugin } from '@nocobase/server';
|
|
3
3
|
import lodash from 'lodash';
|
|
4
4
|
import { BaseError } from 'sequelize';
|
|
@@ -27,7 +27,7 @@ export class PluginErrorHandler extends Plugin {
|
|
|
27
27
|
const model = instance.constructor;
|
|
28
28
|
const collection = this.db.modelCollection.get(model);
|
|
29
29
|
const field = collection.getField(path);
|
|
30
|
-
const fieldOptions = compile(field.options, { t: tFunc });
|
|
30
|
+
const fieldOptions = Schema.compile(field.options, { t: tFunc });
|
|
31
31
|
const title = lodash.get(fieldOptions, 'uiSchema.title', path);
|
|
32
32
|
return title;
|
|
33
33
|
};
|
package/esm/error-handler.d.ts
DELETED
package/esm/error-handler.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
export class ErrorHandler {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.handlers = [];
|
|
13
|
-
}
|
|
14
|
-
register(guard, render) {
|
|
15
|
-
this.handlers.push({
|
|
16
|
-
guard,
|
|
17
|
-
render,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
defaultHandler(err, ctx) {
|
|
21
|
-
ctx.status = err.statusCode || err.status || 500;
|
|
22
|
-
ctx.body = {
|
|
23
|
-
errors: [
|
|
24
|
-
{
|
|
25
|
-
message: err.message,
|
|
26
|
-
code: err.code,
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
middleware() {
|
|
32
|
-
const self = this;
|
|
33
|
-
return function errorHandler(ctx, next) {
|
|
34
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
try {
|
|
36
|
-
yield next();
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
console.error(err);
|
|
40
|
-
for (const handler of self.handlers) {
|
|
41
|
-
if (handler.guard(err)) {
|
|
42
|
-
return handler.render(err, ctx);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
self.defaultHandler(err, ctx);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=error-handler.js.map
|
package/esm/error-handler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,MAAM,OAAO,YAAY;IAAzB;QACE,aAAQ,GAAG,EAAE,CAAC;IAuChB,CAAC;IArCC,QAAQ,CAAC,KAAuB,EAAE,MAA0B;QAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,KAAK;YACL,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,GAAG,EAAE,GAAG;QACrB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;QACjD,GAAG,CAAC,IAAI,GAAG;YACT,MAAM,EAAE;gBACN;oBACE,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf;aACF;SACF,CAAC;IACJ,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,SAAe,YAAY,CAAC,GAAG,EAAE,IAAI;;gBAC1C,IAAI;oBACF,MAAM,IAAI,EAAE,CAAC;iBACd;gBAAC,OAAO,GAAG,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACnC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;4BACtB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;yBACjC;qBACF;oBAED,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;iBAC/B;YACH,CAAC;SAAA,CAAC;IACJ,CAAC;CACF","sourcesContent":["export class ErrorHandler {\n handlers = [];\n\n register(guard: (err) => boolean, render: (err, ctx) => void) {\n this.handlers.push({\n guard,\n render,\n });\n }\n\n defaultHandler(err, ctx) {\n ctx.status = err.statusCode || err.status || 500;\n ctx.body = {\n errors: [\n {\n message: err.message,\n code: err.code,\n },\n ],\n };\n }\n\n middleware() {\n const self = this;\n\n return async function errorHandler(ctx, next) {\n try {\n await next();\n } catch (err) {\n console.error(err);\n for (const handler of self.handlers) {\n if (handler.guard(err)) {\n return handler.render(err, ctx);\n }\n }\n\n self.defaultHandler(err, ctx);\n }\n };\n }\n}\n"]}
|
package/esm/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { PluginErrorHandler as default } from './server';
|
package/esm/index.js
DELETED
package/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC","sourcesContent":["export { PluginErrorHandler as default } from './server';\n"]}
|
package/esm/locale/en_US.d.ts
DELETED
package/esm/locale/en_US.js
DELETED
package/esm/locale/en_US.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"en_US.js","sourceRoot":"","sources":["../../src/locale/en_US.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,kBAAkB,EAAE,0BAA0B;IAC9C,mBAAmB,EAAE,0BAA0B;CAChD,CAAC","sourcesContent":["export default {\n 'unique violation': '{{field}} must be unique',\n 'notNull Violation': '{{field}} cannot be null',\n};\n"]}
|
package/esm/locale/zh_CN.d.ts
DELETED
package/esm/locale/zh_CN.js
DELETED
package/esm/locale/zh_CN.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zh_CN.js","sourceRoot":"","sources":["../../src/locale/zh_CN.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,kBAAkB,EAAE,mBAAmB;IACvC,mBAAmB,EAAE,kBAAkB;CACxC,CAAC","sourcesContent":["export default {\n 'unique violation': '{{field}} 字段值是唯一的',\n 'notNull Violation': '{{field}} 字段不能为空',\n};\n"]}
|
package/esm/server.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Plugin } from '@nocobase/server';
|
|
2
|
-
import { ErrorHandler } from './error-handler';
|
|
3
|
-
export declare class PluginErrorHandler extends Plugin {
|
|
4
|
-
getName(): string;
|
|
5
|
-
errorHandler: ErrorHandler;
|
|
6
|
-
i18nNs: string;
|
|
7
|
-
beforeLoad(): void;
|
|
8
|
-
registerSequelizeValidationErrorHandler(): void;
|
|
9
|
-
load(): Promise<void>;
|
|
10
|
-
}
|
package/esm/server.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { compile } from '@formily/json-schema/lib/compiler';
|
|
11
|
-
import { Plugin } from '@nocobase/server';
|
|
12
|
-
import lodash from 'lodash';
|
|
13
|
-
import { BaseError } from 'sequelize';
|
|
14
|
-
import { ErrorHandler } from './error-handler';
|
|
15
|
-
import enUS from './locale/en_US';
|
|
16
|
-
import zhCN from './locale/zh_CN';
|
|
17
|
-
export class PluginErrorHandler extends Plugin {
|
|
18
|
-
constructor() {
|
|
19
|
-
super(...arguments);
|
|
20
|
-
this.errorHandler = new ErrorHandler();
|
|
21
|
-
this.i18nNs = 'error-handler';
|
|
22
|
-
}
|
|
23
|
-
getName() {
|
|
24
|
-
return this.getPackageName(__dirname);
|
|
25
|
-
}
|
|
26
|
-
beforeLoad() {
|
|
27
|
-
this.registerSequelizeValidationErrorHandler();
|
|
28
|
-
}
|
|
29
|
-
registerSequelizeValidationErrorHandler() {
|
|
30
|
-
const findFieldTitle = (instance, path, tFunc) => {
|
|
31
|
-
if (!instance) {
|
|
32
|
-
return path;
|
|
33
|
-
}
|
|
34
|
-
const model = instance.constructor;
|
|
35
|
-
const collection = this.db.modelCollection.get(model);
|
|
36
|
-
const field = collection.getField(path);
|
|
37
|
-
const fieldOptions = compile(field.options, { t: tFunc });
|
|
38
|
-
const title = lodash.get(fieldOptions, 'uiSchema.title', path);
|
|
39
|
-
return title;
|
|
40
|
-
};
|
|
41
|
-
this.errorHandler.register((err) => { var _a; return ((_a = err === null || err === void 0 ? void 0 : err.errors) === null || _a === void 0 ? void 0 : _a.length) && err instanceof BaseError; }, (err, ctx) => {
|
|
42
|
-
ctx.body = {
|
|
43
|
-
errors: err.errors.map((err) => {
|
|
44
|
-
return {
|
|
45
|
-
message: ctx.i18n.t(err.type, {
|
|
46
|
-
ns: this.i18nNs,
|
|
47
|
-
field: findFieldTitle(err.instance, err.path, ctx.i18n.t),
|
|
48
|
-
}),
|
|
49
|
-
};
|
|
50
|
-
}),
|
|
51
|
-
};
|
|
52
|
-
ctx.status = 400;
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
load() {
|
|
56
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
this.app.i18n.addResources('zh-CN', this.i18nNs, zhCN);
|
|
58
|
-
this.app.i18n.addResources('en-US', this.i18nNs, enUS);
|
|
59
|
-
this.app.middleware.unshift(this.errorHandler.middleware());
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=server.js.map
|
package/esm/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAElC,MAAM,OAAO,kBAAmB,SAAQ,MAAM;IAA9C;;QAKE,iBAAY,GAAiB,IAAI,YAAY,EAAE,CAAC;QAChD,WAAM,GAAW,eAAe,CAAC;IA2CnC,CAAC;IAhDC,OAAO;QACL,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAKD,UAAU;QACR,IAAI,CAAC,uCAAuC,EAAE,CAAC;IACjD,CAAC;IAED,uCAAuC;QACrC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC/C,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,IAAI,CAAC;aACb;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,CACxB,CAAC,GAAG,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,MAAM,KAAI,GAAG,YAAY,SAAS,CAAA,EAAA,EACxD,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACX,GAAG,CAAC,IAAI,GAAG;gBACT,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC7B,OAAO;wBACL,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;4BAC5B,EAAE,EAAE,IAAI,CAAC,MAAM;4BACf,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;yBAC1D,CAAC;qBACH,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC;YACF,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;QACnB,CAAC,CACF,CAAC;IACJ,CAAC;IACK,IAAI;;YACR,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAEvD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9D,CAAC;KAAA;CACF","sourcesContent":["import { compile } from '@formily/json-schema/lib/compiler';\nimport { Plugin } from '@nocobase/server';\nimport lodash from 'lodash';\nimport { BaseError } from 'sequelize';\nimport { ErrorHandler } from './error-handler';\nimport enUS from './locale/en_US';\nimport zhCN from './locale/zh_CN';\n\nexport class PluginErrorHandler extends Plugin {\n getName(): string {\n return this.getPackageName(__dirname);\n }\n\n errorHandler: ErrorHandler = new ErrorHandler();\n i18nNs: string = 'error-handler';\n\n beforeLoad() {\n this.registerSequelizeValidationErrorHandler();\n }\n\n registerSequelizeValidationErrorHandler() {\n const findFieldTitle = (instance, path, tFunc) => {\n if (!instance) {\n return path;\n }\n\n const model = instance.constructor;\n const collection = this.db.modelCollection.get(model);\n const field = collection.getField(path);\n const fieldOptions = compile(field.options, { t: tFunc });\n const title = lodash.get(fieldOptions, 'uiSchema.title', path);\n return title;\n };\n\n this.errorHandler.register(\n (err) => err?.errors?.length && err instanceof BaseError,\n (err, ctx) => {\n ctx.body = {\n errors: err.errors.map((err) => {\n return {\n message: ctx.i18n.t(err.type, {\n ns: this.i18nNs,\n field: findFieldTitle(err.instance, err.path, ctx.i18n.t),\n }),\n };\n }),\n };\n ctx.status = 400;\n },\n );\n }\n async load() {\n this.app.i18n.addResources('zh-CN', this.i18nNs, zhCN);\n this.app.i18n.addResources('en-US', this.i18nNs, enUS);\n\n this.app.middleware.unshift(this.errorHandler.middleware());\n }\n}\n"]}
|
package/lib/error-handler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,MAAa,YAAY;IAAzB;QACE,aAAQ,GAAG,EAAE,CAAC;IAuChB,CAAC;IArCC,QAAQ,CAAC,KAAuB,EAAE,MAA0B;QAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,KAAK;YACL,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,GAAG,EAAE,GAAG;QACrB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;QACjD,GAAG,CAAC,IAAI,GAAG;YACT,MAAM,EAAE;gBACN;oBACE,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf;aACF;SACF,CAAC;IACJ,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,SAAe,YAAY,CAAC,GAAG,EAAE,IAAI;;gBAC1C,IAAI;oBACF,MAAM,IAAI,EAAE,CAAC;iBACd;gBAAC,OAAO,GAAG,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACnC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;4BACtB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;yBACjC;qBACF;oBAED,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;iBAC/B;YACH,CAAC;SAAA,CAAC;IACJ,CAAC;CACF;AAxCD,oCAwCC","sourcesContent":["export class ErrorHandler {\n handlers = [];\n\n register(guard: (err) => boolean, render: (err, ctx) => void) {\n this.handlers.push({\n guard,\n render,\n });\n }\n\n defaultHandler(err, ctx) {\n ctx.status = err.statusCode || err.status || 500;\n ctx.body = {\n errors: [\n {\n message: err.message,\n code: err.code,\n },\n ],\n };\n }\n\n middleware() {\n const self = this;\n\n return async function errorHandler(ctx, next) {\n try {\n await next();\n } catch (err) {\n console.error(err);\n for (const handler of self.handlers) {\n if (handler.guard(err)) {\n return handler.render(err, ctx);\n }\n }\n\n self.defaultHandler(err, ctx);\n }\n };\n }\n}\n"]}
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAyD;AAAhD,iGAAA,kBAAkB,OAAW","sourcesContent":["export { PluginErrorHandler as default } from './server';\n"]}
|
package/lib/locale/en_US.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"en_US.js","sourceRoot":"","sources":["../../src/locale/en_US.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb,kBAAkB,EAAE,0BAA0B;IAC9C,mBAAmB,EAAE,0BAA0B;CAChD,CAAC","sourcesContent":["export default {\n 'unique violation': '{{field}} must be unique',\n 'notNull Violation': '{{field}} cannot be null',\n};\n"]}
|
package/lib/locale/zh_CN.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zh_CN.js","sourceRoot":"","sources":["../../src/locale/zh_CN.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb,kBAAkB,EAAE,mBAAmB;IACvC,mBAAmB,EAAE,kBAAkB;CACxC,CAAC","sourcesContent":["export default {\n 'unique violation': '{{field}} 字段值是唯一的',\n 'notNull Violation': '{{field}} 字段不能为空',\n};\n"]}
|
package/lib/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAA4D;AAC5D,6CAA0C;AAC1C,oDAA4B;AAC5B,yCAAsC;AACtC,mDAA+C;AAC/C,2DAAkC;AAClC,2DAAkC;AAElC,MAAa,kBAAmB,SAAQ,eAAM;IAA9C;;QAKE,iBAAY,GAAiB,IAAI,4BAAY,EAAE,CAAC;QAChD,WAAM,GAAW,eAAe,CAAC;IA2CnC,CAAC;IAhDC,OAAO;QACL,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAKD,UAAU;QACR,IAAI,CAAC,uCAAuC,EAAE,CAAC;IACjD,CAAC;IAED,uCAAuC;QACrC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC/C,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,IAAI,CAAC;aACb;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,YAAY,GAAG,IAAA,kBAAO,EAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,gBAAM,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,CACxB,CAAC,GAAG,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,MAAM,KAAI,GAAG,YAAY,qBAAS,CAAA,EAAA,EACxD,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACX,GAAG,CAAC,IAAI,GAAG;gBACT,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC7B,OAAO;wBACL,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;4BAC5B,EAAE,EAAE,IAAI,CAAC,MAAM;4BACf,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;yBAC1D,CAAC;qBACH,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC;YACF,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;QACnB,CAAC,CACF,CAAC;IACJ,CAAC;IACK,IAAI;;YACR,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,eAAI,CAAC,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,eAAI,CAAC,CAAC;YAEvD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9D,CAAC;KAAA;CACF;AAjDD,gDAiDC","sourcesContent":["import { compile } from '@formily/json-schema/lib/compiler';\nimport { Plugin } from '@nocobase/server';\nimport lodash from 'lodash';\nimport { BaseError } from 'sequelize';\nimport { ErrorHandler } from './error-handler';\nimport enUS from './locale/en_US';\nimport zhCN from './locale/zh_CN';\n\nexport class PluginErrorHandler extends Plugin {\n getName(): string {\n return this.getPackageName(__dirname);\n }\n\n errorHandler: ErrorHandler = new ErrorHandler();\n i18nNs: string = 'error-handler';\n\n beforeLoad() {\n this.registerSequelizeValidationErrorHandler();\n }\n\n registerSequelizeValidationErrorHandler() {\n const findFieldTitle = (instance, path, tFunc) => {\n if (!instance) {\n return path;\n }\n\n const model = instance.constructor;\n const collection = this.db.modelCollection.get(model);\n const field = collection.getField(path);\n const fieldOptions = compile(field.options, { t: tFunc });\n const title = lodash.get(fieldOptions, 'uiSchema.title', path);\n return title;\n };\n\n this.errorHandler.register(\n (err) => err?.errors?.length && err instanceof BaseError,\n (err, ctx) => {\n ctx.body = {\n errors: err.errors.map((err) => {\n return {\n message: ctx.i18n.t(err.type, {\n ns: this.i18nNs,\n field: findFieldTitle(err.instance, err.path, ctx.i18n.t),\n }),\n };\n }),\n };\n ctx.status = 400;\n },\n );\n }\n async load() {\n this.app.i18n.addResources('zh-CN', this.i18nNs, zhCN);\n this.app.i18n.addResources('en-US', this.i18nNs, enUS);\n\n this.app.middleware.unshift(this.errorHandler.middleware());\n }\n}\n"]}
|
package/tsconfig.build.json
DELETED