import { isArray, isPromise, isFunction, Prettify, UnionToIntersection, extend } from '@vue/shared' import { getCurrentInstance, setCurrentInstance, SetupContext, createSetupContext, unsetCurrentInstance } from './component' import { EmitFn, EmitsOptions, ObjectEmitsOptions } from './componentEmits' import { ComponentOptionsMixin, ComponentOptionsWithoutProps, ComputedOptions, MethodOptions } from './componentOptions' import { ComponentPropsOptions, ComponentObjectPropsOptions, ExtractPropTypes, NormalizedProps, PropOptions } from './componentProps' import { warn } from './warning' import { SlotsType, StrictUnwrapSlotsType } from './componentSlots' import { Ref, ref } from '@vue/reactivity' import { watch } from './apiWatch' // dev only const warnRuntimeUsage = (method: string) => warn( `${method}() is a compiler-hint helper that is only usable inside ` + `