@@ -100,13 +100,9 @@ function handleTypeParameters(value: Value | Node) {
100100 }
101101 const node = value as Node ;
102102 return {
103- typeParameters : [
104- {
105- name : string ( node . values [ 0 ] ) ,
106- ...optionalMember ( "default" , "string" , node . properties ?. default ) ,
107- ...optionalMember ( "extends" , "string" , node . properties ?. extends ) ,
108- } ,
109- ] ,
103+ name : string ( node . values [ 0 ] ) ,
104+ ...optionalMember ( "default" , "string" , node . properties ?. default ) ,
105+ ...optionalMember ( "extends" , "string" , node . properties ?. extends ) ,
110106 } ;
111107}
112108
@@ -207,7 +203,7 @@ function handleMixinAndInterfaces(
207203 const property : Record < string , DeepPartial < Property > > = { } ;
208204 let method : Record < string , DeepPartial < OverridableMethod > > = { } ;
209205 let constructor : DeepPartial < OverridableMethod > | undefined ;
210- let typeParameters = { } ;
206+ const typeParameters = [ ] ;
211207
212208 for ( const child of node . children ) {
213209 switch ( child . name ) {
@@ -232,8 +228,8 @@ function handleMixinAndInterfaces(
232228 constructor = merge ( constructor , c ) ;
233229 break ;
234230 }
235- case "typeParameters " : {
236- typeParameters = handleTypeParameters ( child ) ;
231+ case "typeParameter " : {
232+ typeParameters . push ( handleTypeParameters ( child ) ) ;
237233 break ;
238234 }
239235 default :
@@ -242,7 +238,7 @@ function handleMixinAndInterfaces(
242238 }
243239
244240 const interfaceObject = type === "interface" && {
245- ...typeParameters ,
241+ ...optionalNestedMember ( " typeParameters" , typeParameters , typeParameters ) ,
246242 ...( constructor ? { constructor } : { } ) ,
247243 ...optionalMember ( "exposed" , "string" , node . properties ?. exposed ) ,
248244 ...optionalMember ( "deprecated" , "string" , node . properties ?. deprecated ) ,
@@ -270,7 +266,7 @@ function handleMixinAndInterfaces(
270266 "string" ,
271267 node . properties ?. replaceReference ,
272268 ) ,
273- ...handleTypeParameters ( node . properties ?. typeParameters ) ,
269+ ...handleTypeParameters ( node . properties ?. typeParameter ) ,
274270 ...interfaceObject ,
275271 } as DeepPartial < Interface > ;
276272}
@@ -396,7 +392,7 @@ function handleMethodAndConstructor(
396392function handleDictionary ( child : Node ) : DeepPartial < Dictionary > {
397393 const name = string ( child . values [ 0 ] ) ;
398394 const member : Record < string , DeepPartial < Member > > = { } ;
399- let typeParameters = { } ;
395+ const typeParameters = [ ] ;
400396
401397 for ( const c of child . children ) {
402398 switch ( c . name ) {
@@ -405,8 +401,8 @@ function handleDictionary(child: Node): DeepPartial<Dictionary> {
405401 member [ memberName ] = handleMember ( c ) ;
406402 break ;
407403 }
408- case "typeParameters " : {
409- typeParameters = handleTypeParameters ( c ) ;
404+ case "typeParameter " : {
405+ typeParameters . push ( handleTypeParameters ( c ) ) ;
410406 break ;
411407 }
412408 default :
@@ -417,8 +413,8 @@ function handleDictionary(child: Node): DeepPartial<Dictionary> {
417413 return {
418414 name,
419415 members : { member } ,
420- ...typeParameters ,
421- ...handleTypeParameters ( child . properties ?. typeParameters ) ,
416+ ...optionalNestedMember ( " typeParameters" , typeParameters , typeParameters ) ,
417+ ...handleTypeParameters ( child . properties ?. typeParameter ) ,
422418 ...optionalMember (
423419 "legacyNamespace" ,
424420 "string" ,
@@ -450,14 +446,14 @@ function handleMember(c: Node): DeepPartial<Member> {
450446 */
451447function handleTypedef ( node : Node ) : DeepPartial < TypeDef > {
452448 const typeNodes : Node [ ] = [ ] ;
453- let typeParameters = { } ;
449+ const typeParameters = [ ] ;
454450 for ( const child of node . children ) {
455451 switch ( child . name ) {
456452 case "type" :
457453 typeNodes . push ( child ) ;
458454 break ;
459- case "typeParameters " : {
460- typeParameters = handleTypeParameters ( child ) ;
455+ case "typeParameter " : {
456+ typeParameters . push ( handleTypeParameters ( child ) ) ;
461457 break ;
462458 }
463459 default :
@@ -475,7 +471,7 @@ function handleTypedef(node: Node): DeepPartial<TypeDef> {
475471 node . properties ?. legacyNamespace ,
476472 ) ,
477473 ...optionalMember ( "overrideType" , "string" , node . properties ?. overrideType ) ,
478- ...typeParameters ,
474+ ...optionalNestedMember ( " typeParameters" , typeParameters , typeParameters ) ,
479475 } ;
480476}
481477
0 commit comments