Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import {
ApidomCompletionItem,
CompletionFormat,
CompletionType,
} from '../../../../../../apidom-language-types.ts';

const completion: ApidomCompletionItem[] = [
{
label: 'queue',
insertText: 'queue',
kind: 14,
format: CompletionFormat.OBJECT,
type: CompletionType.PROPERTY,
insertTextFormat: 2,
documentation: {
kind: 'markdown',
value:
'[Queue](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#queue)\n\\\n\\\nA definition of the queue that will be used as the channel.',
},
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.2.0']],
},
],
},
{
label: 'deadLetterQueue',
insertText: 'deadLetterQueue',
kind: 14,
format: CompletionFormat.OBJECT,
type: CompletionType.PROPERTY,
insertTextFormat: 2,
documentation: {
kind: 'markdown',
value:
'[Queue](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#queue)\n\\\n\\\nA definition of the queue that will be used for un-processable messages.',
},
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.2.0']],
},
],
},
];

export default completion;
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import {
ApidomCompletionItem,
CompletionFormat,
CompletionType,
} from '../../../../../../apidom-language-types.ts';

const completion: ApidomCompletionItem[] = [
{
label: 'queue',
insertText: 'queue',
kind: 14,
format: CompletionFormat.OBJECT,
type: CompletionType.PROPERTY,
insertTextFormat: 2,
documentation: {
kind: 'markdown',
value:
'[Queue](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#queue)\n\\\n\\\nA definition of the queue that will be used as the channel.',
},
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.3.0']],
},
],
},
{
label: 'deadLetterQueue',
insertText: 'deadLetterQueue',
kind: 14,
format: CompletionFormat.OBJECT,
type: CompletionType.PROPERTY,
insertTextFormat: 2,
documentation: {
kind: 'markdown',
value:
'[Queue](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#queue)\n\\\n\\\nA definition of the queue that will be used for un-processable messages.',
},
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.3.0']],
},
],
},
];

export default completion;
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import completion0_2_0Items from './0-2-0.ts';
import completion0_3_0Items from './0-3-0.ts';
import completionLatestItems from './latest.ts';
import {
ApidomCompletionItem,
CompletionFormat,
CompletionType,
} from '../../../../../../apidom-language-types.ts';

const completion: ApidomCompletionItem[] = [
...completion0_2_0Items,
...completion0_3_0Items,
...completionLatestItems,
{
label: 'bindingVersion',
insertText: 'bindingVersion',
kind: 14,
format: CompletionFormat.QUOTED,
type: CompletionType.PROPERTY,
insertTextFormat: 2,
documentation: {
kind: 'markdown',
value: '**Optional**, defaults to `latest`. The version of this binding.',
},
},
{
target: 'bindingVersion',
label: '0.1.0',
insertText: '0.1.0',
kind: 12,
format: CompletionFormat.QUOTED_FORCED,
type: CompletionType.VALUE,
insertTextFormat: 2,
},
{
target: 'bindingVersion',
label: '0.2.0',
insertText: '0.2.0',
kind: 12,
format: CompletionFormat.QUOTED_FORCED,
type: CompletionType.VALUE,
insertTextFormat: 2,
},
{
target: 'bindingVersion',
label: '0.3.0',
insertText: '0.3.0',
kind: 12,
format: CompletionFormat.QUOTED_FORCED,
type: CompletionType.VALUE,
insertTextFormat: 2,
},
];

export default completion;
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import {
ApidomCompletionItem,
CompletionFormat,
CompletionType,
} from '../../../../../../apidom-language-types.ts';

const completion: ApidomCompletionItem[] = [
{
label: 'queue',
insertText: 'queue',
kind: 14,
format: CompletionFormat.OBJECT,
type: CompletionType.PROPERTY,
insertTextFormat: 2,
documentation: {
kind: 'markdown',
value:
'[Queue](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#queue)\n\\\n\\\nA definition of the queue that will be used as the channel.',
},
conditions: [
{
function: 'missingField',
params: ['bindingVersion'],
},
],
},
{
label: 'deadLetterQueue',
insertText: 'deadLetterQueue',
kind: 14,
format: CompletionFormat.OBJECT,
type: CompletionType.PROPERTY,
insertTextFormat: 2,
documentation: {
kind: 'markdown',
value:
'[Queue](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#queue)\n\\\n\\\nA definition of the queue that will be used for un-processable messages.',
},
conditions: [
{
function: 'missingField',
params: ['bindingVersion'],
},
],
},
];

export default completion;
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const documentation = [
{
docs: '#### [Channel Binding Object](https://github.com/asyncapi/bindings/blob/master/sqs#channel)\n\nThis object MUST NOT contain any properties. Its name is reserved for future use.',
docs: '#### [Channel Binding Object](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#channel-binding-object)\n\n##### Fixed Fields\n\nField Name | Type | Description\n---|:---:|---\nqueue | [Queue](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#queue) | **Required**. A definition of the queue that will be used as the channel.\ndeadLetterQueue | [Queue](https://github.com/asyncapi/bindings/blob/master/sqs/README.md#queue) | **Optional**. A definition of the queue that will be used for un-processable messages.\nbindingVersion | string | **Optional**, defaults to `latest`. The version of this binding.',
},
];
export default documentation;
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { DiagnosticSeverity } from 'vscode-languageserver-types';

import ApilintCodes from '../../../../../../codes.ts';
import { LinterMeta } from '../../../../../../../apidom-language-types.ts';

const allowedFieldsLint: LinterMeta = {
code: ApilintCodes.NOT_ALLOWED_FIELDS,
source: 'apilint',
message: 'Object includes not allowed fields.',
severity: DiagnosticSeverity.Error,
linterFunction: 'allowedFields',
linterParams: [['queue', 'deadLetterQueue', 'bindingVersion']],
marker: 'key',
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.2.0']],
},
],
};

export default allowedFieldsLint;
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { DiagnosticSeverity } from 'vscode-languageserver-types';

import ApilintCodes from '../../../../../../codes.ts';
import { LinterMeta } from '../../../../../../../apidom-language-types.ts';

const deadLetterQueueTypeLint: LinterMeta = {
code: ApilintCodes.ASYNCAPI2_SQS_CHANNEL_BINDING_FIELD_DEAD_LETTER_QUEUE_TYPE,
source: 'apilint',
message: "'deadLetterQueue' value must be an object",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintType',
linterParams: ['object'],
marker: 'value',
target: 'deadLetterQueue',
data: {},
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.2.0']],
},
],
};

export default deadLetterQueueTypeLint;
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import allowedFieldsLint from './allowed-fields.ts';
import queueTypeLint from './queue--type.ts';
import deadLetterQueueTypeLint from './dead-letter-queue--type.ts';

const lints = [queueTypeLint, deadLetterQueueTypeLint, allowedFieldsLint];

export default lints;
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { DiagnosticSeverity } from 'vscode-languageserver-types';

import ApilintCodes from '../../../../../../codes.ts';
import { LinterMeta } from '../../../../../../../apidom-language-types.ts';

const queueTypeLint: LinterMeta = {
code: ApilintCodes.ASYNCAPI2_SQS_CHANNEL_BINDING_FIELD_QUEUE_TYPE,
source: 'apilint',
message: "'queue' value must be an object",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintType',
linterParams: ['object'],
marker: 'value',
target: 'queue',
data: {},
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.2.0']],
},
],
};

export default queueTypeLint;
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { DiagnosticSeverity } from 'vscode-languageserver-types';

import ApilintCodes from '../../../../../../codes.ts';
import { LinterMeta } from '../../../../../../../apidom-language-types.ts';

const allowedFieldsLint: LinterMeta = {
code: ApilintCodes.NOT_ALLOWED_FIELDS,
source: 'apilint',
message: 'Object includes not allowed fields.',
severity: DiagnosticSeverity.Error,
linterFunction: 'allowedFields',
linterParams: [['queue', 'deadLetterQueue', 'bindingVersion']],
marker: 'key',
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.3.0']],
},
],
};

export default allowedFieldsLint;
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { DiagnosticSeverity } from 'vscode-languageserver-types';

import ApilintCodes from '../../../../../../codes.ts';
import { LinterMeta } from '../../../../../../../apidom-language-types.ts';

const deadLetterQueueTypeLint: LinterMeta = {
code: ApilintCodes.ASYNCAPI2_SQS_CHANNEL_BINDING_FIELD_DEAD_LETTER_QUEUE_TYPE,
source: 'apilint',
message: "'deadLetterQueue' value must be an object",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintType',
linterParams: ['object'],
marker: 'value',
target: 'deadLetterQueue',
data: {},
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.3.0']],
},
],
};

export default deadLetterQueueTypeLint;
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import allowedFieldsLint from './allowed-fields.ts';
import queueTypeLint from './queue--type.ts';
import deadLetterQueueTypeLint from './dead-letter-queue--type.ts';

const lints = [queueTypeLint, deadLetterQueueTypeLint, allowedFieldsLint];

export default lints;
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { DiagnosticSeverity } from 'vscode-languageserver-types';

import ApilintCodes from '../../../../../../codes.ts';
import { LinterMeta } from '../../../../../../../apidom-language-types.ts';

const queueTypeLint: LinterMeta = {
code: ApilintCodes.ASYNCAPI2_SQS_CHANNEL_BINDING_FIELD_QUEUE_TYPE,
source: 'apilint',
message: "'queue' value must be an object",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintType',
linterParams: ['object'],
marker: 'value',
target: 'queue',
data: {},
conditions: [
{
targets: [{ path: 'bindingVersion' }],
function: 'apilintValueOrArray',
params: [['0.3.0']],
},
],
};

export default queueTypeLint;
Loading