@ferreirasw/yoke-common 0.1.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.
Files changed (109) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +393 -0
  3. package/dist/dto/index.d.ts +2 -0
  4. package/dist/dto/index.js +19 -0
  5. package/dist/dto/index.js.map +1 -0
  6. package/dist/dto/paginated-result.interface.d.ts +23 -0
  7. package/dist/dto/paginated-result.interface.js +30 -0
  8. package/dist/dto/paginated-result.interface.js.map +1 -0
  9. package/dist/dto/pagination.dto.d.ts +12 -0
  10. package/dist/dto/pagination.dto.js +82 -0
  11. package/dist/dto/pagination.dto.js.map +1 -0
  12. package/dist/enums/action.enum.d.ts +10 -0
  13. package/dist/enums/action.enum.js +15 -0
  14. package/dist/enums/action.enum.js.map +1 -0
  15. package/dist/enums/benchmark.enum.d.ts +8 -0
  16. package/dist/enums/benchmark.enum.js +13 -0
  17. package/dist/enums/benchmark.enum.js.map +1 -0
  18. package/dist/enums/coverage-type.enum.d.ts +7 -0
  19. package/dist/enums/coverage-type.enum.js +12 -0
  20. package/dist/enums/coverage-type.enum.js.map +1 -0
  21. package/dist/enums/fund-status.enum.d.ts +4 -0
  22. package/dist/enums/fund-status.enum.js +9 -0
  23. package/dist/enums/fund-status.enum.js.map +1 -0
  24. package/dist/enums/index.d.ts +10 -0
  25. package/dist/enums/index.js +24 -0
  26. package/dist/enums/index.js.map +1 -0
  27. package/dist/enums/insurer-status.enum.d.ts +5 -0
  28. package/dist/enums/insurer-status.enum.js +10 -0
  29. package/dist/enums/insurer-status.enum.js.map +1 -0
  30. package/dist/enums/modality.enum.d.ts +5 -0
  31. package/dist/enums/modality.enum.js +10 -0
  32. package/dist/enums/modality.enum.js.map +1 -0
  33. package/dist/enums/product-status.enum.d.ts +5 -0
  34. package/dist/enums/product-status.enum.js +10 -0
  35. package/dist/enums/product-status.enum.js.map +1 -0
  36. package/dist/enums/quotation-status.enum.d.ts +6 -0
  37. package/dist/enums/quotation-status.enum.js +11 -0
  38. package/dist/enums/quotation-status.enum.js.map +1 -0
  39. package/dist/enums/risk-profile.enum.d.ts +6 -0
  40. package/dist/enums/risk-profile.enum.js +11 -0
  41. package/dist/enums/risk-profile.enum.js.map +1 -0
  42. package/dist/enums/tax-regime.enum.d.ts +5 -0
  43. package/dist/enums/tax-regime.enum.js +10 -0
  44. package/dist/enums/tax-regime.enum.js.map +1 -0
  45. package/dist/filters/http-exception.filter.d.ts +11 -0
  46. package/dist/filters/http-exception.filter.js +105 -0
  47. package/dist/filters/http-exception.filter.js.map +1 -0
  48. package/dist/filters/index.d.ts +1 -0
  49. package/dist/filters/index.js +18 -0
  50. package/dist/filters/index.js.map +1 -0
  51. package/dist/index.d.ts +7 -0
  52. package/dist/index.js +24 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/interceptors/index.d.ts +1 -0
  55. package/dist/interceptors/index.js +18 -0
  56. package/dist/interceptors/index.js.map +1 -0
  57. package/dist/interceptors/logging.interceptor.d.ts +18 -0
  58. package/dist/interceptors/logging.interceptor.js +74 -0
  59. package/dist/interceptors/logging.interceptor.js.map +1 -0
  60. package/dist/interfaces/api-response.interface.d.ts +22 -0
  61. package/dist/interfaces/api-response.interface.js +35 -0
  62. package/dist/interfaces/api-response.interface.js.map +1 -0
  63. package/dist/interfaces/index.d.ts +1 -0
  64. package/dist/interfaces/index.js +18 -0
  65. package/dist/interfaces/index.js.map +1 -0
  66. package/dist/messaging/constants/exchanges.d.ts +11 -0
  67. package/dist/messaging/constants/exchanges.js +14 -0
  68. package/dist/messaging/constants/exchanges.js.map +1 -0
  69. package/dist/messaging/constants/index.d.ts +2 -0
  70. package/dist/messaging/constants/index.js +19 -0
  71. package/dist/messaging/constants/index.js.map +1 -0
  72. package/dist/messaging/constants/routing-keys.d.ts +28 -0
  73. package/dist/messaging/constants/routing-keys.js +31 -0
  74. package/dist/messaging/constants/routing-keys.js.map +1 -0
  75. package/dist/messaging/index.d.ts +3 -0
  76. package/dist/messaging/index.js +20 -0
  77. package/dist/messaging/index.js.map +1 -0
  78. package/dist/messaging/services/base-events.service.d.ts +24 -0
  79. package/dist/messaging/services/base-events.service.js +116 -0
  80. package/dist/messaging/services/base-events.service.js.map +1 -0
  81. package/dist/messaging/services/index.d.ts +1 -0
  82. package/dist/messaging/services/index.js +18 -0
  83. package/dist/messaging/services/index.js.map +1 -0
  84. package/dist/messaging/types/account-messages.d.ts +18 -0
  85. package/dist/messaging/types/account-messages.js +3 -0
  86. package/dist/messaging/types/account-messages.js.map +1 -0
  87. package/dist/messaging/types/base-message.d.ts +6 -0
  88. package/dist/messaging/types/base-message.js +3 -0
  89. package/dist/messaging/types/base-message.js.map +1 -0
  90. package/dist/messaging/types/index.d.ts +5 -0
  91. package/dist/messaging/types/index.js +22 -0
  92. package/dist/messaging/types/index.js.map +1 -0
  93. package/dist/messaging/types/product-messages.d.ts +71 -0
  94. package/dist/messaging/types/product-messages.js +3 -0
  95. package/dist/messaging/types/product-messages.js.map +1 -0
  96. package/dist/messaging/types/quotation-messages.d.ts +35 -0
  97. package/dist/messaging/types/quotation-messages.js +3 -0
  98. package/dist/messaging/types/quotation-messages.js.map +1 -0
  99. package/dist/messaging/types/user-messages.d.ts +42 -0
  100. package/dist/messaging/types/user-messages.js +3 -0
  101. package/dist/messaging/types/user-messages.js.map +1 -0
  102. package/dist/tsconfig.build.tsbuildinfo +1 -0
  103. package/dist/utils/index.d.ts +1 -0
  104. package/dist/utils/index.js +18 -0
  105. package/dist/utils/index.js.map +1 -0
  106. package/dist/utils/validation.utils.d.ts +8 -0
  107. package/dist/utils/validation.utils.js +101 -0
  108. package/dist/utils/validation.utils.js.map +1 -0
  109. package/package.json +70 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Initial project setup with TypeScript configuration
12
+ - Project structure for shared utilities and messaging infrastructure
13
+
14
+ ## [0.1.0] - 2026-01-09
15
+
16
+ ### Added
17
+ - Initial package setup
18
+ - TypeScript configuration
19
+ - ESLint and Prettier configuration
20
+ - Jest test configuration
package/README.md ADDED
@@ -0,0 +1,393 @@
1
+ # @ferreirasw/yoke-common
2
+
3
+ Shared utilities, types, and messaging infrastructure for Yoke microservices.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @ferreirasw/yoke-common
9
+ ```
10
+
11
+ ## Features
12
+
13
+ - **Enums**: Shared enums for business logic (Modality, TaxRegime, RiskProfile, Status enums, etc.)
14
+ - **Messaging**: RabbitMQ infrastructure with exchanges, routing keys, and message types
15
+ - **DTOs**: Standardized DTOs for pagination and API responses
16
+ - **Filters**: Global exception filters for consistent error handling
17
+ - **Interceptors**: Logging interceptors for request/response tracking
18
+ - **Utilities**: Common validation and formatting utilities (CPF, CNPJ, currency, etc.)
19
+
20
+ ## Table of Contents
21
+
22
+ - [Enums](#enums)
23
+ - [Messaging (RabbitMQ)](#messaging-rabbitmq)
24
+ - [DTOs and Interfaces](#dtos-and-interfaces)
25
+ - [Filters and Interceptors](#filters-and-interceptors)
26
+ - [Utilities](#utilities)
27
+ - [Publishing Updates](#publishing-updates)
28
+
29
+ ## Enums
30
+
31
+ All shared enums for consistent business logic across microservices.
32
+
33
+ ### Usage Example
34
+
35
+ ```typescript
36
+ import {
37
+ Modality,
38
+ TaxRegime,
39
+ RiskProfile,
40
+ ProductStatus,
41
+ QuotationStatus,
42
+ } from '@ferreirasw/yoke-common';
43
+
44
+ // Use in your entities
45
+ @Entity()
46
+ export class Product {
47
+ @Column({ type: 'enum', enum: Modality })
48
+ modality: Modality;
49
+
50
+ @Column({ type: 'enum', enum: TaxRegime })
51
+ taxRegime: TaxRegime;
52
+
53
+ @Column({ type: 'enum', enum: ProductStatus, default: ProductStatus.ACTIVE })
54
+ status: ProductStatus;
55
+ }
56
+ ```
57
+
58
+ ### Available Enums
59
+
60
+ - `Modality`: PGBL, VGBL, ANY
61
+ - `TaxRegime`: PROGRESSIVE, REGRESSIVE, ANY
62
+ - `RiskProfile`: CONSERVATIVE, MODERATE, BOLD, AGGRESSIVE
63
+ - `ProductStatus`: ACTIVE, INACTIVE, SUSPENDED
64
+ - `QuotationStatus`: PENDING, COMPLETED, EXPIRED, CANCELLED
65
+ - `FundStatus`: ACTIVE, INACTIVE
66
+ - `InsurerStatus`: ACTIVE, INACTIVE, SUSPENDED
67
+ - `CoverageType`: DEATH, DISABILITY, TERM_PENSION, LIFETIME_INCOME, TEMPORARY_INCOME
68
+ - `Benchmark`: CDI, SELIC, IPCA, IBOVESPA, IBRX, IGPM
69
+ - `Action` (CASL): Manage, Create, Read, ReadAll, Update, UpdateAll, Delete, DeleteAll
70
+
71
+ ## Messaging (RabbitMQ)
72
+
73
+ Centralized RabbitMQ infrastructure for event-driven communication between microservices.
74
+
75
+ ### Exchanges and Routing Keys
76
+
77
+ ```typescript
78
+ import { EXCHANGES, ROUTING_KEYS } from '@ferreirasw/yoke-common';
79
+
80
+ // Publish an event
81
+ await eventsService.publishEvent(
82
+ EXCHANGES.PRODUCT,
83
+ ROUTING_KEYS.PRODUCT_CREATED,
84
+ { productId: '123', name: 'Product A' }
85
+ );
86
+ ```
87
+
88
+ ### BaseEventsService
89
+
90
+ Extend the `BaseEventsService` in your microservice:
91
+
92
+ ```typescript
93
+ import { Injectable } from '@nestjs/common';
94
+ import { ConfigService } from '@nestjs/config';
95
+ import { BaseEventsService, EXCHANGES } from '@ferreirasw/yoke-common';
96
+
97
+ @Injectable()
98
+ export class ProductEventsService extends BaseEventsService {
99
+ constructor(configService: ConfigService) {
100
+ super(configService, 'ProductEventsService');
101
+ }
102
+
103
+ protected async setupExchanges(channel: any): Promise<void> {
104
+ // Assert your service's exchanges
105
+ await channel.assertExchange(EXCHANGES.PRODUCT, 'topic', { durable: true });
106
+ await channel.assertExchange(EXCHANGES.FUND, 'topic', { durable: true });
107
+ await channel.assertExchange(EXCHANGES.COVERAGE, 'topic', { durable: true });
108
+ await channel.assertExchange(EXCHANGES.INSURER, 'topic', { durable: true });
109
+ }
110
+ }
111
+ ```
112
+
113
+ Then register in your module:
114
+
115
+ ```typescript
116
+ import { Module } from '@nestjs/common';
117
+ import { ProductEventsService } from './events/product-events.service';
118
+
119
+ @Module({
120
+ providers: [ProductEventsService],
121
+ exports: [ProductEventsService],
122
+ })
123
+ export class EventsModule {}
124
+ ```
125
+
126
+ ### Message Types
127
+
128
+ Type-safe message interfaces for all events:
129
+
130
+ ```typescript
131
+ import {
132
+ ProductCreatedMessage,
133
+ EXCHANGES,
134
+ ROUTING_KEYS,
135
+ } from '@ferreirasw/yoke-common';
136
+
137
+ const message: ProductCreatedMessage = {
138
+ productId: product.id,
139
+ insurerId: product.insurerId,
140
+ name: product.name,
141
+ description: product.description,
142
+ modality: product.modality,
143
+ taxRegime: product.taxRegime,
144
+ status: product.status,
145
+ minContribution: product.minContribution,
146
+ maxContribution: product.maxContribution,
147
+ entryFee: product.entryFee,
148
+ administrationFee: product.administrationFee,
149
+ timestamp: Date.now(),
150
+ source: 'product-microservice',
151
+ };
152
+
153
+ await this.eventsService.publishEvent(
154
+ EXCHANGES.PRODUCT,
155
+ ROUTING_KEYS.PRODUCT_CREATED,
156
+ message
157
+ );
158
+ ```
159
+
160
+ ## DTOs and Interfaces
161
+
162
+ ### Pagination
163
+
164
+ ```typescript
165
+ import {
166
+ PaginationDto,
167
+ PaginatedResult,
168
+ PaginationHelper,
169
+ } from '@ferreirasw/yoke-common';
170
+
171
+ // In your controller
172
+ @Get()
173
+ async findAll(@Query() pagination: PaginationDto) {
174
+ const [data, total] = await this.productService.findAll(pagination);
175
+
176
+ return PaginationHelper.createResult(
177
+ data,
178
+ total,
179
+ pagination.page,
180
+ pagination.limit
181
+ );
182
+ }
183
+
184
+ // In your service
185
+ async findAll(pagination: PaginationDto) {
186
+ const offset = pagination.getOffset();
187
+ const limit = pagination.getLimit();
188
+
189
+ const [data, total] = await this.repository.findAndCount({
190
+ skip: offset,
191
+ take: limit,
192
+ order: {
193
+ [pagination.sortBy || 'createdAt']: pagination.sortOrder || 'DESC',
194
+ },
195
+ });
196
+
197
+ return [data, total];
198
+ }
199
+ ```
200
+
201
+ ### API Responses
202
+
203
+ ```typescript
204
+ import {
205
+ ApiResponse,
206
+ ResponseBuilder,
207
+ } from '@ferreirasw/yoke-common';
208
+
209
+ // Success response
210
+ @Post()
211
+ async create(@Body() createDto: CreateProductDto) {
212
+ const product = await this.productService.create(createDto);
213
+ return ResponseBuilder.success(product, 'Product created successfully');
214
+ }
215
+
216
+ // Error response (usually handled by exception filter)
217
+ throw new BadRequestException(
218
+ ResponseBuilder.error('VALIDATION_FAILED', 'Invalid input data')
219
+ );
220
+ ```
221
+
222
+ ## Filters and Interceptors
223
+
224
+ ### Exception Filter
225
+
226
+ ```typescript
227
+ // In main.ts
228
+ import { AllExceptionsFilter } from '@ferreirasw/yoke-common';
229
+
230
+ async function bootstrap() {
231
+ const app = await NestFactory.create(AppModule);
232
+
233
+ // Register global exception filter
234
+ app.useGlobalFilters(new AllExceptionsFilter());
235
+
236
+ await app.listen(3000);
237
+ }
238
+ ```
239
+
240
+ ### Logging Interceptor
241
+
242
+ ```typescript
243
+ // In main.ts
244
+ import { LoggingInterceptor } from '@ferreirasw/yoke-common';
245
+
246
+ async function bootstrap() {
247
+ const app = await NestFactory.create(AppModule);
248
+
249
+ // Register global logging interceptor
250
+ app.useGlobalInterceptors(
251
+ new LoggingInterceptor({
252
+ logRequestBody: process.env.NODE_ENV === 'development',
253
+ logResponseData: false, // Disable in production for security
254
+ })
255
+ );
256
+
257
+ await app.listen(3000);
258
+ }
259
+ ```
260
+
261
+ ## Utilities
262
+
263
+ ### Validation Utilities
264
+
265
+ ```typescript
266
+ import {
267
+ isValidCPF,
268
+ isValidCNPJ,
269
+ formatCPF,
270
+ formatCNPJ,
271
+ formatCurrency,
272
+ calculateAge,
273
+ } from '@ferreirasw/yoke-common';
274
+
275
+ // Validate CPF
276
+ if (isValidCPF('123.456.789-09')) {
277
+ console.log('Valid CPF');
278
+ }
279
+
280
+ // Validate CNPJ
281
+ if (isValidCNPJ('11.222.333/0001-81')) {
282
+ console.log('Valid CNPJ');
283
+ }
284
+
285
+ // Format values
286
+ const formattedCPF = formatCPF('12345678909'); // '123.456.789-09'
287
+ const formattedCNPJ = formatCNPJ('11222333000181'); // '11.222.333/0001-81'
288
+ const formattedPrice = formatCurrency(1234.56); // 'R$ 1.234,56'
289
+
290
+ // Calculate age
291
+ const age = calculateAge(new Date('1990-01-15')); // 36 (as of 2026)
292
+ ```
293
+
294
+ ## Publishing Updates
295
+
296
+ ### Prerequisites
297
+
298
+ 1. Login to npm with ferreirasw account:
299
+
300
+ ```bash
301
+ npm login
302
+ # Enter credentials for ferreirasw
303
+ npm whoami # Should output: ferreirasw
304
+ ```
305
+
306
+ ### Publishing Workflow
307
+
308
+ 1. **Make your changes** to the codebase
309
+
310
+ 2. **Update CHANGELOG.md** with your changes
311
+
312
+ 3. **Bump the version** using semantic versioning:
313
+
314
+ ```bash
315
+ # For bug fixes (0.1.0 -> 0.1.1)
316
+ npm version patch
317
+
318
+ # For new features (0.1.0 -> 0.2.0)
319
+ npm version minor
320
+
321
+ # For breaking changes (0.1.0 -> 1.0.0)
322
+ npm version major
323
+ ```
324
+
325
+ 4. **Build and publish**:
326
+
327
+ ```bash
328
+ npm run build
329
+ npm publish --access public
330
+ ```
331
+
332
+ 5. **Push to git with tags**:
333
+
334
+ ```bash
335
+ git push origin main --tags
336
+ ```
337
+
338
+ ### Using in Microservices
339
+
340
+ After publishing, install in your microservices:
341
+
342
+ ```bash
343
+ cd /path/to/account-microservice
344
+ npm install @ferreirasw/yoke-common@latest
345
+
346
+ cd /path/to/product-microservice
347
+ npm install @ferreirasw/yoke-common@latest
348
+
349
+ cd /path/to/quotation-microservice
350
+ npm install @ferreirasw/yoke-common@latest
351
+ ```
352
+
353
+ ### Updating Microservices
354
+
355
+ When a new version is published:
356
+
357
+ ```bash
358
+ npm update @ferreirasw/yoke-common
359
+ ```
360
+
361
+ Or install a specific version:
362
+
363
+ ```bash
364
+ npm install @ferreirasw/yoke-common@0.2.0
365
+ ```
366
+
367
+ ## Development
368
+
369
+ ### Building
370
+
371
+ ```bash
372
+ npm run build
373
+ ```
374
+
375
+ ### Linting
376
+
377
+ ```bash
378
+ npm run lint
379
+ ```
380
+
381
+ ### Formatting
382
+
383
+ ```bash
384
+ npm run format
385
+ ```
386
+
387
+ ## License
388
+
389
+ MIT
390
+
391
+ ## Support
392
+
393
+ For issues or questions, please create an issue in the repository.
@@ -0,0 +1,2 @@
1
+ export * from './pagination.dto';
2
+ export * from './paginated-result.interface';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./pagination.dto"), exports);
18
+ __exportStar(require("./paginated-result.interface"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIA,mDAAiC;AACjC,+DAA6C"}
@@ -0,0 +1,23 @@
1
+ export interface PaginationMeta {
2
+ page: number;
3
+ limit: number;
4
+ total: number;
5
+ totalPages: number;
6
+ hasNextPage: boolean;
7
+ hasPreviousPage: boolean;
8
+ }
9
+ export interface PaginatedResult<T> {
10
+ data: T[];
11
+ meta: PaginationMeta;
12
+ }
13
+ export interface PaginatedResponse<T> {
14
+ data: T[];
15
+ total: number;
16
+ page: number;
17
+ limit: number;
18
+ totalPages: number;
19
+ }
20
+ export declare class PaginationHelper {
21
+ static createResult<T>(data: T[], total: number, page: number, limit: number): PaginatedResult<T>;
22
+ static toSimpleResponse<T>(result: PaginatedResult<T>): PaginatedResponse<T>;
23
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PaginationHelper = void 0;
4
+ class PaginationHelper {
5
+ static createResult(data, total, page, limit) {
6
+ const totalPages = Math.ceil(total / limit);
7
+ return {
8
+ data,
9
+ meta: {
10
+ page,
11
+ limit,
12
+ total,
13
+ totalPages,
14
+ hasNextPage: page < totalPages,
15
+ hasPreviousPage: page > 1,
16
+ },
17
+ };
18
+ }
19
+ static toSimpleResponse(result) {
20
+ return {
21
+ data: result.data,
22
+ total: result.meta.total,
23
+ page: result.meta.page,
24
+ limit: result.meta.limit,
25
+ totalPages: result.meta.totalPages,
26
+ };
27
+ }
28
+ }
29
+ exports.PaginationHelper = PaginationHelper;
30
+ //# sourceMappingURL=paginated-result.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paginated-result.interface.js","sourceRoot":"","sources":["../../src/dto/paginated-result.interface.ts"],"names":[],"mappings":";;;AA4EA,MAAa,gBAAgB;IAU3B,MAAM,CAAC,YAAY,CAAI,IAAS,EAAE,KAAa,EAAE,IAAY,EAAE,KAAa;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;QAE5C,OAAO;YACL,IAAI;YACJ,IAAI,EAAE;gBACJ,IAAI;gBACJ,KAAK;gBACL,KAAK;gBACL,UAAU;gBACV,WAAW,EAAE,IAAI,GAAG,UAAU;gBAC9B,eAAe,EAAE,IAAI,GAAG,CAAC;aAC1B;SACF,CAAC;IACJ,CAAC;IAQD,MAAM,CAAC,gBAAgB,CAAI,MAA0B;QACnD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;YACtB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;SACnC,CAAC;IACJ,CAAC;CACF;AAzCD,4CAyCC"}
@@ -0,0 +1,12 @@
1
+ export declare enum SortOrder {
2
+ ASC = "ASC",
3
+ DESC = "DESC"
4
+ }
5
+ export declare class PaginationDto {
6
+ page?: number;
7
+ limit?: number;
8
+ sortBy?: string;
9
+ sortOrder?: SortOrder;
10
+ getOffset(): number;
11
+ getLimit(): number;
12
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PaginationDto = exports.SortOrder = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const swagger_1 = require("@nestjs/swagger");
16
+ var SortOrder;
17
+ (function (SortOrder) {
18
+ SortOrder["ASC"] = "ASC";
19
+ SortOrder["DESC"] = "DESC";
20
+ })(SortOrder || (exports.SortOrder = SortOrder = {}));
21
+ class PaginationDto {
22
+ constructor() {
23
+ this.page = 1;
24
+ this.limit = 10;
25
+ this.sortOrder = SortOrder.DESC;
26
+ }
27
+ getOffset() {
28
+ return ((this.page ?? 1) - 1) * (this.limit ?? 10);
29
+ }
30
+ getLimit() {
31
+ return this.limit ?? 10;
32
+ }
33
+ }
34
+ exports.PaginationDto = PaginationDto;
35
+ __decorate([
36
+ (0, swagger_1.ApiPropertyOptional)({
37
+ description: 'Page number (starting from 1)',
38
+ minimum: 1,
39
+ default: 1,
40
+ example: 1,
41
+ }),
42
+ (0, class_validator_1.IsOptional)(),
43
+ (0, class_transformer_1.Type)(() => Number),
44
+ (0, class_validator_1.IsInt)(),
45
+ (0, class_validator_1.Min)(1),
46
+ __metadata("design:type", Number)
47
+ ], PaginationDto.prototype, "page", void 0);
48
+ __decorate([
49
+ (0, swagger_1.ApiPropertyOptional)({
50
+ description: 'Number of items per page',
51
+ minimum: 1,
52
+ maximum: 100,
53
+ default: 10,
54
+ example: 10,
55
+ }),
56
+ (0, class_validator_1.IsOptional)(),
57
+ (0, class_transformer_1.Type)(() => Number),
58
+ (0, class_validator_1.IsInt)(),
59
+ (0, class_validator_1.Min)(1),
60
+ (0, class_validator_1.Max)(100),
61
+ __metadata("design:type", Number)
62
+ ], PaginationDto.prototype, "limit", void 0);
63
+ __decorate([
64
+ (0, swagger_1.ApiPropertyOptional)({
65
+ description: 'Field to sort by',
66
+ example: 'createdAt',
67
+ }),
68
+ (0, class_validator_1.IsOptional)(),
69
+ __metadata("design:type", String)
70
+ ], PaginationDto.prototype, "sortBy", void 0);
71
+ __decorate([
72
+ (0, swagger_1.ApiPropertyOptional)({
73
+ description: 'Sort order (ascending or descending)',
74
+ enum: SortOrder,
75
+ default: SortOrder.DESC,
76
+ example: SortOrder.DESC,
77
+ }),
78
+ (0, class_validator_1.IsOptional)(),
79
+ (0, class_validator_1.IsEnum)(SortOrder),
80
+ __metadata("design:type", String)
81
+ ], PaginationDto.prototype, "sortOrder", void 0);
82
+ //# sourceMappingURL=pagination.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.dto.js","sourceRoot":"","sources":["../../src/dto/pagination.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAsE;AACtE,yDAAyC;AACzC,6CAAsD;AAKtD,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;AACf,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAQD,MAAa,aAAa;IAA1B;QAWE,SAAI,GAAY,CAAC,CAAC;QAclB,UAAK,GAAY,EAAE,CAAC;QAiBpB,cAAS,GAAe,SAAS,CAAC,IAAI,CAAC;IAezC,CAAC;IAVC,SAAS;QACP,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAKD,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC1B,CAAC;CACF;AAzDD,sCAyDC;AA9CC;IAVC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;2CACW;AAclB;IAZC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;IACN,IAAA,qBAAG,EAAC,GAAG,CAAC;;4CACW;AAOpB;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,WAAW;KACrB,CAAC;IACD,IAAA,4BAAU,GAAE;;6CACG;AAUhB;IARC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS,CAAC,IAAI;QACvB,OAAO,EAAE,SAAS,CAAC,IAAI;KACxB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,SAAS,CAAC;;gDACqB"}
@@ -0,0 +1,10 @@
1
+ export declare enum Action {
2
+ Manage = "manage",
3
+ Create = "create",
4
+ Read = "read",
5
+ ReadAll = "read_all",
6
+ Update = "update",
7
+ UpdateAll = "update_all",
8
+ Delete = "delete",
9
+ DeleteAll = "delete_all"
10
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Action = void 0;
4
+ var Action;
5
+ (function (Action) {
6
+ Action["Manage"] = "manage";
7
+ Action["Create"] = "create";
8
+ Action["Read"] = "read";
9
+ Action["ReadAll"] = "read_all";
10
+ Action["Update"] = "update";
11
+ Action["UpdateAll"] = "update_all";
12
+ Action["Delete"] = "delete";
13
+ Action["DeleteAll"] = "delete_all";
14
+ })(Action || (exports.Action = Action = {}));
15
+ //# sourceMappingURL=action.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.enum.js","sourceRoot":"","sources":["../../src/enums/action.enum.ts"],"names":[],"mappings":";;;AAgBA,IAAY,MASX;AATD,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,2BAAiB,CAAA;IACjB,uBAAa,CAAA;IACb,8BAAoB,CAAA;IACpB,2BAAiB,CAAA;IACjB,kCAAwB,CAAA;IACxB,2BAAiB,CAAA;IACjB,kCAAwB,CAAA;AAC1B,CAAC,EATW,MAAM,sBAAN,MAAM,QASjB"}
@@ -0,0 +1,8 @@
1
+ export declare enum Benchmark {
2
+ CDI = "CDI",
3
+ SELIC = "SELIC",
4
+ IPCA = "IPCA",
5
+ IBOVESPA = "IBOVESPA",
6
+ IBRX = "IBRX",
7
+ IGPM = "IGPM"
8
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Benchmark = void 0;
4
+ var Benchmark;
5
+ (function (Benchmark) {
6
+ Benchmark["CDI"] = "CDI";
7
+ Benchmark["SELIC"] = "SELIC";
8
+ Benchmark["IPCA"] = "IPCA";
9
+ Benchmark["IBOVESPA"] = "IBOVESPA";
10
+ Benchmark["IBRX"] = "IBRX";
11
+ Benchmark["IGPM"] = "IGPM";
12
+ })(Benchmark || (exports.Benchmark = Benchmark = {}));
13
+ //# sourceMappingURL=benchmark.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.enum.js","sourceRoot":"","sources":["../../src/enums/benchmark.enum.ts"],"names":[],"mappings":";;;AAYA,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,4BAAe,CAAA;IACf,0BAAa,CAAA;IACb,kCAAqB,CAAA;IACrB,0BAAa,CAAA;IACb,0BAAa,CAAA;AACf,CAAC,EAPW,SAAS,yBAAT,SAAS,QAOpB"}
@@ -0,0 +1,7 @@
1
+ export declare enum CoverageType {
2
+ DEATH = "morte",
3
+ DISABILITY = "invalidez",
4
+ TERM_PENSION = "pensao_por_prazo_certo",
5
+ LIFETIME_INCOME = "renda_vitalicia",
6
+ TEMPORARY_INCOME = "renda_temporaria"
7
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CoverageType = void 0;
4
+ var CoverageType;
5
+ (function (CoverageType) {
6
+ CoverageType["DEATH"] = "morte";
7
+ CoverageType["DISABILITY"] = "invalidez";
8
+ CoverageType["TERM_PENSION"] = "pensao_por_prazo_certo";
9
+ CoverageType["LIFETIME_INCOME"] = "renda_vitalicia";
10
+ CoverageType["TEMPORARY_INCOME"] = "renda_temporaria";
11
+ })(CoverageType || (exports.CoverageType = CoverageType = {}));
12
+ //# sourceMappingURL=coverage-type.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-type.enum.js","sourceRoot":"","sources":["../../src/enums/coverage-type.enum.ts"],"names":[],"mappings":";;;AAWA,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,+BAAe,CAAA;IACf,wCAAwB,CAAA;IACxB,uDAAuC,CAAA;IACvC,mDAAmC,CAAA;IACnC,qDAAqC,CAAA;AACvC,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB"}
@@ -0,0 +1,4 @@
1
+ export declare enum FundStatus {
2
+ ACTIVE = "active",
3
+ INACTIVE = "inactive"
4
+ }