UNPKG

memoize-one

Version:

A memoization library which only remembers the latest invocation

39 lines (31 loc) 1.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (resultFn) { var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : simpleIsEqual; var lastThis = void 0; var lastArgs = []; var lastResult = void 0; var calledOnce = false; var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) { return isEqual(newArg, lastArgs[index]); }; // breaking cache when context (this) or arguments change return function () { for (var _len = arguments.length, newArgs = Array(_len), _key = 0; _key < _len; _key++) { newArgs[_key] = arguments[_key]; } if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) { return lastResult; } calledOnce = true; lastThis = this; lastArgs = newArgs; lastResult = resultFn.apply(this, newArgs); return lastResult; }; }; var simpleIsEqual = function simpleIsEqual(a, b) { return a === b; };