UNPKG

parse-openapi

Version:

OpenAPI v3 parser

70 lines (69 loc) 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getModelComposition = void 0; const getModelProperties_1 = require("./getModelProperties"); const getRequiredPropertiesFromComposition_1 = require("./getRequiredPropertiesFromComposition"); const getModelComposition = (openApi, definition, definitions, type, getModel) => { const composition = { type, imports: [], enums: [], properties: [], }; const properties = []; definitions .map(definition => getModel(openApi, definition)) .filter(model => { const hasProperties = model.properties.length; const hasEnums = model.enums.length; const isObject = model.type === 'any'; const isDictionary = model.export === 'dictionary'; const isEmpty = isObject && !hasProperties && !hasEnums; return !isEmpty || isDictionary; }) .forEach(model => { composition.imports.push(...model.imports); composition.enums.push(...model.enums); composition.properties.push(model); }); if (definition.required) { const requiredProperties = (0, getRequiredPropertiesFromComposition_1.getRequiredPropertiesFromComposition)(openApi, definition.required, definitions, getModel); requiredProperties.forEach(requiredProperty => { composition.imports.push(...requiredProperty.imports); composition.enums.push(...requiredProperty.enums); }); properties.push(...requiredProperties); } if (definition.properties) { const modelProperties = (0, getModelProperties_1.getModelProperties)(openApi, definition, getModel); modelProperties.forEach(modelProperty => { composition.imports.push(...modelProperty.imports); composition.enums.push(...modelProperty.enums); if (modelProperty.export === 'enum') { composition.enums.push(modelProperty); } }); properties.push(...modelProperties); } if (properties.length) { composition.properties.push({ name: 'properties', export: 'interface', type: 'any', base: 'any', template: null, link: null, description: '', isDefinition: false, isReadOnly: false, isNullable: false, isRequired: false, imports: [], enum: [], enums: [], properties, }); } return composition; }; exports.getModelComposition = getModelComposition;