svg-to-ts
Version:
Build amazing svg icon libraries
79 lines • 5.38 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertToConstants = void 0;
const code_snippet_generators_1 = require("../generators/code-snippet-generators");
const complete_icon_set_helper_1 = require("../helpers/complete-icon-set.helper");
const file_helpers_1 = require("../helpers/file-helpers");
const logger_1 = require("../helpers/logger");
const monitor_1 = require("../helpers/monitor");
const file_type_model_1 = require("../shared/file-type.model");
const shared_converter_1 = require("./shared.converter");
function convertToConstants(conversionOptions) {
return __awaiter(this, void 0, void 0, function* () {
const { tsx } = conversionOptions;
const svgDefinitions = yield (0, monitor_1.callAndMonitorAsync)(shared_converter_1.filesProcessor.bind({}, conversionOptions), 'Processing SVG files');
if (!svgDefinitions.length) {
logger_1.Logger.error('No SVG files found under ${outputDirectory}');
return;
}
if (tsx) {
yield convertToTSXConstants(conversionOptions, svgDefinitions);
}
else {
yield convertToTSConstants(conversionOptions, svgDefinitions);
}
});
}
exports.convertToConstants = convertToConstants;
function convertToTSConstants(conversionOptions, svgDefinitions) {
return __awaiter(this, void 0, void 0, function* () {
const { outputDirectory, fileName, interfaceName, exportCompleteIconSet, completeIconSetName, generateType, generateEnum, } = conversionOptions;
let exportAllStatement = '';
const svgContants = (0, monitor_1.callAndMonitor)(getTSConstants.bind({}, svgDefinitions), 'Generate SVG constants');
const typeDefinition = generateType
? (0, monitor_1.callAndMonitor)(code_snippet_generators_1.generateTypeDefinition.bind({}, conversionOptions, svgDefinitions), 'Generate type definitions')
: '';
const interfaceDefinition = (0, monitor_1.callAndMonitor)(code_snippet_generators_1.generateInterfaceDefinition.bind({}, conversionOptions), 'Generate Interface Definition');
const enumDefinition = generateEnum
? (0, monitor_1.callAndMonitor)(code_snippet_generators_1.generateEnumDefinition.bind({}, conversionOptions, svgDefinitions), 'Generate enum')
: '';
if (exportCompleteIconSet) {
exportAllStatement = (0, monitor_1.callAndMonitor)(complete_icon_set_helper_1.generateExportSection.bind({}, svgDefinitions, completeIconSetName), 'Exporting all constants');
}
const typeHelper = (0, monitor_1.callAndMonitor)(code_snippet_generators_1.generateTypeHelper.bind({}, interfaceName), 'Generate Type Helper');
const fileContent = `${svgContants}${typeDefinition}${enumDefinition}${interfaceDefinition}${typeHelper}${exportAllStatement}`;
yield (0, monitor_1.callAndMonitorAsync)(file_helpers_1.writeFile.bind({}, outputDirectory, fileName, fileContent), `Writing files to ${outputDirectory}`);
logger_1.Logger.generationSuccess(outputDirectory);
});
}
function convertToTSXConstants(conversionOptions, svgDefinitions) {
return __awaiter(this, void 0, void 0, function* () {
const { exportCompleteIconSet, completeIconSetName, outputDirectory, fileName } = conversionOptions;
const tsxContants = (0, monitor_1.callAndMonitor)(getTSXConstants.bind({}, svgDefinitions), 'Generate TSX constants');
let exportAllStatement = '';
if (exportCompleteIconSet) {
exportAllStatement = (0, monitor_1.callAndMonitor)(complete_icon_set_helper_1.generateExportSection.bind({}, svgDefinitions, completeIconSetName, file_type_model_1.FILE_TYPE.TSX), 'Exporting all TSX constants as ${completeIconSetName}');
}
const fileContent = `${tsxContants}${exportAllStatement}`;
yield (0, monitor_1.callAndMonitorAsync)(file_helpers_1.writeFile.bind({}, outputDirectory, fileName, fileContent, file_type_model_1.FILE_TYPE.TSX), `Writing files to ${outputDirectory}`);
logger_1.Logger.generationSuccess(outputDirectory);
});
}
function getTSConstants(svgDefinitions) {
const svgConstants = svgDefinitions.map((svgDefinition) => (0, code_snippet_generators_1.generateSvgConstant)(svgDefinition.variableName, svgDefinition.typeName, svgDefinition.data));
return svgConstants.join('');
}
function getTSXConstants(svgDefinitions) {
const tsxConstants = svgDefinitions.map((svgDefinition) => (0, code_snippet_generators_1.generateTSXConstant)(svgDefinition.variableName, svgDefinition.data));
return tsxConstants.join('');
}
//# sourceMappingURL=constants.converter.js.map
;