UNPKG

parse-openapi

Version:

OpenAPI v3 parser

88 lines (87 loc) 3.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getModelProperties = void 0; const discriminator_1 = require("../utils/discriminator"); const getPattern_1 = require("../utils/getPattern"); const escapeName_1 = require("./escapeName"); const getType_1 = require("./getType"); const getModelProperties = (openApi, definition, getModel, parent) => { const models = []; const discriminator = (0, discriminator_1.findOneOfParentDiscriminator)(openApi, parent); for (const propertyName in definition.properties) { if (definition.properties.hasOwnProperty(propertyName)) { const property = definition.properties[propertyName]; const propertyRequired = !!definition.required?.includes(propertyName); const propertyValues = { name: (0, escapeName_1.escapeName)(propertyName), description: property.description || null, isDefinition: false, isReadOnly: property.readOnly === true, isRequired: propertyRequired, format: property.format, maximum: property.maximum, exclusiveMaximum: property.exclusiveMaximum, minimum: property.minimum, exclusiveMinimum: property.exclusiveMinimum, multipleOf: property.multipleOf, maxLength: property.maxLength, minLength: property.minLength, maxItems: property.maxItems, minItems: property.minItems, uniqueItems: property.uniqueItems, maxProperties: property.maxProperties, minProperties: property.minProperties, pattern: (0, getPattern_1.getPattern)(property.pattern), }; if (parent && discriminator?.propertyName == propertyName) { models.push({ export: 'reference', type: 'string', base: `'${(0, discriminator_1.mapPropertyValue)(discriminator, parent)}'`, template: null, isNullable: property.nullable === true, link: null, imports: [], enum: [], enums: [], properties: [], ...propertyValues, }); } else if (property.$ref) { const model = (0, getType_1.getType)(property.$ref); models.push({ export: 'reference', type: model.type, base: model.base, template: model.template, link: null, isNullable: model.isNullable || property.nullable === true, imports: model.imports, enum: [], enums: [], properties: [], ...propertyValues, }); } else { const model = getModel(openApi, property); models.push({ export: model.export, type: model.type, base: model.base, template: model.template, link: model.link, isNullable: model.isNullable || property.nullable === true, imports: model.imports, enum: model.enum, enums: model.enums, properties: model.properties, ...propertyValues, }); } } } return models; }; exports.getModelProperties = getModelProperties;