@edirect/rate-limit-module 0.1.6 → 0.1.9
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/src/guards/rate-limiting.guard.js +1 -1
- package/dist/src/guards/rate-limiting.guard.js.map +1 -1
- package/dist/src/object.utils.d.ts +1 -1
- package/dist/src/object.utils.js +3 -1
- package/dist/src/object.utils.js.map +1 -1
- package/dist/src/rules/rule.service.d.ts +1 -0
- package/dist/src/rules/rule.service.js +10 -4
- package/dist/src/rules/rule.service.js.map +1 -1
- package/dist/src/shared/cache/cache.service.js +2 -2
- package/dist/src/shared/cache/cache.service.js.map +1 -1
- package/dist/src/shared/redis/redis.service.js +2 -2
- package/dist/src/shared/redis/redis.service.js.map +1 -1
- package/dist/src/shared/rule-engine/rule-engine.module.d.ts +2 -1
- package/dist/src/shared/rule-engine/rule-engine.module.js +5 -17
- package/dist/src/shared/rule-engine/rule-engine.module.js.map +1 -1
- package/dist/src/shared/rule-engine/rule-engine.service.d.ts +5 -2
- package/dist/src/shared/rule-engine/rule-engine.service.js +43 -9
- package/dist/src/shared/rule-engine/rule-engine.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiting.guard.js","sourceRoot":"","sources":["../../../src/guards/rate-limiting.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AACxB,uCAAyC;AACzC,6FAGoD;AACpD,kDAAkD;AAElD,wDAAoD;AACpD,mFAA8E;AAGvE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAEb;IACA;IAEA;IAJnB,YACmB,SAAoB,EACpB,WAAwB,EAExB,UAA6B;QAH7B,cAAS,GAAT,SAAS,CAAW;QACpB,gBAAW,GAAX,WAAW,CAAa;QAExB,eAAU,GAAV,UAAU,CAAmB;IAC7C,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAErC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACrC,4CAAa,EACb,OAAO,CACR,CAAC;YAEF,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC;YAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;YAExB,MAAM,EACJ,MAAM,EACN,WAAW,EACX,YAAY,EACZ,eAAe,EAChB,GAAG,YAAY,CAAC;YAEjB,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAE5D,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAE1B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YAEpE,MAAM,UAAU,GAAc;gBAC5B,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,MAAM;gBACpB,WAAW;gBACX,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,EAAE;aACV,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rate-limiting.guard.js","sourceRoot":"","sources":["../../../src/guards/rate-limiting.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const withDefaultNull: <T extends object>(context: T) => T;
|
|
2
|
-
export declare const calculateDepth: (expression: string) => number;
|
|
2
|
+
export declare const calculateDepth: (expression: string) => number | undefined;
|
package/dist/src/object.utils.js
CHANGED
|
@@ -20,6 +20,8 @@ const withDefaultNull = (context) => {
|
|
|
20
20
|
};
|
|
21
21
|
exports.withDefaultNull = withDefaultNull;
|
|
22
22
|
const calculateDepth = (expression) => {
|
|
23
|
+
if (!expression)
|
|
24
|
+
return;
|
|
23
25
|
let depth = 0;
|
|
24
26
|
let maxDepth = 0;
|
|
25
27
|
for (const char of expression) {
|
|
@@ -31,7 +33,7 @@ const calculateDepth = (expression) => {
|
|
|
31
33
|
depth--;
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
|
-
return
|
|
36
|
+
return depth;
|
|
35
37
|
};
|
|
36
38
|
exports.calculateDepth = calculateDepth;
|
|
37
39
|
//# sourceMappingURL=object.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.utils.js","sourceRoot":"","sources":["../../src/object.utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,eAAe,GAAG,CAAmB,OAAU,EAAK,EAAE;IACjE,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAElD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IACE,KAAK,KAAK,IAAI;gBACd,OAAO,KAAK,KAAK,QAAQ;gBACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrB,KAAK,CAAC,WAAW,KAAK,MAAM,EAC5B,CAAC;gBACD,OAAO,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAM,CAAC;AACV,CAAC,CAAC;AArBW,QAAA,eAAe,mBAqB1B;AAEK,MAAM,cAAc,GAAG,CAAC,UAAkB,
|
|
1
|
+
{"version":3,"file":"object.utils.js","sourceRoot":"","sources":["../../src/object.utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,eAAe,GAAG,CAAmB,OAAU,EAAK,EAAE;IACjE,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAElD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IACE,KAAK,KAAK,IAAI;gBACd,OAAO,KAAK,KAAK,QAAQ;gBACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrB,KAAK,CAAC,WAAW,KAAK,MAAM,EAC5B,CAAC;gBACD,OAAO,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAM,CAAC;AACV,CAAC,CAAC;AArBW,QAAA,eAAe,mBAqB1B;AAEK,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAsB,EAAE;IACvE,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,EAAE,CAAC;YACR,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAhBW,QAAA,cAAc,kBAgBzB"}
|
|
@@ -85,7 +85,7 @@ let RuleService = class RuleService {
|
|
|
85
85
|
productType: queryParameters?.productType
|
|
86
86
|
});
|
|
87
87
|
if (data && data.length) {
|
|
88
|
-
await this.cacheService.set(cacheKey,
|
|
88
|
+
await this.cacheService.set(cacheKey, data, 3600);
|
|
89
89
|
}
|
|
90
90
|
return data;
|
|
91
91
|
}
|
|
@@ -152,7 +152,7 @@ let RuleService = class RuleService {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
validateRuleExpression(expression) {
|
|
155
|
-
if (expression.length > this.MAX_EXPRESSION_LENGTH) {
|
|
155
|
+
if (expression && expression.length > this.MAX_EXPRESSION_LENGTH) {
|
|
156
156
|
return `Expression too long: ${expression.length} chars`;
|
|
157
157
|
}
|
|
158
158
|
for (const pattern of this.FORBIDDEN_PATTERNS) {
|
|
@@ -160,7 +160,8 @@ let RuleService = class RuleService {
|
|
|
160
160
|
return `Expression contains forbidden pattern: ${pattern}`;
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
|
|
163
|
+
const depth = (0, object_utils_1.calculateDepth)(expression);
|
|
164
|
+
if (depth && depth > this.MAX_EXPRESSION_DEPTH) {
|
|
164
165
|
return `Expression too complex`;
|
|
165
166
|
}
|
|
166
167
|
return null;
|
|
@@ -173,7 +174,7 @@ let RuleService = class RuleService {
|
|
|
173
174
|
});
|
|
174
175
|
const cachedData = await this.cacheService.get(cacheKey);
|
|
175
176
|
if (cachedData && cachedData.length) {
|
|
176
|
-
this.logger.info(`[INFO] Cache hit for: ${cachedData}`);
|
|
177
|
+
this.logger.info(`[INFO] Cache hit for: ${JSON.stringify(cachedData)}`);
|
|
177
178
|
return cachedData;
|
|
178
179
|
}
|
|
179
180
|
return [];
|
|
@@ -194,6 +195,11 @@ let RuleService = class RuleService {
|
|
|
194
195
|
return `rate-limit-config:${JSON.stringify(orderedParams)}`;
|
|
195
196
|
}
|
|
196
197
|
;
|
|
198
|
+
wrapWithForce(fn) {
|
|
199
|
+
return async (...args) => {
|
|
200
|
+
return await fn(...args);
|
|
201
|
+
};
|
|
202
|
+
}
|
|
197
203
|
};
|
|
198
204
|
exports.RuleService = RuleService;
|
|
199
205
|
exports.RuleService = RuleService = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.service.js","sourceRoot":"","sources":["../../../src/rules/rule.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAgD;AAChD,2CAAiI;AACjI,kDAAiD;AACjD,iEAA6D;AAI7D,uDAAmD;AAG5C,IAAM,WAAW,GAAjB,MAAM,WAAW;IAqBH;IACA;IACA;IAtBF,qBAAqB,GAAG,GAAG,CAAC;IAC5B,oBAAoB,GAAG,CAAC,CAAC;IACzB,kBAAkB,GAAG;QACpC,cAAc;QACd,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,SAAS;QACT,UAAU;QACV,SAAS;QACT,OAAO;QACP,WAAW;QACX,aAAa;QACb,cAAc;QACd,MAAM;QACN,UAAU;QACV,sBAAsB;KACvB,CAAC;IAEF,YACmB,MAAqB,EACrB,UAA0B,EAC1B,YAA0B;QAF1B,WAAM,GAAN,MAAM,CAAe;QACrB,eAAU,GAAV,UAAU,CAAgB;QAC1B,iBAAY,GAAZ,YAAY,CAAc;IAC1C,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,KAAoB;QAC/B,IAAI,CAAC;YACH,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,4BAAmB,CAAC,0BAA0B,CAAC,CAAC;YAEtE,MAAM,QAAQ,GAAG,IAAI,CAAC,iCAAiC,CAAC;gBACtD,OAAO,EAAE,KAAK,EAAE,OAAO;gBACvB,QAAQ,EAAE,KAAK,EAAE,QAAQ;gBACzB,WAAW,EAAE,KAAK,EAAE,WAAW;aAChC,CAAC,CAAC;YAEH,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAE7D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,eAA0B;QACtC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAChE,MAAM,IAAI,qCAA4B,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,eAA0B;QAE1B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YAE5D,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM;gBAAE,OAAO,UAAU,CAAC;YAEvD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAEhE,MAAM,QAAQ,GAAG,IAAI,CAAC,iCAAiC,CAAC;gBACtD,OAAO,EAAE,eAAe,EAAE,OAAO;gBACjC,QAAQ,EAAE,eAAe,EAAE,QAAQ;gBACnC,WAAW,EAAE,eAAe,EAAE,WAAW;aAC1C,CAAC,CAAC;YAEH,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"rule.service.js","sourceRoot":"","sources":["../../../src/rules/rule.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,10 +18,10 @@ let CacheService = class CacheService {
|
|
|
18
18
|
this.redis = redis;
|
|
19
19
|
}
|
|
20
20
|
async get(key) {
|
|
21
|
-
return this.redis.get(key);
|
|
21
|
+
return await this.redis.get(key);
|
|
22
22
|
}
|
|
23
23
|
set(key, value, ttl) {
|
|
24
|
-
return this.redis.set(key,
|
|
24
|
+
return this.redis.set(key, value, ttl);
|
|
25
25
|
}
|
|
26
26
|
delete(keys) {
|
|
27
27
|
return this.redis.delKeys(keys);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../../../src/shared/cache/cache.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,0DAAsD;AAG/C,IAAM,YAAY,GAAlB,MAAM,YAAY;IACM;IAA7B,YAA6B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAG,CAAC;IAEpD,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../../../src/shared/cache/cache.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,0DAAsD;AAG/C,IAAM,YAAY,GAAlB,MAAM,YAAY;IACM;IAA7B,YAA6B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAG,CAAC;IAEpD,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,GAAY;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,IAAc;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,eAAe,CAAC,OAAe;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF,CAAA;AAlBY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAEyB,4BAAY;GADrC,YAAY,CAkBxB"}
|
|
@@ -27,10 +27,10 @@ let RedisService = class RedisService {
|
|
|
27
27
|
async set(key, value, ttlSeconds) {
|
|
28
28
|
const str = JSON.stringify(value);
|
|
29
29
|
if (ttlSeconds) {
|
|
30
|
-
await this.client.set(key,
|
|
30
|
+
await this.client.set(key, str, 'EX', ttlSeconds);
|
|
31
31
|
}
|
|
32
32
|
else {
|
|
33
|
-
await this.client.set(key,
|
|
33
|
+
await this.client.set(key, str);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
async delKeys(keys) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../../src/shared/redis/redis.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAqE;AACrE,qCAA4B;AAGrB,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGJ;IAFnB,YAEmB,MAAa;QAAb,WAAM,GAAN,MAAM,CAAO;IAC7B,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,UAAmB;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../../src/shared/redis/redis.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAqE;AACrE,qCAA4B;AAGrB,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGJ;IAFnB,YAEmB,MAAa;QAAb,WAAM,GAAN,MAAM,CAAO;IAC7B,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,UAAmB;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,KAAK,GAAG,GAAG;QACrC,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,GAAG,CAAC;YACF,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5F,MAAM,GAAG,UAAU,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACtB,CAAC,QAAQ,MAAM,KAAK,GAAG,EAAE;QAEzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;CACF,CAAA;AA9CY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,cAAc,CAAC,CAAA;qCACE,iBAAK;GAHrB,YAAY,CA8CxB"}
|
|
@@ -2,8 +2,9 @@ import { DynamicModule } from '@nestjs/common';
|
|
|
2
2
|
import { IRuleFunction } from './interface/rule-engine.interface';
|
|
3
3
|
export declare class RuleEngineModule {
|
|
4
4
|
static forFeatureAsync(options: {
|
|
5
|
-
useFactory: (...args: any[]) => Promise<IRuleFunction[]
|
|
5
|
+
useFactory: (...args: any[]) => Promise<IRuleFunction[]>;
|
|
6
6
|
inject?: any[];
|
|
7
|
+
imports?: any[];
|
|
7
8
|
}): DynamicModule;
|
|
8
9
|
static forFeature(functions: IRuleFunction[]): DynamicModule;
|
|
9
10
|
}
|
|
@@ -16,23 +16,19 @@ let RuleEngineModule = RuleEngineModule_1 = class RuleEngineModule {
|
|
|
16
16
|
static forFeatureAsync(options) {
|
|
17
17
|
const functionsProvider = {
|
|
18
18
|
provide: index_1.CUSTOM_RULE_FUNCTIONS,
|
|
19
|
-
|
|
19
|
+
useFactory: options.useFactory,
|
|
20
|
+
inject: options?.inject || [],
|
|
20
21
|
};
|
|
21
22
|
const ruleEngineProvider = {
|
|
22
23
|
provide: index_1.RULE_ENGINE_INSTANCE,
|
|
23
24
|
useFactory: (fns) => {
|
|
24
|
-
|
|
25
|
-
const fnsNames = [];
|
|
26
|
-
for (const { name, fn } of fns) {
|
|
27
|
-
jexl.addFunction(name, fn);
|
|
28
|
-
fnsNames.push(name);
|
|
29
|
-
}
|
|
30
|
-
return new rule_engine_service_1.RuleEngineService(jexl, fnsNames);
|
|
25
|
+
return new rule_engine_service_1.RuleEngineService(new jexl_1.Jexl(), fns);
|
|
31
26
|
},
|
|
32
27
|
inject: [index_1.CUSTOM_RULE_FUNCTIONS],
|
|
33
28
|
};
|
|
34
29
|
return {
|
|
35
30
|
module: RuleEngineModule_1,
|
|
31
|
+
imports: options.imports || [],
|
|
36
32
|
providers: [functionsProvider, ruleEngineProvider],
|
|
37
33
|
exports: [index_1.RULE_ENGINE_INSTANCE],
|
|
38
34
|
};
|
|
@@ -44,15 +40,7 @@ let RuleEngineModule = RuleEngineModule_1 = class RuleEngineModule {
|
|
|
44
40
|
};
|
|
45
41
|
const ruleEngineProvider = {
|
|
46
42
|
provide: index_1.RULE_ENGINE_INSTANCE,
|
|
47
|
-
useFactory: (fns) =>
|
|
48
|
-
const jexl = new jexl_1.Jexl();
|
|
49
|
-
const fnsNames = [];
|
|
50
|
-
for (const { name, fn } of fns) {
|
|
51
|
-
jexl.addFunction(name, fn);
|
|
52
|
-
fnsNames.push(name);
|
|
53
|
-
}
|
|
54
|
-
return new rule_engine_service_1.RuleEngineService(jexl, fnsNames);
|
|
55
|
-
},
|
|
43
|
+
useFactory: (fns) => new rule_engine_service_1.RuleEngineService(new jexl_1.Jexl(), fns),
|
|
56
44
|
inject: [index_1.CUSTOM_RULE_FUNCTIONS],
|
|
57
45
|
};
|
|
58
46
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.module.js","sourceRoot":"","sources":["../../../../src/shared/rule-engine/rule-engine.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,+BAA4B;AAC5B,uCAA0E;AAE1E,+DAA0D;AAInD,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"rule-engine.module.js","sourceRoot":"","sources":["../../../../src/shared/rule-engine/rule-engine.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,+BAA4B;AAC5B,uCAA0E;AAE1E,+DAA0D;AAInD,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,eAAe,CAAC,OAItB;QACC,MAAM,iBAAiB,GAAa;YAClC,OAAO,EAAE,6BAAqB;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;SAC9B,CAAC;QAEF,MAAM,kBAAkB,GAAa;YACnC,OAAO,EAAE,4BAAoB;YAC7B,UAAU,EAAE,CAAC,GAAoB,EAAE,EAAE;gBACnC,OAAO,IAAI,uCAAiB,CAAC,IAAI,WAAI,EAAE,EAAE,GAAG,CAAC,CAAA;YAC/C,CAAC;YACD,MAAM,EAAE,CAAC,6BAAqB,CAAC;SAChC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YAClD,OAAO,EAAE,CAAC,4BAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,SAA0B;QAC1C,MAAM,iBAAiB,GAAa;YAClC,OAAO,EAAE,6BAAqB;YAC9B,QAAQ,EAAE,SAAS;SACpB,CAAC;QAEF,MAAM,kBAAkB,GAAa;YACnC,OAAO,EAAE,4BAAoB;YAC7B,UAAU,EAAE,CAAC,GAAoB,EAAE,EAAE,CAAC,IAAI,uCAAiB,CAAC,IAAI,WAAI,EAAE,EAAE,GAAG,CAAC;YAC5E,MAAM,EAAE,CAAC,6BAAqB,CAAC;SAChC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,SAAS,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YAClD,OAAO,EAAE,CAAC,4BAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;CACF,CAAA;AA9CY,4CAAgB;2BAAhB,gBAAgB;IAF5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,gBAAgB,CA8C5B"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { IRuleFunction } from "./interface/rule-engine.interface";
|
|
2
2
|
export declare class RuleEngineService {
|
|
3
3
|
private readonly jexl;
|
|
4
|
+
private readonly fns;
|
|
4
5
|
private readonly allowedFns;
|
|
5
|
-
constructor(jexl: any,
|
|
6
|
-
registerCustomFunctions(customFunctions: IRuleFunction[]): Promise<void>;
|
|
6
|
+
constructor(jexl: any, fns?: IRuleFunction[]);
|
|
7
7
|
evaluate<T>(expression: string, context: T): Promise<boolean>;
|
|
8
8
|
validateExpressionVariables<T>(expression: string, context: T): Promise<string[]>;
|
|
9
9
|
validateFunctionsAreValid(expression: any): String[];
|
|
10
10
|
getAllowedFunctions(): String[];
|
|
11
|
+
injectCustomFns(): void;
|
|
11
12
|
private _extractVariables;
|
|
12
13
|
private _validateVariablesInContext;
|
|
14
|
+
private extractFunctionCalls;
|
|
15
|
+
private resolveValue;
|
|
13
16
|
}
|
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RuleEngineService = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
4
5
|
class RuleEngineService {
|
|
5
6
|
jexl;
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
fns;
|
|
8
|
+
allowedFns = [];
|
|
9
|
+
constructor(jexl, fns = []) {
|
|
8
10
|
this.jexl = jexl;
|
|
9
|
-
this.
|
|
11
|
+
this.fns = fns;
|
|
12
|
+
this.injectCustomFns();
|
|
10
13
|
}
|
|
11
|
-
async
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
async evaluate(expression, context) {
|
|
15
|
+
const functionCalls = this.extractFunctionCalls(expression);
|
|
16
|
+
const values = {};
|
|
17
|
+
for (const call of functionCalls) {
|
|
18
|
+
const { name, rawArgs, fullText } = call;
|
|
19
|
+
if (this.fns && this.fns.length) {
|
|
20
|
+
const rule = this.fns.find((fn) => fn.name === name);
|
|
21
|
+
if (!rule || !rule.fn)
|
|
22
|
+
throw new common_1.BadRequestException(`Not known'${name}' function`);
|
|
23
|
+
const args = rawArgs.map(arg => this.resolveValue(arg, context));
|
|
24
|
+
const result = await rule.fn(...args) || 0;
|
|
25
|
+
expression = expression.replace(fullText, JSON.stringify(result));
|
|
26
|
+
}
|
|
14
27
|
}
|
|
15
|
-
|
|
16
|
-
evaluate(expression, context) {
|
|
17
|
-
return this.jexl.eval(expression, context);
|
|
28
|
+
return this.jexl.eval(expression, values);
|
|
18
29
|
}
|
|
19
30
|
async validateExpressionVariables(expression, context) {
|
|
20
31
|
const variables = this._extractVariables(expression);
|
|
@@ -22,6 +33,8 @@ class RuleEngineService {
|
|
|
22
33
|
return missingVariables;
|
|
23
34
|
}
|
|
24
35
|
validateFunctionsAreValid(expression) {
|
|
36
|
+
if (!expression)
|
|
37
|
+
return [];
|
|
25
38
|
if (!this.allowedFns || !this.allowedFns?.length)
|
|
26
39
|
return [];
|
|
27
40
|
const usedFunctions = [
|
|
@@ -33,6 +46,12 @@ class RuleEngineService {
|
|
|
33
46
|
getAllowedFunctions() {
|
|
34
47
|
return this.allowedFns;
|
|
35
48
|
}
|
|
49
|
+
injectCustomFns() {
|
|
50
|
+
for (const { name, fn } of this.fns) {
|
|
51
|
+
this.jexl.addFunction(name, fn);
|
|
52
|
+
this.allowedFns.push(name);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
36
55
|
_extractVariables(expression) {
|
|
37
56
|
const regex = /[a-zA-Z_$][a-zA-Z0-9_$]*(?:\.[a-zA-Z_$][a-zA-Z0-9_$]*|\[\d+\](?:\.[a-zA-Z_$][a-zA-Z0-9_$]*)*)+|\b[a-zA-Z_$][a-zA-Z0-9_$]*\b/g;
|
|
38
57
|
const functionRegex = /\b[a-zA-Z_$][a-zA-Z0-9_$]*\s*\(/g;
|
|
@@ -82,6 +101,21 @@ class RuleEngineService {
|
|
|
82
101
|
}
|
|
83
102
|
return missingVariables;
|
|
84
103
|
}
|
|
104
|
+
extractFunctionCalls(expression) {
|
|
105
|
+
const regex = /([a-zA-Z0-9_]+)\(([^)]*)\)/g;
|
|
106
|
+
const calls = [];
|
|
107
|
+
let match;
|
|
108
|
+
while ((match = regex.exec(expression)) !== null) {
|
|
109
|
+
const name = match[1];
|
|
110
|
+
const raw = match[2].split(',').map(s => s.trim());
|
|
111
|
+
calls.push({ name, rawArgs: raw, fullText: match[0] });
|
|
112
|
+
}
|
|
113
|
+
return calls;
|
|
114
|
+
}
|
|
115
|
+
resolveValue(path, context) {
|
|
116
|
+
const parts = path.split('.');
|
|
117
|
+
return parts.reduce((obj, part) => obj?.[part], context);
|
|
118
|
+
}
|
|
85
119
|
}
|
|
86
120
|
exports.RuleEngineService = RuleEngineService;
|
|
87
121
|
//# sourceMappingURL=rule-engine.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.service.js","sourceRoot":"","sources":["../../../../src/shared/rule-engine/rule-engine.service.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"rule-engine.service.js","sourceRoot":"","sources":["../../../../src/shared/rule-engine/rule-engine.service.ts"],"names":[],"mappings":"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"}
|