UNPKG

parse-openapi

Version:

OpenAPI v3 parser

90 lines (89 loc) 4.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOperationParameter = void 0; const getPattern_1 = require("../utils/getPattern"); const getModel_1 = require("./getModel"); const getModelDefault_1 = require("./getModelDefault"); const getOperationParameterName_1 = require("./getOperationParameterName"); const getRef_1 = require("./getRef"); const getType_1 = require("./getType"); const getOperationParameter = (openApi, parameter) => { const operationParameter = { in: parameter.in, prop: parameter.name, export: 'interface', name: (0, getOperationParameterName_1.getOperationParameterName)(parameter.name), type: 'any', base: 'any', template: null, link: null, description: parameter.description || null, isDefinition: false, isReadOnly: false, isRequired: parameter.required === true, isNullable: parameter.nullable === true, imports: [], enum: [], enums: [], properties: [], mediaType: null, }; if (parameter.$ref) { const definitionRef = (0, getType_1.getType)(parameter.$ref); operationParameter.export = 'reference'; operationParameter.type = definitionRef.type; operationParameter.base = definitionRef.base; operationParameter.template = definitionRef.template; operationParameter.imports.push(...definitionRef.imports); return operationParameter; } let schema = parameter.schema; if (schema) { if (schema.$ref?.startsWith('#/components/parameters/')) { schema = (0, getRef_1.getRef)(openApi, schema); } if (schema.$ref) { const model = (0, getType_1.getType)(schema.$ref); operationParameter.export = 'reference'; operationParameter.type = model.type; operationParameter.base = model.base; operationParameter.template = model.template; operationParameter.imports.push(...model.imports); operationParameter.default = (0, getModelDefault_1.getModelDefault)(schema); return operationParameter; } else { const model = (0, getModel_1.getModel)(openApi, schema); operationParameter.export = model.export; operationParameter.type = model.type; operationParameter.base = model.base; operationParameter.template = model.template; operationParameter.link = model.link; operationParameter.isReadOnly = model.isReadOnly; operationParameter.isRequired = operationParameter.isRequired || model.isRequired; operationParameter.isNullable = operationParameter.isNullable || model.isNullable; operationParameter.format = model.format; operationParameter.maximum = model.maximum; operationParameter.exclusiveMaximum = model.exclusiveMaximum; operationParameter.minimum = model.minimum; operationParameter.exclusiveMinimum = model.exclusiveMinimum; operationParameter.multipleOf = model.multipleOf; operationParameter.maxLength = model.maxLength; operationParameter.minLength = model.minLength; operationParameter.maxItems = model.maxItems; operationParameter.minItems = model.minItems; operationParameter.uniqueItems = model.uniqueItems; operationParameter.maxProperties = model.maxProperties; operationParameter.minProperties = model.minProperties; operationParameter.pattern = (0, getPattern_1.getPattern)(model.pattern); operationParameter.default = model.default; operationParameter.imports.push(...model.imports); operationParameter.enum.push(...model.enum); operationParameter.enums.push(...model.enums); operationParameter.properties.push(...model.properties); return operationParameter; } } return operationParameter; }; exports.getOperationParameter = getOperationParameter;