react-obsidian
Version:
Dependency injection framework for React and React Native applications
19 lines • 889 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.memoizeDescriptor = memoizeDescriptor;
const reflect_1 = require("../../utils/reflect");
/* eslint-disable no-param-reassign */
function memoizeDescriptor(propertyKey, descriptor) {
const originalValue = descriptor.value;
descriptor.value = function value(...args) {
const memoizationTarget = reflect_1.Reflect.getMetadata('isSingleton', descriptor) ? descriptor : this;
const key = `memoized${propertyKey}`;
if (reflect_1.Reflect.hasMetadata(key, memoizationTarget))
return reflect_1.Reflect.getMetadata(key, memoizationTarget);
const result = originalValue.apply(this, args);
reflect_1.Reflect.defineMetadata(key, result, memoizationTarget);
return result;
};
return descriptor;
}
//# sourceMappingURL=MemoizeDescriptor.js.map