framework-do-dede 5.4.3 → 5.4.5

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
@@ -279,6 +279,8 @@ class CreatePhotoUseCase extends UseCase<{ name: string }, { id: string }> {
279
279
  }
280
280
  ```
281
281
 
282
+ Por padrão, `HookBefore` e `HookAfter` recebem `this.data` se nenhum payload for definido manualmente. Apenas `HookAfter` pode ser sobrescrito via `this.afterHook.use(...)`. O `HookBefore` não recebe o retorno do `execute()` por ser um evento before.
283
+
282
284
  `HookAfter` não executa quando o método lança erro. Para executar mesmo em erro:
283
285
 
284
286
  ```ts
@@ -35,6 +35,7 @@ declare class HookManager {
35
35
  private readonly position;
36
36
  constructor(owner: UseCase<any, any>, position: HookPosition);
37
37
  use(payload: unknown): void;
38
+ useIfUnset(payload: unknown): void;
38
39
  notifyBefore(): Promise<void>;
39
40
  notifyAfter(onError: boolean): Promise<void>;
40
41
  private buildEntry;
@@ -33,6 +33,7 @@ function ensureHookedExecution(target) {
33
33
  const wrapped = async function executeWithHooks(...args) {
34
34
  const beforeHook = this.beforeHook;
35
35
  const afterHook = this.afterHook;
36
+ beforeHook.useIfUnset(this.data);
36
37
  await beforeHook.notifyBefore();
37
38
  let result;
38
39
  let originalError;
@@ -42,6 +43,7 @@ function ensureHookedExecution(target) {
42
43
  catch (error) {
43
44
  originalError = error;
44
45
  }
46
+ afterHook.useIfUnset(this.data);
45
47
  await afterHook.notifyAfter(!!originalError);
46
48
  if (originalError) {
47
49
  throw originalError;
@@ -74,7 +76,18 @@ class HookManager {
74
76
  this.entry = this.buildEntry();
75
77
  }
76
78
  use(payload) {
77
- this.entry?.setPayload(payload);
79
+ if (!this.entry) {
80
+ return;
81
+ }
82
+ this.entry.setPayload(payload);
83
+ this.entry.payloadSet = true;
84
+ }
85
+ useIfUnset(payload) {
86
+ if (!this.entry || this.entry.payloadSet) {
87
+ return;
88
+ }
89
+ this.entry.setPayload(payload);
90
+ this.entry.payloadSet = true;
78
91
  }
79
92
  async notifyBefore() {
80
93
  if (this.position === 'before' && this.entry?.metadata.position === 'before') {
@@ -100,6 +113,7 @@ class HookManager {
100
113
  return {
101
114
  metadata: entry,
102
115
  instance,
116
+ payloadSet: false,
103
117
  setPayload: (payload) => {
104
118
  instance.setPayload(payload, this.owner.context);
105
119
  },
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Post, Get, Put, Delete, Patch, Controller, Input, Middleware, UseMiddleware, UseMiddlewares, Tracer, Tracing, TracerData, Entity, Restrict, VirtualProperty, GetterPrefix, Model, model, column, UseCase, DecorateUseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Storage, CacheGateway, EventDispatcher } from "./application";
1
+ import { Post, Get, Put, Delete, Patch, Controller, Input, Middleware, UseMiddleware, UseMiddlewares, Tracer, Tracing, TracerData, Entity, Restrict, VirtualProperty, GetterPrefix, Transform, Model, model, column, UseCase, DecorateUseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Storage, CacheGateway, EventDispatcher } from "./application";
2
2
  import { Container, DefaultContainer, Inject, setDefaultContainer } from './infra/di/registry';
3
3
  import { Dede, type Options, Register } from './dede';
4
4
  import { ServerError, NotFound, Forbidden, Conflict, Unauthorized, UnprocessableEntity, BadRequest, InternalServerError, CustomServerError } from './http/errors/server';
@@ -6,5 +6,5 @@ import { AppError } from './domain/errors/app-error';
6
6
  import type { ValidatorDefinition } from './interface/validation/validator';
7
7
  import type { StorageGateway, Event, EventPayload } from './application';
8
8
  import type { RepositoryCreate, RepositoryUpdate, RepositoryRemove, RepositoryRemoveBy, RepositoryExistsBy, RepositoryRestore, RepositoryRestoreBy, RepositoryNotExistsBy, RepositoryPagination } from './protocols/repository';
9
- export { Controller, Post, Get, Put, Delete, Patch, Input, Middleware, UseMiddleware, UseMiddlewares, Tracer, Tracing, TracerData, Entity, Restrict, VirtualProperty, GetterPrefix, Model, model, column, UseCase, DecorateUseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Storage, CacheGateway, EventDispatcher, Inject, Container, DefaultContainer, setDefaultContainer, Dede, Options, Register, ServerError, NotFound, Forbidden, Conflict, Unauthorized, UnprocessableEntity, BadRequest, InternalServerError, CustomServerError, AppError, RepositoryCreate, RepositoryUpdate, RepositoryRemove, RepositoryRemoveBy, RepositoryRestore, RepositoryExistsBy, RepositoryRestoreBy, RepositoryNotExistsBy, RepositoryPagination };
9
+ export { Controller, Post, Get, Put, Delete, Patch, Input, Middleware, UseMiddleware, UseMiddlewares, Tracer, Tracing, TracerData, Entity, Restrict, VirtualProperty, GetterPrefix, Transform, Model, model, column, UseCase, DecorateUseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Storage, CacheGateway, EventDispatcher, Inject, Container, DefaultContainer, setDefaultContainer, Dede, Options, Register, ServerError, NotFound, Forbidden, Conflict, Unauthorized, UnprocessableEntity, BadRequest, InternalServerError, CustomServerError, AppError, RepositoryCreate, RepositoryUpdate, RepositoryRemove, RepositoryRemoveBy, RepositoryRestore, RepositoryExistsBy, RepositoryRestoreBy, RepositoryNotExistsBy, RepositoryPagination };
10
10
  export type { ValidatorDefinition, StorageGateway, Event, EventPayload };
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  Post, Get, Put, Delete, Patch, Controller, UseMiddleware, UseMiddlewares, Tracing,
4
4
  // controller
5
5
  // entity
6
- Entity, Restrict, VirtualProperty, GetterPrefix, Model, model, column,
6
+ Entity, Restrict, VirtualProperty, GetterPrefix, Transform, Model, model, column,
7
7
  // entity
8
8
  // usecase
9
9
  UseCase, DecorateUseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter,
@@ -16,4 +16,4 @@ import { Container, DefaultContainer, Inject, setDefaultContainer } from './infr
16
16
  import { Dede } from './dede';
17
17
  import { ServerError, NotFound, Forbidden, Conflict, Unauthorized, UnprocessableEntity, BadRequest, InternalServerError, CustomServerError } from './http/errors/server';
18
18
  import { AppError } from './domain/errors/app-error';
19
- export { Controller, Post, Get, Put, Delete, Patch, UseMiddleware, UseMiddlewares, Tracing, Entity, Restrict, VirtualProperty, GetterPrefix, Model, model, column, UseCase, DecorateUseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Storage, CacheGateway, EventDispatcher, Inject, Container, DefaultContainer, setDefaultContainer, Dede, ServerError, NotFound, Forbidden, Conflict, Unauthorized, UnprocessableEntity, BadRequest, InternalServerError, CustomServerError, AppError };
19
+ export { Controller, Post, Get, Put, Delete, Patch, UseMiddleware, UseMiddlewares, Tracing, Entity, Restrict, VirtualProperty, GetterPrefix, Transform, Model, model, column, UseCase, DecorateUseCase, Hook, BeforeHook, AfterHook, HookBefore, HookAfter, Storage, CacheGateway, EventDispatcher, Inject, Container, DefaultContainer, setDefaultContainer, Dede, ServerError, NotFound, Forbidden, Conflict, Unauthorized, UnprocessableEntity, BadRequest, InternalServerError, CustomServerError, AppError };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "framework-do-dede",
3
- "version": "5.4.3",
3
+ "version": "5.4.5",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",