Skip to content

Commit 6d2d7c3

Browse files
committed
fix(ls): oas31 lint rules require oneOf paths, components, webhooks
1 parent c599710 commit 6d2d7c3

File tree

6 files changed

+15
-83
lines changed

6 files changed

+15
-83
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,7 @@ enum ApilintCodes {
696696
OPENAPI3_1_OPENAPI_VALUE_PATTERN_3_1_0 = 7000100,
697697

698698
OPENAPI3_1_OPEN_API = 7010000,
699+
OPENAPI3_1_OPEN_API_REQUIRED_FIELDS = 7010010,
699700
OPENAPI3_1_OPEN_API_FIELD_INFO_TYPE = 7010100,
700701
OPENAPI3_1_OPEN_API_FIELD_INFO_TYPE_REQUIRED,
701702
OPENAPI3_1_OPEN_API_FIELD_SERVERS_TYPE = 7010200,

packages/apidom-ls/src/config/openapi/openapi3_1/completion.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ const completion: ApidomCompletionItem[] = [
126126
label: 'jsonSchemaDialect',
127127
insertText: 'jsonSchemaDialect',
128128
kind: 14,
129-
format: CompletionFormat.UNQUOTED,
129+
format: CompletionFormat.QUOTED,
130130
type: CompletionType.PROPERTY,
131131
insertTextFormat: 2,
132132
documentation: {

packages/apidom-ls/src/config/openapi/openapi3_1/lint/components--required.ts

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,35 @@
11
import allowedFieldsLint from './allowed-fields';
2+
import requiredFieldsLint from './required-fields';
23
import componentsTypeLint from './components--type';
3-
import componentsRequiredLint from './components--required';
44
import externalDocsTypeLint from './external-docs--type';
55
import infoRequiredLint from './info--required';
66
import infoTypeLint from './info--type';
77
import jsonSchemaDialectFormatURILint from './jsonSchemaDialect--format-uri';
88
import pathsTypeLint from './paths--type';
9-
import pathsRequiredLint from './paths--required';
109
import securityItemsTypeLint from './security--items-type';
1110
import securityTypeLint from './security--type';
1211
import serversItemsTypeLint from './servers--items-type';
1312
import serversTypeLint from './servers--type';
1413
import tagsItemsTypeLint from './tags--items-type';
1514
import tagsTypeLint from './tags--type';
1615
import webhooksLint from './webhooks--type';
17-
import webhooksRequiredLint from './webhooks--required';
1816

1917
const lints = [
2018
allowedFieldsLint,
19+
requiredFieldsLint,
2120
componentsTypeLint,
22-
componentsRequiredLint,
2321
externalDocsTypeLint,
2422
infoRequiredLint,
2523
infoTypeLint,
2624
jsonSchemaDialectFormatURILint,
2725
pathsTypeLint,
28-
pathsRequiredLint,
2926
securityItemsTypeLint,
3027
securityTypeLint,
3128
serversItemsTypeLint,
3229
serversTypeLint,
3330
tagsItemsTypeLint,
3431
tagsTypeLint,
3532
webhooksLint,
36-
webhooksRequiredLint,
3733
];
3834

3935
export default lints;
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
import ApilintCodes from '../../../codes';
22
import { LinterMeta } from '../../../../apidom-language-types';
33

4-
const pathsRequiredLint: LinterMeta = {
5-
code: ApilintCodes.OPENAPI3_1_OPEN_API_FIELD_PATHS_REQUIRED,
4+
const requiredFieldsLint: LinterMeta = {
5+
code: ApilintCodes.OPENAPI3_1_OPEN_API_REQUIRED_FIELDS,
66
source: 'apilint',
7-
message: "should always have a 'paths' section",
7+
message: 'OpenAPI Object must contain one the following fields: paths, components, webhooks',
88
severity: 1,
99
linterFunction: 'hasRequiredField',
1010
linterParams: ['paths'],
1111
marker: 'key',
12-
// conditions: [
13-
// {
14-
// // todo: fix setup so oas31 consists at least oneOf paths, components, webhooks
15-
// targets: [{ path: 'openApi3_1' }],
16-
// function: 'apilintContainsValue',
17-
// params: ['paths'],
18-
// },
19-
// ],
12+
conditions: [
13+
{
14+
targets: [{ path: 'root' }],
15+
function: 'missingFields',
16+
params: [['paths', 'components', 'webhooks']],
17+
},
18+
],
2019
data: {
2120
quickFix: [
2221
{
@@ -29,4 +28,4 @@ const pathsRequiredLint: LinterMeta = {
2928
},
3029
};
3130

32-
export default pathsRequiredLint;
31+
export default requiredFieldsLint;

packages/apidom-ls/src/config/openapi/openapi3_1/lint/webhooks--required.ts

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)