{"version":3,"file":"memoize.mjs","sources":["../../src/utils/memoize.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-return */\n\nimport { stringify } from \"@liveblocks/core\";\n\nexport function memoize<T extends (...args: any[]) => any>(fn: T): T {\n  const cache = new Map<string, ReturnType<T>>();\n\n  return ((...args: Parameters<T>): ReturnType<T> => {\n    const key = JSON.stringify(args.map((arg) => stringify(arg)));\n\n    if (cache.has(key)) {\n      return cache.get(key)!;\n    }\n\n    const result = fn(...args) as ReturnType<T>;\n\n    cache.set(key, result);\n\n    return result;\n  }) as T;\n}\n"],"names":[],"mappings":";;AAIO,SAAS,QAA2C,EAAU,EAAA;AACnE,EAAM,MAAA,KAAA,uBAAY,GAA2B,EAAA,CAAA;AAE7C,EAAA,OAAQ,IAAI,IAAuC,KAAA;AACjD,IAAM,MAAA,GAAA,GAAM,IAAK,CAAA,SAAA,CAAU,IAAK,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAA,SAAA,CAAU,GAAG,CAAC,CAAC,CAAA,CAAA;AAE5D,IAAI,IAAA,KAAA,CAAM,GAAI,CAAA,GAAG,CAAG,EAAA;AAClB,MAAO,OAAA,KAAA,CAAM,IAAI,GAAG,CAAA,CAAA;AAAA,KACtB;AAEA,IAAM,MAAA,MAAA,GAAS,EAAG,CAAA,GAAG,IAAI,CAAA,CAAA;AAEzB,IAAM,KAAA,CAAA,GAAA,CAAI,KAAK,MAAM,CAAA,CAAA;AAErB,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,CAAA;AACF;;;;"}