diff --git a/src/services/models/Schema.ts b/src/services/models/Schema.ts index 7fb5a8e9..8f2d6004 100644 --- a/src/services/models/Schema.ts +++ b/src/services/models/Schema.ts @@ -275,12 +275,17 @@ export class SchemaModel { } } +const fieldCache: { [index: string]: FieldModel[] } = {}; + function buildFields( parser: OpenAPIParser, schema: OpenAPISchema, $ref: string, options: RedocNormalizedOptions, ): FieldModel[] { + if (fieldCache[$ref]) { + return fieldCache[$ref]; + } const props = schema.properties || {}; const additionalProps = schema.additionalProperties; const defaults = schema.default || {}; @@ -339,6 +344,8 @@ function buildFields( ); } + fieldCache[$ref] = fields; + return fields; }