import { watchEffect, shallowRef } from 'vue';
import type { ComputedRef } from 'vue';
export declare type ComputedGetter<T> = (...args: any[]) => T;
export default function eagerComputed<T>(fn: ComputedGetter<T>) {
  const result = shallowRef<T>();
  watchEffect(
    () => {
      result.value = fn();
    },
    {
      flush: 'sync', // needed so updates are immediate.
    },
  );

  return result as any as ComputedRef<T>;
}