@tsed/schema
Version:
JsonSchema module for Ts.ED Framework
37 lines (36 loc) • 1.29 kB
JavaScript
import { getValue, setValue } from "@tsed/core";
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, { fileSpec, acceptMimes, specVersion, version }) {
specVersion = specVersion || getValue(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;
}