cache 
Cache the result of a function with a single key or a list of keys in nested maps.
WARNING
The cache function is global, meaning that keys are share across all cache calls in different files for the same runtime. Make sure to use a local context variable as the first key to avoid sharing cache between unrelated contexts.
Usage 
js
import { cache } from '@studiometa/js-toolkit/utils';
const keys = [document.body, Symbol('key')];
const callback = () => performance.now();
console.log(cache(keys, callback)); // 100
console.log(cache(keys, callback) === cache(keys, callback)); // true
setTimeout(() => {
  console.log(cache(keys, callback)); // 100
}, 100);
console.log(cache('key', callback)); // 200
console.log(cache('key', callback) === cache('key', callback)); // true
setTimeout(() => {
  console.log(cache('key', callback)); // 200
}, 100);Parameters 
keys(any | Array<any>): a list of keys to be used to cache the result of the callbackcallback(() => any): the callback executed to retrieve the value to cache
Return value 
The value returned by the callback function given as parameter.