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 VueCore Instance 5 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  511156e5_528d_6083_42a2_c81f9d137055["resolve-async-component.ts"]
  90a2398a_1498_3263_c62e_0c064dd2c9b3["index"]
  511156e5_528d_6083_42a2_c81f9d137055 --> 90a2398a_1498_3263_c62e_0c064dd2c9b3
  973389ac_8625_30a3_53ce_b1b48fae58c5["vnode"]
  511156e5_528d_6083_42a2_c81f9d137055 --> 973389ac_8625_30a3_53ce_b1b48fae58c5
  b30af6be_9313_348e_8cd5_66005796592e["render"]
  511156e5_528d_6083_42a2_c81f9d137055 --> b30af6be_9313_348e_8cd5_66005796592e
  ba925ef2_b0f4_efe3_c23d_fe293c46b2c1["vnode"]
  511156e5_528d_6083_42a2_c81f9d137055 --> ba925ef2_b0f4_efe3_c23d_fe293c46b2c1
  64c87498_c46a_6944_ab9d_8e45519852a8["component"]
  511156e5_528d_6083_42a2_c81f9d137055 --> 64c87498_c46a_6944_ab9d_8e45519852a8
  style 511156e5_528d_6083_42a2_c81f9d137055 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 VueCore 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: VueCore, 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