diff --git a/src/types/open-api.d.ts b/src/types/open-api.d.ts index 96f98f36..78b1b1aa 100644 --- a/src/types/open-api.d.ts +++ b/src/types/open-api.d.ts @@ -131,9 +131,9 @@ export interface OpenAPISchema { title?: string; multipleOf?: number; maximum?: number; - exclusiveMaximum?: boolean; + exclusiveMaximum?: boolean | number; minimum?: number; - exclusiveMinimum?: boolean; + exclusiveMinimum?: boolean | number; maxLength?: number; minLength?: number; pattern?: string; diff --git a/src/utils/openapi.ts b/src/utils/openapi.ts index bd7db6b7..ae70b112 100644 --- a/src/utils/openapi.ts +++ b/src/utils/openapi.ts @@ -447,6 +447,18 @@ export function humanizeConstraints(schema: OpenAPISchema): string[] { numberRange += schema.minimum; } + if (typeof schema.exclusiveMinimum === 'number' || typeof schema.exclusiveMaximum === 'number') { + let minimum = 0; + let maximum = 0; + if (schema.minimum) minimum = schema.minimum; + if (typeof schema.exclusiveMinimum === 'number') minimum = minimum <= schema.exclusiveMinimum ? minimum : schema.exclusiveMinimum; + + if (schema.maximum) maximum = schema.maximum; + if (typeof schema.exclusiveMaximum === 'number') maximum = maximum > schema.exclusiveMaximum ? maximum : schema.exclusiveMaximum; + + numberRange = `[${minimum} .. ${maximum}]` + } + if (numberRange !== undefined) { res.push(numberRange); }