framework-do-dede 6.2.3 → 6.3.0

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
@@ -317,6 +317,26 @@ const app = await Dede.create({
317
317
  Com `framework.tracer: true`, todos os controllers/metodos passam a usar tracer por padrao.
318
318
  `@Tracing(new MeuTracer())` ainda sobrescreve por controller/metodo.
319
319
 
320
+ Para ignorar tracing em um controller/rota especifica quando o tracing global estiver ligado, use `@NoTracing()`:
321
+
322
+ ```ts
323
+ import { NoTracing } from './src';
324
+
325
+ @NoTracing()
326
+ @Controller('/health')
327
+ class HealthController {
328
+ @Get('/ping')
329
+ async ping() { return { ok: true }; }
330
+ }
331
+
332
+ @Controller('/users')
333
+ class UserController {
334
+ @NoTracing()
335
+ @Get('/public')
336
+ async publicRoute() { return { ok: true }; }
337
+ }
338
+ ```
339
+
320
340
  ### UseCase e Decorators
321
341
 
322
342
  UseCase provê `data` e `context` do request.
@@ -35,6 +35,7 @@ export interface Input<T, K = any> {
35
35
  type BodyFilter = "restrict" | "none";
36
36
  export declare function Controller(basePath?: string): (target: any) => void;
37
37
  export declare function Tracing<R>(tracer?: Tracer<R>): (target: any, propertyKey?: string) => void;
38
+ export declare function NoTracing(): (target: any, propertyKey?: string) => void;
38
39
  export declare function Version(version: number): (target: any, propertyKey?: string) => void;
39
40
  export declare function PresetIgnore(ignorePrefix?: boolean, ignoreVersion?: boolean): (target: any, propertyKey?: string) => void;
40
41
  export declare function UseMiddleware(middlewareClass: MiddlewareDefinition): (target: any, propertyKey?: string, descriptor?: PropertyDescriptor) => void;
@@ -22,6 +22,16 @@ export function Tracing(tracer) {
22
22
  }
23
23
  };
24
24
  }
25
+ export function NoTracing() {
26
+ return function (target, propertyKey) {
27
+ if (!propertyKey) {
28
+ Reflect.defineMetadata('noTracing', true, target);
29
+ }
30
+ else {
31
+ Reflect.defineMetadata('noTracing', true, target, propertyKey);
32
+ }
33
+ };
34
+ }
25
35
  export function Version(version) {
26
36
  return function (target, propertyKey) {
27
37
  if (!Number.isInteger(version) || version <= 0) {
@@ -1,8 +1,8 @@
1
- import { Controller, Post, Get, Put, Delete, Patch, UseMiddleware, UseMiddlewares, Tracing, Version, PresetIgnore, type Middleware, type Input, type Tracer, type TracerData } from './controller';
1
+ import { Controller, Post, Get, Put, Delete, Patch, UseMiddleware, UseMiddlewares, Tracing, NoTracing, Version, PresetIgnore, type Middleware, type Input, type Tracer, type TracerData } from './controller';
2
2
  import { Entity, Restrict, VirtualProperty, GetterPrefix, Transform } from '../infra/serialization/entity';
3
3
  import { Model, column } from '../infra/model/model';
4
4
  import { DecorateUseCase, UseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter } from './usecase';
5
- export { Controller, UseMiddleware, UseMiddlewares, Post, Get, Put, Delete, Patch, Tracing, Version, PresetIgnore, DecorateUseCase, UseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Entity, Restrict, VirtualProperty, GetterPrefix, Transform, Model, column, };
5
+ export { Controller, UseMiddleware, UseMiddlewares, Post, Get, Put, Delete, Patch, Tracing, NoTracing, Version, PresetIgnore, DecorateUseCase, UseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Entity, Restrict, VirtualProperty, GetterPrefix, Transform, Model, column, };
6
6
  export { Storage, CacheGateway, EventDispatcher } from './services';
7
7
  export type { Middleware, Input, Tracer, TracerData };
8
8
  export type { StorageGateway } from './services';
@@ -1,6 +1,6 @@
1
- import { Controller, Post, Get, Put, Delete, Patch, UseMiddleware, UseMiddlewares, Tracing, Version, PresetIgnore } from './controller';
1
+ import { Controller, Post, Get, Put, Delete, Patch, UseMiddleware, UseMiddlewares, Tracing, NoTracing, Version, PresetIgnore } from './controller';
2
2
  import { Entity, Restrict, VirtualProperty, GetterPrefix, Transform } from '../infra/serialization/entity';
3
3
  import { Model, column } from '../infra/model/model';
4
4
  import { DecorateUseCase, UseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, } from './usecase';
5
- export { Controller, UseMiddleware, UseMiddlewares, Post, Get, Put, Delete, Patch, Tracing, Version, PresetIgnore, DecorateUseCase, UseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Entity, Restrict, VirtualProperty, GetterPrefix, Transform, Model, column, };
5
+ export { Controller, UseMiddleware, UseMiddlewares, Post, Get, Put, Delete, Patch, Tracing, NoTracing, Version, PresetIgnore, DecorateUseCase, UseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Entity, Restrict, VirtualProperty, GetterPrefix, Transform, Model, column, };
6
6
  export { Storage, CacheGateway, EventDispatcher } from './services';
@@ -99,6 +99,7 @@ export default class ControllerHandler {
99
99
  for (const controller of controllersList) {
100
100
  const basePath = Reflect.getMetadata('basePath', controller);
101
101
  const methodNames = Object.getOwnPropertyNames(controller.prototype).filter(method => method !== 'constructor');
102
+ const controllerNoTracing = Reflect.getMetadata('noTracing', controller) === true;
102
103
  const controllerTracerMetadata = Reflect.getMetadata('tracer', controller)
103
104
  || (this.tracerEnabled ? { fromContainer: true, token: DEFAULT_TRACER_TOKEN } : null);
104
105
  const controllerVersion = Reflect.getMetadata('version', controller);
@@ -111,7 +112,10 @@ export default class ControllerHandler {
111
112
  const middlewares = [...controllerMiddlewares, ...methodMiddlewares];
112
113
  const responseType = routeConfig.responseType || 'json';
113
114
  const methodTracerMetadata = Reflect.getMetadata('tracer', controller.prototype, methodName);
114
- const tracerMetadata = methodTracerMetadata || controllerTracerMetadata;
115
+ const methodNoTracing = Reflect.getMetadata('noTracing', controller.prototype, methodName) === true;
116
+ const tracerMetadata = (methodNoTracing || controllerNoTracing)
117
+ ? null
118
+ : methodTracerMetadata || controllerTracerMetadata;
115
119
  const tracer = this.resolveTracer(tracerMetadata);
116
120
  const methodVersion = Reflect.getMetadata('version', controller.prototype, methodName);
117
121
  const methodPresetIgnore = Reflect.getMetadata('presetIgnore', controller.prototype, methodName);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "framework-do-dede",
3
- "version": "6.2.3",
3
+ "version": "6.3.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",