Skip to content

Commit

Permalink
feat(ls): add rules for OpenAPI 2.0 Parameters Definitions Object (#3660
Browse files Browse the repository at this point in the history
)

Refs #3616
  • Loading branch information
char0n authored Jan 12, 2024
1 parent c53a9bc commit 12303d9
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 0 deletions.
3 changes: 3 additions & 0 deletions packages/apidom-ls/src/config/codes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -766,6 +766,9 @@ enum ApilintCodes {
OPENAPI2_DEFINITIONS = 3140000,
OPENAPI2_DEFINITIONS_VALUES_TYPE = 3140100,

OPENAPI2_PARAMETERS_DEFINITIONS = 3150000,
OPENAPI2_PARAMETERS_DEFINITIONS_VALUES_TYPE = 3150100,

OPENAPI3_0 = 5000000,

OPENAPI3_0_OPENAPI_VALUE_PATTERN_3_0_0 = 5000100,
Expand Down
2 changes: 2 additions & 0 deletions packages/apidom-ls/src/config/openapi/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import oauthFlowMeta from './oauth-flow/meta';
import oauthFlowsMeta from './oauth-flows/meta';
import operationMeta from './operation/meta';
import parameterMeta from './parameter/meta';
import parametersDefinitionsMeta from './parameters-definitions/meta';
import pathItemMeta from './path-item/meta';
import pathsMeta from './paths/meta';
import requestBodyMeta from './request-body/meta';
Expand Down Expand Up @@ -76,6 +77,7 @@ export default {
oAuthFlows: oauthFlowsMeta,
operation: operationMeta,
parameter: parameterMeta,
parametersDefinitions: parametersDefinitionsMeta,
pathItem: pathItemMeta,
paths: pathsMeta,
requestBody: requestBodyMeta,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { OpenAPI2 } from '../target-specs';

const documentation = [
{
docs: '#### [Parameters Definitions Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#parameters-definitions-object)\n\nAn object to hold parameters to be reused across operations. Parameter definitions can be referenced to the ones defined here.\n\nThis does *not* define global operation parameters.\n\n##### Patterned Fields\n\nField Pattern | Type | Description\n---|:---:|---\n{name} | [Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#parameterObject) | A single parameter definition, mapping a "name" to the parameter it defines.\n\n##### Parameters Definition Object Example\n\n```js\n{\n "skipParam": {\n "name": "skip",\n "in": "query",\n "description": "number of items to skip",\n "required": true,\n "type": "integer",\n "format": "int32"\n },\n "limitParam": {\n "name": "limit",\n "in": "query",\n "description": "max records to return",\n "required": true,\n "type": "integer",\n "format": "int32"\n }\n}\n```\n\n\n\\\nYAML\n```yaml\nskipParam:\n name: skip\n in: query\n description: number of items to skip\n required: true\n type: integer\n format: int32\nlimitParam:\n name: limit\n in: query\n description: max records to return\n required: true\n type: integer\n format: int32\n```',
targetSpecs: OpenAPI2,
},
];

export default documentation;
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import valuesTypeLint from './values--type';

const lints = [valuesTypeLint];

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

import ApilintCodes from '../../../codes';
import { LinterMeta } from '../../../../apidom-language-types';
import { OpenAPI2 } from '../../target-specs';

const valuesTypeLint: LinterMeta = {
code: ApilintCodes.OPENAPI2_PARAMETERS_DEFINITIONS_VALUES_TYPE,
source: 'apilint',
message: 'Parameter Definitions Object values must be of Parameter Object shape',
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintChildrenOfElementsOrClasses',
linterParams: [['parameter']],
marker: 'key',
data: {},
targetSpecs: OpenAPI2,
};

export default valuesTypeLint;
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import lint from './lint';
import documentation from './documentation';
import { FormatMeta } from '../../../apidom-language-types';

const meta: FormatMeta = {
lint,
documentation,
};

export default meta;

0 comments on commit 12303d9

Please sign in to comment.