Skip to content

Commit

Permalink
fix: Fix applyLazyDecorator return when metadataList is empty (#30)
Browse files Browse the repository at this point in the history
* fix: Fix applyLazyDecorator return when metadataList is empty

* fix: Fix Reflection fail caused by invalid target method

* chore: rename methodNames to propertyKeys at applyLazyDecorator

* Update src/auto-aspect-executor.ts

---------

Co-authored-by: 장지훈 <[email protected]>
  • Loading branch information
smilecc and WhiteKiwi authored Dec 20, 2023
1 parent 193b58c commit 09ff7fe
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions src/auto-aspect-executor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,25 +47,32 @@ export class AutoAspectExecutor implements OnModuleInit {
: instanceWrapper.metatype.prototype;

// Use scanFromPrototype for support nestjs 8
const methodNames = this.metadataScanner.scanFromPrototype(
const propertyKeys = this.metadataScanner.scanFromPrototype(
target,
instanceWrapper.isDependencyTreeStatic() ? Object.getPrototypeOf(target) : target,
(name) => name,
);

const metadataKey = this.reflector.get(ASPECT, lazyDecorator.constructor);
// instance에 method names 를 순회하면서 lazyDecorator.wrap을 적용함
for (const methodName of methodNames) {
for (const propertyKey of propertyKeys) {
// the target method is must be object or function
// @see: https://github.com/rbuckton/reflect-metadata/blob/9562d6395cc3901eaafaf8a6ed8bc327111853d5/Reflect.ts#L938
const targetProperty = target[propertyKey];
if (!targetProperty || (typeof targetProperty !== "object" && typeof targetProperty !== "function")) {
continue;
}

const metadataList: AopMetadata[] = this.reflector.get<AopMetadata[]>(
metadataKey,
target[methodName],
targetProperty,
);
if (!metadataList) {
return;
continue;
}

for (const aopMetadata of metadataList) {
this.wrapMethod({ lazyDecorator, aopMetadata, methodName, target });
this.wrapMethod({ lazyDecorator, aopMetadata, methodName: propertyKey, target });
}
}
}
Expand Down

0 comments on commit 09ff7fe

Please sign in to comment.