standaardisation updates
This commit is contained in:
76
src/configs/index.js
Normal file
76
src/configs/index.js
Normal file
@@ -0,0 +1,76 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
class ConfigManager {
|
||||
constructor(relPath = '.') {
|
||||
this.configDir = path.resolve(__dirname, relPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a configuration file by name
|
||||
* @param {string} configName - Name of the config file (without .json extension)
|
||||
* @returns {Object} Parsed configuration object
|
||||
*/
|
||||
getConfig(configName) {
|
||||
try {
|
||||
const configPath = path.resolve(this.configDir, `${configName}.json`);
|
||||
const configData = fs.readFileSync(configPath, 'utf8');
|
||||
return JSON.parse(configData);
|
||||
} catch (error) {
|
||||
throw new Error(`Failed to load config '${configName}': ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get list of available configuration files
|
||||
* @returns {Array<string>} Array of config names (without .json extension)
|
||||
*/
|
||||
getAvailableConfigs() {
|
||||
try {
|
||||
const resolvedDir = path.resolve(this.configDir);
|
||||
const files = fs.readdirSync(resolvedDir);
|
||||
return files
|
||||
.filter(file => file.endsWith('.json'))
|
||||
.map(file => path.basename(file, '.json'));
|
||||
} catch (error) {
|
||||
throw new Error(`Failed to read config directory: ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a specific config exists
|
||||
* @param {string} configName - Name of the config file
|
||||
* @returns {boolean} True if config exists
|
||||
*/
|
||||
hasConfig(configName) {
|
||||
const configPath = path.resolve(this.configDir, `${configName}.json`);
|
||||
return fs.existsSync(configPath);
|
||||
}
|
||||
|
||||
createEndpoint(nodeName) {
|
||||
try {
|
||||
// Load the config for this node
|
||||
const config = this.getConfig(nodeName);
|
||||
|
||||
// Convert config to JSON
|
||||
const configJSON = JSON.stringify(config, null, 2);
|
||||
|
||||
// Assemble the complete script
|
||||
return `
|
||||
// Create the namespace structure
|
||||
window.EVOLV = window.EVOLV || {};
|
||||
window.EVOLV.nodes = window.EVOLV.nodes || {};
|
||||
window.EVOLV.nodes.${nodeName} = window.EVOLV.nodes.${nodeName} || {};
|
||||
|
||||
// Inject the pre-loaded config data directly into the namespace
|
||||
window.EVOLV.nodes.${nodeName}.config = ${configJSON};
|
||||
|
||||
console.log('${nodeName} config loaded and endpoint created');
|
||||
`;
|
||||
} catch (error) {
|
||||
throw new Error(`Failed to create endpoint for '${nodeName}': ${error.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ConfigManager;
|
||||
Reference in New Issue
Block a user