Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions packages/apidom-ns-asyncapi-2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

- [AsyncAPI 2.0.0 specification](https://github.com/asyncapi/spec/blob/2.0.0/versions/2.0.0/asyncapi.md)
- [AsyncAPI 2.1.0 specification](https://github.com/asyncapi/spec/blob/v2.1.0/spec/asyncapi.md)
- [AsyncAPI 2.2.0 specification](https://github.com/asyncapi/spec/blob/v2.2.0/spec/asyncapi.md)


## AsyncApi 2.x.y namespace
Expand Down Expand Up @@ -122,15 +123,15 @@ const plugin = ({ predicates, namespace }) => ({
},
visitor: {
InfoElement(infoElement) {
infoElement.version = '2.1.0';
infoElement.version = '2.2.0';
},
},
post() {
console.dir('runs after traversal');
},
});

InfoElement.refract(objectElement, { plugins: [plugin] }); // => InfoElement({ title = 'my title', description = 'my description', version = '2.1.0' })
InfoElement.refract(objectElement, { plugins: [plugin] }); // => InfoElement({ title = 'my title', description = 'my description', version = '2.2.0' })
```

You can define as many plugins as needed to enhance the resulting namespaced ApiDOM structure.
Expand Down Expand Up @@ -200,6 +201,13 @@ Only fully implemented specification objects should be checked here.
- [x] [Operation Binding Object](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#operation-binding-object)
- [x] [Message Binding Object](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#message-binding-object)

#### Anypoint MQ Bindings

- [x] [Server Binding Object](https://github.com/asyncapi/bindings/tree/master/anypointmq#server-binding-object)
- [x] [Channel Binding Object](https://github.com/asyncapi/bindings/tree/master/anypointmq#channel-binding-object)
- [x] [Operation Binding Object](https://github.com/asyncapi/bindings/tree/master/anypointmq#operation-binding-object)
- [x] [Message Binding Object](https://github.com/asyncapi/bindings/tree/master/anypointmq#message-binding-object)

#### AMQP 0-9-1 Bindings

- [x] [Server Binding Object](https://github.com/asyncapi/bindings/blob/master/amqp/README.md#server-binding-object)
Expand Down
9 changes: 9 additions & 0 deletions packages/apidom-ns-asyncapi-2/src/elements/ChannelBindings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ObjectElement } from '@swagger-api/apidom-core';
import HttpChannelBindingElement from './bindings/http/HttpChannelBinding';
import WebSocketChannelBindingElement from './bindings/ws/WebSocketChannelBinding';
import KafkaChannelBindingElement from './bindings/kafka/KafkaChannelBinding';
import AnypointmqChannelBindingElement from './bindings/anypointmq/AnypointmqChannelBinding';
import AmqpChannelBindingElement from './bindings/amqp/AmqpChannelBinding';
import Amqp1ChannelBindingElement from './bindings/amqp1/Amqp1ChannelBinding';
import MqttChannelBindingElement from './bindings/mqtt/MqttChannelBinding';
Expand Down Expand Up @@ -47,6 +48,14 @@ class ChannelBindings extends ObjectElement {
this.set('kafka', kafka);
}

get anypointmq(): AnypointmqChannelBindingElement | undefined {
return this.get('anypointmq');
}

set anypointmq(anypointmq: AnypointmqChannelBindingElement | undefined) {
this.set('anypointmq', anypointmq);
}

get amqp(): AmqpChannelBindingElement | undefined {
return this.get('amqp');
}
Expand Down
10 changes: 9 additions & 1 deletion packages/apidom-ns-asyncapi-2/src/elements/ChannelItem.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Attributes, Meta } from 'minim';
import { StringElement, ObjectElement } from '@swagger-api/apidom-core';
import { StringElement, ObjectElement, ArrayElement } from '@swagger-api/apidom-core';

import OperationElement from './Operation';
import ParametersElement from './Parameters';
Expand Down Expand Up @@ -27,6 +27,14 @@ class ChannelItem extends ObjectElement {
this.set('description', description);
}

get servers(): ArrayElement {
return this.get('servers');
}

set servers(servers: ArrayElement) {
this.set('servers', servers);
}

get subscribe(): OperationElement {
return this.get('subscribe');
}
Expand Down
9 changes: 9 additions & 0 deletions packages/apidom-ns-asyncapi-2/src/elements/MessageBindings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ObjectElement } from '@swagger-api/apidom-core';
import HttpMessageBindingElement from './bindings/http/HttpMessageBinding';
import WebSocketMessageBindingElement from './bindings/ws/WebSocketMessageBinding';
import KafkaMessageBindingElement from './bindings/kafka/KafkaMessageBinding';
import AnypointmqMessageBindingElement from './bindings/anypointmq/AnypointmqMessageBinding';
import AmqpMessageBindingElement from './bindings/amqp/AmqpMessageBinding';
import Amqp1MessageBindingElement from './bindings/amqp1/Amqp1MessageBinding';
import MqttMessageBindingElement from './bindings/mqtt/MqttMessageBinding';
Expand Down Expand Up @@ -47,6 +48,14 @@ class MessageBindings extends ObjectElement {
this.set('kafka', kafka);
}

get anypointmq(): AnypointmqMessageBindingElement | undefined {
return this.get('anypointmq');
}

set anypointmq(anypointmq: AnypointmqMessageBindingElement | undefined) {
this.set('anypointmq', anypointmq);
}

get amqp(): AmqpMessageBindingElement | undefined {
return this.get('amqp');
}
Expand Down
43 changes: 43 additions & 0 deletions packages/apidom-ns-asyncapi-2/src/elements/MessageExample.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { Attributes, Meta } from 'minim';
import { StringElement, ObjectElement } from '@swagger-api/apidom-core';

class MessageExample extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'messageExample';
}

get headers(): ObjectElement | undefined {
return this.get('headers');
}

set headers(headers: ObjectElement | undefined) {
this.set('headers', headers);
}

get payload(): Element | undefined {
return this.get('payload');
}

set payload(payload: Element | undefined) {
this.set('payload', payload);
}

get name(): StringElement {
return this.get('name');
}

set name(name: StringElement) {
this.set('name', name);
}

get summary(): StringElement {
return this.get('summary');
}

set summary(summary: StringElement) {
this.set('summary', summary);
}
}

export default MessageExample;
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ObjectElement } from '@swagger-api/apidom-core';
import HttpOperationBindingElement from './bindings/http/HttpOperationBinding';
import WebSocketOperationBindingElement from './bindings/ws/WebSocketOperationBinding';
import KafkaOperationBindingElement from './bindings/kafka/KafkaOperationBinding';
import AnypointmqOperationBindingElement from './bindings/anypointmq/AnypointmqOperationBinding';
import AmqpOperationBindingElement from './bindings/amqp/AmqpOperationBinding';
import Amqp1OperationBindingElement from './bindings/amqp1/Amqp1OperationBinding';
import MqttOperationBindingElement from './bindings/mqtt/MqttOperationBinding';
Expand Down Expand Up @@ -46,6 +47,14 @@ class OperationBindings extends ObjectElement {
this.set('kafka', kafka);
}

get anypointmq(): AnypointmqOperationBindingElement | undefined {
return this.get('anypointmq');
}

set anypointmq(anypointmq: AnypointmqOperationBindingElement | undefined) {
this.set('anypointmq', anypointmq);
}

get amqp(): AmqpOperationBindingElement | undefined {
return this.get('amqp');
}
Expand Down
9 changes: 9 additions & 0 deletions packages/apidom-ns-asyncapi-2/src/elements/ServerBindings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ObjectElement } from '@swagger-api/apidom-core';
import HttpServerBindingElement from './bindings/http/HttpServerBinding';
import WebSocketServerBindingElement from './bindings/ws/WebSocketServerBinding';
import KafkaServerBindingElement from './bindings/kafka/KafkaServerBinding';
import AnypointmqServerBindingElement from './bindings/anypointmq/AnypointmqServerBinding';
import AmqpServerBindingElement from './bindings/amqp/AmqpServerBinding';
import Amqp1ServerBindingElement from './bindings/amqp1/Amqp1ServerBinding';
import MqttServerBindingElement from './bindings/mqtt/MqttServerBinding';
Expand Down Expand Up @@ -47,6 +48,14 @@ class ServerBindings extends ObjectElement {
this.set('kafka', kafka);
}

get anypointmq(): AnypointmqServerBindingElement | undefined {
return this.get('anypointmq');
}

set anypointmq(anypointmq: AnypointmqServerBindingElement | undefined) {
this.set('anypointmq', anypointmq);
}

get amqp(): AmqpServerBindingElement | undefined {
return this.get('amqp');
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { Attributes, Meta, StringElement } from 'minim';
import { ObjectElement } from '@swagger-api/apidom-core';

class AnypointmqChannelBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'anypointmqChannelBinding';
}

get destination(): StringElement {
return this.get('destination');
}

set destination(destination: StringElement) {
this.set('destination', destination);
}

get destinationType(): StringElement {
return this.get('destinationType');
}

set destinationType(destinationType: StringElement) {
this.set('destinationType', destinationType);
}

get bindingVersion(): StringElement {
return this.get('bindingVersion');
}

set bindingVersion(bindingVersion: StringElement) {
this.set('bindingVersion', bindingVersion);
}
}

export default AnypointmqChannelBinding;
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { Attributes, Meta } from 'minim';
import { ObjectElement, StringElement } from '@swagger-api/apidom-core';

import SchemaElement from '../../Schema';

class AnypointmqMessageBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'anypointmqMessageBinding';
}

get headers(): SchemaElement {
return this.get('headers');
}

set headers(headers: SchemaElement) {
this.set('headers', headers);
}

get bindingVersion(): StringElement {
return this.get('bindingVersion');
}

set bindingVersion(bindingVersion: StringElement) {
this.set('bindingVersion', bindingVersion);
}
}

export default AnypointmqMessageBinding;
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Attributes, Meta } from 'minim';
import { ObjectElement } from '@swagger-api/apidom-core';

class AnypointmqOperationBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'anypointmqOperationBinding';
}
}

export default AnypointmqOperationBinding;
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Attributes, Meta } from 'minim';
import { ObjectElement } from '@swagger-api/apidom-core';

class AnypointmqServerBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'anypointmqServerBinding';
}
}

export default AnypointmqServerBinding;
8 changes: 7 additions & 1 deletion packages/apidom-ns-asyncapi-2/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export {
export { keyMap, getNodeType } from './traversal/visitor';

/**
* AsyncApi 2.0.0 | 2.1.0 specification elements.
* AsyncApi 2.0.0 | 2.1.0 | 2.2.0 specification elements.
*/
export { default as AsyncApi2Element } from './elements/AsyncApi2';
export { default as AsyncApiVersionElement } from './elements/AsyncApiVersion';
Expand All @@ -71,6 +71,7 @@ export { default as InfoElement } from './elements/Info';
export { default as LicenseElement } from './elements/License';
export { default as MessageElement } from './elements/Message';
export { default as MessageBindingsElement } from './elements/MessageBindings';
export { default as MessageExampleElement } from './elements/MessageExample';
export { default as MessageTraitElement } from './elements/MessageTrait';
export { default as OAuthFlowElement } from './elements/OAuthFlow';
export { default as OAuthFlowsElement } from './elements/OAuthFlows';
Expand Down Expand Up @@ -122,6 +123,11 @@ export { default as KafkaChannelBindingElement } from './elements/bindings/kafka
export { default as KafkaMessageBindingElement } from './elements/bindings/kafka/KafkaMessageBinding';
export { default as KafkaOperationBindingElement } from './elements/bindings/kafka/KafkaOperationBinding';
export { default as KafkaServerBindingElement } from './elements/bindings/kafka/KafkaServerBinding';
// Anypoint MQ
export { default as AnypointmqChannelBindingElement } from './elements/bindings/anypointmq/AnypointmqChannelBinding';
export { default as AnypointmqMessageBindingElement } from './elements/bindings/anypointmq/AnypointmqMessageBinding';
export { default as AnypointmqOperationBindingElement } from './elements/bindings/anypointmq/AnypointmqOperationBinding';
export { default as AnypointmqServerBindingElement } from './elements/bindings/anypointmq/AnypointmqServerBinding';
// Mercure
export { default as MercureChannelBindingElement } from './elements/bindings/mercure/MercureChannelBinding';
export { default as MercureMessageBindingElement } from './elements/bindings/mercure/MercureMessageBinding';
Expand Down
16 changes: 14 additions & 2 deletions packages/apidom-ns-asyncapi-2/src/namespace.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NamespacePluginOptions } from 'minim';

/**
* AsyncApi 2.0.0 | 2.1.0 specification elements.
* AsyncApi 2.0.0 | 2.1.0 | 2.2.0 specification elements.
*/
import AsyncApi2Element from './elements/AsyncApi2';
import AsyncApiVersionElement from './elements/AsyncApiVersion';
Expand All @@ -18,6 +18,7 @@ import InfoElement from './elements/Info';
import LicenseElement from './elements/License';
import MessageElement from './elements/Message';
import MessageBindingsElement from './elements/MessageBindings';
import MessageExampleElement from './elements/MessageExample';
import MessageTraitElement from './elements/MessageTrait';
import OAuthFlowElement from './elements/OAuthFlow';
import OAuthFlowsElement from './elements/OAuthFlows';
Expand Down Expand Up @@ -68,6 +69,11 @@ import KafkaChannelBindingElement from './elements/bindings/kafka/KafkaChannelBi
import KafkaMessageBindingElement from './elements/bindings/kafka/KafkaMessageBinding';
import KafkaOperationBindingElement from './elements/bindings/kafka/KafkaOperationBinding';
import KafkaServerBindingElement from './elements/bindings/kafka/KafkaServerBinding';
// Anypoint MQ
import AnypointmqChannelBindingElement from './elements/bindings/anypointmq/AnypointmqChannelBinding';
import AnypointmqMessageBindingElement from './elements/bindings/anypointmq/AnypointmqMessageBinding';
import AnypointmqOperationBindingElement from './elements/bindings/anypointmq/AnypointmqOperationBinding';
import AnypointmqServerBindingElement from './elements/bindings/anypointmq/AnypointmqServerBinding';
// Mercure
import MercureChannelBindingElement from './elements/bindings/mercure/MercureChannelBinding';
import MercureMessageBindingElement from './elements/bindings/mercure/MercureMessageBinding';
Expand Down Expand Up @@ -119,7 +125,7 @@ const asyncApi2 = {
const { base } = options;

/**
* AsyncApi 2.0.0 | 2.1.0 specification elements.
* AsyncApi 2.0.0 | 2.1.0 | 2.2.0 specification elements.
*/
base.register('asyncApi2', AsyncApi2Element);
base.register('asyncApiVersion', AsyncApiVersionElement);
Expand All @@ -136,6 +142,7 @@ const asyncApi2 = {
base.register('license', LicenseElement);
base.register('message', MessageElement);
base.register('messageBindings', MessageBindingsElement);
base.register('messageExample', MessageExampleElement);
base.register('messageTrait', MessageTraitElement);
base.register('oAuthFlow', OAuthFlowElement);
base.register('oAuthFlows', OAuthFlowsElement);
Expand Down Expand Up @@ -187,6 +194,11 @@ const asyncApi2 = {
base.register('kafkaMessageBinding', KafkaMessageBindingElement);
base.register('kafkaOperationBinding', KafkaOperationBindingElement);
base.register('kafkaServerBinding', KafkaServerBindingElement);
// Anypoint MQ
base.register('anypointmqChannelBinding', AnypointmqChannelBindingElement);
base.register('anypointmqMessageBinding', AnypointmqMessageBindingElement);
base.register('anypointmqOperationBinding', AnypointmqOperationBindingElement);
base.register('anypointmqServerBinding', AnypointmqServerBindingElement);
// Mercure
base.register('mercureChannelBinding', MercureChannelBindingElement);
base.register('mercureMessageBinding', MercureMessageBindingElement);
Expand Down
Loading