All files / runtime-core/src/compat component.ts

94.44% Statements 34/36
92.85% Branches 13/14
100% Functions 1/1
94.44% Lines 34/36

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 582x                   2x 7259x 7259x 7259x 7259x 155x 155x     7259x   3x         3x 3x 3x 3x 3x     7104x 7104x 183x 7259x     3x 3x     7101x 7101x 2638x 2x 2x 2x 2x 2x 7259x 2x 2x   7099x 7099x  
import { isFunction, isObject } from '@vue/shared'
import type { Component, ComponentInternalInstance } from '../component'
import {
  DeprecationTypes,
  checkCompatEnabled,
  softAssertCompatEnabled,
} from './compatConfig'
import { convertLegacyAsyncComponent } from './componentAsync'
import { convertLegacyFunctionalComponent } from './componentFunctional'
 
export function convertLegacyComponent(
  comp: any,
  instance: ComponentInternalInstance | null,
): Component {
  if (comp.__isBuiltIn) {
    return comp
  }
 
  // 2.x constructor
  if (isFunction(comp) && comp.cid) {
    // #7766
    if (comp.render) {
      // only necessary when compiled from SFC
      comp.options.render = comp.render
    }
    // copy over internal properties set by the SFC compiler
    comp.options.__file = comp.__file
    comp.options.__hmrId = comp.__hmrId
    comp.options.__scopeId = comp.__scopeId
    comp = comp.options
  }
 
  // 2.x async component
  if (
    isFunction(comp) &&
    checkCompatEnabled(DeprecationTypes.COMPONENT_ASYNC, instance, comp)
  ) {
    // since after disabling this, plain functions are still valid usage, do not
    // use softAssert here.
    return convertLegacyAsyncComponent(comp)
  }
 
  // 2.x functional component
  if (
    isObject(comp) &&
    comp.functional &&
    softAssertCompatEnabled(
      DeprecationTypes.COMPONENT_FUNCTIONAL,
      instance,
      comp,
    )
  ) {
    return convertLegacyFunctionalComponent(comp)
  }
 
  return comp
}