From ebe94335c3070cd335552c8dfb04ea4a6c6e6f37 Mon Sep 17 00:00:00 2001 From: Vladimir Gorej Date: Fri, 16 Dec 2022 12:50:48 +0100 Subject: [PATCH 1/3] fix(ls): add required fields lint for OpenAPI 3.x.y Header Object --- packages/apidom-ls/src/config/codes.ts | 1 + .../src/config/openapi/header/lint/index.ts | 2 ++ .../openapi/header/lint/required-fields.ts | 32 +++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 packages/apidom-ls/src/config/openapi/header/lint/required-fields.ts diff --git a/packages/apidom-ls/src/config/codes.ts b/packages/apidom-ls/src/config/codes.ts index b975aa80e0..06b3b4466f 100644 --- a/packages/apidom-ls/src/config/codes.ts +++ b/packages/apidom-ls/src/config/codes.ts @@ -830,6 +830,7 @@ enum ApilintCodes { OPENAPI3_0_LINK_FIELD_SERVER_TYPE = 5270400, OPENAPI3_0_HEADER = 5280000, + OPENAPI3_1_HEADER_REQUIRED_FIELDS, OPENAPI3_0_HEADER_FIELD_DESCRIPTION_TYPE = 5280100, OPENAPI3_0_HEADER_FIELD_REQUIRED_TYPE = 5280200, OPENAPI3_0_HEADER_FIELD_DEPRECATED_TYPE = 5280300, diff --git a/packages/apidom-ls/src/config/openapi/header/lint/index.ts b/packages/apidom-ls/src/config/openapi/header/lint/index.ts index 65bd4d52fd..2e4984a6cd 100644 --- a/packages/apidom-ls/src/config/openapi/header/lint/index.ts +++ b/packages/apidom-ls/src/config/openapi/header/lint/index.ts @@ -1,5 +1,6 @@ import allowedFields3_0Lint from './allowed-fields-3-0'; import allowedFields3_1Lint from './allowed-fields-3-1'; +import requiredFieldsLint from './required-fields'; import descriptionTypeLint from './description--type'; import requiredTypeLint from './required--type'; import deprecatedTypeLint from './deprecated--type'; @@ -26,6 +27,7 @@ const lints = [ examplesValuesTypeLint, examplesMutuallyExclusiveLint, contentValuesTypeLint, + requiredFieldsLint, allowedFields3_0Lint, allowedFields3_1Lint, ]; diff --git a/packages/apidom-ls/src/config/openapi/header/lint/required-fields.ts b/packages/apidom-ls/src/config/openapi/header/lint/required-fields.ts new file mode 100644 index 0000000000..03cdac3c18 --- /dev/null +++ b/packages/apidom-ls/src/config/openapi/header/lint/required-fields.ts @@ -0,0 +1,32 @@ +import { DiagnosticSeverity } from 'vscode-languageserver-types'; + +import ApilintCodes from '../../../codes'; +import { LinterMeta } from '../../../../apidom-language-types'; + +const requiredFieldsLint: LinterMeta = { + code: ApilintCodes.OPENAPI3_1_HEADER_REQUIRED_FIELDS, + source: 'apilint', + message: 'Header Object must contain one the following fields: content, schema', + severity: DiagnosticSeverity.Error, + linterFunction: 'hasRequiredField', + linterParams: ['content'], + marker: 'key', + conditions: [ + { + function: 'missingFields', + params: [['content', 'schema']], + }, + ], + data: { + quickFix: [ + { + message: "add 'content' section", + action: 'addChild', + snippetYaml: 'content: \n \n', + snippetJson: '"content": {\n \n },\n', + }, + ], + }, +}; + +export default requiredFieldsLint; From e674a4574350697546f390f09ee77367b1891815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Fri, 16 Dec 2022 12:56:39 +0100 Subject: [PATCH 2/3] Update packages/apidom-ls/src/config/openapi/header/lint/required-fields.ts --- .../apidom-ls/src/config/openapi/header/lint/required-fields.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/apidom-ls/src/config/openapi/header/lint/required-fields.ts b/packages/apidom-ls/src/config/openapi/header/lint/required-fields.ts index 03cdac3c18..fb8fdb20f8 100644 --- a/packages/apidom-ls/src/config/openapi/header/lint/required-fields.ts +++ b/packages/apidom-ls/src/config/openapi/header/lint/required-fields.ts @@ -4,7 +4,7 @@ import ApilintCodes from '../../../codes'; import { LinterMeta } from '../../../../apidom-language-types'; const requiredFieldsLint: LinterMeta = { - code: ApilintCodes.OPENAPI3_1_HEADER_REQUIRED_FIELDS, + code: ApilintCodes.OPENAPI3_0_HEADER_REQUIRED_FIELDS, source: 'apilint', message: 'Header Object must contain one the following fields: content, schema', severity: DiagnosticSeverity.Error, From 62a5af21180fcf227c592f99c762dad6ea72aa16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Gorej?= Date: Fri, 16 Dec 2022 12:56:45 +0100 Subject: [PATCH 3/3] Update packages/apidom-ls/src/config/codes.ts --- packages/apidom-ls/src/config/codes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/apidom-ls/src/config/codes.ts b/packages/apidom-ls/src/config/codes.ts index 06b3b4466f..8286313513 100644 --- a/packages/apidom-ls/src/config/codes.ts +++ b/packages/apidom-ls/src/config/codes.ts @@ -830,7 +830,7 @@ enum ApilintCodes { OPENAPI3_0_LINK_FIELD_SERVER_TYPE = 5270400, OPENAPI3_0_HEADER = 5280000, - OPENAPI3_1_HEADER_REQUIRED_FIELDS, + OPENAPI3_0_HEADER_REQUIRED_FIELDS, OPENAPI3_0_HEADER_FIELD_DESCRIPTION_TYPE = 5280100, OPENAPI3_0_HEADER_FIELD_REQUIRED_TYPE = 5280200, OPENAPI3_0_HEADER_FIELD_DEPRECATED_TYPE = 5280300,