/**
* Memoizes the provided one-argument function.
*
* @internal
*/
export function memoize1<A1 extends object, R>(
fn: (a1: A1) => R,
): (a1: A1) => R {
let cache0: WeakMap<A1, R>;
return function memoized(a1) {
cache0 ??= new WeakMap();
let fnResult = cache0.get(a1);
if (fnResult === undefined) {
fnResult = fn(a1);
cache0.set(a1, fnResult);
}
return fnResult;
};
}