| /** | |
| * @template T | |
| * @param {() => T} fn | |
| */ | |
| export function once(fn) { | |
| let done = false; | |
| /** @type T */ | |
| let result; | |
| return () => { | |
| if (done) return result; | |
| done = true; | |
| return (result = fn()); | |
| }; | |
| } | |
| /** | |
| * @template T | |
| * @param {() => T} fn | |
| */ | |
| export function once(fn) { | |
| let done = false; | |
| /** @type T */ | |
| let result; | |
| return () => { | |
| if (done) return result; | |
| done = true; | |
| return (result = fn()); | |
| }; | |
| } | |