UNPKG

openapi-modifier

Version:

This package allows you to automate the process of modifying OpenAPI specifications by applying a set of predefined rules

61 lines (60 loc) 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.configSchema = void 0; const zod_1 = require("zod"); const patch_1 = require("../common/utils/patch"); const config_1 = require("../common/config"); const object_path_1 = require("../common/utils/object-path"); const parse_component_with_correction_descriptor_1 = require("../common/utils/config/parse-component-with-correction-descriptor"); const factory_1 = require("../../logger/messages/factory"); const configSchema = zod_1.z .object({ descriptor: config_1.anyComponentWithCorrectionDescriptorConfigSchema.optional(), patchMethod: config_1.patchMethodConfigSchema.optional(), schemaDiff: config_1.openAPISchemaConfigSchema.optional(), }) .strict(); exports.configSchema = configSchema; const processor = { configSchema, defaultConfig: { patchMethod: 'merge', }, processDocument: (openAPIFile, config, logger, ruleMeta) => { var _a, _b; const { patchMethod, schemaDiff, descriptor } = config; if (!descriptor) { logger.errorMessage(factory_1.messagesFactory.ruleNotApply.requiredConfigField(ruleMeta, 'descriptor')); return openAPIFile; } const parsedDesciptor = (0, parse_component_with_correction_descriptor_1.parseAnyComponentWithCorrectionDescriptor)(descriptor, logger); if (!parsedDesciptor) { logger.errorMessage(factory_1.messagesFactory.ruleNotApply.failedToParseDescriptor(ruleMeta, 'descriptor')); return openAPIFile; } logger.trace("parsedDesciptor", parsedDesciptor); if (!patchMethod) { logger.errorMessage(factory_1.messagesFactory.ruleNotApply.requiredConfigField(ruleMeta, 'patchMethod')); return openAPIFile; } if (!schemaDiff) { logger.errorMessage(factory_1.messagesFactory.ruleNotApply.requiredConfigField(ruleMeta, 'schemaDiff')); return openAPIFile; } const { componentName, correction } = parsedDesciptor; const componentSchemas = (_b = (_a = openAPIFile === null || openAPIFile === void 0 ? void 0 : openAPIFile.document) === null || _a === void 0 ? void 0 : _a.components) === null || _b === void 0 ? void 0 : _b.schemas; if (componentSchemas === null || componentSchemas === void 0 ? void 0 : componentSchemas[componentName]) { if (correction) { (0, object_path_1.setObjectProp)(componentSchemas === null || componentSchemas === void 0 ? void 0 : componentSchemas[componentName], correction, (0, patch_1.patchSchema)(logger, (0, object_path_1.getObjectPath)(componentSchemas[componentName], correction), patchMethod, schemaDiff)); } else { componentSchemas[componentName] = (0, patch_1.patchSchema)(logger, componentSchemas[componentName], patchMethod, schemaDiff); } } else { logger.warning(`Not found component with descriptor: ${JSON.stringify(descriptor)}!`); } return openAPIFile; }, }; exports.default = processor;