framework-do-dede 5.5.4 → 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
|
|
35
|
-
export declare function UseMiddlewares(middlewareClasses: MiddlewareDefinition[]): (target: any, propertyKey
|
|
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 =
|
|
58
|
+
const middlewares = metadataKey
|
|
59
|
+
? Reflect.getMetadata('middlewares', metadataTarget, metadataKey) || []
|
|
60
|
+
: Reflect.getMetadata('middlewares', metadataTarget) || [];
|
|
57
61
|
middlewares.push(middlewareClass);
|
|
58
|
-
|
|
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 =
|
|
70
|
+
const middlewares = metadataKey
|
|
71
|
+
? Reflect.getMetadata('middlewares', metadataTarget, metadataKey) || []
|
|
72
|
+
: Reflect.getMetadata('middlewares', metadataTarget) || [];
|
|
62
73
|
middlewares.push(middlewareClass);
|
|
63
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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/dist/http/http-server.js
CHANGED
|
@@ -28,9 +28,11 @@ export default class HttpServer {
|
|
|
28
28
|
mountRoute(httpServerParams) {
|
|
29
29
|
const params = httpServerParams.params?.map((param) => param.split('|')[0]);
|
|
30
30
|
if (params && params.length > 0) {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
const routeSegments = httpServerParams.route.split('/');
|
|
32
|
+
const paramsMounted = params
|
|
33
|
+
.filter((v) => !routeSegments.includes(`:${v}`))
|
|
34
|
+
.map((v) => `/:${v}`)
|
|
35
|
+
.join('');
|
|
34
36
|
return `${httpServerParams.route}${paramsMounted}`;
|
|
35
37
|
}
|
|
36
38
|
return httpServerParams.route;
|