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
87 changes: 48 additions & 39 deletions packages/apidom-ns-asyncapi-2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

`@swagger-api/apidom-ns-asyncapi-2` contains ApiDOM namespace supports following AsyncAPI specification versions:

- [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.3.0 specification](https://github.com/asyncapi/spec/blob/v2.3.0/spec/asyncapi.md)
- [AsyncAPI 2.2.0 specification](https://github.com/asyncapi/spec/blob/v2.2.0/spec/asyncapi.md)
- [AsyncAPI 2.1.0 specification](https://github.com/asyncapi/spec/blob/v2.1.0/spec/asyncapi.md)
- [AsyncAPI 2.0.0 specification](https://github.com/asyncapi/spec/blob/2.0.0/versions/2.0.0/asyncapi.md)


## Installation

Expand Down Expand Up @@ -138,15 +140,15 @@ const plugin = ({ predicates, namespace }) => ({
},
visitor: {
InfoElement(infoElement) {
infoElement.version = '2.2.0';
infoElement.version = '2.3.0';
},
},
post() {
console.dir('runs after traversal');
},
});

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

You can define as many plugins as needed to enhance the resulting namespaced ApiDOM structure.
Expand All @@ -163,7 +165,7 @@ import { parse } from '@swagger-api/apidom-parser-adapter-yaml-1-2';
import { refractorPluginReplaceEmptyElement, AsyncApi2Element } from '@swagger-api/apidom-ns-asyncapi-2';

const yamlDefinition = `
asyncapi: 2.2.0
asyncapi: 2.3.0
info:
`;
const apiDOM = await parse(yamlDefinition);
Expand Down Expand Up @@ -196,40 +198,40 @@ Only fully implemented specification objects should be checked here.

### Specification Objects

- [x] [AsyncAPI Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#A2SObject)
- [x] [AsyncAPI Version String](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#A2SVersionString)
- [x] [Identifier](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#A2SIdString)
- [x] [Info Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#A2SIdString)
- [x] [Contact Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#contactObject)
- [x] [License Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#license-object)
- [x] [Servers Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#serversObject)
- [x] [Server Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#serverObject)
- [x] [Server Variable Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#serverVariableObject)
- [x] [Default Content Type](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#defaultContentTypeString)
- [x] [Channels Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#channelsObject)
- [x] [Channel Item Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#channelItemObject)
- [x] [Operation Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#operationObject)
- [x] [Operation Trait Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#operationTraitObject)
- [x] [Message Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#messageObject)
- [x] [Message Trait Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#messageTraitObject)
- [x] [Tags Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#tagsObject)
- [x] [Tag Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#tag-object)
- [x] [External Documentation Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#externalDocumentationObject)
- [x] [Components Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#componentsObject)
- [x] [Reference Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#referenceObject)
- [x] [Schema Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#schemaObject)
- [x] [Security Scheme Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#securitySchemeObject)
- [x] [Security Requirement Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#security-requirement-object)
- [x] [OAuth Flows Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#oauth-flows-object)
- [x] [OAuth Flow Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#oauth-flow-object)
- [x] [Server Bindings Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#serverBindingsObject)
- [x] [Parameters Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#parametersObject)
- [x] [Parameter Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#parameterObject)
- [x] [Channel Bindings Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#channel-bindings-object)
- [x] [Operation Bindings Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#operation-bindings-object)
- [x] [Message Bindings Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#messageBindingsObject)
- [x] [Correlation ID Object](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#correlationIdObject)
- [x] [Specification Extension](https://github.com/asyncapi/spec/blob/main/spec/asyncapi.md#specificationExtensions)
- [x] [AsyncAPI Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#A2SObject)
- [x] [AsyncAPI Version String](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#A2SVersionString)
- [x] [Identifier](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#A2SIdString)
- [x] [Info Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#A2SIdString)
- [x] [Contact Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#contactObject)
- [x] [License Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#license-object)
- [x] [Servers Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#serversObject)
- [x] [Server Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#serverObject)
- [x] [Server Variable Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#serverVariableObject)
- [x] [Default Content Type](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#defaultContentTypeString)
- [x] [Channels Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#channelsObject)
- [x] [Channel Item Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#channelItemObject)
- [x] [Operation Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#operationObject)
- [x] [Operation Trait Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#operationTraitObject)
- [x] [Message Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#messageObject)
- [x] [Message Trait Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#messageTraitObject)
- [x] [Tags Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#tagsObject)
- [x] [Tag Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#tag-object)
- [x] [External Documentation Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#externalDocumentationObject)
- [x] [Components Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#componentsObject)
- [x] [Reference Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#referenceObject)
- [x] [Schema Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#schemaObject)
- [x] [Security Scheme Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#securitySchemeObject)
- [x] [Security Requirement Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#security-requirement-object)
- [x] [OAuth Flows Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#oauth-flows-object)
- [x] [OAuth Flow Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#oauth-flow-object)
- [x] [Server Bindings Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#serverBindingsObject)
- [x] [Parameters Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#parametersObject)
- [x] [Parameter Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#parameterObject)
- [x] [Channel Bindings Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#channel-bindings-object)
- [x] [Operation Bindings Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#operation-bindings-object)
- [x] [Message Bindings Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#messageBindingsObject)
- [x] [Correlation ID Object](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#correlationIdObject)
- [x] [Specification Extension](https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#specificationExtensions)

### Binding Objects

Expand Down Expand Up @@ -310,6 +312,13 @@ Only fully implemented specification objects should be checked here.
- [x] [Operation Binding Object](https://github.com/asyncapi/bindings/blob/main/sns/README.md#operation-binding-object)
- [x] [Message Binding Object](https://github.com/asyncapi/bindings/blob/main/sns/README.md#message-binding-object)

#### Solace

- [x] [Server Binding Object](https://github.com/asyncapi/bindings/blob/main/solace/README.md#server-binding-object)
- [x] [Channel Binding Object](https://github.com/asyncapi/bindings/blob/main/solace/README.md#channel-binding-object)
- [x] [Operation Binding Object](https://github.com/asyncapi/bindings/blob/main/solace/README.md#operation-binding-object)
- [x] [Message Binding Object](https://github.com/asyncapi/bindings/blob/main/solace/README.md#message-binding-object)

#### SQS

- [x] [Server Binding Object](https://github.com/asyncapi/bindings/blob/main/sqs/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 @@ -12,6 +12,7 @@ import Mqtt5ChannelBindingElement from './bindings/mqtt5/Mqtt5ChannelBinding';
import NatsChannelBindingElement from './bindings/nats/NatsChannelBinding';
import JmsChannelBindingElement from './bindings/jms/JmsChannelBinding';
import SnsChannelBindingElement from './bindings/sns/SnsChannelBinding';
import SolaceChannelBindingElement from './bindings/solace/SolaceChannelBinding';
import SqsChannelBindingElement from './bindings/sqs/SqsChannelBinding';
import StompChannelBindingElement from './bindings/stomp/StompChannelBinding';
import RedisChannelBindingElement from './bindings/redis/RedisChannelBinding';
Expand Down Expand Up @@ -112,6 +113,14 @@ class ChannelBindings extends ObjectElement {
this.set('sns', sns);
}

get solace(): SolaceChannelBindingElement | undefined {
return this.get('solace');
}

set solace(solace: SolaceChannelBindingElement | undefined) {
this.set('solace', solace);
}

get sqs(): SqsChannelBindingElement | undefined {
return this.get('sqs');
}
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 @@ -12,6 +12,7 @@ import Mqtt5MessageBindingElement from './bindings/mqtt5/Mqtt5MessageBinding';
import NatsMessageBindingElement from './bindings/nats/NatsMessageBinding';
import JmsMessageBindingElement from './bindings/jms/JmsMessageBinding';
import SnsMessageBindingElement from './bindings/sns/SnsMessageBinding';
import SolaceMessageBindingElement from './bindings/solace/SolaceMessageBinding';
import SqsMessageBindingElement from './bindings/sqs/SqsMessageBinding';
import StompMessageBindingElement from './bindings/stomp/StompMessageBinding';
import RedisMessageBindingElement from './bindings/redis/RedisMessageBinding';
Expand Down Expand Up @@ -112,6 +113,14 @@ class MessageBindings extends ObjectElement {
this.set('sns', sns);
}

get solace(): SolaceMessageBindingElement | undefined {
return this.get('solace');
}

set solace(solace: SolaceMessageBindingElement | undefined) {
this.set('solace', solace);
}

get sqs(): SqsMessageBindingElement | undefined {
return this.get('sqs');
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import Mqtt5OperationBindingElement from './bindings/mqtt5/Mqtt5OperationBinding
import NatsOperationBindingElement from './bindings/nats/NatsOperationBinding';
import JmsOperationBindingElement from './bindings/jms/JmsOperationBinding';
import SnsOperationBindingElement from './bindings/sns/SnsOperationBinding';
import SolaceOperationBindingElement from './bindings/solace/SolaceOperationBinding';
import SqsOperationBindingElement from './bindings/sqs/SqsOperationBinding';
import StompOperationBindingElement from './bindings/stomp/StompOperationBinding';
import RedisOperationBindingElement from './bindings/redis/RedisOperationBinding';
Expand Down Expand Up @@ -111,6 +112,14 @@ class OperationBindings extends ObjectElement {
this.set('sns', sns);
}

get solace(): SolaceOperationBindingElement | undefined {
return this.get('solace');
}

set solace(solace: SolaceOperationBindingElement | undefined) {
this.set('solace', solace);
}

get sqs(): SqsOperationBindingElement | undefined {
return this.get('sqs');
}
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 @@ -12,6 +12,7 @@ import Mqtt5ServerBindingElement from './bindings/mqtt5/Mqtt5ServerBinding';
import NatsServerBindingElement from './bindings/nats/NatsServerBinding';
import JmsServerBindingElement from './bindings/jms/JmsServerBinding';
import SnsServerBindingElement from './bindings/sns/SnsServerBinding';
import SolaceServerBindingElement from './bindings/solace/SolaceServerBinding';
import SqsServerBindingElement from './bindings/sqs/SqsServerBinding';
import StompServerBindingElement from './bindings/stomp/StompServerBinding';
import RedisServerBindingElement from './bindings/redis/RedisServerBinding';
Expand Down Expand Up @@ -112,6 +113,14 @@ class ServerBindings extends ObjectElement {
this.set('sns', sns);
}

get solace(): SolaceServerBindingElement | undefined {
return this.get('solace');
}

set solace(solace: SolaceServerBindingElement | undefined) {
this.set('solace', solace);
}

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

class SolaceChannelBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'solaceChannelBinding';
this.classes.push('channel-binding');
}
}

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

class SolaceMessageBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'solaceMessageBinding';
this.classes.push('message-binding');
}
}

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

class SolaceOperationBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'solaceOperationBinding';
this.classes.push('operation-binding');
}

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

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

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

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

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

class SolaceServerBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'solaceServerBinding';
this.classes.push('server-binding');
}

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

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

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

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

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

class ComponentsChannels extends ObjectElement {
static primaryClass = 'components-channels';

constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.classes.push(ComponentsChannels.primaryClass);
}
}

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

class ComponentsServers extends ObjectElement {
static primaryClass = 'components-servers';

constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.classes.push(ComponentsServers.primaryClass);
}
}

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

/**
* AsyncApi 2.0.0 | 2.1.0 | 2.2.0 specification elements.
* AsyncApi 2.3.0 | 2.2.0 | 2.1.0 | 2.0.0 specification elements.
*/
export { default as AsyncApi2Element } from './elements/AsyncApi2';
export { default as AsyncApiVersionElement } from './elements/AsyncApiVersion';
Expand Down Expand Up @@ -163,6 +163,11 @@ export { default as SnsChannelBindingElement } from './elements/bindings/sns/Sns
export { default as SnsMessageBindingElement } from './elements/bindings/sns/SnsMessageBinding';
export { default as SnsOperationBindingElement } from './elements/bindings/sns/SnsOperationBinding';
export { default as SnsServerBindingElement } from './elements/bindings/sns/SnsServerBinding';
// Solace
export { default as SolaceChannelBindingElement } from './elements/bindings/solace/SolaceChannelBinding';
export { default as SolaceMessageBindingElement } from './elements/bindings/solace/SolaceMessageBinding';
export { default as SolaceOperationBindingElement } from './elements/bindings/solace/SolaceOperationBinding';
export { default as SolaceServerBindingElement } from './elements/bindings/solace/SolaceServerBinding';
// SQS
export { default as SqsChannelBindingElement } from './elements/bindings/sqs/SqsChannelBinding';
export { default as SqsMessageBindingElement } from './elements/bindings/sqs/SqsMessageBinding';
Expand Down
3 changes: 3 additions & 0 deletions packages/apidom-ns-asyncapi-2/src/media-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ const mediaTypes = new AsyncAPIMediaTypes(
'application/vnd.aai.asyncapi;version=2.2.0',
'application/vnd.aai.asyncapi+json;version=2.2.0',
'application/vnd.aai.asyncapi+yaml;version=2.2.0',
'application/vnd.aai.asyncapi;version=2.3.0',
'application/vnd.aai.asyncapi+json;version=2.3.0',
'application/vnd.aai.asyncapi+yaml;version=2.3.0',
);

export default mediaTypes;
Loading