summaryrefslogtreecommitdiff
path: root/packages/integrations/image/src/utils/execOnce.ts
blob: 97201e54f10cc35a2c967080286d601c38b036dd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
export default function execOnce<T extends (...args: any[]) => ReturnType<T>>(fn: T): T {
	let used = false;
	let result: ReturnType<T>;

	return ((...args: any[]) => {
		if (!used) {
			used = true;
			result = fn(...args);
		}
		return result;
	}) as T;
}