UNPKG

eslint-plugin-esm

Version:
17 lines 2.13 kB
/** * Like [lodash.memoize](https://lodash.com/docs/4.17.15#memoize) * Type `Res` must be non-nullable, otherwise it will cause bug. */ export function memoize(fn) { const cache = new Map(); // memory leak return (arg) => { const cachedResult = cache.get(arg); if (cachedResult !== undefined) { return cachedResult; } const result = fn(arg); cache.set(arg, result); return result; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FDckIsRUFBcUI7SUFFckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQVksQ0FBQyxDQUFDLGNBQWM7SUFDakQsT0FBTyxDQUFDLEdBQVEsRUFBRSxFQUFFO1FBQ2xCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG4vKipcbiAqIExpa2UgW2xvZGFzaC5tZW1vaXplXShodHRwczovL2xvZGFzaC5jb20vZG9jcy80LjE3LjE1I21lbW9pemUpXG4gKiBUeXBlIGBSZXNgIG11c3QgYmUgbm9uLW51bGxhYmxlLCBvdGhlcndpc2UgaXQgd2lsbCBjYXVzZSBidWcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZW1vaXplPEFyZywgUmVzIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+KFxuICBmbjogKGFyZzogQXJnKSA9PiBSZXMsXG4pOiAoYXJnOiBBcmcpID0+IFJlcyB7XG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcDxBcmcsIFJlcz4oKTsgLy8gbWVtb3J5IGxlYWtcbiAgcmV0dXJuIChhcmc6IEFyZykgPT4ge1xuICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChhcmcpO1xuICAgIGlmIChjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gZm4oYXJnKTtcbiAgICBjYWNoZS5zZXQoYXJnLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEdldE5vZGU8VCBleHRlbmRzIGtleW9mIFJ1bGUuTm9kZUxpc3RlbmVyPiA9IFBhcmFtZXRlcnM8XG4gIE5vbk51bGxhYmxlPFJ1bGUuTm9kZUxpc3RlbmVyW1RdPlxuPlswXTtcbiJdfQ==