]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
types: improve type exports
authorEvan You <yyx990803@gmail.com>
Fri, 6 Sep 2019 16:58:31 +0000 (12:58 -0400)
committerEvan You <yyx990803@gmail.com>
Fri, 6 Sep 2019 16:58:31 +0000 (12:58 -0400)
25 files changed:
packages/reactivity/README.md
packages/reactivity/src/effect.ts
packages/reactivity/src/index.ts
packages/runtime-core/README.md
packages/runtime-core/__tests__/directives.spec.ts
packages/runtime-core/src/apiApp.ts
packages/runtime-core/src/apiCreateComponent.ts
packages/runtime-core/src/apiLifecycle.ts
packages/runtime-core/src/apiWatch.ts
packages/runtime-core/src/component.ts
packages/runtime-core/src/componentOptions.ts
packages/runtime-core/src/componentProps.ts
packages/runtime-core/src/componentPublicInstanceProxy.ts [moved from packages/runtime-core/src/componentProxy.ts with 87% similarity]
packages/runtime-core/src/componentRenderUtils.ts
packages/runtime-core/src/componentSlots.ts
packages/runtime-core/src/createRenderer.ts
packages/runtime-core/src/directives.ts
packages/runtime-core/src/errorHandling.ts
packages/runtime-core/src/h.ts
packages/runtime-core/src/index.ts
packages/runtime-core/src/scheduler.ts
packages/runtime-core/src/vnode.ts
packages/runtime-core/src/warning.ts
packages/runtime-dom/README.md
packages/runtime-dom/src/modules/events.ts

index d633eb6f3f764ccdaab6b11b73ee839cb983224f..b8fa70c90977b25bc8eca96a30007f98d43f3b91 100644 (file)
@@ -4,6 +4,8 @@
 
 This package is inlined into Global & Browser ESM builds of user-facing renderers (e.g. `@vue/runtime-dom`), but also published as a package that can be used standalone. The standalone build should not be used alongside a pre-bundled build of a user-facing renderer, as they will have different internal storage for reactivity connections. A user-facing renderer should re-export all APIs from this package.
 
+For full exposed APIs, see `src/index.ts`. You can also run `yarn build reactivity --types` from repo root, which will generate an API report at `temp/reactivity.api.md`.
+
 ## Credits
 
 The implementation of this module is inspired by the following prior art in the JavaScript ecosystem:
index 9c701f3e9e68ba4644ac1d31ae8281be51202096..76ff3f1e6237e29b96dfc521617a829deaaa8462 100644 (file)
@@ -9,23 +9,21 @@ export interface ReactiveEffect {
   raw: Function
   deps: Array<Dep>
   computed?: boolean
-  scheduler?: Scheduler
-  onTrack?: Debugger
-  onTrigger?: Debugger
+  scheduler?: (run: Function) => void
+  onTrack?: (event: DebuggerEvent) => void
+  onTrigger?: (event: DebuggerEvent) => void
   onStop?: () => void
 }
 
 export interface ReactiveEffectOptions {
   lazy?: boolean
   computed?: boolean
-  scheduler?: Scheduler
-  onTrack?: Debugger
-  onTrigger?: Debugger
+  scheduler?: (run: Function) => void
+  onTrack?: (event: DebuggerEvent) => void
+  onTrigger?: (event: DebuggerEvent) => void
   onStop?: () => void
 }
 
-export type Scheduler = (run: () => any) => void
-
 export interface DebuggerEvent {
   effect: ReactiveEffect
   target: any
@@ -33,8 +31,6 @@ export interface DebuggerEvent {
   key: string | symbol | undefined
 }
 
-export type Debugger = (event: DebuggerEvent) => void
-
 export const activeReactiveEffectStack: ReactiveEffect[] = []
 
 export const ITERATE_KEY = Symbol('iterate')
index 60103d4cb4850e20b6f0b7c86345328c0f3110e3..febfac082b8f12b42f94e2944bba96f0623f547f 100644 (file)
@@ -8,7 +8,12 @@ export {
   markReadonly,
   markNonReactive
 } from './reactive'
-export { computed, ComputedRef, WritableComputedOptions } from './computed'
+export {
+  computed,
+  ComputedRef,
+  WritableComputedRef,
+  WritableComputedOptions
+} from './computed'
 export {
   effect,
   stop,
index 58b4e4744edc651cac4c5ff9c63268c768c3c5fa..e36fb1cbf2ccd4fc44fc9e8031498d853b9e4f12 100644 (file)
@@ -2,14 +2,25 @@
 
 > This package is published only for typing and building custom renderers. It is NOT meant to be used in applications.
 
+For full exposed APIs, see `src/index.ts`. You can also run `yarn build runtime-core --types` from repo root, which will generate an API report at `temp/runtime-core.api.md`.
+
+## Building a Custom Renderer
+
 ``` ts
-import { createRenderer, h } from '@vue/runtime-core'
+import { createRenderer, createAppAPI } from '@vue/runtime-core'
 
-const { render } = createRenderer({
-  nodeOps,
-  patchData,
-  teardownVNode
+// low-level render method
+export const render = createRenderer({
+  pathcProp,
+  insert,
+  remove,
+  createElement,
+  // ...
 })
 
-render(h('div'), container)
+export const createApp = createAppAPI(render)
+
+export * from '@vue/runtime-core'
 ```
+
+See `@vue/runtime-dom` for how a DOM-targeting renderer is implemented.
index 586b39e320b85e43cca9b288cb40635fa7262e33..4ce5e577e34401569d841480c32ea0b096cae53f 100644 (file)
@@ -6,11 +6,10 @@ import {
   nodeOps,
   DirectiveHook,
   VNode,
-  ComponentInstance,
   DirectiveBinding,
   nextTick
 } from '@vue/runtime-test'
-import { currentInstance } from '../src/component'
+import { currentInstance, ComponentInternalInstance } from '../src/component'
 
 describe('directives', () => {
   it('should work', async () => {
@@ -99,7 +98,7 @@ describe('directives', () => {
       expect(prevVNode).toBe(null)
     }) as DirectiveHook)
 
-    let _instance: ComponentInstance | null = null
+    let _instance: ComponentInternalInstance | null = null
     let _vnode: VNode | null = null
     let _prevVnode: VNode | null = null
     const Comp = {
index 94a05bb410b4c4485229dd02e8176339e940b6f1..a42c69f2dfbf15fb27eb94f0fd9310b02881fc4a 100644 (file)
@@ -1,6 +1,6 @@
-import { Component, Data, ComponentInstance } from './component'
+import { Component, Data, ComponentInternalInstance } from './component'
 import { ComponentOptions } from './componentOptions'
-import { ComponentRenderProxy } from './componentProxy'
+import { ComponentPublicInstance } from './componentPublicInstanceProxy'
 import { Directive } from './directives'
 import { HostNode, RootRenderFunction } from './createRenderer'
 import { InjectionKey } from './apiInject'
@@ -20,7 +20,7 @@ export interface App {
     rootComponent: Component,
     rootContainer: string | HostNode,
     rootProps?: Data
-  ): ComponentRenderProxy
+  ): ComponentPublicInstance
   provide<T>(key: InjectionKey<T> | string, value: T): void
 }
 
@@ -29,12 +29,12 @@ export interface AppConfig {
   performance: boolean
   errorHandler?: (
     err: Error,
-    instance: ComponentRenderProxy | null,
+    instance: ComponentPublicInstance | null,
     info: string
   ) => void
   warnHandler?: (
     msg: string,
-    instance: ComponentRenderProxy | null,
+    instance: ComponentPublicInstance | null,
     trace: string
   ) => void
 }
@@ -136,7 +136,7 @@ export function createAppAPI(render: RootRenderFunction): () => App {
           vnode.appContext = context
           render(vnode, rootContainer)
           isMounted = true
-          return (vnode.component as ComponentInstance).renderProxy
+          return (vnode.component as ComponentInternalInstance).renderProxy
         } else if (__DEV__) {
           warn(
             `App has already been mounted. Create a new app instance instead.`
index 098452e1e0f5cc1c03f48c0037660c0f5ab63b62..a35ea76628e3b50ea820cf941b94b0e30cd92db6 100644 (file)
@@ -7,7 +7,7 @@ import {
 } from './componentOptions'
 import { SetupContext } from './component'
 import { VNodeChild } from './vnode'
-import { ComponentRenderProxy } from './componentProxy'
+import { ComponentPublicInstance } from './componentPublicInstanceProxy'
 import { ExtractPropTypes } from './componentProps'
 import { isFunction } from '@vue/shared'
 
@@ -29,7 +29,7 @@ export function createComponent<
 >(
   options: ComponentOptionsWithoutProps<Props, RawBindings, D, C, M>
 ): {
-  new (): ComponentRenderProxy<Props, RawBindings, D, C, M>
+  new (): ComponentPublicInstance<Props, RawBindings, D, C, M>
 }
 
 // overload 3: object format with array props declaration
@@ -44,7 +44,7 @@ export function createComponent<
 >(
   options: ComponentOptionsWithArrayProps<PropNames, RawBindings, D, C, M>
 ): {
-  new (): ComponentRenderProxy<
+  new (): ComponentPublicInstance<
     { [key in PropNames]?: unknown },
     RawBindings,
     D,
@@ -65,7 +65,7 @@ export function createComponent<
   options: ComponentOptionsWithProps<PropsOptions, RawBindings, D, C, M>
 ): {
   // for Vetur and TSX support
-  new (): ComponentRenderProxy<
+  new (): ComponentPublicInstance<
     ExtractPropTypes<PropsOptions>,
     RawBindings,
     D,
index d2644b6362070c8a258d4c7539c81dfcf3865167..25bc217475e8860996f561a977ed80de0e0732b4 100644 (file)
@@ -1,10 +1,10 @@
 import {
-  ComponentInstance,
+  ComponentInternalInstance,
   LifecycleHooks,
   currentInstance,
   setCurrentInstance
 } from './component'
-import { ComponentRenderProxy } from './componentProxy'
+import { ComponentPublicInstance } from './componentPublicInstanceProxy'
 import { callWithAsyncErrorHandling, ErrorTypeStrings } from './errorHandling'
 import { warn } from './warning'
 import { capitalize } from '@vue/shared'
@@ -13,7 +13,7 @@ import { pauseTracking, resumeTracking } from '@vue/reactivity'
 function injectHook(
   type: LifecycleHooks,
   hook: Function,
-  target: ComponentInstance | null
+  target: ComponentInternalInstance | null
 ) {
   if (target) {
     ;(target[type] || (target[type] = [])).push((...args: any[]) => {
@@ -43,56 +43,56 @@ function injectHook(
 
 export function onBeforeMount(
   hook: Function,
-  target: ComponentInstance | null = currentInstance
+  target: ComponentInternalInstance | null = currentInstance
 ) {
   injectHook(LifecycleHooks.BEFORE_MOUNT, hook, target)
 }
 
 export function onMounted(
   hook: Function,
-  target: ComponentInstance | null = currentInstance
+  target: ComponentInternalInstance | null = currentInstance
 ) {
   injectHook(LifecycleHooks.MOUNTED, hook, target)
 }
 
 export function onBeforeUpdate(
   hook: Function,
-  target: ComponentInstance | null = currentInstance
+  target: ComponentInternalInstance | null = currentInstance
 ) {
   injectHook(LifecycleHooks.BEFORE_UPDATE, hook, target)
 }
 
 export function onUpdated(
   hook: Function,
-  target: ComponentInstance | null = currentInstance
+  target: ComponentInternalInstance | null = currentInstance
 ) {
   injectHook(LifecycleHooks.UPDATED, hook, target)
 }
 
 export function onBeforeUnmount(
   hook: Function,
-  target: ComponentInstance | null = currentInstance
+  target: ComponentInternalInstance | null = currentInstance
 ) {
   injectHook(LifecycleHooks.BEFORE_UNMOUNT, hook, target)
 }
 
 export function onUnmounted(
   hook: Function,
-  target: ComponentInstance | null = currentInstance
+  target: ComponentInternalInstance | null = currentInstance
 ) {
   injectHook(LifecycleHooks.UNMOUNTED, hook, target)
 }
 
 export function onRenderTriggered(
   hook: Function,
-  target: ComponentInstance | null = currentInstance
+  target: ComponentInternalInstance | null = currentInstance
 ) {
   injectHook(LifecycleHooks.RENDER_TRIGGERED, hook, target)
 }
 
 export function onRenderTracked(
   hook: Function,
-  target: ComponentInstance | null = currentInstance
+  target: ComponentInternalInstance | null = currentInstance
 ) {
   injectHook(LifecycleHooks.RENDER_TRACKED, hook, target)
 }
@@ -100,10 +100,10 @@ export function onRenderTracked(
 export function onErrorCaptured(
   hook: (
     err: Error,
-    instance: ComponentRenderProxy | null,
+    instance: ComponentPublicInstance | null,
     info: string
   ) => boolean | void,
-  target: ComponentInstance | null = currentInstance
+  target: ComponentInternalInstance | null = currentInstance
 ) {
   injectHook(LifecycleHooks.ERROR_CAPTURED, hook, target)
 }
index 3c14d915f7495b446639b11d5be6b6f205da2a83..e2ebd0bdc37c787adbb073797640b3250d773aa3 100644 (file)
@@ -8,9 +8,9 @@ import {
 import { queueJob, queuePostFlushCb } from './scheduler'
 import { EMPTY_OBJ, isObject, isArray, isFunction, isString } from '@vue/shared'
 import { recordEffect } from './apiReactivity'
-import { currentInstance, ComponentInstance } from './component'
+import { currentInstance, ComponentInternalInstance } from './component'
 import {
-  ErrorTypes,
+  ErrorCodes,
   callWithErrorHandling,
   callWithAsyncErrorHandling
 } from './errorHandling'
@@ -93,14 +93,14 @@ function doWatch(
         s =>
           isRef(s)
             ? s.value
-            : callWithErrorHandling(s, instance, ErrorTypes.WATCH_GETTER)
+            : callWithErrorHandling(s, instance, ErrorCodes.WATCH_GETTER)
       )
   } else if (isRef(source)) {
     getter = () => source.value
   } else if (cb) {
     // getter with cb
     getter = () =>
-      callWithErrorHandling(source, instance, ErrorTypes.WATCH_GETTER)
+      callWithErrorHandling(source, instance, ErrorCodes.WATCH_GETTER)
   } else {
     // no cb -> simple effect
     getter = () => {
@@ -110,7 +110,7 @@ function doWatch(
       return callWithErrorHandling(
         source,
         instance,
-        ErrorTypes.WATCH_CALLBACK,
+        ErrorCodes.WATCH_CALLBACK,
         [registerCleanup]
       )
     }
@@ -125,7 +125,7 @@ function doWatch(
   const registerCleanup: CleanupRegistrator = (fn: () => void) => {
     // TODO wrap the cleanup fn for error handling
     cleanup = runner.onStop = () => {
-      callWithErrorHandling(fn, instance, ErrorTypes.WATCH_CLEANUP)
+      callWithErrorHandling(fn, instance, ErrorCodes.WATCH_CLEANUP)
     }
   }
 
@@ -138,7 +138,7 @@ function doWatch(
           if (cleanup) {
             cleanup()
           }
-          callWithAsyncErrorHandling(cb, instance, ErrorTypes.WATCH_CALLBACK, [
+          callWithAsyncErrorHandling(cb, instance, ErrorCodes.WATCH_CALLBACK, [
             newValue,
             oldValue,
             registerCleanup
@@ -190,7 +190,7 @@ function doWatch(
 
 // this.$watch
 export function instanceWatch(
-  this: ComponentInstance,
+  this: ComponentInternalInstance,
   source: string | Function,
   cb: Function,
   options?: WatchOptions
index db0f7237484c5d6ad45f4e20840251f26ec39738..59dc958b43e4e24e08afe1a7a3fbbfe80beaca10 100644 (file)
@@ -1,11 +1,14 @@
 import { VNode, VNodeChild } from './vnode'
 import { ReactiveEffect, reactive, readonly } from '@vue/reactivity'
-import { RenderProxyHandlers, ComponentRenderProxy } from './componentProxy'
+import {
+  PublicInstanceProxyHandlers,
+  ComponentPublicInstance
+} from './componentPublicInstanceProxy'
 import { ComponentPropsOptions } from './componentProps'
 import { Slots } from './componentSlots'
 import { warn } from './warning'
 import {
-  ErrorTypes,
+  ErrorCodes,
   callWithErrorHandling,
   callWithAsyncErrorHandling
 } from './errorHandling'
@@ -59,11 +62,11 @@ export interface SetupContext {
 
 type RenderFunction = () => VNodeChild
 
-export interface ComponentInstance {
+export interface ComponentInternalInstance {
   type: FunctionalComponent | ComponentOptions
-  parent: ComponentInstance | null
+  parent: ComponentInternalInstance | null
   appContext: AppContext
-  root: ComponentInstance
+  root: ComponentInternalInstance
   vnode: VNode
   next: VNode | null
   subTree: VNode
@@ -81,7 +84,7 @@ export interface ComponentInstance {
   props: Data
   attrs: Data
   slots: Slots
-  renderProxy: ComponentRenderProxy | null
+  renderProxy: ComponentPublicInstance | null
   propsProxy: Data | null
   setupContext: SetupContext | null
   refs: Data
@@ -110,8 +113,8 @@ const emptyAppContext = createAppContext()
 
 export function createComponentInstance(
   vnode: VNode,
-  parent: ComponentInstance | null
-): ComponentInstance {
+  parent: ComponentInternalInstance | null
+): ComponentInternalInstance {
   // inherit parent app context - or - if root, adopt from root vnode
   const appContext =
     (parent ? parent.appContext : vnode.appContext) || emptyAppContext
@@ -171,7 +174,7 @@ export function createComponentInstance(
             callWithAsyncErrorHandling(
               handler[i],
               instance,
-              ErrorTypes.COMPONENT_EVENT_HANDLER,
+              ErrorCodes.COMPONENT_EVENT_HANDLER,
               args
             )
           }
@@ -179,7 +182,7 @@ export function createComponentInstance(
           callWithAsyncErrorHandling(
             handler,
             instance,
-            ErrorTypes.COMPONENT_EVENT_HANDLER,
+            ErrorCodes.COMPONENT_EVENT_HANDLER,
             args
           )
         }
@@ -191,20 +194,22 @@ export function createComponentInstance(
   return instance
 }
 
-export let currentInstance: ComponentInstance | null = null
+export let currentInstance: ComponentInternalInstance | null = null
 
-export const getCurrentInstance: () => ComponentInstance | null = () =>
+export const getCurrentInstance: () => ComponentInternalInstance | null = () =>
   currentInstance
 
-export const setCurrentInstance = (instance: ComponentInstance | null) => {
+export const setCurrentInstance = (
+  instance: ComponentInternalInstance | null
+) => {
   currentInstance = instance
 }
 
-export function setupStatefulComponent(instance: ComponentInstance) {
+export function setupStatefulComponent(instance: ComponentInternalInstance) {
   currentInstance = instance
   const Component = instance.type as ComponentOptions
   // 1. create render proxy
-  instance.renderProxy = new Proxy(instance, RenderProxyHandlers) as any
+  instance.renderProxy = new Proxy(instance, PublicInstanceProxyHandlers) as any
   // 2. create props proxy
   // the propsProxy is a reactive AND readonly proxy to the actual props.
   // it will be updated in resolveProps() on updates before render
@@ -217,7 +222,7 @@ export function setupStatefulComponent(instance: ComponentInstance) {
     const setupResult = callWithErrorHandling(
       setup,
       instance,
-      ErrorTypes.SETUP_FUNCTION,
+      ErrorCodes.SETUP_FUNCTION,
       [propsProxy, setupContext]
     )
 
@@ -290,7 +295,7 @@ const SetupProxyHandlers: { [key: string]: ProxyHandler<any> } = {}
   }
 })
 
-function createSetupContext(instance: ComponentInstance): SetupContext {
+function createSetupContext(instance: ComponentInternalInstance): SetupContext {
   const context = {
     // attrs, slots & refs are non-reactive, but they need to always expose
     // the latest values (instance.xxx may get replaced during updates) so we
index 790f1fcfd8ee33246df94ee45eab93813998e1a0..60c2033abd87d980f4707838f55eecd8ead1b6e4 100644 (file)
@@ -1,5 +1,5 @@
 import {
-  ComponentInstance,
+  ComponentInternalInstance,
   Data,
   currentInstance,
   Component,
@@ -33,7 +33,7 @@ import { warn } from './warning'
 import { ComponentPropsOptions, ExtractPropTypes } from './componentProps'
 import { Directive } from './directives'
 import { VNodeChild } from './vnode'
-import { ComponentRenderProxy } from './componentProxy'
+import { ComponentPublicInstance } from './componentPublicInstanceProxy'
 import { currentRenderingInstance } from './componentRenderUtils'
 
 interface ComponentOptionsBase<
@@ -68,7 +68,7 @@ export type ComponentOptionsWithoutProps<
   M extends MethodOptions = {}
 > = ComponentOptionsBase<Props, RawBindings, D, C, M> & {
   props?: undefined
-} & ThisType<ComponentRenderProxy<Props, RawBindings, D, C, M>>
+} & ThisType<ComponentPublicInstance<Props, RawBindings, D, C, M>>
 
 export type ComponentOptionsWithArrayProps<
   PropNames extends string = string,
@@ -79,7 +79,7 @@ export type ComponentOptionsWithArrayProps<
   Props = { [key in PropNames]?: unknown }
 > = ComponentOptionsBase<Props, RawBindings, D, C, M> & {
   props: PropNames[]
-} & ThisType<ComponentRenderProxy<Props, RawBindings, D, C, M>>
+} & ThisType<ComponentPublicInstance<Props, RawBindings, D, C, M>>
 
 export type ComponentOptionsWithProps<
   PropsOptions = ComponentPropsOptions,
@@ -90,7 +90,7 @@ export type ComponentOptionsWithProps<
   Props = ExtractPropTypes<PropsOptions>
 > = ComponentOptionsBase<Props, RawBindings, D, C, M> & {
   props: PropsOptions
-} & ThisType<ComponentRenderProxy<Props, RawBindings, D, C, M>>
+} & ThisType<ComponentPublicInstance<Props, RawBindings, D, C, M>>
 
 export type ComponentOptions =
   | ComponentOptionsWithoutProps
@@ -151,7 +151,7 @@ export interface LegacyOptions<
   // Limitation: we cannot expose RawBindings on the `this` context for data
   // since that leads to some sort of circular inference and breaks ThisType
   // for the entire component.
-  data?: D | ((this: ComponentRenderProxy<Props>) => D)
+  data?: D | ((this: ComponentPublicInstance<Props>) => D)
   computed?: C
   methods?: M
   // TODO watch array
@@ -180,7 +180,7 @@ export interface LegacyOptions<
 }
 
 export function applyOptions(
-  instance: ComponentInstance,
+  instance: ComponentInternalInstance,
   options: ComponentOptions,
   asMixin: boolean = false
 ) {
@@ -379,7 +379,10 @@ function callHookFromMixins(
   }
 }
 
-function applyMixins(instance: ComponentInstance, mixins: ComponentOptions[]) {
+function applyMixins(
+  instance: ComponentInternalInstance,
+  mixins: ComponentOptions[]
+) {
   for (let i = 0; i < mixins.length; i++) {
     applyOptions(instance, mixins[i], true)
   }
index 488c84704cbacc4d54746beaa1471dfe483947c3..e7969bb8579759ae5aab77ab1b865d70ec44a9d4 100644 (file)
@@ -12,14 +12,14 @@ import {
   hasOwn
 } from '@vue/shared'
 import { warn } from './warning'
-import { Data, ComponentInstance } from './component'
+import { Data, ComponentInternalInstance } from './component'
 import { PatchFlags } from './patchFlags'
 
 export type ComponentPropsOptions<P = Data> = {
   [K in keyof P]: Prop<P[K]> | null
 }
 
-type Prop<T> = PropOptions<T> | PropType<T>
+export type Prop<T> = PropOptions<T> | PropType<T>
 
 interface PropOptions<T = any> {
   type?: PropType<T> | true | null
@@ -90,7 +90,7 @@ type NormalizedPropsOptions = Record<string, NormalizedProp>
 //   - else: everything goes in `props`.
 
 export function resolveProps(
-  instance: ComponentInstance,
+  instance: ComponentInternalInstance,
   rawProps: any,
   _options: ComponentPropsOptions | void
 ) {
similarity index 87%
rename from packages/runtime-core/src/componentProxy.ts
rename to packages/runtime-core/src/componentPublicInstanceProxy.ts
index b9580623160c430840105e687193df25b4b1af14..409cf496c793a0cf9056a065a457ea6c239dd0ff 100644 (file)
@@ -1,4 +1,4 @@
-import { ComponentInstance, Data } from './component'
+import { ComponentInternalInstance, Data } from './component'
 import { nextTick } from './scheduler'
 import { instanceWatch } from './apiWatch'
 import { EMPTY_OBJ, hasOwn } from '@vue/shared'
@@ -7,7 +7,7 @@ import { UnwrapRef } from '@vue/reactivity'
 
 // public properties exposed on the proxy, which is used as the render context
 // in templates (as `this` in the render option)
-export type ComponentRenderProxy<
+export type ComponentPublicInstance<
   P = {},
   B = {},
   D = {},
@@ -20,8 +20,8 @@ export type ComponentRenderProxy<
   $attrs: Data
   $refs: Data
   $slots: Data
-  $root: ComponentInstance | null
-  $parent: ComponentInstance | null
+  $root: ComponentInternalInstance | null
+  $parent: ComponentInternalInstance | null
   $emit: (event: string, ...args: unknown[]) => void
 } & P &
   UnwrapRef<B> &
@@ -29,8 +29,8 @@ export type ComponentRenderProxy<
   ExtracComputedReturns<C> &
   M
 
-export const RenderProxyHandlers = {
-  get(target: ComponentInstance, key: string) {
+export const PublicInstanceProxyHandlers = {
+  get(target: ComponentInternalInstance, key: string) {
     const { renderContext, data, props, propsProxy } = target
     if (data !== EMPTY_OBJ && hasOwn(data, key)) {
       return data[key]
@@ -77,7 +77,7 @@ export const RenderProxyHandlers = {
       }
     }
   },
-  set(target: ComponentInstance, key: string, value: any): boolean {
+  set(target: ComponentInternalInstance, key: string, value: any): boolean {
     const { data, renderContext } = target
     if (data !== EMPTY_OBJ && hasOwn(data, key)) {
       data[key] = value
index b988f67df4070d7366c5498c3a80e281f444a480..0534183cd443ea531c5f660ee471c11a004ffcc9 100644 (file)
@@ -1,14 +1,20 @@
-import { ComponentInstance, FunctionalComponent, Data } from './component'
+import {
+  ComponentInternalInstance,
+  FunctionalComponent,
+  Data
+} from './component'
 import { VNode, normalizeVNode, createVNode, Empty } from './vnode'
 import { ShapeFlags } from './shapeFlags'
-import { handleError, ErrorTypes } from './errorHandling'
+import { handleError, ErrorCodes } from './errorHandling'
 import { PatchFlags } from './patchFlags'
 
 // mark the current rendering instance for asset resolution (e.g.
 // resolveComponent, resolveDirective) during render
-export let currentRenderingInstance: ComponentInstance | null = null
+export let currentRenderingInstance: ComponentInternalInstance | null = null
 
-export function renderComponentRoot(instance: ComponentInstance): VNode {
+export function renderComponentRoot(
+  instance: ComponentInternalInstance
+): VNode {
   const {
     type: Component,
     vnode,
@@ -38,7 +44,7 @@ export function renderComponentRoot(instance: ComponentInstance): VNode {
       )
     }
   } catch (err) {
-    handleError(err, instance, ErrorTypes.RENDER_FUNCTION)
+    handleError(err, instance, ErrorCodes.RENDER_FUNCTION)
     result = createVNode(Empty)
   }
   currentRenderingInstance = null
index 2cff5e0b734a23ef4f6897997363cf7127175bd6..ba4cb215237b81e0407edd8c83d5cff07e20e719 100644 (file)
@@ -1,4 +1,4 @@
-import { ComponentInstance, currentInstance } from './component'
+import { ComponentInternalInstance, currentInstance } from './component'
 import { VNode, NormalizedChildren, normalizeVNode, VNodeChild } from './vnode'
 import { isArray, isFunction } from '@vue/shared'
 import { ShapeFlags } from './shapeFlags'
@@ -31,7 +31,7 @@ const normalizeSlot = (key: string, rawSlot: Function): Slot => (
 }
 
 export function resolveSlots(
-  instance: ComponentInstance,
+  instance: ComponentInternalInstance,
   children: NormalizedChildren
 ) {
   let slots: Slots | void
index a70dce625d8658db39c85cfa3546625bbabe2ca6..987f0ac7ecc068ffbc59ffbda64612777f18192b 100644 (file)
@@ -8,7 +8,7 @@ import {
   VNodeChildren
 } from './vnode'
 import {
-  ComponentInstance,
+  ComponentInternalInstance,
   createComponentInstance,
   setupStatefulComponent
 } from './component'
@@ -44,7 +44,7 @@ const prodEffectOptions = {
 }
 
 function createDevEffectOptions(
-  instance: ComponentInstance
+  instance: ComponentInternalInstance
 ): ReactiveEffectOptions {
   return {
     scheduler: queueJob,
@@ -77,10 +77,10 @@ export interface RendererOptions {
     oldValue: any,
     isSVG: boolean,
     prevChildren?: VNode[],
-    parentComponent?: ComponentInstance | null,
+    parentComponent?: ComponentInternalInstance | null,
     unmountChildren?: (
       children: VNode[],
-      parentComponent: ComponentInstance | null
+      parentComponent: ComponentInternalInstance | null
     ) => void
   ): void
   insert(el: HostNode, parent: HostNode, anchor?: HostNode): void
@@ -120,7 +120,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     n2: VNode,
     container: HostNode,
     anchor: HostNode = null,
-    parentComponent: ComponentInstance | null = null,
+    parentComponent: ComponentInternalInstance | null = null,
     isSVG: boolean = false,
     optimized: boolean = false
   ) {
@@ -226,7 +226,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     n2: VNode,
     container: HostNode,
     anchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean,
     optimized: boolean
   ) {
@@ -244,7 +244,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     vnode: VNode,
     container: HostNode,
     anchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean
   ) {
     const tag = vnode.type as string
@@ -283,7 +283,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     children: VNodeChildren,
     container: HostNode,
     anchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean,
     start: number = 0
   ) {
@@ -296,7 +296,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
   function patchElement(
     n1: VNode,
     n2: VNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean,
     optimized: boolean
   ) {
@@ -407,7 +407,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     vnode: VNode,
     oldProps: any,
     newProps: any,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean
   ) {
     if (oldProps !== newProps) {
@@ -453,7 +453,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     n2: VNode,
     container: HostNode,
     anchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean,
     optimized: boolean
   ) {
@@ -490,7 +490,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     n2: VNode,
     container: HostNode,
     anchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean,
     optimized: boolean
   ) {
@@ -552,14 +552,15 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     n2: VNode,
     container: HostNode,
     anchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean,
     optimized: boolean
   ) {
     if (n1 == null) {
       mountComponent(n2, container, anchor, parentComponent, isSVG)
     } else {
-      const instance = (n2.component = n1.component) as ComponentInstance
+      const instance = (n2.component =
+        n1.component) as ComponentInternalInstance
       if (shouldUpdateComponent(n1, n2, optimized)) {
         instance.next = n2
         instance.update()
@@ -573,7 +574,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
         n2.ref,
         n1 && n1.ref,
         parentComponent,
-        (n2.component as ComponentInstance).renderProxy
+        (n2.component as ComponentInternalInstance).renderProxy
       )
     }
   }
@@ -582,10 +583,10 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     initialVNode: VNode,
     container: HostNode,
     anchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean
   ) {
-    const instance: ComponentInstance = (initialVNode.component = createComponentInstance(
+    const instance: ComponentInternalInstance = (initialVNode.component = createComponentInstance(
       initialVNode,
       parentComponent
     ))
@@ -692,7 +693,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     n2: VNode,
     container: HostNode,
     anchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean,
     optimized: boolean = false
   ) {
@@ -776,7 +777,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     c2: VNodeChildren,
     container: HostNode,
     anchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean,
     optimized: boolean
   ) {
@@ -813,7 +814,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     c2: VNodeChildren,
     container: HostNode,
     parentAnchor: HostNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     isSVG: boolean,
     optimized: boolean
   ) {
@@ -1035,7 +1036,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
 
   function unmount(
     vnode: VNode,
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     doRemove?: boolean
   ) {
     const {
@@ -1086,7 +1087,10 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
     }
   }
 
-  function unmountComponent(instance: ComponentInstance, doRemove?: boolean) {
+  function unmountComponent(
+    instance: ComponentInternalInstance,
+    doRemove?: boolean
+  ) {
     const { bum, effects, update, subTree, um } = instance
     // beforeUnmount hook
     if (bum !== null) {
@@ -1107,7 +1111,7 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
 
   function unmountChildren(
     children: VNode[],
-    parentComponent: ComponentInstance | null,
+    parentComponent: ComponentInternalInstance | null,
     doRemove?: boolean,
     start: number = 0
   ) {
@@ -1125,8 +1129,8 @@ export function createRenderer(options: RendererOptions): RootRenderFunction {
   function setRef(
     ref: string | Function | Ref<any>,
     oldRef: string | Function | Ref<any> | null,
-    parent: ComponentInstance,
-    value: HostNode | ComponentInstance | null
+    parent: ComponentInternalInstance,
+    value: HostNode | ComponentInternalInstance | null
   ) {
     const refs = parent.refs === EMPTY_OBJ ? (parent.refs = {}) : parent.refs
     const renderContext = toRaw(parent.renderContext)
index 41a184efb1e10974f6b014676790eb49ba678434..6acf27c4ad11373195b468526696190a93c1c349 100644 (file)
@@ -14,14 +14,14 @@ return applyDirectives(h(comp), [
 import { VNode, cloneVNode } from './vnode'
 import { extend, isArray, isFunction } from '@vue/shared'
 import { warn } from './warning'
-import { ComponentInstance } from './component'
+import { ComponentInternalInstance } from './component'
 import { currentRenderingInstance } from './componentRenderUtils'
-import { callWithAsyncErrorHandling, ErrorTypes } from './errorHandling'
+import { callWithAsyncErrorHandling, ErrorCodes } from './errorHandling'
 import { HostNode } from './createRenderer'
-import { ComponentRenderProxy } from './componentProxy'
+import { ComponentPublicInstance } from './componentPublicInstanceProxy'
 
 export interface DirectiveBinding {
-  instance: ComponentRenderProxy | null
+  instance: ComponentPublicInstance | null
   value?: any
   oldValue?: any
   arg?: string
@@ -50,7 +50,7 @@ const valueCache = new WeakMap<Directive, WeakMap<any, any>>()
 
 function applyDirective(
   props: Record<any, any>,
-  instance: ComponentInstance,
+  instance: ComponentInternalInstance,
   directive: Directive,
   value?: any,
   arg?: string,
@@ -92,7 +92,7 @@ function applyDirective(
 }
 
 // Directive, value, argument, modifiers
-type DirectiveArguments = Array<
+export type DirectiveArguments = Array<
   | [Directive]
   | [Directive, any]
   | [Directive, any, string]
@@ -115,7 +115,7 @@ export function applyDirectives(vnode: VNode, directives: DirectiveArguments) {
 
 export function invokeDirectiveHook(
   hook: Function | Function[],
-  instance: ComponentInstance | null,
+  instance: ComponentInternalInstance | null,
   vnode: VNode,
   prevVNode: VNode | null = null
 ) {
@@ -125,11 +125,11 @@ export function invokeDirectiveHook(
       callWithAsyncErrorHandling(
         hook[i],
         instance,
-        ErrorTypes.DIRECTIVE_HOOK,
+        ErrorCodes.DIRECTIVE_HOOK,
         args
       )
     }
   } else if (isFunction(hook)) {
-    callWithAsyncErrorHandling(hook, instance, ErrorTypes.DIRECTIVE_HOOK, args)
+    callWithAsyncErrorHandling(hook, instance, ErrorCodes.DIRECTIVE_HOOK, args)
   }
 }
index 42cc356dab000fe9566c7f18384aa897e68c38c4..7a614c8527cc6e2d7a18aa1c17830eb3f7e3d8e6 100644 (file)
@@ -1,10 +1,10 @@
 import { VNode } from './vnode'
-import { ComponentInstance, LifecycleHooks } from './component'
+import { ComponentInternalInstance, LifecycleHooks } from './component'
 import { warn, pushWarningContext, popWarningContext } from './warning'
 
 // contexts where user provided function may be executed, in addition to
 // lifecycle hooks.
-export const enum ErrorTypes {
+export const enum ErrorCodes {
   SETUP_FUNCTION = 1,
   RENDER_FUNCTION,
   WATCH_GETTER,
@@ -32,27 +32,27 @@ export const ErrorTypeStrings: Record<number | string, string> = {
   [LifecycleHooks.ERROR_CAPTURED]: 'errorCaptured hook',
   [LifecycleHooks.RENDER_TRACKED]: 'renderTracked hook',
   [LifecycleHooks.RENDER_TRIGGERED]: 'renderTriggered hook',
-  [ErrorTypes.SETUP_FUNCTION]: 'setup function',
-  [ErrorTypes.RENDER_FUNCTION]: 'render function',
-  [ErrorTypes.WATCH_GETTER]: 'watcher getter',
-  [ErrorTypes.WATCH_CALLBACK]: 'watcher callback',
-  [ErrorTypes.WATCH_CLEANUP]: 'watcher cleanup function',
-  [ErrorTypes.NATIVE_EVENT_HANDLER]: 'native event handler',
-  [ErrorTypes.COMPONENT_EVENT_HANDLER]: 'component event handler',
-  [ErrorTypes.DIRECTIVE_HOOK]: 'directive hook',
-  [ErrorTypes.APP_ERROR_HANDLER]: 'app errorHandler',
-  [ErrorTypes.APP_WARN_HANDLER]: 'app warnHandler',
-  [ErrorTypes.SCHEDULER]:
+  [ErrorCodes.SETUP_FUNCTION]: 'setup function',
+  [ErrorCodes.RENDER_FUNCTION]: 'render function',
+  [ErrorCodes.WATCH_GETTER]: 'watcher getter',
+  [ErrorCodes.WATCH_CALLBACK]: 'watcher callback',
+  [ErrorCodes.WATCH_CLEANUP]: 'watcher cleanup function',
+  [ErrorCodes.NATIVE_EVENT_HANDLER]: 'native event handler',
+  [ErrorCodes.COMPONENT_EVENT_HANDLER]: 'component event handler',
+  [ErrorCodes.DIRECTIVE_HOOK]: 'directive hook',
+  [ErrorCodes.APP_ERROR_HANDLER]: 'app errorHandler',
+  [ErrorCodes.APP_WARN_HANDLER]: 'app warnHandler',
+  [ErrorCodes.SCHEDULER]:
     'scheduler flush. This may be a Vue internals bug. ' +
     'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/vue'
 }
 
-type AllErrorTypes = LifecycleHooks | ErrorTypes
+export type ErrorTypes = LifecycleHooks | ErrorCodes
 
 export function callWithErrorHandling(
   fn: Function,
-  instance: ComponentInstance | null,
-  type: AllErrorTypes,
+  instance: ComponentInternalInstance | null,
+  type: ErrorTypes,
   args?: any[]
 ) {
   let res: any
@@ -66,8 +66,8 @@ export function callWithErrorHandling(
 
 export function callWithAsyncErrorHandling(
   fn: Function,
-  instance: ComponentInstance | null,
-  type: AllErrorTypes,
+  instance: ComponentInternalInstance | null,
+  type: ErrorTypes,
   args?: any[]
 ) {
   const res = callWithErrorHandling(fn, instance, type, args)
@@ -81,12 +81,12 @@ export function callWithAsyncErrorHandling(
 
 export function handleError(
   err: Error,
-  instance: ComponentInstance | null,
-  type: AllErrorTypes
+  instance: ComponentInternalInstance | null,
+  type: ErrorTypes
 ) {
   const contextVNode = instance ? instance.vnode : null
   if (instance) {
-    let cur: ComponentInstance | null = instance.parent
+    let cur: ComponentInternalInstance | null = instance.parent
     // the exposed instance is the render proxy to keep it consistent with 2.x
     const exposedInstance = instance.renderProxy
     // in production the hook receives only the error code
@@ -108,7 +108,7 @@ export function handleError(
       callWithErrorHandling(
         appErrorHandler,
         null,
-        ErrorTypes.APP_ERROR_HANDLER,
+        ErrorCodes.APP_ERROR_HANDLER,
         [err, exposedInstance, errorInfo]
       )
       return
@@ -117,7 +117,7 @@ export function handleError(
   logError(err, type, contextVNode)
 }
 
-function logError(err: Error, type: AllErrorTypes, contextVNode: VNode | null) {
+function logError(err: Error, type: ErrorTypes, contextVNode: VNode | null) {
   // default behavior is crash in prod & test, recover in dev.
   // TODO we should probably make this configurable via `createApp`
   if (
index 5ebb485d920f05098bac457d28a917dcb28c0080..fbb43c13d5be2fd51a7ab85c74f862c094edecb9 100644 (file)
@@ -47,7 +47,7 @@ h('div', {}, 'foo') // text
 h('div', null, {})
 **/
 
-interface Props {
+export interface RawProps {
   [key: string]: any
   key?: string | number
   ref?: string | Ref<any> | Function
@@ -57,7 +57,14 @@ interface Props {
   [Symbol.iterator]?: never
 }
 
-type Children = string | number | boolean | VNodeChildren | (() => any)
+export type RawChildren =
+  | string
+  | number
+  | boolean
+  | VNodeChildren
+  | (() => any)
+
+export { RawSlots }
 
 // fake constructor type returned from `createComponent`
 interface Constructor<P = any> {
@@ -68,63 +75,63 @@ interface Constructor<P = any> {
 // manually written render functions.
 
 // element
-export function h(type: string, children?: Children): VNode
+export function h(type: string, children?: RawChildren): VNode
 export function h(
   type: string,
-  props?: Props | null,
-  children?: Children
+  props?: RawProps | null,
+  children?: RawChildren
 ): VNode
 
 // keyed fragment
-export function h(type: typeof Fragment, children?: Children): VNode
+export function h(type: typeof Fragment, children?: RawChildren): VNode
 export function h(
   type: typeof Fragment,
-  props?: (Props & { key?: string | number }) | null,
-  children?: Children
+  props?: (RawProps & { key?: string | number }) | null,
+  children?: RawChildren
 ): VNode
 
 // portal
-export function h(type: typeof Portal, children?: Children): VNode
+export function h(type: typeof Portal, children?: RawChildren): VNode
 export function h(
   type: typeof Portal,
-  props?: (Props & { target: any }) | null,
-  children?: Children
+  props?: (RawProps & { target: any }) | null,
+  children?: RawChildren
 ): VNode
 
 // functional component
-export function h(type: FunctionalComponent, children?: Children): VNode
+export function h(type: FunctionalComponent, children?: RawChildren): VNode
 export function h<P>(
   type: FunctionalComponent<P>,
-  props?: (Props & P) | null,
-  children?: Children | RawSlots
+  props?: (RawProps & P) | null,
+  children?: RawChildren | RawSlots
 ): VNode
 
 // stateful component
-export function h(type: ComponentOptions, children?: Children): VNode
+export function h(type: ComponentOptions, children?: RawChildren): VNode
 export function h<P>(
   type: ComponentOptionsWithoutProps<P>,
-  props?: (Props & P) | null,
-  children?: Children | RawSlots
+  props?: (RawProps & P) | null,
+  children?: RawChildren | RawSlots
 ): VNode
 export function h<P extends string>(
   type: ComponentOptionsWithArrayProps<P>,
   // TODO for now this doesn't really do anything, but it would become useful
   // if we make props required by default
-  props?: (Props & { [key in P]?: any }) | null,
-  children?: Children | RawSlots
+  props?: (RawProps & { [key in P]?: any }) | null,
+  children?: RawChildren | RawSlots
 ): VNode
 export function h<P>(
   type: ComponentOptionsWithProps<P>,
-  props?: (Props & ExtractPropTypes<P>) | null,
-  children?: Children | RawSlots
+  props?: (RawProps & ExtractPropTypes<P>) | null,
+  children?: RawChildren | RawSlots
 ): VNode
 
 // fake constructor type returned by `createComponent`
-export function h(type: Constructor, children?: Children): VNode
+export function h(type: Constructor, children?: RawChildren): VNode
 export function h<P>(
   type: Constructor<P>,
-  props?: (Props & P) | null,
-  children?: Children | RawSlots
+  props?: (RawProps & P) | null,
+  children?: RawChildren | RawSlots
 ): VNode
 
 // Actual implementation
index c5f7d15858b93af970e023810d7869922fb4a23d..46d0406fde3061a40b5fc1f0019cb7267f5c0067 100644 (file)
@@ -43,9 +43,26 @@ export { resolveComponent, resolveDirective } from './componentOptions'
 // Types -----------------------------------------------------------------------
 
 export { App, AppConfig, AppContext, Plugin } from './apiApp'
+export { RawProps, RawChildren, RawSlots } from './h'
 export { VNode, VNodeTypes } from './vnode'
-export { FunctionalComponent, ComponentInstance } from './component'
+export {
+  Component,
+  FunctionalComponent,
+  ComponentInternalInstance
+} from './component'
+export {
+  ComponentOptions,
+  ComponentOptionsWithoutProps,
+  ComponentOptionsWithProps,
+  ComponentOptionsWithArrayProps
+} from './componentOptions'
+export { ComponentPublicInstance } from './componentPublicInstanceProxy'
 export { RendererOptions } from './createRenderer'
 export { Slot, Slots } from './componentSlots'
-export { PropType, ComponentPropsOptions } from './componentProps'
-export { Directive, DirectiveBinding, DirectiveHook } from './directives'
+export { Prop, PropType, ComponentPropsOptions } from './componentProps'
+export {
+  Directive,
+  DirectiveBinding,
+  DirectiveHook,
+  DirectiveArguments
+} from './directives'
index 6f8ccaa9175954c6cc8e1f0716de6599ebea8e56..3a73af95965327bc3facb985962ac07529a7fe39 100644 (file)
@@ -1,4 +1,4 @@
-import { handleError, ErrorTypes } from './errorHandling'
+import { handleError, ErrorCodes } from './errorHandling'
 
 const queue: Function[] = []
 const postFlushCbs: Function[] = []
@@ -72,7 +72,7 @@ function flushJobs(seenJobs?: JobCountMap) {
     try {
       job()
     } catch (err) {
-      handleError(err, null, ErrorTypes.SCHEDULER)
+      handleError(err, null, ErrorCodes.SCHEDULER)
     }
   }
   flushPostFlushCbs()
index 2bee91c109abd1f7bbe0b67f137db5f1bd2f81d1..f81533e75527d9c88db42305c8dff21aa91f89c6 100644 (file)
@@ -6,7 +6,7 @@ import {
   EMPTY_ARR,
   extend
 } from '@vue/shared'
-import { ComponentInstance, Data, SetupProxySymbol } from './component'
+import { ComponentInternalInstance, Data, SetupProxySymbol } from './component'
 import { HostNode } from './createRenderer'
 import { RawSlots } from './componentSlots'
 import { PatchFlags } from './patchFlags'
@@ -40,7 +40,7 @@ export interface VNode {
   key: string | number | null
   ref: string | Function | null
   children: NormalizedChildren
-  component: ComponentInstance | null
+  component: ComponentInternalInstance | null
 
   // DOM
   el: HostNode | null
index 138b565b06d9630f47316a99d88c47754513e243..24e6d9c72d4b6fe64b1310dfebde320addc300bb 100644 (file)
@@ -1,5 +1,5 @@
 import { VNode } from './vnode'
-import { Data, ComponentInstance } from './component'
+import { Data, ComponentInternalInstance } from './component'
 import { isString } from '@vue/shared'
 import { toRaw } from '@vue/reactivity'
 
@@ -77,7 +77,7 @@ function getComponentTrace(): ComponentTraceStack {
         recurseCount: 0
       })
     }
-    const parentInstance: ComponentInstance | null = (currentVNode.component as ComponentInstance)
+    const parentInstance: ComponentInternalInstance | null = (currentVNode.component as ComponentInternalInstance)
       .parent
     currentVNode = parentInstance && parentInstance.vnode
   }
@@ -108,7 +108,9 @@ function formatTraceEntry(
   const open = padding + `<${formatComponentName(vnode)}`
   const close = `>` + postfix
   const rootLabel =
-    (vnode.component as ComponentInstance).parent == null ? `(Root)` : ``
+    (vnode.component as ComponentInternalInstance).parent == null
+      ? `(Root)`
+      : ``
   return vnode.props
     ? [open, ...formatProps(vnode.props), close, rootLabel]
     : [open + close, rootLabel]
index e351b743e759abdffcde40ab912f61725de1505e..07cbf6128dbf37c7f616ff60f047958e80737162 100644 (file)
@@ -1,21 +1,13 @@
 # @vue/runtime-dom
 
 ``` js
-import { h, render, Component } from '@vue/runtime-dom'
+import { h, createApp } from '@vue/runtime-dom'
 
-class App extends Component {
-  data () {
-    return {
-      msg: 'Hello World!'
-    }
-  }
-  render () {
-    return h('div', this.msg)
+const RootComponent = {
+  render() {
+    return h('div', 'hello world')
   }
 }
 
-render(
-  h(App),
-  document.getElementById('app')
-)
+createApp().mount(RootComponent, '#app')
 ```
index d6663fd5373871832219cedca64677b2e33cb539..f283b9922a3016a23172afdad3f18f787b87368c 100644 (file)
@@ -1,9 +1,9 @@
 import { isArray } from '@vue/shared'
 import {
-  ComponentInstance,
+  ComponentInternalInstance,
   callWithAsyncErrorHandling
 } from '@vue/runtime-core'
-import { ErrorTypes } from 'packages/runtime-core/src/errorHandling'
+import { ErrorCodes } from 'packages/runtime-core/src/errorHandling'
 
 interface Invoker extends Function {
   value: EventValue
@@ -45,7 +45,7 @@ export function patchEvent(
   name: string,
   prevValue: EventValue | null,
   nextValue: EventValue | null,
-  instance: ComponentInstance | null
+  instance: ComponentInternalInstance | null
 ) {
   const invoker = prevValue && prevValue.invoker
   if (nextValue) {
@@ -62,7 +62,7 @@ export function patchEvent(
   }
 }
 
-function createInvoker(value: any, instance: ComponentInstance | null) {
+function createInvoker(value: any, instance: ComponentInternalInstance | null) {
   const invoker = ((e: Event) => {
     // async edge case #6566: inner click event triggers patch, event handler
     // attached to outer element during patch, and triggered again. This
@@ -77,7 +77,7 @@ function createInvoker(value: any, instance: ComponentInstance | null) {
           callWithAsyncErrorHandling(
             value[i],
             instance,
-            ErrorTypes.NATIVE_EVENT_HANDLER,
+            ErrorCodes.NATIVE_EVENT_HANDLER,
             args
           )
         }
@@ -85,7 +85,7 @@ function createInvoker(value: any, instance: ComponentInstance | null) {
         callWithAsyncErrorHandling(
           value,
           instance,
-          ErrorTypes.NATIVE_EVENT_HANDLER,
+          ErrorCodes.NATIVE_EVENT_HANDLER,
           args
         )
       }