UNPKG

@vkontakte/api-schema-typescript-generator

Version:

VK API TypeScript generator

42 lines (41 loc) 1.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateImportsBlock = void 0; const constants_1 = require("./constants"); const helpers_1 = require("./helpers"); const types_1 = require("./types"); const utils_1 = require("./utils"); function generateImportsBlock(refs, section, type) { let importRefs = Object.entries(refs) .filter(([, type]) => type === types_1.RefsDictionaryType.GenerateAndImport) .map(([key]) => key); importRefs = (0, utils_1.uniqueArray)(importRefs); const paths = {}; importRefs.forEach((objectName) => { const importSection = (0, helpers_1.getSectionFromObjectName)(objectName); const interfaceName = (0, helpers_1.getInterfaceName)(objectName); let path; if (type === types_1.ObjectType.Object) { if (section === importSection) { path = `./${interfaceName}`; } else { path = `../${importSection}/${interfaceName}`; } } else { path = `../objects/${importSection}/${interfaceName}`; } if (!paths[path]) { paths[path] = []; } paths[path].push(interfaceName); }); const importLines = []; (0, utils_1.sortArrayAlphabetically)(Object.keys(paths)).forEach((path) => { const interfaces = (0, utils_1.sortArrayAlphabetically)(paths[path]).join(', '); importLines.push(`import { ${interfaces} } from '${path}';`); }); return importLines.join(constants_1.newLineChar); } exports.generateImportsBlock = generateImportsBlock;