1+ import  type  {  Model  }  from  '../../../client/interfaces/Model' ; 
12import  type  {  ModelComposition  }  from  '../../../client/interfaces/ModelComposition' ; 
23import  type  {  OpenApi  }  from  '../interfaces/OpenApi' ; 
34import  type  {  OpenApiSchema  }  from  '../interfaces/OpenApiSchema' ; 
45import  type  {  getModel  }  from  './getModel' ; 
56import  {  getModelProperties  }  from  './getModelProperties' ; 
7+ import  {  getRequiredPropertiesFromComposition  }  from  './getRequiredPropertiesFromComposition' ; 
68
79// Fix for circular dependency 
810export  type  GetModelFn  =  typeof  getModel ; 
@@ -15,8 +17,10 @@ export function getModelComposition(openApi: OpenApi, definition: OpenApiSchema,
1517 properties : [ ] , 
1618 } ; 
1719
18-  const  models  =  definitions . map ( definition  =>  getModel ( openApi ,  definition ) ) ; 
19-  models 
20+  const  properties : Model [ ]  =  [ ] ; 
21+ 
22+  definitions 
23+  . map ( definition  =>  getModel ( openApi ,  definition ) ) 
2024 . filter ( model  =>  { 
2125 const  hasProperties  =  model . properties . length ; 
2226 const  hasEnums  =  model . enums . length ; 
@@ -30,12 +34,25 @@ export function getModelComposition(openApi: OpenApi, definition: OpenApiSchema,
3034 composition . properties . push ( model ) ; 
3135 } ) ; 
3236
37+  if  ( definition . required )  { 
38+  const  requiredProperties  =  getRequiredPropertiesFromComposition ( openApi ,  definition . required ,  definitions ,  getModel ) ; 
39+  requiredProperties . forEach ( requiredProperty  =>  { 
40+  composition . imports . push ( ...requiredProperty . imports ) ; 
41+  composition . enums . push ( ...requiredProperty . enums ) ; 
42+  } ) ; 
43+  properties . push ( ...requiredProperties ) ; 
44+  } 
45+ 
3346 if  ( definition . properties )  { 
34-  const  properties  =  getModelProperties ( openApi ,  definition ,  getModel ) ; 
35-  properties . forEach ( property  =>  { 
36-  composition . imports . push ( ...property . imports ) ; 
37-  composition . enums . push ( ...property . enums ) ; 
47+  const  modelProperties  =  getModelProperties ( openApi ,  definition ,  getModel ) ; 
48+  modelProperties . forEach ( modelProperty  =>  { 
49+  composition . imports . push ( ...modelProperty . imports ) ; 
50+  composition . enums . push ( ...modelProperty . enums ) ; 
3851 } ) ; 
52+  properties . push ( ...modelProperties ) ; 
53+  } 
54+ 
55+  if  ( properties )  { 
3956 composition . properties . push ( { 
4057 name : 'properties' , 
4158 export : 'interface' , 
@@ -54,5 +71,6 @@ export function getModelComposition(openApi: OpenApi, definition: OpenApiSchema,
5471 properties, 
5572 } ) ; 
5673 } 
74+ 
5775 return  composition ; 
5876} 
0 commit comments