retail-calendar
Version:
A configurable retail calendar
31 lines (30 loc) • 1.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function memoize(func, resolver) {
var memoized = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var key = resolver ? resolver.apply(this, args) : args[0];
var cache = memoized.cache;
if (cache.has(key)) {
return cache.get(key);
}
var result = func.apply(this, args);
memoized.cache = cache.set(key, result) || cache;
return result;
};
memoized.cache = new Map();
return memoized;
}
exports.memoize = memoize;
function createMemoizationKeyFromCalendarOptionsAndYear(retailCalendarOptions, year) {
return [stringifyCalendarOptions(retailCalendarOptions), year].join('_');
}
exports.createMemoizationKeyFromCalendarOptionsAndYear = createMemoizationKeyFromCalendarOptionsAndYear;
function stringifyCalendarOptions(retailCalendarOptions) {
return Object.entries(retailCalendarOptions)
.map(function (e) { return e.join(':'); })
.join('-');
}