xref: /expo/packages/@expo/cli/src/utils/fn.ts (revision 4bcb0d98)
1/** `lodash.memoize` */
2export function memoize<T extends (...args: any[]) => any>(fn: T): T {
3  const cache: { [key: string]: any } = {};
4  return ((...args: any[]) => {
5    const key = JSON.stringify(args);
6    if (cache[key]) {
7      return cache[key];
8    }
9    const result = fn(...args);
10    cache[key] = result;
11    return result;
12  }) as any;
13}
14