@nocobase/resourcer 0.7.4-alpha.7 → 0.7.5-alpha.1

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/action.d.ts CHANGED
@@ -182,7 +182,7 @@ export declare class Action {
182
182
  getOptions(): ActionOptions;
183
183
  setName(name: ActionName): this;
184
184
  getName(): ActionName;
185
- getMiddlewareHandlers(): any[];
185
+ getMiddlewareHandlers(): ((ctx: any, next: any) => Promise<void>)[];
186
186
  getHandler(): any;
187
187
  getHandlers(): any[];
188
188
  execute(context: any, next?: any): Promise<void>;
package/lib/action.js CHANGED
@@ -25,7 +25,15 @@ function _koaCompose() {
25
25
  return data;
26
26
  }
27
27
 
28
- var _utils = require("./utils");
28
+ function _utils() {
29
+ const data = require("@nocobase/utils");
30
+
31
+ _utils = function _utils() {
32
+ return data;
33
+ };
34
+
35
+ return data;
36
+ }
29
37
 
30
38
  var _middleware = _interopRequireDefault(require("./middleware"));
31
39
 
@@ -61,7 +69,7 @@ class Action {
61
69
  this.resourceName = void 0;
62
70
  this.resourceOf = void 0;
63
71
  this.middlewares = [];
64
- options = (0, _utils.requireModule)(options);
72
+ options = (0, _utils().requireModule)(options);
65
73
 
66
74
  if (typeof options === 'function') {
67
75
  options = {
@@ -137,7 +145,7 @@ class Action {
137
145
  }
138
146
 
139
147
  getHandler() {
140
- const handler = (0, _utils.requireModule)(this.handler || this.resource.resourcer.getRegisteredHandler(this.name));
148
+ const handler = (0, _utils().requireModule)(this.handler || this.resource.resourcer.getRegisteredHandler(this.name));
141
149
 
142
150
  if (typeof handler !== 'function') {
143
151
  throw new Error('Handler must be a function!');
package/lib/assign.js CHANGED
@@ -49,6 +49,10 @@ function getKeys(target) {
49
49
  const mergeStrategies = new Map();
50
50
  exports.mergeStrategies = mergeStrategies;
51
51
  mergeStrategies.set('overwrite', (_, y) => {
52
+ if (typeof y === 'string') {
53
+ y = y.split(',');
54
+ }
55
+
52
56
  return y;
53
57
  });
54
58
  mergeStrategies.set('andMerge', (x, y) => {
@@ -15,15 +15,18 @@ export interface MiddlewareOptions {
15
15
  }
16
16
  export declare class Middleware {
17
17
  protected options: MiddlewareOptions;
18
+ private middlewares;
18
19
  constructor(options: MiddlewareOptions | Function);
19
- getHandler(): any;
20
+ getHandler(): (ctx: any, next: any) => Promise<void>;
21
+ use(middleware: HandlerType): void;
22
+ disuse(middleware: HandlerType): void;
20
23
  canAccess(name: ActionName): boolean;
21
24
  static toInstanceArray(middlewares: any): Middleware[];
22
25
  }
23
26
  export default Middleware;
24
- export declare class MiddlewareManager {
25
- protected middlewares: HandlerType[];
26
- compose(): (ctx: any, next: any) => Promise<void>;
27
- use(middleware: HandlerType): void;
28
- unuse(middleware: HandlerType): void;
29
- }
27
+ export declare function branch(map: {
28
+ [key: string]: HandlerType;
29
+ }, reducer: (ctx: any) => string, options?: {
30
+ keyNotFound?(ctx: any, next: any): void;
31
+ handlerNotSet?(ctx: any, next: any): void;
32
+ }): HandlerType;
package/lib/middleware.js CHANGED
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.MiddlewareManager = exports.Middleware = void 0;
6
+ exports.Middleware = void 0;
7
+ exports.branch = branch;
8
+ exports.default = void 0;
7
9
 
8
10
  function _koaCompose() {
9
11
  const data = _interopRequireDefault(require("koa-compose"));
@@ -15,14 +17,23 @@ function _koaCompose() {
15
17
  return data;
16
18
  }
17
19
 
18
- var _utils = require("./utils");
20
+ function _utils() {
21
+ const data = require("@nocobase/utils");
22
+
23
+ _utils = function _utils() {
24
+ return data;
25
+ };
26
+
27
+ return data;
28
+ }
19
29
 
20
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
31
 
22
32
  class Middleware {
23
33
  constructor(options) {
24
34
  this.options = void 0;
25
- options = (0, _utils.requireModule)(options);
35
+ this.middlewares = [];
36
+ options = (0, _utils().requireModule)(options);
26
37
 
27
38
  if (typeof options === 'function') {
28
39
  this.options = {
@@ -34,13 +45,21 @@ class Middleware {
34
45
  }
35
46
 
36
47
  getHandler() {
37
- const handler = (0, _utils.requireModule)(this.options.handler);
48
+ const handler = (0, _utils().requireModule)(this.options.handler);
38
49
 
39
50
  if (typeof handler !== 'function') {
40
51
  throw new Error('Handler must be a function!');
41
52
  }
42
53
 
43
- return handler;
54
+ return (ctx, next) => (0, _koaCompose().default)([handler, ...this.middlewares])(ctx, next);
55
+ }
56
+
57
+ use(middleware) {
58
+ this.middlewares.push(middleware);
59
+ }
60
+
61
+ disuse(middleware) {
62
+ this.middlewares.splice(this.middlewares.indexOf(middleware), 1);
44
63
  }
45
64
 
46
65
  canAccess(name) {
@@ -93,23 +112,20 @@ exports.Middleware = Middleware;
93
112
  var _default = Middleware;
94
113
  exports.default = _default;
95
114
 
96
- class MiddlewareManager {
97
- constructor() {
98
- this.middlewares = [];
99
- }
100
-
101
- compose() {
102
- return (ctx, next) => (0, _koaCompose().default)(this.middlewares)(ctx, next);
103
- }
115
+ function branch(map = {}, reducer, options = {}) {
116
+ return (ctx, next) => {
117
+ const key = reducer(ctx);
104
118
 
105
- use(middleware) {
106
- this.middlewares.push(middleware);
107
- }
119
+ if (!key) {
120
+ return options.keyNotFound ? options.keyNotFound(ctx, next) : ctx.throw(404);
121
+ }
108
122
 
109
- unuse(middleware) {
110
- this.middlewares.splice(this.middlewares.indexOf(middleware), 1);
111
- }
123
+ const handler = map[key];
112
124
 
113
- }
125
+ if (!handler) {
126
+ return options.handlerNotSet ? options.handlerNotSet(ctx, next) : ctx.throw(404);
127
+ }
114
128
 
115
- exports.MiddlewareManager = MiddlewareManager;
129
+ return handler(ctx, next);
130
+ };
131
+ }
package/lib/resourcer.js CHANGED
@@ -45,9 +45,19 @@ function _pathToRegexp() {
45
45
  return data;
46
46
  }
47
47
 
48
+ function _utils() {
49
+ const data = require("@nocobase/utils");
50
+
51
+ _utils = function _utils() {
52
+ return data;
53
+ };
54
+
55
+ return data;
56
+ }
57
+
48
58
  var _resource = _interopRequireDefault(require("./resource"));
49
59
 
50
- var _utils = require("./utils");
60
+ var _utils2 = require("./utils");
51
61
 
52
62
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
53
63
 
@@ -109,7 +119,7 @@ class Resourcer {
109
119
 
110
120
  const resources = new Map();
111
121
  files.forEach(file => {
112
- const options = (0, _utils.requireModule)(file);
122
+ const options = (0, _utils().requireModule)(file);
113
123
  const table = this.define(typeof options === 'function' ? options(this) : options);
114
124
  resources.set(table.getName(), table);
115
125
  });
@@ -208,7 +218,7 @@ class Resourcer {
208
218
  const restApiMiddleware = /*#__PURE__*/function () {
209
219
  var _ref = _asyncToGenerator(function* (ctx, next) {
210
220
  ctx.resourcer = _this;
211
- let params = (0, _utils.parseRequest)({
221
+ let params = (0, _utils2.parseRequest)({
212
222
  path: ctx.request.path,
213
223
  method: ctx.request.method
214
224
  }, {
@@ -221,11 +231,11 @@ class Resourcer {
221
231
  }
222
232
 
223
233
  try {
224
- const resource = _this.getResource((0, _utils.getNameByParams)(params)); // 为关系资源时,暂时需要再执行一遍 parseRequest
234
+ const resource = _this.getResource((0, _utils2.getNameByParams)(params)); // 为关系资源时,暂时需要再执行一遍 parseRequest
225
235
 
226
236
 
227
237
  if (resource.options.type && resource.options.type !== 'single') {
228
- params = (0, _utils.parseRequest)({
238
+ params = (0, _utils2.parseRequest)({
229
239
  path: ctx.request.path,
230
240
  method: ctx.request.method,
231
241
  type: resource.options.type
@@ -240,13 +250,13 @@ class Resourcer {
240
250
  } // action 需要 clone 之后再赋给 ctx
241
251
 
242
252
 
243
- ctx.action = _this.getAction((0, _utils.getNameByParams)(params), params.actionName).clone();
253
+ ctx.action = _this.getAction((0, _utils2.getNameByParams)(params), params.actionName).clone();
244
254
  ctx.action.setContext(ctx);
245
255
  ctx.action.actionName = params.actionName;
246
256
  ctx.action.resourceOf = params.associatedIndex;
247
257
  ctx.action.resourceName = params.associatedName ? `${params.associatedName}.${params.resourceName}` : params.resourceName;
248
258
  ctx.action.params.filterByTk = params.resourceIndex;
249
- const query = (0, _utils.parseQuery)(ctx.request.querystring);
259
+ const query = (0, _utils2.parseQuery)(ctx.request.querystring);
250
260
 
251
261
  if ((0, _pathToRegexp().pathToRegexp)('/resourcer/{:associatedName.}?:resourceName{\\::actionName}').test(ctx.request.path)) {
252
262
  ctx.action.mergeParams(_objectSpread(_objectSpread(_objectSpread({}, query), params), ctx.request.body));
package/lib/utils.d.ts CHANGED
@@ -25,7 +25,6 @@ export interface ParsedParams {
25
25
  }
26
26
  export declare function getNameByParams(params: ParsedParams): string;
27
27
  export declare function parseRequest(request: ParseRequest, options?: ParseOptions): ParsedParams | false;
28
- export declare function requireModule(module: any): any;
29
28
  export declare function parseQuery(input: string): any;
30
29
  export declare function parseFields(fields: any): any;
31
30
  export declare function mergeFields(defaults: any, inputs: any): any;
package/lib/utils.js CHANGED
@@ -8,7 +8,6 @@ exports.mergeFields = mergeFields;
8
8
  exports.parseFields = parseFields;
9
9
  exports.parseQuery = parseQuery;
10
10
  exports.parseRequest = parseRequest;
11
- exports.requireModule = requireModule;
12
11
 
13
12
  function _lodash() {
14
13
  const data = _interopRequireDefault(require("lodash"));
@@ -216,18 +215,6 @@ function parseRequest(request, options = {}) {
216
215
  return params;
217
216
  }
218
217
 
219
- function requireModule(module) {
220
- if (typeof module === 'string') {
221
- module = require(module);
222
- }
223
-
224
- if (typeof module !== 'object') {
225
- return module;
226
- }
227
-
228
- return module.__esModule ? module.default : module;
229
- }
230
-
231
218
  function parseQuery(input) {
232
219
  // 自带 query 处理的不太给力,需要用 qs 转一下
233
220
  const query = _qs().default.parse(input, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/resourcer",
3
- "version": "0.7.4-alpha.7",
3
+ "version": "0.7.5-alpha.1",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -12,6 +12,7 @@
12
12
  }
13
13
  ],
14
14
  "dependencies": {
15
+ "@nocobase/utils": "0.7.5-alpha.1",
15
16
  "deepmerge": "^4.2.2",
16
17
  "koa-compose": "^4.1.0",
17
18
  "lodash": "^4.17.21",
@@ -23,5 +24,5 @@
23
24
  "url": "git+https://github.com/nocobase/nocobase.git",
24
25
  "directory": "packages/resourcer"
25
26
  },
26
- "gitHead": "77f22e6da464d19be111835316faf4b94cd80413"
27
+ "gitHead": "f6eb27b68185bb0c0b4c2cfca1df84205a9b9173"
27
28
  }