@@ -187,22 +187,25 @@ class ClassVisitor {
187187 }
188188}
189189
190- const getGenericTypeInfo = ( type : PType | PType [ 'wtype' ] ) : GenericTypeInfo => {
191- let genericArgs = undefined
192- let wtypeName = undefined
193- if ( type instanceof PType ) {
194- genericArgs = typeRegistry . isGeneric ( type )
195- ? type . getGenericArgs ( ) . map ( getGenericTypeInfo )
196- : type . wtype && Object . hasOwn ( type . wtype , 'types' )
197- ? ( type . wtype as DeliberateAny ) . types . map ( getGenericTypeInfo )
198- : undefined
199- wtypeName = type . wtype ?. name
200- } else if ( type ) {
201- genericArgs = Object . hasOwn ( type , 'types' ) ? ( type as DeliberateAny ) . types . map ( getGenericTypeInfo ) : undefined
202- wtypeName = type . name
190+ const getGenericTypeInfo = ( type : PType ) : GenericTypeInfo => {
191+ let genericArgs : GenericTypeInfo [ ] | Record < string , GenericTypeInfo > | undefined = typeRegistry . isGeneric ( type )
192+ ? type . getGenericArgs ( ) . map ( getGenericTypeInfo )
193+ : undefined
194+
195+ if ( ! genericArgs || ! genericArgs . length ) {
196+ if ( Object . hasOwn ( type , 'items' ) ) {
197+ genericArgs = ( type as DeliberateAny ) . items . map ( getGenericTypeInfo )
198+ } else if ( Object . hasOwn ( type , 'itemType' ) ) {
199+ genericArgs = [ getGenericTypeInfo ( ( type as DeliberateAny ) . itemType ) ]
200+ } else if ( Object . hasOwn ( type , 'properties' ) ) {
201+ genericArgs = Object . fromEntries (
202+ Object . entries ( ( type as DeliberateAny ) . properties ) . map ( ( [ key , value ] ) => [ key , getGenericTypeInfo ( value as PType ) ] ) ,
203+ )
204+ }
203205 }
204- const result : GenericTypeInfo = { name : type ?. name ?? 'unknown' , wtypeName : wtypeName }
205- if ( genericArgs && genericArgs . length ) {
206+
207+ const result : GenericTypeInfo = { name : type ?. name ?? 'unknown' }
208+ if ( genericArgs && ( genericArgs . length || Object . keys ( genericArgs ) . length ) ) {
206209 result . genericArgs = genericArgs
207210 }
208211 return result
0 commit comments