Skip to content

Commit 7a8fed2

Browse files
committed
feat(apidom-ls): add rules for http and kafka message binding
1 parent 4473af7 commit 7a8fed2

File tree

7 files changed

+107
-1
lines changed

7 files changed

+107
-1
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import {
2+
ApidomCompletionItem,
3+
CompletionFormat,
4+
CompletionType,
5+
} from '../../../../apidom-language-types';
6+
7+
const httpMessageBindingCompleteJson: ApidomCompletionItem[] = [
8+
{
9+
label: 'headers',
10+
insertText: 'headers',
11+
kind: 14,
12+
format: CompletionFormat.OBJECT,
13+
type: CompletionType.PROPERTY,
14+
insertTextFormat: 2,
15+
documentation: {
16+
kind: 'markdown',
17+
value:
18+
'[Schema object](https://www.asyncapi.com/docs/specifications/v2.2.0#schemaObject)\n\n ---- \n\nA Schema object containing the definitions for HTTP-specific headers. This schema MUST be of type `object` and have a `properties` key.',
19+
},
20+
},
21+
{
22+
label: 'bindingVersion',
23+
insertText: 'bindingVersion',
24+
kind: 14,
25+
format: CompletionFormat.QUOTED,
26+
type: CompletionType.PROPERTY,
27+
insertTextFormat: 2,
28+
documentation: {
29+
kind: 'markdown',
30+
value: 'The version of this binding. If omitted, "latest" MUST be assumed.',
31+
},
32+
},
33+
];
34+
35+
export default httpMessageBindingCompleteJson;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const httpMessageBindingDocs = [
2+
{
3+
target: 'headers',
4+
docs: '[Schema object](https://www.asyncapi.com/docs/specifications/v2.2.0#schemaObject)\n\n ---- \n\nA Schema object containing the definitions for HTTP-specific headers. This schema MUST be of type `object` and have a `properties` key.',
5+
},
6+
{
7+
target: 'bindingVersion',
8+
docs: 'The version of this binding. If omitted, "latest" MUST be assumed.',
9+
},
10+
{
11+
docs: 'This object contains information about the message representation in HTTP.',
12+
},
13+
];
14+
export default httpMessageBindingDocs;

packages/apidom-ls/src/config/asyncapi/http-message-binding/lint/headers-properties.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { LinterMeta } from '../../../../apidom-language-types';
44
const headersPropertiesLint: LinterMeta = {
55
code: ApilintCodes.MESSAGE_BINDING_HTTP_HEADERS,
66
source: 'apilint',
7-
message: '"headers" must be a schema',
7+
message: '"headers" must have a `properties` key',
88
severity: 1,
99
linterFunction: 'hasRequiredField',
1010
linterParams: ['properties'],
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { FormatMeta } from '../../../apidom-language-types';
22
import httpMessageBindingLints from './lint/lints';
3+
import httpMessageBindingCompleteJson from './complete/http-message-binding';
4+
import httpMessageBindingDocs from './docs/http-message-binding';
35

46
const httpMessageBindingMeta: FormatMeta = {
57
lint: httpMessageBindingLints,
8+
completion: httpMessageBindingCompleteJson,
9+
documentation: httpMessageBindingDocs,
610
};
711

812
export default httpMessageBindingMeta;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import {
2+
ApidomCompletionItem,
3+
CompletionFormat,
4+
CompletionType,
5+
} from '../../../../apidom-language-types';
6+
7+
const kafkaMessageBindingCompleteJson: ApidomCompletionItem[] = [
8+
{
9+
label: 'key',
10+
insertText: 'key',
11+
kind: 14,
12+
format: CompletionFormat.OBJECT,
13+
type: CompletionType.PROPERTY,
14+
insertTextFormat: 2,
15+
documentation: {
16+
kind: 'markdown',
17+
value:
18+
'[Schema Object][schemaObject] \\| [AVRO Schema Object](https://avro.apache.org/docs/current/spec.html) | The message key. **NOTE**: You can also use the [reference object](https://asyncapi.io/docs/specifications/v2.1.0#referenceObject) way.',
19+
},
20+
},
21+
{
22+
label: 'bindingVersion',
23+
insertText: 'bindingVersion',
24+
kind: 14,
25+
format: CompletionFormat.QUOTED,
26+
type: CompletionType.PROPERTY,
27+
insertTextFormat: 2,
28+
documentation: {
29+
kind: 'markdown',
30+
value: 'The version of this binding. If omitted, "latest" MUST be assumed.',
31+
},
32+
},
33+
];
34+
35+
export default kafkaMessageBindingCompleteJson;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const kafkaMessageBindingDocs = [
2+
{
3+
target: 'key',
4+
docs: '[Schema Object][schemaObject] \\| [AVRO Schema Object](https://avro.apache.org/docs/current/spec.html) | The message key. **NOTE**: You can also use the [reference object](https://asyncapi.io/docs/specifications/v2.1.0#referenceObject) way.',
5+
},
6+
{
7+
target: 'bindingVersion',
8+
docs: 'The version of this binding. If omitted, "latest" MUST be assumed.',
9+
},
10+
{
11+
docs: 'This object contains information about the message representation in Kafka.',
12+
},
13+
];
14+
export default kafkaMessageBindingDocs;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { FormatMeta } from '../../../apidom-language-types';
22
import kafkaMessageBindingLints from './lint/lints';
3+
import kafkaMessageBindingDocs from './docs/kafka-message-binding';
4+
import kafkaMessageBindingCompleteJson from './complete/kafka-message-binding';
35

46
const kafkaMessageBindingMeta: FormatMeta = {
57
lint: kafkaMessageBindingLints,
8+
completion: kafkaMessageBindingCompleteJson,
9+
documentation: kafkaMessageBindingDocs,
610
};
711

812
export default kafkaMessageBindingMeta;

0 commit comments

Comments
 (0)