openapi-diff
Version:
A CLI tool to identify differences between Swagger/OpenAPI specs.
40 lines (39 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseSwagger2Operations = void 0;
const parse_swagger2_body_parameter_1 = require("./parse-swagger2-body-parameter");
const parse_swagger2_responses_1 = require("./parse-swagger2-responses");
const parseOperation = (operation, pathBuilder, spec) => {
const parameters = operation.parameters || [];
const requestBody = (0, parse_swagger2_body_parameter_1.parseSwagger2BodyParameter)(parameters, pathBuilder.withChild('parameters'), spec);
const responses = (0, parse_swagger2_responses_1.parseSwagger2Responses)(operation.responses, pathBuilder.withChild('responses'), spec);
return {
originalValue: {
originalPath: pathBuilder.build(),
value: operation
},
requestBody,
responses
};
};
const typeCheckedSwagger2Methods = {
delete: undefined,
get: undefined,
head: undefined,
options: undefined,
patch: undefined,
post: undefined,
put: undefined
};
const isSwagger2Method = (propertyName) => Object.keys(typeCheckedSwagger2Methods).indexOf(propertyName) >= 0;
const parseSwagger2Operations = (pathItemObject, pathBuilder, spec) => {
return Object.keys(pathItemObject)
.filter(isSwagger2Method)
.reduce((accumulator, method) => {
const operationObject = pathItemObject[method];
const parentPathBuilder = pathBuilder.withChild(method);
accumulator[method] = parseOperation(operationObject, parentPathBuilder, spec);
return accumulator;
}, {});
};
exports.parseSwagger2Operations = parseSwagger2Operations;