@dudousxd/nestjs-filter 1.8.0 → 1.8.1
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/CHANGELOG.md +6 -0
- package/dist/interceptor/apply-filter.interceptor.d.ts +5 -0
- package/dist/interceptor/apply-filter.interceptor.d.ts.map +1 -1
- package/dist/interceptor/apply-filter.interceptor.js +35 -13
- package/dist/interceptor/apply-filter.interceptor.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @dudousxd/nestjs-filter
|
|
2
2
|
|
|
3
|
+
## 1.8.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`daf7ae5`](https://github.com/DavideCarvalho/nestjs-filter/commit/daf7ae5ca8c6a1c82f60e07bec6719c4427ee708) - perf: `ApplyFilterInterceptor` memoizes the `FilterRunner` and adapter resolution after first use instead of resolving them from the DI container on every request. Preserves the no-filter early return and the missing-adapter tolerance (error still thrown only when a filter actually needs the adapter).
|
|
8
|
+
|
|
3
9
|
## 1.8.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -4,6 +4,11 @@ import type { Observable } from 'rxjs';
|
|
|
4
4
|
export declare class ApplyFilterInterceptor implements NestInterceptor {
|
|
5
5
|
private readonly moduleRef;
|
|
6
6
|
constructor(moduleRef: ModuleRef);
|
|
7
|
+
private cachedRunner;
|
|
8
|
+
private adapterResolved;
|
|
9
|
+
private cachedAdapter;
|
|
10
|
+
private getRunner;
|
|
11
|
+
private getAdapter;
|
|
7
12
|
intercept(ctx: ExecutionContext, next: CallHandler): Observable<unknown>;
|
|
8
13
|
private runAll;
|
|
9
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-filter.interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptor/apply-filter.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAErB,KAAK,eAAe,EAErB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAiBvC,qBACa,sBAAuB,YAAW,eAAe;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"apply-filter.interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptor/apply-filter.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAErB,KAAK,eAAe,EAErB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAiBvC,qBACa,sBAAuB,YAAW,eAAe;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAKjD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAA8B;IAEnD,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,UAAU;IAwBlB,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;YAsB1D,MAAM;CAyBrB"}
|
|
@@ -22,20 +22,23 @@ let ApplyFilterInterceptor = class ApplyFilterInterceptor {
|
|
|
22
22
|
constructor(moduleRef) {
|
|
23
23
|
this.moduleRef = moduleRef;
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
.
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
// Lazily-resolved singletons cached after the first request that needs them.
|
|
26
|
+
// The runner and adapter are application-scoped, so resolving them per request
|
|
27
|
+
// is wasteful; we memoize them on first use instead.
|
|
28
|
+
cachedRunner = null;
|
|
29
|
+
adapterResolved = false;
|
|
30
|
+
cachedAdapter = null;
|
|
31
|
+
getRunner() {
|
|
32
|
+
if (this.cachedRunner === null) {
|
|
33
|
+
const runner = this.moduleRef.get(FilterRunner, { strict: false });
|
|
34
|
+
this.cachedRunner = runner;
|
|
35
|
+
return runner;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
return this.cachedRunner;
|
|
38
|
+
}
|
|
39
|
+
getAdapter() {
|
|
40
|
+
if (this.adapterResolved)
|
|
41
|
+
return this.cachedAdapter;
|
|
39
42
|
// Resolve adapter: try each:true to find all providers, pick the non-null one
|
|
40
43
|
let adapter = null;
|
|
41
44
|
try {
|
|
@@ -53,6 +56,25 @@ let ApplyFilterInterceptor = class ApplyFilterInterceptor {
|
|
|
53
56
|
catch {
|
|
54
57
|
adapter = null;
|
|
55
58
|
}
|
|
59
|
+
this.cachedAdapter = adapter;
|
|
60
|
+
this.adapterResolved = true;
|
|
61
|
+
return this.cachedAdapter;
|
|
62
|
+
}
|
|
63
|
+
intercept(ctx, next) {
|
|
64
|
+
const handler = ctx.getHandler();
|
|
65
|
+
const controller = ctx.getClass();
|
|
66
|
+
const entries = getApplyFilterMetadata(controller, handler.name);
|
|
67
|
+
if (entries.length === 0)
|
|
68
|
+
return next.handle();
|
|
69
|
+
const req = ctx
|
|
70
|
+
.switchToHttp()
|
|
71
|
+
.getRequest();
|
|
72
|
+
if (!req[APPLY_FILTER_REQ_KEY]) {
|
|
73
|
+
req[APPLY_FILTER_REQ_KEY] = [];
|
|
74
|
+
}
|
|
75
|
+
const slot = req[APPLY_FILTER_REQ_KEY];
|
|
76
|
+
const runner = this.getRunner();
|
|
77
|
+
const adapter = this.getAdapter();
|
|
56
78
|
return from(this.runAll(entries, slot, req, runner, adapter)).pipe(switchMap(() => next.handle()));
|
|
57
79
|
}
|
|
58
80
|
async runAll(entries, slot, req, runner, adapter) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-filter.interceptor.js","sourceRoot":"","sources":["../../src/interceptor/apply-filter.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAGL,UAAU,GAGX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAEL,sBAAsB,GACvB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG7D,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACJ;IAA7B,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAErD,
|
|
1
|
+
{"version":3,"file":"apply-filter.interceptor.js","sourceRoot":"","sources":["../../src/interceptor/apply-filter.interceptor.ts"],"names":[],"mappings":"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"}
|