UNPKG

@apollo/client

Version:

A fully-featured caching GraphQL client.

32 lines (31 loc) 961 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.memoize = memoize; const trie_1 = require("@wry/trie"); const caches_js_1 = require("./caches.cjs"); /** * Naive alternative to `wrap` without any dependency tracking, potentially avoiding resulting memory leaks. */ function memoize(fn, { max }) { const keys = new trie_1.Trie(true); const cache = new caches_js_1.AutoCleanedWeakCache(max); return (...args) => { const cacheKey = keys.lookupArray(args); const cached = cache.get(cacheKey); if (cached) { if (cached.error) { throw cached.error; } return cached.result; } const entry = cache.set(cacheKey, {}); try { return (entry.result = fn(...args)); } catch (error) { entry.error = error; throw error; } }; } //# sourceMappingURL=memoize.cjs.map