Skip to content

Commit e71c156

Browse files
committed
feat(apidom-ls): add rules for allowed fields
1 parent f81a7ee commit e71c156

File tree

35 files changed

+717
-12
lines changed

35 files changed

+717
-12
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import ApilintCodes from '../../../codes';
2+
import { LinterMeta } from '../../../../apidom-language-types';
3+
4+
const asyncapi2AllowedFieldsLint: LinterMeta = {
5+
code: ApilintCodes.ALL_NOT_ALLOWED_FIELDS,
6+
source: 'apilint',
7+
message: 'Object includes not allowed fields',
8+
severity: 1,
9+
linterFunction: 'allowedFields',
10+
linterParams: [
11+
[
12+
'asyncapi',
13+
'id',
14+
'info',
15+
'servers',
16+
'defaultContentType',
17+
'channels',
18+
'components',
19+
'tags',
20+
'externalDocs',
21+
],
22+
'x-',
23+
],
24+
marker: 'key',
25+
};
26+
27+
export default asyncapi2AllowedFieldsLint;

packages/apidom-ls/src/config/asyncapi/asyncapi2/lint/lints.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import rootDefaultContentTypeLint from './defaultcontenttype';
1313
import serversLint from './servers';
1414
import serversKeyLint from './servers-key';
1515
import channelsMembersLint from './channels-members';
16+
import asyncapi2AllowedFieldsLint from './allowed-fields';
1617

1718
const asyncapiRootLints = [
1819
rootIdLint,
@@ -30,6 +31,7 @@ const asyncapiRootLints = [
3031
serversLint,
3132
serversKeyLint,
3233
channelsMembersLint,
34+
asyncapi2AllowedFieldsLint,
3335
];
3436

3537
export default asyncapiRootLints;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import ApilintCodes from '../../../codes';
2+
import { LinterMeta } from '../../../../apidom-language-types';
3+
4+
const channelAllowedFieldsLint: LinterMeta = {
5+
code: ApilintCodes.ALL_NOT_ALLOWED_FIELDS,
6+
source: 'apilint',
7+
message: 'Object includes not allowed fields',
8+
severity: 1,
9+
linterFunction: 'allowedFields',
10+
linterParams: [
11+
['$ref', 'description', 'servers', 'subscribe', 'publish', 'parameters', 'bindings'],
12+
'x-',
13+
],
14+
marker: 'key',
15+
};
16+
17+
export default channelAllowedFieldsLint;

packages/apidom-ls/src/config/asyncapi/channel-item/lint/lints.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import channelSubscribeLint from './subscribe';
77
import channelPublishLint from './publish';
88
import channelParametersLint from './parameters';
99
import channelBindingsLint from './bindings';
10+
import channelAllowedFieldsLint from './allowed-fields';
1011

1112
const channelLints = [
1213
channel$RefLint,
@@ -18,6 +19,7 @@ const channelLints = [
1819
channelPublishLint,
1920
channelParametersLint,
2021
channelBindingsLint,
22+
channelAllowedFieldsLint,
2123
];
2224

2325
export default channelLints;

packages/apidom-ls/src/config/asyncapi/config.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import jsonSchemaMeta from '../common/schema/meta';
44
import securitySchemeMeta from './securityscheme/meta';
55
import infoMeta from '../common/info/meta';
66
import contactMeta from '../common/contact/meta';
7-
import operationMeta from '../common/operation/meta';
87
import channelMeta from './channel-item/meta';
98
import serversMeta from './servers/meta';
109
import externalDocsMeta from './external-documentation/meta';
@@ -14,6 +13,8 @@ import securityRequirementMeta from './securityrequirement/meta';
1413
import serverVariableMeta from './server-variable/meta';
1514
import channelsMeta from './channels/meta';
1615
import parameterMeta from './parameter/meta';
16+
import operationMeta from './operation/meta';
17+
import operationTraitMeta from './operation-trait/meta';
1718

1819
export default {
1920
'*': {
@@ -23,7 +24,7 @@ export default {
2324
contact: contactMeta,
2425
license: licenseMeta,
2526
operation: operationMeta,
26-
operationTrait: operationMeta,
27+
operationTrait: operationTraitMeta,
2728
channelItem: channelMeta,
2829
channels: channelsMeta,
2930
asyncApi2: asyncapi2Meta,
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import ApilintCodes from '../../../codes';
2+
import { LinterMeta } from '../../../../apidom-language-types';
3+
4+
const operationTraitAllowedFieldsLint: LinterMeta = {
5+
code: ApilintCodes.ALL_NOT_ALLOWED_FIELDS,
6+
source: 'apilint',
7+
message: 'Object includes not allowed fields',
8+
severity: 1,
9+
linterFunction: 'allowedFields',
10+
linterParams: [
11+
['operationId', 'description', 'summary', 'tags', 'externalDocs', 'bindings', '$ref'],
12+
'x-',
13+
],
14+
marker: 'key',
15+
};
16+
17+
export default operationTraitAllowedFieldsLint;
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import operationIdLint from '../../../common/operation/lint/operationid';
2-
import operationTagsLint from '../../../common/operation/lint/tags';
3-
import operationDescriptionLint from '../../../common/operation/lint/description';
4-
import operationSummaryLint from '../../../common/operation/lint/summary';
1+
import operationIdLint from '../../operation/lint/operationid';
2+
import operationTagsLint from '../../operation/lint/tags';
3+
import operationDescriptionLint from '../../operation/lint/description';
4+
import operationSummaryLint from '../../operation/lint/summary';
55
import externaldocsObjectLint from '../../asyncapi2/lint/externaldocs-object';
6-
import operationBindingsLint from '../../../common/operation/lint/bindings';
7-
import operationIdUniqueLint from '../../../common/operation/lint/operationid-unique';
6+
import operationBindingsLint from '../../operation/lint/bindings';
7+
import operationIdUniqueLint from '../../operation/lint/operationid-unique';
8+
import operationTraitAllowedFieldsLint from './allowed-fields';
89

910
const operationTraitLints = [
1011
operationIdLint,
@@ -14,6 +15,7 @@ const operationTraitLints = [
1415
externaldocsObjectLint,
1516
operationBindingsLint,
1617
operationIdUniqueLint,
18+
operationTraitAllowedFieldsLint,
1719
];
1820

1921
export default operationTraitLints;

0 commit comments

Comments
 (0)