@cargolift-cdi/lib-common 0.0.72 → 0.0.73

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.
Files changed (66) hide show
  1. package/README.md +265 -170
  2. package/dist/auth/api-client.decorator.d.ts +1 -0
  3. package/dist/auth/api-client.decorator.d.ts.map +1 -0
  4. package/dist/auth/auth.guard.d.ts +1 -0
  5. package/dist/auth/auth.guard.d.ts.map +1 -0
  6. package/dist/auth/auth.guard.js +16 -5
  7. package/dist/auth/auth.guard.js.map +1 -1
  8. package/dist/auth/auth.module.d.ts +1 -0
  9. package/dist/auth/auth.module.d.ts.map +1 -0
  10. package/dist/auth/jwt-verifier.service.d.ts +1 -0
  11. package/dist/auth/jwt-verifier.service.d.ts.map +1 -0
  12. package/dist/auth/jwt-verifier.service.js +6 -3
  13. package/dist/auth/jwt-verifier.service.js.map +1 -1
  14. package/dist/auth/roles.decorator.d.ts +1 -0
  15. package/dist/auth/roles.decorator.d.ts.map +1 -0
  16. package/dist/auth/token-jwt.decorator.d.ts +2 -1
  17. package/dist/auth/token-jwt.decorator.d.ts.map +1 -0
  18. package/dist/errors/base.error.d.ts +6 -5
  19. package/dist/errors/base.error.d.ts.map +1 -0
  20. package/dist/errors/base.error.js +5 -0
  21. package/dist/errors/base.error.js.map +1 -1
  22. package/dist/errors/errors.error.d.ts +1 -0
  23. package/dist/errors/errors.error.d.ts.map +1 -0
  24. package/dist/errors/errors.util.d.ts +1 -0
  25. package/dist/errors/errors.util.d.ts.map +1 -0
  26. package/dist/errors/invalid-payload-business.error.d.ts +2 -1
  27. package/dist/errors/invalid-payload-business.error.d.ts.map +1 -0
  28. package/dist/errors/invalid-payload-business.error.js +3 -1
  29. package/dist/errors/invalid-payload-business.error.js.map +1 -1
  30. package/dist/errors/not-found-business.error.d.ts +1 -0
  31. package/dist/errors/not-found-business.error.d.ts.map +1 -0
  32. package/dist/errors/payload-validation.error.d.ts +1 -0
  33. package/dist/errors/payload-validation.error.d.ts.map +1 -0
  34. package/dist/errors/payload-validation.error.js +3 -2
  35. package/dist/errors/payload-validation.error.js.map +1 -1
  36. package/dist/index.d.ts +1 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/logger/app-logger.module.d.ts +1 -0
  39. package/dist/logger/app-logger.module.d.ts.map +1 -0
  40. package/dist/logger/app-logger.token.d.ts +1 -0
  41. package/dist/logger/app-logger.token.d.ts.map +1 -0
  42. package/dist/logger/logger.async-context.d.ts +1 -0
  43. package/dist/logger/logger.async-context.d.ts.map +1 -0
  44. package/dist/logger/logger.module.d.ts +1 -0
  45. package/dist/logger/logger.module.d.ts.map +1 -0
  46. package/dist/logger/logger.service.d.ts +5 -1
  47. package/dist/logger/logger.service.d.ts.map +1 -0
  48. package/dist/logger/logger.service.js +58 -32
  49. package/dist/logger/logger.service.js.map +1 -1
  50. package/dist/nestjs/filters/http-exceptions.filter.d.ts +1 -0
  51. package/dist/nestjs/filters/http-exceptions.filter.d.ts.map +1 -0
  52. package/dist/nestjs/filters/http-exceptions.filter.js +2 -1
  53. package/dist/nestjs/filters/http-exceptions.filter.js.map +1 -1
  54. package/dist/nestjs/middleware/http-logger.middleware.d.ts +1 -0
  55. package/dist/nestjs/middleware/http-logger.middleware.d.ts.map +1 -0
  56. package/dist/nestjs/middleware/http-logger.middleware.js +8 -3
  57. package/dist/nestjs/middleware/http-logger.middleware.js.map +1 -1
  58. package/dist/util/payload.util.d.ts +1 -0
  59. package/dist/util/payload.util.d.ts.map +1 -0
  60. package/dist/util/payload.util.js +13 -13
  61. package/dist/util/payload.util.js.map +1 -1
  62. package/package.json +47 -41
  63. package/dist/__tests__/payload-util/payload-util.test.d.ts +0 -1
  64. package/dist/__tests__/payload-util/payload-util.test.js +0 -65
  65. package/dist/__tests__/payload-util/payload-util.test.js.map +0 -1
  66. package/dist/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -1,232 +1,327 @@
1
- # @cargolift-cdi/common
1
+ # @cargolift-cdi/lib-common
2
2
 
3
- Utilidades comuns e padronização de erros para projetos Cargolift CDI (NestJS).
3
+ ![Build Status](https://img.shields.io/badge/build-n%2Fa-lightgrey)
4
+ ![Versão](https://img.shields.io/badge/version-0.0.72-green)
5
+ ![Licença](https://img.shields.io/badge/license-MIT-lightgrey)
6
+ ![Monorepo](https://img.shields.io/badge/workspace-middleware-blue)
4
7
 
5
- Este pacote provê:
6
- - Classes de erro de domínio (BusinessError) com código, dados adicionais e causa encadeada
7
- - Filtro global de exceções para APIs (APIExceptionsFilter) já integrado ao util-logger
8
+ Biblioteca de utilitários comuns para serviços NestJS do ecossistema Middleware Cargolift, com foco em **logs estruturados**, **autenticação/autorização** e **padronização de erros**.
8
9
 
10
+ ---
9
11
 
10
- ## Instalação
12
+ ## 📌 Objetivo
11
13
 
12
- Requisitos:
13
- - Node.js LTS (18+) e npm
14
- - Peer dependency: `@nestjs/common@^11`
14
+ Este repositório centraliza componentes reutilizáveis usados pelos serviços do middleware para reduzir duplicidade e garantir padrões técnicos consistentes entre APIs e workers.
15
15
 
16
- Instale:
16
+ No contexto do monorepo `middleware`, a `lib-common` entrega uma base para:
17
17
 
18
- ```cmd
19
- npm i @cargolift-cdi/common
20
- ```
21
-
22
- O pacote depende de `@cargolift-cdi/util-logger` (instalado automaticamente).
18
+ - Observabilidade e rastreabilidade ponta a ponta (correlation id, trace, warns).
19
+ - Tratamento uniforme de exceções HTTP e erros de domínio.
20
+ - Autenticação JWT e autorização por role/cliente para endpoints NestJS.
21
+ - Utilitários de payload com sanitização de dados sensíveis.
23
22
 
23
+ ---
24
24
 
25
- ## Uso rápido
25
+ ## Funcionalidades
26
26
 
27
- ### 1) Aplicar o filtro global de exceções (NestJS)
27
+ - **Logger contextual com AsyncLocalStorage:** contexto isolado por requisição/mensagem com API simples para enriquecer logs.
28
+ - **Middleware HTTP de logging:** captura request/response com duração, origem e payload sanitizado.
29
+ - **Filtro global de exceções (`HTTPExceptionsFilter`):** resposta padronizada e log estruturado para erros 4xx/5xx.
30
+ - **Módulo de autenticação (`AuthModule`):** verificação JWT RS256 via OpenID/JWKS + `AuthGuard` com validação de roles.
31
+ - **Pacote de erros de domínio/aplicação:** classes de erro tipadas com metadados (`code`, `source`, `retryable`, `cause`, `data`).
32
+ - **Utilitário de payload (`PayloadUtil`):** normalização, extração de envelope/payload e mascaramento de campos sensíveis.
28
33
 
29
- ```ts
30
- import { NestFactory } from '@nestjs/core';
31
- import { AppModule } from './app.module';
32
- import { APIExceptionsFilter } from '@cargolift-cdi/lib-common';
33
- import { LoggerContextService } from '@cargolift-cdi/util-logger';
34
+ Diferenciais técnicos:
35
+ - Compatível com arquitetura orientada a eventos e serviços HTTP.
36
+ - Uso de padrões consistentes para `source`, `trace` e classificação de erro.
37
+ - Pronto para integração com stack de observabilidade do middleware.
34
38
 
35
- async function bootstrap() {
36
- const app = await NestFactory.create(AppModule, { bufferLogs: true });
39
+ ---
37
40
 
38
- // Usa o LoggerContextService já registrado no container
39
- const logger = app.get(LoggerContextService);
40
- app.useGlobalFilters(new APIExceptionsFilter(logger));
41
+ ## 🔍 Detalhamento
41
42
 
42
- await app.listen(3000);
43
- }
43
+ ### Logging e contexto
44
44
 
45
- bootstrap();
46
- ```
45
+ O `LoggerContextService` implementa o `LoggerService` do NestJS usando `pino` e mantém o contexto por fluxo assíncrono com `AsyncLocalStorage`.
47
46
 
48
- O filtro padroniza o payload de erro, enriquece logs com `correlation_id` e trata mensagens conhecidas (ex.: erros de rede).
47
+ Principais recursos:
48
+ - Métodos: `log`, `info`, `debug`, `warn`, `error`, `clientError`, `businessError`, `businessWarn`.
49
+ - Contexto: `setContextRequest`, `setContextRabbitMQ`, `setExternalReference`, `setBusinessKey`, `setLogContext`, `updateSource`.
50
+ - Helpers exportados: `runWithLoggerContext`, `getLoggerContext`, `updateLoggerContext`, `clearLoggerContext`.
49
51
 
50
- Alternativa: registrar via provider global (APP_FILTER):
52
+ #### Exemplo de uso (App Logger global)
51
53
 
52
54
  ```ts
53
- import { Module } from '@nestjs/common';
54
- import { APP_FILTER } from '@nestjs/core';
55
- import { APIExceptionsFilter } from '@cargolift-cdi/lib-common';
56
- // Certifique-se de que o LoggerContextService esteja disponível no container
57
- import { LoggerContextService } from '@cargolift-cdi/util-logger';
55
+ import { Inject, Injectable, Module } from '@nestjs/common';
56
+ import { AppLoggerModule, APP_LOGGER, LoggerContextService } from '@cargolift-cdi/lib-common';
58
57
 
59
58
  @Module({
60
- providers: [
61
- LoggerContextService, // ou importe o módulo que o fornece, se existir
62
- { provide: APP_FILTER, useClass: APIExceptionsFilter },
59
+ imports: [
60
+ AppLoggerModule.forRoot({
61
+ application: { name: 'middleware-api', function: 'service' },
62
+ }),
63
63
  ],
64
64
  })
65
65
  export class AppModule {}
66
- ```
67
66
 
68
- ### 2) Lançar erros de negócio no seu código
69
-
70
- ```ts
71
- import { NotFoundBusinessError, GenericBusinessError } from '@cargolift-cdi/lib-common';
72
-
73
- // Recurso não encontrado
74
- throw new NotFoundBusinessError('Order', '12345');
67
+ @Injectable()
68
+ export class ExampleService {
69
+ constructor(@Inject(APP_LOGGER) private readonly logger: LoggerContextService) {}
75
70
 
76
- // Erro de negócio genérico com código e dados extras
77
- throw new GenericBusinessError('Falha no provedor', {
78
- code: 'PAYMENT_PROVIDER_ERROR',
79
- data: { context: 'Pagamento', errorCode: 'PX-999', provider: 'AcmePay' },
80
- });
71
+ execute() {
72
+ this.logger.log('Serviço executado');
73
+ }
74
+ }
81
75
  ```
82
76
 
77
+ ### Autenticação e autorização
83
78
 
84
- ## API pública (exportada por `index`)
85
-
86
- - `BusinessError` (abstrata)
87
- - Base para erros de domínio. Suporta `code?: string`, `data?: Record<string, unknown>`, `cause?: unknown` e serialização segura via `toJSON()`.
88
- - `GenericBusinessError`
89
- - Erro de negócio genérico (mensagem padrão "Generic Business error" quando não informada). Útil para normalizar exceções desconhecidas.
90
- - `NotFoundBusinessError`
91
- - Especialização para recursos não encontrados: construtor `(resourceType: string, resourceId: string|number, message?, options?)`.
92
- - `APIExceptionsFilter` (NestJS)
93
- - Filtro global de exceções. Decide tipo do erro (business/application), aplica códigos padrão e registra logs estruturados via `LoggerContextService`.
94
-
95
- Observação: existem classes internas adicionais (ex.: `ApplicationError`, `GenericApplicationError`) que podem evoluir; utilize apenas a API pública acima para evitar quebras.
79
+ `AuthModule` exporta `JwtVerifierService` e `AuthGuard`.
96
80
 
97
- ## Contexto de Logs com AsyncLocalStorage (v2)
81
+ O `AuthGuard`:
82
+ - valida token Bearer RS256,
83
+ - popula `request.user`,
84
+ - resolve client id via `@ApiClient()` ou claims,
85
+ - valida roles via `@RequireRoles()`.
98
86
 
99
- A partir da versão que introduz esta seção, o `LoggerContextService` passou a ser singleton (escopo DEFAULT) e o isolamento por requisição/mensagem é garantido via `AsyncLocalStorage`.
87
+ #### Exemplo de uso
100
88
 
101
- Benefícios:
102
- - Menos alocações de instâncias (melhor para alto throughput)
103
- - Propagação automática de contexto por callbacks/promises sem passar manualmente
104
- - Publishers/clients apenas usam `logger.getContext()`
105
-
106
- Helpers exportados:
107
89
  ```ts
108
- import { runWithLoggerContext, getLoggerContext, updateLoggerContext } from '@cargolift-cdi/lib-common';
109
-
110
- runWithLoggerContext({ correlation_id: 'abc' }, () => {
111
- // Tudo aqui dentro (e awaits) mantém o contexto
112
- });
113
- ```
114
-
115
- Fluxo HTTP (middleware `APILoggerMiddleware`):
116
- 1. Abre `runWithLoggerContext({})`
117
- 2. Chama `logger.setContextRequest(req)` (gera/propaga `correlation_id` e `trace`)
118
- 3. Todos os logs subsequentes compartilham o mesmo contexto
119
-
120
- Fluxo RabbitMQ (consumer):
121
- 1. Cria um child logger a partir dos headers da mensagem (`childFromRabbit`)
122
- 2. Semeia o ALS com `runWithLoggerContext(child.getContext(), processMessage)`
123
- 3. Dentro do processamento usa-se o `logger` base normalmente
124
-
125
- Caso precise anexar dados adicionais no meio da execução:
126
- ```ts
127
- updateLoggerContext({ caller_info: { type: 'user', id: 'u-1' } });
90
+ import { Controller, Get, UseGuards } from '@nestjs/common';
91
+ import { AuthGuard, RequireRoles, ApiClient, TokenJWT } from '@cargolift-cdi/lib-common';
92
+
93
+ @Controller('orders')
94
+ @UseGuards(AuthGuard)
95
+ export class OrdersController {
96
+ @Get(':entity')
97
+ @ApiClient('api.middleware')
98
+ @RequireRoles(':entity')
99
+ list(@TokenJWT() jwt: any) {
100
+ return { subject: jwt?.sub };
101
+ }
102
+ }
128
103
  ```
129
104
 
130
- Se um log for emitido fora de um escopo ALS (ex.: antes de bootstrap), o logger ainda funcionará, porém sem `correlation_id` fixo (um novo poderá ser gerado quando o contexto for definido).
131
-
132
-
105
+ ### Erros e exceções HTTP
133
106
 
134
- ## Detalhes das classes
107
+ `BaseError` e suas especializações (`BusinessError`, `ApplicationError`, `MiddlewareError`, `ClientError` e versões transitórias) padronizam semântica de erro no domínio.
135
108
 
136
- ### BusinessError
109
+ Para APIs HTTP, use `HTTPExceptionsFilter` como filtro global para resposta uniforme e logs consistentes.
137
110
 
138
- Contrato básico:
139
- - `name: string` — Nome da classe (ex.: `NotFoundBusinessError`)
140
- - `message?: string` — Mensagem humana
141
- - `code?: string` — Ex.: `BUSINESS_RESOURCE_NOT_FOUND`, `INVALID_PAYLOAD`
142
- - `data?: Record<string, unknown>` — Dados serializáveis extras
143
- - `cause?: unknown` — Erro original para encadeamento
144
- - `toJSON()` — Retorna objeto serializável, inclusive com `stack` enumerável e `cause` segura
111
+ #### Exemplo de uso
145
112
 
146
- `BusinessErrorOptions`:
147
113
  ```ts
148
- type BusinessErrorOptions = {
149
- code?: string;
150
- cause?: unknown;
151
- data?: Record<string, unknown>;
152
- };
153
- ```
154
-
155
- ### NotFoundBusinessError
156
-
157
- - Código padrão: `BUSINESS_RESOURCE_NOT_FOUND`
158
- - `data`: `{ resourceType: string, resourceId: string|number }`
159
-
160
- ### GenericBusinessError
114
+ import { Module } from '@nestjs/common';
115
+ import { APP_FILTER } from '@nestjs/core';
116
+ import { HTTPExceptionsFilter, LoggerModule } from '@cargolift-cdi/lib-common';
161
117
 
162
- - Código padrão: `BUSINESS_ERROR`
163
- - Permite enviar `data` adicional e causa original (`cause`).
118
+ @Module({
119
+ imports: [LoggerModule],
120
+ providers: [{ provide: APP_FILTER, useClass: HTTPExceptionsFilter }],
121
+ })
122
+ export class AppModule {}
123
+ ```
164
124
 
165
- ### APIExceptionsFilter
125
+ ### Utilitário de payload
126
+
127
+ `PayloadUtil` oferece:
128
+ - `normalize(payload)`: converte string JSON/objeto para estrutura utilizável.
129
+ - `sanitize(payload)`: mascara campos sensíveis.
130
+ - `extract(rawPayload)`: separa `envelope` e `payload` quando houver wrapper.
131
+
132
+ ---
133
+
134
+ ## 🛠 Tecnologias e Dependências
135
+
136
+ <table>
137
+ <thead>
138
+ <tr>
139
+ <th>Tecnologia</th>
140
+ <th>Versão</th>
141
+ <th>Finalidade</th>
142
+ </tr>
143
+ </thead>
144
+ <tbody>
145
+ <tr>
146
+ <td>TypeScript</td>
147
+ <td>^5.9.2</td>
148
+ <td>Implementação tipada da biblioteca</td>
149
+ </tr>
150
+ <tr>
151
+ <td>NestJS Common/Core</td>
152
+ <td>^11.1.6</td>
153
+ <td>Integração com DI, guards, decorators, filters e middleware</td>
154
+ </tr>
155
+ <tr>
156
+ <td>Pino + Pino Pretty</td>
157
+ <td>^9.11.0 / ^13.1.1</td>
158
+ <td>Logging estruturado e saída amigável em desenvolvimento</td>
159
+ </tr>
160
+ <tr>
161
+ <td>uuid</td>
162
+ <td>^13.0.0</td>
163
+ <td>Geração de correlation id</td>
164
+ </tr>
165
+ <tr>
166
+ <td>Vitest</td>
167
+ <td>^4.0.16</td>
168
+ <td>Testes unitários</td>
169
+ </tr>
170
+ </tbody>
171
+ </table>
172
+
173
+ **Dependência interna:**
174
+ - `@cargolift-cdi/types` (`workspace:*`)
175
+
176
+ ---
177
+
178
+ ## 🚀 Instalação
179
+
180
+ ### Pré-requisitos
181
+
182
+ - Node.js: 18+
183
+ - pnpm: recomendado no monorepo
184
+ - NestJS: peer dependency `@nestjs/common@^11.1.6`
185
+
186
+ ### Instalar no monorepo (workspace)
187
+
188
+ ```bash
189
+ pnpm --filter @cargolift-cdi/lib-common install
190
+ ```
166
191
 
167
- - Inspeciona exceções do NestJS (`HttpException`) e erros comuns de infraestrutura (ex.: `ECONNREFUSED`, `ETIMEDOUT`)
168
- - Cria/propaga `correlation_id` no contexto de log
169
- - Resposta JSON padrão:
192
+ ### Consumir em outro pacote do monorepo
170
193
 
171
- ```json
172
- {
173
- "message": "<mensagem>",
174
- "error": {
175
- "statusCode": 500,
176
- "timestamp": "2025-01-01T00:00:00.000Z",
177
- "path": "/rota",
178
- "errorCode": "INTERNAL_ERROR"
179
- }
180
- }
194
+ ```bash
195
+ pnpm add @cargolift-cdi/lib-common
181
196
  ```
182
197
 
183
-
184
- # App Logger (Global)
185
- Use AppLoggerModule para configurar um log global com contexto.
198
+ ### Variáveis de ambiente
199
+
200
+ <table>
201
+ <thead>
202
+ <tr>
203
+ <th>Variável</th>
204
+ <th>Descrição</th>
205
+ <th>Obrigatória</th>
206
+ <th>Valor padrão</th>
207
+ </tr>
208
+ </thead>
209
+ <tbody>
210
+ <tr>
211
+ <td>KEYCLOAK_BASE_URL</td>
212
+ <td>Base URL do provedor OIDC (Keycloak)</td>
213
+ <td>Sim (para AuthGuard/JWT)</td>
214
+ <td>-</td>
215
+ </tr>
216
+ <tr>
217
+ <td>KEYCLOAK_REALM</td>
218
+ <td>Realm do Keycloak</td>
219
+ <td>Sim (para AuthGuard/JWT)</td>
220
+ <td>-</td>
221
+ </tr>
222
+ <tr>
223
+ <td>KEYCLOAK_ISSUER</td>
224
+ <td>Issuer esperado no token</td>
225
+ <td>Recomendado</td>
226
+ <td>-</td>
227
+ </tr>
228
+ <tr>
229
+ <td>KEYCLOAK_AUDIENCE</td>
230
+ <td>Audience esperada no token</td>
231
+ <td>Recomendado</td>
232
+ <td>api.util</td>
233
+ </tr>
234
+ <tr>
235
+ <td>LOG_LEVEL</td>
236
+ <td>Nível de log do pino</td>
237
+ <td>Não</td>
238
+ <td>info</td>
239
+ </tr>
240
+ <tr>
241
+ <td>LOG_DEBUG_IGNORE</td>
242
+ <td>Campos ignorados na saída de debug</td>
243
+ <td>Não</td>
244
+ <td>pid,hostname,trace,correlation_id,application,message</td>
245
+ </tr>
246
+ <tr>
247
+ <td>TRACE_MAX_DEPTH</td>
248
+ <td>Profundidade máxima do array de trace</td>
249
+ <td>Não</td>
250
+ <td>5</td>
251
+ </tr>
252
+ <tr>
253
+ <td>NODE_ENV</td>
254
+ <td>Controla saída formatada com pino-pretty</td>
255
+ <td>Não</td>
256
+ <td>development</td>
257
+ </tr>
258
+ </tbody>
259
+ </table>
260
+
261
+ ---
262
+
263
+ ## 💡 Como Usar
264
+
265
+ ### Quickstart
186
266
 
187
267
  ```ts
188
- import { AppLoggerModule, APP_LOGGER, LoggerContextService } from '@cargolift-cdi/lib-common';
189
-
190
- @Module({
191
- imports: [
192
- AppLoggerModule.forRoot({
193
- application: {
194
- name: 'middleware-esb',
195
- function: 'service',
196
- },
197
- }),
198
- ],
199
- })
200
- export class AppModule {}
201
-
202
- @Injectable()
203
- export class SomeService {
204
- constructor(@Inject(APP_LOGGER) private readonly appLogger: LoggerContextService) {}
268
+ import {
269
+ LoggerModule,
270
+ HTTPLoggerMiddleware,
271
+ HTTPExceptionsFilter,
272
+ AuthModule,
273
+ PayloadUtil,
274
+ } from '@cargolift-cdi/lib-common';
275
+
276
+ // Importe LoggerModule/AuthModule no seu AppModule.
277
+ // Registre HTTPLoggerMiddleware no consumer de middlewares.
278
+ // Registre HTTPExceptionsFilter como APP_FILTER.
279
+
280
+ const sanitized = PayloadUtil.sanitize({ authorization: 'Bearer abc', value: 1 });
281
+ // => { authorization: '[REDACTED]', value: 1 }
282
+ ```
205
283
 
206
- doStuff() {
207
- this.appLogger.log('App level log');
208
- }
209
- }
284
+ ---
285
+
286
+ ## 📁 Estrutura do Projeto
287
+
288
+ ```text
289
+ src/
290
+ ├── auth/ # AuthModule, guard, decorators e verificação JWT
291
+ ├── errors/ # BaseError, erros tipados e utilitários de classificação
292
+ ├── logger/ # LoggerContextService, módulos de logger e AsyncLocalStorage
293
+ ├── nestjs/
294
+ │ ├── filters/ # HTTPExceptionsFilter
295
+ │ └── middleware/ # HTTPLoggerMiddleware
296
+ ├── util/ # PayloadUtil
297
+ ├── __tests__/ # Testes unitários
298
+ └── index.ts # Export público da biblioteca
210
299
  ```
211
300
 
212
- Notes:
213
- - Este log possui um contexto único; não chame `setContext`.
214
- - Para logs por mensagem/requisição , use a versão de escopo TRANSIENT `LoggerContextService` e chame `setContextRabbitMQ`/`setContextRequest`.
301
+ ---
215
302
 
303
+ ## 🧪 Testes
216
304
 
305
+ ```bash
306
+ pnpm --filter @cargolift-cdi/lib-common test
307
+ ```
217
308
 
218
- ## Scripts do projeto
309
+ Build local:
219
310
 
220
- - `npm run build` — Compila TypeScript para `dist/`
221
- - `npm publish` — Publica (executa `build` no `prepublishOnly`)
311
+ ```bash
312
+ pnpm --filter @cargolift-cdi/lib-common build
313
+ ```
222
314
 
315
+ ---
223
316
 
224
- ## Contribuição
317
+ ## 🤝 Contribuindo
225
318
 
226
- - Abra issues e PRs no GitHub: https://github.com/cargolift-cdi/common
227
- - Padrões: TypeScript, NestJS 11, commits claros, linters/formatters do seu editor
319
+ - Siga os padrões do monorepo middleware.
320
+ - Priorize mudanças pequenas e focadas.
321
+ - Inclua/atualize testes quando alterar comportamento.
228
322
 
323
+ ---
229
324
 
230
- ## Licença
325
+ ## 📄 Licença
231
326
 
232
327
  MIT © Cargolift CDI
@@ -1,2 +1,3 @@
1
1
  export declare const API_CLIENT_ID_KEY = "api_client_id";
2
2
  export declare const ApiClient: (clientId: string) => import("@nestjs/common").CustomDecorator<string>;
3
+ //# sourceMappingURL=api-client.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.decorator.d.ts","sourceRoot":"","sources":["../../src/auth/api-client.decorator.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AACjD,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM,qDAA6C,CAAC"}
@@ -11,3 +11,4 @@ export declare class AuthGuard implements CanActivate {
11
11
  private resolveApiClientId;
12
12
  canActivate(context: ExecutionContext): Promise<boolean>;
13
13
  }
14
+ //# sourceMappingURL=auth.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.guard.d.ts","sourceRoot":"","sources":["../../src/auth/auth.guard.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,gBAAgB,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAInE,qBACa,SAAU,YAAW,WAAW;IAEzC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,oBAAoB;IAI/C,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,kBAAkB;IAgBpB,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CA8F/D"}
@@ -14,6 +14,9 @@ import { LoggerContextService } from "../logger/logger.service.js";
14
14
  import { ROLES_KEY } from "./roles.decorator.js";
15
15
  import { API_CLIENT_ID_KEY } from "./api-client.decorator.js";
16
16
  let AuthGuard = class AuthGuard {
17
+ jwtVerifier;
18
+ reflector;
19
+ logger;
17
20
  constructor(jwtVerifier, reflector, logger) {
18
21
  this.jwtVerifier = jwtVerifier;
19
22
  this.reflector = reflector;
@@ -59,14 +62,22 @@ let AuthGuard = class AuthGuard {
59
62
  request.ip ||
60
63
  request.connection?.remoteAddress ||
61
64
  undefined;
62
- const username = payload?.client_id || payload?.preferred_username || payload?.username || payload?.name;
65
+ const username = payload?.azp || payload?.client_id || payload?.preferred_username || "unknown";
63
66
  this.logger.updateSource({
64
67
  ip: ip,
65
68
  user_agent: request.headers["user-agent"],
66
- user_email: payload?.email,
67
- user_id: payload?.sub,
68
- user_name: username,
69
- application: payload?.azp || payload?.aud,
69
+ audience: payload?.aud,
70
+ subject: payload?.azp || payload?.aud,
71
+ authentication: {
72
+ id: payload?.sub,
73
+ username: username,
74
+ email: payload?.email,
75
+ },
76
+ actor: {
77
+ id: payload?.sub,
78
+ username: username,
79
+ email: payload?.email,
80
+ }
70
81
  });
71
82
  }
72
83
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../../src/auth/auth.guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../../src/auth/auth.guard.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare class AuthModule {
2
2
  }
3
+ //# sourceMappingURL=auth.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.module.d.ts","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"AAKA,qBAIa,UAAU;CAAG"}
@@ -20,3 +20,4 @@ export declare class JwtVerifierService implements OnModuleInit {
20
20
  verify(token: string): Promise<any>;
21
21
  onModuleInit(): Promise<void>;
22
22
  }
23
+ //# sourceMappingURL=jwt-verifier.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-verifier.service.d.ts","sourceRoot":"","sources":["../../src/auth/jwt-verifier.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAyBnE,qBACa,kBAAmB,YAAW,YAAY;IAKzC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,QAAQ,CAA4D;IAC5E,OAAO,CAAC,eAAe,CAAC,CAAS;gBAEJ,MAAM,EAAE,oBAAoB;IAGzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAE1C,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,YAAY,GAIvB;YAEa,iBAAiB;YAiBjB,SAAS;YAWT,WAAW;IAmBzB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,YAAY;IAuBd,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAsBnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CA2BpC"}
@@ -18,12 +18,15 @@ function base64urlDecode(input) {
18
18
  return Buffer.from(input, 'base64');
19
19
  }
20
20
  let JwtVerifierService = class JwtVerifierService {
21
+ logger;
22
+ openIdConfig;
23
+ keyCache = new Map();
24
+ configFetchedAt;
21
25
  constructor(logger) {
22
26
  this.logger = logger;
23
- this.keyCache = new Map();
24
- this.CONFIG_TTL_MS = 60_000;
25
- this.KEY_TTL_MS = 10 * 60_000;
26
27
  }
28
+ CONFIG_TTL_MS = 60_000;
29
+ KEY_TTL_MS = 10 * 60_000;
27
30
  get issuer() {
28
31
  return process.env.KEYCLOAK_ISSUER;
29
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jwt-verifier.service.js","sourceRoot":"","sources":["../../src/auth/jwt-verifier.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jwt-verifier.service.js","sourceRoot":"","sources":["../../src/auth/jwt-verifier.service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare const ROLES_KEY = "required_roles";
2
2
  export declare const RequireRoles: (...roles: string[]) => import("@nestjs/common").CustomDecorator<string>;
3
+ //# sourceMappingURL=roles.decorator.d.ts.map