@vkontakte/api-schema-typescript-generator
Version:
VK API TypeScript generator
42 lines (41 loc) • 1.63 kB
JavaScript
;
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;