@samchon/openapi
Version:
OpenAPI definitions and converters for 'typia' and 'nestia'.
103 lines (102 loc) • 3.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpenApiConstraintShifter = void 0;
var OpenApiConstraintShifter;
(function (OpenApiConstraintShifter) {
OpenApiConstraintShifter.shiftArray = (v) => {
const tags = [];
if (v.minItems !== undefined) {
tags.push(`@minItems ${v.minItems}`);
delete v.minItems;
}
if (v.maxItems !== undefined) {
tags.push(`@maxItems ${v.maxItems}`);
delete v.maxItems;
}
if (v.uniqueItems !== undefined) {
if (v.uniqueItems === true)
tags.push(`@uniqueItems`);
delete v.uniqueItems;
}
v.description = writeTagWithDescription({
description: v.description,
tags,
});
return v;
};
OpenApiConstraintShifter.shiftNumeric = (v) => {
const tags = [];
if (v.exclusiveMinimum === undefined && v.minimum !== undefined) {
tags.push(`@minimum ${v.minimum}`);
delete v.minimum;
}
if (v.exclusiveMaximum === undefined && v.maximum !== undefined) {
tags.push(`@maximum ${v.maximum}`);
delete v.maximum;
}
if (v.minimum !== undefined && v.exclusiveMinimum === true) {
tags.push(`@exclusiveMinimum ${v.minimum}`);
delete v.minimum;
delete v.exclusiveMinimum;
}
if (v.maximum !== undefined && v.exclusiveMaximum === true) {
tags.push(`@exclusiveMaximum ${v.maximum}`);
delete v.maximum;
delete v.exclusiveMaximum;
}
if (v.multipleOf !== undefined) {
tags.push(`@multipleOf ${v.multipleOf}`);
delete v.multipleOf;
}
v.description = writeTagWithDescription({
description: v.description,
tags,
});
if (v.default !== undefined) {
tags.push(`@default ${v.default}`);
delete v.default;
}
return v;
};
OpenApiConstraintShifter.shiftString = (v) => {
const tags = [];
if (v.minLength !== undefined) {
tags.push(`@minLength ${v.minLength}`);
delete v.minLength;
}
if (v.maxLength !== undefined) {
tags.push(`@maxLength ${v.maxLength}`);
delete v.maxLength;
}
if (v.format !== undefined) {
tags.push(`@format ${v.format}`);
delete v.format;
}
if (v.pattern !== undefined) {
tags.push(`@pattern ${v.pattern}`);
delete v.pattern;
}
if (v.contentMediaType !== undefined) {
tags.push(`@contentMediaType ${v.contentMediaType}`);
delete v.contentMediaType;
}
if (v.default !== undefined) {
tags.push(`@default ${v.default}`);
delete v.default;
}
v.description = writeTagWithDescription({
description: v.description,
tags,
});
return v;
};
})(OpenApiConstraintShifter || (exports.OpenApiConstraintShifter = OpenApiConstraintShifter = {}));
const writeTagWithDescription = (props) => {
var _a;
if (props.tags.length === 0)
return props.description;
return [
...(((_a = props.description) === null || _a === void 0 ? void 0 : _a.length) ? [props.description, "\n"] : []),
...props.tags,
].join("\n");
};