FrontPastel/node_modules/@emotion/weak-memoize/src/index.js

17 lines
418 B
JavaScript

// @flow
let weakMemoize = function <Arg, Return>(func: Arg => Return): Arg => Return {
// $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps
let cache: WeakMap<Arg, Return> = 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