Skip to content

Commit 7c452f9

Browse files
authored
perf(resolver): utilize cache for OpenAPI 3.1 (#3008)
Refs swagger-api/swagger-ui#8606
1 parent 9d1030a commit 7c452f9

File tree

1 file changed

+12
-2
lines changed
  • src/resolver/strategies/openapi-3-1-apidom

1 file changed

+12
-2
lines changed

src/resolver/strategies/openapi-3-1-apidom/resolve.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,23 @@ const resolveOpenAPI31Strategy = async (options) => {
4141
mode = 'non-strict',
4242
} = options;
4343
try {
44+
const { cache } = resolveOpenAPI31Strategy;
45+
4446
// determining BaseURI
4547
const cwd = url.isHttpUrl(url.cwd()) ? url.cwd() : 'https://smartbear.com/';
4648
const retrievalURI = optionsUtil.retrievalURI(options);
4749
const baseURI = url.resolve(cwd, retrievalURI);
4850

4951
// prepare spec for dereferencing
50-
const openApiElement = OpenApi3_1Element.refract(spec);
51-
openApiElement.classes.push('result');
52+
let openApiElement;
53+
if (cache.has(spec)) {
54+
openApiElement = cache.get(spec);
55+
} else {
56+
openApiElement = OpenApi3_1Element.refract(spec);
57+
openApiElement.classes.push('result');
58+
cache.set(spec, openApiElement);
59+
}
60+
5261
const openApiParseResultElement = new ParseResultElement([openApiElement]);
5362

5463
// prepare fragment for dereferencing
@@ -125,6 +134,7 @@ const resolveOpenAPI31Strategy = async (options) => {
125134
throw error;
126135
}
127136
};
137+
resolveOpenAPI31Strategy.cache = new WeakMap();
128138

129139
export default resolveOpenAPI31Strategy;
130140
/* eslint-enable camelcase */

0 commit comments

Comments
 (0)