export default function execOnce ReturnType>(fn: T): T { let used = false; let result: ReturnType; return ((...args: any[]) => { if (!used) { used = true; result = fn(...args); } return result; }) as T; }