@@ -114,7 +114,7 @@ export interface Viewport {
114114 aspect : number
115115}
116116
117- /** Possible camera types . */
117+ /** Possible camera kinds . */
118118export type CameraKind = PerspectiveCamera | OrthographicCamera
119119
120120export type Loader < TSource , TResult extends object > = {
@@ -318,7 +318,6 @@ export interface PluginFn {
318318 methods : ( element : T extends readonly Constructor < infer U > [ ] ? U : never ) => Methods ,
319319 ) : Plugin < {
320320 ( element : T extends readonly Constructor < infer U > [ ] ? U : never ) : Methods
321- ( element : any ) : { }
322321 } >
323322
324323 // No setup - direct usage with two arguments (type guard)
@@ -327,7 +326,6 @@ export interface PluginFn {
327326 methods : ( element : T ) => Methods ,
328327 ) : Plugin < {
329328 ( element : T ) : Methods
330- ( element : any ) : { }
331329 } >
332330
333331 // Setup function
@@ -349,7 +347,6 @@ export interface PluginFn {
349347 ) => Methods ,
350348 ) : Plugin < {
351349 ( element : T extends readonly Constructor < infer U > [ ] ? U : never ) : Methods
352- ( element : any ) : { }
353350 } >
354351
355352 // With setup - two arguments (type guard)
@@ -358,7 +355,6 @@ export interface PluginFn {
358355 methods : ( element : T , context : TSetupContext ) => Methods ,
359356 ) : Plugin < {
360357 ( element : T ) : Methods
361- ( element : any ) : { }
362358 } >
363359 }
364360 }
@@ -370,81 +366,10 @@ export type InferPluginProps<TPlugins extends Plugin[]> = Merge<{
370366 : never
371367} >
372368
373- /**
374- * Helper type to resolve overloaded function returns
375- * Matches overloads from most specific to least specific
376- */
377- type ResolvePluginReturn < TFn , TTarget > = TFn extends {
378- ( element : infer P1 ) : infer R1
379- ( element : infer P2 ) : infer R2
380- ( element : infer P3 ) : infer R3
381- ( element : infer P4 ) : infer R4
382- ( element : infer P5 ) : infer R5
383- }
384- ? TTarget extends P1
385- ? R1
386- : TTarget extends P2
387- ? R2
388- : TTarget extends P3
389- ? R3
390- : TTarget extends P4
391- ? R4
392- : TTarget extends P5
393- ? R5
394- : never
395- : TFn extends {
396- ( element : infer P1 ) : infer R1
397- ( element : infer P2 ) : infer R2
398- ( element : infer P3 ) : infer R3
399- ( element : infer P4 ) : infer R4
400- }
401- ? TTarget extends P1
402- ? R1
403- : TTarget extends P2
404- ? R2
405- : TTarget extends P3
406- ? R3
407- : TTarget extends P4
408- ? R4
409- : never
410- : TFn extends {
411- ( element : infer P1 ) : infer R1
412- ( element : infer P2 ) : infer R2
413- ( element : infer P3 ) : infer R3
414- }
415- ? TTarget extends P1
416- ? R1
417- : TTarget extends P2
418- ? R2
419- : TTarget extends P3
420- ? R3
421- : never
422- : TFn extends { ( element : infer P1 ) : infer R1 ; ( element : infer P2 ) : infer R2 }
423- ? TTarget extends P1
424- ? R1
425- : TTarget extends P2
426- ? R2
427- : never
428- : TFn extends { ( element : infer P ) : infer R }
429- ? TTarget extends P
430- ? R
431- : never
432- : never
433-
434- /**
435- * Resolves what a plugin returns for a specific element type T
436- * Handles both simple functions and overloaded functions
437- */
438369type PluginReturn < TPlugin , TKind > = TPlugin extends Plugin < infer TFn >
439- ? TFn extends ( ...args : any [ ] ) => any
440- ? ResolvePluginReturn < TFn , TKind > extends infer TResult
441- ? TResult extends never
442- ? TFn extends ( element : TKind ) => infer R
443- ? R
444- : TFn extends ( element : any ) => infer R
445- ? R
446- : { }
447- : TResult
370+ ? TFn extends { ( element : infer P ) : infer R }
371+ ? TKind extends P
372+ ? R
448373 : { }
449374 : { }
450375 : { }
@@ -454,11 +379,12 @@ type PluginReturn<TPlugin, TKind> = TPlugin extends Plugin<infer TFn>
454379 * This allows plugins to provide conditional methods based on the actual element type
455380 */
456381export type PluginPropsOf < T , TPlugins extends Plugin [ ] > = Merge < {
457- [ K in keyof TPlugins ] : PluginReturn < TPlugins [ K ] , T > extends infer Methods
458- ? Methods extends Record < string , any >
459- ? {
460- [ M in keyof Methods ] : Methods [ M ] extends ( value : infer V ) => any ? V : never
461- }
462- : { }
382+ [ K in keyof TPlugins ] : PluginReturn < TPlugins [ K ] , T > extends infer Methods extends Record <
383+ string ,
384+ any
385+ >
386+ ? {
387+ [ M in keyof Methods ] : Methods [ M ] extends ( value : infer V ) => any ? V : never
388+ }
463389 : { }
464390} >
0 commit comments