@dudousxd/nestjs-filter 1.7.0 → 1.7.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/decorator/filter-for.decorator.d.ts.map +1 -1
- package/dist/decorator/filter-for.decorator.js +5 -0
- package/dist/decorator/filter-for.decorator.js.map +1 -1
- package/dist/decorator/relations.decorator.d.ts.map +1 -1
- package/dist/decorator/relations.decorator.js +25 -9
- package/dist/decorator/relations.decorator.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.7.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`cedbf3c`](https://github.com/DavideCarvalho/nestjs-filter/commit/cedbf3c201c349e692f29e3a9148da96c4bda0ea) - perf: cache immutable ORM metadata and decorator maps — `WeakMap`-cache `getEntityFields`/`getEntityRelations`/`resolveFieldPath` in the MikroORM and TypeORM adapters (previously recomputed 3–6× per request), memoize `getFilterForMap`, and build a reverse index for `resolveRelation`.
|
|
8
|
+
|
|
3
9
|
## 1.7.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-for.decorator.d.ts","sourceRoot":"","sources":["../../src/decorator/filter-for.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;AAE/F,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,mBAAmB,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAmBrF;
|
|
1
|
+
{"version":3,"file":"filter-for.decorator.d.ts","sourceRoot":"","sources":["../../src/decorator/filter-for.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;AAE/F,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,mBAAmB,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAmBrF;AAID,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBnE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAejF"}
|
|
@@ -19,7 +19,11 @@ export function FilterFor(inputKey, opts) {
|
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
+
const filterForMapCache = new WeakMap();
|
|
22
23
|
export function getFilterForMap(target) {
|
|
24
|
+
const cached = filterForMapCache.get(target);
|
|
25
|
+
if (cached)
|
|
26
|
+
return cached;
|
|
23
27
|
const result = new Map();
|
|
24
28
|
let current = target;
|
|
25
29
|
while (current && current !== Function.prototype && current !== Object) {
|
|
@@ -32,6 +36,7 @@ export function getFilterForMap(target) {
|
|
|
32
36
|
}
|
|
33
37
|
current = Object.getPrototypeOf(current);
|
|
34
38
|
}
|
|
39
|
+
filterForMapCache.set(target, result);
|
|
35
40
|
return result;
|
|
36
41
|
}
|
|
37
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-for.decorator.js","sourceRoot":"","sources":["../../src/decorator/filter-for.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAwB7E,MAAM,UAAU,SAAS,CAAC,QAAiB,EAAE,IAAuB;IAClE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,QAAQ,IAAI,UAAU,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;QAChC,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,IAAI,CAAC;YACjE,IAAI,GAAG,EAAkB,CAAwB,CAAC;QACpD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC9B,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE5D,4EAA4E;QAC5E,uEAAuE;QACvE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,EAAE,IAAI,CAAC;gBAC1E,IAAI,GAAG,EAA4B,CAAkC,CAAC;YACxE,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5B,OAAO,CAAC,cAAc,CAAC,wBAAwB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,IAAI,OAAO,GAAkB,MAAM,CAAC;IACpC,OAAO,OAAO,IAAI,OAAO,KAAK,QAAQ,CAAC,SAAS,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvE,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAElD,CAAC;QACd,IAAI,GAAG,EAAE,CAAC;YACR,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;
|
|
1
|
+
{"version":3,"file":"filter-for.decorator.js","sourceRoot":"","sources":["../../src/decorator/filter-for.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.decorator.d.ts","sourceRoot":"","sources":["../../src/decorator/relations.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,cAAc,CAI3D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAExE;
|
|
1
|
+
{"version":3,"file":"relations.decorator.d.ts","sourceRoot":"","sources":["../../src/decorator/relations.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,cAAc,CAI3D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAExE;AA4BD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,SAAS,CAEtC"}
|
|
@@ -23,18 +23,34 @@ export function getRelationsMap(target) {
|
|
|
23
23
|
return Reflect.getMetadata(FILTER_RELATIONS_METADATA, target);
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
26
|
+
* Per-class reverse index: input key → [relationName, RelationConfig].
|
|
27
|
+
* The relations map is fixed at decoration time, so the flattened lookup is
|
|
28
|
+
* computed once on first access and cached.
|
|
28
29
|
*/
|
|
29
|
-
|
|
30
|
+
const reverseIndexCache = new WeakMap();
|
|
31
|
+
function getReverseIndex(target) {
|
|
32
|
+
const cached = reverseIndexCache.get(target);
|
|
33
|
+
if (cached)
|
|
34
|
+
return cached;
|
|
35
|
+
const index = new Map();
|
|
30
36
|
const map = getRelationsMap(target);
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
if (map) {
|
|
38
|
+
for (const [relationName, config] of Object.entries(map)) {
|
|
39
|
+
for (const inputKey of config.keys) {
|
|
40
|
+
// Preserve current scan semantics: first relation declaring the key wins.
|
|
41
|
+
if (!index.has(inputKey))
|
|
42
|
+
index.set(inputKey, [relationName, config]);
|
|
43
|
+
}
|
|
36
44
|
}
|
|
37
45
|
}
|
|
38
|
-
|
|
46
|
+
reverseIndexCache.set(target, index);
|
|
47
|
+
return index;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolves which relation (if any) owns a given input key.
|
|
51
|
+
* Returns [relationName, RelationConfig] or undefined.
|
|
52
|
+
*/
|
|
53
|
+
export function resolveRelation(target, inputKey) {
|
|
54
|
+
return getReverseIndex(target).get(inputKey);
|
|
39
55
|
}
|
|
40
56
|
//# sourceMappingURL=relations.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.decorator.js","sourceRoot":"","sources":["../../src/decorator/relations.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AASzD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CAAC,GAAiB;IACzC,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,OAAO,CAAC,cAAc,CAAC,yBAAyB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,yBAAyB,EAAE,MAAM,CAA6B,CAAC;AAC5F,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"relations.decorator.js","sourceRoot":"","sources":["../../src/decorator/relations.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AASzD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CAAC,GAAiB;IACzC,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,OAAO,CAAC,cAAc,CAAC,yBAAyB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,yBAAyB,EAAE,MAAM,CAA6B,CAAC;AAC5F,CAAC;AAED;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAiD,CAAC;AAEvF,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC1D,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnC,0EAA0E;gBAC1E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,QAAgB;IAEhB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC"}
|