openapi-modifier
Version:
This package allows you to automate the process of modifying OpenAPI specifications by applying a set of predefined rules
44 lines (43 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.configSchema = void 0;
const zod_1 = require("zod");
const each_operation_1 = require("../common/utils/iterators/each-operation");
const config_1 = require("../common/config");
const configSchema = zod_1.z
.object({
ignore: zod_1.z.array(config_1.operationIdConfigSchema),
})
.strict();
exports.configSchema = configSchema;
const processor = {
configSchema,
defaultConfig: {
ignore: [],
},
processDocument: (openAPIFile, config, logger) => {
const ignoreOperationIds = config.ignore;
const usageIgnoreOperationIds = [];
(0, each_operation_1.forEachOperation)(openAPIFile, ({ operationSchema }) => {
if (operationSchema === null || operationSchema === void 0 ? void 0 : operationSchema.operationId) {
const ignoreOperationIdIndex = ignoreOperationIds.indexOf(operationSchema.operationId);
if (ignoreOperationIdIndex === -1) {
delete operationSchema.operationId;
}
else {
usageIgnoreOperationIds[ignoreOperationIdIndex] = (usageIgnoreOperationIds[ignoreOperationIdIndex] || 0) + 1;
}
}
});
if (ignoreOperationIds === null || ignoreOperationIds === void 0 ? void 0 : ignoreOperationIds.length) {
const notUsedIgnoreOperationIds = ignoreOperationIds.filter((_, index) => {
return !usageIgnoreOperationIds[index];
});
if (notUsedIgnoreOperationIds === null || notUsedIgnoreOperationIds === void 0 ? void 0 : notUsedIgnoreOperationIds.length) {
logger.warning(`Not used ignore operation id: ${notUsedIgnoreOperationIds.join(', ')}`);
}
}
return openAPIFile;
},
};
exports.default = processor;