import { isFunction } from "$lib/utils/is.js"; import type { MaybeGetter } from "$lib/types.js"; /** * Extracts the value from a getter or a value. * Optionally, a default value can be provided. */ export function extract( value: MaybeGetter, defaultValue?: D ): D extends undefined | null ? T : Exclude | D { if (isFunction(value)) { const getter = value; const gotten = getter(); // eslint-disable-next-line @typescript-eslint/no-explicit-any return (gotten ?? defaultValue ?? gotten) as any; } // eslint-disable-next-line @typescript-eslint/no-explicit-any return (value ?? defaultValue ?? value) as any; }