UNPKG

generator-begcode

Version:

Spring Boot + Angular/React/Vue in one handy generator

72 lines (71 loc) 3.5 kB
import logger from '../utils/objects/logger.js'; import JDLApplicationConfiguration from './jdl-application-configuration.js'; import StringJDLApplicationConfigurationOption from './string-jdl-application-configuration-option.js'; import IntegerJDLApplicationConfigurationOption from './integer-jdl-application-configuration-option.js'; import BooleanJDLApplicationConfigurationOption from './boolean-jdl-application-configuration-option.js'; import ListJDLApplicationConfigurationOption from './list-jdl-application-configuration-option.js'; export default function createApplicationConfigurationFromObject(configurationObject = {}, runtime) { const configuration = new JDLApplicationConfiguration(); Object.keys(configurationObject).forEach(optionName => { const optionValue = configurationObject[optionName]; if (!runtime.applicationDefinition.doesOptionExist(optionName)) { logger.debug(`Unrecognized application option name and value: '${optionName}' and '${optionValue}'.`); return; } if ((Array.isArray(optionValue) || typeof optionValue === 'string') && !runtime.applicationDefinition.doesOptionValueExist(optionName, optionValue)) { throw new Error(`The value '${optionValue}' is not allowed for the option '${optionName}'.`); } configuration.setOption(createApplicationJDLConfigurationOption(optionName, optionValue, runtime)); }); return configuration; } export function createApplicationNamespaceConfigurationFromObject(parsedNamespaceConfigs = {}, runtime) { return Object.entries(parsedNamespaceConfigs).map(([namespace, parsedConfig]) => { const configuration = new JDLApplicationConfiguration(namespace); for (const [optionName, optionValue] of Object.entries(parsedConfig)) { configuration.setOption(createUnknownJDLConfigurationOption(optionName, optionValue, runtime)); } return configuration; }); } function createUnknownJDLConfigurationOption(name, value, runtime) { let type; if (typeof value === 'boolean') { type = 'boolean'; } else if (/^\d+$/.test(value)) { value = parseInt(value, 10); type = 'integer'; } else if (Array.isArray(value)) { type = 'list'; } else if (typeof value === 'string') { type = 'string'; } else { throw new Error(`Unknown value type for option ${name}`); } return createJDLConfigurationOption(type, name, value, runtime); } function createApplicationJDLConfigurationOption(name, value, runtime) { const type = runtime.applicationDefinition.getTypeForOption(name); return createJDLConfigurationOption(type, name, value, runtime); } function createJDLConfigurationOption(type, name, value, runtime) { switch (type) { case 'string': return new StringJDLApplicationConfigurationOption(name, value, runtime.applicationDefinition.shouldTheValueBeQuoted(name)); case 'integer': return new IntegerJDLApplicationConfigurationOption(name, value); case 'boolean': return new BooleanJDLApplicationConfigurationOption(name, value); case 'list': return new ListJDLApplicationConfigurationOption(name, value); case 'quotedList': return new ListJDLApplicationConfigurationOption(name, value, true); default: throw new Error(`Unrecognized option type: ${type}.`); } }