framework-do-dede 5.5.5 → 5.5.6

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/README.md CHANGED
@@ -218,6 +218,7 @@ vira:
218
218
  ### Middlewares
219
219
 
220
220
  Middlewares devem implementar `execute(input: Input<any>)`. Podem ser classe, factory ou instancia.
221
+ Podem ser aplicados no controller (valem para todas as rotas) e/ou no método.
221
222
 
222
223
  ```ts
223
224
  import { Middleware, UseMiddleware, UseMiddlewares, Input } from './src';
@@ -228,7 +229,14 @@ class AuthMiddleware implements Middleware {
228
229
  }
229
230
  }
230
231
 
232
+ class LoggerMiddleware implements Middleware {
233
+ async execute(input: Input<any>) {
234
+ input.context.logged = true;
235
+ }
236
+ }
237
+
231
238
  @Controller('/secure')
239
+ @UseMiddleware(LoggerMiddleware)
232
240
  class SecureController {
233
241
  @Get()
234
242
  @UseMiddleware(AuthMiddleware)
@@ -31,8 +31,8 @@ export declare function Controller(basePath?: string): (target: any) => void;
31
31
  export declare function Tracing<R>(tracer: Tracer<R>): (target: any, propertyKey?: string) => void;
32
32
  export declare function Version(version: number): (target: any, propertyKey?: string) => void;
33
33
  export declare function PresetIgnore(ignorePrefix?: boolean, ignoreVersion?: boolean): (target: any, propertyKey?: string) => void;
34
- export declare function UseMiddleware(middlewareClass: MiddlewareDefinition): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
35
- export declare function UseMiddlewares(middlewareClasses: MiddlewareDefinition[]): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
34
+ export declare function UseMiddleware(middlewareClass: MiddlewareDefinition): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => void;
35
+ export declare function UseMiddlewares(middlewareClasses: MiddlewareDefinition[]): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => void;
36
36
  export declare function Post(config?: {
37
37
  path?: string;
38
38
  statusCode?: number;
@@ -52,15 +52,31 @@ export function UseMiddleware(middlewareClass) {
52
52
  if (typeof middlewareClass === 'function' && isClass(middlewareClass) && !middlewareClass.prototype?.execute) {
53
53
  throw new FrameworkError('Middleware must implement execute()');
54
54
  }
55
+ const metadataTarget = propertyKey ? target : target;
56
+ const metadataKey = propertyKey ?? undefined;
55
57
  if (typeof middlewareClass === 'function' && middlewareClass.prototype?.execute) {
56
- const middlewares = Reflect.getMetadata('middlewares', target, propertyKey) || [];
58
+ const middlewares = metadataKey
59
+ ? Reflect.getMetadata('middlewares', metadataTarget, metadataKey) || []
60
+ : Reflect.getMetadata('middlewares', metadataTarget) || [];
57
61
  middlewares.push(middlewareClass);
58
- Reflect.defineMetadata('middlewares', middlewares, target, propertyKey);
62
+ if (metadataKey) {
63
+ Reflect.defineMetadata('middlewares', middlewares, metadataTarget, metadataKey);
64
+ }
65
+ else {
66
+ Reflect.defineMetadata('middlewares', middlewares, metadataTarget);
67
+ }
59
68
  return;
60
69
  }
61
- const middlewares = Reflect.getMetadata('middlewares', target, propertyKey) || [];
70
+ const middlewares = metadataKey
71
+ ? Reflect.getMetadata('middlewares', metadataTarget, metadataKey) || []
72
+ : Reflect.getMetadata('middlewares', metadataTarget) || [];
62
73
  middlewares.push(middlewareClass);
63
- Reflect.defineMetadata('middlewares', middlewares, target, propertyKey);
74
+ if (metadataKey) {
75
+ Reflect.defineMetadata('middlewares', middlewares, metadataTarget, metadataKey);
76
+ }
77
+ else {
78
+ Reflect.defineMetadata('middlewares', middlewares, metadataTarget);
79
+ }
64
80
  };
65
81
  }
66
82
  export function UseMiddlewares(middlewareClasses) {
@@ -73,9 +89,18 @@ export function UseMiddlewares(middlewareClasses) {
73
89
  throw new FrameworkError('Middleware must implement execute()');
74
90
  }
75
91
  }
76
- const existingMiddlewares = Reflect.getMetadata('middlewares', target, propertyKey) || [];
92
+ const metadataTarget = propertyKey ? target : target;
93
+ const metadataKey = propertyKey ?? undefined;
94
+ const existingMiddlewares = metadataKey
95
+ ? Reflect.getMetadata('middlewares', metadataTarget, metadataKey) || []
96
+ : Reflect.getMetadata('middlewares', metadataTarget) || [];
77
97
  existingMiddlewares.push(...middlewareClasses);
78
- Reflect.defineMetadata('middlewares', existingMiddlewares, target, propertyKey);
98
+ if (metadataKey) {
99
+ Reflect.defineMetadata('middlewares', existingMiddlewares, metadataTarget, metadataKey);
100
+ }
101
+ else {
102
+ Reflect.defineMetadata('middlewares', existingMiddlewares, metadataTarget);
103
+ }
79
104
  };
80
105
  }
81
106
  export function Post(config = {}) {
@@ -98,10 +98,12 @@ export default class ControllerHandler {
98
98
  let tracer = Reflect.getMetadata('tracer', controller) || null;
99
99
  const controllerVersion = Reflect.getMetadata('version', controller);
100
100
  const controllerPresetIgnore = Reflect.getMetadata('presetIgnore', controller);
101
+ const controllerMiddlewares = Reflect.getMetadata('middlewares', controller) || [];
101
102
  const instance = new controller();
102
103
  for (const methodName of methodNames) {
103
104
  const routeConfig = Reflect.getMetadata('route', controller.prototype, methodName);
104
- const middlewares = Reflect.getMetadata('middlewares', controller.prototype, methodName);
105
+ const methodMiddlewares = Reflect.getMetadata('middlewares', controller.prototype, methodName) || [];
106
+ const middlewares = [...controllerMiddlewares, ...methodMiddlewares];
105
107
  const responseType = Reflect.getMetadata('responseType', controller.prototype, methodName) || 'json';
106
108
  tracer = Reflect.getMetadata('tracer', controller.prototype, methodName) || tracer;
107
109
  const methodVersion = Reflect.getMetadata('version', controller.prototype, methodName);
@@ -128,7 +130,7 @@ export default class ControllerHandler {
128
130
  tracer
129
131
  },
130
132
  responseType,
131
- middlewares: middlewares ? middlewares.map(middleware => this.resolveMiddleware(middleware)) : [],
133
+ middlewares: middlewares.length ? middlewares.map(middleware => this.resolveMiddleware(middleware)) : [],
132
134
  });
133
135
  }
134
136
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "framework-do-dede",
3
- "version": "5.5.5",
3
+ "version": "5.5.6",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",