@@ -31,7 +31,10 @@ import type { Data } from '@vue/shared'
31
31
export type Component = FunctionalComponent | ObjectComponent
32
32
33
33
export type SetupFn = ( props : any , ctx : SetupContext ) => Block | Data | void
34
- export type FunctionalComponent = SetupFn & Omit < ObjectComponent , 'setup' >
34
+ export type FunctionalComponent = SetupFn &
35
+ Omit < ObjectComponent , 'setup' > & {
36
+ displayName ?: string
37
+ }
35
38
36
39
export type SetupContext < E = EmitsOptions > = E extends any
37
40
? {
@@ -96,15 +99,46 @@ export function createSetupContext(
96
99
}
97
100
}
98
101
99
- export interface ObjectComponent {
100
- props ?: ComponentPropsOptions
102
+ export interface ObjectComponent extends ComponentInternalOptions {
103
+ setup ?: SetupFn
101
104
inheritAttrs ?: boolean
105
+ props ?: ComponentPropsOptions
102
106
emits ?: EmitsOptions
103
- setup ?: SetupFn
104
107
render ?( ctx : any ) : Block
108
+
109
+ name ?: string
105
110
vapor ?: boolean
106
111
}
107
112
113
+ // Note: can't mark this whole interface internal because some public interfaces
114
+ // extend it.
115
+ export interface ComponentInternalOptions {
116
+ /**
117
+ * @internal
118
+ */
119
+ __scopeId ?: string
120
+ /**
121
+ * @internal
122
+ */
123
+ __cssModules ?: Data
124
+ /**
125
+ * @internal
126
+ */
127
+ __hmrId ?: string
128
+ /**
129
+ * Compat build only, for bailing out of certain compatibility behavior
130
+ */
131
+ __isBuiltIn ?: boolean
132
+ /**
133
+ * This one should be exposed so that devtools can make use of it
134
+ */
135
+ __file ?: string
136
+ /**
137
+ * name inferred from filename
138
+ */
139
+ __name ?: string
140
+ }
141
+
108
142
type LifecycleHook < TFn = Function > = TFn [ ] | null
109
143
110
144
export const componentKey = Symbol ( __DEV__ ? `componentKey` : `` )
@@ -121,7 +155,7 @@ export interface ComponentInternalInstance {
121
155
122
156
provides : Data
123
157
scope : EffectScope
124
- component : FunctionalComponent | ObjectComponent
158
+ component : Component
125
159
comps : Set < ComponentInternalInstance >
126
160
dirs : Map < Node , DirectiveBinding [ ] >
127
161
0 commit comments