Skip to content

Commit 3fc340f

Browse files
committed
feat(ns-openapi-3-1): add support for Boolean JSON Schemas
Refs OAI/OpenAPI-Specification#2598
1 parent d971cb9 commit 3fc340f

File tree

2 files changed

+16
-3
lines changed
  • apidom/packages/apidom-ns-openapi-3-1

2 files changed

+16
-3
lines changed

apidom/packages/apidom-ns-openapi-3-1/src/refractor/visitors/open-api-3-1/schema/index.ts

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import stampit from 'stampit';
22
import { always, defaultTo } from 'ramda';
33
import { isNonEmptyString, isNull } from 'ramda-adjunct';
4-
import { ObjectElement, isStringElement, ArrayElement } from 'apidom';
4+
import { ObjectElement, ArrayElement, BooleanElement, isStringElement, BREAK } from 'apidom';
55

66
import { isSchemaElement, isJsonSchemaDialectElement } from '../../../../predicates';
77
import SchemaElement from '../../../../elements/Schema';
@@ -17,8 +17,6 @@ const SchemaVisitor = stampit(FixedFieldsVisitor, ParentSchemaAwareVisitor, Fall
1717
},
1818
// @ts-ignore
1919
init() {
20-
this.element = new SchemaElement();
21-
2220
/**
2321
* Private Api.
2422
*/
@@ -85,6 +83,7 @@ const SchemaVisitor = stampit(FixedFieldsVisitor, ParentSchemaAwareVisitor, Fall
8583
* Public Api.
8684
*/
8785
this.ObjectElement = function _ObjectElement(objectElement: ObjectElement) {
86+
this.element = new SchemaElement();
8887
handle$schema(objectElement);
8988
handle$id(objectElement);
9089

@@ -93,6 +92,13 @@ const SchemaVisitor = stampit(FixedFieldsVisitor, ParentSchemaAwareVisitor, Fall
9392
// @ts-ignore
9493
return FixedFieldsVisitor.compose.methods.ObjectElement.call(this, objectElement);
9594
};
95+
96+
this.BooleanElement = function _BooleanElement(booleanElement: BooleanElement) {
97+
this.element = booleanElement.clone();
98+
this.element.classes.push('boolean-json-schema');
99+
100+
return BREAK;
101+
};
96102
},
97103
});
98104

apidom/packages/apidom-ns-openapi-3-1/test/refractor/index.ts

+7
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ describe('refractor', function () {
1010
specify('should refract to OpenApi 3.1 namespace', function () {
1111
const genericObjectElement = new ObjectElement({
1212
openapi: '3.1.0',
13+
components: {
14+
schemas: {
15+
user: {
16+
if: true,
17+
},
18+
},
19+
},
1320
});
1421
const openApiElement = OpenApi3_1Element.refract(genericObjectElement);
1522

0 commit comments

Comments
 (0)