diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsChannelBindings.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsChannelBindings.ts new file mode 100644 index 0000000000..f18e8f66ba --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsChannelBindings.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsChannelBindings extends ObjectElement { + static primaryClass = 'components-channel-bindings'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsChannelBindings.primaryClass); + } +} + +export default ComponentsChannelBindings; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsCorrelationIDs.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsCorrelationIDs.ts new file mode 100644 index 0000000000..8af0236118 --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsCorrelationIDs.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsCorrelationIDs extends ObjectElement { + static primaryClass = 'components-correlation-ids'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsCorrelationIDs.primaryClass); + } +} + +export default ComponentsCorrelationIDs; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsMessageBindings.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsMessageBindings.ts new file mode 100644 index 0000000000..1876658a69 --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsMessageBindings.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsMessageBindings extends ObjectElement { + static primaryClass = 'components-message-bindings'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsMessageBindings.primaryClass); + } +} + +export default ComponentsMessageBindings; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsMessageTraits.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsMessageTraits.ts new file mode 100644 index 0000000000..1baa837af4 --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsMessageTraits.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsMessageTraits extends ObjectElement { + static primaryClass = 'components-message-traits'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsMessageTraits.primaryClass); + } +} + +export default ComponentsMessageTraits; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsMessages.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsMessages.ts new file mode 100644 index 0000000000..e4e653ad32 --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsMessages.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsMessages extends ObjectElement { + static primaryClass = 'components-messages'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsMessages.primaryClass); + } +} + +export default ComponentsMessages; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsOperationBindings.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsOperationBindings.ts new file mode 100644 index 0000000000..ddce7446bf --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsOperationBindings.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsOperationBindings extends ObjectElement { + static primaryClass = 'components-operation-bindings'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsOperationBindings.primaryClass); + } +} + +export default ComponentsOperationBindings; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsOperationTraits.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsOperationTraits.ts new file mode 100644 index 0000000000..c8df1b27a0 --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsOperationTraits.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsOperationTraits extends ObjectElement { + static primaryClass = 'components-operation-traits'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsOperationTraits.primaryClass); + } +} + +export default ComponentsOperationTraits; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsParameters.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsParameters.ts new file mode 100644 index 0000000000..9b531a5588 --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsParameters.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsParameters extends ObjectElement { + static primaryClass = 'components-parameters'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsParameters.primaryClass); + } +} + +export default ComponentsParameters; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsSchemas.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsSchemas.ts new file mode 100644 index 0000000000..9aafe6dc69 --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsSchemas.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsSchemas extends ObjectElement { + static primaryClass = 'components-schemas'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsSchemas.primaryClass); + } +} + +export default ComponentsSchemas; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsSecuritySchemes.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsSecuritySchemes.ts new file mode 100644 index 0000000000..1934912c79 --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsSecuritySchemes.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsSecuritySchemes extends ObjectElement { + static primaryClass = 'components-security-schemes'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsSecuritySchemes.primaryClass); + } +} + +export default ComponentsSecuritySchemes; diff --git a/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsServerBindings.ts b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsServerBindings.ts new file mode 100644 index 0000000000..32f0211642 --- /dev/null +++ b/packages/apidom-ns-asyncapi-2/src/elements/nces/ComponentsServerBindings.ts @@ -0,0 +1,13 @@ +import { Attributes, Meta } from 'minim'; +import { ObjectElement } from '@swagger-api/apidom-core'; + +class ComponentsServerBindings extends ObjectElement { + static primaryClass = 'components-server-bindings'; + + constructor(content?: Record, meta?: Meta, attributes?: Attributes) { + super(content, meta, attributes); + this.classes.push(ComponentsServerBindings.primaryClass); + } +} + +export default ComponentsServerBindings; diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/plugins/replace-empty-element.ts b/packages/apidom-ns-asyncapi-2/src/refractor/plugins/replace-empty-element.ts index a5ac81db35..fca0bfaf19 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/plugins/replace-empty-element.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/plugins/replace-empty-element.ts @@ -1,3 +1,4 @@ +import { mergeAll, test } from 'ramda'; import { ObjectElement, MemberElement, @@ -5,7 +6,9 @@ import { includesClasses, } from '@swagger-api/apidom-core'; -import AsyncApi2Element from '../../elements/AsyncApi2'; +/** + * AsyncApi 2.0.0 | 2.1.0 | 2.2.0 specification elements. + */ import AsyncApiVersionElement from '../../elements/AsyncApiVersion'; import IdentifierElement from '../../elements/Identifier'; import InfoElement from '../../elements/Info'; @@ -30,6 +33,18 @@ import ServerBindingsElement from '../../elements/ServerBindings'; import ChannelBindingsElement from '../../elements/ChannelBindings'; import OperationBindingsElement from '../../elements/OperationBindings'; import MessageBindingsElement from '../../elements/MessageBindings'; +// non-concrete Elements (NCEs) +import ComponentsSchemasElement from '../../elements/nces/ComponentsSchemas'; +import ComponentsMessagesElement from '../../elements/nces/ComponentsMessages'; +import ComponentsSecuritySchemesElement from '../../elements/nces/ComponentsSecuritySchemes'; +import ComponentsParametersElement from '../../elements/nces/ComponentsParameters'; +import ComponentsCorrelationIDsElement from '../../elements/nces/ComponentsCorrelationIDs'; +import ComponentsOperationTraitsElement from '../../elements/nces/ComponentsOperationTraits'; +import ComponentsMessageTraitsElement from '../../elements/nces/ComponentsMessageTraits'; +import ComponentsServerBindingsElement from '../../elements/nces/ComponentsServerBindings'; +import ComponentsChannelBindingsElement from '../../elements/nces/ComponentsChannelBindings'; +import ComponentsOperationBindingsElement from '../../elements/nces/ComponentsOperationBindings'; +import ComponentsMessageBindingsElement from '../../elements/nces/ComponentsMessageBindings'; /** * This plugin is specific to YAML 1.2 format, which allows defining key-value pairs @@ -69,7 +84,7 @@ const isEmptyElement = (element: any) => isStringElement(element) && includesClasses(['yaml-e-node', 'yaml-e-scalar'], element); const schema = { - // concrete types handling + // concrete types handling (CTs) AsyncApi2Element: { asyncapi: () => new AsyncApiVersionElement(), identifier: () => new IdentifierElement(), @@ -92,161 +107,155 @@ const schema = { '*': () => new ChannelItemElement(), }, ComponentsElement: { - schemas: () => new ObjectElement({}, { classes: ['components-schemas'] }), - messages: () => new ObjectElement({}, { classes: ['components-messages'] }), - securitySchemes: () => new ObjectElement({}, { classes: ['components-security-schemes'] }), - parameters: () => new ObjectElement({}, { classes: ['components-parameters'] }), - correlationIds: () => new ObjectElement({}, { classes: ['components-correlation-ids'] }), - operationTraits: () => new ObjectElement({}, { classes: ['components-operation-traits'] }), - messageTraits: () => new ObjectElement({}, { classes: ['components-message-traits'] }), - serverBindings: () => new ObjectElement({}, { classes: ['components-server-bindings'] }), - channelBindings: () => new ObjectElement({}, { classes: ['components-channel-bindings'] }), - operationBindings: () => new ObjectElement({}, { classes: ['components-operation-bindings'] }), - messageBindings: () => new ObjectElement({}, { classes: ['components-message-bindings'] }), - }, - // non concrete types handling - NCT - 'components-schemas': { + schemas: () => new ComponentsSchemasElement(), + messages: () => new ComponentsMessagesElement(), + securitySchemes: () => new ComponentsSecuritySchemesElement(), + parameters: () => new ComponentsParametersElement(), + correlationIds: () => new ComponentsCorrelationIDsElement(), + operationTraits: () => new ComponentsOperationTraitsElement(), + messageTraits: () => new ComponentsMessageTraitsElement(), + serverBindings: () => new ComponentsServerBindingsElement(), + channelBindings: () => new ComponentsChannelBindingsElement(), + operationBindings: () => new ComponentsOperationBindingsElement(), + messageBindings: () => new ComponentsMessageBindingsElement(), + }, + // non-concrete types handling (NCEs) + [ComponentsSchemasElement.primaryClass]: { '*': () => new SchemaElement(), }, - 'components-messages': { + [ComponentsMessagesElement.primaryClass]: { '*': () => new MessageElement(), }, - 'components-security-schemes': { + [ComponentsSecuritySchemesElement.primaryClass]: { '*': () => new SecuritySchemeElement(), }, - 'components-parameters': { + [ComponentsParametersElement.primaryClass]: { '*': () => new ParameterElement(), }, - 'components-correlation-ids': { + [ComponentsCorrelationIDsElement.primaryClass]: { '*': () => new CorrelationIDElement(), }, - 'components-operation-traits': { + [ComponentsOperationTraitsElement.primaryClass]: { '*': () => new OperationTraitElement(), }, - 'components-message-traits': { + [ComponentsMessageTraitsElement.primaryClass]: { '*': () => new MessageTraitElement(), }, - 'components-server-bindings': { + [ComponentsServerBindingsElement.primaryClass]: { '*': () => new ServerBindingsElement(), }, - 'components-channel-bindings': { + [ComponentsChannelBindingsElement.primaryClass]: { '*': () => new ChannelBindingsElement(), }, - 'components-operation-bindings': { + [ComponentsOperationBindingsElement.primaryClass]: { '*': () => new OperationBindingsElement(), }, - 'components-message-bindings': { + [ComponentsMessageBindingsElement.primaryClass]: { '*': () => new MessageBindingsElement(), }, }; -const plugin = () => () => { - const replaceEmptyValues = (type: string, element: T) => { - const members: MemberElement[] = []; - let hasEmptyElement = false; - - element.forEach((value, key, member) => { - if (!isEmptyElement(value)) { - // @ts-ignore - members.push(member); - return; - } +const replaceEmptyValues = (type: string, element: T) => { + const members: MemberElement[] = []; + let hasEmptyElement = false; + element.forEach((value, key, member) => { + if (!isEmptyElement(value)) { // @ts-ignore - const elementFactory = Object.prototype.hasOwnProperty.call(schema[type], '*') - ? // @ts-ignore - schema[type]['*'] - : // @ts-ignore - schema[type][key.toValue()]; - - if (typeof elementFactory !== 'function') { - // @ts-ignore - members.push(member); - return; - } - - const newMember = new MemberElement( - // @ts-ignore - member.key, - elementFactory(), - member.meta.clone(), - member.attributes.clone(), - ); + members.push(member); + return; + } - hasEmptyElement = true; - members.push(newMember); - }); + // @ts-ignore + const elementFactory = Object.prototype.hasOwnProperty.call(schema[type], '*') + ? // @ts-ignore + schema[type]['*'] + : // @ts-ignore + schema[type][key.toValue()]; - if (hasEmptyElement) { - // shallow clone of the element + if (typeof elementFactory !== 'function') { // @ts-ignore - return new element.constructor(members, element.meta.clone(), element.attributes.clone()); + members.push(member); + return; } - return undefined; - }; + const newMember = new MemberElement( + // @ts-ignore + member.key, + elementFactory(), + member.meta.clone(), + member.attributes.clone(), + ); - return { - visitor: { - AsyncApi2Element(element: AsyncApi2Element) { - return replaceEmptyValues('AsyncApi2Element', element); - }, - InfoElement(element: InfoElement) { - return replaceEmptyValues('InfoElement', element); - }, - ServersElement(element: ServersElement) { - return replaceEmptyValues('ServersElement', element); - }, - ChannelsElement(element: ChannelsElement) { - return replaceEmptyValues('ChannelsElement', element); - }, - ComponentsElement(element: ComponentsElement) { - return replaceEmptyValues('ComponentsElement', element); - }, - ObjectElement(element: ObjectElement) { - // skip the chain of following checks - if (element.classes.length === 0) { - return undefined; - } - - if (element.classes.includes('components-schemas')) { - return replaceEmptyValues('components-schemas', element); - } - if (element.classes.includes('components-messages')) { - return replaceEmptyValues('components-messages', element); - } - if (element.classes.includes('components-security-schemes')) { - return replaceEmptyValues('components-security-schemes', element); - } - if (element.classes.includes('components-parameters')) { - return replaceEmptyValues('components-parameters', element); - } - if (element.classes.includes('components-correlation-ids')) { - return replaceEmptyValues('components-correlation-ids', element); - } - if (element.classes.includes('components-operation-traits')) { - return replaceEmptyValues('components-messages', element); - } - if (element.classes.includes('components-message-traits')) { - return replaceEmptyValues('components-message-traits', element); - } - if (element.classes.includes('components-server-bindings')) { - return replaceEmptyValues('components-server-bindings', element); - } - if (element.classes.includes('components-channel-bindings')) { - return replaceEmptyValues('components-channel-bindings', element); - } - if (element.classes.includes('components-operation-bindings')) { - return replaceEmptyValues('components-operation-bindings', element); - } - if (element.classes.includes('components-message-bindings')) { - return replaceEmptyValues('components-message-bindings', element); - } + hasEmptyElement = true; + members.push(newMember); + }); - return undefined; + if (hasEmptyElement) { + // shallow clone of the element + // @ts-ignore + return new element.constructor(members, element.meta.clone(), element.attributes.clone()); + } + + return undefined; +}; + +const plugin = () => () => { + const ceVisitor = Object.keys(schema) + .filter(test(/^[A-Z]/)) // concrete Elements starts with uppercase letters + .map((elementType) => ({ + [elementType](element: ObjectElement) { + return replaceEmptyValues(elementType, element); }, + })); + const nctVisitor = { + ObjectElement(element: ObjectElement) { + // skip the chain of following checks + if (element.classes.length === 0) { + return undefined; + } + + if (element.classes.includes(ComponentsSchemasElement.primaryClass)) { + return replaceEmptyValues(ComponentsSchemasElement.primaryClass, element); + } + if (element.classes.includes(ComponentsMessagesElement.primaryClass)) { + return replaceEmptyValues(ComponentsMessagesElement.primaryClass, element); + } + if (element.classes.includes(ComponentsSecuritySchemesElement.primaryClass)) { + return replaceEmptyValues(ComponentsSecuritySchemesElement.primaryClass, element); + } + if (element.classes.includes(ComponentsParametersElement.primaryClass)) { + return replaceEmptyValues(ComponentsParametersElement.primaryClass, element); + } + if (element.classes.includes(ComponentsCorrelationIDsElement.primaryClass)) { + return replaceEmptyValues(ComponentsCorrelationIDsElement.primaryClass, element); + } + if (element.classes.includes(ComponentsOperationTraitsElement.primaryClass)) { + return replaceEmptyValues(ComponentsOperationTraitsElement.primaryClass, element); + } + if (element.classes.includes(ComponentsMessageTraitsElement.primaryClass)) { + return replaceEmptyValues(ComponentsMessageTraitsElement.primaryClass, element); + } + if (element.classes.includes(ComponentsServerBindingsElement.primaryClass)) { + return replaceEmptyValues(ComponentsServerBindingsElement.primaryClass, element); + } + if (element.classes.includes(ComponentsChannelBindingsElement.primaryClass)) { + return replaceEmptyValues(ComponentsChannelBindingsElement.primaryClass, element); + } + if (element.classes.includes(ComponentsOperationBindingsElement.primaryClass)) { + return replaceEmptyValues(ComponentsOperationBindingsElement.primaryClass, element); + } + if (element.classes.includes(ComponentsMessageBindingsElement.primaryClass)) { + return replaceEmptyValues(ComponentsMessageBindingsElement.primaryClass, element); + } + + return undefined; }, }; + + return { + visitor: { ...mergeAll(ceVisitor), ...nctVisitor }, + }; }; export default plugin; diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ChannelBindingsVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ChannelBindingsVisitor.ts index a2e451abd4..7867ab20b2 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ChannelBindingsVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ChannelBindingsVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsChannelBindingsElement from '../../../../elements/nces/ComponentsChannelBindings'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const ChannelBindingsVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-channel-bindings'); + this.element = new ComponentsChannelBindingsElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/CorrelationIdsVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/CorrelationIdsVisitor.ts index d0a101209c..922481c7a7 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/CorrelationIdsVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/CorrelationIdsVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsCorrelationIDsElement from '../../../../elements/nces/ComponentsCorrelationIDs'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const CorrelationIdsVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-correlation-ids'); + this.element = new ComponentsCorrelationIDsElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessageBindingsVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessageBindingsVisitor.ts index 522245f5e2..ccb6bab5c7 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessageBindingsVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessageBindingsVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsMessageBindingsElement from '../../../../elements/nces/ComponentsMessageBindings'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const MessageBindingsVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-message-bindings'); + this.element = new ComponentsMessageBindingsElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessageTraitsVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessageTraitsVisitor.ts index fca68f7faa..490cc79dca 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessageTraitsVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessageTraitsVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsMessageTraitsElement from '../../../../elements/nces/ComponentsMessageTraits'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const MessageTraitsVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-message-traits'); + this.element = new ComponentsMessageTraitsElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessagesVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessagesVisitor.ts index 49bcd02b04..68c5ee8013 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessagesVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/MessagesVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsMessagesElement from '../../../../elements/nces/ComponentsMessages'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const MessagesVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-messages'); + this.element = new ComponentsMessagesElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/OperationBindingsVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/OperationBindingsVisitor.ts index 97e81bf343..ebd5908535 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/OperationBindingsVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/OperationBindingsVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsOperationBindingsElement from '../../../../elements/nces/ComponentsOperationBindings'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const OperationBindingsVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-operation-bindings'); + this.element = new ComponentsOperationBindingsElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/OperationTraitsVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/OperationTraitsVisitor.ts index fdbd44c22e..03db37ef1e 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/OperationTraitsVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/OperationTraitsVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsOperationTraitsElement from '../../../../elements/nces/ComponentsOperationTraits'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const OperationTraitsVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-operation-traits'); + this.element = new ComponentsOperationTraitsElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ParametersVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ParametersVisitor.ts index 8b83d0e354..cc3b044b6e 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ParametersVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ParametersVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsParametersElement from '../../../../elements/nces/ComponentsParameters'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const ParametersVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-parameters'); + this.element = new ComponentsParametersElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/SchemasVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/SchemasVisitor.ts index 853d987cfb..453a61dbae 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/SchemasVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/SchemasVisitor.ts @@ -1,11 +1,12 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; +import ReferenceElement from '../../../../elements/Reference'; +import ComponentsSchemasElement from '../../../../elements/nces/ComponentsSchemas'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; import { isReferenceElement } from '../../../../predicates'; -import ReferenceElement from '../../../../elements/Reference'; const SchemasVisitor = stampit(MapVisitor, FallbackVisitor, { props: { @@ -17,8 +18,7 @@ const SchemasVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-schemas'); + this.element = new ComponentsSchemasElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/SecuritySchemesVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/SecuritySchemesVisitor.ts index b52ec74e20..4156cfd962 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/SecuritySchemesVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/SecuritySchemesVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsSecuritySchemesElement from '../../../../elements/nces/ComponentsSecuritySchemes'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const SecuritySchemesVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-security-schemes'); + this.element = new ComponentsSecuritySchemesElement(); }, methods: { ObjectElement(objectElement: ObjectElement) { diff --git a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ServerBindingsVisitor.ts b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ServerBindingsVisitor.ts index 112a01b4c0..90e8c78516 100644 --- a/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ServerBindingsVisitor.ts +++ b/packages/apidom-ns-asyncapi-2/src/refractor/visitors/async-api-2/components/ServerBindingsVisitor.ts @@ -2,6 +2,7 @@ import stampit from 'stampit'; import { ObjectElement, Element } from '@swagger-api/apidom-core'; import ReferenceElement from '../../../../elements/Reference'; +import ComponentsServerBindingsElement from '../../../../elements/nces/ComponentsServerBindings'; import MapVisitor from '../../generics/MapVisitor'; import FallbackVisitor from '../../FallbackVisitor'; import { isReferenceLikeElement } from '../../../predicates'; @@ -17,8 +18,7 @@ const ServerBindingsVisitor = stampit(MapVisitor, FallbackVisitor, { }, }, init() { - this.element = new ObjectElement(); - this.element.classes.push('components-server-bindings'); + this.element = new ComponentsServerBindingsElement(); }, methods: { ObjectElement(objectElement: ObjectElement) {