Example memoize function
export function memoize<A extends unknown[], R>(fn: (...args: A) => R) {
const cache = new Map<string, R>();
return (...args: A): R => {
let key: string;
try {
key = JSON.stringify(args, (_k, v) => (typeof v === "function" ? v.toString() : v));
} catch {
// Fallback: use toString if serialization fails
key = args.map(String).join("|");
}
if (!cache.has(key)) {
cache.set(key, fn(...args));
}
return cache.get(key)!;
};
}