Home / File/ resolve-async-component.ts — vue Source File

resolve-async-component.ts — vue Source File

Architecture documentation for resolve-async-component.ts, a typescript file in the vue codebase. 5 imports, 0 dependents.

File typescript CoreRuntime Instance 5 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  09295df1_b45f_f0ad_013e_ae62374b3068["resolve-async-component.ts"]
  02e43f4a_da65_7acd_5a98_0f017554a159["index"]
  09295df1_b45f_f0ad_013e_ae62374b3068 --> 02e43f4a_da65_7acd_5a98_0f017554a159
  f6868225_acf7_afdc_ebd3_15704ddb6566["vnode"]
  09295df1_b45f_f0ad_013e_ae62374b3068 --> f6868225_acf7_afdc_ebd3_15704ddb6566
  bc678658_2cac_d008_2877_1b29fd284f7d["render"]
  09295df1_b45f_f0ad_013e_ae62374b3068 --> bc678658_2cac_d008_2877_1b29fd284f7d
  81ed4f13_7d68_6e21_7425_cf978f68576f["vnode"]
  09295df1_b45f_f0ad_013e_ae62374b3068 --> 81ed4f13_7d68_6e21_7425_cf978f68576f
  907f4994_ea28_43b1_7976_0db9f0e97637["component"]
  09295df1_b45f_f0ad_013e_ae62374b3068 --> 907f4994_ea28_43b1_7976_0db9f0e97637
  style 09295df1_b45f_f0ad_013e_ae62374b3068 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import {
  warn,
  once,
  isDef,
  isUndef,
  isTrue,
  isObject,
  hasSymbol,
  isPromise,
  remove
} from 'core/util/index'

import VNode, { createEmptyVNode } from 'core/vdom/vnode'
import { currentRenderingInstance } from 'core/instance/render'
import type { VNodeData } from 'types/vnode'
import type { Component } from 'types/component'

function ensureCtor(comp: any, base) {
  if (comp.__esModule || (hasSymbol && comp[Symbol.toStringTag] === 'Module')) {
    comp = comp.default
  }
  return isObject(comp) ? base.extend(comp) : comp
}

export function createAsyncPlaceholder(
  factory: Function,
  data: VNodeData | undefined,
  context: Component,
  children: Array<VNode> | undefined,
  tag?: string
): VNode {
  const node = createEmptyVNode()
  node.asyncFactory = factory
  node.asyncMeta = { data, context, children, tag }
  return node
}

export function resolveAsyncComponent(
  factory: { (...args: any[]): any; [keye: string]: any },
  baseCtor: typeof Component
): typeof Component | void {
  if (isTrue(factory.error) && isDef(factory.errorComp)) {
    return factory.errorComp
  }

  if (isDef(factory.resolved)) {
    return factory.resolved
  }

  const owner = currentRenderingInstance
  if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
    // already pending
    factory.owners.push(owner)
  }

  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
    return factory.loadingComp
  }

  if (owner && !isDef(factory.owners)) {
// ... (98 more lines)

Domain

Subdomains

Dependencies

  • component
  • index
  • render
  • vnode
  • vnode

Frequently Asked Questions

What does resolve-async-component.ts do?
resolve-async-component.ts is a source file in the vue codebase, written in typescript. It belongs to the CoreRuntime domain, Instance subdomain.
What functions are defined in resolve-async-component.ts?
resolve-async-component.ts defines 3 function(s): createAsyncPlaceholder, ensureCtor, resolveAsyncComponent.
What does resolve-async-component.ts depend on?
resolve-async-component.ts imports 5 module(s): component, index, render, vnode, vnode.
Where is resolve-async-component.ts in the architecture?
resolve-async-component.ts is located at src/core/vdom/helpers/resolve-async-component.ts (domain: CoreRuntime, subdomain: Instance, directory: src/core/vdom/helpers).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free