import { PropType, ComponentPublicInstance } from 'vue'; export function noop() {} export const inBrowser = typeof window !== 'undefined'; // unknown type for Vue prop export const UnknownProp = (null as unknown) as PropType; // eslint-disable-next-line export type ComponentInstance = ComponentPublicInstance<{}, any>; export function isDef(val: T): val is NonNullable { return val !== undefined && val !== null; } // eslint-disable-next-line @typescript-eslint/ban-types export function isFunction(val: unknown): val is Function { return typeof val === 'function'; } export function isObject(val: unknown): val is Record { return val !== null && typeof val === 'object'; } export function isPromise(val: unknown): val is Promise { return isObject(val) && isFunction(val.then) && isFunction(val.catch); } export function get(object: any, path: string): any { const keys = path.split('.'); let result = object; keys.forEach((key) => { result = result[key] ?? ''; }); return result; } export function pick(obj: T, keys: ReadonlyArray) { return keys.reduce((ret, key) => { ret[key] = obj[key]; return ret; }, {} as Pick); }