@takentrade/takentrade-libs 4.1.0 → 4.1.2

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 (53) hide show
  1. package/README.md +6 -57
  2. package/dist/auth/guards/index.d.ts +1 -0
  3. package/dist/auth/guards/index.js +1 -0
  4. package/dist/auth/guards/tnt-base-auth.guard.d.ts +15 -0
  5. package/dist/auth/guards/tnt-base-auth.guard.js +54 -0
  6. package/dist/bullmq/config/bull.config.js +1 -1
  7. package/dist/index.d.ts +0 -3
  8. package/dist/index.js +0 -3
  9. package/dist/notification/notification.interface.d.ts +0 -2
  10. package/dist/tsconfig.tsbuildinfo +1 -1
  11. package/package.json +15 -21
  12. package/dist/metrics/circuit-breaker-metrics.service.d.ts +0 -61
  13. package/dist/metrics/circuit-breaker-metrics.service.js +0 -149
  14. package/dist/metrics/index.d.ts +0 -5
  15. package/dist/metrics/index.js +0 -21
  16. package/dist/metrics/metrics-registry.d.ts +0 -50
  17. package/dist/metrics/metrics-registry.js +0 -156
  18. package/dist/metrics/metrics-updater.d.ts +0 -32
  19. package/dist/metrics/metrics-updater.js +0 -102
  20. package/dist/metrics/metrics.controller.d.ts +0 -11
  21. package/dist/metrics/metrics.controller.js +0 -32
  22. package/dist/metrics/metrics.interface.d.ts +0 -53
  23. package/dist/metrics/metrics.interface.js +0 -23
  24. package/dist/metrics/metrics.module.d.ts +0 -11
  25. package/dist/metrics/metrics.module.js +0 -39
  26. package/dist/metrics/metrics.service.d.ts +0 -50
  27. package/dist/metrics/metrics.service.js +0 -165
  28. package/dist/monitoring/alerting.service.d.ts +0 -82
  29. package/dist/monitoring/alerting.service.js +0 -290
  30. package/dist/monitoring/index.d.ts +0 -5
  31. package/dist/monitoring/index.js +0 -21
  32. package/dist/monitoring/monitoring.interface.d.ts +0 -102
  33. package/dist/monitoring/monitoring.interface.js +0 -10
  34. package/dist/monitoring/monitoring.module.d.ts +0 -8
  35. package/dist/monitoring/monitoring.module.js +0 -44
  36. package/dist/monitoring/sentry.service.d.ts +0 -65
  37. package/dist/monitoring/sentry.service.js +0 -218
  38. package/dist/monitoring/uptime.service.d.ts +0 -59
  39. package/dist/monitoring/uptime.service.js +0 -213
  40. package/dist/resilience/circuit-breaker-event-handler.d.ts +0 -16
  41. package/dist/resilience/circuit-breaker-event-handler.js +0 -70
  42. package/dist/resilience/circuit-breaker-factory.d.ts +0 -19
  43. package/dist/resilience/circuit-breaker-factory.js +0 -51
  44. package/dist/resilience/circuit-breaker-stats.service.d.ts +0 -37
  45. package/dist/resilience/circuit-breaker-stats.service.js +0 -69
  46. package/dist/resilience/circuit-breaker.interface.d.ts +0 -59
  47. package/dist/resilience/circuit-breaker.interface.js +0 -25
  48. package/dist/resilience/circuit-breaker.module.d.ts +0 -2
  49. package/dist/resilience/circuit-breaker.module.js +0 -21
  50. package/dist/resilience/circuit-breaker.service.d.ts +0 -119
  51. package/dist/resilience/circuit-breaker.service.js +0 -234
  52. package/dist/resilience/index.d.ts +0 -3
  53. package/dist/resilience/index.js +0 -19
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # TakeNTrade Microservices Libraries
2
2
 
3
- Shared libraries for the TakeNTrade microservices architecture, providing authentication, caching, messaging, notifications, resilience patterns, metrics, and common utilities.
3
+ Shared libraries for the TakeNTrade microservices architecture, providing authentication, caching, messaging, notifications, and common utilities.
4
4
 
5
5
  ## Installation
6
6
 
@@ -11,22 +11,16 @@ npm install @takentrade/takentrade-libs
11
11
  ## Quick Start
12
12
 
13
13
  ```typescript
14
- import {
15
- CacheModule,
16
- MetricsModule,
17
- CircuitBreakerModule,
18
- } from '@takentrade/takentrade-libs';
14
+ import { CacheModule } from '@takentrade/takentrade-libs';
19
15
 
20
16
  @Module({
21
- imports: [
22
- CacheModule.register(),
23
- MetricsModule.register({ defaultMetrics: true }),
24
- CircuitBreakerModule,
25
- ],
17
+ imports: [CacheModule.register()],
26
18
  })
27
19
  export class AppModule {}
28
20
  ```
29
21
 
22
+ For authentication, services can extend the shared `TntBaseAuthGuard` and pair it with their own JWT strategy implementation based on `TntJwtStrategy`.
23
+
30
24
  ## Modules
31
25
 
32
26
  | Module | Description | Documentation |
@@ -37,9 +31,6 @@ export class AppModule {}
37
31
  | **NATS** | Microservice messaging and event streaming | [docs/nats.md](docs/nats.md) |
38
32
  | **Notifications** | Email, SMS, and push notifications | [docs/notifications.md](docs/notifications.md) |
39
33
  | **RPC** | Request-response patterns for NATS | [docs/rpc.md](docs/rpc.md) |
40
- | **Resilience** | Circuit breakers for fault tolerance | [docs/resilience.md](docs/resilience.md) |
41
- | **Metrics** | Prometheus metrics collection | [docs/metrics.md](docs/metrics.md) |
42
- | **Monitoring** | Error tracking, alerting, uptime monitoring | [docs/monitoring.md](docs/monitoring.md) |
43
34
  | **Common** | Shared constants, enums, and utilities | [docs/common.md](docs/common.md) |
44
35
  | **Utils** | DTOs, pipes, filters, and helpers | [docs/utils.md](docs/utils.md) |
45
36
 
@@ -48,6 +39,7 @@ export class AppModule {}
48
39
  ### 🔐 Authentication & Authorization
49
40
 
50
41
  - `@Public()` and `@Roles()` decorators
42
+ - `TntBaseAuthGuard` for shared JWT guard behavior
51
43
  - JWT-based authentication support
52
44
  - Role-based access control
53
45
 
@@ -58,23 +50,6 @@ export class AppModule {}
58
50
  - Hash operations
59
51
  - Auto-reconnection
60
52
 
61
- ### 📊 Metrics & Observability
62
-
63
- - Prometheus metrics with prom-client
64
- - Default process metrics (CPU, memory, event loop)
65
- - Custom counters, gauges, histograms, summaries
66
- - Circuit breaker metrics integration
67
- - `/metrics` endpoint for scraping
68
-
69
- ### 🔄 Resilience
70
-
71
- - Circuit breakers using Opossum
72
- - Automatic failure detection
73
- - Fallback support
74
- - Health checks
75
- - Request caching
76
- - Comprehensive metrics
77
-
78
53
  ### 🚀 Background Jobs
79
54
 
80
55
  - BullMQ integration
@@ -122,30 +97,6 @@ await this.cacheService.set('key', 'value', 3600); // 1 hour TTL
122
97
  const value = await this.cacheService.get('key');
123
98
  ```
124
99
 
125
- ### Metrics
126
-
127
- ```typescript
128
- this.metricsService.registerCounter({
129
- name: 'requests_total',
130
- help: 'Total requests',
131
- labelNames: ['method', 'status'],
132
- });
133
- this.metricsService.incrementCounter('requests_total', {
134
- method: 'GET',
135
- status: '200',
136
- });
137
- ```
138
-
139
- ### Circuit Breaker
140
-
141
- ```typescript
142
- this.circuitBreaker.createBreaker('api', async (data) => this.apiCall(data), {
143
- timeout: 5000,
144
- errorThresholdPercentage: 50,
145
- });
146
- const result = await this.circuitBreaker.fire('api', requestData);
147
- ```
148
-
149
100
  ### Background Jobs
150
101
 
151
102
  ```typescript
@@ -167,8 +118,6 @@ await this.queue.add(
167
118
  - [NATS](docs/nats.md) - Messaging
168
119
  - [Notifications](docs/notifications.md) - Email, SMS, push
169
120
  - [RPC](docs/rpc.md) - Request-response patterns
170
- - [Resilience](docs/resilience.md) - Circuit breakers
171
- - [Metrics](docs/metrics.md) - Prometheus metrics
172
121
  - [Common](docs/common.md) - Shared utilities
173
122
  - [Utils](docs/utils.md) - DTOs, pipes, filters
174
123
 
@@ -1 +1,2 @@
1
1
  export * from './roles.guard';
2
+ export * from './tnt-base-auth.guard';
@@ -15,3 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./roles.guard"), exports);
18
+ __exportStar(require("./tnt-base-auth.guard"), exports);
@@ -0,0 +1,15 @@
1
+ import { ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { Observable } from 'rxjs';
4
+ declare const TntBaseAuthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
5
+ export declare class TntBaseAuthGuard extends TntBaseAuthGuard_base {
6
+ private readonly reflector;
7
+ private readonly logger;
8
+ constructor(reflector: Reflector);
9
+ canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean>;
10
+ handleRequest<TUser = unknown>(err: unknown, user: TUser, info: {
11
+ name?: string;
12
+ message?: string;
13
+ } | undefined, context: ExecutionContext, status?: unknown): TUser;
14
+ }
15
+ export {};
@@ -0,0 +1,54 @@
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 TntBaseAuthGuard_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TntBaseAuthGuard = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const passport_1 = require("@nestjs/passport");
13
+ const decorators_1 = require("../decorators");
14
+ let TntBaseAuthGuard = TntBaseAuthGuard_1 = class TntBaseAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
15
+ reflector;
16
+ logger = new common_1.Logger(TntBaseAuthGuard_1.name);
17
+ constructor(reflector) {
18
+ super();
19
+ this.reflector = reflector;
20
+ }
21
+ canActivate(context) {
22
+ const isPublic = this.reflector.getAllAndOverride(decorators_1.IS_PUBLIC_KEY, [
23
+ context.getHandler(),
24
+ context.getClass(),
25
+ ]);
26
+ if (isPublic) {
27
+ return true;
28
+ }
29
+ return super.canActivate(context);
30
+ }
31
+ handleRequest(err, user, info, context, status) {
32
+ void status;
33
+ if (err || !user) {
34
+ const request = context.switchToHttp().getRequest();
35
+ const message = err instanceof Error ? err.message : (info?.message ?? 'Authentication failed');
36
+ this.logger.error(`JWT validation error on ${request.method ?? 'UNKNOWN'} ${request.url ?? 'UNKNOWN'}: ${message}`);
37
+ if (info?.name === 'TokenExpiredError') {
38
+ throw new common_1.UnauthorizedException('Token has expired');
39
+ }
40
+ if (info?.name === 'JsonWebTokenError') {
41
+ throw new common_1.UnauthorizedException('Invalid token');
42
+ }
43
+ if (info?.name === 'NotBeforeError') {
44
+ throw new common_1.UnauthorizedException('Token not yet valid');
45
+ }
46
+ throw new common_1.UnauthorizedException('Authentication failed');
47
+ }
48
+ return user;
49
+ }
50
+ };
51
+ exports.TntBaseAuthGuard = TntBaseAuthGuard;
52
+ exports.TntBaseAuthGuard = TntBaseAuthGuard = TntBaseAuthGuard_1 = __decorate([
53
+ (0, common_1.Injectable)()
54
+ ], TntBaseAuthGuard);
@@ -14,7 +14,7 @@ class BullConfigFactory {
14
14
  password: this.configService.get('REDIS_PASSWORD'),
15
15
  },
16
16
  defaultJobOptions: {
17
- removeOnComplete: false, // Keep completed jobs for monitoring
17
+ removeOnComplete: false, // Keep completed jobs available for inspection
18
18
  removeOnFail: false, // Keep failed jobs for debugging
19
19
  attempts: 3, // Default retry attempts
20
20
  backoff: {
package/dist/index.d.ts CHANGED
@@ -7,6 +7,3 @@ export * from './rpc';
7
7
  export * from './logging';
8
8
  export * from './auth';
9
9
  export * from './notification';
10
- export * from './resilience';
11
- export * from './metrics';
12
- export * from './monitoring';
package/dist/index.js CHANGED
@@ -23,6 +23,3 @@ __exportStar(require("./rpc"), exports);
23
23
  __exportStar(require("./logging"), exports);
24
24
  __exportStar(require("./auth"), exports);
25
25
  __exportStar(require("./notification"), exports);
26
- __exportStar(require("./resilience"), exports);
27
- __exportStar(require("./metrics"), exports);
28
- __exportStar(require("./monitoring"), exports);
@@ -159,8 +159,6 @@ export interface EducationEmailData extends BaseEmailData {
159
159
  purchase_code: string;
160
160
  }
161
161
  export interface DeviceVerificationMailData extends BaseEmailData {
162
- to: string;
163
- subject: string;
164
162
  otp: string;
165
163
  deviceId: string;
166
164
  deviceName?: string;