UNPKG

ts-ioc-container

Version:

Fast, lightweight TypeScript dependency injection container with a clean API, scoped lifecycles, decorators, tokens, hooks, lazy injection, customizable providers, and no global container objects.

21 lines (20 loc) 641 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.once = void 0; const once = ({ onRepeat } = {}) => (target, propertyKey, descriptor) => { const originalMethod = descriptor.value; const cacheMap = new WeakMap(); let index = 0; descriptor.value = function (...args) { index++; if (cacheMap.has(this)) { onRepeat?.({ index: index - 1, args }); return cacheMap.get(this); } const result = originalMethod.apply(this, args); cacheMap.set(this, result); return result; }; return descriptor; }; exports.once = once;