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

Commit f781a34

Browse files
committed
fix(oas3): remove support for nullable in OpenAPI 3.1
1 parent d3b2a5a commit f781a34

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,13 +330,19 @@ function parseSchema(context) {
330330
return element;
331331
};
332332

333+
const parseNullable = R.ifElse(
334+
R.always(context.isOpenAPIVersionMoreThanOrEqual(3, 1)),
335+
createWarning(context.namespace, `'${name}' 'nullable' is removed in OpenAPI 3.1, use 'null' in type`),
336+
parseBoolean(context, name, false)
337+
);
338+
333339
const parseMember = R.cond([
334340
[hasKey('type'), R.compose(parseType(context), getValue)],
335341
[hasKey('enum'), R.compose(parseEnum(context, name), getValue)],
336342
[hasKey('properties'), R.compose(parseProperties, getValue)],
337343
[hasKey('items'), R.compose(parseSubSchema, getValue)],
338344
[hasKey('required'), R.compose(parseRequired, getValue)],
339-
[hasKey('nullable'), parseBoolean(context, name, false)],
345+
[hasKey('nullable'), parseNullable],
340346
[hasKey('title'), parseString(context, name, false)],
341347
[hasKey('description'), parseString(context, name, false)],
342348
[hasKey('default'), e => e.clone()],

packages/openapi3-parser/test/unit/parser/oas/parseSchemaObject-test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,20 @@ describe('Schema Object', () => {
702702
});
703703

704704
describe('#nullable', () => {
705+
it('warns when nullable is used with OpenAPI 3.1', () => {
706+
context.openapiVersion = { major: 3, minor: 1 };
707+
const schema = new namespace.elements.Object({
708+
nullable: true,
709+
});
710+
const parseResult = parse(context, schema);
711+
712+
expect(parseResult.length).to.equal(2);
713+
714+
expect(parseResult).to.contain.warning(
715+
"'Schema Object' 'nullable' is removed in OpenAPI 3.1, use 'null' in type"
716+
);
717+
});
718+
705719
it('warns when nullable is not boolean', () => {
706720
const schema = new namespace.elements.Object({
707721
nullable: 1,

0 commit comments

Comments
 (0)