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

100% Statements 14/14
100% Branches 11/11
100% Functions 1/1
100% Lines 14/14

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 4984x   84x         84x 84x   84x       4682x 49x       4633x 3x       4633x           3x       4630x                 2x     4628x    
import { isFunction, isObject } from '@vue/shared'
import { Component, ComponentInternalInstance } from '../component'
import {
  checkCompatEnabled,
  DeprecationTypes,
  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) {
    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
}