UNPKG

react-obsidian

Version:

Dependency injection framework for React and React Native applications

34 lines 1.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.modernDecorator = modernDecorator; const ProvidedPropertiesStore_1 = __importDefault(require("../../ProvidedPropertiesStore")); const reflect_1 = require("../../utils/reflect"); function modernDecorator(name, target, context) { context.addInitializer(function initializer() { const mangledProperty = String(context.name); // @ts-ignore this[mangledProperty] = this[mangledProperty].bind(this); ProvidedPropertiesStore_1.default.set(this, mangledProperty, name); }); function getMemoizationTarget(zis) { if (reflect_1.Reflect.getMetadata('isSingleton', target)) { return zis.constructor; } return zis; } function replacementMethod(...args) { const memoizationTarget = getMemoizationTarget(this); const memoizedResult = reflect_1.Reflect.getMetadata(`memoized${name}`, memoizationTarget); if (memoizedResult === undefined) { const result = target.call(this, ...args); reflect_1.Reflect.defineMetadata(`memoized${name}`, result, memoizationTarget); return result; } return memoizedResult; } return replacementMethod; } //# sourceMappingURL=provides.modern.js.map