// @flow let weakMemoize = function (func: Arg => Return): Arg => Return { // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps let cache: WeakMap = new WeakMap() return arg => { if (cache.has(arg)) { // $FlowFixMe return cache.get(arg) } let ret = func(arg) cache.set(arg, ret) return ret } } export default weakMemoize