{"version":3,"file":"memoize.cjs","sources":["../../src/utils/memoize.ts"],"sourcesContent":["import { stableStringify } from \"@liveblocks/core\";\n\nexport function memoize<TArgs extends unknown[], TReturn>(\n  fn: (...args: TArgs) => TReturn\n): (...args: TArgs) => TReturn {\n  const cache = new Map<string, TReturn>();\n\n  return (...args: TArgs): TReturn => {\n    const key = JSON.stringify(args.map((arg) => stableStringify(arg)));\n    const cached = cache.get(key);\n\n    if (cached !== undefined) {\n      return cached;\n    }\n\n    const result = fn(...args);\n    cache.set(key, result);\n\n    return result;\n  };\n}\n"],"names":["stableStringify"],"mappings":";;;;AAEO,SAAS,QACd,EAC6B,EAAA;AAC7B,EAAM,MAAA,KAAA,uBAAY,GAAqB,EAAA,CAAA;AAEvC,EAAA,OAAO,IAAI,IAAyB,KAAA;AAClC,IAAM,MAAA,GAAA,GAAM,IAAK,CAAA,SAAA,CAAU,IAAK,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAAA,oBAAA,CAAgB,GAAG,CAAC,CAAC,CAAA,CAAA;AAClE,IAAM,MAAA,MAAA,GAAS,KAAM,CAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAE5B,IAAA,IAAI,WAAW,KAAW,CAAA,EAAA;AACxB,MAAO,OAAA,MAAA,CAAA;AAAA,KACT;AAEA,IAAM,MAAA,MAAA,GAAS,EAAG,CAAA,GAAG,IAAI,CAAA,CAAA;AACzB,IAAM,KAAA,CAAA,GAAA,CAAI,KAAK,MAAM,CAAA,CAAA;AAErB,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,CAAA;AACF;;;;"}