{"version":3,"file":"memoizeObject.cjs","sources":["../../../../../packages/engine-http/src/utils/memoizeObject.ts"],"sourcesContent":["\nexport const createMemoizer = <T extends object>(canonicalizeValue: (value: T) => string) => {\n\tconst cache = new Map<string, WeakRef<T>>()\n\tconst canonicalValueCache = new WeakMap<T, string>()\n\n\tconst finalizer = new FinalizationRegistry<string>(key => {\n\t\tcache.delete(key)\n\t})\n\n\treturn (value: T): T => {\n\t\tif (typeof value !== 'object' || value === null) {\n\t\t\tthrow new TypeError('Value must be a non-null object')\n\t\t}\n\t\tlet key = canonicalValueCache.get(value)\n\t\tif (!key) {\n\t\t\tkey = canonicalizeValue(value)\n\t\t\tcanonicalValueCache.set(value, key)\n\t\t}\n\n\t\tconst entry = cache.get(key)\n\t\tif (entry) {\n\t\t\tconst obj = entry.deref()\n\t\t\tif (obj !== undefined) {\n\t\t\t\treturn obj as T\n\t\t\t}\n\t\t}\n\n\t\tconst stableObj = value\n\t\tconst weakRef = new WeakRef(stableObj)\n\n\t\tfinalizer.register(stableObj, key)\n\n\t\tcache.set(key, weakRef)\n\n\t\treturn stableObj\n\t}\n\n}\n"],"names":[],"mappings":";;AACa,MAAA,iBAAiB,CAAmB,sBAA4C;AACtF,QAAA,4BAAY,IAAwB;AACpC,QAAA,0CAA0B,QAAmB;AAE7C,QAAA,YAAY,IAAI,qBAA6B,CAAO,QAAA;AACzD,UAAM,OAAO,GAAG;AAAA,EAAA,CAChB;AAED,SAAO,CAAC,UAAgB;AACvB,QAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC1C,YAAA,IAAI,UAAU,iCAAiC;AAAA,IAAA;AAElD,QAAA,MAAM,oBAAoB,IAAI,KAAK;AACvC,QAAI,CAAC,KAAK;AACT,YAAM,kBAAkB,KAAK;AACT,0BAAA,IAAI,OAAO,GAAG;AAAA,IAAA;AAG7B,UAAA,QAAQ,MAAM,IAAI,GAAG;AAC3B,QAAI,OAAO;AACJ,YAAA,MAAM,MAAM,MAAM;AACxB,UAAI,QAAQ,QAAW;AACf,eAAA;AAAA,MAAA;AAAA,IACR;AAGD,UAAM,YAAY;AACZ,UAAA,UAAU,IAAI,QAAQ,SAAS;AAE3B,cAAA,SAAS,WAAW,GAAG;AAE3B,UAAA,IAAI,KAAK,OAAO;AAEf,WAAA;AAAA,EACR;AAED;;"}