parse-openapi
Version:
OpenAPI v3 parser
90 lines (89 loc) • 4.15 kB
JavaScript
;
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;