lib/transform/referenceFieldsTransformer.ts (39 lines of code) (raw):
import { resolveNestedDefinitionTransformer } from "./resolveNestedDefinitionTransformer";
import { SpecTransformer, TransformerType } from "./transformer";
import { traverseSwagger } from "./traverseSwagger";
const defaultMime = ["application/json"];
const isDefaultMime = (mimes: string[]) => {
return mimes.length === 1 && mimes[0] === defaultMime[0];
};
export const referenceFieldsTransformer: SpecTransformer = {
type: TransformerType.Spec,
before: [resolveNestedDefinitionTransformer],
transform: (spec) => {
if (spec.consumes === undefined || isDefaultMime(spec.consumes)) {
spec.consumes = defaultMime;
}
if (spec.produces === undefined || isDefaultMime(spec.produces)) {
spec.produces = defaultMime;
}
traverseSwagger(spec, {
onPath: (path, pathTemplate) => {
path._spec = spec;
path._pathTemplate = pathTemplate;
},
onOperation: (operation, path, method) => {
operation._path = path;
operation._method = method;
if (operation.consumes === undefined) {
operation.consumes = spec.consumes;
} else if (isDefaultMime(operation.consumes)) {
operation.consumes = defaultMime;
}
if (operation.produces === undefined) {
operation.produces = spec.produces;
} else if (isDefaultMime(operation.produces)) {
operation.produces = defaultMime;
}
},
});
},
};