renovate/lib/util/memoize.ts

18 lines
287 B
TypeScript

interface Result<T = unknown> {
res: T;
}
export function memoize<T = unknown>(callback: () => T): () => T {
let memo: null | Result<T> = null;
return (): T => {
if (memo) {
return memo.res;
}
const res = callback();
memo = { res };
return res;
};
}