@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.
- package/dist/browser.d.ts +1 -6
- package/dist/browser.js +1 -6
- package/dist/browser.js.map +1 -1
- package/dist/constants/iam.constants.d.ts +12 -0
- package/dist/constants/iam.constants.js +16 -0
- package/dist/constants/iam.constants.js.map +1 -0
- package/dist/constants/index.d.ts +4 -0
- package/dist/constants/index.js +4 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/microservices.constants.d.ts +10 -0
- package/dist/constants/microservices.constants.js +10 -0
- package/dist/constants/microservices.constants.js.map +1 -1
- package/dist/constants/orchestrator-messages.constants.d.ts +5 -0
- package/dist/constants/orchestrator-messages.constants.js +9 -0
- package/dist/constants/orchestrator-messages.constants.js.map +1 -0
- package/dist/constants/partner-messages.constants.d.ts +7 -0
- package/dist/constants/partner-messages.constants.js +11 -0
- package/dist/constants/partner-messages.constants.js.map +1 -0
- package/dist/constants/user.constants.d.ts +10 -0
- package/dist/constants/user.constants.js +14 -0
- package/dist/constants/user.constants.js.map +1 -0
- package/dist/contracts/card.contract.d.ts +38 -0
- package/dist/contracts/index.d.ts +1 -0
- package/dist/contracts/index.js +1 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/invoice.contract.d.ts +137 -0
- package/dist/contracts/invoice.contract.js +3 -0
- package/dist/contracts/invoice.contract.js.map +1 -0
- package/dist/contracts/terminal.contract.d.ts +43 -1
- package/dist/contracts/transaction.contract.d.ts +12 -0
- package/dist/decorators/permissions.decorator.d.ts +2 -2
- package/dist/decorators/permissions.decorator.js.map +1 -1
- package/dist/decorators/roles.decorator.d.ts +1 -1
- package/dist/dto/auth.dto.d.ts +1 -0
- package/dist/dto/auth.dto.js +5 -0
- package/dist/dto/auth.dto.js.map +1 -1
- package/dist/dto/card.dto.d.ts +5 -1
- package/dist/dto/card.dto.js +20 -0
- package/dist/dto/card.dto.js.map +1 -1
- package/dist/dto/iam.dto.d.ts +24 -0
- package/dist/dto/iam.dto.js +76 -0
- package/dist/dto/iam.dto.js.map +1 -0
- package/dist/dto/index.d.ts +1 -0
- package/dist/dto/index.js +1 -0
- package/dist/dto/index.js.map +1 -1
- package/dist/dto/invoice.dto.d.ts +29 -2
- package/dist/dto/invoice.dto.js +70 -4
- package/dist/dto/invoice.dto.js.map +1 -1
- package/dist/dto/partner.dto.d.ts +29 -0
- package/dist/dto/partner.dto.js +106 -1
- package/dist/dto/partner.dto.js.map +1 -1
- package/dist/dto/transaction.dto.d.ts +7 -0
- package/dist/dto/transaction.dto.js +35 -0
- package/dist/dto/transaction.dto.js.map +1 -1
- package/dist/enums/iam.enum.d.ts +5 -0
- package/dist/enums/iam.enum.js +7 -1
- package/dist/enums/iam.enum.js.map +1 -1
- package/dist/enums/index.d.ts +1 -0
- package/dist/enums/index.js +1 -0
- package/dist/enums/index.js.map +1 -1
- package/dist/enums/job.enum.d.ts +6 -1
- package/dist/enums/job.enum.js +5 -0
- package/dist/enums/job.enum.js.map +1 -1
- package/dist/enums/partner.enum.d.ts +5 -0
- package/dist/enums/partner.enum.js +10 -0
- package/dist/enums/partner.enum.js.map +1 -0
- package/dist/enums/permission.enum.d.ts +1 -1
- package/dist/enums/permission.enum.js +20 -20
- package/dist/enums/permission.enum.js.map +1 -1
- package/dist/filters/global-exception.filter.d.ts +1 -1
- package/dist/index.d.ts +3 -9
- package/dist/index.js +3 -9
- package/dist/index.js.map +1 -1
- package/dist/middleware/prisma-logging.middleware.d.ts +1 -1
- package/dist/resilience/circuit-breaker.service.js +6 -0
- package/dist/resilience/circuit-breaker.service.js.map +1 -1
- package/dist/resilience/redis-throttler-storage.d.ts +11 -0
- package/dist/resilience/redis-throttler-storage.js +76 -0
- package/dist/resilience/redis-throttler-storage.js.map +1 -0
- package/dist/resilience/resilience.module.js +3 -2
- package/dist/resilience/resilience.module.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/client.types.d.ts +8 -0
- package/dist/types/client.types.js +3 -0
- package/dist/types/client.types.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/orchestrator.types.d.ts +24 -0
- package/dist/types/orchestrator.types.js +3 -0
- package/dist/types/orchestrator.types.js.map +1 -0
- package/dist/utils/app.utils.js +62 -2
- package/dist/utils/app.utils.js.map +1 -1
- package/dist/utils/grpc-tracing.interceptor.d.ts +3 -1
- package/dist/utils/grpc-tracing.interceptor.js +20 -2
- package/dist/utils/grpc-tracing.interceptor.js.map +1 -1
- package/dist/utils/health.utils.d.ts +1 -1
- package/dist/utils/proto-path.js +14 -7
- package/dist/utils/proto-path.js.map +1 -1
- package/dist/utils/tracing.service.js +5 -1
- package/dist/utils/tracing.service.js.map +1 -1
- package/dist/utils/tracing.utils.js +40 -1
- package/dist/utils/tracing.utils.js.map +1 -1
- package/package.json +16 -4
- package/proto/account.proto +0 -32
- package/proto/attachment.proto +0 -12
- package/proto/auth.proto +0 -152
- package/proto/card.proto +0 -140
- package/proto/client.proto +0 -99
- package/proto/config.proto +0 -39
- package/proto/dbf.proto +0 -183
- package/proto/iam.proto +0 -70
- package/proto/logging.proto +0 -153
- package/proto/notification.proto +0 -44
- package/proto/partner.proto +0 -68
- package/proto/terminal.proto +0 -34
- package/proto/transaction.proto +0 -95
- package/proto/user.proto +0 -137
- package/proto/wallet.proto +0 -138
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var
|
|
5
|
-
(function (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
})(
|
|
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,
|
|
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 '
|
|
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 '
|
|
3
|
-
export * from '
|
|
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("
|
|
19
|
-
__exportStar(require("
|
|
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,
|
|
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 '
|
|
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;
|
|
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;
|
|
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"}
|