@nocobase/plugin-error-handler 0.7.0-alpha.8 → 0.7.0-alpha.82

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.
@@ -1,55 +1,80 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
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
- constructor() {
15
- this.handlers = [];
16
- }
17
- register(guard, render) {
18
- this.handlers.push({
19
- guard,
20
- render,
21
- });
22
- }
23
- defaultHandler(err, ctx) {
24
- ctx.status = err.statusCode || err.status || 500;
25
- ctx.body = {
26
- errors: [
27
- {
28
- message: err.message,
29
- code: err.code,
30
- },
31
- ],
32
- };
33
- }
34
- middleware() {
35
- const self = this;
36
- return function errorHandler(ctx, next) {
37
- return __awaiter(this, void 0, void 0, function* () {
38
- try {
39
- yield next();
40
- }
41
- catch (err) {
42
- console.error(err);
43
- for (const handler of self.handlers) {
44
- if (handler.guard(err)) {
45
- return handler.render(err, ctx);
46
- }
47
- }
48
- self.defaultHandler(err, ctx);
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
- exports.ErrorHandler = ErrorHandler;
55
- //# sourceMappingURL=error-handler.js.map
79
+
80
+ exports.ErrorHandler = ErrorHandler;
package/lib/index.js CHANGED
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = void 0;
4
- var server_1 = require("./server");
5
- Object.defineProperty(exports, "default", { enumerable: true, get: function () { return server_1.PluginErrorHandler; } });
6
- //# sourceMappingURL=index.js.map
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");
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- 'unique violation': '{{field}} must be unique',
5
- 'notNull Violation': '{{field}} cannot be null',
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
- //# sourceMappingURL=en_US.js.map
11
+ exports.default = _default;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- 'unique violation': '{{field}} 字段值是唯一的',
5
- 'notNull Violation': '{{field}} 字段不能为空',
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
- //# sourceMappingURL=zh_CN.js.map
11
+ exports.default = _default;
package/lib/server.js CHANGED
@@ -1,70 +1,127 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
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
- const compiler_1 = require("@formily/json-schema/lib/compiler");
17
- const server_1 = require("@nocobase/server");
18
- const lodash_1 = __importDefault(require("lodash"));
19
- const sequelize_1 = require("sequelize");
20
- const error_handler_1 = require("./error-handler");
21
- const en_US_1 = __importDefault(require("./locale/en_US"));
22
- const zh_CN_1 = __importDefault(require("./locale/zh_CN"));
23
- class PluginErrorHandler extends server_1.Plugin {
24
- constructor() {
25
- super(...arguments);
26
- this.errorHandler = new error_handler_1.ErrorHandler();
27
- this.i18nNs = 'error-handler';
28
- }
29
- getName() {
30
- return this.getPackageName(__dirname);
31
- }
32
- beforeLoad() {
33
- this.registerSequelizeValidationErrorHandler();
34
- }
35
- registerSequelizeValidationErrorHandler() {
36
- const findFieldTitle = (instance, path, tFunc) => {
37
- if (!instance) {
38
- return path;
39
- }
40
- const model = instance.constructor;
41
- const collection = this.db.modelCollection.get(model);
42
- const field = collection.getField(path);
43
- const fieldOptions = (0, compiler_1.compile)(field.options, { t: tFunc });
44
- const title = lodash_1.default.get(fieldOptions, 'uiSchema.title', path);
45
- return title;
46
- };
47
- 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 sequelize_1.BaseError; }, (err, ctx) => {
48
- ctx.body = {
49
- errors: err.errors.map((err) => {
50
- return {
51
- message: ctx.i18n.t(err.type, {
52
- ns: this.i18nNs,
53
- field: findFieldTitle(err.instance, err.path, ctx.i18n.t),
54
- }),
55
- };
56
- }),
57
- };
58
- ctx.status = 400;
59
- });
60
- }
61
- load() {
62
- return __awaiter(this, void 0, void 0, function* () {
63
- this.app.i18n.addResources('zh-CN', this.i18nNs, zh_CN_1.default);
64
- this.app.i18n.addResources('en-US', this.i18nNs, en_US_1.default);
65
- this.app.middleware.unshift(this.errorHandler.middleware());
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
- exports.PluginErrorHandler = PluginErrorHandler;
70
- //# sourceMappingURL=server.js.map
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.8",
3
+ "version": "0.7.0-alpha.82",
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
- "@nocobase/server": "0.7.0-alpha.8"
15
+ "@formily/json-schema": "^2.0.15",
16
+ "@nocobase/server": "0.7.0-alpha.82"
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": "f4a12279b43669f2c0dcb3c98b87ebf03d8dab0b"
23
+ "gitHead": "4820fd09375c7200d1ea0bb0aab1bd4783b80d3d"
28
24
  }
package/src/server.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { compile } from '@formily/json-schema/lib/compiler';
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
  };
@@ -1,6 +0,0 @@
1
- export declare class ErrorHandler {
2
- handlers: any[];
3
- register(guard: (err: any) => boolean, render: (err: any, ctx: any) => void): void;
4
- defaultHandler(err: any, ctx: any): void;
5
- middleware(): (ctx: any, next: any) => Promise<any>;
6
- }
@@ -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
@@ -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
@@ -1,2 +0,0 @@
1
- export { PluginErrorHandler as default } from './server';
2
- //# sourceMappingURL=index.js.map
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"]}
@@ -1,5 +0,0 @@
1
- declare const _default: {
2
- 'unique violation': string;
3
- 'notNull Violation': string;
4
- };
5
- export default _default;
@@ -1,5 +0,0 @@
1
- export default {
2
- 'unique violation': '{{field}} must be unique',
3
- 'notNull Violation': '{{field}} cannot be null',
4
- };
5
- //# sourceMappingURL=en_US.js.map
@@ -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"]}
@@ -1,5 +0,0 @@
1
- declare const _default: {
2
- 'unique violation': string;
3
- 'notNull Violation': string;
4
- };
5
- export default _default;
@@ -1,5 +0,0 @@
1
- export default {
2
- 'unique violation': '{{field}} 字段值是唯一的',
3
- 'notNull Violation': '{{field}} 字段不能为空',
4
- };
5
- //# sourceMappingURL=zh_CN.js.map
@@ -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"]}
@@ -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"]}
@@ -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"]}
@@ -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"]}
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig.build.json",
3
- "compilerOptions": {
4
- "outDir": "./lib",
5
- "declaration": true
6
- },
7
- "include": ["./src/**/*.ts", "./src/**/*.tsx"],
8
- "exclude": ["./src/__tests__/*", "./esm/*", "./lib/*"]
9
- }
package/tsconfig.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "extends": "../../../tsconfig.json",
3
- "include": ["./src/**/*.ts", "./src/**/*.tsx"],
4
- "exclude": ["./esm/*", "./lib/*"]
5
- }