Skip to content

Commit

Permalink
feat(ns-asyncapi-2-0): add components/parameters support
Browse files Browse the repository at this point in the history
Refs #304
  • Loading branch information
char0n committed Mar 31, 2021
1 parent d9b36a5 commit f9a7545
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import ParameterDescriptionVisitor from './visitors/async-api-2-0/parameter/Desc
import ParameterLocationVisitor from './visitors/async-api-2-0/parameter/LocationVisitor';
import ComponentsVisitor from './visitors/async-api-2-0/components';
import ComponentsSchemasVisitor from './visitors/async-api-2-0/components/SchemasVisitor';
import ComponentParametersVisitor from './visitors/async-api-2-0/components/ParametersVisitor';
import OperationVisitor from './visitors/async-api-2-0/operation';
import ChannelsVisitor from './visitors/async-api-2-0/channels';
import ChannelBindingsVisitor from './visitors/async-api-2-0/channel-bindings';
Expand Down Expand Up @@ -174,6 +175,7 @@ const specification = {
$visitor: ComponentsVisitor,
fixedFields: {
schemas: ComponentsSchemasVisitor,
parameters: ComponentParametersVisitor,
},
},
Reference: {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import stampit from 'stampit';
import { ObjectElement, Element } from 'apidom';

import ReferenceElement from '../../../../elements/Reference';
import MapVisitor from '../../generics/MapVisitor';
import FallbackVisitor from '../../FallbackVisitor';
import { appendMetadata } from '../../../metadata';
import { isParameterLikeElement, isReferenceLikeElement } from '../../../predicates';
import { isReferenceElement } from '../../../../predicates';

const ParametersVisitor = stampit(MapVisitor, FallbackVisitor, {
props: {
specPath: (element: Element) => {
// eslint-disable-next-line no-nested-ternary
return isReferenceLikeElement(element)
? ['document', 'objects', 'Reference']
: isParameterLikeElement(element)
? ['document', 'objects', 'Parameter']
: ['value'];
},
},
init() {
this.element = new ObjectElement();
appendMetadata(['parameters'], this.element);
},
methods: {
ObjectElement(objectElement: ObjectElement) {
// @ts-ignore
const result = MapVisitor.compose.methods.ObjectElement.call(this, objectElement);

this.element.filter(isReferenceElement).forEach((referenceElement: ReferenceElement) => {
referenceElement.setMetaProperty('referenced-element', 'parameter');
});

return result;
},
},
});

export default ParametersVisitor;

0 comments on commit f9a7545

Please sign in to comment.