@edirect/rate-limit-module 11.0.62 → 11.0.64
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/README.md +584 -0
- package/dist/package.json +41 -0
- package/dist/src/decorators/rate-limiting-rule.decorator.d.ts +10 -0
- package/dist/src/decorators/rate-limiting-rule.decorator.d.ts.map +1 -0
- package/dist/src/decorators/rate-limiting-rule.decorator.js +7 -0
- package/dist/src/guards/rate-limiting.guard.d.ts +21 -0
- package/dist/src/guards/rate-limiting.guard.d.ts.map +1 -0
- package/dist/src/guards/rate-limiting.guard.js +248 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +14 -0
- package/dist/src/main.d.ts +2 -0
- package/dist/src/main.d.ts.map +1 -0
- package/dist/src/main.js +9 -0
- package/dist/src/object.utils.d.ts +3 -0
- package/dist/src/object.utils.d.ts.map +1 -0
- package/dist/src/object.utils.js +38 -0
- package/dist/src/rate-limiting.module.d.ts +6 -0
- package/dist/src/rate-limiting.module.d.ts.map +1 -0
- package/dist/src/rate-limiting.module.js +26 -0
- package/dist/src/rules/dto/pagination.dto.d.ts +6 -0
- package/dist/src/rules/dto/pagination.dto.d.ts.map +1 -0
- package/dist/src/rules/dto/pagination.dto.js +42 -0
- package/dist/src/rules/dto/rule.dto.d.ts +24 -0
- package/dist/src/rules/dto/rule.dto.d.ts.map +1 -0
- package/dist/src/rules/dto/rule.dto.js +198 -0
- package/dist/src/rules/interface/pagination.interface.d.ts +7 -0
- package/dist/src/rules/interface/pagination.interface.d.ts.map +1 -0
- package/dist/src/rules/interface/pagination.interface.js +2 -0
- package/dist/src/rules/interface/rule.interface.d.ts +29 -0
- package/dist/src/rules/interface/rule.interface.d.ts.map +1 -0
- package/dist/src/rules/interface/rule.interface.js +2 -0
- package/dist/src/rules/rule.controller.d.ts +14 -0
- package/dist/src/rules/rule.controller.d.ts.map +1 -0
- package/dist/src/rules/rule.controller.js +87 -0
- package/dist/src/rules/rule.module.d.ts +5 -0
- package/dist/src/rules/rule.module.d.ts.map +1 -0
- package/dist/src/rules/rule.module.js +36 -0
- package/dist/src/rules/rule.repository.d.ts +15 -0
- package/dist/src/rules/rule.repository.d.ts.map +1 -0
- package/dist/src/rules/rule.repository.js +79 -0
- package/dist/src/rules/rule.schema.d.ts +166 -0
- package/dist/src/rules/rule.schema.d.ts.map +1 -0
- package/dist/src/rules/rule.schema.js +150 -0
- package/dist/src/rules/rule.service.d.ts +26 -0
- package/dist/src/rules/rule.service.d.ts.map +1 -0
- package/dist/src/rules/rule.service.js +204 -0
- package/dist/src/shared/cache/cache.service.d.ts +10 -0
- package/dist/src/shared/cache/cache.service.d.ts.map +1 -0
- package/dist/src/shared/cache/cache.service.js +29 -0
- package/dist/src/shared/dsl/dsl.interface.d.ts +43 -0
- package/dist/src/shared/dsl/dsl.interface.d.ts.map +1 -0
- package/dist/src/shared/dsl/dsl.interface.js +9 -0
- package/dist/src/shared/dsl/dsl.service.d.ts +8 -0
- package/dist/src/shared/dsl/dsl.service.d.ts.map +1 -0
- package/dist/src/shared/dsl/dsl.service.js +87 -0
- package/dist/src/shared/redis/redis.module.d.ts +3 -0
- package/dist/src/shared/redis/redis.module.d.ts.map +1 -0
- package/dist/src/shared/redis/redis.module.js +32 -0
- package/dist/src/shared/redis/redis.service.d.ts +13 -0
- package/dist/src/shared/redis/redis.service.d.ts.map +1 -0
- package/dist/src/shared/redis/redis.service.js +53 -0
- package/dist/src/shared/rule-engine/interface/rule-engine.interface.d.ts +14 -0
- package/dist/src/shared/rule-engine/interface/rule-engine.interface.d.ts.map +1 -0
- package/dist/src/shared/rule-engine/interface/rule-engine.interface.js +2 -0
- package/dist/src/shared/rule-engine/rule-engine.module.d.ts +11 -0
- package/dist/src/shared/rule-engine/rule-engine.module.d.ts.map +1 -0
- package/dist/src/shared/rule-engine/rule-engine.module.js +51 -0
- package/dist/src/shared/rule-engine/rule-engine.service.d.ts +18 -0
- package/dist/src/shared/rule-engine/rule-engine.service.d.ts.map +1 -0
- package/dist/src/shared/rule-engine/rule-engine.service.js +134 -0
- package/dist/src/shared/shared.module.d.ts +3 -0
- package/dist/src/shared/shared.module.d.ts.map +1 -0
- package/dist/src/shared/shared.module.js +29 -0
- package/dist/src/validators/rule.constraint.d.ts +10 -0
- package/dist/src/validators/rule.constraint.d.ts.map +1 -0
- package/dist/src/validators/rule.constraint.js +49 -0
- package/dist/src/validators/rule.validator.d.ts +3 -0
- package/dist/src/validators/rule.validator.d.ts.map +1 -0
- package/dist/src/validators/rule.validator.js +16 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/package.json +23 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.interface.d.ts","sourceRoot":"","sources":["../../../../src/rules/interface/pagination.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface IRule {
|
|
2
|
+
ruleId?: string;
|
|
3
|
+
name: string;
|
|
4
|
+
targetAction?: string;
|
|
5
|
+
expression: string;
|
|
6
|
+
enabled?: boolean;
|
|
7
|
+
errorMessage?: string;
|
|
8
|
+
partner?: string;
|
|
9
|
+
provider?: string;
|
|
10
|
+
market?: string;
|
|
11
|
+
productType?: string;
|
|
12
|
+
variables?: Record<string, unknown>;
|
|
13
|
+
variablesRequired?: boolean;
|
|
14
|
+
deletedAt?: Date;
|
|
15
|
+
createdAt?: Date;
|
|
16
|
+
updatedAt?: Date;
|
|
17
|
+
}
|
|
18
|
+
export interface IFindRule {
|
|
19
|
+
name?: string;
|
|
20
|
+
targetAction?: string;
|
|
21
|
+
enabled?: string;
|
|
22
|
+
partner?: string | undefined;
|
|
23
|
+
provider?: string | undefined;
|
|
24
|
+
market?: string | undefined;
|
|
25
|
+
productType?: string | undefined;
|
|
26
|
+
page: number;
|
|
27
|
+
limit: number;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=rule.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.interface.d.ts","sourceRoot":"","sources":["../../../../src/rules/interface/rule.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CreateRuleDTO, FindRuleDTO } from './dto/rule.dto';
|
|
2
|
+
import { IPagination } from './interface/pagination.interface';
|
|
3
|
+
import { IRule } from './interface/rule.interface';
|
|
4
|
+
import { RuleService } from './rule.service';
|
|
5
|
+
export declare class RuleController {
|
|
6
|
+
private readonly ruleService;
|
|
7
|
+
constructor(ruleService: RuleService);
|
|
8
|
+
create(dto: CreateRuleDTO): Promise<IRule>;
|
|
9
|
+
findAll(query: FindRuleDTO): Promise<IPagination<IRule[]>>;
|
|
10
|
+
findOne(id: string): Promise<IRule>;
|
|
11
|
+
updateSale(id: string, patchData: Partial<IRule>): Promise<IRule | null>;
|
|
12
|
+
delete(id: string): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=rule.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.controller.d.ts","sourceRoot":"","sources":["../../../src/rules/rule.controller.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM7C,qBAEa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAMrD,MAAM,CAAS,GAAG,EAAE,aAAa;IAOjC,OAAO,CAAU,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAOnE,OAAO,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAOhD,UAAU,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC;IAOrE,MAAM,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/C"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RuleController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
7
|
+
const auth_1 = require("@edirect/auth");
|
|
8
|
+
const rule_dto_1 = require("./dto/rule.dto");
|
|
9
|
+
const rule_service_1 = require("./rule.service");
|
|
10
|
+
var ResourceServiceEnum;
|
|
11
|
+
(function (ResourceServiceEnum) {
|
|
12
|
+
ResourceServiceEnum["DEFAULT"] = "Default Resource";
|
|
13
|
+
})(ResourceServiceEnum || (ResourceServiceEnum = {}));
|
|
14
|
+
let RuleController = class RuleController {
|
|
15
|
+
ruleService;
|
|
16
|
+
constructor(ruleService) {
|
|
17
|
+
this.ruleService = ruleService;
|
|
18
|
+
}
|
|
19
|
+
create(dto) {
|
|
20
|
+
return this.ruleService.create(dto);
|
|
21
|
+
}
|
|
22
|
+
findAll(query) {
|
|
23
|
+
return this.ruleService.findAll(query);
|
|
24
|
+
}
|
|
25
|
+
findOne(id) {
|
|
26
|
+
return this.ruleService.findById(id);
|
|
27
|
+
}
|
|
28
|
+
updateSale(id, patchData) {
|
|
29
|
+
return this.ruleService.updateOne(id, patchData);
|
|
30
|
+
}
|
|
31
|
+
delete(id) {
|
|
32
|
+
return this.ruleService.delete(id);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.RuleController = RuleController;
|
|
36
|
+
tslib_1.__decorate([
|
|
37
|
+
(0, common_1.Post)(),
|
|
38
|
+
(0, swagger_1.ApiResponse)({ status: 201 }),
|
|
39
|
+
(0, auth_1.Resources)(ResourceServiceEnum.DEFAULT),
|
|
40
|
+
(0, common_1.UsePipes)(new common_1.ValidationPipe({ transform: true })),
|
|
41
|
+
tslib_1.__param(0, (0, common_1.Body)()),
|
|
42
|
+
tslib_1.__metadata("design:type", Function),
|
|
43
|
+
tslib_1.__metadata("design:paramtypes", [rule_dto_1.CreateRuleDTO]),
|
|
44
|
+
tslib_1.__metadata("design:returntype", void 0)
|
|
45
|
+
], RuleController.prototype, "create", null);
|
|
46
|
+
tslib_1.__decorate([
|
|
47
|
+
(0, common_1.Get)(),
|
|
48
|
+
(0, auth_1.Resources)(ResourceServiceEnum.DEFAULT),
|
|
49
|
+
(0, common_1.UsePipes)(new common_1.ValidationPipe({ transform: true })),
|
|
50
|
+
tslib_1.__param(0, (0, common_1.Query)()),
|
|
51
|
+
tslib_1.__metadata("design:type", Function),
|
|
52
|
+
tslib_1.__metadata("design:paramtypes", [rule_dto_1.FindRuleDTO]),
|
|
53
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
54
|
+
], RuleController.prototype, "findAll", null);
|
|
55
|
+
tslib_1.__decorate([
|
|
56
|
+
(0, common_1.Get)(':id'),
|
|
57
|
+
(0, auth_1.Resources)(ResourceServiceEnum.DEFAULT),
|
|
58
|
+
(0, common_1.UsePipes)(new common_1.ValidationPipe({ transform: true })),
|
|
59
|
+
tslib_1.__param(0, (0, common_1.Param)('id')),
|
|
60
|
+
tslib_1.__metadata("design:type", Function),
|
|
61
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
62
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
63
|
+
], RuleController.prototype, "findOne", null);
|
|
64
|
+
tslib_1.__decorate([
|
|
65
|
+
(0, common_1.Patch)(':id'),
|
|
66
|
+
(0, auth_1.Resources)(ResourceServiceEnum.DEFAULT),
|
|
67
|
+
(0, common_1.UsePipes)(new common_1.ValidationPipe({ transform: true })),
|
|
68
|
+
tslib_1.__param(0, (0, common_1.Param)('id')),
|
|
69
|
+
tslib_1.__param(1, (0, common_1.Body)()),
|
|
70
|
+
tslib_1.__metadata("design:type", Function),
|
|
71
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
72
|
+
tslib_1.__metadata("design:returntype", void 0)
|
|
73
|
+
], RuleController.prototype, "updateSale", null);
|
|
74
|
+
tslib_1.__decorate([
|
|
75
|
+
(0, common_1.Delete)(':id'),
|
|
76
|
+
(0, auth_1.Resources)(ResourceServiceEnum.DEFAULT),
|
|
77
|
+
(0, common_1.UsePipes)(new common_1.ValidationPipe({ transform: true })),
|
|
78
|
+
tslib_1.__param(0, (0, common_1.Param)('id')),
|
|
79
|
+
tslib_1.__metadata("design:type", Function),
|
|
80
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
81
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
82
|
+
], RuleController.prototype, "delete", null);
|
|
83
|
+
exports.RuleController = RuleController = tslib_1.__decorate([
|
|
84
|
+
(0, swagger_1.ApiTags)('rate-limiting-rule'),
|
|
85
|
+
(0, common_1.Controller)('/rule'),
|
|
86
|
+
tslib_1.__metadata("design:paramtypes", [rule_service_1.RuleService])
|
|
87
|
+
], RuleController);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.module.d.ts","sourceRoot":"","sources":["../../../src/rules/rule.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AASvD,qBACa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,aAAa;CAoBxD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var RuleModule_1;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.RuleModule = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const logger_1 = require("@edirect/logger");
|
|
7
|
+
const common_1 = require("@nestjs/common");
|
|
8
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
9
|
+
const shared_module_1 = require("../shared/shared.module");
|
|
10
|
+
const rule_controller_1 = require("./rule.controller");
|
|
11
|
+
const rule_repository_1 = require("./rule.repository");
|
|
12
|
+
const rule_schema_1 = require("./rule.schema");
|
|
13
|
+
const rule_service_1 = require("./rule.service");
|
|
14
|
+
let RuleModule = RuleModule_1 = class RuleModule {
|
|
15
|
+
static register(connectionToken) {
|
|
16
|
+
const enableController = process.env.ENABLE_RATE_LIMITING_RULE_CONTROLLER === 'true';
|
|
17
|
+
const modelProvider = {
|
|
18
|
+
provide: (0, mongoose_1.getModelToken)(rule_schema_1.RateLimitingRule.name),
|
|
19
|
+
useFactory: (connection) => {
|
|
20
|
+
return connection.model(rule_schema_1.RateLimitingRule.name, rule_schema_1.RateLimitingRuleSchema);
|
|
21
|
+
},
|
|
22
|
+
inject: [connectionToken],
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
module: RuleModule_1,
|
|
26
|
+
imports: [logger_1.LoggerModule, shared_module_1.SharedModule],
|
|
27
|
+
controllers: enableController ? [rule_controller_1.RuleController] : [],
|
|
28
|
+
providers: [modelProvider, rule_service_1.RuleService, rule_repository_1.RuleRepository],
|
|
29
|
+
exports: [rule_service_1.RuleService, rule_repository_1.RuleRepository],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.RuleModule = RuleModule;
|
|
34
|
+
exports.RuleModule = RuleModule = RuleModule_1 = tslib_1.__decorate([
|
|
35
|
+
(0, common_1.Module)({})
|
|
36
|
+
], RuleModule);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Model } from 'mongoose';
|
|
2
|
+
import { IPagination } from './interface/pagination.interface';
|
|
3
|
+
import { IFindRule, IRule } from './interface/rule.interface';
|
|
4
|
+
import { RuleDocument } from './rule.schema';
|
|
5
|
+
export declare class RuleRepository {
|
|
6
|
+
private readonly model;
|
|
7
|
+
private readonly MAX_LIMIT;
|
|
8
|
+
constructor(model: Model<RuleDocument>);
|
|
9
|
+
save(data: IRule): Promise<IRule>;
|
|
10
|
+
update(ruleRateId: string, data: Partial<IRule>): Promise<IRule | null>;
|
|
11
|
+
findOneByRateId(rateRuleId: string): Promise<IRule | null>;
|
|
12
|
+
findAll(query: IFindRule): Promise<IPagination<IRule[]>>;
|
|
13
|
+
private buildQuery;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=rule.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.repository.d.ts","sourceRoot":"","sources":["../../../src/rules/rule.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAoB,YAAY,EAAE,MAAM,eAAe,CAAC;AAE/D,qBACa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAItB,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC;IAGvC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAIjC,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GACnB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMlB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAShE,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IA2CxD,OAAO,CAAC,UAAU;CASnB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RuleRepository = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
7
|
+
const mongoose_2 = require("mongoose");
|
|
8
|
+
const rule_schema_1 = require("./rule.schema");
|
|
9
|
+
let RuleRepository = class RuleRepository {
|
|
10
|
+
model;
|
|
11
|
+
MAX_LIMIT = 100;
|
|
12
|
+
constructor(model) {
|
|
13
|
+
this.model = model;
|
|
14
|
+
}
|
|
15
|
+
async save(data) {
|
|
16
|
+
return new this.model(data).save();
|
|
17
|
+
}
|
|
18
|
+
async update(ruleRateId, data) {
|
|
19
|
+
return this.model.findOneAndUpdate({ ruleId: ruleRateId }, data, {
|
|
20
|
+
new: true,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async findOneByRateId(rateRuleId) {
|
|
24
|
+
return this.model
|
|
25
|
+
.findOne({ ruleId: rateRuleId })
|
|
26
|
+
.select('-__v')
|
|
27
|
+
.select('-_id')
|
|
28
|
+
.lean()
|
|
29
|
+
.exec();
|
|
30
|
+
}
|
|
31
|
+
findAll(query) {
|
|
32
|
+
const { page, limit } = query;
|
|
33
|
+
const LIMIT = limit && limit < this.MAX_LIMIT ? limit : this.MAX_LIMIT;
|
|
34
|
+
let limitCount = 500;
|
|
35
|
+
while (limitCount < page * LIMIT) {
|
|
36
|
+
limitCount += 500;
|
|
37
|
+
}
|
|
38
|
+
const queryBuilt = this.buildQuery(query);
|
|
39
|
+
const count = this.model
|
|
40
|
+
.countDocuments(queryBuilt)
|
|
41
|
+
.limit(limitCount)
|
|
42
|
+
.exec();
|
|
43
|
+
const rules = this.model
|
|
44
|
+
.find(queryBuilt)
|
|
45
|
+
.limit(LIMIT)
|
|
46
|
+
.skip((page - 1) * LIMIT)
|
|
47
|
+
.select('-__v')
|
|
48
|
+
.exec();
|
|
49
|
+
return Promise.all([count, rules]).then(values => {
|
|
50
|
+
const [count, result] = values;
|
|
51
|
+
const mapped = result.map(e => e.toJSON());
|
|
52
|
+
let currentCount = count;
|
|
53
|
+
if (count > limitCount) {
|
|
54
|
+
currentCount = limitCount;
|
|
55
|
+
}
|
|
56
|
+
const totalPages = Math.ceil(count / LIMIT);
|
|
57
|
+
return {
|
|
58
|
+
total: currentCount,
|
|
59
|
+
currentPage: +page || 1,
|
|
60
|
+
totalPages,
|
|
61
|
+
data: mapped,
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
buildQuery(queryParameters) {
|
|
66
|
+
return Object.entries(queryParameters).reduce((acc, [key, value]) => {
|
|
67
|
+
if (key === 'page' || key === 'limit')
|
|
68
|
+
return acc;
|
|
69
|
+
acc[key] = value || '';
|
|
70
|
+
return acc;
|
|
71
|
+
}, {});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
exports.RuleRepository = RuleRepository;
|
|
75
|
+
exports.RuleRepository = RuleRepository = tslib_1.__decorate([
|
|
76
|
+
(0, common_1.Injectable)(),
|
|
77
|
+
tslib_1.__param(0, (0, mongoose_1.InjectModel)(rule_schema_1.RateLimitingRule.name)),
|
|
78
|
+
tslib_1.__metadata("design:paramtypes", [mongoose_2.Model])
|
|
79
|
+
], RuleRepository);
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { Document } from 'mongoose';
|
|
2
|
+
import { IRule } from './interface/rule.interface';
|
|
3
|
+
export type RuleDocument = RateLimitingRule & Document;
|
|
4
|
+
export declare class RateLimitingRule implements IRule {
|
|
5
|
+
ruleId: string;
|
|
6
|
+
name: string;
|
|
7
|
+
targetAction?: string;
|
|
8
|
+
expression: string;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
market: string;
|
|
11
|
+
errorMessage?: string;
|
|
12
|
+
partner: string;
|
|
13
|
+
provider?: string;
|
|
14
|
+
productType?: string;
|
|
15
|
+
variables?: Record<string, string>;
|
|
16
|
+
variablesRequired?: boolean;
|
|
17
|
+
deletedAt?: Date;
|
|
18
|
+
createdAt?: Date;
|
|
19
|
+
updatedAt?: Date;
|
|
20
|
+
}
|
|
21
|
+
export declare const RateLimitingRuleSchema: import("mongoose").Schema<RateLimitingRule, import("mongoose").Model<RateLimitingRule, any, any, any, any, any, RateLimitingRule>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
22
|
+
id: string;
|
|
23
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
24
|
+
_id: import("mongoose").Types.ObjectId;
|
|
25
|
+
} & {
|
|
26
|
+
__v: number;
|
|
27
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
28
|
+
id: string;
|
|
29
|
+
}>, {
|
|
30
|
+
ruleId?: import("mongoose").SchemaDefinitionProperty<string, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
31
|
+
id: string;
|
|
32
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
33
|
+
_id: import("mongoose").Types.ObjectId;
|
|
34
|
+
} & {
|
|
35
|
+
__v: number;
|
|
36
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
37
|
+
id: string;
|
|
38
|
+
}>> | undefined;
|
|
39
|
+
name?: import("mongoose").SchemaDefinitionProperty<string, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
40
|
+
id: string;
|
|
41
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
42
|
+
_id: import("mongoose").Types.ObjectId;
|
|
43
|
+
} & {
|
|
44
|
+
__v: number;
|
|
45
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
46
|
+
id: string;
|
|
47
|
+
}>> | undefined;
|
|
48
|
+
targetAction?: import("mongoose").SchemaDefinitionProperty<string | undefined, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
49
|
+
id: string;
|
|
50
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
51
|
+
_id: import("mongoose").Types.ObjectId;
|
|
52
|
+
} & {
|
|
53
|
+
__v: number;
|
|
54
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
55
|
+
id: string;
|
|
56
|
+
}>> | undefined;
|
|
57
|
+
expression?: import("mongoose").SchemaDefinitionProperty<string, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
58
|
+
id: string;
|
|
59
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
60
|
+
_id: import("mongoose").Types.ObjectId;
|
|
61
|
+
} & {
|
|
62
|
+
__v: number;
|
|
63
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
64
|
+
id: string;
|
|
65
|
+
}>> | undefined;
|
|
66
|
+
enabled?: import("mongoose").SchemaDefinitionProperty<boolean, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
67
|
+
id: string;
|
|
68
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
69
|
+
_id: import("mongoose").Types.ObjectId;
|
|
70
|
+
} & {
|
|
71
|
+
__v: number;
|
|
72
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
73
|
+
id: string;
|
|
74
|
+
}>> | undefined;
|
|
75
|
+
market?: import("mongoose").SchemaDefinitionProperty<string, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
76
|
+
id: string;
|
|
77
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
78
|
+
_id: import("mongoose").Types.ObjectId;
|
|
79
|
+
} & {
|
|
80
|
+
__v: number;
|
|
81
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
82
|
+
id: string;
|
|
83
|
+
}>> | undefined;
|
|
84
|
+
errorMessage?: import("mongoose").SchemaDefinitionProperty<string | undefined, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
85
|
+
id: string;
|
|
86
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
87
|
+
_id: import("mongoose").Types.ObjectId;
|
|
88
|
+
} & {
|
|
89
|
+
__v: number;
|
|
90
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
91
|
+
id: string;
|
|
92
|
+
}>> | undefined;
|
|
93
|
+
partner?: import("mongoose").SchemaDefinitionProperty<string, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
94
|
+
id: string;
|
|
95
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
96
|
+
_id: import("mongoose").Types.ObjectId;
|
|
97
|
+
} & {
|
|
98
|
+
__v: number;
|
|
99
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
100
|
+
id: string;
|
|
101
|
+
}>> | undefined;
|
|
102
|
+
provider?: import("mongoose").SchemaDefinitionProperty<string | undefined, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
103
|
+
id: string;
|
|
104
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
105
|
+
_id: import("mongoose").Types.ObjectId;
|
|
106
|
+
} & {
|
|
107
|
+
__v: number;
|
|
108
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
109
|
+
id: string;
|
|
110
|
+
}>> | undefined;
|
|
111
|
+
productType?: import("mongoose").SchemaDefinitionProperty<string | undefined, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
112
|
+
id: string;
|
|
113
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
114
|
+
_id: import("mongoose").Types.ObjectId;
|
|
115
|
+
} & {
|
|
116
|
+
__v: number;
|
|
117
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
118
|
+
id: string;
|
|
119
|
+
}>> | undefined;
|
|
120
|
+
variables?: import("mongoose").SchemaDefinitionProperty<Record<string, string> | undefined, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
121
|
+
id: string;
|
|
122
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
123
|
+
_id: import("mongoose").Types.ObjectId;
|
|
124
|
+
} & {
|
|
125
|
+
__v: number;
|
|
126
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
127
|
+
id: string;
|
|
128
|
+
}>> | undefined;
|
|
129
|
+
variablesRequired?: import("mongoose").SchemaDefinitionProperty<boolean | undefined, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
130
|
+
id: string;
|
|
131
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
132
|
+
_id: import("mongoose").Types.ObjectId;
|
|
133
|
+
} & {
|
|
134
|
+
__v: number;
|
|
135
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
136
|
+
id: string;
|
|
137
|
+
}>> | undefined;
|
|
138
|
+
deletedAt?: import("mongoose").SchemaDefinitionProperty<Date | undefined, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
139
|
+
id: string;
|
|
140
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
141
|
+
_id: import("mongoose").Types.ObjectId;
|
|
142
|
+
} & {
|
|
143
|
+
__v: number;
|
|
144
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
145
|
+
id: string;
|
|
146
|
+
}>> | undefined;
|
|
147
|
+
createdAt?: import("mongoose").SchemaDefinitionProperty<Date | undefined, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
148
|
+
id: string;
|
|
149
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
150
|
+
_id: import("mongoose").Types.ObjectId;
|
|
151
|
+
} & {
|
|
152
|
+
__v: number;
|
|
153
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
154
|
+
id: string;
|
|
155
|
+
}>> | undefined;
|
|
156
|
+
updatedAt?: import("mongoose").SchemaDefinitionProperty<Date | undefined, RateLimitingRule, Document<unknown, {}, RateLimitingRule, {
|
|
157
|
+
id: string;
|
|
158
|
+
}, import("mongoose").DefaultSchemaOptions> & Omit<RateLimitingRule & {
|
|
159
|
+
_id: import("mongoose").Types.ObjectId;
|
|
160
|
+
} & {
|
|
161
|
+
__v: number;
|
|
162
|
+
}, "id"> & import("mongoose").HydratedDocumentOverrides<{
|
|
163
|
+
id: string;
|
|
164
|
+
}>> | undefined;
|
|
165
|
+
}, RateLimitingRule>;
|
|
166
|
+
//# sourceMappingURL=rule.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.schema.d.ts","sourceRoot":"","sources":["../../../src/rules/rule.schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAEvD,qBACa,gBAAiB,YAAW,KAAK;IAU5C,MAAM,EAAG,MAAM,CAAC;IAMhB,IAAI,EAAG,MAAM,CAAC;IAMd,YAAY,CAAC,EAAE,MAAM,CAAC;IAMtB,UAAU,EAAG,MAAM,CAAC;IAOpB,OAAO,EAAG,OAAO,CAAC;IAMlB,MAAM,EAAG,MAAM,CAAC;IAMhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAMtB,OAAO,EAAG,MAAM,CAAC;IAMjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAMnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAM5B,SAAS,CAAC,EAAE,IAAI,CAAC;IAMjB,SAAS,CAAC,EAAE,IAAI,CAAC;IAMjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBACa,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RateLimitingRuleSchema = exports.RateLimitingRule = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
6
|
+
let RateLimitingRule = class RateLimitingRule {
|
|
7
|
+
ruleId;
|
|
8
|
+
name;
|
|
9
|
+
targetAction;
|
|
10
|
+
expression;
|
|
11
|
+
enabled;
|
|
12
|
+
market;
|
|
13
|
+
errorMessage;
|
|
14
|
+
partner;
|
|
15
|
+
provider;
|
|
16
|
+
productType;
|
|
17
|
+
variables;
|
|
18
|
+
variablesRequired;
|
|
19
|
+
deletedAt;
|
|
20
|
+
createdAt;
|
|
21
|
+
updatedAt;
|
|
22
|
+
};
|
|
23
|
+
exports.RateLimitingRule = RateLimitingRule;
|
|
24
|
+
tslib_1.__decorate([
|
|
25
|
+
(0, mongoose_1.Prop)({
|
|
26
|
+
required: true,
|
|
27
|
+
unique: true,
|
|
28
|
+
default: async () => {
|
|
29
|
+
const { v4: uuidv4 } = await import('uuid');
|
|
30
|
+
return uuidv4();
|
|
31
|
+
},
|
|
32
|
+
type: String,
|
|
33
|
+
}),
|
|
34
|
+
tslib_1.__metadata("design:type", String)
|
|
35
|
+
], RateLimitingRule.prototype, "ruleId", void 0);
|
|
36
|
+
tslib_1.__decorate([
|
|
37
|
+
(0, mongoose_1.Prop)({
|
|
38
|
+
required: true,
|
|
39
|
+
type: String,
|
|
40
|
+
}),
|
|
41
|
+
tslib_1.__metadata("design:type", String)
|
|
42
|
+
], RateLimitingRule.prototype, "name", void 0);
|
|
43
|
+
tslib_1.__decorate([
|
|
44
|
+
(0, mongoose_1.Prop)({
|
|
45
|
+
required: true,
|
|
46
|
+
type: String,
|
|
47
|
+
}),
|
|
48
|
+
tslib_1.__metadata("design:type", String)
|
|
49
|
+
], RateLimitingRule.prototype, "targetAction", void 0);
|
|
50
|
+
tslib_1.__decorate([
|
|
51
|
+
(0, mongoose_1.Prop)({
|
|
52
|
+
required: true,
|
|
53
|
+
type: String,
|
|
54
|
+
}),
|
|
55
|
+
tslib_1.__metadata("design:type", String)
|
|
56
|
+
], RateLimitingRule.prototype, "expression", void 0);
|
|
57
|
+
tslib_1.__decorate([
|
|
58
|
+
(0, mongoose_1.Prop)({
|
|
59
|
+
required: true,
|
|
60
|
+
default: true,
|
|
61
|
+
type: Boolean,
|
|
62
|
+
}),
|
|
63
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
64
|
+
], RateLimitingRule.prototype, "enabled", void 0);
|
|
65
|
+
tslib_1.__decorate([
|
|
66
|
+
(0, mongoose_1.Prop)({
|
|
67
|
+
required: false,
|
|
68
|
+
type: String,
|
|
69
|
+
}),
|
|
70
|
+
tslib_1.__metadata("design:type", String)
|
|
71
|
+
], RateLimitingRule.prototype, "market", void 0);
|
|
72
|
+
tslib_1.__decorate([
|
|
73
|
+
(0, mongoose_1.Prop)({
|
|
74
|
+
required: false,
|
|
75
|
+
type: String,
|
|
76
|
+
}),
|
|
77
|
+
tslib_1.__metadata("design:type", String)
|
|
78
|
+
], RateLimitingRule.prototype, "errorMessage", void 0);
|
|
79
|
+
tslib_1.__decorate([
|
|
80
|
+
(0, mongoose_1.Prop)({
|
|
81
|
+
required: true,
|
|
82
|
+
type: String,
|
|
83
|
+
}),
|
|
84
|
+
tslib_1.__metadata("design:type", String)
|
|
85
|
+
], RateLimitingRule.prototype, "partner", void 0);
|
|
86
|
+
tslib_1.__decorate([
|
|
87
|
+
(0, mongoose_1.Prop)({
|
|
88
|
+
required: false,
|
|
89
|
+
type: String,
|
|
90
|
+
}),
|
|
91
|
+
tslib_1.__metadata("design:type", String)
|
|
92
|
+
], RateLimitingRule.prototype, "provider", void 0);
|
|
93
|
+
tslib_1.__decorate([
|
|
94
|
+
(0, mongoose_1.Prop)({
|
|
95
|
+
required: false,
|
|
96
|
+
type: String,
|
|
97
|
+
}),
|
|
98
|
+
tslib_1.__metadata("design:type", String)
|
|
99
|
+
], RateLimitingRule.prototype, "productType", void 0);
|
|
100
|
+
tslib_1.__decorate([
|
|
101
|
+
(0, mongoose_1.Prop)({
|
|
102
|
+
required: false,
|
|
103
|
+
type: Object,
|
|
104
|
+
}),
|
|
105
|
+
tslib_1.__metadata("design:type", Object)
|
|
106
|
+
], RateLimitingRule.prototype, "variables", void 0);
|
|
107
|
+
tslib_1.__decorate([
|
|
108
|
+
(0, mongoose_1.Prop)({
|
|
109
|
+
required: false,
|
|
110
|
+
type: Boolean,
|
|
111
|
+
}),
|
|
112
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
113
|
+
], RateLimitingRule.prototype, "variablesRequired", void 0);
|
|
114
|
+
tslib_1.__decorate([
|
|
115
|
+
(0, mongoose_1.Prop)({
|
|
116
|
+
required: false,
|
|
117
|
+
type: Date,
|
|
118
|
+
}),
|
|
119
|
+
tslib_1.__metadata("design:type", Date)
|
|
120
|
+
], RateLimitingRule.prototype, "deletedAt", void 0);
|
|
121
|
+
tslib_1.__decorate([
|
|
122
|
+
(0, mongoose_1.Prop)({
|
|
123
|
+
required: false,
|
|
124
|
+
type: Date,
|
|
125
|
+
}),
|
|
126
|
+
tslib_1.__metadata("design:type", Date)
|
|
127
|
+
], RateLimitingRule.prototype, "createdAt", void 0);
|
|
128
|
+
tslib_1.__decorate([
|
|
129
|
+
(0, mongoose_1.Prop)({
|
|
130
|
+
required: false,
|
|
131
|
+
type: Date,
|
|
132
|
+
}),
|
|
133
|
+
tslib_1.__metadata("design:type", Date)
|
|
134
|
+
], RateLimitingRule.prototype, "updatedAt", void 0);
|
|
135
|
+
exports.RateLimitingRule = RateLimitingRule = tslib_1.__decorate([
|
|
136
|
+
(0, mongoose_1.Schema)({ timestamps: true })
|
|
137
|
+
], RateLimitingRule);
|
|
138
|
+
exports.RateLimitingRuleSchema = mongoose_1.SchemaFactory.createForClass(RateLimitingRule);
|
|
139
|
+
exports.RateLimitingRuleSchema.index({
|
|
140
|
+
partner: 1,
|
|
141
|
+
provider: 1,
|
|
142
|
+
productType: 1,
|
|
143
|
+
});
|
|
144
|
+
exports.RateLimitingRuleSchema.index({
|
|
145
|
+
partner: 1,
|
|
146
|
+
provider: 1,
|
|
147
|
+
});
|
|
148
|
+
exports.RateLimitingRuleSchema.index({
|
|
149
|
+
partner: 1,
|
|
150
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { LoggerService } from '@edirect/logger';
|
|
2
|
+
import { CacheService } from '../shared/cache/cache.service';
|
|
3
|
+
import { CreateRuleDTO } from './dto/rule.dto';
|
|
4
|
+
import { IPagination } from './interface/pagination.interface';
|
|
5
|
+
import { IFindRule, IRule } from './interface/rule.interface';
|
|
6
|
+
import { RuleRepository } from './rule.repository';
|
|
7
|
+
export declare class RuleService {
|
|
8
|
+
private readonly logger;
|
|
9
|
+
private readonly repository;
|
|
10
|
+
private readonly cacheService;
|
|
11
|
+
private readonly MAX_EXPRESSION_LENGTH;
|
|
12
|
+
private readonly MAX_EXPRESSION_DEPTH;
|
|
13
|
+
private readonly FORBIDDEN_PATTERNS;
|
|
14
|
+
constructor(logger: LoggerService, repository: RuleRepository, cacheService: CacheService);
|
|
15
|
+
create(input?: CreateRuleDTO): Promise<IRule>;
|
|
16
|
+
findAll(queryParameters: IFindRule): Promise<IPagination<IRule[]>>;
|
|
17
|
+
findAllWithoutPagination(queryParameters: IFindRule): Promise<IRule[]>;
|
|
18
|
+
findById(id: string): Promise<IRule>;
|
|
19
|
+
updateOne(id: string, fieldsToUpdate: Partial<IRule>): Promise<IRule | null>;
|
|
20
|
+
delete(id: string): Promise<void>;
|
|
21
|
+
private logError;
|
|
22
|
+
validateRuleExpression(expression: string): string | null;
|
|
23
|
+
private getFromCache;
|
|
24
|
+
private generateRateLimitingCountCacheKey;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=rule.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule.service.d.ts","sourceRoot":"","sources":["../../../src/rules/rule.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAShD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBACa,WAAW;IAqBpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAtB/B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAO;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAK;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAejC;gBAGiB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,YAAY;IAGvC,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IA0B7C,OAAO,CAAC,eAAe,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IASlE,wBAAwB,CAAC,eAAe,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA0BtE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAapC,SAAS,CACb,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,GAC7B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAgClB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvC,OAAO,CAAC,QAAQ;IAOhB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;YAoB3C,YAAY;IAiB1B,OAAO,CAAC,iCAAiC;CAuB1C"}
|