@takentrade/takentrade-libs 4.1.1 → 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 (52) 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/tsconfig.tsbuildinfo +1 -1
  10. package/package.json +15 -21
  11. package/dist/metrics/circuit-breaker-metrics.service.d.ts +0 -61
  12. package/dist/metrics/circuit-breaker-metrics.service.js +0 -149
  13. package/dist/metrics/index.d.ts +0 -5
  14. package/dist/metrics/index.js +0 -21
  15. package/dist/metrics/metrics-registry.d.ts +0 -50
  16. package/dist/metrics/metrics-registry.js +0 -156
  17. package/dist/metrics/metrics-updater.d.ts +0 -32
  18. package/dist/metrics/metrics-updater.js +0 -102
  19. package/dist/metrics/metrics.controller.d.ts +0 -11
  20. package/dist/metrics/metrics.controller.js +0 -32
  21. package/dist/metrics/metrics.interface.d.ts +0 -53
  22. package/dist/metrics/metrics.interface.js +0 -23
  23. package/dist/metrics/metrics.module.d.ts +0 -11
  24. package/dist/metrics/metrics.module.js +0 -39
  25. package/dist/metrics/metrics.service.d.ts +0 -50
  26. package/dist/metrics/metrics.service.js +0 -165
  27. package/dist/monitoring/alerting.service.d.ts +0 -82
  28. package/dist/monitoring/alerting.service.js +0 -290
  29. package/dist/monitoring/index.d.ts +0 -5
  30. package/dist/monitoring/index.js +0 -21
  31. package/dist/monitoring/monitoring.interface.d.ts +0 -102
  32. package/dist/monitoring/monitoring.interface.js +0 -10
  33. package/dist/monitoring/monitoring.module.d.ts +0 -8
  34. package/dist/monitoring/monitoring.module.js +0 -44
  35. package/dist/monitoring/sentry.service.d.ts +0 -65
  36. package/dist/monitoring/sentry.service.js +0 -218
  37. package/dist/monitoring/uptime.service.d.ts +0 -59
  38. package/dist/monitoring/uptime.service.js +0 -213
  39. package/dist/resilience/circuit-breaker-event-handler.d.ts +0 -16
  40. package/dist/resilience/circuit-breaker-event-handler.js +0 -70
  41. package/dist/resilience/circuit-breaker-factory.d.ts +0 -19
  42. package/dist/resilience/circuit-breaker-factory.js +0 -51
  43. package/dist/resilience/circuit-breaker-stats.service.d.ts +0 -37
  44. package/dist/resilience/circuit-breaker-stats.service.js +0 -69
  45. package/dist/resilience/circuit-breaker.interface.d.ts +0 -59
  46. package/dist/resilience/circuit-breaker.interface.js +0 -25
  47. package/dist/resilience/circuit-breaker.module.d.ts +0 -2
  48. package/dist/resilience/circuit-breaker.module.js +0 -21
  49. package/dist/resilience/circuit-breaker.service.d.ts +0 -119
  50. package/dist/resilience/circuit-breaker.service.js +0 -234
  51. package/dist/resilience/index.d.ts +0 -3
  52. 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);