import { IDefinitions } from '../../defines/openApi'; import { ModelInfo, TypeInfo } from '../../defines/modelInfo'; import { TypeNameParser } from './typeNameParser'; import { CaseStyleFormatter } from '../string/caseStyleFormatter'; export namespace ModelParser { export function getByModelInfoByName(definitions: IDefinitions): Map { const modelInfoByName = new Map(); Object.entries(definitions).forEach(([name, objectInfo]) => { const { properties } = objectInfo; const typeInfo: TypeInfo = {}; const refSet = new Set(); Object.entries(properties).forEach(([property, schema]) => { typeInfo[property] = TypeNameParser.getTypeNameFromSchema(schema, refSet); }); modelInfoByName.set(CaseStyleFormatter.genericToPascalCase(name), { refSet, typeInfo }); }); return modelInfoByName; } }