export function createProxy<T>(api: any): T {
return new Proxy(api, {
get(target, propKey, receiver) {
if (propKey === 'useQuery') {
return function (...args) {
console.log(`Redirecting method useQuery to query with args:`, args);
return target.query(...args);
};
} else if (typeof target[propKey] === 'function') {
return function (...args) {
console.log(`Calling ${propKey.toString()} with args:`, args);
return Reflect.get(target, propKey, receiver).apply(target, args);
};
} else if (typeof target[propKey] === 'object' && target[propKey] !== null) {
console.log(`Creating proxy for ${propKey.toString()}`);
return createProxy(target[propKey]);
} else {
console.log(`Returning property ${propKey.toString()}`);
return target[propKey];
}
}
});
}
export function createProxy<T>(api: any): T {
return new Proxy(api, {
get(target, propKey, receiver) {
if (propKey === 'useQuery') {
return function (...args) {
console.log(`Redirecting method useQuery to query with args:`, args);
return target.query(...args);
};
} else if (typeof target[propKey] === 'function') {
return function (...args) {
console.log(`Calling ${propKey.toString()} with args:`, args);
return Reflect.get(target, propKey, receiver).apply(target, args);
};
} else if (typeof target[propKey] === 'object' && target[propKey] !== null) {
console.log(`Creating proxy for ${propKey.toString()}`);
return createProxy(target[propKey]);
} else {
console.log(`Returning property ${propKey.toString()}`);
return target[propKey];
}
}
});
}