* Generate array with module information including module paths. * @returns {object[]} Module information.
()
| 88 | * @returns {object[]} Module information. |
| 89 | */ |
| 90 | async function getModuleData () { |
| 91 | const modules = getAllModules(); |
| 92 | const moduleFiles = []; |
| 93 | const envVars = await getEnvVars(); |
| 94 | |
| 95 | modules.forEach(function (moduleData, index) { |
| 96 | const module = moduleData.module; |
| 97 | |
| 98 | const elements = module.split("/"); |
| 99 | const moduleName = elements[elements.length - 1]; |
| 100 | let moduleFolder = `${envVars.modulesDir}/${module}`; |
| 101 | |
| 102 | if (defaultModules.indexOf(moduleName) !== -1) { |
| 103 | const defaultModuleFolder = `${envVars.defaultModulesDir}/${module}`; |
| 104 | if (window.name !== "jsdom") { |
| 105 | moduleFolder = defaultModuleFolder; |
| 106 | } else { |
| 107 | // running in test mode, allow defaultModules placed under moduleDir for testing |
| 108 | if (envVars.modulesDir === "modules") { |
| 109 | moduleFolder = defaultModuleFolder; |
| 110 | } |
| 111 | } |
| 112 | } |
| 113 | |
| 114 | if (moduleData.disabled === true) { |
| 115 | return; |
| 116 | } |
| 117 | |
| 118 | moduleFiles.push({ |
| 119 | index: index, |
| 120 | identifier: `module_${index}_${module}`, |
| 121 | name: moduleName, |
| 122 | path: `${moduleFolder}/`, |
| 123 | file: `${moduleName}.js`, |
| 124 | position: moduleData.position, |
| 125 | animateIn: moduleData.animateIn, |
| 126 | animateOut: moduleData.animateOut, |
| 127 | hiddenOnStartup: moduleData.hiddenOnStartup, |
| 128 | header: moduleData.header, |
| 129 | configDeepMerge: typeof moduleData.configDeepMerge === "boolean" ? moduleData.configDeepMerge : false, |
| 130 | config: moduleData.config, |
| 131 | classes: typeof moduleData.classes !== "undefined" ? `${moduleData.classes} ${module}` : module, |
| 132 | order: (typeof moduleData.order === "number" && Number.isInteger(moduleData.order)) ? moduleData.order : 0 |
| 133 | }); |
| 134 | }); |
| 135 | |
| 136 | return moduleFiles; |
| 137 | } |
| 138 | |
| 139 | /** |
| 140 | * Load modules via ajax request and create module objects. |
no test coverage detected