proxify-method
Version:
Project for flexible extension of the existing functionality
46 lines • 1.59 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.proxifySync = void 0;
function proxifySync(result, chainMehod, fromResult = false) {
let proxifiedResult = result;
const proxed = new Proxy(result, {
get(_t, p) {
if (p === 'toJSON') {
return function () {
return proxifiedResult;
};
}
if (proxifiedResult[p] && (typeof proxifiedResult[p]).includes('function')) {
return function (...args) {
return proxifiedResult[p].call(proxifiedResult, ...args);
};
}
else if (chainMehod[p]) {
return function (...args) {
args.push(proxifiedResult);
const result = chainMehod[p](...args);
if (fromResult) {
proxifiedResult = result;
}
return proxed;
};
}
else if (proxifiedResult[p]) {
// proxy cnain end
return proxifiedResult[p];
}
},
getPrototypeOf(_t) {
return Object.getPrototypeOf(proxifiedResult);
},
ownKeys(_t) {
return Object.getOwnPropertyNames(proxifiedResult);
},
getOwnPropertyDescriptor(_t, p) {
return Object.getOwnPropertyDescriptor(proxifiedResult, p);
}
});
return proxed;
}
exports.proxifySync = proxifySync;
//# sourceMappingURL=sync.proxify.js.map
;