11import { textContent } from './utils'
22import type { TriggerOptions } from './createDomEvent'
33import {
4+ ComponentDefineOptions ,
5+ ComponentInjectOptions ,
6+ ComponentInstance ,
47 ComponentInternalInstance ,
58 ComponentOptions ,
9+ ComponentOptionsMixin ,
610 ComponentPublicInstance ,
711 ComputedOptions ,
812 CreateComponentPublicInstance ,
13+ EmitsOptions ,
914 FunctionalComponent ,
1015 MethodOptions ,
16+ SlotsType ,
1117 nextTick
1218} from 'vue'
1319import { createDOMEvent } from './createDomEvent'
@@ -108,16 +114,58 @@ export default abstract class BaseWrapper<ElementType extends Node>
108114
109115 // searching by string without specifying component results in WrapperLike object
110116 findComponent < T extends never > ( selector : string ) : WrapperLike
117+
111118 // Find Component Options aka plain object
112119 findComponent <
113- Props ,
114- RawBindings = any ,
115- D = any ,
116- C extends ComputedOptions = ComputedOptions ,
117- M extends MethodOptions = MethodOptions
120+ Props = { } ,
121+ RawBindings = { } ,
122+ D = { } ,
123+ C extends ComputedOptions = { } ,
124+ M extends MethodOptions = { } ,
125+ Mixin extends ComponentOptionsMixin = ComponentOptionsMixin ,
126+ Extends extends ComponentOptionsMixin = ComponentOptionsMixin ,
127+ E extends EmitsOptions = { } ,
128+ EE extends string = string ,
129+ I extends ComponentInjectOptions = { } ,
130+ II extends string = string ,
131+ S extends SlotsType = { } ,
132+ Options = { }
118133 > (
119- selector : ComponentOptions < Props , RawBindings , D , C , M >
120- ) : VueWrapper < CreateComponentPublicInstance < Props , RawBindings , D , C , M > >
134+ selector : ComponentDefineOptions <
135+ Props ,
136+ RawBindings ,
137+ D ,
138+ C ,
139+ M ,
140+ Mixin ,
141+ Extends ,
142+ E ,
143+ EE ,
144+ I ,
145+ II ,
146+ S ,
147+ Options
148+ >
149+ ) : VueWrapper <
150+ Props extends DefinedComponent
151+ ? ComponentInstance < Props >
152+ : CreateComponentPublicInstance <
153+ Props ,
154+ RawBindings ,
155+ D ,
156+ C ,
157+ M ,
158+ Mixin ,
159+ Extends ,
160+ E ,
161+ Props ,
162+ { } ,
163+ true ,
164+ I ,
165+ S ,
166+ Options
167+ >
168+ >
121169 findComponent < T extends ComponentOptions > (
122170 selector : string
123171 ) : VueWrapper <
@@ -129,17 +177,19 @@ export default abstract class BaseWrapper<ElementType extends Node>
129177 infer M
130178 >
131179 ? CreateComponentPublicInstance < Props , RawBindings , D , C , M >
132- : VueWrapper < CreateComponentPublicInstance >
180+ : CreateComponentPublicInstance
133181 >
134- // searching for component created via defineComponent results in VueWrapper of proper type
135- findComponent < T extends DefinedComponent > (
136- selector : T | Exclude < FindComponentSelector , FunctionalComponent >
137- ) : VueWrapper < InstanceType < T > >
138182 // searching for functional component results in DOMWrapper
139183 findComponent < T extends FunctionalComponent > ( selector : T ) : DOMWrapper < Node >
140184 findComponent < T extends FunctionalComponent > (
141185 selector : string
142186 ) : DOMWrapper < Element >
187+
188+ // searching for component created via defineComponent results in VueWrapper of proper type
189+ findComponent < T extends DefinedComponent > (
190+ selector : T | Exclude < FindComponentSelector , FunctionalComponent >
191+ ) : VueWrapper < ComponentInstance < T > >
192+
143193 // searching by name or ref always results in VueWrapper
144194 findComponent < T extends never > (
145195 selector : NameSelector | RefSelector
@@ -185,7 +235,7 @@ export default abstract class BaseWrapper<ElementType extends Node>
185235 findAllComponents < T extends never > ( selector : string ) : WrapperLike [ ]
186236 findAllComponents < T extends DefinedComponent > (
187237 selector : T | Exclude < FindAllComponentsSelector , FunctionalComponent >
188- ) : VueWrapper < InstanceType < T > > [ ]
238+ ) : VueWrapper < ComponentInstance < T > > [ ]
189239 findAllComponents < T extends FunctionalComponent > (
190240 selector : T
191241 ) : DOMWrapper < Node > [ ]
@@ -292,7 +342,7 @@ export default abstract class BaseWrapper<ElementType extends Node>
292342 getComponent < T extends never > ( selector : string ) : Omit < WrapperLike , 'exists' >
293343 getComponent < T extends DefinedComponent > (
294344 selector : T | Exclude < FindComponentSelector , FunctionalComponent >
295- ) : Omit < VueWrapper < InstanceType < T > > , 'exists' >
345+ ) : Omit < VueWrapper < ComponentInstance < T > > , 'exists' >
296346 // searching for functional component results in DOMWrapper
297347 getComponent < T extends FunctionalComponent > (
298348 selector : T | string
0 commit comments