@@ -199,46 +199,47 @@ export function createObject(
199
199
originalRef : string ,
200
200
components : IComponentsObject = { } ,
201
201
) : ICodeWithMetadata {
202
+ const code : string [ ] = [ ] ;
203
+ const dependencies : string [ ] = [ ] ;
204
+ const imports : string [ ] = [ ] ;
205
+
202
206
if ( isReferenceObject ( item ) ) {
203
207
return createReferenceNode ( item . $ref , originalRef ) ;
204
208
}
205
209
206
- if ( Array . isArray ( item . allOf ) ) {
207
- const code : string [ ] = [ ] ;
208
- const dependencies : string [ ] = [ ] ;
209
- const imports : string [ ] = [ ] ;
210
-
210
+ if ( Array . isArray ( item . allOf ) && item . allOf . length ) {
211
+ const allOfCode : string [ ] = [ ] ;
211
212
item . allOf . forEach ( ( entry ) => {
212
213
const resolvedValue = resolveValue ( entry , originalRef ) ;
213
- code . push ( resolvedValue . code ) ;
214
+ allOfCode . push ( resolvedValue . code ) ;
214
215
dependencies . push ( ...resolvedValue . dependencies ) ;
215
216
imports . push ( ...resolvedValue . imports ) ;
216
217
} ) ;
217
-
218
- return { code : code . join ( ' | ' ) , dependencies, imports : uniq ( imports ) } ;
218
+ code . push ( `(${ allOfCode . join ( ' & ' ) } )` ) ;
219
219
}
220
220
221
- if ( Array . isArray ( item . oneOf ) ) {
222
- const code : string [ ] = [ ] ;
223
- const dependencies : string [ ] = [ ] ;
224
- const imports : string [ ] = [ ] ;
225
-
221
+ if ( Array . isArray ( item . oneOf ) && item . oneOf . length ) {
222
+ const oneOfCode : string [ ] = [ ] ;
226
223
item . oneOf . forEach ( ( entry ) => {
227
224
const resolvedValue = resolveValue ( entry , originalRef ) ;
228
- code . push ( resolvedValue . code ) ;
225
+ oneOfCode . push ( resolvedValue . code ) ;
229
226
dependencies . push ( ...resolvedValue . dependencies ) ;
230
227
imports . push ( ...resolvedValue . imports ) ;
231
228
} ) ;
232
-
233
- return { code : code . join ( ' & ' ) , dependencies, imports : uniq ( imports ) } ;
229
+ code . push ( `(${ oneOfCode . join ( ' | ' ) } )` ) ;
234
230
}
235
231
236
- const props = createObjectProperties ( item , originalRef , components ) ;
232
+ if ( item . type || has ( item , 'properties' ) || has ( item , 'additionalProperties' ) ) {
233
+ const props = createObjectProperties ( item , originalRef , components ) ;
234
+ code . push ( liquid . renderSync ( OBJECT_TEMPLATE , { props } ) ) ;
235
+ dependencies . push ( ...props . flatMap ( ( p ) => p . dependencies ) ) ;
236
+ imports . push ( ...props . flatMap ( ( p ) => p . imports ) ) ;
237
+ }
237
238
238
239
return {
239
- code : liquid . renderSync ( OBJECT_TEMPLATE , { props } ) ,
240
- imports : uniq ( props . flatMap ( ( p ) => p . imports ) ) ,
241
- dependencies : uniq ( props . flatMap ( ( p ) => p . dependencies ) ) ,
240
+ code : code . join ( ' & ' ) ,
241
+ imports : uniq ( imports ) ,
242
+ dependencies : uniq ( dependencies ) ,
242
243
} ;
243
244
}
244
245
0 commit comments