import { has } from "lodash"; import { genUID } from "side-effect-manager"; import type { AutoRefValue, ExtractRawValue, RefValue } from "./typings"; export const plainObjectKeys = Object.keys as (o: T) => Array>; export function isRef(e: unknown): e is RefValue { return Boolean(has(e, "__isRef")); } export function makeRef(v: TValue): RefValue { return { k: genUID(), v, __isRef: true }; } export function makeAutoRef(v: TValue): AutoRefValue { return isRef>(v) ? v : makeRef(v as ExtractRawValue); }