From 433a2d35168a97e32f4e4b373666bc899912b8ca Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Fri, 24 Mar 2023 15:16:53 -0400 Subject: [PATCH] *handle property being a getter --- src/index.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/index.ts b/src/index.ts index b72ace8..df4479b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -137,15 +137,24 @@ export const factory = function ( return function (...args: any): T { return new Proxy(new type(...args), { get(target: T, property: string) { - const prop = target[property as keyof T]; + let desc = Object.getOwnPropertyDescriptor( + target?.constructor?.prototype, + property + ); + if (!desc?.get) { + const prop = target[property as keyof T]; - if (typeof prop !== "function") { - return prop; + if (typeof prop !== "function") { + return prop; + } } - return async (...args: any[]): Promise => { await target.loadLibs(module); + if (desc?.get) { + return target[property as keyof T]; + } + return (target[property as keyof T] as Function)(...args); }; },