/** * This module is responsible for producing the ComponentDef object that is always * accessible via `vm.def`. This is lazily created during the creation of the first * instance of a component class, and shared across all instances. * * This structure can be used to synthetically create proxies, and understand the * shape of a component. It is also used internally to apply extra optimizations. */ import { RenderMode } from '../framework/vm'; import { LightningElement } from './base-lightning-element'; import type { HTMLElementConstructor } from './base-bridge-element'; import type { PropType } from './decorators/register'; import type { LightningElementConstructor } from './base-lightning-element'; import type { Template } from './template'; import type { ShadowSupportMode } from '../framework/vm'; export interface ComponentDef { name: string; wire: PropertyDescriptorMap | undefined; props: PropertyDescriptorMap; propsConfig: Record; methods: PropertyDescriptorMap; template: Template; renderMode: RenderMode; shadowSupportMode: ShadowSupportMode; formAssociated: boolean | undefined; ctor: LightningElementConstructor; bridge: HTMLElementConstructor; connectedCallback?: LightningElement['connectedCallback']; disconnectedCallback?: LightningElement['disconnectedCallback']; renderedCallback?: LightningElement['renderedCallback']; errorCallback?: LightningElement['errorCallback']; formAssociatedCallback?: LightningElement['formAssociatedCallback']; formResetCallback?: LightningElement['formResetCallback']; formDisabledCallback?: LightningElement['formDisabledCallback']; formStateRestoreCallback?: LightningElement['formStateRestoreCallback']; render: LightningElement['render']; } /** * EXPERIMENTAL: This function allows for the identification of LWC constructors. This API is * subject to change or being removed. * @param ctor */ export declare function isComponentConstructor(ctor: unknown): ctor is LightningElementConstructor; export declare function getComponentInternalDef(Ctor: unknown): ComponentDef; export declare function getComponentHtmlPrototype(Ctor: unknown): HTMLElementConstructor; interface PropDef { config: number; type: 'any'; attr: string; } type PublicMethod = (...args: any[]) => any; interface PublicComponentDef { name: string; props: Record; methods: Record; ctor: LightningElementConstructor; } /** * EXPERIMENTAL: This function allows for the collection of internal component metadata. This API is * subject to change or being removed. * @param Ctor */ export declare function getComponentDef(Ctor: any): PublicComponentDef; export {}; //# sourceMappingURL=def.d.ts.map