@edirect/rate-limit-module 2.0.2 โ 2.0.3
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/README.md +240 -0
- package/dist/src/guards/rate-limiting.guard.js +15 -14
- package/dist/src/guards/rate-limiting.guard.js.map +1 -1
- package/dist/src/shared/dsl/dsl.service.js +3 -2
- package/dist/src/shared/dsl/dsl.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -314,6 +314,246 @@ This is handled by utility functions like `buildDlsOp`, which map DSL constructs
|
|
|
314
314
|
|
|
315
315
|
By combining DSL definitions with path-based context extraction and safe runtime resolution, this module provides a highly flexible and secure rate-limiting engine ready for dynamic environments.
|
|
316
316
|
|
|
317
|
+
## ๐งพ Dynamic Query Context with `variables.queries`
|
|
318
|
+
|
|
319
|
+
The `variables` object is designed to allow structured dynamic query generation through an array of `queries`. Each query defines:
|
|
320
|
+
|
|
321
|
+
- The **function(s)** where this context will be injected (`fnContext`)
|
|
322
|
+
- The **parameters** to be resolved and passed (`query`)
|
|
323
|
+
- **Optional operations** and **default values**
|
|
324
|
+
|
|
325
|
+
### Structure of `variables.queries`
|
|
326
|
+
|
|
327
|
+
```json
|
|
328
|
+
{
|
|
329
|
+
"queries": [
|
|
330
|
+
{
|
|
331
|
+
"fnContext": ["countQuoteByParams"],
|
|
332
|
+
"query": [
|
|
333
|
+
{
|
|
334
|
+
"value": ":partner.partnerId",
|
|
335
|
+
"label": "partner.partnerId"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"value": ":productType",
|
|
339
|
+
"label": "productType"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"value": ":provider",
|
|
343
|
+
"label": "provider"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"value": ":applicant.documents[0].value",
|
|
347
|
+
"label": "applicant.documents.value"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"value": ":applicant.documents[0].type",
|
|
351
|
+
"label": "applicant.documents.type"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"label": "createdAt",
|
|
355
|
+
"op": "range",
|
|
356
|
+
"value": {
|
|
357
|
+
"to": "date(0)",
|
|
358
|
+
"from": "fn:getValueFromSale"
|
|
359
|
+
},
|
|
360
|
+
"defaultValue": {
|
|
361
|
+
"from": "date(-5d)",
|
|
362
|
+
"to": "date(0)"
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
]
|
|
366
|
+
}
|
|
367
|
+
]
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### ๐ Explanation
|
|
372
|
+
|
|
373
|
+
Field
|
|
374
|
+
|
|
375
|
+
Description
|
|
376
|
+
|
|
377
|
+
`fnContext`
|
|
378
|
+
|
|
379
|
+
The name(s) of the function(s) that will receive this query as parameter input
|
|
380
|
+
|
|
381
|
+
`query`
|
|
382
|
+
|
|
383
|
+
Array of parameter definitions. Each will be resolved based on context or DSL expressions
|
|
384
|
+
|
|
385
|
+
`label`
|
|
386
|
+
|
|
387
|
+
The target field to be passed (e.g. used to generate a MongoDB query or as input to a service)
|
|
388
|
+
|
|
389
|
+
`value`
|
|
390
|
+
|
|
391
|
+
Can be a dynamic reference (e.g., `:context.path`), a static value, or a DSL expression
|
|
392
|
+
|
|
393
|
+
`op`
|
|
394
|
+
|
|
395
|
+
Optional. Defines the operator (`eq`, `range`, `rangeDate`, `gte`, etc.)
|
|
396
|
+
|
|
397
|
+
`defaultValue`
|
|
398
|
+
|
|
399
|
+
Fallback value(s) to be used if dynamic resolution fails (e.g., missing path or function)
|
|
400
|
+
|
|
401
|
+
----------
|
|
402
|
+
|
|
403
|
+
### ๐ง Special Value Formats
|
|
404
|
+
|
|
405
|
+
- `:path.to.value` โ Dynamically extracted from the context object
|
|
406
|
+
|
|
407
|
+
- `date(-7d)` โ Resolved as a safe date expression
|
|
408
|
+
|
|
409
|
+
- `fn:getValueFromSale` โ Calls a predefined function to resolve the value dynamically
|
|
410
|
+
|
|
411
|
+
- Static values like `"moneyhero"` are passed as-is
|
|
412
|
+
|
|
413
|
+
### ๐งช Use Case Example
|
|
414
|
+
|
|
415
|
+
Imagine your service defines a method like:
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
async countQuoteByParams(filters: Record<string, any>): Promise<number>
|
|
419
|
+
|
|
420
|
+
At runtime, the module will:
|
|
421
|
+
|
|
422
|
+
1. Resolve each `value` in the `query` array using context and supported expressions.
|
|
423
|
+
|
|
424
|
+
2. Construct a query object:
|
|
425
|
+
|
|
426
|
+
```json
|
|
427
|
+
{
|
|
428
|
+
partner: { partnerId: "bolttech" },
|
|
429
|
+
productType: "car-insurance",
|
|
430
|
+
provider: "bolttech",
|
|
431
|
+
applicant: {
|
|
432
|
+
documents: [{ type: "NIF", value: "ABCDE" }]
|
|
433
|
+
},
|
|
434
|
+
createdAt: {
|
|
435
|
+
from: new Date("2025-07-25T00:00:00Z"), // resolved from fn:getValueFromSale
|
|
436
|
+
to: new Date("2025-07-30T00:00:00Z") // resolved from date(0)
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
3. Inject this into `countQuoteByParams(...)`
|
|
442
|
+
This approach gives you a highly flexible, configurable system for controlling dynamic function parameters via context-based DSLs and runtime evaluation.
|
|
443
|
+
|
|
444
|
+
----------
|
|
445
|
+
## ๐ง Custom Runtime Functions with `variables.functions`
|
|
446
|
+
|
|
447
|
+
In addition to defining query parameters in `variables.queries`, the system also supports **custom runtime functions** through the `variables.functions` array.
|
|
448
|
+
|
|
449
|
+
These functions can be executed **before query construction** to compute values that are **injected** dynamically into query fields.
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
### ๐ง Structure of `functions`
|
|
454
|
+
|
|
455
|
+
Each function definition includes:
|
|
456
|
+
|
|
457
|
+
| Field | Description |
|
|
458
|
+
|------------|-----------------------------------------------------------------------------|
|
|
459
|
+
| `name` | Unique function identifier |
|
|
460
|
+
| `fn` | The function to execute, in the format `functionName(args...)` |
|
|
461
|
+
| `variables`| Parameters passed to the function, which can include subqueries and values |
|
|
462
|
+
|
|
463
|
+
### ๐ Example
|
|
464
|
+
|
|
465
|
+
```json
|
|
466
|
+
{
|
|
467
|
+
"functions": [
|
|
468
|
+
{
|
|
469
|
+
"name": "getValueFromSale",
|
|
470
|
+
"fn": "getValueFromSale(queries, target)",
|
|
471
|
+
"variables": {
|
|
472
|
+
"target": "createdAt",
|
|
473
|
+
"queries": [
|
|
474
|
+
{
|
|
475
|
+
"value": ":productType",
|
|
476
|
+
"label": "products.productType"
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
"value": ":applicant.documents[0].value",
|
|
480
|
+
"label": "applicant.documents.value"
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
"value": ":applicant.documents[0].type",
|
|
484
|
+
"label": "applicant.documents.type"
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
"value": "date(-5d)",
|
|
488
|
+
"label": "createdAt",
|
|
489
|
+
"op": "gte"
|
|
490
|
+
}
|
|
491
|
+
]
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
]
|
|
495
|
+
}
|
|
496
|
+
```
|
|
497
|
+
### ๐ Using the Function Output in Queries
|
|
498
|
+
|
|
499
|
+
To use the result of a function, reference it in a `query.value` using the syntax: `fn:functionName`.
|
|
500
|
+
|
|
501
|
+
json
|
|
502
|
+
|
|
503
|
+
CopyEdit
|
|
504
|
+
|
|
505
|
+
```json
|
|
506
|
+
{
|
|
507
|
+
"label":"createdAt",
|
|
508
|
+
"op":"range",
|
|
509
|
+
"value":{
|
|
510
|
+
"from":"fn:getValueFromSale",
|
|
511
|
+
"to":"date(0)"
|
|
512
|
+
},
|
|
513
|
+
"defaultValue":{
|
|
514
|
+
"from":"date(-5d)",
|
|
515
|
+
"to":"date(0)"
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
๐ In this case, `getValueFromSale(...)` will run **before** the query is constructed, and the result will be injected into the `from` field.
|
|
521
|
+
|
|
522
|
+
----------
|
|
523
|
+
|
|
524
|
+
### ๐งฉ How It Works
|
|
525
|
+
|
|
526
|
+
1. The engine scans all `functions` in `variables.functions`.
|
|
527
|
+
|
|
528
|
+
2. For each `query` entry in `variables.queries`, if `value` (or `from`, `to`) starts with `fn:`, it:
|
|
529
|
+
|
|
530
|
+
- Finds the corresponding `function` by name
|
|
531
|
+
|
|
532
|
+
- Resolves its `variables` (supporting nested `:context.paths`)
|
|
533
|
+
|
|
534
|
+
- Executes the declared function like `getValueFromSale(queries, target)`
|
|
535
|
+
|
|
536
|
+
3. The return value of the function replaces the `fn:` reference.
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
----------
|
|
540
|
+
|
|
541
|
+
### โ
Benefits
|
|
542
|
+
|
|
543
|
+
- Enables **pre-processing logic** in a declarative way
|
|
544
|
+
|
|
545
|
+
- Keeps rule/query definitions **clean and context-aware**
|
|
546
|
+
|
|
547
|
+
- Promotes **reuse** of custom logic across different rules or queries
|
|
548
|
+
|
|
549
|
+
- Provides **defaultValue** fallback in case of failure
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
----------
|
|
553
|
+
|
|
554
|
+
> ๐ก Tip: Functions must be registered and resolvable at runtime by your system. The evaluation engine must be able to map the function name (`getValueFromSale`) to a real implementation.
|
|
555
|
+
|
|
556
|
+
|
|
317
557
|
|
|
318
558
|
## ๐งฐ Requirements
|
|
319
559
|
|
|
@@ -145,13 +145,6 @@ let RateLimitingRuleGuard = RateLimitingRuleGuard_1 = class RateLimitingRuleGuar
|
|
|
145
145
|
return raw;
|
|
146
146
|
}
|
|
147
147
|
if (typeof raw === 'object' && raw !== null && raw.from && raw.to) {
|
|
148
|
-
const defaultDates = defaultValue;
|
|
149
|
-
if (!raw.from && defaultDates?.from) {
|
|
150
|
-
raw.from = defaultDates.from;
|
|
151
|
-
}
|
|
152
|
-
if (!raw.to && defaultDates?.to) {
|
|
153
|
-
raw.to = defaultDates.to;
|
|
154
|
-
}
|
|
155
148
|
return {
|
|
156
149
|
from: this._resolveValue(raw.from, context),
|
|
157
150
|
to: this._resolveValue(raw.to, context)
|
|
@@ -205,17 +198,25 @@ let RateLimitingRuleGuard = RateLimitingRuleGuard_1 = class RateLimitingRuleGuar
|
|
|
205
198
|
}
|
|
206
199
|
}
|
|
207
200
|
_updateFnsResults(vars, fnName, value) {
|
|
208
|
-
if (!value)
|
|
209
|
-
return;
|
|
210
201
|
vars.queries.forEach(q => {
|
|
211
202
|
q.query.forEach(cond => {
|
|
212
203
|
if (/^\s*fn:/.test(cond.value) || typeof cond.value === 'object') {
|
|
213
|
-
if (typeof cond.value === 'object'
|
|
214
|
-
if (cond.value.from.replace(/^fn:/, '') === fnName) {
|
|
215
|
-
cond.value.from = value;
|
|
216
|
-
}
|
|
204
|
+
if (typeof cond.value === 'object') {
|
|
217
205
|
if (cond.value.to.replace(/^fn:/, '') === fnName) {
|
|
218
|
-
|
|
206
|
+
if (value) {
|
|
207
|
+
cond.value.to = value;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
cond.value.to = cond?.defaultValue?.to;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (cond.value?.from.replace(/^fn:/, '') === fnName) {
|
|
214
|
+
if (value) {
|
|
215
|
+
cond.value.from = value;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
cond.value.from = cond?.defaultValue?.from;
|
|
219
|
+
}
|
|
219
220
|
}
|
|
220
221
|
return;
|
|
221
222
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiting.guard.js","sourceRoot":"","sources":["../../../src/guards/rate-limiting.guard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rate-limiting.guard.js","sourceRoot":"","sources":["../../../src/guards/rate-limiting.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,12 @@ const dayjs_1 = require("dayjs");
|
|
|
5
5
|
class DslService {
|
|
6
6
|
static buildFilter = (query) => {
|
|
7
7
|
return query.reduce((acc, cur) => {
|
|
8
|
-
if (!cur ||
|
|
8
|
+
if (!cur || !cur.label)
|
|
9
9
|
return acc;
|
|
10
|
+
const value = cur.value ?? '';
|
|
10
11
|
return {
|
|
11
12
|
...acc,
|
|
12
|
-
[cur.label]: this.#buildOp(cur.op,
|
|
13
|
+
[cur.label]: this.#buildOp(cur.op, value),
|
|
13
14
|
};
|
|
14
15
|
}, {});
|
|
15
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsl.service.js","sourceRoot":"","sources":["../../../../src/shared/dsl/dsl.service.ts"],"names":[],"mappings":";;;AAAA,iCAA0B;AAI1B,MAAa,UAAU;IACrB,MAAM,CAAC,WAAW,GAAG,CAAC,KAAsB,EAAa,EAAE;QACzD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC/B,
|
|
1
|
+
{"version":3,"file":"dsl.service.js","sourceRoot":"","sources":["../../../../src/shared/dsl/dsl.service.ts"],"names":[],"mappings":";;;AAAA,iCAA0B;AAI1B,MAAa,UAAU;IACrB,MAAM,CAAC,WAAW,GAAG,CAAC,KAAsB,EAAa,EAAE;QACzD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,OAAO,GAAG,CAAC;YAEnC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAE9B,OAAO;gBACL,GAAG,GAAG;gBACN,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;aAC1C,CAAC;QACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,CAAA;IAED,MAAM,CAAC,YAAY,GAAG,CAAC,MAA2B,EAAuB,EAAE;QACzE,MAAM,KAAK,GAAwB,EAAE,CAAC;QAEtC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAE9B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACvC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAC3B,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,SAAS,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC/B,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;YAC5B,CAAC;YAED,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;gBACjB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;YACrC,CAAC;YAED,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChB,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI;oBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;gBACpE,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;oBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,CAAC;YAED,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;gBAClB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChB,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;YACrC,CAAC;YAED,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;gBAClB,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;YACrC,CAAC;YAED,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBACxB,KAAK,CAAC,GAAG,CAAC,GAAG;oBACX,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC;iBACnD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAA;IAED,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAU,EAAE,KAAc,EAAE,EAAE;QAC/C,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,KAAY,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE;oBACd,IAAI,EACD,IAAI,CAAC,IAAwB;wBAC9B,IAAA,eAAK,GAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;oBACvC,EAAE,EAAG,IAAI,CAAC,EAAsB,IAAI,IAAI,IAAI,EAAE;iBAC/C,EAAC,CAAA;QACJ,CAAC;QAED,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,KAAY,CAAC;YAC1B,OAAO;gBACL,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,EAAE,EAAE,IAAI,CAAC,EAAE;iBACZ;aACF,CAAA;QACH,CAAC;QAED,OAAO,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAA;IAChC,CAAC,CAAA;;AAjFH,gCAkFC"}
|