@@ -300,21 +300,25 @@ export class SchemaObjectFactory {
300
300
const enumName = metadata . enumName ;
301
301
const $ref = getSchemaPath ( enumName ) ;
302
302
303
- if ( ! ( enumName in schemas ) ) {
304
- const enumType : string = (
305
- metadata . isArray
306
- ? metadata . items [ 'type' ]
307
- : metadata . type
308
- ) ?? 'string' ;
309
-
310
- schemas [ enumName ] = {
311
- type : enumType ,
312
- enum :
313
- metadata . isArray && metadata . items
314
- ? metadata . items [ 'enum' ]
315
- : metadata . enum
316
- } ;
317
- }
303
+ // Allow given fields to be part of the referenced enum schema
304
+ const additionalParams = [ 'description' , 'deprecated' , 'default' ]
305
+ const additionalFields = additionalParams . reduce ( ( acc , param ) =>
306
+ ( { ...acc , ...( metadata [ param ] && { [ param ] : metadata [ param ] } ) } ) , { } ) ;
307
+
308
+ const enumType : string = (
309
+ metadata . isArray
310
+ ? metadata . items [ 'type' ]
311
+ : metadata . type
312
+ ) ?? 'string' ;
313
+
314
+ schemas [ enumName ] = {
315
+ type : enumType ,
316
+ ...additionalFields ,
317
+ enum :
318
+ metadata . isArray && metadata . items
319
+ ? metadata . items [ 'enum' ]
320
+ : metadata . enum
321
+ } ;
318
322
319
323
const _schemaObject = {
320
324
...metadata ,
@@ -324,7 +328,7 @@ export class SchemaObjectFactory {
324
328
325
329
const refHost = metadata . isArray ? { items : { $ref } } : { $ref } ;
326
330
const paramObject = { ..._schemaObject , ...refHost } ;
327
- const pathsToOmit = [ 'enum' , 'enumName' ] ;
331
+ const pathsToOmit = [ 'enum' , 'enumName' , ... additionalParams ] ;
328
332
329
333
if ( ! metadata . isArray ) {
330
334
pathsToOmit . push ( 'type' ) ;
@@ -498,6 +502,7 @@ export class SchemaObjectFactory {
498
502
schemas
499
503
) ;
500
504
}
505
+
501
506
if ( isString ( typeRef ) ) {
502
507
if ( isEnumMetadata ( metadata ) ) {
503
508
return this . createEnumSchemaType ( key , metadata , schemas ) ;
0 commit comments