@bitbite/filtered-list
Version:
filter a list of items
39 lines (38 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function hashFn() {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
return params.map(function (param) {
if (typeof param === 'string')
return param;
if (typeof param === 'number')
return String(param);
if (typeof param === 'function')
return param.constructor.name;
if (Array.isArray(param))
return param.toString();
if (typeof param === 'object')
return JSON.stringify(param);
}).join('_');
}
exports.Memoized = (function (store) {
return function (fn, onMemoized) {
return function () {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
var key = hashFn(params);
if (key in store) {
onMemoized && onMemoized(store[key]);
return store[key];
}
;
store[key] = fn.apply(void 0, params);
return store[key];
};
};
})({ /** empty store */});