@alacard-project/shared 1.1.9 → 1.1.13

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 (119) hide show
  1. package/dist/browser.d.ts +1 -6
  2. package/dist/browser.js +1 -6
  3. package/dist/browser.js.map +1 -1
  4. package/dist/constants/iam.constants.d.ts +12 -0
  5. package/dist/constants/iam.constants.js +16 -0
  6. package/dist/constants/iam.constants.js.map +1 -0
  7. package/dist/constants/index.d.ts +4 -0
  8. package/dist/constants/index.js +4 -0
  9. package/dist/constants/index.js.map +1 -1
  10. package/dist/constants/microservices.constants.d.ts +10 -0
  11. package/dist/constants/microservices.constants.js +10 -0
  12. package/dist/constants/microservices.constants.js.map +1 -1
  13. package/dist/constants/orchestrator-messages.constants.d.ts +5 -0
  14. package/dist/constants/orchestrator-messages.constants.js +9 -0
  15. package/dist/constants/orchestrator-messages.constants.js.map +1 -0
  16. package/dist/constants/partner-messages.constants.d.ts +7 -0
  17. package/dist/constants/partner-messages.constants.js +11 -0
  18. package/dist/constants/partner-messages.constants.js.map +1 -0
  19. package/dist/constants/user.constants.d.ts +10 -0
  20. package/dist/constants/user.constants.js +14 -0
  21. package/dist/constants/user.constants.js.map +1 -0
  22. package/dist/contracts/card.contract.d.ts +38 -0
  23. package/dist/contracts/index.d.ts +1 -0
  24. package/dist/contracts/index.js +1 -0
  25. package/dist/contracts/index.js.map +1 -1
  26. package/dist/contracts/invoice.contract.d.ts +137 -0
  27. package/dist/contracts/invoice.contract.js +3 -0
  28. package/dist/contracts/invoice.contract.js.map +1 -0
  29. package/dist/contracts/terminal.contract.d.ts +43 -1
  30. package/dist/contracts/transaction.contract.d.ts +12 -0
  31. package/dist/decorators/permissions.decorator.d.ts +2 -2
  32. package/dist/decorators/permissions.decorator.js.map +1 -1
  33. package/dist/decorators/roles.decorator.d.ts +1 -1
  34. package/dist/dto/auth.dto.d.ts +1 -0
  35. package/dist/dto/auth.dto.js +5 -0
  36. package/dist/dto/auth.dto.js.map +1 -1
  37. package/dist/dto/card.dto.d.ts +5 -1
  38. package/dist/dto/card.dto.js +20 -0
  39. package/dist/dto/card.dto.js.map +1 -1
  40. package/dist/dto/iam.dto.d.ts +24 -0
  41. package/dist/dto/iam.dto.js +76 -0
  42. package/dist/dto/iam.dto.js.map +1 -0
  43. package/dist/dto/index.d.ts +1 -0
  44. package/dist/dto/index.js +1 -0
  45. package/dist/dto/index.js.map +1 -1
  46. package/dist/dto/invoice.dto.d.ts +29 -2
  47. package/dist/dto/invoice.dto.js +70 -4
  48. package/dist/dto/invoice.dto.js.map +1 -1
  49. package/dist/dto/partner.dto.d.ts +29 -0
  50. package/dist/dto/partner.dto.js +106 -1
  51. package/dist/dto/partner.dto.js.map +1 -1
  52. package/dist/dto/transaction.dto.d.ts +7 -0
  53. package/dist/dto/transaction.dto.js +35 -0
  54. package/dist/dto/transaction.dto.js.map +1 -1
  55. package/dist/enums/iam.enum.d.ts +5 -0
  56. package/dist/enums/iam.enum.js +7 -1
  57. package/dist/enums/iam.enum.js.map +1 -1
  58. package/dist/enums/index.d.ts +1 -0
  59. package/dist/enums/index.js +1 -0
  60. package/dist/enums/index.js.map +1 -1
  61. package/dist/enums/job.enum.d.ts +6 -1
  62. package/dist/enums/job.enum.js +5 -0
  63. package/dist/enums/job.enum.js.map +1 -1
  64. package/dist/enums/partner.enum.d.ts +5 -0
  65. package/dist/enums/partner.enum.js +10 -0
  66. package/dist/enums/partner.enum.js.map +1 -0
  67. package/dist/enums/permission.enum.d.ts +1 -1
  68. package/dist/enums/permission.enum.js +20 -20
  69. package/dist/enums/permission.enum.js.map +1 -1
  70. package/dist/filters/global-exception.filter.d.ts +1 -1
  71. package/dist/index.d.ts +3 -9
  72. package/dist/index.js +3 -9
  73. package/dist/index.js.map +1 -1
  74. package/dist/middleware/prisma-logging.middleware.d.ts +1 -1
  75. package/dist/resilience/circuit-breaker.service.js +6 -0
  76. package/dist/resilience/circuit-breaker.service.js.map +1 -1
  77. package/dist/resilience/redis-throttler-storage.d.ts +11 -0
  78. package/dist/resilience/redis-throttler-storage.js +76 -0
  79. package/dist/resilience/redis-throttler-storage.js.map +1 -0
  80. package/dist/resilience/resilience.module.js +3 -2
  81. package/dist/resilience/resilience.module.js.map +1 -1
  82. package/dist/tsconfig.tsbuildinfo +1 -1
  83. package/dist/types/client.types.d.ts +8 -0
  84. package/dist/types/client.types.js +3 -0
  85. package/dist/types/client.types.js.map +1 -0
  86. package/dist/types/index.d.ts +2 -0
  87. package/dist/types/index.js +2 -0
  88. package/dist/types/index.js.map +1 -1
  89. package/dist/types/orchestrator.types.d.ts +24 -0
  90. package/dist/types/orchestrator.types.js +3 -0
  91. package/dist/types/orchestrator.types.js.map +1 -0
  92. package/dist/utils/app.utils.js +62 -2
  93. package/dist/utils/app.utils.js.map +1 -1
  94. package/dist/utils/grpc-tracing.interceptor.d.ts +3 -1
  95. package/dist/utils/grpc-tracing.interceptor.js +20 -2
  96. package/dist/utils/grpc-tracing.interceptor.js.map +1 -1
  97. package/dist/utils/health.utils.d.ts +1 -1
  98. package/dist/utils/proto-path.js +14 -7
  99. package/dist/utils/proto-path.js.map +1 -1
  100. package/dist/utils/tracing.service.js +5 -1
  101. package/dist/utils/tracing.service.js.map +1 -1
  102. package/dist/utils/tracing.utils.js +40 -1
  103. package/dist/utils/tracing.utils.js.map +1 -1
  104. package/package.json +16 -4
  105. package/proto/account.proto +0 -32
  106. package/proto/attachment.proto +0 -12
  107. package/proto/auth.proto +0 -152
  108. package/proto/card.proto +0 -140
  109. package/proto/client.proto +0 -99
  110. package/proto/config.proto +0 -39
  111. package/proto/dbf.proto +0 -183
  112. package/proto/iam.proto +0 -70
  113. package/proto/logging.proto +0 -153
  114. package/proto/notification.proto +0 -44
  115. package/proto/partner.proto +0 -68
  116. package/proto/terminal.proto +0 -34
  117. package/proto/transaction.proto +0 -95
  118. package/proto/user.proto +0 -137
  119. package/proto/wallet.proto +0 -138
@@ -1,23 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PermissionScope = void 0;
4
- var PermissionScope;
5
- (function (PermissionScope) {
6
- PermissionScope["USERS_VIEW"] = "users:view";
7
- PermissionScope["USERS_MANAGE"] = "users:manage";
8
- PermissionScope["ROLES_MANAGE"] = "roles:manage";
9
- PermissionScope["PERMISSIONS_MANAGE"] = "permissions:manage";
10
- PermissionScope["CLIENTS_VIEW"] = "clients:view";
11
- PermissionScope["CLIENTS_MANAGE"] = "clients:manage";
12
- PermissionScope["PARTNERS_VIEW"] = "partners:view";
13
- PermissionScope["PARTNERS_MANAGE"] = "partners:manage";
14
- PermissionScope["INVOICES_VIEW"] = "invoices:view";
15
- PermissionScope["INVOICES_MANAGE"] = "invoices:manage";
16
- PermissionScope["TRANSACTIONS_VIEW"] = "transactions:view";
17
- PermissionScope["TRANSACTIONS_MANAGE"] = "transactions:manage";
18
- PermissionScope["CONFIG_VIEW"] = "config:view";
19
- PermissionScope["CONFIG_MANAGE"] = "config:manage";
20
- PermissionScope["LOGS_VIEW"] = "logs:view";
21
- PermissionScope["METRICS_VIEW"] = "metrics:view";
22
- })(PermissionScope || (exports.PermissionScope = PermissionScope = {}));
3
+ exports.AppPermission = void 0;
4
+ var AppPermission;
5
+ (function (AppPermission) {
6
+ AppPermission["USERS_VIEW"] = "users:view";
7
+ AppPermission["USERS_MANAGE"] = "users:manage";
8
+ AppPermission["ROLES_MANAGE"] = "roles:manage";
9
+ AppPermission["PERMISSIONS_MANAGE"] = "permissions:manage";
10
+ AppPermission["CLIENTS_VIEW"] = "clients:view";
11
+ AppPermission["CLIENTS_MANAGE"] = "clients:manage";
12
+ AppPermission["PARTNERS_VIEW"] = "partners:view";
13
+ AppPermission["PARTNERS_MANAGE"] = "partners:manage";
14
+ AppPermission["INVOICES_VIEW"] = "invoices:view";
15
+ AppPermission["INVOICES_MANAGE"] = "invoices:manage";
16
+ AppPermission["TRANSACTIONS_VIEW"] = "transactions:view";
17
+ AppPermission["TRANSACTIONS_MANAGE"] = "transactions:manage";
18
+ AppPermission["CONFIG_VIEW"] = "config:view";
19
+ AppPermission["CONFIG_MANAGE"] = "config:manage";
20
+ AppPermission["LOGS_VIEW"] = "logs:view";
21
+ AppPermission["METRICS_VIEW"] = "metrics:view";
22
+ })(AppPermission || (exports.AppPermission = AppPermission = {}));
23
23
  //# sourceMappingURL=permission.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission.enum.js","sourceRoot":"","sources":["../../src/enums/permission.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,eA8BX;AA9BD,WAAY,eAAe;IAEvB,4CAAyB,CAAA;IACzB,gDAA6B,CAAA;IAG7B,gDAA6B,CAAA;IAC7B,4DAAyC,CAAA;IAGzC,gDAA6B,CAAA;IAC7B,oDAAiC,CAAA;IAGjC,kDAA+B,CAAA;IAC/B,sDAAmC,CAAA;IAGnC,kDAA+B,CAAA;IAC/B,sDAAmC,CAAA;IACnC,0DAAuC,CAAA;IACvC,8DAA2C,CAAA;IAG3C,8CAA2B,CAAA;IAC3B,kDAA+B,CAAA;IAG/B,0CAAuB,CAAA;IACvB,gDAA6B,CAAA;AACjC,CAAC,EA9BW,eAAe,+BAAf,eAAe,QA8B1B"}
1
+ {"version":3,"file":"permission.enum.js","sourceRoot":"","sources":["../../src/enums/permission.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,aA8BX;AA9BD,WAAY,aAAa;IAErB,0CAAyB,CAAA;IACzB,8CAA6B,CAAA;IAG7B,8CAA6B,CAAA;IAC7B,0DAAyC,CAAA;IAGzC,8CAA6B,CAAA;IAC7B,kDAAiC,CAAA;IAGjC,gDAA+B,CAAA;IAC/B,oDAAmC,CAAA;IAGnC,gDAA+B,CAAA;IAC/B,oDAAmC,CAAA;IACnC,wDAAuC,CAAA;IACvC,4DAA2C,CAAA;IAG3C,4CAA2B,CAAA;IAC3B,gDAA+B,CAAA;IAG/B,wCAAuB,CAAA;IACvB,8CAA6B,CAAA;AACjC,CAAC,EA9BW,aAAa,6BAAb,aAAa,QA8BxB"}
@@ -1,5 +1,5 @@
1
1
  import { ExceptionFilter, ArgumentsHost } from '@nestjs/common';
2
- import type { IRemoteLogger } from '../types/logger.interface';
2
+ import type { IRemoteLogger } from '@alacard-project/shared-dto';
3
3
  export declare class GlobalExceptionFilter implements ExceptionFilter {
4
4
  private readonly logger;
5
5
  private remoteLogger?;
package/dist/index.d.ts CHANGED
@@ -1,13 +1,7 @@
1
1
  import 'reflect-metadata';
2
- export * from './enums';
3
- export * from './constants';
4
- export * from './types';
5
- export * from './contracts';
6
- export * from './dto';
7
- export * from './errors/app.error';
8
- export * from './errors/error-map';
2
+ export * from '@alacard-project/shared-proto';
3
+ export * from '@alacard-project/shared-dto';
9
4
  export * from './decorators';
10
- export * from './utils/proto-path';
11
5
  export * from './utils/user.utils';
12
6
  export * from './utils/app.utils';
13
7
  export * from './utils/health.utils';
@@ -18,9 +12,9 @@ export * from './utils/grpc-tracing.interceptor';
18
12
  export * from './utils/http-tracing.interceptor';
19
13
  export * from './utils/grpc-tracing-server.interceptor';
20
14
  export * from './resilience/circuit-breaker.service';
15
+ export * from './resilience/redis-throttler-storage';
21
16
  export * from './resilience/resilience.module';
22
17
  export * from './utils/filters';
23
18
  export * from './utils/interceptors';
24
19
  export * from './utils/app-logger';
25
20
  export * from './middleware';
26
- export * from './types/logger.interface';
package/dist/index.js CHANGED
@@ -15,15 +15,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  require("reflect-metadata");
18
- __exportStar(require("./enums"), exports);
19
- __exportStar(require("./constants"), exports);
20
- __exportStar(require("./types"), exports);
21
- __exportStar(require("./contracts"), exports);
22
- __exportStar(require("./dto"), exports);
23
- __exportStar(require("./errors/app.error"), exports);
24
- __exportStar(require("./errors/error-map"), exports);
18
+ __exportStar(require("@alacard-project/shared-proto"), exports);
19
+ __exportStar(require("@alacard-project/shared-dto"), exports);
25
20
  __exportStar(require("./decorators"), exports);
26
- __exportStar(require("./utils/proto-path"), exports);
27
21
  __exportStar(require("./utils/user.utils"), exports);
28
22
  __exportStar(require("./utils/app.utils"), exports);
29
23
  __exportStar(require("./utils/health.utils"), exports);
@@ -34,10 +28,10 @@ __exportStar(require("./utils/grpc-tracing.interceptor"), exports);
34
28
  __exportStar(require("./utils/http-tracing.interceptor"), exports);
35
29
  __exportStar(require("./utils/grpc-tracing-server.interceptor"), exports);
36
30
  __exportStar(require("./resilience/circuit-breaker.service"), exports);
31
+ __exportStar(require("./resilience/redis-throttler-storage"), exports);
37
32
  __exportStar(require("./resilience/resilience.module"), exports);
38
33
  __exportStar(require("./utils/filters"), exports);
39
34
  __exportStar(require("./utils/interceptors"), exports);
40
35
  __exportStar(require("./utils/app-logger"), exports);
41
36
  __exportStar(require("./middleware"), exports);
42
- __exportStar(require("./types/logger.interface"), exports);
43
37
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,8CAA4B;AAC5B,wCAAsB;AACtB,qDAAmC;AACnC,qDAAmC;AACnC,+CAA6B;AAC7B,qDAAmC;AACnC,qDAAmC;AACnC,oDAAkC;AAClC,uDAAqC;AACrC,wDAAsC;AACtC,0DAAwC;AACxC,yDAAuC;AACvC,mEAAiD;AACjD,mEAAiD;AACjD,0EAAwD;AACxD,uEAAqD;AACrD,iEAA+C;AAC/C,kDAAgC;AAChC,uDAAqC;AAErC,qDAAmC;AACnC,+CAA6B;AAC7B,2DAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,gEAA8C;AAC9C,8DAA4C;AAC5C,+CAA6B;AAC7B,qDAAmC;AACnC,oDAAkC;AAClC,uDAAqC;AACrC,wDAAsC;AACtC,0DAAwC;AACxC,yDAAuC;AACvC,mEAAiD;AACjD,mEAAiD;AACjD,0EAAwD;AACxD,uEAAqD;AACrD,uEAAqD;AACrD,iEAA+C;AAC/C,kDAAgC;AAChC,uDAAqC;AAErC,qDAAmC;AACnC,+CAA6B"}
@@ -1,3 +1,3 @@
1
1
  import { Logger } from '@nestjs/common';
2
- import { IRemoteLogger } from '../types/logger.interface';
2
+ import { IRemoteLogger } from '@alacard-project/shared-dto';
3
3
  export declare function createPrismaLoggingMiddleware(logger: Logger, remoteLogger?: IRemoteLogger): (params: any, next: (params: any) => Promise<any>) => Promise<any>;
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.CircuitBreakerService = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
15
  const opossum_1 = __importDefault(require("opossum"));
16
+ const tracing_service_1 = require("../utils/tracing.service");
16
17
  let CircuitBreakerService = CircuitBreakerService_1 = class CircuitBreakerService {
17
18
  constructor() {
18
19
  this.logger = new common_1.Logger(CircuitBreakerService_1.name);
@@ -33,6 +34,11 @@ let CircuitBreakerService = CircuitBreakerService_1 = class CircuitBreakerServic
33
34
  breaker.on('close', () => this.logger.log(`Circuit breaker [${key}] is CLOSED`));
34
35
  this.breakers.set(key, breaker);
35
36
  }
37
+ const store = tracing_service_1.TracingService.getStorage().getStore();
38
+ if (store) {
39
+ const boundFn = () => tracing_service_1.TracingService.getStorage().run(store, fn);
40
+ return breaker.fire(boundFn);
41
+ }
36
42
  return breaker.fire(fn);
37
43
  }
38
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.service.js","sourceRoot":"","sources":["../../src/resilience/circuit-breaker.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,sDAA8B;AAGvB,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAA3B;QACc,WAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;QAChD,aAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;IA2BvD,CAAC;IAzBG,KAAK,CAAC,OAAO,CAAI,GAAW,EAAE,EAAoB,EAAE,UAAe,EAAE;QACjE,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,OAAO,EAAE,CAAC;YAIX,MAAM,eAAe,GAAG,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YAE3D,OAAO,GAAG,IAAI,iBAAO,CAAC,eAAe,EAAE;gBACnC,OAAO,EAAE,KAAK;gBACd,wBAAwB,EAAE,EAAE;gBAC5B,YAAY,EAAE,KAAK;gBACnB,GAAG,OAAO;aACb,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC,CAAC;YACvF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,aAAa,CAAC,CAAC,CAAC;YAEjF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAe,CAAC;IAC1C,CAAC;CACJ,CAAA;AA7BY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CA6BjC"}
1
+ {"version":3,"file":"circuit-breaker.service.js","sourceRoot":"","sources":["../../src/resilience/circuit-breaker.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,sDAA8B;AAC9B,8DAA0D;AAGnD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAA3B;QACc,WAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;QAChD,aAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;IAiCvD,CAAC;IA/BG,KAAK,CAAC,OAAO,CAAI,GAAW,EAAE,EAAoB,EAAE,UAAe,EAAE;QACjE,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,OAAO,EAAE,CAAC;YAIX,MAAM,eAAe,GAAG,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YAE3D,OAAO,GAAG,IAAI,iBAAO,CAAC,eAAe,EAAE;gBACnC,OAAO,EAAE,KAAK;gBACd,wBAAwB,EAAE,EAAE;gBAC5B,YAAY,EAAE,KAAK;gBACnB,GAAG,OAAO;aACb,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC,CAAC;YACvF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,GAAG,aAAa,CAAC,CAAC,CAAC;YAEjF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,gCAAc,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;QACrD,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,gCAAc,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACjE,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAe,CAAC;QAC/C,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAe,CAAC;IAC1C,CAAC;CACJ,CAAA;AAnCY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CAmCjC"}
@@ -0,0 +1,11 @@
1
+ import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
2
+ import { ThrottlerStorage } from '@nestjs/throttler';
3
+ export declare class RedisThrottlerStorage implements ThrottlerStorage, OnModuleInit, OnModuleDestroy {
4
+ private redis;
5
+ private readonly host;
6
+ private readonly port;
7
+ constructor();
8
+ onModuleInit(): void;
9
+ increment(key: string, ttl: number): Promise<any>;
10
+ onModuleDestroy(): void;
11
+ }
@@ -0,0 +1,76 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.RedisThrottlerStorage = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const ioredis_1 = __importDefault(require("ioredis"));
18
+ let RedisThrottlerStorage = class RedisThrottlerStorage {
19
+ constructor() {
20
+ this.host = process.env.REDIS_HOST || 'redis';
21
+ this.port = parseInt(process.env.REDIS_PORT || '6379', 10);
22
+ }
23
+ onModuleInit() {
24
+ const redisOptions = {
25
+ maxRetriesPerRequest: null,
26
+ };
27
+ if (process.env.REDIS_PASSWORD) {
28
+ redisOptions.password = process.env.REDIS_PASSWORD;
29
+ }
30
+ if (process.env.REDIS_URL) {
31
+ this.redis = new ioredis_1.default(process.env.REDIS_URL, {
32
+ maxRetriesPerRequest: null,
33
+ });
34
+ }
35
+ else {
36
+ this.redis = new ioredis_1.default({
37
+ host: this.host,
38
+ port: this.port,
39
+ ...redisOptions,
40
+ });
41
+ }
42
+ this.redis.on('error', (err) => {
43
+ console.error('RedisThrottlerStorage error:', err);
44
+ });
45
+ }
46
+ async increment(key, ttl) {
47
+ const luaScript = `
48
+ local hits = redis.call('INCR', KEYS[1])
49
+ if hits == 1 then
50
+ redis.call('PEXPIRE', KEYS[1], ARGV[1])
51
+ end
52
+ local ttl = redis.call('PTTL', KEYS[1])
53
+ return {hits, ttl}
54
+ `;
55
+ const result = await this.redis.eval(luaScript, 1, key, ttl);
56
+ const [totalHits, pttl] = result;
57
+ const timeToExpire = Math.max(0, Math.ceil(pttl / 1000));
58
+ return {
59
+ totalHits,
60
+ timeToExpire,
61
+ isBlocked: false,
62
+ timeToBlockExpire: 0,
63
+ };
64
+ }
65
+ onModuleDestroy() {
66
+ if (this.redis) {
67
+ this.redis.disconnect();
68
+ }
69
+ }
70
+ };
71
+ exports.RedisThrottlerStorage = RedisThrottlerStorage;
72
+ exports.RedisThrottlerStorage = RedisThrottlerStorage = __decorate([
73
+ (0, common_1.Injectable)(),
74
+ __metadata("design:paramtypes", [])
75
+ ], RedisThrottlerStorage);
76
+ //# sourceMappingURL=redis-throttler-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-throttler-storage.js","sourceRoot":"","sources":["../../src/resilience/redis-throttler-storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA2E;AAG3E,sDAA4B;AAGrB,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAK9B;QACI,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY;QACR,MAAM,YAAY,GAAQ;YACtB,oBAAoB,EAAE,IAAI;SAC7B,CAAC;QAEF,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAC7B,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACvD,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE;gBAC1C,oBAAoB,EAAE,IAAI;aAC7B,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAK,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,YAAY;aAClB,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3B,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,GAAW;QAGpC,MAAM,SAAS,GAAG;;;;;;;SAOjB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAqB,CAAC;QACjF,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;QAGjC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAEzD,OAAO;YACH,SAAS;YACT,YAAY;YACZ,SAAS,EAAE,KAAK;YAChB,iBAAiB,EAAE,CAAC;SACvB,CAAC;IACN,CAAC;IAED,eAAe;QACX,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;CACJ,CAAA;AAnEY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;;GACA,qBAAqB,CAmEjC"}
@@ -9,14 +9,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.ResilienceModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const circuit_breaker_service_1 = require("./circuit-breaker.service");
12
+ const redis_throttler_storage_1 = require("./redis-throttler-storage");
12
13
  let ResilienceModule = class ResilienceModule {
13
14
  };
14
15
  exports.ResilienceModule = ResilienceModule;
15
16
  exports.ResilienceModule = ResilienceModule = __decorate([
16
17
  (0, common_1.Global)(),
17
18
  (0, common_1.Module)({
18
- providers: [circuit_breaker_service_1.CircuitBreakerService],
19
- exports: [circuit_breaker_service_1.CircuitBreakerService],
19
+ providers: [circuit_breaker_service_1.CircuitBreakerService, redis_throttler_storage_1.RedisThrottlerStorage],
20
+ exports: [circuit_breaker_service_1.CircuitBreakerService, redis_throttler_storage_1.RedisThrottlerStorage],
20
21
  })
21
22
  ], ResilienceModule);
22
23
  //# sourceMappingURL=resilience.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resilience.module.js","sourceRoot":"","sources":["../../src/resilience/resilience.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,uEAAkE;AAO3D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAI,CAAA;AAApB,4CAAgB;2BAAhB,gBAAgB;IAL5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACJ,SAAS,EAAE,CAAC,+CAAqB,CAAC;QAClC,OAAO,EAAE,CAAC,+CAAqB,CAAC;KACnC,CAAC;GACW,gBAAgB,CAAI"}
1
+ {"version":3,"file":"resilience.module.js","sourceRoot":"","sources":["../../src/resilience/resilience.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,uEAAkE;AAClE,uEAAkE;AAO3D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAI,CAAA;AAApB,4CAAgB;2BAAhB,gBAAgB;IAL5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACJ,SAAS,EAAE,CAAC,+CAAqB,EAAE,+CAAqB,CAAC;QACzD,OAAO,EAAE,CAAC,+CAAqB,EAAE,+CAAqB,CAAC;KAC1D,CAAC;GACW,gBAAgB,CAAI"}