@tsed/schema
Version:
JsonSchema module for Ts.ED Framework
45 lines (37 loc) • 1.34 kB
text/typescript
import {getValue, setValue} from "@tsed/core";
import {OpenSpec2, OpenSpec3, OpenSpecVersions} from "@tsed/openspec";
import {SpecTypes} from "../domain/SpecTypes.js";
import {getSpecType} from "./getSpecType.js";
import {mapOpenSpec2} from "./mapOpenSpec2.js";
import {mapOpenSpec3} from "./mapOpenSpec3.js";
import {mergeSpec} from "./mergeSpec.js";
/**
* @ignore
* @param spec
* @param fileSpec
* @param version
* @param acceptMimes
* @param specVersion
*/
export function mapOpenSpec(spec: any, {fileSpec, acceptMimes, specVersion, version}: any): Partial<OpenSpec2 | OpenSpec3> {
specVersion = specVersion || getValue<OpenSpecVersions>(spec, "openapi", getValue(spec, "swagger", "2.0"));
const options = {
specVersion,
acceptMimes
};
switch (getSpecType(specVersion)) {
case SpecTypes.OPENAPI:
spec = mapOpenSpec3(spec, options);
fileSpec = fileSpec ? mapOpenSpec3(fileSpec, options) : fileSpec;
break;
default:
case SpecTypes.SWAGGER:
spec = mapOpenSpec2(spec, options);
fileSpec = fileSpec ? mapOpenSpec2(fileSpec, options) : fileSpec;
break;
}
spec = mergeSpec(spec, fileSpec);
setValue(spec, "info.title", getValue(spec, "info.title", "Api documentation"));
setValue(spec, "info.version", getValue(spec, "info.version", version));
return spec;
}