Skip to content

Commit f231342

Browse files
Merge branch '3294-fix-enum-schema' of github.com:mag123c/swagger into mag123c-3294-fix-enum-schema
2 parents 109b7ea + c35af62 commit f231342

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

lib/interfaces/open-api-spec.interface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ export interface SchemaObject {
232232
minProperties?: number;
233233
required?: string[];
234234
enum?: any[];
235+
'x-enumNames'?: string[];
235236
}
236237

237238
export type SchemasObject = Record<string, SchemaObject>;

lib/services/schema-object-factory.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ export class SchemaObjectFactory {
6464
if (!isBodyParameter(param)) {
6565
return this.createQueryOrParamSchema(param, schemas);
6666
}
67-
6867
return this.getCustomType(param, schemas);
6968
});
69+
7070
return flatten(parameterObjects);
7171
}
7272

@@ -257,6 +257,10 @@ export class SchemaObjectFactory {
257257
'selfRequired'
258258
];
259259

260+
if ('$ref' in property) {
261+
return omit(pick(property, '$ref'), keysToOmit);
262+
}
263+
260264
if ('required' in property && Array.isArray(property.required)) {
261265
return omit(property, keysToOmit);
262266
}
@@ -279,6 +283,7 @@ export class SchemaObjectFactory {
279283
typeDefinition['required'] = typeDefinitionRequiredFields;
280284
}
281285
schemas[schemaName] = typeDefinition;
286+
282287
return schemaName;
283288
}
284289

@@ -406,7 +411,9 @@ export class SchemaObjectFactory {
406411
enum:
407412
metadata.isArray && metadata.items
408413
? metadata.items['enum']
409-
: metadata.enum
414+
: metadata.enum,
415+
description: metadata.description ?? undefined,
416+
'x-enumNames': metadata['x-enumNames'] ?? undefined
410417
};
411418
} else {
412419
if (metadata.enumSchema) {
@@ -415,6 +422,10 @@ export class SchemaObjectFactory {
415422
...metadata.enumSchema
416423
};
417424
}
425+
426+
if (metadata['x-enumNames']) {
427+
schemas[enumName]['x-enumNames'] = metadata['x-enumNames'];
428+
}
418429
}
419430

420431
const _schemaObject = {
@@ -426,6 +437,7 @@ export class SchemaObjectFactory {
426437
const refHost = metadata.isArray
427438
? { items: { $ref } }
428439
: { allOf: [{ $ref }] };
440+
429441
const paramObject = { ..._schemaObject, ...refHost };
430442
const pathsToOmit = ['enum', 'enumName', 'enumSchema'];
431443

0 commit comments

Comments
 (0)