@@ -581,9 +581,33 @@ function createSchemaResolvers(
581
581
} ;
582
582
}
583
583
function resolveEventSignature ( call : ts . Signature ) : EventMeta {
584
- const subtype = typeChecker . getTypeOfSymbolAtLocation ( call . parameters [ 1 ] , symbolNode ) ;
585
584
let schema : PropertyMetaSchema [ ] ;
586
585
let declarations : Declaration [ ] ;
586
+ let subtype = undefined ;
587
+ let subtypeStr = '[]' ;
588
+ let getSchema = ( ) => [ ] as PropertyMetaSchema [ ] ;
589
+
590
+ if ( call . parameters . length >= 2 ) {
591
+ subtype = typeChecker . getTypeOfSymbolAtLocation ( call . parameters [ 1 ] , symbolNode ) ;
592
+ if ( ( call . parameters [ 1 ] . valueDeclaration as any ) ?. dotDotDotToken ) {
593
+ subtypeStr = typeChecker . typeToString ( subtype ) ;
594
+ getSchema = ( ) => typeChecker . getTypeArguments ( subtype ! as ts . TypeReference ) . map ( resolveSchema ) ;
595
+ }
596
+ else {
597
+ subtypeStr = '[' ;
598
+ for ( let i = 1 ; i < call . parameters . length ; i ++ ) {
599
+ subtypeStr += typeChecker . typeToString ( typeChecker . getTypeOfSymbolAtLocation ( call . parameters [ i ] , symbolNode ) ) + ', ' ;
600
+ }
601
+ subtypeStr = subtypeStr . slice ( 0 , - 2 ) + ']' ;
602
+ getSchema = ( ) => {
603
+ const result : PropertyMetaSchema [ ] = [ ] ;
604
+ for ( let i = 1 ; i < call . parameters . length ; i ++ ) {
605
+ result . push ( resolveSchema ( typeChecker . getTypeOfSymbolAtLocation ( call . parameters [ i ] , symbolNode ) ) ) ;
606
+ }
607
+ return result ;
608
+ } ;
609
+ }
610
+ }
587
611
588
612
return {
589
613
name : ( typeChecker . getTypeOfSymbolAtLocation ( call . parameters [ 0 ] , symbolNode ) as ts . StringLiteralType ) . value ,
@@ -592,14 +616,14 @@ function createSchemaResolvers(
592
616
name : tag . name ,
593
617
text : tag . text !== undefined ? ts . displayPartsToString ( tag . text ) : undefined ,
594
618
} ) ) ,
595
- type : typeChecker . typeToString ( subtype ) ,
619
+ type : subtypeStr ,
596
620
rawType : rawType ? subtype : undefined ,
597
621
signature : typeChecker . signatureToString ( call ) ,
598
622
get declarations ( ) {
599
623
return declarations ??= call . declaration ? getDeclarations ( [ call . declaration ] ) : [ ] ;
600
624
} ,
601
625
get schema ( ) {
602
- return schema ??= typeChecker . getTypeArguments ( subtype as ts . TypeReference ) . map ( resolveSchema ) ;
626
+ return schema ??= getSchema ( ) ;
603
627
} ,
604
628
} ;
605
629
}
0 commit comments