Skip to content

Commit

Permalink
fix(ls): fix validation of number range related keywords (#4597)
Browse files Browse the repository at this point in the history
- minimum
- maximum
- exclusiveMinimum
- exclusiveMaximum

Refs swagger-api/swagger-editor#5249
  • Loading branch information
char0n authored Dec 16, 2024
1 parent af857e7 commit 675962a
Show file tree
Hide file tree
Showing 9 changed files with 41 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import ApilintCodes from '../../../codes.ts';
import { LinterMeta } from '../../../../apidom-language-types.ts';
import { OpenAPI2, OpenAPI30 } from '../../../openapi/target-specs.ts';

const exclusiveMaximumTypeLint: LinterMeta = {
const exclusiveMaximumTypeBooleanLint: LinterMeta = {
code: ApilintCodes.SCHEMA_EXCLUSIVEMAXIMUM,
source: 'apilint',
message: 'exclusiveMaximum value must be a boolean',
message: "'exclusiveMaximum' value must be a boolean",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintType',
linterParams: ['boolean'],
Expand All @@ -17,4 +17,4 @@ const exclusiveMaximumTypeLint: LinterMeta = {
targetSpecs: [...OpenAPI2, ...OpenAPI30],
};

export default exclusiveMaximumTypeLint;
export default exclusiveMaximumTypeBooleanLint;
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ import { LinterMeta } from '../../../../apidom-language-types.ts';
import { AsyncAPI2 } from '../../../asyncapi/target-specs.ts';
import { OpenAPI31 } from '../../../openapi/target-specs.ts';

const exclusiveMaximumPatternLint: LinterMeta = {
const exclusiveMaximumTypeNumberLint: LinterMeta = {
code: ApilintCodes.SCHEMA_EXCLUSIVEMAXIMUM,
source: 'apilint',
message: 'exclusiveMaximum value must be a number',
message: "'exclusiveMaximum' value must be a number",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintValueRegex',
linterParams: ['^-?\\d*\\.{0,1}\\d+$', 'number'],
linterFunction: 'apilintNumber',
linterParams: [false, false, true],
marker: 'value',
target: 'exclusiveMaximum',
data: {},
targetSpecs: [...AsyncAPI2, ...OpenAPI31],
};

export default exclusiveMaximumPatternLint;
export default exclusiveMaximumTypeNumberLint;
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import ApilintCodes from '../../../codes.ts';
import { LinterMeta } from '../../../../apidom-language-types.ts';
import { OpenAPI2, OpenAPI30 } from '../../../openapi/target-specs.ts';

const exclusiveMinimumTypeLint: LinterMeta = {
const exclusiveMinimumTypeBooleanLint: LinterMeta = {
code: ApilintCodes.SCHEMA_EXCLUSIVEMAXIMUM,
source: 'apilint',
message: 'exclusiveMinimum value must be a boolean',
message: "'exclusiveMinimum' value must be a boolean",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintType',
linterParams: ['boolean'],
Expand All @@ -17,4 +17,4 @@ const exclusiveMinimumTypeLint: LinterMeta = {
targetSpecs: [...OpenAPI2, ...OpenAPI30],
};

export default exclusiveMinimumTypeLint;
export default exclusiveMinimumTypeBooleanLint;
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ import { LinterMeta } from '../../../../apidom-language-types.ts';
import { AsyncAPI2 } from '../../../asyncapi/target-specs.ts';
import { OpenAPI31 } from '../../../openapi/target-specs.ts';

const exclusiveMinimumPatternLint: LinterMeta = {
const exclusiveMinimumTypeNumberLint: LinterMeta = {
code: ApilintCodes.SCHEMA_EXCLUSIVEMINUMUM,
source: 'apilint',
message: 'exclusiveMinimum value must be a number',
message: "'exclusiveMinimum' value must be a number",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintValueRegex',
linterParams: ['^-?\\d*\\.{0,1}\\d+$', 'number'],
linterFunction: 'apilintNumber',
linterParams: [false, false, true],
marker: 'value',
target: 'exclusiveMinimum',
data: {},
targetSpecs: [...AsyncAPI2, ...OpenAPI31],
};

export default exclusiveMinimumPatternLint;
export default exclusiveMinimumTypeNumberLint;
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { OpenAPI2, OpenAPI3 } from '../../../openapi/target-specs.ts';
const formatTypeLint: LinterMeta = {
code: ApilintCodes.SCHEMA_FORMAT,
source: 'apilint',
message: "format' value must be a string",
message: "'format' value must be a string",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintType',
linterParams: ['string'],
Expand Down
24 changes: 12 additions & 12 deletions packages/apidom-ls/src/config/common/schema/lint/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ import elseNonIfLint from './else--non-if.ts';
import elseTypeLint from './else--type.ts';
import enumUniqueLint from './enum--unique.ts';
import examplesTypeLint from './examples--type.ts';
import exclusiveMaximumPatternLint from './exclusive-maximum--pattern.ts';
import exclusiveMaximumTypeLint from './exclusive-maximum--type.ts';
import exclusiveMinimumPatternLint from './exclusive-minimum--pattern.ts';
import exclusiveMinimumTypeLint from './exclusive-minimum--type.ts';
import exclusiveMaximumTypeNumberLint from './exclusive-maximum--type-number.ts';
import exclusiveMaximumTypeBooleanLint from './exclusive-maximum--type-boolean.ts';
import exclusiveMinimumTypeBooleanLint from './exclusive-minimum--type-boolean.ts';
import exclusiveMinimumTypeNumberLint from './exclusive-minimum--type-number.ts';
import xmlTypeLint from './xml--type.ts';
import externalDocsTypeLint from './external-docs--type.ts';
import formatTypeLint from './format--type.ts';
Expand All @@ -38,14 +38,14 @@ import maxItemsNonArrayLint from './max-items--non-array.ts';
import maxItemsTypeLint from './max-items--type.ts';
import maxLengthNonStringLint from './max-length--non-string.ts';
import maxLengthTypeLint from './max-length--type.ts';
import maximumPatternLint from './maximum--pattern.ts';
import maximumTypeLint from './maximum--type.ts';
import minItemsNonArrayLint from './min-items--non-array.ts';
import minItemsTypeLint from './min-items--type.ts';
import minLengthNonString from './min-length--non-string.ts';
import minLengthTypeLint from './min-length--type.ts';
import minPropertiesNonObjectLint from './min-properties--non-object.ts';
import minPropertiesTypeLint from './min-properties--type.ts';
import minimumPatternLint from './minimum--pattern.ts';
import minimumTypeLint from './minimum--type.ts';
import missingCoreFieldsOpenAPI2_0Lint from './missing-core-fields-openapi-2-0.ts';
import missingCoreFieldsOpenAPI3_0Lint from './missing-core-fields-openapi-3-0.ts';
import missingCoreFieldsOpenAPI3_1Lint from './missing-core-fields-openapi-3-1.ts';
Expand Down Expand Up @@ -108,10 +108,10 @@ const schemaLints = [
elseTypeLint,
enumUniqueLint,
examplesTypeLint,
exclusiveMaximumPatternLint,
exclusiveMaximumTypeLint,
exclusiveMinimumPatternLint,
exclusiveMinimumTypeLint,
exclusiveMaximumTypeNumberLint,
exclusiveMaximumTypeBooleanLint,
exclusiveMinimumTypeNumberLint,
exclusiveMinimumTypeBooleanLint,
xmlTypeLint,
externalDocsTypeLint,
formatTypeLint,
Expand All @@ -123,14 +123,14 @@ const schemaLints = [
maxItemsTypeLint,
maxLengthNonStringLint,
maxLengthTypeLint,
maximumPatternLint,
maximumTypeLint,
minItemsNonArrayLint,
minItemsTypeLint,
minLengthNonString,
minLengthTypeLint,
minPropertiesNonObjectLint,
minPropertiesTypeLint,
minimumPatternLint,
minimumTypeLint,
missingCoreFieldsOpenAPI2_0Lint,
missingCoreFieldsOpenAPI3_0Lint,
missingCoreFieldsOpenAPI3_1Lint,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ import { LinterMeta } from '../../../../apidom-language-types.ts';
import { AsyncAPI2 } from '../../../asyncapi/target-specs.ts';
import { OpenAPI2, OpenAPI3 } from '../../../openapi/target-specs.ts';

const maximumPatternLint: LinterMeta = {
const maximumTypeLint: LinterMeta = {
code: ApilintCodes.SCHEMA_MAXIMUM,
source: 'apilint',
message: "maximum' value must be a number",
message: "'maximum' value must be a number",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintValueRegex',
linterParams: ['^-?\\d*\\.{0,1}\\d+$', 'number'],
linterFunction: 'apilintNumber',
linterParams: [false, false, true],
marker: 'value',
target: 'maximum',
data: {},
targetSpecs: [...AsyncAPI2, ...OpenAPI2, ...OpenAPI3],
};

export default maximumPatternLint;
export default maximumTypeLint;
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ import { LinterMeta } from '../../../../apidom-language-types.ts';
import { AsyncAPI2 } from '../../../asyncapi/target-specs.ts';
import { OpenAPI2, OpenAPI3 } from '../../../openapi/target-specs.ts';

const minimumPatternLint: LinterMeta = {
const minimumTypeLint: LinterMeta = {
code: ApilintCodes.SCHEMA_MINUMUM,
source: 'apilint',
message: "minimum' value must be a number",
message: "'minimum' value must be a number",
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintValueRegex',
linterParams: ['^-?\\d*\\.{0,1}\\d+$', 'number'],
linterFunction: 'apilintNumber',
linterParams: [false, false, true],
marker: 'value',
target: 'minimum',
data: {},
targetSpecs: [...AsyncAPI2, ...OpenAPI2, ...OpenAPI3],
};

export default minimumPatternLint;
export default minimumTypeLint;
4 changes: 2 additions & 2 deletions packages/apidom-ls/test/validate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ describe('apidom-ls-validate', function () {
character: 42,
},
},
message: 'exclusiveMaximum value must be a number',
message: "'exclusiveMaximum' value must be a number",
severity: 1,
code: 10016,
source: 'apilint',
Expand Down Expand Up @@ -840,7 +840,7 @@ describe('apidom-ls-validate', function () {
character: 42,
},
},
message: 'exclusiveMaximum value must be a number',
message: "'exclusiveMaximum' value must be a number",
severity: 1,
code: 10016,
source: 'apilint',
Expand Down

0 comments on commit 675962a

Please sign in to comment.