Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit 540facf

Browse files
committed
refactor(oas3): internally store the OpenAPI version
1 parent cf42385 commit 540facf

File tree

4 files changed

+21
-2
lines changed

4 files changed

+21
-2
lines changed

packages/openapi3-parser/lib/context.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ const State = require('./state.js');
33
class Context {
44
constructor(namespace, options) {
55
this.namespace = namespace;
6+
this.openapiVersion = {
7+
major: 3,
8+
minor: 0,
9+
patch: 0,
10+
};
611
this.options = options || {};
712

813
if (this.options.generateSourceMap === undefined) {

packages/openapi3-parser/lib/parser/oas/parseOpenAPIObject.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ function parseOASObject(context, object) {
5656
]);
5757

5858
const parseOASObject = pipeParseResult(namespace,
59-
parseObject(context, name, parseMember, requiredKeys, ['components']),
59+
parseObject(context, name, parseMember, requiredKeys, ['openapi', 'components']),
6060
(object) => {
6161
const api = object.get('info');
6262
const hosts = object.get('servers');

packages/openapi3-parser/lib/parser/openapi.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ function parseOpenAPI(context, openapi) {
2121
return new namespace.elements.ParseResult([createError(namespace, `OpenAPI version does not contain valid semantic version string '${openapi.value.toValue()}'`, openapi.value)]);
2222
}
2323

24+
/* eslint-disable no-param-reassign */
25+
context.openapiVersion.major = Number(versionInfo[1]);
26+
context.openapiVersion.minor = Number(versionInfo[2]);
27+
context.openapiVersion.patch = Number(versionInfo[3]);
28+
2429
if (parseInt(versionInfo[1], 10) !== supportedMajorVersion) {
2530
return new namespace.elements.ParseResult([createError(namespace, `Unsupported OpenAPI version '${openapi.value.toValue()}'`, openapi.value)]);
2631
}
@@ -29,7 +34,6 @@ function parseOpenAPI(context, openapi) {
2934
return new namespace.elements.ParseResult([openapi, createWarning(namespace, `Version '${openapi.value.toValue()}' is not fully supported`, openapi.value)]);
3035
}
3136

32-
3337
return new namespace.elements.ParseResult([openapi]);
3438
}
3539

packages/openapi3-parser/test/unit/parser/openapi-test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,14 @@ describe('#parseOpenAPI', () => {
6363
expect(parseResult).to.contain.warning("Version '3.1.0' is not fully supported");
6464
expect(parseResult.get(0).value.toValue()).to.equal('3.1.0');
6565
});
66+
67+
it('adds the version to context', () => {
68+
const openapi = new namespace.elements.Member('openapi', '3.1.2');
69+
70+
parseOpenAPI(context, openapi);
71+
72+
expect(context.openapiVersion.major).to.equal(3);
73+
expect(context.openapiVersion.minor).to.equal(1);
74+
expect(context.openapiVersion.patch).to.equal(2);
75+
});
6676
});

0 commit comments

Comments
 (0)